literal_parser 1.0.0 → 1.0.1
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.
- checksums.yaml +7 -0
- data/lib/literal_parser.rb +17 -5
- data/lib/literal_parser/version.rb +1 -1
- data/literal_parser.gemspec +2 -1
- data/test/unit/lib/literal_parser.rb +3 -3
- metadata +8 -9
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 28871bb27419b6dfc757d953bd2f6f5ed2415e0c
|
4
|
+
data.tar.gz: 3a056f983667edb3df7f96854b901c522f1ef7d8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 794cca369d91f721ca86ba72686d1d92060576ccc151b1947ef74614529b3b6557c87f5aa0ebaf07cea1acb6e7671a2ae929f5f32516469b62d5e8cb40b30558
|
7
|
+
data.tar.gz: 15b76587ba6c95a9bd68dfd14218648edc4f96747488142c4ae80ac262aad8dfd7780f47e727ec19924baf26c3a23084c2025e8900fb24f4d4962bab84ded455
|
data/lib/literal_parser.rb
CHANGED
@@ -116,7 +116,9 @@ class LiteralParser
|
|
116
116
|
|
117
117
|
RRegexp = %r{/((?:[^\\/]+|\\.)*)/([imxnNeEsSuU]*)} # Match a regular expression
|
118
118
|
|
119
|
-
RSymbol =
|
119
|
+
RSymbol = /:[A-Za-z_]\w*|:#{RSString}|:#{RDString}/ # Match a symbol
|
120
|
+
|
121
|
+
RHashKeySymbol = /([A-Za-z_]\w*):/ # Match a symbol used as key in a Hash
|
120
122
|
|
121
123
|
RDate = /(\d{4})-(\d{2})-(\d{2})/ # Match a date
|
122
124
|
|
@@ -257,13 +259,23 @@ class LiteralParser
|
|
257
259
|
if @scanner.scan(RHashEnd)
|
258
260
|
value
|
259
261
|
else
|
260
|
-
|
261
|
-
|
262
|
+
if @scanner.scan(RHashKeySymbol)
|
263
|
+
key = @scanner[1].to_sym
|
264
|
+
@scanner.scan(RHashVoid)
|
265
|
+
else
|
266
|
+
key = scan_value
|
267
|
+
raise SyntaxError, "Expected =>" unless @scanner.scan(RHashArrow)
|
268
|
+
end
|
262
269
|
val = scan_value
|
263
270
|
value[key] = val
|
264
271
|
while @scanner.scan(RHashSeparator)
|
265
|
-
|
266
|
-
|
272
|
+
if @scanner.scan(RHashKeySymbol)
|
273
|
+
key = @scanner[1].to_sym
|
274
|
+
@scanner.scan(RHashVoid)
|
275
|
+
else
|
276
|
+
key = scan_value
|
277
|
+
raise SyntaxError, "Expected =>" unless @scanner.scan(RHashArrow)
|
278
|
+
end
|
267
279
|
val = scan_value
|
268
280
|
value[key] = val
|
269
281
|
end
|
data/literal_parser.gemspec
CHANGED
@@ -2,10 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "literal_parser"
|
5
|
-
s.version = "1.0.
|
5
|
+
s.version = "1.0.1"
|
6
6
|
s.authors = "Stefan Rusterholz"
|
7
7
|
s.email = "stefan.rusterholz@gmail.com"
|
8
8
|
s.homepage = "https://github.com/apeiros/literal_parser"
|
9
|
+
s.license = 'BSD 2-Clause'
|
9
10
|
|
10
11
|
s.description = <<-DESCRIPTION.gsub(/^ /, '').chomp
|
11
12
|
Parse Strings containing ruby literals and return a proper ruby object.
|
@@ -57,9 +57,9 @@ suite "LiteralParser" do
|
|
57
57
|
assert_equal expected_array, LiteralParser.parse(array_string)
|
58
58
|
end
|
59
59
|
test "Parse Hash" do
|
60
|
-
|
61
|
-
|
62
|
-
assert_equal
|
60
|
+
hash_string = '{nil => false, true => 123, 12.5 => 2012-05-20, :sym => "str", sym2: 123}'
|
61
|
+
expected_hash = {nil => false, true => 123, 12.5 => Date.civil(2012,5,20), :sym => "str", :sym2 => 123}
|
62
|
+
assert_equal expected_hash, LiteralParser.parse(hash_string)
|
63
63
|
end
|
64
64
|
test "Parse Constants" do
|
65
65
|
assert_equal Time, LiteralParser.parse('Time')
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: literal_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Stefan Rusterholz
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-05 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Parse Strings containing ruby literals and return a proper ruby object.
|
15
14
|
email: stefan.rusterholz@gmail.com
|
@@ -26,26 +25,26 @@ files:
|
|
26
25
|
- Rakefile
|
27
26
|
- README.markdown
|
28
27
|
homepage: https://github.com/apeiros/literal_parser
|
29
|
-
licenses:
|
28
|
+
licenses:
|
29
|
+
- BSD 2-Clause
|
30
|
+
metadata: {}
|
30
31
|
post_install_message:
|
31
32
|
rdoc_options: []
|
32
33
|
require_paths:
|
33
34
|
- lib
|
34
35
|
required_ruby_version: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
36
|
requirements:
|
37
|
-
- -
|
37
|
+
- - '>='
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0'
|
40
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
41
|
requirements:
|
43
|
-
- -
|
42
|
+
- - '>'
|
44
43
|
- !ruby/object:Gem::Version
|
45
44
|
version: 1.3.1
|
46
45
|
requirements: []
|
47
46
|
rubyforge_project:
|
48
|
-
rubygems_version: 1.
|
47
|
+
rubygems_version: 2.1.5
|
49
48
|
signing_key:
|
50
49
|
specification_version: 3
|
51
50
|
summary: Parse Strings containing ruby literals and return a proper ruby object.
|