Sha256: eaac72268c9b64d21d030f9fae5cf057452d3314dfa097570020b0e330c8a6d3

Contents?: true

Size: 619 Bytes

Versions: 60

Compression:

Stored size: 619 Bytes

Contents

module Relaton
  module ElementFinder
    attr_reader :document

    def find_text(xpath, element = nil)
      find(xpath, element)&.text
    end

    def find(xpath, element = nil)
      (element || document).at(apply_namespace(xpath))
    end

    def find_xpath(xpath, element = nil)
      element&.xpath(apply_namespace(xpath))
    end

    def apply_namespace(xpath)
      xpath.
        gsub(%r{/([a-zA-Z])}, "/xmlns:\\1").
        gsub(%r{::([a-zA-Z])}, "::xmlns:\\1").
        gsub(%r{\[([a-zA-Z][a-z0-9A-Z@/]* ?=)}, "[xmlns:\\1").
        gsub(%r{\[([a-zA-Z][a-z0-9A-Z@/]*\])}, "[xmlns:\\1")
    end
  end
end

Version data entries

60 entries across 59 versions & 2 rubygems

Version Path
relaton-cli-1.5.0 lib/relaton/element_finder.rb
relaton-cli-1.5.pre lib/relaton/element_finder.rb
relaton-cli-1.4.0 lib/relaton/element_finder.rb
relaton-cli-1.3.0 lib/relaton/element_finder.rb
metanorma-cli-1.3.4 gems/ruby/2.6.0/gems/relaton-cli-1.2.1/lib/relaton/element_finder.rb
metanorma-cli-1.3.4 gems/ruby/2.6.0/gems/relaton-cli-1.2.0/lib/relaton/element_finder.rb
relaton-cli-1.2.1 lib/relaton/element_finder.rb
metanorma-cli-1.3.3.1 gems/ruby/2.6.0/gems/relaton-cli-1.2.0/lib/relaton/element_finder.rb
relaton-cli-1.2.0 lib/relaton/element_finder.rb
relaton-cli-1.1.4 lib/relaton/element_finder.rb
relaton-cli-1.1.3 lib/relaton/element_finder.rb
relaton-cli-1.1.2 lib/relaton/element_finder.rb
relaton-cli-1.1.1 lib/relaton/element_finder.rb
relaton-cli-1.1.0 lib/relaton/element_finder.rb
relaton-cli-1.0.3 lib/relaton/element_finder.rb
relaton-cli-1.0.2 lib/relaton/element_finder.rb
relaton-cli-1.0.1 lib/relaton/element_finder.rb
relaton-cli-1.0.0 lib/relaton/element_finder.rb
relaton-cli-0.9.0 lib/relaton/element_finder.rb
relaton-cli-0.8.7 lib/relaton/element_finder.rb