dslh 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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