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



623
624
625
626
# File 'lib/modl/parser/parsed.rb', line 623

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

Instance Attribute Details

#constantObject

Returns the value of attribute constant.



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

def constant
  @constant
end

#falseValObject

Returns the value of attribute falseVal.



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

def falseVal
  @falseVal
end

#nilValObject

Returns the value of attribute nilVal.



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

def nilVal
  @nilVal
end

#numberObject

Returns the value of attribute number.



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

def number
  @number
end

#quotedObject

Returns the value of attribute quoted.



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

def quoted
  @quoted
end

#stringObject

Returns the value of attribute string.



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

def string
  @string
end

#textObject

The simple text value rather than the object



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

def text
  @text
end

#trueValObject

Returns the value of attribute trueVal.



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

def trueVal
  @trueVal
end

Instance Method Details

#enterModl_primitive(ctx) ⇒ Object



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
694
695
# File 'lib/modl/parser/parsed.rb', line 662

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



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

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

  true
end

#extract_hashObject



638
639
640
641
642
# File 'lib/modl/parser/parsed.rb', line 638

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

#find_property(key) ⇒ Object



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

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



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

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