Class: Oscal::BaseClass

Inherits:
Object
  • Object
show all
Includes:
Serializer
Defined in:
lib/oscal/base_class.rb

Constant Summary collapse

KEY =
%i(val)

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Serializer

included, #to_h, #to_json, #to_xml, #to_yaml

Constructor Details

#initialize(options = {}) ⇒ BaseClass

Returns a new instance of BaseClass.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/oscal/base_class.rb', line 23

def initialize(options = {})
  klass = self.class

  unless options.is_a? Hash
    options = { klass::KEY.first.to_s => options }
  end

  options.each_pair.each do |key, val|
    key_name = key.gsub("-", "_")
    key_name = "klass" if key == "class"

    unless klass::KEY.include?(key_name.to_sym)
      raise UnknownAttributeError.new(
        "Unknown key `#{key}` in #{klass.name}",
      )
    end

    val = set_value(key_name, val)

    send("#{key_name}=", val)
  end
end

Class Method Details

.wrap(obj) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/oscal/base_class.rb', line 13

def self.wrap(obj)
  klass = self
  return obj if obj.is_a? klass
  return klass.new(obj) unless obj.is_a? Array

  obj.map do |x|
    klass.wrap(x)
  end
end

Instance Method Details

#set_value(_key_name, val) ⇒ Object



46
47
48
# File 'lib/oscal/base_class.rb', line 46

def set_value(_key_name, val)
  val
end