Class: Regexp::Expression::CharacterSet
- Inherits:
-
Base
- Object
- Base
- Regexp::Expression::CharacterSet
show all
- Defined in:
- lib/regexp_parser/expression/classes/set.rb
Instance Attribute Summary collapse
Attributes inherited from Base
#level, #options, #quantifier, #text, #token, #ts, #type
Instance Method Summary
collapse
Methods inherited from Base
#case_insensitive?, #coded_offset, #free_spacing?, #full_length, #greedy?, #multiline?, #offset, #possessive?, #quantified?, #quantify, #quantity, #reluctant?, #starts_at, #terminal?, #to_re
Constructor Details
Returns a new instance of CharacterSet.
6
7
8
9
10
11
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 6
def initialize(token)
@members = []
@negative = false
@closed = false
super
end
|
Instance Attribute Details
#members ⇒ Object
Returns the value of attribute members.
4
5
6
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 4
def members
@members
end
|
Instance Method Details
#<<(member) ⇒ Object
20
21
22
23
24
25
26
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 20
def <<(member)
if @members.last.is_a?(CharacterSubSet) and not @members.last.closed?
@members.last << member
else
@members << member
end
end
|
#clone ⇒ Object
Override base method to clone set members as well.
14
15
16
17
18
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 14
def clone
copy = super
copy.members = @members.map {|m| m.clone }
copy
end
|
#close ⇒ Object
63
64
65
66
67
68
69
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 63
def close
if @members.last.is_a?(CharacterSubSet) and not @members.last.closed?
@members.last.close
else
@closed = true
end
end
|
#closed? ⇒ Boolean
71
72
73
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 71
def closed?
@closed
end
|
#each(&block) ⇒ Object
38
39
40
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 38
def each(&block)
@members.each {|m| yield m}
end
|
#each_with_index(&block) ⇒ Object
42
43
44
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 42
def each_with_index(&block)
@members.each_with_index {|m, i| yield m, i}
end
|
#include?(member, directly = false) ⇒ Boolean
28
29
30
31
32
33
34
35
36
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 28
def include?(member, directly = false)
@members.each do |m|
if m.is_a?(CharacterSubSet) and not directly
return true if m.include?(member)
else
return true if member == m.to_s
end
end; false
end
|
#length ⇒ Object
46
47
48
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 46
def length
@members.length
end
|
#matches?(input) ⇒ Boolean
92
93
94
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 92
def matches?(input)
input =~ /#{to_s}/ ? true : false
end
|
#negate ⇒ Object
50
51
52
53
54
55
56
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 50
def negate
if @members.last.is_a?(CharacterSubSet)
@members.last.negate
else
@negative = true
end
end
|
#negative? ⇒ Boolean
Also known as:
negated?
58
59
60
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 58
def negative?
@negative
end
|
#to_s(format = :full) ⇒ Object
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/regexp_parser/expression/classes/set.rb', line 75
def to_s(format = :full)
s = ''
s << @text.dup
s << '^' if negative?
s << @members.join
s << ']'
case format
when :base
else
s << @quantifier.to_s if quantified?
end
s
end
|