Class: TBMX::ParagraphParser

Inherits:
ParserNode show all
Defined in:
lib/tbmx.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tokens) ⇒ ParagraphParser

Returns a new instance of ParagraphParser.

Raises:

  • (ArgumentError)


495
496
497
498
499
500
# File 'lib/tbmx.rb', line 495

def initialize(tokens)
  raise ArgumentError if not tokens.is_a? Array
  tokens.each {|token| raise ArgumentError if not token.kind_of? ParserNode}
  @tokens = tokens
  parse
end

Instance Attribute Details

#expressionsObject (readonly)

Returns the value of attribute expressions.



493
494
495
# File 'lib/tbmx.rb', line 493

def expressions
  @expressions
end

#tokensObject (readonly)

Returns the value of attribute tokens.



493
494
495
# File 'lib/tbmx.rb', line 493

def tokens
  @tokens
end

Instance Method Details

#parseObject



502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
# File 'lib/tbmx.rb', line 502

def parse
  @expressions = []
  rest = tokens
  while rest.length > 0
    if rest.first.is_a? WordToken
      @expressions << rest.shift
    elsif rest.first.is_a? WhitespaceToken
      @expressions << rest.shift
    elsif rest.first.is_a? BackslashToken
      command, rest = CommandParser.parse(rest)
      @expressions << command
    else
      return self
    end
  end
end

#to_htmlObject



519
520
521
# File 'lib/tbmx.rb', line 519

def to_html
  "<p>\n" + expressions.map(&:to_html).join + "\n</p>\n"
end