clj 0.0.3.2 → 0.0.4
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.
- data/lib/clj/parser.rb +17 -11
- data/lib/clj/types.rb +9 -5
- metadata +5 -5
data/lib/clj/parser.rb
CHANGED
@@ -42,6 +42,8 @@ class Parser < StringScanner
|
|
42
42
|
|
43
43
|
INTEGER = /(-?0|-?[1-9]\d*)/
|
44
44
|
|
45
|
+
BIGNUM = /#{INTEGER}N/
|
46
|
+
|
45
47
|
FLOAT = /(-?
|
46
48
|
(?:0|[1-9]\d*)
|
47
49
|
(?:
|
@@ -51,6 +53,8 @@ class Parser < StringScanner
|
|
51
53
|
)
|
52
54
|
)/x
|
53
55
|
|
56
|
+
BIGDECIMAL = /#{FLOAT}M/
|
57
|
+
|
54
58
|
RATIONAL = /(#{INTEGER}\/#{INTEGER})/
|
55
59
|
|
56
60
|
REGEXP = /#"((\\.|[^"])+)"/
|
@@ -113,17 +117,19 @@ class Parser < StringScanner
|
|
113
117
|
|
114
118
|
def parse_value
|
115
119
|
case
|
116
|
-
when scan(RATIONAL)
|
117
|
-
when scan(
|
118
|
-
when scan(
|
119
|
-
when scan(
|
120
|
-
when scan(
|
121
|
-
when scan(
|
122
|
-
when scan(
|
123
|
-
when scan(
|
124
|
-
when scan(
|
125
|
-
when scan(
|
126
|
-
|
120
|
+
when scan(RATIONAL) then Rational(self[1])
|
121
|
+
when scan(BIGDECIMAL) then require 'bigdecimal'; BigDecimal(self[1])
|
122
|
+
when scan(FLOAT) then Float(self[1])
|
123
|
+
when scan(BIGNUM) then Integer(self[1])
|
124
|
+
when scan(INTEGER) then Integer(self[1])
|
125
|
+
when scan(REGEXP) then /#{self[1]}/
|
126
|
+
when scan(INSTANT) then DateTime.rfc3339(self[1])
|
127
|
+
when scan(STRING) then parse_string
|
128
|
+
when scan(KEYWORD) then self[1].to_sym
|
129
|
+
when scan(TRUE) then true
|
130
|
+
when scan(FALSE) then false
|
131
|
+
when scan(NIL) then nil
|
132
|
+
else UNPARSED
|
127
133
|
end
|
128
134
|
end
|
129
135
|
|
data/lib/clj/types.rb
CHANGED
@@ -63,11 +63,15 @@ class Time
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
66
|
+
class Bignum < Integer
|
67
|
+
def to_clj (options = {})
|
68
|
+
to_s + 'N'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class BigDecimal < Numeric
|
73
|
+
def to_clj (options = {})
|
74
|
+
to_s('F') + 'M'
|
71
75
|
end
|
72
76
|
end
|
73
77
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-02-03 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &19567340 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *19567340
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &19564220 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *19564220
|
36
36
|
description:
|
37
37
|
email: meh@paranoici.org
|
38
38
|
executables: []
|