Sha256: 48ea8a9c30b3dc059714f34332b6dd3b899dc03b9a891094be94a7e06f215d66

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

## this class holds a block of carrot source code tokenized by the parser.
class Token
  attr_accessor :ln, :line, :indent_level, # raw line and line number
    :processor_name, :line_code, :blocks, :indent_level

  def initialize ln, line, indent_level, processor_name, line_code = '', block_open = false
    @ln, @line, @indent_level, @processor_name, @line_code = ln, line, indent_level, processor_name, line_code
    @blocks = Array.new if block_open
  end

  def indent
    " " * indent_level
  end

  # add a line to current block args, separate each line with "\n"
  def add_block_code line
    raise "block not opened in line #{:ln}" unless block_open?
    line.chomp.split("\n").each do |ln| 
      @blocks << ln
    end
  end

  def has_block? 
    (@blocks and @blocks.size > 0) ? true : false
  end

  def block_open?
    @blocks.is_a?(Array)
  end

  def block_code
    has_block? ? @blocks.join("\n") : ""
  end

  def block_args
    YAML.load(block_code)
  end

  def line_args
    YAML.load(line_code)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
luobo-0.1.3 lib/luobo/token.rb
luobo-0.1.2 lib/luobo/token.rb
luobo-0.0.5 lib/luobo/token.rb