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.



621
622
623
624
# File 'lib/modl/parser/parsed.rb', line 621

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

Instance Attribute Details

#constantObject

Returns the value of attribute constant.



618
619
620
# File 'lib/modl/parser/parsed.rb', line 618

def constant
  @constant
end

#falseValObject

Returns the value of attribute falseVal.



615
616
617
# File 'lib/modl/parser/parsed.rb', line 615

def falseVal
  @falseVal
end

#nilValObject

Returns the value of attribute nilVal.



616
617
618
# File 'lib/modl/parser/parsed.rb', line 616

def nilVal
  @nilVal
end

#numberObject

Returns the value of attribute number.



613
614
615
# File 'lib/modl/parser/parsed.rb', line 613

def number
  @number
end

#quotedObject

Returns the value of attribute quoted.



612
613
614
# File 'lib/modl/parser/parsed.rb', line 612

def quoted
  @quoted
end

#stringObject

Returns the value of attribute string.



617
618
619
# File 'lib/modl/parser/parsed.rb', line 617

def string
  @string
end

#textObject

The simple text value rather than the object



619
620
621
# File 'lib/modl/parser/parsed.rb', line 619

def text
  @text
end

#trueValObject

Returns the value of attribute trueVal.



614
615
616
# File 'lib/modl/parser/parsed.rb', line 614

def trueVal
  @trueVal
end

Instance Method Details

#enterModl_primitive(ctx) ⇒ Object



660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
# File 'lib/modl/parser/parsed.rb', line 660

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?('`.')
    @text = Parsed.additional_string_processing(@text)
    @string = ParsedString.new(@text)
    @text = @string.string
  elsif !ctx_quoted.nil?
    @constant = true
    @text = Sutil.toptail(ctx_quoted.text) # remove the quotes
    @text = Parsed.additional_string_processing(@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



642
643
644
645
646
647
# File 'lib/modl/parser/parsed.rb', line 642

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

  true
end

#extract_hashObject



636
637
638
639
640
# File 'lib/modl/parser/parsed.rb', line 636

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

#find_property(key) ⇒ Object



626
627
628
629
630
631
632
633
634
# File 'lib/modl/parser/parsed.rb', line 626

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, @string.string)
  end
end

#value_objObject



649
650
651
652
653
654
655
656
657
658
# File 'lib/modl/parser/parsed.rb', line 649

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