Sha256: e0091e99e193e194f84d9c01442906763dc217005786feee4790dab7cef303d5

Contents?: true

Size: 930 Bytes

Versions: 11

Compression:

Stored size: 930 Bytes

Contents

# frozen_string_literal: true

require 'openscap_parser/sub'

module OpenscapParser
  module Subs
    def self.included(base)
      base.class_eval do
        def subs
          return [] unless sub_nodes
          @subs ||= sub_nodes.map do |xml|
            Sub.new(parsed_xml: xml)
          end
        end

        def sub_nodes(xpath = './/sub')
          @sub_nodes ||= xpath_nodes(xpath)
        end

        def map_sub_nodes(children, set_values)
          children.map do |child|
            next child if child.name == 'text'
            next replace_sub(Sub.new(parsed_xml: child), set_values) if child.name == 'sub'
            child
          end
        end

        private

        def replace_sub(sub, set_values)
          set_value = set_values.find { |set_value| set_value.id == sub.id }
          return unless set_value
          set_value.parsed_xml.children.first
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
openscap_parser-1.7.0 lib/openscap_parser/subs.rb
openscap_parser-1.6.0 lib/openscap_parser/subs.rb
openscap_parser-1.5.1 lib/openscap_parser/subs.rb
openscap_parser-1.5.0 lib/openscap_parser/subs.rb
openscap_parser-1.4.0 lib/openscap_parser/subs.rb
openscap_parser-1.3.1 lib/openscap_parser/subs.rb
openscap_parser-1.3.0 lib/openscap_parser/subs.rb
openscap_parser-1.2.0 lib/openscap_parser/subs.rb
openscap_parser-1.1.0 lib/openscap_parser/subs.rb
openscap_parser-1.0.2 lib/openscap_parser/subs.rb
openscap_parser-1.0.1 lib/openscap_parser/subs.rb