Sha256: cf1c08db6e08ed3b747352ea8140878253925d67c0df3948368a2952b4b2137c

Contents?: true

Size: 1.16 KB

Versions: 5

Compression:

Stored size: 1.16 KB

Contents

module ScaffoldParser
  module Scaffolders
    class XSD
      class Parser
        module Handlers
          class ModuleInclude
            attr_reader :ref, :source

            def initialize(source)
              @source = source
              @ref = @source.ref&.camelize
            end

            def full_ref
              if ref.include? ':'
                [ref.split(':')[0], 'groups', ref.split(':')[1]].compact.map(&:camelize).join('::')
              else
                [source.xmlns_prefix, 'groups', ref].compact.map(&:camelize).join('::')
              end
            end

            def sequence(_)
              Sequence.new self
            end

            def complex_type(new_source)
              if new_source.has_name?
                STACK.push Klass.new(new_source, self)
              else
                self
              end
            end

            def element(new_source)
              if new_source.has_name?
                new_class = STACK.push Klass.new(new_source, self)

                SubmodelMethod.new(new_source, new_class.name_with_prefix)
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
scaffold_parser-0.10.0 lib/scaffold_parser/scaffolders/xsd/parser/handlers/module_include.rb
scaffold_parser-0.9.1 lib/scaffold_parser/scaffolders/xsd/parser/handlers/module_include.rb
scaffold_parser-0.9.0 lib/scaffold_parser/scaffolders/xsd/parser/handlers/module_include.rb
scaffold_parser-0.8.0 lib/scaffold_parser/scaffolders/xsd/parser/handlers/module_include.rb
scaffold_parser-0.7.0 lib/scaffold_parser/scaffolders/xsd/parser/handlers/module_include.rb