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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b23bd39864b3107f7f6e3c7fecf3e3791152e015a23ebe673a3e1aea2cb7553e
4
- data.tar.gz: b60284dcb13154d1773f35d3dc4af954f794e31b546f3cd94e37f25bc84a4e1d
3
+ metadata.gz: a93347db05aac0a7ae24208706f40fd65586b4b7bb4872ce21443db80d21e9ed
4
+ data.tar.gz: ecfbe7e5722cbfcbc16066e95f8b6a5c42d49e5d1ea50f06029072ef27fbec08
5
5
  SHA512:
6
- metadata.gz: 2fdb2049c0b269d1b89a20aa6481df8d199916c55f56fb0ba3fa223abf0f9e531bfa2b0a2c4619b6e676497d1acaaf37565c42114886266b3625ac224cb7121b
7
- data.tar.gz: 8e5348e745c4b633ffc1b1b5b853281e83aa09a737593be1bfe70a1149550b5d3bffc85d8b6aae6020320b717a08b8d3cc3940d93d67caec2072676aaec205df
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
- begin
256
- value_token = expect_token(:value)
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,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kumi
4
4
  module Parser
5
- VERSION = '0.0.22'
5
+ VERSION = '0.0.23'
6
6
  end
7
7
  end
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.22
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-02 00:00:00.000000000 Z
11
+ date: 2025-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parslet