oscal 0.1.1 → 0.2.2
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/.docker/Dockerfile +19 -0
- data/.docker/Makefile +43 -0
- data/.docker/docker-compose.yml +14 -0
- data/.docker/readme.md +61 -0
- data/.gitignore +2 -0
- data/.rspec +0 -1
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -0
- data/Gemfile +2 -0
- data/LICENSE +25 -0
- data/Makefile +1 -0
- data/README.adoc +3 -0
- data/Rakefile +13 -6
- data/bin/console +2 -2
- data/bin/rspec +27 -0
- data/docker-compose.yml +1 -0
- data/lib/oscal/add.rb +5 -4
- data/lib/oscal/address.rb +3 -2
- data/lib/oscal/address_line.rb +1 -0
- data/lib/oscal/alter.rb +3 -2
- data/lib/oscal/assembly.rb +119 -0
- data/lib/oscal/assessment_plan.rb +28 -0
- data/lib/oscal/assessment_result.rb +230 -0
- data/lib/oscal/attribute_type_hash.rb +81 -0
- data/lib/oscal/back_matter.rb +2 -1
- data/lib/oscal/base64_object.rb +1 -0
- data/lib/oscal/base_class.rb +5 -4
- data/lib/oscal/catalog.rb +8 -7
- data/lib/oscal/choice.rb +1 -0
- data/lib/oscal/citation.rb +3 -2
- data/lib/oscal/combine.rb +1 -0
- data/lib/oscal/common_utils.rb +1 -1
- data/lib/oscal/constraint.rb +2 -1
- data/lib/oscal/control.rb +6 -5
- data/lib/oscal/custom.rb +3 -2
- data/lib/oscal/datatypes.rb +50 -0
- data/lib/oscal/document_id.rb +1 -0
- data/lib/oscal/email_address.rb +1 -0
- data/lib/oscal/exclude_control.rb +3 -2
- data/lib/oscal/external_id.rb +1 -0
- data/lib/oscal/group.rb +9 -8
- data/lib/oscal/guideline.rb +1 -0
- data/lib/oscal/hash_object.rb +1 -0
- data/lib/oscal/import_object.rb +3 -2
- data/lib/oscal/include_control.rb +3 -2
- data/lib/oscal/insert_control.rb +3 -2
- data/lib/oscal/link.rb +1 -0
- data/lib/oscal/list.rb +160 -0
- data/lib/oscal/location.rb +8 -7
- data/lib/oscal/location_uuid.rb +1 -0
- data/lib/oscal/logger.rb +12 -0
- data/lib/oscal/matching.rb +1 -0
- data/lib/oscal/member_of_organization.rb +1 -0
- data/lib/oscal/merge.rb +2 -1
- data/lib/oscal/metadata_block.rb +11 -10
- data/lib/oscal/modify.rb +3 -2
- data/lib/oscal/parameter.rb +8 -7
- data/lib/oscal/parsing_functions.rb +19 -0
- data/lib/oscal/part.rb +4 -3
- data/lib/oscal/party.rb +11 -10
- data/lib/oscal/party_uuid.rb +1 -0
- data/lib/oscal/profile.rb +7 -6
- data/lib/oscal/property.rb +1 -0
- data/lib/oscal/remove.rb +1 -0
- data/lib/oscal/resource.rb +7 -6
- data/lib/oscal/responsible_party.rb +11 -10
- data/lib/oscal/revision.rb +4 -3
- data/lib/oscal/rlink.rb +2 -1
- data/lib/oscal/role.rb +3 -2
- data/lib/oscal/select.rb +2 -1
- data/lib/oscal/set_parameter.rb +8 -7
- data/lib/oscal/telephone_number.rb +1 -0
- data/lib/oscal/test.rb +1 -0
- data/lib/oscal/url.rb +1 -0
- data/lib/oscal/value.rb +5 -4
- data/lib/oscal/version.rb +1 -1
- data/lib/oscal/with_id.rb +2 -1
- data/lib/oscal.rb +1 -1
- data/spec/oscal/catalog_spec.rb +5 -4
- data/spec/oscal_spec.rb +11 -0
- data/spec/sample_inputs/import-ap.json +4 -0
- metadata +24 -6
@@ -5,13 +5,14 @@ module Oscal
|
|
5
5
|
KEY = %i(with_child_controls with_ids matching)
|
6
6
|
|
7
7
|
attr_accessor *KEY
|
8
|
+
|
8
9
|
attr_serializable *KEY
|
9
10
|
|
10
11
|
def set_value(key_name, val)
|
11
12
|
case key_name
|
12
|
-
when
|
13
|
+
when "with_ids"
|
13
14
|
WithId.wrap(val)
|
14
|
-
when
|
15
|
+
when "matching"
|
15
16
|
Matching.wrap(val)
|
16
17
|
else
|
17
18
|
val
|
data/lib/oscal/insert_control.rb
CHANGED
@@ -5,13 +5,14 @@ module Oscal
|
|
5
5
|
KEY = %i(order include_all include_controls exclude_controls)
|
6
6
|
|
7
7
|
attr_accessor *KEY
|
8
|
+
|
8
9
|
attr_serializable *KEY
|
9
10
|
|
10
11
|
def set_value(key_name, val)
|
11
12
|
case key_name
|
12
|
-
when
|
13
|
+
when "include_controls"
|
13
14
|
IncludeControl.wrap(val)
|
14
|
-
when
|
15
|
+
when "exclude_controls"
|
15
16
|
ExcludeControls.wrap(val)
|
16
17
|
else
|
17
18
|
val
|
data/lib/oscal/link.rb
CHANGED
data/lib/oscal/list.rb
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
require_relative("link")
|
2
|
+
require_relative("property")
|
3
|
+
require_relative("logger")
|
4
|
+
|
5
|
+
module Oscal
|
6
|
+
class OscalArray < Array
|
7
|
+
include ParsingLogger
|
8
|
+
|
9
|
+
def validate_member_type(input)
|
10
|
+
@logger.debug("Validating array members are #{self.class::MEMBER_TYPE}")
|
11
|
+
input.map do |item|
|
12
|
+
self.class::MEMBER_TYPE.new(item)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(input)
|
17
|
+
super
|
18
|
+
@logger = get_logger
|
19
|
+
@logger.debug("#{self.class}.new called with #{input.to_s[0, 25]}")
|
20
|
+
validate_member_type(input)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# These classes define generic arrays of basic DataTypes,
|
25
|
+
# They appear in several different places in the Oscal specs
|
26
|
+
# and can be subclassed with a different name
|
27
|
+
class StringDataTypeArray < Oscal::OscalArray
|
28
|
+
MEMBER_TYPE = StringDataType
|
29
|
+
end
|
30
|
+
|
31
|
+
class TokenDataTypeArray < Oscal::OscalArray
|
32
|
+
MEMBER_TYPE = TokenDataType
|
33
|
+
end
|
34
|
+
|
35
|
+
class UuidArray < Oscal::OscalArray
|
36
|
+
MEMBER_TYPE = Uuid
|
37
|
+
end
|
38
|
+
|
39
|
+
module AssessmentResult
|
40
|
+
class ActivityArray < Oscal::OscalArray
|
41
|
+
MEMBER_TYPE = Activity
|
42
|
+
end
|
43
|
+
|
44
|
+
class AssessmentPlatformArray < Oscal::OscalArray
|
45
|
+
MEMBER_TYPE = AssessmentPlatform
|
46
|
+
end
|
47
|
+
|
48
|
+
class AssessmentTaskArray < Oscal::OscalArray
|
49
|
+
MEMBER_TYPE = AssessmentTask
|
50
|
+
end
|
51
|
+
|
52
|
+
class AssociatedActivityArray < Oscal::OscalArray
|
53
|
+
MEMBER_TYPE = AssociatedActivity
|
54
|
+
end
|
55
|
+
|
56
|
+
class AttestationArray < Oscal::OscalArray
|
57
|
+
MEMBER_TYPE = Attestation
|
58
|
+
end
|
59
|
+
|
60
|
+
class ComponentArray < Oscal::OscalArray
|
61
|
+
MEMBER_TYPE = Component
|
62
|
+
end
|
63
|
+
|
64
|
+
class ControlObjectiveSelectionArray < Oscal::OscalArray
|
65
|
+
MEMBER_TYPE = ControlObjectiveSelection
|
66
|
+
end
|
67
|
+
|
68
|
+
class ControlSelectionArray < Oscal::OscalArray
|
69
|
+
MEMBER_TYPE = ControlSelection
|
70
|
+
end
|
71
|
+
|
72
|
+
class EntryArray < Oscal::OscalArray
|
73
|
+
MEMBER_TYPE = Entry
|
74
|
+
end
|
75
|
+
|
76
|
+
class ExcludeControlArray < Oscal::OscalArray
|
77
|
+
MEMBER_TYPE = ExcludeControl
|
78
|
+
end
|
79
|
+
|
80
|
+
class ExcludeObjectiveArray < Oscal::OscalArray
|
81
|
+
MEMBER_TYPE = ExcludeObjective
|
82
|
+
end
|
83
|
+
|
84
|
+
class FindingArray < Oscal::OscalArray
|
85
|
+
MEMBER_TYPE = Finding
|
86
|
+
end
|
87
|
+
|
88
|
+
class IncludeControlArray < Oscal::OscalArray
|
89
|
+
MEMBER_TYPE = IncludeControl
|
90
|
+
end
|
91
|
+
|
92
|
+
class InventoryItemArray < Oscal::OscalArray
|
93
|
+
MEMBER_TYPE = InventoryItem
|
94
|
+
end
|
95
|
+
|
96
|
+
class LinkArray < Oscal::OscalArray
|
97
|
+
MEMBER_TYPE = Oscal::Link
|
98
|
+
end
|
99
|
+
|
100
|
+
class MethodArray < StringDataTypeArray
|
101
|
+
end
|
102
|
+
|
103
|
+
class ObjectivesAndMethodsArray < Oscal::OscalArray
|
104
|
+
MEMBER_TYPE = ObjectivesAndMethods
|
105
|
+
end
|
106
|
+
|
107
|
+
class ObservationArray < Oscal::OscalArray
|
108
|
+
MEMBER_TYPE = Observation
|
109
|
+
end
|
110
|
+
|
111
|
+
class PartArray < Oscal::OscalArray
|
112
|
+
MEMBER_TYPE = Link
|
113
|
+
end
|
114
|
+
|
115
|
+
class PartyUuidArray < UuidArray
|
116
|
+
end
|
117
|
+
|
118
|
+
class PropArray < Oscal::OscalArray
|
119
|
+
MEMBER_TYPE = Property
|
120
|
+
end
|
121
|
+
|
122
|
+
class RelatedObservationArray < Oscal::OscalArray
|
123
|
+
MEMBER_TYPE = RelatedObservation
|
124
|
+
end
|
125
|
+
|
126
|
+
class RelatedRiskArray < Oscal::OscalArray
|
127
|
+
MEMBER_TYPE = AssociatedRisk
|
128
|
+
end
|
129
|
+
|
130
|
+
class ResponsibleRoleArray < Oscal::OscalArray
|
131
|
+
MEMBER_TYPE = ResponsibleRole
|
132
|
+
end
|
133
|
+
|
134
|
+
class ResultArray < Oscal::OscalArray
|
135
|
+
MEMBER_TYPE = Result
|
136
|
+
end
|
137
|
+
|
138
|
+
class RiskArray < Oscal::OscalArray
|
139
|
+
MEMBER_TYPE = Risk
|
140
|
+
end
|
141
|
+
|
142
|
+
class StatementIdArray < TokenDataTypeArray
|
143
|
+
end
|
144
|
+
|
145
|
+
class StepArray < Oscal::OscalArray
|
146
|
+
MEMBER_TYPE = Step
|
147
|
+
end
|
148
|
+
|
149
|
+
class SubjectArray < Oscal::OscalArray
|
150
|
+
MEMBER_TYPE = Subject
|
151
|
+
end
|
152
|
+
|
153
|
+
class TypeArray < TokenDataTypeArray
|
154
|
+
end
|
155
|
+
|
156
|
+
class UserArray < Oscal::OscalArray
|
157
|
+
MEMBER_TYPE = User
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
data/lib/oscal/location.rb
CHANGED
@@ -3,24 +3,25 @@ require_relative "base_class"
|
|
3
3
|
module Oscal
|
4
4
|
class Location < Oscal::BaseClass
|
5
5
|
KEY = %i(uuid title address email_addresses telephone_numbers urls
|
6
|
-
|
6
|
+
props links remakrs)
|
7
7
|
|
8
8
|
attr_accessor *KEY
|
9
|
+
|
9
10
|
attr_serializable *KEY
|
10
11
|
|
11
12
|
def set_value(key_name, val)
|
12
13
|
case key_name
|
13
|
-
when
|
14
|
+
when "address"
|
14
15
|
Address.wrap(val)
|
15
|
-
when
|
16
|
+
when "email_addresses"
|
16
17
|
EmailAddress.wrap(val)
|
17
|
-
when
|
18
|
+
when "telephone_numbers"
|
18
19
|
TelephoneNumber.wrap(val)
|
19
|
-
when
|
20
|
+
when "urls"
|
20
21
|
Url.wrap(val)
|
21
|
-
when
|
22
|
+
when "props"
|
22
23
|
Property.wrap(val)
|
23
|
-
when
|
24
|
+
when "links"
|
24
25
|
Link.wrap(val)
|
25
26
|
else
|
26
27
|
val
|
data/lib/oscal/location_uuid.rb
CHANGED
data/lib/oscal/logger.rb
ADDED
data/lib/oscal/matching.rb
CHANGED
data/lib/oscal/merge.rb
CHANGED
data/lib/oscal/metadata_block.rb
CHANGED
@@ -3,29 +3,30 @@ require_relative "base_class"
|
|
3
3
|
module Oscal
|
4
4
|
class MetadataBlock < Oscal::BaseClass
|
5
5
|
KEY = %i(title published last_modified version
|
6
|
-
|
7
|
-
|
6
|
+
oscal_version revisions document_ids props links roles
|
7
|
+
locations parties responsible_parties remarks)
|
8
8
|
|
9
9
|
attr_accessor *KEY
|
10
|
+
|
10
11
|
attr_serializable *KEY
|
11
12
|
|
12
13
|
def set_value(key_name, val)
|
13
14
|
case key_name
|
14
|
-
when
|
15
|
+
when "revisions"
|
15
16
|
Revision.wrap(val)
|
16
|
-
when
|
17
|
+
when "docuement_ids"
|
17
18
|
DocumentId.wrap(val)
|
18
|
-
when
|
19
|
+
when "props"
|
19
20
|
Property.wrap(val)
|
20
|
-
when
|
21
|
+
when "links"
|
21
22
|
Link.wrap(val)
|
22
|
-
when
|
23
|
+
when "roles"
|
23
24
|
Role.wrap(val)
|
24
|
-
when
|
25
|
+
when "locations"
|
25
26
|
Location.wrap(val)
|
26
|
-
when
|
27
|
+
when "parties"
|
27
28
|
Party.wrap(val)
|
28
|
-
when
|
29
|
+
when "responsible_parties"
|
29
30
|
ResponsibleParty.wrap(val)
|
30
31
|
else
|
31
32
|
val
|
data/lib/oscal/modify.rb
CHANGED
@@ -5,13 +5,14 @@ module Oscal
|
|
5
5
|
KEY = %i(set_parameters alters)
|
6
6
|
|
7
7
|
attr_accessor *KEY
|
8
|
+
|
8
9
|
attr_serializable *KEY
|
9
10
|
|
10
11
|
def set_value(key_name, val)
|
11
12
|
case key_name
|
12
|
-
when
|
13
|
+
when "set_parameters"
|
13
14
|
SetParameter.wrap(val)
|
14
|
-
when
|
15
|
+
when "alters"
|
15
16
|
Alter.wrap(val)
|
16
17
|
else
|
17
18
|
val
|
data/lib/oscal/parameter.rb
CHANGED
@@ -3,24 +3,25 @@ require_relative "base_class"
|
|
3
3
|
module Oscal
|
4
4
|
class Parameter < Oscal::BaseClass
|
5
5
|
KEY = %i(id klass depneds_on props links label usage
|
6
|
-
|
6
|
+
constraints guidelines values select remarks)
|
7
7
|
|
8
8
|
attr_accessor *KEY
|
9
|
+
|
9
10
|
attr_serializable *KEY
|
10
11
|
|
11
12
|
def set_value(key_name, val)
|
12
13
|
case key_name
|
13
|
-
when
|
14
|
+
when "props"
|
14
15
|
Property.wrap(val)
|
15
|
-
when
|
16
|
+
when "links"
|
16
17
|
Link.wrap(val)
|
17
|
-
when
|
18
|
+
when "constraints"
|
18
19
|
Constraint.wrap(val)
|
19
|
-
when
|
20
|
+
when "guidelines"
|
20
21
|
Guideline.wrap(val)
|
21
|
-
when
|
22
|
+
when "values"
|
22
23
|
Value.wrap(val)
|
23
|
-
when
|
24
|
+
when "select"
|
24
25
|
Select.wrap(val)
|
25
26
|
else
|
26
27
|
val
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Oscal
|
2
|
+
module ParsingFunctions
|
3
|
+
def sym2str(key)
|
4
|
+
if key.is_a?(Symbol)
|
5
|
+
key.to_s.gsub("-", "_").gsub("class", "klass")
|
6
|
+
elsif key.is_a?(String)
|
7
|
+
key
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def str2sym(var)
|
12
|
+
if var.is_a?(String)
|
13
|
+
var.gsub("-", "_").gsub("class", "klass").to_sym
|
14
|
+
elsif var.is_a?(Symbol)
|
15
|
+
var
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/oscal/part.rb
CHANGED
@@ -5,15 +5,16 @@ module Oscal
|
|
5
5
|
KEY = %i(id name ns klass title props prose parts links)
|
6
6
|
|
7
7
|
attr_accessor *KEY
|
8
|
+
|
8
9
|
attr_serializable *KEY
|
9
10
|
|
10
11
|
def set_value(key_name, val)
|
11
12
|
case key_name
|
12
|
-
when
|
13
|
+
when "props"
|
13
14
|
Property.wrap(val)
|
14
|
-
when
|
15
|
+
when "parts"
|
15
16
|
Part.wrap(val)
|
16
|
-
when
|
17
|
+
when "links"
|
17
18
|
Link.wrap(val)
|
18
19
|
else
|
19
20
|
val
|
data/lib/oscal/party.rb
CHANGED
@@ -3,29 +3,30 @@ require_relative "base_class"
|
|
3
3
|
module Oscal
|
4
4
|
class Party < Oscal::BaseClass
|
5
5
|
KEY = %i(uuid type name short_name external_ids props links
|
6
|
-
|
7
|
-
|
6
|
+
email_addresses telephone_numbers addresses location_uuids
|
7
|
+
member_of_organizations remakrs)
|
8
8
|
|
9
9
|
attr_accessor *KEY
|
10
|
+
|
10
11
|
attr_serializable *KEY
|
11
12
|
|
12
13
|
def set_value(key_name, val)
|
13
14
|
case key_name
|
14
|
-
when
|
15
|
+
when "external_ids"
|
15
16
|
ExternalId.wrap(val)
|
16
|
-
when
|
17
|
+
when "props"
|
17
18
|
Property.wrap(val)
|
18
|
-
when
|
19
|
+
when "links"
|
19
20
|
Link.wrap(val)
|
20
|
-
when
|
21
|
+
when "email_addresses"
|
21
22
|
EmailAddress.wrap(val)
|
22
|
-
when
|
23
|
+
when "telephone_numbers"
|
23
24
|
TelephoneNumber.wrap(val)
|
24
|
-
when
|
25
|
+
when "addresses"
|
25
26
|
Address.wrap(val)
|
26
|
-
when
|
27
|
+
when "location_uuids"
|
27
28
|
LocationUuid.wrap(val)
|
28
|
-
when
|
29
|
+
when "member_of_organizations"
|
29
30
|
MemberOfOrganization.wrap(val)
|
30
31
|
else
|
31
32
|
val
|
data/lib/oscal/party_uuid.rb
CHANGED
data/lib/oscal/profile.rb
CHANGED
@@ -8,6 +8,7 @@ module Oscal
|
|
8
8
|
|
9
9
|
KEY = %i(uuid metadata imports merge modify back_matter)
|
10
10
|
attr_accessor *KEY
|
11
|
+
|
11
12
|
attr_serializable *KEY
|
12
13
|
|
13
14
|
def initialize(uuid, metadata, imports, merge, modify, back_matter)
|
@@ -23,12 +24,12 @@ module Oscal
|
|
23
24
|
yaml_data = safe_load_yaml(path)
|
24
25
|
yaml_profile = yaml_data["profile"]
|
25
26
|
|
26
|
-
uuid = yaml_profile[
|
27
|
-
metadata = yaml_profile[
|
28
|
-
imports = yaml_profile[
|
29
|
-
merge = yaml_profile[
|
30
|
-
modify = yaml_profile[
|
31
|
-
back_matter = yaml_profile[
|
27
|
+
uuid = yaml_profile["uuid"]
|
28
|
+
metadata = yaml_profile["metadata"]
|
29
|
+
imports = yaml_profile["imports"]
|
30
|
+
merge = yaml_profile["merge"]
|
31
|
+
modify = yaml_profile["modify"]
|
32
|
+
back_matter = yaml_profile["back-matter"]
|
32
33
|
|
33
34
|
Profile.new(uuid, metadata, imports, merge, modify, back_matter)
|
34
35
|
end
|
data/lib/oscal/property.rb
CHANGED
data/lib/oscal/remove.rb
CHANGED
data/lib/oscal/resource.rb
CHANGED
@@ -3,22 +3,23 @@ require_relative "base_class"
|
|
3
3
|
module Oscal
|
4
4
|
class Resource < Oscal::BaseClass
|
5
5
|
KEY = %i(uuid title description props docuement_ids citation rlinks
|
6
|
-
|
6
|
+
base64 remarks)
|
7
7
|
|
8
8
|
attr_accessor *KEY
|
9
|
+
|
9
10
|
attr_serializable *KEY
|
10
11
|
|
11
12
|
def set_value(key_name, val)
|
12
13
|
case key_name
|
13
|
-
when
|
14
|
+
when "props"
|
14
15
|
Property.wrap(val)
|
15
|
-
when
|
16
|
+
when "document_ids"
|
16
17
|
DocumentId.wrap(val)
|
17
|
-
when
|
18
|
+
when "citation"
|
18
19
|
Citation.wrap(val)
|
19
|
-
when
|
20
|
+
when "rlinks"
|
20
21
|
Rlink.wrap(val)
|
21
|
-
when
|
22
|
+
when "base64"
|
22
23
|
Base64Object.wrap(val)
|
23
24
|
else
|
24
25
|
val
|
@@ -5,19 +5,20 @@ module Oscal
|
|
5
5
|
KEY = %i(role_id party_uuids props links remakrs)
|
6
6
|
|
7
7
|
attr_accessor *KEY
|
8
|
+
|
8
9
|
attr_serializable *KEY
|
9
10
|
|
10
11
|
def set_value(key_name, val)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
case key_name
|
13
|
+
when "party_uuids"
|
14
|
+
PartyUuid.wrap(val)
|
15
|
+
when "props"
|
16
|
+
Property.wrap(val)
|
17
|
+
when "links"
|
18
|
+
Link.wrap(val)
|
19
|
+
else
|
20
|
+
val
|
21
|
+
end
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
data/lib/oscal/revision.rb
CHANGED
@@ -3,16 +3,17 @@ require_relative "base_class"
|
|
3
3
|
module Oscal
|
4
4
|
class Revision < Oscal::BaseClass
|
5
5
|
KEY = %i(title published last_modified version oscal_version
|
6
|
-
|
6
|
+
props links remarks)
|
7
7
|
|
8
8
|
attr_accessor *KEY
|
9
|
+
|
9
10
|
attr_serializable *KEY
|
10
11
|
|
11
12
|
def set_value(key_name, val)
|
12
13
|
case key_name
|
13
|
-
when
|
14
|
+
when "props"
|
14
15
|
Property.wrap(val)
|
15
|
-
when
|
16
|
+
when "links"
|
16
17
|
Link.wrap(val)
|
17
18
|
else
|
18
19
|
val
|
data/lib/oscal/rlink.rb
CHANGED
data/lib/oscal/role.rb
CHANGED
@@ -5,13 +5,14 @@ module Oscal
|
|
5
5
|
KEY = %i(id title short_name description props links remakrs)
|
6
6
|
|
7
7
|
attr_accessor *KEY
|
8
|
+
|
8
9
|
attr_serializable *KEY
|
9
10
|
|
10
11
|
def set_value(key_name, val)
|
11
12
|
case key_name
|
12
|
-
when
|
13
|
+
when "props"
|
13
14
|
Property.wrap(val)
|
14
|
-
when
|
15
|
+
when "links"
|
15
16
|
Link.wrap(val)
|
16
17
|
else
|
17
18
|
val
|