citrus 2.2.1 → 2.2.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.
- data/lib/citrus.rb +12 -4
- data/test/label_test.rb +10 -0
- metadata +2 -2
data/lib/citrus.rb
CHANGED
@@ -8,7 +8,7 @@ require 'strscan'
|
|
8
8
|
module Citrus
|
9
9
|
autoload :File, 'citrus/file'
|
10
10
|
|
11
|
-
VERSION = [2, 2,
|
11
|
+
VERSION = [2, 2, 2]
|
12
12
|
|
13
13
|
# Returns the current version of Citrus as a string.
|
14
14
|
def self.version
|
@@ -611,6 +611,11 @@ module Citrus
|
|
611
611
|
def inspect # :nodoc:
|
612
612
|
to_s
|
613
613
|
end
|
614
|
+
|
615
|
+
def extend_match(match) # :nodoc:
|
616
|
+
match.names << name if named?
|
617
|
+
match.extend(extension) if extension
|
618
|
+
end
|
614
619
|
end
|
615
620
|
|
616
621
|
# A Terminal is a Rule that matches directly on the input stream and may not
|
@@ -944,6 +949,11 @@ module Citrus
|
|
944
949
|
def to_s
|
945
950
|
label.to_s + ':' + rule.embed
|
946
951
|
end
|
952
|
+
|
953
|
+
def extend_match(match) # :nodoc:
|
954
|
+
match.names << label
|
955
|
+
super
|
956
|
+
end
|
947
957
|
end
|
948
958
|
|
949
959
|
# A Repeat is a Predicate that specifies a minimum and maximum number of times
|
@@ -1237,11 +1247,9 @@ module Citrus
|
|
1237
1247
|
|
1238
1248
|
private
|
1239
1249
|
|
1240
|
-
# Extends this match with the extensions provided by its #rules.
|
1241
1250
|
def extend! # :nodoc:
|
1242
1251
|
extenders.each do |rule|
|
1243
|
-
|
1244
|
-
extend(rule.extension) if rule.extension
|
1252
|
+
rule.extend_match(self)
|
1245
1253
|
end
|
1246
1254
|
end
|
1247
1255
|
end
|
data/test/label_test.rb
CHANGED
@@ -6,6 +6,16 @@ class LabelTest < Test::Unit::TestCase
|
|
6
6
|
assert_equal(false, rule.terminal?)
|
7
7
|
end
|
8
8
|
|
9
|
+
def test_match
|
10
|
+
abc = Rule.new('abc')
|
11
|
+
abc.name = 'abc'
|
12
|
+
label = Label.new(abc, 'a_label')
|
13
|
+
label.name = 'label'
|
14
|
+
match = label.parse('abc')
|
15
|
+
assert(match)
|
16
|
+
assert_equal([:abc, :a_label, :label], match.names)
|
17
|
+
end
|
18
|
+
|
9
19
|
def test_to_s
|
10
20
|
rule = Label.new('a', 'label')
|
11
21
|
assert_equal('label:"a"', rule.to_s)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: citrus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Jackson
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-11-
|
12
|
+
date: 2010-11-16 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|