class Treetop::Runtime::SyntaxNode
We extend the SyntaxNode
class to include a hash of meta data. Individual rules can define meta_data_item method that must return a hash that is merged with the hash data for the entire query.
Public Instance Methods
meta_data(hash = {})
click to toggle source
# File lib/canql/treetop/extensions.rb, line 9 def meta_data(hash = {}) hash.merge!(meta_data_item) if respond_to?(:meta_data_item) if nonterminal? elements.each do |element| element.meta_data(hash) end end hash end
reverse_scan_for_marker(marker)
click to toggle source
# File lib/canql/treetop/extensions.rb, line 27 def reverse_scan_for_marker(marker) marker_value = reverse_marker_scanner(self, marker) return if marker_value.nil? || marker_value.empty? marker_value end
text_values_for_marker(marker)
click to toggle source
# File lib/canql/treetop/extensions.rb, line 21 def text_values_for_marker(marker) list = [] text_values_for_marker_scanner(self, marker, list) list end
Private Instance Methods
reverse_marker_scanner(root, marker)
click to toggle source
# File lib/canql/treetop/extensions.rb, line 44 def reverse_marker_scanner(root, marker) return if root.nil? || root.elements.nil? marker_value = root.send(marker).text_value if root.respond_to?(marker) if marker_value.nil? || marker_value.empty? marker_value = reverse_marker_scanner(root.parent, marker) end marker_value end
text_values_for_marker_scanner(root, marker, list)
click to toggle source
# File lib/canql/treetop/extensions.rb, line 35 def text_values_for_marker_scanner(root, marker, list) return if root.elements.nil? root.elements.each do |e| list << e.send(marker).text_value if e.respond_to?(marker) text_values_for_marker_scanner(e, marker, list) end list end