lib/regexp-examples/constants.rb in regexp-examples-0.3.1 vs lib/regexp-examples/constants.rb in regexp-examples-0.3.2
- old
+ new
@@ -1,33 +1,38 @@
module RegexpExamples
- # Number of times to repeat for Star and Plus repeaters
- TIMES = 2
+ # The maximum variance for any given repeater, to prevent a huge/infinite number of
+ # examples from being listed. For example, if MaxRepeaterVariance = 2 then:
+ # .* is equivalent to .{0,2}
+ # .+ is equivalent to .{1,3}
+ # .{2,} is equivalent to .{2,4}
+ # .{,3} is equivalent to .{0,2}
+ # .{3,8} is equivalent to .{3,5}
+ MaxRepeaterVariance = 2
# Maximum number of characters returned from a char set, to reduce output spam
# For example:
# If MaxGroupResults = 5, then
# \d = [0, 1, 2, 3, 4]
MaxGroupResults = 5
module CharSets
- Lower = Array('a'..'z')
- Upper = Array('A'..'Z')
- Digit = Array('0'..'9')
- # 45.chr = "-". Need to make sure this is at the START of the array, or things break
- # This is because of the /[a-z]/ regex syntax, and how it's being parsed
- Punct = [45..45, 33..44, 46..47, 58..64, 91..96, 123..126].map { |r| r.map { |val| val.chr } }.flatten
- Hex = Array('a'..'f') | Array('A'..'F') | Digit
- Any = Lower | Upper | Digit | Punct
+ Lower = Array('a'..'z')
+ Upper = Array('A'..'Z')
+ Digit = Array('0'..'9')
+ Punct = [33..47, 58..64, 91..96, 123..126].map { |r| r.map { |val| val.chr } }.flatten
+ Hex = Array('a'..'f') | Array('A'..'F') | Digit
+ Whitespace = [' ', "\t", "\n", "\r", "\v", "\f"]
+ Any = Lower | Upper | Digit | Punct
end
# Map of special regex characters, to their associated character sets
BackslashCharMap = {
'd' => CharSets::Digit,
'D' => CharSets::Lower | CharSets::Upper | CharSets::Punct,
'w' => CharSets::Lower | CharSets::Upper | CharSets::Digit | ['_'],
'W' => CharSets::Punct.reject { |val| val == '_' },
- 's' => [' ', "\t", "\n", "\r", "\v", "\f"],
- 'S' => CharSets::Any - [' ', "\t", "\n", "\r", "\v", "\f"],
+ 's' => CharSets::Whitespace,
+ 'S' => CharSets::Any - CharSets::Whitespace,
'h' => CharSets::Hex,
'H' => CharSets::Any - CharSets::Hex,
't' => ["\t"], # tab
'n' => ["\n"], # new line