class TheFox::Range::Lexer::Number
0123456789
Public Class Methods
new(char)
click to toggle source
Calls superclass method
TheFox::Range::Lexer::Base::new
# File lib/thefox-ext/range/lexer/number.rb, line 7 def initialize(char) super() # puts '-> Number.initialize(%s)' % [char] #@nonce = rand(10 ** 3).to_s.rjust(3, '0') @char = char @is_ref_item = false end
Public Instance Methods
append(obj)
click to toggle source
# File lib/thefox-ext/range/lexer/number.rb, line 52 def append(obj) if obj.is_a?(Number) self.append(obj.char) else @char += obj end end
char()
click to toggle source
:nocov:
# File lib/thefox-ext/range/lexer/number.rb, line 41 def char @char end
dup()
click to toggle source
Calls superclass method
TheFox::Range::Lexer::Base#dup
# File lib/thefox-ext/range/lexer/number.rb, line 31 def dup() # puts '-> Number.dup(%s) -> %s %s' % [@char, inspect, self.is_ref_item ? 'Y' : 'n'] # puts '-> %s.dup' % [inspect] o = super() o.is_ref_item = self.is_ref_item # puts '-> Number.dup(%s) -> %s' % [@char, o.inspect] o end
inc()
click to toggle source
# File lib/thefox-ext/range/lexer/number.rb, line 60 def inc() f = '%%0%dd' % [@char.length] @char = f % [@char.to_i + 1] end
inspect()
click to toggle source
:nocov:
# File lib/thefox-ext/range/lexer/number.rb, line 16 def inspect() a = [ # '#' + @nonce.to_s, # 'c' + @char, @char, ] if !@parent_item.nil? a.push('^%s' % @parent_item.inspect) end a.push('IRI=%d' % [@is_ref_item]) # if @children.length > 0 # a.push('v%d' % @children.length) # end 'Number(%s)' % [a.join(' ')] end
is_ref_item()
click to toggle source
# File lib/thefox-ext/range/lexer/number.rb, line 45 def is_ref_item @is_ref_item end
is_ref_item=(is_ref_item)
click to toggle source
# File lib/thefox-ext/range/lexer/number.rb, line 48 def is_ref_item=(is_ref_item) @is_ref_item = is_ref_item end
resolve(level = 0)
click to toggle source
# File lib/thefox-ext/range/lexer/number.rb, line 65 def resolve(level = 0) # puts '-> %s.resolve(%d)' % [self.inspect, @char, level] if self.has_parent_item if @parent_item.is_a?(Number) ('%s%s' % [@parent_item.resolve(level + 1), @char]).to_i elsif @parent_item.is_a?(Scope) curr_item = @parent_item stack = [@char] while !curr_item.parent_scope.nil? do # puts '-----> CI=%s RI=%s' % [curr_item.inspect, curr_item.ref_item.inspect] if !curr_item.ref_item.nil? stack.push(curr_item.ref_item.char) end curr_item = curr_item.parent_scope end # pp stack.reverse stack.reverse.join.to_i # if @char == '5' # 2102 # else # 9999 # end elsif @parent_item.is_a?(Interval) @char.to_i else nil end else @char.to_i end end