Sha256: 347083c51d1bb1c61d9bf08dd73d3b61f75401360872a0414afb3ef1030bf25e

Contents?: true

Size: 1.32 KB

Versions: 30

Compression:

Stored size: 1.32 KB

Contents

require "nokogiri"
require "htmlentities"
require "lutaml/uml/has_attributes"
require "lutaml/uml/document"

require "shale/schema"

module Lutaml
  module Xml
    module Parsers
      # Class for parsing .xml schema files into ::Lutaml::Uml::Document
      class Xml
        def self.load_schema(schema, root_schema)
          result = Shale::Schema.from_xml([schema])

          result.values.each do |klass|
            # Temporary solution will update in the parser
            klass = klass.gsub(/^require.*?\n/, "")
            klass = klass.gsub(/< Shale::Mapper/, "< Lutaml::Xml::Mapper")

            eval(klass, TOPLEVEL_BINDING)
          end

          @@root_schema = root_schema
        end

        def self.parse(file)
          new(file, @@root_schema).parse
        end

        def initialize(file, root_schema)
          @file = file
          @root_schema = root_schema
          @root_class = Object.const_get(root_schema)
        end

        def parse
          doc = File.read(@file)

          @root_class.from_xml(doc)
        end

        private

        def load_schema(schema)
          result = Shale::Schema.from_xml([schema])

          result.values.each do |klass|
            klass = klass.gsub(/^require.*?\n/, "")

            eval(klass, TOPLEVEL_BINDING)
          end
        end
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
lutaml-0.9.27 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.26 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.25 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.24 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.23 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.22 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.21 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.20 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.19 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.18 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.17 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.16 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.15 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.14 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.13 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.12 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.11 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.10 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.9 lib/lutaml/xml/parsers/xml.rb
lutaml-0.9.8 lib/lutaml/xml/parsers/xml.rb