Class: AndDistance
- Inherits:
-
Object
- Object
- AndDistance
- Defined in:
- lib/glark/match/and_distance.rb
Constant Summary collapse
- INFINITE_DISTANCE =
signifies no limit to the distance between matches, i.e., anywhere within the entire file is valid.
-1
- AND_EQ_NUM_RE =
Regexp.new '^--and=(\-?\d+)?$'
Instance Attribute Summary collapse
-
#distance ⇒ Object
readonly
Returns the value of attribute distance.
Instance Method Summary collapse
-
#initialize(arg, args) ⇒ AndDistance
constructor
A new instance of AndDistance.
- #numeric?(x) ⇒ Boolean
Constructor Details
#initialize(arg, args) ⇒ AndDistance
Returns a new instance of AndDistance.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/glark/match/and_distance.rb', line 22 def initialize arg, args @distance = if arg == "-a" args.shift elsif arg == "--and" if args.size > 0 && numeric?(args[0]) args.shift else "0" end elsif md = AND_EQ_NUM_RE.match(arg) md[1] else raise "invalid 'and' option: '#{arg}'" end # check to ensure that this is numeric if !numeric? @distance raise "invalid distance for 'and' expression: '#{@distance}'\n" + " expecting an integer, or #{INFINITE_DISTANCE} for 'infinite'" end if @distance.to_i == INFINITE_DISTANCE @distance = 1.0 / 0.0 # infinity else @distance = @distance.to_i end @distance end |
Instance Attribute Details
#distance ⇒ Object (readonly)
Returns the value of attribute distance.
20 21 22 |
# File 'lib/glark/match/and_distance.rb', line 20 def distance @distance end |
Instance Method Details
#numeric?(x) ⇒ Boolean
52 53 54 55 56 57 58 59 60 |
# File 'lib/glark/match/and_distance.rb', line 52 def numeric? x return nil unless x return true if x.kind_of?(Fixnum) || x.to_i == INFINITE_DISTANCE begin Integer x rescue ArgumentError nil end end |