class BasicToken

Holds logic and information for basic token management.

Constants

INLINE_CLASS_NAMES
TOP_LEVEL_CLASS_NAMES

Attributes

source_text[R]

Public Class Methods

new(source_text) click to toggle source
# File lib/rosetta/tokens/basic_token.rb, line 15
def initialize(source_text)
  @source_text = source_text
end

Public Instance Methods

accept(visitor) click to toggle source
# File lib/rosetta/tokens/basic_token.rb, line 35
def accept(visitor)
  method_name = "generate_#{type.to_s.downcase}"
  visitor.send(method_name.to_sym, self)
end
inline?() click to toggle source

TODO: Make references to token type constant everywhere

# File lib/rosetta/tokens/basic_token.rb, line 41
def inline?
  INLINE_CLASS_NAMES.include?(camel_case_type) || type == :TEXT
end
node_representation() click to toggle source
# File lib/rosetta/tokens/basic_token.rb, line 23
def node_representation
  "<#{type} value='#{value}'>"
end
to_s() click to toggle source
# File lib/rosetta/tokens/basic_token.rb, line 19
def to_s
  "<Token type='#{type}' value='#{value}'>"
end
type() click to toggle source
# File lib/rosetta/tokens/basic_token.rb, line 27
def type
  raise 'Subclass should handle type.'
end
value() click to toggle source
# File lib/rosetta/tokens/basic_token.rb, line 31
def value
  raise 'Subclass should handle value.'
end

Private Instance Methods

camel_case_type() click to toggle source
# File lib/rosetta/tokens/basic_token.rb, line 47
def camel_case_type
  # Example: :INLINE_CODE -> :InlineCode
  type.to_s.downcase.split('_').map(&:downcase).map(&:capitalize).join.to_sym
end