dslh 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dslh.rb +40 -9
  3. data/lib/dslh/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ee7c54ea949ae371f63dccec99e030e724782cf
4
- data.tar.gz: 2600505830a26c4d8679dcba4e46590cec3453e6
3
+ metadata.gz: 22c5f3ef5ed8d62be6f01f66185d03c69746a21f
4
+ data.tar.gz: 07f1988d59dd1f91dde43e9dcc7b9412122dc3b0
5
5
  SHA512:
6
- metadata.gz: 9ae3e9132526fb7f9755bfd7014563bd719e081fb936cfa815f706039b90a1d0ad58e2b02a2e3ec1cb7e77e5b00397608296d5781c4d1a4ba23de021fab6458e
7
- data.tar.gz: 6e7893c3bd777f65989828bd8f8d262e5a4e25baef78ddb9bda1ab23ea832f92193482a66f50bfcb2c0c01b766e5994ec570dd8c5b4e848ad91901e26e61edaf
6
+ metadata.gz: 7c6d12ec8eed101cd59bf56c8bf452086c224196428f38275769bc89ef688c3db64f120d907b3d9737542e379c4ec33bac13dd512a9b5c3e301aab0d38637090
7
+ data.tar.gz: 4278f2189e6ca73c321b5d341835b4e6e0b645f337ca288ad016481bf90f241f27fe2129fb207866c08c61b5f4b9d85490bc3ec739258373c8d1b90415b2ca68
data/lib/dslh.rb CHANGED
@@ -76,10 +76,9 @@ class Dslh
76
76
  next_indent = (INDENT_SPACES * (depth + 1))
77
77
  key_conv = @options[:key_conv] || @options[:conv]
78
78
  value_conv = @options[:value_conv] || @options[:conv]
79
- exclude_key = @options[:exclude_key] || proc {|k| k.to_s !~ /\A[_a-z]\w+\Z/i }
80
79
 
81
- if exclude_key and (key_conv ? hash.keys.map {|k| key_conv.call(k) } : hash.keys).any? {|k| exclude_key.call(k) }
82
- buf.puts '(' + ("\n" + hash.pretty_inspect.strip).gsub("\n", "\n" + indent) + ')'
80
+ if exclude_key?(key_conv, hash.keys)
81
+ buf.puts('(' + ("\n" + hash.pretty_inspect.strip).gsub("\n", "\n" + indent) + ')')
83
82
  return
84
83
  end
85
84
 
@@ -89,8 +88,8 @@ class Dslh
89
88
 
90
89
  case value
91
90
  when Hash
92
- if exclude_key and (key_conv ? value.keys.map {|k| key_conv.call(k) } : value.keys).any? {|k| exclude_key.call(k) }
93
- buf.puts '(' + ("\n" + value.pretty_inspect.strip).gsub("\n", "\n" + next_indent) + ')'
91
+ if exclude_key?(key_conv, value.keys)
92
+ buf.puts('(' + ("\n" + value.pretty_inspect.strip).gsub("\n", "\n" + next_indent) + ')')
94
93
  else
95
94
  buf.puts(' do')
96
95
  deval0(value, depth + 1, buf)
@@ -98,9 +97,25 @@ class Dslh
98
97
  end
99
98
  when Array
100
99
  if value.any? {|v| [Array, Hash].any? {|c| v.kind_of?(c) }}
101
- buf.puts '(' + ("\n" + value.pretty_inspect.strip).gsub("\n", "\n" + next_indent) + ')'
100
+ buf.puts(' [')
101
+
102
+ value.each_with_index do |v, i|
103
+ if v.kind_of?(Hash)
104
+ buf.puts(next_indent + '_{')
105
+ deval0(v, depth + 2, buf)
106
+ buf.print(next_indent + '}')
107
+ else
108
+ buf.print(next_indent + v.pretty_inspect.strip.gsub("\n", "\n" + next_indent))
109
+ end
110
+
111
+ buf.puts(i < (value.length - 1) ? ',' : '')
112
+ end
113
+
114
+ buf.puts(indent + ']')
115
+ elsif value.length == 1
116
+ buf.puts(' ' + value.inspect)
102
117
  else
103
- buf.puts ' ' + value.map {|v|
118
+ buf.puts(' ' + value.map {|v|
104
119
  v = value_conv.call(v) if value_conv
105
120
 
106
121
  if v.kind_of?(Hash)
@@ -108,16 +123,32 @@ class Dslh
108
123
  else
109
124
  v.inspect
110
125
  end
111
- }.join(', ')
126
+ }.join(', '))
112
127
  end
113
128
  else
114
129
  value = value_conv.call(value) if value_conv
115
- buf.puts ' ' + value.inspect
130
+ buf.puts(' ' + value.inspect)
116
131
  end
117
132
  end
118
133
  end
119
134
 
135
+ def exclude_key?(key_conv, keys)
136
+ exclude_key = @options[:exclude_key] || proc {|k| k.to_s !~ /\A[_a-z]\w+\Z/i }
137
+ exclude_key and (key_conv ? keys.map {|k| key_conv.call(k) } : keys).any? {|k| exclude_key.call(k) }
138
+ end
139
+
120
140
  class Scope
141
+ def _(&block)
142
+ if block
143
+ hash_orig = @__hash__
144
+ @__hash__ = {}
145
+ self.instance_eval(&block)
146
+ nested_hash = @__hash__
147
+ @__hash__ = hash_orig
148
+ return nested_hash
149
+ end
150
+ end
151
+
121
152
  def method_missing(method_name, *args, &block)
122
153
  key_conv = @__options__[:key_conv] || @__options__[:conv]
123
154
  value_conv = @__options__[:value_conv] || @__options__[:conv]
data/lib/dslh/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Dslh
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dslh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-27 00:00:00.000000000 Z
11
+ date: 2014-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler