kumi-parser 0.0.22 → 0.0.23
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 +4 -4
- data/lib/kumi/parser/direct_parser.rb +24 -7
- data/lib/kumi/parser/token_metadata.rb +5 -0
- data/lib/kumi/parser/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a93347db05aac0a7ae24208706f40fd65586b4b7bb4872ce21443db80d21e9ed
|
4
|
+
data.tar.gz: ecfbe7e5722cbfcbc16066e95f8b6a5c42d49e5d1ea50f06029072ef27fbec08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 790e663404df430cf385eda58bea125a8467e1b587e6d4e98f4975b9ef125a61c5eadf19ac4398be543a2a17d251a3c1e091727e42b9599bc2c25135dda3017c
|
7
|
+
data.tar.gz: 5d32509d9b747d267fc2b2787c94484d434d88ced020f831b9230a866a60a51f95f34655c436c125a71f017f9dfae5feeedaeb5ad8420987626081d2d79b7071
|
@@ -61,10 +61,12 @@ module Kumi
|
|
61
61
|
trait_declarations = []
|
62
62
|
|
63
63
|
skip_comments_and_newlines
|
64
|
-
while %i[value trait].include?(current_token.type)
|
64
|
+
while %i[value trait let].include?(current_token.type)
|
65
65
|
case current_token.type
|
66
66
|
when :value
|
67
67
|
value_declarations << parse_value_declaration
|
68
|
+
when :let
|
69
|
+
value_declarations << parse_let_value_declaration
|
68
70
|
when :trait
|
69
71
|
trait_declarations << parse_trait_declaration
|
70
72
|
end
|
@@ -252,12 +254,8 @@ module Kumi
|
|
252
254
|
|
253
255
|
# Value declaration: 'value :name, expression' or 'value :name do ... end'
|
254
256
|
def parse_value_declaration
|
255
|
-
|
256
|
-
|
257
|
-
name_token = expect_token(:symbol)
|
258
|
-
rescue StandardError => e
|
259
|
-
binding.pry
|
260
|
-
end
|
257
|
+
value_token = expect_token(:value)
|
258
|
+
name_token = expect_token(:symbol)
|
261
259
|
|
262
260
|
if current_token.type == :do
|
263
261
|
expression = parse_cascade_expression
|
@@ -273,6 +271,25 @@ module Kumi
|
|
273
271
|
)
|
274
272
|
end
|
275
273
|
|
274
|
+
def parse_let_value_declaration
|
275
|
+
let_token = expect_token(:let)
|
276
|
+
name_token = expect_token(:symbol)
|
277
|
+
|
278
|
+
if current_token.type == :do
|
279
|
+
expression = parse_cascade_expression
|
280
|
+
else
|
281
|
+
expect_token(:comma)
|
282
|
+
expression = parse_expression
|
283
|
+
end
|
284
|
+
|
285
|
+
Kumi::Syntax::ValueDeclaration.new(
|
286
|
+
name_token.value,
|
287
|
+
expression,
|
288
|
+
hints:{inline: true},
|
289
|
+
loc: let_token.location
|
290
|
+
)
|
291
|
+
end
|
292
|
+
|
276
293
|
# Trait declaration: 'trait :name, expression'
|
277
294
|
def parse_trait_declaration
|
278
295
|
trait_token = expect_token(:trait)
|
@@ -90,6 +90,10 @@ module Kumi
|
|
90
90
|
expects_expression: true,
|
91
91
|
declaration_type: :value
|
92
92
|
},
|
93
|
+
let: {
|
94
|
+
category: :keyword,
|
95
|
+
expects_expression: true
|
96
|
+
},
|
93
97
|
trait: {
|
94
98
|
category: :keyword,
|
95
99
|
expects_expression: true,
|
@@ -404,6 +408,7 @@ module Kumi
|
|
404
408
|
'schema' => :schema,
|
405
409
|
'input' => :input,
|
406
410
|
'value' => :value,
|
411
|
+
'let' => :let,
|
407
412
|
'trait' => :trait,
|
408
413
|
'do' => :do,
|
409
414
|
'end' => :end,
|
data/lib/kumi/parser/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kumi-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kumi Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-10-
|
11
|
+
date: 2025-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parslet
|