Class: Lutaml::Xsd::SchemaResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/xsd/schema_resolver.rb

Overview

Handles serialization of parsed Schema objects for package resolution Uses lutaml-model’s built-in to_yaml/from_yaml methods

Instance Method Summary collapse

Instance Method Details

#load_serialized_schemas(_repository, serialized_schemas) ⇒ Object

Deserialize schemas and load into repository

Parameters:

  • repository (SchemaRepository)

    Repository to load into

  • serialized_schemas (Array<Hash>)

    Serialized schema data



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/lutaml/xsd/schema_resolver.rb', line 32

def load_serialized_schemas(_repository, serialized_schemas)
  return unless serialized_schemas&.any?

  serialized_schemas.each do |schema_data|
    # Create SerializedSchema from hash data
    file_path = schema_data["file_path"] || schema_data[:file_path]
    target_ns = schema_data["target_namespace"] || schema_data[:target_namespace]
    data = schema_data["schema_data"] || schema_data[:schema_data]

    serialized = SerializedSchema.new(
      file_path: file_path,
      target_namespace: target_ns,
      schema_data: data,
    )

    # Deserialize to Schema object
    schema = serialized.to_schema

    # Add to global processed schemas cache
    Lutaml::Xml::Schema::Xsd::Schema.schema_processed(file_path, schema)
  end
end

#resolve_schemas(repository) ⇒ Array<SerializedSchema>

Serialize all schemas from a repository

Parameters:

Returns:



11
12
13
14
15
16
17
# File 'lib/lutaml/xsd/schema_resolver.rb', line 11

def resolve_schemas(repository)
  all_schemas = repository.send(:get_all_processed_schemas)

  all_schemas.map do |file_path, schema|
    serialize_schema(file_path, schema)
  end
end

#serialize_schema(file_path, schema) ⇒ SerializedSchema

Serialize a single schema

Parameters:

  • file_path (String)

    Path to schema file

  • schema (Schema)

    Parsed schema object

Returns:



23
24
25
26
27
# File 'lib/lutaml/xsd/schema_resolver.rb', line 23

def serialize_schema(file_path, schema)
  # Use SerializedSchema which handles Schema complexity
  # (avoiding circular references from imports/includes)
  SerializedSchema.from_schema(file_path, schema)
end