Class: MODL::Parser::Parsed::ParsedPrimitive

Inherits:
MODLParserBaseListener show all
Defined in:
lib/modl/parser/parsed.rb

Overview

Class to represent a parsed grammar object

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from MODLParserBaseListener

#enterModl, #enterModl_array, #enterModl_array_conditional, #enterModl_array_conditional_return, #enterModl_array_item, #enterModl_array_value_item, #enterModl_condition, #enterModl_condition_group, #enterModl_condition_test, #enterModl_map, #enterModl_map_conditional, #enterModl_map_conditional_return, #enterModl_map_item, #enterModl_nb_array, #enterModl_operator, #enterModl_pair, #enterModl_structure, #enterModl_top_level_conditional, #enterModl_top_level_conditional_return, #enterModl_value, #enterModl_value_conditional, #enterModl_value_conditional_return, #enterModl_value_item, #enter_every_rule, #exitModl, #exitModl_array, #exitModl_array_conditional, #exitModl_array_conditional_return, #exitModl_array_item, #exitModl_array_value_item, #exitModl_condition, #exitModl_condition_group, #exitModl_condition_test, #exitModl_map, #exitModl_map_conditional, #exitModl_map_conditional_return, #exitModl_map_item, #exitModl_nb_array, #exitModl_operator, #exitModl_pair, #exitModl_primitive, #exitModl_structure, #exitModl_top_level_conditional, #exitModl_top_level_conditional_return, #exitModl_value, #exitModl_value_conditional, #exitModl_value_conditional_return, #exitModl_value_item, #exit_every_rule, #visit_error_node, #visit_terminal

Methods inherited from MODLParserListener

#enterModl, #enterModl_array, #enterModl_array_conditional, #enterModl_array_conditional_return, #enterModl_array_item, #enterModl_array_value_item, #enterModl_condition, #enterModl_condition_group, #enterModl_condition_test, #enterModl_map, #enterModl_map_conditional, #enterModl_map_conditional_return, #enterModl_map_item, #enterModl_nb_array, #enterModl_operator, #enterModl_pair, #enterModl_structure, #enterModl_top_level_conditional, #enterModl_top_level_conditional_return, #enterModl_value, #enterModl_value_conditional, #enterModl_value_conditional_return, #enterModl_value_item, #exitModl, #exitModl_array, #exitModl_array_conditional, #exitModl_array_conditional_return, #exitModl_array_item, #exitModl_array_value_item, #exitModl_condition, #exitModl_condition_group, #exitModl_condition_test, #exitModl_map, #exitModl_map_conditional, #exitModl_map_conditional_return, #exitModl_map_item, #exitModl_nb_array, #exitModl_operator, #exitModl_pair, #exitModl_primitive, #exitModl_structure, #exitModl_top_level_conditional, #exitModl_top_level_conditional_return, #exitModl_value, #exitModl_value_conditional, #exitModl_value_conditional_return, #exitModl_value_item

Constructor Details

#initialize(global) ⇒ ParsedPrimitive

Returns a new instance of ParsedPrimitive.



659
660
661
662
# File 'lib/modl/parser/parsed.rb', line 659

def initialize(global)
  @global = global
  @constant = false
end

Instance Attribute Details

#constantObject

Returns the value of attribute constant.



656
657
658
# File 'lib/modl/parser/parsed.rb', line 656

def constant
  @constant
end

#falseValObject

Returns the value of attribute falseVal.



653
654
655
# File 'lib/modl/parser/parsed.rb', line 653

def falseVal
  @falseVal
end

#nilValObject

Returns the value of attribute nilVal.



654
655
656
# File 'lib/modl/parser/parsed.rb', line 654

def nilVal
  @nilVal
end

#numberObject

Returns the value of attribute number.



651
652
653
# File 'lib/modl/parser/parsed.rb', line 651

def number
  @number
end

#quotedObject

Returns the value of attribute quoted.



650
651
652
# File 'lib/modl/parser/parsed.rb', line 650

def quoted
  @quoted
end

#stringObject

Returns the value of attribute string.



655
656
657
# File 'lib/modl/parser/parsed.rb', line 655

def string
  @string
end

#textObject

The simple text value rather than the object



657
658
659
# File 'lib/modl/parser/parsed.rb', line 657

def text
  @text
end

#trueValObject

Returns the value of attribute trueVal.



652
653
654
# File 'lib/modl/parser/parsed.rb', line 652

def trueVal
  @trueVal
end

Instance Method Details

#enterModl_primitive(ctx) ⇒ Object



698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
# File 'lib/modl/parser/parsed.rb', line 698

def enterModl_primitive(ctx)
  ctx_number = ctx.NUMBER
  ctx_string = ctx.STRING
  ctx_quoted = ctx.QUOTED
  ctx_null = ctx.NULL
  ctx_true = ctx.TRUE
  ctx_false = ctx.FALSE

  if !ctx_number.nil?
    @number = ParsedNumber.new(ctx_number.text)
    @text = @number.num
  elsif !ctx_string.nil?
    @text = ctx_string.text

    @constant = @text.start_with?('`') && !@text.include?('%') && !@text.include?('`.')
    @string = ParsedString.new(@text)
    @text = @string.string
  elsif !ctx_quoted.nil?
    @constant = true
    @text = ctx_quoted.text
    @quoted = ParsedQuoted.new(@text)
  elsif !ctx_null.nil?
    @nilVal = ParsedNull.instance
    @text = nil
  elsif !ctx_true.nil?
    @trueVal = ParsedTrue.instance
    @text = true
  elsif !ctx_false.nil?
    @falseVal = ParsedFalse.instance
    @text = false
  end
  # ignoring comments!
end

#evaluateObject



680
681
682
683
684
685
# File 'lib/modl/parser/parsed.rb', line 680

def evaluate
  return false if @nilVal
  return false if @falseVal

  true
end

#extract_hashObject



674
675
676
677
678
# File 'lib/modl/parser/parsed.rb', line 674

def extract_hash
  result, _ignore = RefProcessor.deref(@text, @global) unless @constant
  result = @text if @constant
  Substitutions.process result
end

#find_property(key) ⇒ Object



664
665
666
667
668
669
670
671
672
# File 'lib/modl/parser/parsed.rb', line 664

def find_property(key)
  if @string
    user_method = @global.user_method(key)
    if user_method
      return user_method.run(@string.string)
    end
    return StandardMethods.run_method(key, Substitutions.process(@string.string))
  end
end

#value_objObject



687
688
689
690
691
692
693
694
695
696
# File 'lib/modl/parser/parsed.rb', line 687

def value_obj
  return @quoted if @quoted
  return @number if @number
  return @trueVal if @trueVal
  return @falseVal if @falseVal
  return @nilVal if @nilVal
  return @string if @string

  @text
end