l43_peg 0.3.1 → 0.3.2

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: 7a89552a404a5938a12ba56e872727d2c677c88dec0dea7c6a7bf7d481d037ae
4
- data.tar.gz: 4a368bffa2b0c42802bb61ac2985040c656a8f158a3f2bc2b265059995c17203
3
+ metadata.gz: 5f907b8eabe5792c161d63a9d10519bd5166e1afa42e699b7ee73db66757a74f
4
+ data.tar.gz: 205a833fac0729863834d7f1e77ccb818ee94f2d6ca535bd600563353976a8e2
5
5
  SHA512:
6
- metadata.gz: 3b669a3b6cd215a2fd735309647554859a1e84d5a5846682a28eb9f02ef84167bcd1b30a66c240090e4b9fb427051c41a0f145120b78783271b528e8e420f9c8
7
- data.tar.gz: 11dc198e540242ad7eda2962d4a63b9db52b549a91c6236951bb8fa5655d10656d0829bf21bec164ba254e662b4b6b3b63e50953746ad1600493f189aeab4431
6
+ metadata.gz: aacdb7f6bde686be38585708fa1c7e5f3f0f91d0ec3559eb763cf25da379a1feb466b8b73fb9170d4583f8a034af333ad679f078cb8bf62313b0cacec7a4a548
7
+ data.tar.gz: 543f1f6452d764638ebde4fbe77e3e0d3d05fec4fee10982c9adeec0ebccfafcc91b4f2412775617910dfe4767dff2325846a23a77f5dd57a9959c47d971626e
data/lib/l43_peg/box.rb CHANGED
@@ -5,11 +5,24 @@ module L43Peg
5
5
  module Box
6
6
  attr_reader :value
7
7
 
8
- def self.make(class_name)
9
- klass = Object.const_get(class_name) if Object.const_defined?(class_name)
10
- raise NotABox, "#{class_name} is already defined but not a Box!" if klass && !(klass < self)
11
- klass = Object.const_set(class_name, Class.new.include(self)) unless klass
12
- klass
8
+ class << self
9
+ def make(class_name)
10
+ case class_name
11
+ when String, Symbol
12
+ make_new(class_name)
13
+ when Class
14
+ class_name
15
+ else
16
+ raise ArgumentError, "need a string, symbol or class, got: #{class_name.inspect}"
17
+ end
18
+ end
19
+
20
+ def make_new(class_name)
21
+ klass = Object.const_get(class_name) if Object.const_defined?(class_name)
22
+ raise NotABox, "#{class_name} is already defined but not a Box!" if klass && !(klass < self)
23
+ klass = Object.const_set(class_name, Class.new.include(self)) unless klass
24
+ klass
25
+ end
13
26
  end
14
27
 
15
28
  def deconstruct_keys(*) = {class: self, value:}
@@ -38,7 +38,7 @@ module L43Peg
38
38
  # end
39
39
  # return succeed_parser(ast:, rest: curr_input.drop, parsed:)
40
40
  in bad_result
41
- Errors.bad_result(bad_result.inspect)
41
+ Errors.bad_parser_result("from parser #{parser.name.inspect} in many: #{bad_result.inspect}")
42
42
  end
43
43
  end
44
44
  end
@@ -11,7 +11,7 @@ module L43Peg
11
11
  if mapper
12
12
  parser.map(name:, box:, &mapper)
13
13
  elsif box
14
- parser.map(name) { Box.make(box).new(it) }
14
+ parser.boxed(box)
15
15
  else
16
16
  parser
17
17
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module L43Peg
4
- VERSION = '0.3.1'
4
+ VERSION = '0.3.2'
5
5
  end
6
6
  # SPDX-License-Identifier: AGPL-3.0-or-later
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: l43_peg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-04-30 00:00:00.000000000 Z
10
+ date: 2026-05-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: l43_open_object
@@ -98,7 +98,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - ">="
100
100
  - !ruby/object:Gem::Version
101
- version: 4.0.1
101
+ version: 4.0.2
102
102
  required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  requirements:
104
104
  - - ">="