l43_peg 0.3.0 → 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 +4 -4
- data/lib/l43_peg/combinators/map.rb +1 -3
- data/lib/l43_peg/combinators/maybe.rb +16 -0
- data/lib/l43_peg/combinators.rb +4 -0
- data/lib/l43_peg/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7a89552a404a5938a12ba56e872727d2c677c88dec0dea7c6a7bf7d481d037ae
|
|
4
|
+
data.tar.gz: 4a368bffa2b0c42802bb61ac2985040c656a8f158a3f2bc2b265059995c17203
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
data/lib/l43_peg/combinators.rb
CHANGED
|
@@ -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
|
|
data/lib/l43_peg/version.rb
CHANGED
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.
|
|
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-
|
|
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
|
|
@@ -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
|