zon-rb 0.3.2 → 0.3.3

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: cfe9708b17f18a4d1d52b8aacd0fa8f49c65d36f61273cc6a587524321b94124
4
- data.tar.gz: 7be72cc76bf2445439538284c7cffade4fe9ba18242aeb2846912ef722e361ae
3
+ metadata.gz: c423818245cd12dc36a6bda5fce1666d7f85dbdbcf891196f4d9ecbc92342aaf
4
+ data.tar.gz: 167b2356621a36abe2a5730725262eddd303ce596fdf01377d618f829f040f0e
5
5
  SHA512:
6
- metadata.gz: 4a7704ff2f42b6458a454f36cb162a341babdd16436087eb33679685ba2af98ad550e3014a3eea5b075b1a3d68b3105088b66b430abb446b9155d4ba557c610d
7
- data.tar.gz: 5f56e5ae9a072709caf95b9112c450a2b3279ee2a2f6024768eb99f98d6d353b976badc2481ef13eb58d2f5ca97415c5710500c8e5ea5f1966c044d26cc60437
6
+ metadata.gz: 4d5244cb30e7591f86e2764518c1768b3d5bb25536c75bc35992066a8966aef109e9e7a1e0129440f3e9bcd662847d1890402470aa6b3d7754afd559531aecc8
7
+ data.tar.gz: dde0161c7d0bd6d8d5e1107bf49841fbb9f16fb4a27149dda42dc0f1999b2e835830ea18506083d751327263f802738a450d51cb4dd1b95d999ff58e762b92c1
data/lib/zon/lexer.rb CHANGED
@@ -9,6 +9,7 @@ module Zon
9
9
  RBRACE = 5
10
10
  EQUALS = 6
11
11
  COMMA = 7
12
+ LITERAL2 = 8
12
13
  end
13
14
 
14
15
  class Token
@@ -98,6 +99,8 @@ module Zon
98
99
  y << Token.new(TokenType::NUMBER, token_str)
99
100
  elsif self.is_literal? token_str
100
101
  y << Token.new(TokenType::LITERAL, token_str)
102
+ elsif self.is_at_literal? token_str
103
+ y << Token.new(TokenType::LITERAL2, token_str)
101
104
  else
102
105
  raise "Unknown token '#{token_str}' at index #{idx}"
103
106
  end
@@ -110,6 +113,11 @@ module Zon
110
113
  !!(token_str =~ literal_regex)
111
114
  end
112
115
 
116
+ def self.is_at_literal?(token_str)
117
+ literal_regex = /\.@\"[^"]+\"/
118
+ !!(token_str =~ literal_regex)
119
+ end
120
+
113
121
  def self.is_number?(token_str)
114
122
  number_regex = /\A
115
123
  [+-]? # optional sign
data/lib/zon/parser.rb CHANGED
@@ -32,7 +32,7 @@ module Zon
32
32
 
33
33
  v = self.parse
34
34
 
35
- if v.is_a? Symbol and self.next_token? Lexer::TokenType::EQUALS
35
+ if (v.is_a? Symbol or v.is_a? String) and self.next_token? Lexer::TokenType::EQUALS
36
36
  # This is a Zon struct, i.e. translate it to a Ruby hash
37
37
  k = v
38
38
  self.next_equals # skip equals
@@ -93,7 +93,9 @@ module Zon
93
93
 
94
94
  if @curr and @curr.type == Lexer::TokenType::LITERAL
95
95
  @curr.value[1..].to_sym # create sym from string without the '.'
96
- elsif
96
+ elsif @curr and @curr.type == Lexer::TokenType::LITERAL2
97
+ @curr.value[3..-2]
98
+ else
97
99
  raise "Expected literal token but got '#{@curr.value}'"
98
100
  end
99
101
  end
@@ -107,6 +109,8 @@ module Zon
107
109
 
108
110
  if @curr.type == Lexer::TokenType::LITERAL
109
111
  value = @curr.value[1..].to_sym
112
+ elsif @curr.type == Lexer::TokenType::LITERAL2
113
+ value = @curr.value[3..-2]
110
114
  elsif @curr.type == Lexer::TokenType::STRING
111
115
  value = @curr.value[1..-2]
112
116
  elsif @curr.type == Lexer::TokenType::NUMBER
data/lib/zon/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zon
4
- VERSION = "0.3.2"
4
+ VERSION = "0.3.3"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zon-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David P. Sugar