oscal 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +15 -0
- data/.github/workflows/release.yml +24 -0
- data/.gitignore +11 -0
- data/.gitmodules +3 -0
- data/.hound.yml +5 -0
- data/.rubocop.yml +10 -0
- data/Gemfile +2 -0
- data/README.adoc +63 -0
- data/bin/console +30 -0
- data/bin/setup +8 -0
- data/exe/convert2oscalyaml.rb +560 -0
- data/lib/oscal/add.rb +25 -0
- data/lib/oscal/address.rb +21 -0
- data/lib/oscal/address_line.rb +10 -0
- data/lib/oscal/alter.rb +21 -0
- data/lib/oscal/back_matter.rb +19 -0
- data/lib/oscal/base64_object.rb +10 -0
- data/lib/oscal/base_class.rb +49 -0
- data/lib/oscal/catalog.rb +50 -10
- data/lib/oscal/choice.rb +10 -0
- data/lib/oscal/citation.rb +21 -0
- data/lib/oscal/combine.rb +10 -0
- data/lib/oscal/common_utils.rb +35 -0
- data/lib/oscal/constraint.rb +19 -0
- data/lib/oscal/control.rb +20 -31
- data/lib/oscal/custom.rb +21 -0
- data/lib/oscal/document_id.rb +10 -0
- data/lib/oscal/email_address.rb +10 -0
- data/lib/oscal/exclude_control.rb +21 -0
- data/lib/oscal/external_id.rb +10 -0
- data/lib/oscal/group.rb +26 -35
- data/lib/oscal/guideline.rb +10 -0
- data/lib/oscal/hash_object.rb +10 -0
- data/lib/oscal/import_object.rb +21 -0
- data/lib/oscal/include_control.rb +21 -0
- data/lib/oscal/insert_control.rb +21 -0
- data/lib/oscal/link.rb +10 -0
- data/lib/oscal/location.rb +30 -0
- data/lib/oscal/location_uuid.rb +10 -0
- data/lib/oscal/matching.rb +10 -0
- data/lib/oscal/member_of_organization.rb +10 -0
- data/lib/oscal/merge.rb +19 -0
- data/lib/oscal/metadata_block.rb +28 -14
- data/lib/oscal/modify.rb +21 -0
- data/lib/oscal/parameter.rb +22 -20
- data/lib/oscal/part.rb +13 -22
- data/lib/oscal/party.rb +35 -0
- data/lib/oscal/party_uuid.rb +10 -0
- data/lib/oscal/profile.rb +32 -7
- data/lib/oscal/property.rb +3 -25
- data/lib/oscal/remove.rb +10 -0
- data/lib/oscal/resource.rb +28 -0
- data/lib/oscal/responsible_party.rb +23 -0
- data/lib/oscal/revision.rb +22 -0
- data/lib/oscal/rlink.rb +19 -0
- data/lib/oscal/role.rb +21 -0
- data/lib/oscal/select.rb +19 -0
- data/lib/oscal/serializer.rb +17 -4
- data/lib/oscal/set_parameter.rb +30 -0
- data/lib/oscal/telephone_number.rb +10 -0
- data/lib/oscal/test.rb +10 -0
- data/lib/oscal/url.rb +10 -0
- data/lib/oscal/value.rb +36 -0
- data/lib/oscal/version.rb +1 -1
- data/lib/oscal/with_id.rb +39 -0
- data/lib/oscal.rb +1 -13
- data/oscal.gemspec +9 -11
- data/spec/oscal/catalog_spec.rb +39 -0
- data/spec/oscal_spec.rb +7 -0
- data/spec/spec_helper.rb +15 -0
- metadata +65 -9
- data/lib/oscal/component.rb +0 -14
- data/lib/oscal/prose.rb +0 -13
- data/lib/oscal/statement.rb +0 -12
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative "serializer"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class BaseClass
|
5
|
+
include Serializer
|
6
|
+
|
7
|
+
KEY = %i(val)
|
8
|
+
|
9
|
+
attr_accessor *KEY
|
10
|
+
attr_serializable *KEY
|
11
|
+
|
12
|
+
def self.wrap(obj)
|
13
|
+
klass = self
|
14
|
+
return obj if obj.is_a? klass
|
15
|
+
return klass.new(obj) unless obj.is_a? Array
|
16
|
+
|
17
|
+
obj.map do |x|
|
18
|
+
klass.wrap(x)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(options = {})
|
23
|
+
klass = self.class
|
24
|
+
|
25
|
+
unless options.is_a? Hash
|
26
|
+
options = {klass::KEY.first.to_s => options}
|
27
|
+
end
|
28
|
+
|
29
|
+
options.each_pair.each do |key, val|
|
30
|
+
key_name = key.gsub("-", "_")
|
31
|
+
key_name = 'klass' if key == 'class'
|
32
|
+
|
33
|
+
unless klass::KEY.include?(key_name.to_sym)
|
34
|
+
raise UnknownAttributeError.new(
|
35
|
+
"Unknown key `#{key}` in #{klass.name}"
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
val = set_value(key_name, val)
|
40
|
+
|
41
|
+
send("#{key_name}=", val)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def set_value(key_name, val)
|
46
|
+
val
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/oscal/catalog.rb
CHANGED
@@ -1,22 +1,62 @@
|
|
1
|
+
require "date"
|
2
|
+
require_relative "serializer"
|
3
|
+
require_relative "common_utils"
|
4
|
+
|
1
5
|
module Oscal
|
2
6
|
class Catalog
|
3
|
-
|
7
|
+
include Serializer
|
8
|
+
include CommonUtils
|
9
|
+
|
10
|
+
KEY = %i(uuid metadata params controls groups back_matter)
|
11
|
+
attr_accessor *KEY
|
12
|
+
attr_serializable *KEY
|
13
|
+
|
14
|
+
def initialize(uuid, metadata, params, controls, groups, back_matter)
|
15
|
+
@uuid = uuid
|
16
|
+
@metadata = MetadataBlock.new(metadata)
|
17
|
+
@params = Parameter.wrap(params) if params
|
18
|
+
@controls = Control.wrap(controls) if controls
|
19
|
+
@groups = Group.wrap(groups) if groups
|
20
|
+
@back_matter = BackMatter.wrap(back_matter) if back_matter
|
4
21
|
|
5
|
-
|
6
|
-
@metadata = MetadataBlock.new(metadata)
|
7
|
-
@groups = Group.wrap(groups)
|
22
|
+
@all_controls = []
|
8
23
|
end
|
9
24
|
|
10
25
|
def self.load_from_yaml(path)
|
11
|
-
yaml_data
|
26
|
+
yaml_data = safe_load_yaml(path)
|
27
|
+
yaml_catalog = yaml_data["catalog"]
|
12
28
|
|
13
|
-
|
29
|
+
uuid = yaml_catalog['uuid']
|
30
|
+
metadata = yaml_catalog['metadata']
|
31
|
+
params = yaml_catalog['params']
|
32
|
+
controls = yaml_catalog['controls']
|
33
|
+
groups = yaml_catalog['groups']
|
34
|
+
back_matter = yaml_catalog['back-matter']
|
14
35
|
|
15
|
-
metadata
|
16
|
-
|
36
|
+
Catalog.new(uuid, metadata, params, controls, groups, back_matter)
|
37
|
+
end
|
17
38
|
|
18
|
-
|
39
|
+
def get_all_controls
|
40
|
+
append_all_control_group(self)
|
41
|
+
@all_controls.uniq
|
19
42
|
end
|
20
|
-
end
|
21
43
|
|
44
|
+
def append_all_control_group(obj)
|
45
|
+
if obj.to_s.match(/Oscal::Control/)
|
46
|
+
@all_controls << obj
|
47
|
+
end
|
48
|
+
|
49
|
+
if obj.respond_to?(:controls) && !obj.controls.nil?
|
50
|
+
obj.controls.each do |c|
|
51
|
+
append_all_control_group(c)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
if obj.respond_to?(:groups) && !obj.groups.nil?
|
56
|
+
obj.groups.each do |g|
|
57
|
+
append_all_control_group(g)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
22
62
|
end
|
data/lib/oscal/choice.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class Citation < Oscal::BaseClass
|
5
|
+
KEY = %i(text props links)
|
6
|
+
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
9
|
+
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'props'
|
13
|
+
Property.wrap(val)
|
14
|
+
when 'links'
|
15
|
+
Link.wrap(val)
|
16
|
+
else
|
17
|
+
val
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Oscal
|
2
|
+
module CommonUtils
|
3
|
+
def find_object_by_id(id, obj = self, attribute_name = :id)
|
4
|
+
if obj.respond_to?(attribute_name) && obj.send(attribute_name) == id
|
5
|
+
return obj
|
6
|
+
end
|
7
|
+
|
8
|
+
res = nil
|
9
|
+
|
10
|
+
obj.instance_variables.each do |ins_var|
|
11
|
+
val = obj.send(ins_var.to_s.delete('@').to_sym)
|
12
|
+
|
13
|
+
if val.is_a? Array
|
14
|
+
val.each do |v|
|
15
|
+
res = find_object_by_id(id, v, attribute_name.to_sym)
|
16
|
+
break unless res.nil?
|
17
|
+
end
|
18
|
+
else
|
19
|
+
res = find_object_by_id(id, val, attribute_name.to_sym)
|
20
|
+
end
|
21
|
+
|
22
|
+
break unless res.nil?
|
23
|
+
end
|
24
|
+
|
25
|
+
res
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.included(klass)
|
29
|
+
klass.extend(ClassMethods)
|
30
|
+
end
|
31
|
+
|
32
|
+
module ClassMethods
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class Constraint < Oscal::BaseClass
|
5
|
+
KEY = %i(description tests)
|
6
|
+
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
9
|
+
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'test'
|
13
|
+
Test.wrap(val)
|
14
|
+
else
|
15
|
+
val
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/oscal/control.rb
CHANGED
@@ -1,37 +1,26 @@
|
|
1
|
-
|
2
|
-
class Control
|
3
|
-
KEY = %i(id title params props parts)
|
4
|
-
attr_accessor *KEY
|
5
|
-
|
6
|
-
def self.wrap(obj)
|
7
|
-
return obj if obj.is_a? Control
|
8
|
-
return Control.new(obj) unless obj.is_a? Array
|
1
|
+
require_relative "base_class"
|
9
2
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
def initialize(options={})
|
16
|
-
options.each_pair.each do |key,val|
|
17
|
-
key_name = key.gsub('-','_')
|
18
|
-
|
19
|
-
unless KEY.include?(key_name.to_sym)
|
20
|
-
raise UnknownAttributeError.new("Unknown key `#{key}` in Control")
|
21
|
-
end
|
3
|
+
module Oscal
|
4
|
+
class Control < Oscal::BaseClass
|
5
|
+
KEY = %i(id klass title params props links parts controls)
|
22
6
|
|
23
|
-
|
24
|
-
|
25
|
-
Parameter.wrap(val)
|
26
|
-
when 'props'
|
27
|
-
Property.wrap(val)
|
28
|
-
when 'parts'
|
29
|
-
Part.wrap(val)
|
30
|
-
else
|
31
|
-
val
|
32
|
-
end
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
33
9
|
|
34
|
-
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'params'
|
13
|
+
Parameter.wrap(val)
|
14
|
+
when 'props'
|
15
|
+
Property.wrap(val)
|
16
|
+
when 'links'
|
17
|
+
Link.wrap(val)
|
18
|
+
when 'parts'
|
19
|
+
Part.wrap(val)
|
20
|
+
when 'controls'
|
21
|
+
Control.wrap(val)
|
22
|
+
else
|
23
|
+
val
|
35
24
|
end
|
36
25
|
end
|
37
26
|
end
|
data/lib/oscal/custom.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class Custom < Oscal::BaseClass
|
5
|
+
KEY = %i(groups insert_controls)
|
6
|
+
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
9
|
+
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'groups'
|
13
|
+
Group.wrap(val)
|
14
|
+
when 'insert_controls'
|
15
|
+
InsertControl.wrap(val)
|
16
|
+
else
|
17
|
+
val
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class ExcludeControl < Oscal::BaseClass
|
5
|
+
KEY = %i(with_child_controls with_ids matching)
|
6
|
+
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
9
|
+
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'with_ids'
|
13
|
+
WithId.wrap(val)
|
14
|
+
when 'matching'
|
15
|
+
Matching.wrap(val)
|
16
|
+
else
|
17
|
+
val
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/oscal/group.rb
CHANGED
@@ -1,41 +1,32 @@
|
|
1
|
-
|
2
|
-
class Group
|
3
|
-
KEYS = %i(id class title controls props parts groups)
|
4
|
-
attr_accessor *KEYS
|
5
|
-
|
6
|
-
def self.wrap(obj)
|
7
|
-
return obj if obj.is_a? Group
|
8
|
-
return Group.new(obj) unless obj.is_a? Array
|
9
|
-
|
10
|
-
obj.map do |x|
|
11
|
-
Group.wrap(x)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def initialize(options={})
|
16
|
-
options.each_pair.each do |key,val|
|
17
|
-
key_name = key.gsub('-','_')
|
1
|
+
require_relative "base_class"
|
18
2
|
|
19
|
-
|
20
|
-
|
21
|
-
|
3
|
+
module Oscal
|
4
|
+
class Group < Oscal::BaseClass
|
5
|
+
KEY = %i(id klass title params props links parts groups
|
6
|
+
controls insert_controls)
|
22
7
|
|
23
|
-
|
24
|
-
|
25
|
-
Group.wrap(val)
|
26
|
-
when 'params'
|
27
|
-
Parameter.wrap(val)
|
28
|
-
when 'props'
|
29
|
-
Property.wrap(val)
|
30
|
-
when 'parts'
|
31
|
-
Part.wrap(val)
|
32
|
-
else
|
33
|
-
val
|
34
|
-
end
|
8
|
+
attr_accessor *KEY
|
9
|
+
attr_serializable *KEY
|
35
10
|
|
36
|
-
|
11
|
+
def set_value(key_name, val)
|
12
|
+
case key_name
|
13
|
+
when 'params'
|
14
|
+
Parameter.wrap(val)
|
15
|
+
when 'props'
|
16
|
+
Property.wrap(val)
|
17
|
+
when 'links'
|
18
|
+
Link.wrap(val)
|
19
|
+
when 'parts'
|
20
|
+
Part.wrap(val)
|
21
|
+
when 'groups'
|
22
|
+
Group.wrap(val)
|
23
|
+
when 'controls'
|
24
|
+
Control.wrap(val)
|
25
|
+
when 'insert_controls'
|
26
|
+
InsertControl.wrap(val)
|
27
|
+
else
|
28
|
+
val
|
37
29
|
end
|
38
30
|
end
|
39
|
-
|
40
31
|
end
|
41
|
-
end
|
32
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class ImportObject < Oscal::BaseClass
|
5
|
+
KEY = %i(href include_all include_controls exclude_controls)
|
6
|
+
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
9
|
+
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'include_controls'
|
13
|
+
IncludeControl.wrap(val)
|
14
|
+
when 'exclude_controls'
|
15
|
+
ExcludeControl.wrap(val)
|
16
|
+
else
|
17
|
+
val
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class IncludeControl < Oscal::BaseClass
|
5
|
+
KEY = %i(with_child_controls with_ids matching)
|
6
|
+
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
9
|
+
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'with_ids'
|
13
|
+
WithId.wrap(val)
|
14
|
+
when 'matching'
|
15
|
+
Matching.wrap(val)
|
16
|
+
else
|
17
|
+
val
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class InsertControl < Oscal::BaseClass
|
5
|
+
KEY = %i(order include_all include_controls exclude_controls)
|
6
|
+
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
9
|
+
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'include_controls'
|
13
|
+
IncludeControl.wrap(val)
|
14
|
+
when 'exclude_controls'
|
15
|
+
ExcludeControls.wrap(val)
|
16
|
+
else
|
17
|
+
val
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/oscal/link.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class Location < Oscal::BaseClass
|
5
|
+
KEY = %i(uuid title address email_addresses telephone_numbers urls
|
6
|
+
props links remakrs)
|
7
|
+
|
8
|
+
attr_accessor *KEY
|
9
|
+
attr_serializable *KEY
|
10
|
+
|
11
|
+
def set_value(key_name, val)
|
12
|
+
case key_name
|
13
|
+
when 'address'
|
14
|
+
Address.wrap(val)
|
15
|
+
when 'email_addresses'
|
16
|
+
EmailAddress.wrap(val)
|
17
|
+
when 'telephone_numbers'
|
18
|
+
TelephoneNumber.wrap(val)
|
19
|
+
when 'urls'
|
20
|
+
Url.wrap(val)
|
21
|
+
when 'props'
|
22
|
+
Property.wrap(val)
|
23
|
+
when 'links'
|
24
|
+
Link.wrap(val)
|
25
|
+
else
|
26
|
+
val
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/oscal/merge.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class Merge < Oscal::BaseClass
|
5
|
+
KEY = %i(combine flat as_is custom)
|
6
|
+
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
9
|
+
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'custom'
|
13
|
+
Custom.wrap(val)
|
14
|
+
else
|
15
|
+
val
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/oscal/metadata_block.rb
CHANGED
@@ -1,21 +1,35 @@
|
|
1
|
-
|
2
|
-
class MetadataBlock
|
3
|
-
|
4
|
-
METADATA_VALUES = %i(title published last_modified version
|
5
|
-
oscal_version remarks)
|
1
|
+
require_relative "base_class"
|
6
2
|
|
7
|
-
|
3
|
+
module Oscal
|
4
|
+
class MetadataBlock < Oscal::BaseClass
|
5
|
+
KEY = %i(title published last_modified version
|
6
|
+
oscal_version revisions document_ids props links roles
|
7
|
+
locations parties responsible_parties remarks)
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
key_name = key.gsub('-','_')
|
9
|
+
attr_accessor *KEY
|
10
|
+
attr_serializable *KEY
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
def set_value(key_name, val)
|
13
|
+
case key_name
|
14
|
+
when 'revisions'
|
15
|
+
Revision.wrap(val)
|
16
|
+
when 'docuement_ids'
|
17
|
+
DocumentId.wrap(val)
|
18
|
+
when 'props'
|
19
|
+
Property.wrap(val)
|
20
|
+
when 'links'
|
21
|
+
Link.wrap(val)
|
22
|
+
when 'roles'
|
23
|
+
Role.wrap(val)
|
24
|
+
when 'locations'
|
25
|
+
Location.wrap(val)
|
26
|
+
when 'parties'
|
27
|
+
Party.wrap(val)
|
28
|
+
when 'responsible_parties'
|
29
|
+
ResponsibleParty.wrap(val)
|
30
|
+
else
|
31
|
+
val
|
17
32
|
end
|
18
33
|
end
|
19
|
-
|
20
34
|
end
|
21
35
|
end
|
data/lib/oscal/modify.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "base_class"
|
2
|
+
|
3
|
+
module Oscal
|
4
|
+
class Modify < Oscal::BaseClass
|
5
|
+
KEY = %i(set_parameters alters)
|
6
|
+
|
7
|
+
attr_accessor *KEY
|
8
|
+
attr_serializable *KEY
|
9
|
+
|
10
|
+
def set_value(key_name, val)
|
11
|
+
case key_name
|
12
|
+
when 'set_parameters'
|
13
|
+
SetParameter.wrap(val)
|
14
|
+
when 'alters'
|
15
|
+
Alter.wrap(val)
|
16
|
+
else
|
17
|
+
val
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|