Sha256: 612ed6b42449b6c61b93fb65caf4528c858eec5d454ed6b885d46a4970aff4c2
Contents?: true
Size: 1.12 KB
Versions: 3
Compression:
Stored size: 1.12 KB
Contents
require_relative "base" require_relative "array_value" require_relative "array_of" require_relative "hash_builder" require_relative "string_value" require_relative "value_builder" require_relative "within" require_relative "expression" module Extract class ValueBuilder < Base def value props = node.props case props when String then value_for_string when Array then value_for_array when Hash then value_for_hash else raise "Invalid kind #{props.class} (#{props})" end end private def value_for_hash props = node.props fixed_value = props[:fixed] return fixed_value if fixed_value return ArrayOf.new(node, extractor).value if props[:array_of] return Within.new(node, extractor).value if props[:within] return StringValue.new(node, extractor).value if (props.keys & %i[path attr]).any? HashBuilder.new(node, extractor).value end def value_for_string StringValue.new(Node.new({ path: node.props }, node.path), extractor).value end def value_for_array ArrayValue.new(node, extractor).value end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
xml_data_extractor-0.3.0 | lib/src/extract/value_builder.rb |
xml_data_extractor-0.2.0 | lib/src/extract/value_builder.rb |
xml_data_extractor-0.1.0 | lib/src/extract/value_builder.rb |