l43_peg 0.2.1 → 0.3.1

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: 12367798c13e0e131a3d2b0acd28db7c272fd9c25f46715e0ec1a6eb415e0eb5
4
- data.tar.gz: e57b47017a6af939d130f6178326e3fe90965c7ccd3dadc0308b0f54fba9abe5
3
+ metadata.gz: 7a89552a404a5938a12ba56e872727d2c677c88dec0dea7c6a7bf7d481d037ae
4
+ data.tar.gz: 4a368bffa2b0c42802bb61ac2985040c656a8f158a3f2bc2b265059995c17203
5
5
  SHA512:
6
- metadata.gz: e28f4a426cf654af9376932587cbb4252f4279392d09d0cc3e94f5d197e1cffc1eaa5134243ade86a3ae3632ced45aa453afccbffc57eca6eb23cda38dc88bb6
7
- data.tar.gz: 94d10a4621e0ab446b338d15b1a694c045b77728673a1c503aa7627c6b4069d5d62eeb61992023e28bd7c098ca3e9b718e88dc65f7c942bddf1e454bb2b2fd3f
6
+ metadata.gz: 3b669a3b6cd215a2fd735309647554859a1e84d5a5846682a28eb9f02ef84167bcd1b30a66c240090e4b9fb427051c41a0f145120b78783271b528e8e420f9c8
7
+ data.tar.gz: 11dc198e540242ad7eda2962d4a63b9db52b549a91c6236951bb8fa5655d10656d0829bf21bec164ba254e662b4b6b3b63e50953746ad1600493f189aeab4431
@@ -5,9 +5,7 @@ module L43Peg
5
5
  module Map extend self
6
6
  def map(parser, name: nil, fn: nil, box: nil, &mapper)
7
7
  raise ArgumentError, "must not provide keyword parameter fn and a block" if fn && mapper
8
- mapper = fn || mapper
9
- raise ArgumentError, "must provide one of the keyword parameters [fn:, box:] or a block" unless mapper || box
10
- mapper ||= :itself
8
+ mapper = fn || mapper || :itself
11
9
  Parser.new(name || "map(#{parser.name})") {|input, name=nil| _map(input:, name:, parser:, box:, mapper:)}
12
10
  end
13
11
 
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'l43_peg/combinators/many'
4
+ module L43Peg
5
+ module Combinators
6
+ module Maybe extend self
7
+ def maybe(parser, name: nil, &mapper)
8
+ Many
9
+ .many(parser, name:, max: 1)
10
+ .map(&:first)
11
+ .map(&mapper)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -8,6 +8,7 @@ require "l43_peg/combinators/lazy"
8
8
  require "l43_peg/combinators/many"
9
9
  require "l43_peg/combinators/map"
10
10
  require "l43_peg/combinators/map_error"
11
+ require "l43_peg/combinators/maybe"
11
12
  require "l43_peg/combinators/satisfy"
12
13
  require "l43_peg/combinators/sequence"
13
14
 
@@ -36,6 +37,9 @@ module L43Peg
36
37
  def map_error(parser, name: nil, reason: nil) =
37
38
  MapError.map_error(parser, name:, reason:)
38
39
 
40
+ def maybe(parser, name: nil, &mapper) =
41
+ Maybe.maybe(parser, name:, &mapper)
42
+
39
43
  def satisfy(parser, name: nil, fn: nil, &satisfier) =
40
44
  Satisfy.satisfy(parser, name:, fn:, &satisfier)
41
45
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module L43Peg
4
- VERSION = '0.2.1'
4
+ VERSION = '0.3.1'
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.2.1
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-04-25 00:00:00.000000000 Z
10
+ date: 2026-04-30 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: l43_open_object
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.2.4
18
+ version: 0.3.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 0.2.4
25
+ version: 0.3.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: l43_core
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -60,6 +60,7 @@ files:
60
60
  - lib/l43_peg/combinators/many.rb
61
61
  - lib/l43_peg/combinators/map.rb
62
62
  - lib/l43_peg/combinators/map_error.rb
63
+ - lib/l43_peg/combinators/maybe.rb
63
64
  - lib/l43_peg/combinators/satisfy.rb
64
65
  - lib/l43_peg/combinators/sequence.rb
65
66
  - lib/l43_peg/errors.rb