Class: Oscal::V1_2_1::Catalog

Inherits:
Base
  • Object
show all
Defined in:
lib/oscal/v1_2_1/all_models.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

lutaml_default_register

Class Method Details

.metaschema_constraintsObject



9782
9783
9784
# File 'lib/oscal/v1_2_1/all_models.rb', line 9782

def self.metaschema_constraints
  @metaschema_constraints
end

.of_json(doc, options = {}) ⇒ Object



9747
9748
9749
9750
9751
9752
9753
# File 'lib/oscal/v1_2_1/all_models.rb', line 9747

def self.of_json(doc, options = {})
  if doc.is_a?(Hash) && doc.key?("catalog")
    super(doc["catalog"], options)
  else
    super(doc, options)
  end
end

.of_yaml(doc, options = {}) ⇒ Object



9760
9761
9762
9763
9764
9765
9766
# File 'lib/oscal/v1_2_1/all_models.rb', line 9760

def self.of_yaml(doc, options = {})
  if doc.is_a?(Hash) && doc.key?("catalog")
    super(doc["catalog"], options)
  else
    super(doc, options)
  end
end

.to_json(instance, options = {}) ⇒ Object



9755
9756
9757
9758
# File 'lib/oscal/v1_2_1/all_models.rb', line 9755

def self.to_json(instance, options = {})
  json_str = super(instance, options)
  { "catalog" => JSON.parse(json_str) }.to_json
end

.to_yaml(instance, options = {}) ⇒ Object



9768
9769
9770
9771
9772
# File 'lib/oscal/v1_2_1/all_models.rb', line 9768

def self.to_yaml(instance, options = {})
  yaml_str = super(instance, options)
  data = YAML.safe_load(yaml_str, permitted_classes: [Date, Time, Symbol])
  { "catalog" => data }.to_yaml
end

Instance Method Details

#json_assembly_soa_from_back_matter_back_matter(instance, value) ⇒ Object



9713
9714
9715
9716
9717
9718
9719
9720
9721
# File 'lib/oscal/v1_2_1/all_models.rb', line 9713

def json_assembly_soa_from_back_matter_back_matter(instance, value)
  items = case value
          when Hash then [value]
          when Array then value
          else return
          end
  parsed = items.map { |item| Oscal::V1_2_1::BackMatter.of_json(item.is_a?(Hash) ? item : {}) }
  instance.instance_variable_set(:@back_matter, parsed)
end

#json_assembly_soa_from_metadata_metadata(instance, value) ⇒ Object



9723
9724
9725
9726
9727
9728
9729
9730
9731
# File 'lib/oscal/v1_2_1/all_models.rb', line 9723

def (instance, value)
  items = case value
          when Hash then [value]
          when Array then value
          else return
          end
  parsed = items.map { |item| Oscal::V1_2_1::Metadata.of_json(item.is_a?(Hash) ? item : {}) }
  instance.instance_variable_set(:@metadata, parsed)
end

#json_assembly_soa_to_back_matter_back_matter(instance, doc) ⇒ Object



9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
# File 'lib/oscal/v1_2_1/all_models.rb', line 9733

def json_assembly_soa_to_back_matter_back_matter(instance, doc)
  current = instance.instance_variable_get(:@back_matter)
  if current.is_a?(Array)
    result = current.map do |item|
      if item.is_a?(Lutaml::Model::Serializable)
        Oscal::V1_2_1::BackMatter.as_json(item)
      else
        item
      end
    end
    doc["back-matter"] = result.length == 1 ? result.first : result
  end
end

#json_assembly_soa_to_metadata_metadata(instance, doc) ⇒ Object



9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
# File 'lib/oscal/v1_2_1/all_models.rb', line 9699

def (instance, doc)
  current = instance.instance_variable_get(:@metadata)
  if current.is_a?(Array)
    result = current.map do |item|
      if item.is_a?(Lutaml::Model::Serializable)
        Oscal::V1_2_1::Metadata.as_json(item)
      else
        item
      end
    end
    doc["metadata"] = result.length == 1 ? result.first : result
  end
end

#to_json(options = {}) ⇒ Object



9774
9775
9776
# File 'lib/oscal/v1_2_1/all_models.rb', line 9774

def to_json(options = {})
  self.class.to_json(self, options)
end

#to_yaml(options = {}) ⇒ Object



9778
9779
9780
# File 'lib/oscal/v1_2_1/all_models.rb', line 9778

def to_yaml(options = {})
  self.class.to_yaml(self, options)
end

#validate_constraintsObject



9786
9787
9788
9789
# File 'lib/oscal/v1_2_1/all_models.rb', line 9786

def validate_constraints
  validator = Metaschema::ConstraintValidator.new
  validator.validate(self, self.class.metaschema_constraints)
end

#validate_occurrencesObject



9791
9792
9793
# File 'lib/oscal/v1_2_1/all_models.rb', line 9791

def validate_occurrences
  Metaschema::ConstraintValidator.validate_occurrences(self, self.class.instance_variable_get(:@occurrence_constraints))
end