template-ruby-parser 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39e872acd21b3df6527e4e4dfa65a33f713bdbbadc808f6ec689040732d0752e
4
- data.tar.gz: 17f2fea28f60a762e47ee81116e9dcfb5c26237ba751d430124bf7332347c21f
3
+ metadata.gz: 124eb85f640967137c493954a5b4c90bd5d4fb559837ecdbfc10fb22e7cf5e24
4
+ data.tar.gz: 6ebc3cd2edd7fdad592b6a84a2fe67371b11b3832121daaf7a66efbe64f81c31
5
5
  SHA512:
6
- metadata.gz: 0457b5b9762d6a2f0d439f594942311804652fa9e9fc3ea8a10a413517fb39915294030511b612f916f522c778afef019a3fb3993360112ff31ca45a562223b0
7
- data.tar.gz: 67ea7c80105d9324850bb31a6fad41ff6622d56ed41e7da3039dbedd4912db528edcec4409aef3e2584771145dcf310cd99523ff8f0ac08d4108bec91cfaa402
6
+ metadata.gz: dd3664a30abb295ca89a3dba32eb1305a2d863f28ff5b668b6ee02d579e4c99d308c6ae7e44f72777d79e44b0484e6d60543773981bf405dc6b13280f6bb139a
7
+ data.tar.gz: c85cb2d2e65bdedf1a79d0929593aaa45951df2708e517a8eb360ad9955c427b40bd7e094f46c8c2801da3f82e7871ffe1d5c1dfbe1d5c6462d7474e40b5dd32
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.1.8 - November 13, 2022
2
+
3
+ - Allow numbers with exponents: `1e1`
4
+
1
5
  ### 0.1.7 - November 13, 2022
2
6
 
3
7
  - Fix parsing of `nothing`
@@ -10,18 +10,7 @@ class Code
10
10
  elsif match(B)
11
11
  parse_base(2)
12
12
  else
13
- consume while (next?(DIGITS) || next?(UNDERSCORE)) && !end_of_input?
14
-
15
- if next?(DOT) && next_next?(DIGITS)
16
- consume
17
- while (next?(DIGITS) || next?(UNDERSCORE)) && !end_of_input?
18
- consume
19
- end
20
-
21
- { decimal: buffer.gsub(UNDERSCORE, EMPTY_STRING) }
22
- else
23
- { integer: buffer.gsub(UNDERSCORE, EMPTY_STRING).to_i }
24
- end
13
+ parse_number
25
14
  end
26
15
  else
27
16
  parse_subclass(::Code::Parser::Boolean)
@@ -34,6 +23,35 @@ class Code
34
23
 
35
24
  { integer: buffer.gsub(UNDERSCORE, EMPTY_STRING).to_i(base) }
36
25
  end
26
+
27
+ def parse_number
28
+ consume while (next?(DIGITS) || next?(UNDERSCORE)) && !end_of_input?
29
+
30
+ if next?(DOT) && next_next?(DIGITS)
31
+ consume
32
+ consume while (next?(DIGITS) || next?(UNDERSCORE)) && !end_of_input?
33
+
34
+ decimal = buffer!.gsub(UNDERSCORE, EMPTY_STRING)
35
+
36
+ if match(E)
37
+ buffer!
38
+ exponent = parse_number
39
+ { decimal: { value: decimal, exponent: exponent } }
40
+ else
41
+ { decimal: decimal }
42
+ end
43
+ else
44
+ integer = buffer!.gsub(UNDERSCORE, EMPTY_STRING).to_i
45
+
46
+ if match(E)
47
+ buffer!
48
+ exponent = parse_number
49
+ { integer: { value: integer, exponent: exponent } }
50
+ else
51
+ { integer: integer }
52
+ end
53
+ end
54
+ end
37
55
  end
38
56
  end
39
57
  end
data/lib/code/parser.rb CHANGED
@@ -10,6 +10,7 @@ class Code
10
10
  X = "x"
11
11
  O = "o"
12
12
  B = "b"
13
+ E = "e"
13
14
 
14
15
  SINGLE_QUOTE = "'"
15
16
  DOUBLE_QUOTE = '"'
@@ -1,6 +1,6 @@
1
1
  class Template
2
2
  class Parser < ::Code::Parser
3
- Version = Gem::Version.new("0.1.7")
3
+ Version = Gem::Version.new("0.1.8")
4
4
 
5
5
  def parse
6
6
  parts = []
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: template-ruby-parser
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
  - Dorian Marié