Class: Oscal::V1_2_1::PlanOfActionAndMilestones

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

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



16168
16169
16170
16171
16172
16173
16174
# File 'lib/oscal/v1_2_1/all_models.rb', line 16168

def self.of_json(doc, options = {})
  if doc.is_a?(Hash) && doc.key?("plan-of-action-and-milestones")
    super(doc["plan-of-action-and-milestones"], options)
  else
    super(doc, options)
  end
end

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



16181
16182
16183
16184
16185
16186
16187
# File 'lib/oscal/v1_2_1/all_models.rb', line 16181

def self.of_yaml(doc, options = {})
  if doc.is_a?(Hash) && doc.key?("plan-of-action-and-milestones")
    super(doc["plan-of-action-and-milestones"], options)
  else
    super(doc, options)
  end
end

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



16176
16177
16178
16179
# File 'lib/oscal/v1_2_1/all_models.rb', line 16176

def self.to_json(instance, options = {})
  json_str = super(instance, options)
  { "plan-of-action-and-milestones" => JSON.parse(json_str) }.to_json
end

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



16189
16190
16191
16192
16193
# File 'lib/oscal/v1_2_1/all_models.rb', line 16189

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

Instance Method Details

#json_assembly_soa_from_back_matter_back_matter(instance, value) ⇒ Object



16094
16095
16096
16097
16098
16099
16100
16101
16102
# File 'lib/oscal/v1_2_1/all_models.rb', line 16094

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_import_ssp_import_ssp(instance, value) ⇒ Object



16118
16119
16120
16121
16122
16123
16124
16125
16126
# File 'lib/oscal/v1_2_1/all_models.rb', line 16118

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

#json_assembly_soa_from_local_definitions_local_definitions(instance, value) ⇒ Object



16128
16129
16130
16131
16132
16133
16134
16135
16136
# File 'lib/oscal/v1_2_1/all_models.rb', line 16128

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

#json_assembly_soa_from_metadata_metadata(instance, value) ⇒ Object



16070
16071
16072
16073
16074
16075
16076
16077
16078
# File 'lib/oscal/v1_2_1/all_models.rb', line 16070

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



16080
16081
16082
16083
16084
16085
16086
16087
16088
16089
16090
16091
16092
# File 'lib/oscal/v1_2_1/all_models.rb', line 16080

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_import_ssp_import_ssp(instance, doc) ⇒ Object



16104
16105
16106
16107
16108
16109
16110
16111
16112
16113
16114
16115
16116
# File 'lib/oscal/v1_2_1/all_models.rb', line 16104

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

#json_assembly_soa_to_local_definitions_local_definitions(instance, doc) ⇒ Object



16138
16139
16140
16141
16142
16143
16144
16145
16146
16147
16148
16149
16150
# File 'lib/oscal/v1_2_1/all_models.rb', line 16138

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

#json_assembly_soa_to_metadata_metadata(instance, doc) ⇒ Object



16056
16057
16058
16059
16060
16061
16062
16063
16064
16065
16066
16067
16068
# File 'lib/oscal/v1_2_1/all_models.rb', line 16056

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

#json_from_system_id_system_id(instance, value) ⇒ Object



16152
16153
16154
16155
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166
# File 'lib/oscal/v1_2_1/all_models.rb', line 16152

def json_from_system_id_system_id(instance, value)
  if value.is_a?(Array)
    parsed = value.map { |v| Oscal::V1_2_1::SystemId.of_json(v) }
    instance.instance_variable_set(:@system_id, parsed)
  elsif value.is_a?(Hash)
    if value.empty?
      inst = Oscal::V1_2_1::SystemId.new(content: "")
      instance.instance_variable_set(:@system_id, inst)
    else
      instance.instance_variable_set(:@system_id, Oscal::V1_2_1::SystemId.of_json(value))
    end
  elsif value
    instance.instance_variable_set(:@system_id, Oscal::V1_2_1::SystemId.of_json(value))
  end
end

#json_to_system_id_system_id(instance, doc) ⇒ Object



16042
16043
16044
16045
16046
16047
16048
16049
16050
16051
16052
16053
16054
# File 'lib/oscal/v1_2_1/all_models.rb', line 16042

def json_to_system_id_system_id(instance, doc)
  current = instance.instance_variable_get(:@system_id)
  if current.is_a?(Array)
    doc["system-id"] = current.map { |item| item.respond_to?(:content) ? item.content : item }
  elsif current
    if current.is_a?(Lutaml::Model::Serializable)
      doc["system-id"] = Oscal::V1_2_1::SystemId.as_json(current)
    else
      val = current.respond_to?(:content) ? current.content : current
      doc["system-id"] = val
    end
  end
end

#to_json(options = {}) ⇒ Object



16195
16196
16197
# File 'lib/oscal/v1_2_1/all_models.rb', line 16195

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

#to_yaml(options = {}) ⇒ Object



16199
16200
16201
# File 'lib/oscal/v1_2_1/all_models.rb', line 16199

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

#validate_occurrencesObject



16203
16204
16205
# File 'lib/oscal/v1_2_1/all_models.rb', line 16203

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