template-ruby-parser 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.
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é