code-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: 978c33e2c6a9130df564796155ebc20bc7091a14709dfb4ba7beb79b5b1b5d48
4
- data.tar.gz: 17f2fea28f60a762e47ee81116e9dcfb5c26237ba751d430124bf7332347c21f
3
+ metadata.gz: b4f1c3766c85835e0e849b956b2046e67d68c5f61ae462ad2bbcf436f194e8e6
4
+ data.tar.gz: 22aaf2adc257c7d481d1be68cc8dafa366fd32aeb71764e7fcf14c94c140af7f
5
5
  SHA512:
6
- metadata.gz: c5c69a377743fcfdd055c5fdcdcb302593e6b59abbbd3b0f42ad8fd557be6788375a29e8b1f2eb418da6a352b10f542deccc5db93ce846c033093e571f5c20f9
7
- data.tar.gz: 67ea7c80105d9324850bb31a6fad41ff6622d56ed41e7da3039dbedd4912db528edcec4409aef3e2584771145dcf310cd99523ff8f0ac08d4108bec91cfaa402
6
+ metadata.gz: 1928d766297e5c755bccc6c6832ad056dd77638235738489488f733f2e44cba1c3d372b0873a97db577cf4ed40805c326c876ba0860ff3df186591093f23435b
7
+ data.tar.gz: c49ba9bd87d69e3283f29553c03a5dbd474259ce2ade47d7f6f0b3da0bc36171f9355b39565d63ee6274ed6c30afad5f50db4879219772395e9170a18fde2abe
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: code-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é