Class: Oscal::V1_2_1::ComponentDefinition

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



11898
11899
11900
# File 'lib/oscal/v1_2_1/all_models.rb', line 11898

def self.metaschema_constraints
  @metaschema_constraints
end

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



11863
11864
11865
11866
11867
11868
11869
# File 'lib/oscal/v1_2_1/all_models.rb', line 11863

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

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



11876
11877
11878
11879
11880
11881
11882
# File 'lib/oscal/v1_2_1/all_models.rb', line 11876

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

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



11871
11872
11873
11874
# File 'lib/oscal/v1_2_1/all_models.rb', line 11871

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

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



11884
11885
11886
11887
11888
# File 'lib/oscal/v1_2_1/all_models.rb', line 11884

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

Instance Method Details

#json_assembly_soa_from_back_matter_back_matter(instance, value) ⇒ Object



11839
11840
11841
11842
11843
11844
11845
11846
11847
# File 'lib/oscal/v1_2_1/all_models.rb', line 11839

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



11815
11816
11817
11818
11819
11820
11821
11822
11823
# File 'lib/oscal/v1_2_1/all_models.rb', line 11815

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



11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
# File 'lib/oscal/v1_2_1/all_models.rb', line 11849

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



11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
# File 'lib/oscal/v1_2_1/all_models.rb', line 11825

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



11890
11891
11892
# File 'lib/oscal/v1_2_1/all_models.rb', line 11890

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

#to_yaml(options = {}) ⇒ Object



11894
11895
11896
# File 'lib/oscal/v1_2_1/all_models.rb', line 11894

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

#validate_constraintsObject



11902
11903
11904
11905
# File 'lib/oscal/v1_2_1/all_models.rb', line 11902

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

#validate_occurrencesObject



11907
11908
11909
# File 'lib/oscal/v1_2_1/all_models.rb', line 11907

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