Sha256: 782b7b74e5f18854026afdfe2eb672b23e709e43f0ec28b036a43eb38e3f30d8

Contents?: true

Size: 770 Bytes

Versions: 2

Compression:

Stored size: 770 Bytes

Contents

# frozen_string_literal: true

module Extract
  class StringValue < Base
    def value
      path = node[:props][:path]
      return formatted_array_values(path) if path.is_a?(Array)

      extract_value(node)
    end

    private

    def extract_value(node_to_extract)
      extractor.extract(node_to_extract)
    end

    def formatted_array_values(paths)
      extractor.format_value(values_from_array(paths), node[:props])
    end

    def values_from_array(paths)
      node_path = node.path

      paths.map do |inner|
        if inner.is_a?(String)
          extract_value(Node.new({ path: inner, link: node[:props][:link] }, node_path))
        else
          StringValue.new(Node.new(inner, node_path), extractor).value
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xml_data_extractor-0.7.0 lib/src/extract/string_value.rb
xml_data_extractor-0.6.0 lib/src/extract/string_value.rb