class Regextest::Front::Range::TRange

Attributes

length[R]
offset[R]

Public Class Methods

new(letter_begin, letter_end = nil) click to toggle source

Constructor

# File lib/regextest/front/range.rb, line 15
def initialize(letter_begin, letter_end = nil)
  TstLog("TRange: #{letter_begin}-#{letter_end}")
  @options = nil
  @begin = parse_letter(letter_begin)
  if letter_end 
    @end = parse_letter(letter_end)
  else
    @end = @begin
  end

  @offset = -1  # not used in this class
  @length = -1  # not used in this class
end

Public Instance Methods

enumerate() click to toggle source

enumerate

# File lib/regextest/front/range.rb, line 46
def enumerate
  (@begin..@end).to_a
end
json() click to toggle source

transform to json format (using codepoints of Unicode)

# File lib/regextest/front/range.rb, line 57
def json
  @@id += 1
  if @options
    charset = @options[:reg_options].charset
  else
    charset = "d"
  end
  "{" +
    "\"type\": \"LEX_RANGE\", " +
    "\"id\": \"G#{@@id}\", " +
    "\"begin\": #{@begin}, " +
    "\"end\": #{@end}, " +
    "\"charset\": \"#{charset}\"" +
  "}"
end
parse_letter(letter) click to toggle source

parse letter

# File lib/regextest/front/range.rb, line 32
def parse_letter(letter)
  case letter
  when String
    letter.unpack("U*")[0]
  when Integer
    letter
  when Regextest::Front::Letter::TLetter
    eval('"' + letter.value + '"').unpack("U*")[0]
  else
    raise "Internal error. invalid letter class #{letter}"
  end
end
set_options(options) click to toggle source

set options

# File lib/regextest/front/range.rb, line 51
def set_options(options)
  TstLog("Range set_options: #{options[:reg_options].inspect}")
  @options = options
end