metaschema 0.1.2 → 0.2.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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +19 -1
  3. data/.rubocop_todo.yml +558 -8
  4. data/CLAUDE.md +78 -0
  5. data/Rakefile +3 -3
  6. data/exe/metaschema +1 -2
  7. data/lib/metaschema/allowed_value_type.rb +18 -25
  8. data/lib/metaschema/allowed_values_type.rb +15 -22
  9. data/lib/metaschema/anchor_type.rb +15 -20
  10. data/lib/metaschema/any_type.rb +2 -4
  11. data/lib/metaschema/assembly.rb +18 -27
  12. data/lib/metaschema/assembly_model_type.rb +10 -19
  13. data/lib/metaschema/assembly_reference_type.rb +16 -24
  14. data/lib/metaschema/augment_type.rb +39 -0
  15. data/lib/metaschema/block_quote_type.rb +17 -25
  16. data/lib/metaschema/choice_type.rb +6 -13
  17. data/lib/metaschema/code_type.rb +17 -23
  18. data/lib/metaschema/constraint_let_type.rb +5 -9
  19. data/lib/metaschema/constraint_validator.rb +483 -0
  20. data/lib/metaschema/define_assembly_constraints_type.rb +17 -26
  21. data/lib/metaschema/define_field_constraints_type.rb +13 -19
  22. data/lib/metaschema/define_flag_constraints_type.rb +9 -17
  23. data/lib/metaschema/example_type.rb +6 -11
  24. data/lib/metaschema/expect_constraint_type.rb +12 -18
  25. data/lib/metaschema/field.rb +13 -20
  26. data/lib/metaschema/field_reference_type.rb +19 -27
  27. data/lib/metaschema/flag.rb +9 -18
  28. data/lib/metaschema/flag_reference_type.rb +14 -21
  29. data/lib/metaschema/formal_name.rb +9 -0
  30. data/lib/metaschema/global_assembly_definition_type.rb +21 -34
  31. data/lib/metaschema/global_field_definition_type.rb +26 -39
  32. data/lib/metaschema/global_flag_definition_type.rb +18 -27
  33. data/lib/metaschema/group_as_type.rb +7 -9
  34. data/lib/metaschema/grouped_assembly_reference_type.rb +11 -18
  35. data/lib/metaschema/grouped_choice_type.rb +16 -24
  36. data/lib/metaschema/grouped_field_reference_type.rb +11 -18
  37. data/lib/metaschema/grouped_inline_assembly_definition_type.rb +17 -29
  38. data/lib/metaschema/grouped_inline_field_definition_type.rb +26 -37
  39. data/lib/metaschema/image_type.rb +5 -7
  40. data/lib/metaschema/import.rb +3 -5
  41. data/lib/metaschema/index_has_key_constraint_type.rb +12 -19
  42. data/lib/metaschema/inline_assembly_definition_type.rb +25 -38
  43. data/lib/metaschema/inline_field_definition_type.rb +31 -43
  44. data/lib/metaschema/inline_flag_definition_type.rb +17 -25
  45. data/lib/metaschema/inline_markup_type.rb +17 -22
  46. data/lib/metaschema/insert_type.rb +4 -6
  47. data/lib/metaschema/json_base_uri.rb +9 -0
  48. data/lib/metaschema/json_key_type.rb +3 -5
  49. data/lib/metaschema/json_schema_generator.rb +456 -0
  50. data/lib/metaschema/json_value_key.rb +9 -0
  51. data/lib/metaschema/json_value_key_flag_type.rb +3 -5
  52. data/lib/metaschema/key_field.rb +5 -9
  53. data/lib/metaschema/list_item_type.rb +29 -39
  54. data/lib/metaschema/list_type.rb +3 -7
  55. data/lib/metaschema/markdown_doc_generator.rb +354 -0
  56. data/lib/metaschema/markup_line_datatype.rb +16 -23
  57. data/lib/metaschema/matches_constraint_type.rb +12 -18
  58. data/lib/metaschema/metapath_evaluator.rb +385 -0
  59. data/lib/metaschema/metaschema_constraints.rb +24 -0
  60. data/lib/metaschema/metaschema_import_type.rb +3 -5
  61. data/lib/metaschema/model_generator.rb +2175 -0
  62. data/lib/metaschema/namespace.rb +8 -0
  63. data/lib/metaschema/namespace_binding_type.rb +4 -6
  64. data/lib/metaschema/namespace_value.rb +9 -0
  65. data/lib/metaschema/ordered_list_type.rb +4 -8
  66. data/lib/metaschema/preformatted_type.rb +16 -23
  67. data/lib/metaschema/property_type.rb +6 -8
  68. data/lib/metaschema/remarks_type.rb +18 -27
  69. data/lib/metaschema/root.rb +23 -31
  70. data/lib/metaschema/root_name.rb +3 -5
  71. data/lib/metaschema/ruby_source_emitter.rb +869 -0
  72. data/lib/metaschema/schema_version.rb +9 -0
  73. data/lib/metaschema/scope.rb +7 -13
  74. data/lib/metaschema/short_name.rb +9 -0
  75. data/lib/metaschema/table_cell_type.rb +18 -25
  76. data/lib/metaschema/table_row_type.rb +4 -8
  77. data/lib/metaschema/table_type.rb +3 -7
  78. data/lib/metaschema/targeted_allowed_values_constraint_type.rb +16 -23
  79. data/lib/metaschema/targeted_expect_constraint_type.rb +13 -19
  80. data/lib/metaschema/targeted_has_cardinality_constraint_type.rb +13 -19
  81. data/lib/metaschema/targeted_index_constraint_type.rb +13 -20
  82. data/lib/metaschema/targeted_index_has_key_constraint_type.rb +13 -20
  83. data/lib/metaschema/targeted_key_constraint_type.rb +12 -19
  84. data/lib/metaschema/targeted_matches_constraint_type.rb +13 -19
  85. data/lib/metaschema/type_mapper.rb +82 -0
  86. data/lib/metaschema/use_name_type.rb +3 -5
  87. data/lib/metaschema/version.rb +1 -1
  88. data/lib/metaschema.rb +97 -9
  89. metadata +28 -95
  90. data/lib/metaschema/metaschemaconstraints.rb +0 -31
@@ -1,34 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'markup_line_datatype'
6
- require_relative 'property_type'
7
- require_relative 'remarks_type'
8
-
9
3
  module Metaschema
10
4
  class ExpectConstraintType < Lutaml::Model::Serializable
11
5
  attribute :id, :string
12
- attribute :level, :string, default: -> { 'ERROR' }
6
+ attribute :level, :string, default: -> { "ERROR" }
13
7
  attribute :test, :string
14
- attribute :formal_name, :string
8
+ attribute :formal_name, FormalName
15
9
  attribute :description, MarkupLineDatatype
16
10
  attribute :prop, PropertyType, collection: true
17
11
  attribute :message, :string
18
12
  attribute :remarks, RemarksType
19
13
 
20
14
  xml do
21
- root 'ExpectConstraintType'
22
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
15
+ element "ExpectConstraintType"
16
+ namespace ::Metaschema::Namespace
23
17
 
24
- map_attribute 'id', to: :id
25
- map_attribute 'level', to: :level
26
- map_attribute 'test', to: :test
27
- map_element 'formal-name', to: :formal_name
28
- map_element 'description', to: :description
29
- map_element 'prop', to: :prop
30
- map_element 'message', to: :message
31
- map_element 'remarks', to: :remarks
18
+ map_attribute "id", to: :id
19
+ map_attribute "level", to: :level
20
+ map_attribute "test", to: :test
21
+ map_element "formal-name", to: :formal_name
22
+ map_element "description", to: :description
23
+ map_element "prop", to: :prop
24
+ map_element "message", to: :message
25
+ map_element "remarks", to: :remarks
32
26
  end
33
27
  end
34
28
  end
@@ -1,35 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'constraint_let_type'
6
- require_relative 'remarks_type'
7
- require_relative 'targeted_allowed_values_constraint_type'
8
- require_relative 'targeted_expect_constraint_type'
9
- require_relative 'targeted_index_has_key_constraint_type'
10
- require_relative 'targeted_matches_constraint_type'
11
-
12
3
  module Metaschema
13
4
  class Field < Lutaml::Model::Serializable
14
5
  attribute :target, :string
15
6
  attribute :let, ConstraintLetType, collection: true
16
- attribute :allowed_values, TargetedAllowedValuesConstraintType, collection: true
7
+ attribute :allowed_values, TargetedAllowedValuesConstraintType,
8
+ collection: true
17
9
  attribute :matches, TargetedMatchesConstraintType, collection: true
18
- attribute :index_has_key, TargetedIndexHasKeyConstraintType, collection: true
10
+ attribute :index_has_key, TargetedIndexHasKeyConstraintType,
11
+ collection: true
19
12
  attribute :expect, TargetedExpectConstraintType, collection: true
20
13
  attribute :remarks, RemarksType
21
14
 
22
15
  xml do
23
- root 'field'
24
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
16
+ element "field"
17
+ namespace ::Metaschema::Namespace
25
18
 
26
- map_attribute 'target', to: :target
27
- map_element 'let', to: :let
28
- map_element 'allowed-values', to: :allowed_values
29
- map_element 'matches', to: :matches
30
- map_element 'index-has-key', to: :index_has_key
31
- map_element 'expect', to: :expect
32
- map_element 'remarks', to: :remarks
19
+ map_attribute "target", to: :target
20
+ map_element "let", to: :let
21
+ map_element "allowed-values", to: :allowed_values
22
+ map_element "matches", to: :matches
23
+ map_element "index-has-key", to: :index_has_key
24
+ map_element "expect", to: :expect
25
+ map_element "remarks", to: :remarks
33
26
  end
34
27
  end
35
28
  end
@@ -1,23 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'group_as_type'
6
- require_relative 'markup_line_datatype'
7
- require_relative 'property_type'
8
- require_relative 'remarks_type'
9
- require_relative 'use_name_type'
10
-
11
3
  module Metaschema
12
4
  class FieldReferenceType < Lutaml::Model::Serializable
13
5
  attribute :ref, :string
14
6
  attribute :index, :integer
15
- attribute :min_occurs, :integer, default: -> { '0' }
16
- attribute :max_occurs, :string, default: -> { '1' }
17
- attribute :in_xml, :string, default: -> { 'WRAPPED' }
7
+ attribute :min_occurs, :integer, default: -> { "0" }
8
+ attribute :max_occurs, :string, default: -> { "1" }
9
+ attribute :in_xml, :string, default: -> { "WRAPPED" }
18
10
  attribute :default, :string
19
11
  attribute :deprecated, :string
20
- attribute :formal_name, :string
12
+ attribute :formal_name, FormalName
21
13
  attribute :description, MarkupLineDatatype
22
14
  attribute :prop, PropertyType, collection: true
23
15
  attribute :use_name, UseNameType
@@ -25,22 +17,22 @@ module Metaschema
25
17
  attribute :remarks, RemarksType
26
18
 
27
19
  xml do
28
- root 'FieldReferenceType'
29
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
20
+ element "FieldReferenceType"
21
+ namespace ::Metaschema::Namespace
30
22
 
31
- map_attribute 'ref', to: :ref
32
- map_attribute 'index', to: :index
33
- map_attribute 'min-occurs', to: :min_occurs
34
- map_attribute 'max-occurs', to: :max_occurs
35
- map_attribute 'in-xml', to: :in_xml
36
- map_attribute 'default', to: :default
37
- map_attribute 'deprecated', to: :deprecated
38
- map_element 'formal-name', to: :formal_name
39
- map_element 'description', to: :description
40
- map_element 'prop', to: :prop
41
- map_element 'use-name', to: :use_name
42
- map_element 'group-as', to: :group_as
43
- map_element 'remarks', to: :remarks
23
+ map_attribute "ref", to: :ref
24
+ map_attribute "index", to: :index
25
+ map_attribute "min-occurs", to: :min_occurs
26
+ map_attribute "max-occurs", to: :max_occurs
27
+ map_attribute "in-xml", to: :in_xml
28
+ map_attribute "default", to: :default
29
+ map_attribute "deprecated", to: :deprecated
30
+ map_element "formal-name", to: :formal_name
31
+ map_element "description", to: :description
32
+ map_element "prop", to: :prop
33
+ map_element "use-name", to: :use_name
34
+ map_element "group-as", to: :group_as
35
+ map_element "remarks", to: :remarks
44
36
  end
45
37
  end
46
38
  end
@@ -1,14 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'allowed_values_type'
6
- require_relative 'constraint_let_type'
7
- require_relative 'expect_constraint_type'
8
- require_relative 'index_has_key_constraint_type'
9
- require_relative 'matches_constraint_type'
10
- require_relative 'remarks_type'
11
-
12
3
  module Metaschema
13
4
  class Flag < Lutaml::Model::Serializable
14
5
  attribute :target, :string
@@ -20,16 +11,16 @@ module Metaschema
20
11
  attribute :remarks, RemarksType
21
12
 
22
13
  xml do
23
- root 'flag'
24
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
14
+ element "flag"
15
+ namespace ::Metaschema::Namespace
25
16
 
26
- map_attribute 'target', to: :target
27
- map_element 'let', to: :let
28
- map_element 'allowed-values', to: :allowed_values
29
- map_element 'matches', to: :matches
30
- map_element 'index-has-key', to: :index_has_key
31
- map_element 'expect', to: :expect
32
- map_element 'remarks', to: :remarks
17
+ map_attribute "target", to: :target
18
+ map_element "let", to: :let
19
+ map_element "allowed-values", to: :allowed_values
20
+ map_element "matches", to: :matches
21
+ map_element "index-has-key", to: :index_has_key
22
+ map_element "expect", to: :expect
23
+ map_element "remarks", to: :remarks
33
24
  end
34
25
  end
35
26
  end
@@ -1,39 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'markup_line_datatype'
6
- require_relative 'property_type'
7
- require_relative 'remarks_type'
8
- require_relative 'use_name_type'
9
-
10
3
  module Metaschema
11
4
  class FlagReferenceType < Lutaml::Model::Serializable
12
5
  attribute :ref, :string
13
6
  attribute :index, :integer
14
- attribute :required, :string, default: -> { 'no' }
7
+ attribute :required, :string, default: -> { "no" }
15
8
  attribute :default, :string
16
9
  attribute :deprecated, :string
17
- attribute :formal_name, :string
10
+ attribute :formal_name, FormalName
18
11
  attribute :description, MarkupLineDatatype
19
12
  attribute :prop, PropertyType, collection: true
20
13
  attribute :use_name, UseNameType
21
14
  attribute :remarks, RemarksType
22
15
 
23
16
  xml do
24
- root 'FlagReferenceType'
25
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
17
+ element "FlagReferenceType"
18
+ namespace ::Metaschema::Namespace
26
19
 
27
- map_attribute 'ref', to: :ref
28
- map_attribute 'index', to: :index
29
- map_attribute 'required', to: :required
30
- map_attribute 'default', to: :default
31
- map_attribute 'deprecated', to: :deprecated
32
- map_element 'formal-name', to: :formal_name
33
- map_element 'description', to: :description
34
- map_element 'prop', to: :prop
35
- map_element 'use-name', to: :use_name
36
- map_element 'remarks', to: :remarks
20
+ map_attribute "ref", to: :ref
21
+ map_attribute "index", to: :index
22
+ map_attribute "required", to: :required
23
+ map_attribute "default", to: :default
24
+ map_attribute "deprecated", to: :deprecated
25
+ map_element "formal-name", to: :formal_name
26
+ map_element "description", to: :description
27
+ map_element "prop", to: :prop
28
+ map_element "use-name", to: :use_name
29
+ map_element "remarks", to: :remarks
37
30
  end
38
31
  end
39
32
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metaschema
4
+ class FormalName < Lutaml::Model::Type::String
5
+ xml do
6
+ namespace ::Metaschema::Namespace
7
+ end
8
+ end
9
+ end
@@ -1,26 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'assembly_model_type'
6
- require_relative 'define_assembly_constraints_type'
7
- require_relative 'example_type'
8
- require_relative 'flag_reference_type'
9
- require_relative 'inline_flag_definition_type'
10
- require_relative 'json_key_type'
11
- require_relative 'markup_line_datatype'
12
- require_relative 'property_type'
13
- require_relative 'remarks_type'
14
- require_relative 'root_name'
15
- require_relative 'use_name_type'
16
-
17
3
  module Metaschema
18
4
  class GlobalAssemblyDefinitionType < Lutaml::Model::Serializable
19
5
  attribute :name, :string
20
6
  attribute :index, :integer
21
- attribute :scope, :string, default: -> { 'global' }
7
+ attribute :scope, :string, default: -> { "global" }
22
8
  attribute :deprecated, :string
23
- attribute :formal_name, :string
9
+ attribute :formal_name, FormalName
24
10
  attribute :description, MarkupLineDatatype
25
11
  attribute :prop, PropertyType, collection: true
26
12
  attribute :root_name, RootName
@@ -34,25 +20,26 @@ module Metaschema
34
20
  attribute :example, ExampleType, collection: true
35
21
 
36
22
  xml do
37
- root 'GlobalAssemblyDefinitionType', ordered: true
38
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
23
+ element "GlobalAssemblyDefinitionType"
24
+ ordered
25
+ namespace ::Metaschema::Namespace
39
26
 
40
- map_attribute 'name', to: :name
41
- map_attribute 'index', to: :index
42
- map_attribute 'scope', to: :scope
43
- map_attribute 'deprecated', to: :deprecated
44
- map_element 'formal-name', to: :formal_name
45
- map_element 'description', to: :description
46
- map_element 'prop', to: :prop
47
- map_element 'root-name', to: :root_name
48
- map_element 'use-name', to: :use_name
49
- map_element 'json-key', to: :json_key
50
- map_element 'flag', to: :flag
51
- map_element 'define-flag', to: :define_flag
52
- map_element 'model', to: :model
53
- map_element 'constraint', to: :constraint
54
- map_element 'remarks', to: :remarks
55
- map_element 'example', to: :example
27
+ map_attribute "name", to: :name
28
+ map_attribute "index", to: :index
29
+ map_attribute "scope", to: :scope
30
+ map_attribute "deprecated", to: :deprecated
31
+ map_element "formal-name", to: :formal_name
32
+ map_element "description", to: :description
33
+ map_element "prop", to: :prop
34
+ map_element "root-name", to: :root_name
35
+ map_element "use-name", to: :use_name
36
+ map_element "json-key", to: :json_key
37
+ map_element "flag", to: :flag
38
+ map_element "define-flag", to: :define_flag
39
+ map_element "model", to: :model
40
+ map_element "constraint", to: :constraint
41
+ map_element "remarks", to: :remarks
42
+ map_element "example", to: :example
56
43
  end
57
44
  end
58
45
  end
@@ -1,33 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'define_field_constraints_type'
6
- require_relative 'example_type'
7
- require_relative 'flag_reference_type'
8
- require_relative 'inline_flag_definition_type'
9
- require_relative 'json_key_type'
10
- require_relative 'json_value_key_flag_type'
11
- require_relative 'markup_line_datatype'
12
- require_relative 'property_type'
13
- require_relative 'remarks_type'
14
- require_relative 'use_name_type'
15
-
16
3
  module Metaschema
17
4
  class GlobalFieldDefinitionType < Lutaml::Model::Serializable
18
- attribute :as_type, :string, default: -> { 'string' }
5
+ attribute :as_type, :string, default: -> { "string" }
19
6
  attribute :default, :string
20
7
  attribute :name, :string
21
8
  attribute :index, :integer
22
- attribute :scope, :string, default: -> { 'global' }
23
- attribute :collapsible, :string, default: -> { 'no' }
9
+ attribute :scope, :string, default: -> { "global" }
10
+ attribute :collapsible, :string, default: -> { "no" }
24
11
  attribute :deprecated, :string
25
- attribute :formal_name, :string
12
+ attribute :formal_name, FormalName
26
13
  attribute :description, MarkupLineDatatype
27
14
  attribute :prop, PropertyType, collection: true
28
15
  attribute :use_name, UseNameType
29
16
  attribute :json_key, JsonKeyType
30
- attribute :json_value_key, :string
17
+ attribute :json_value_key, JsonValueKey
31
18
  attribute :json_value_key_flag, JsonValueKeyFlagType
32
19
  attribute :flag, FlagReferenceType, collection: true
33
20
  attribute :define_flag, InlineFlagDefinitionType, collection: true
@@ -36,28 +23,28 @@ module Metaschema
36
23
  attribute :example, ExampleType, collection: true
37
24
 
38
25
  xml do
39
- root 'GlobalFieldDefinitionType'
40
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
26
+ element "GlobalFieldDefinitionType"
27
+ namespace ::Metaschema::Namespace
41
28
 
42
- map_attribute 'as-type', to: :as_type
43
- map_attribute 'default', to: :default
44
- map_attribute 'name', to: :name
45
- map_attribute 'index', to: :index
46
- map_attribute 'scope', to: :scope
47
- map_attribute 'deprecated', to: :deprecated
48
- map_attribute 'collapsible', to: :collapsible
49
- map_element 'formal-name', to: :formal_name
50
- map_element 'description', to: :description
51
- map_element 'prop', to: :prop
52
- map_element 'use-name', to: :use_name
53
- map_element 'json-key', to: :json_key
54
- map_element 'json-value-key', to: :json_value_key
55
- map_element 'json-value-key-flag', to: :json_value_key_flag
56
- map_element 'flag', to: :flag
57
- map_element 'define-flag', to: :define_flag
58
- map_element 'constraint', to: :constraint
59
- map_element 'remarks', to: :remarks
60
- map_element 'example', to: :example
29
+ map_attribute "name", to: :name
30
+ map_attribute "default", to: :default
31
+ map_attribute "as-type", to: :as_type
32
+ map_attribute "index", to: :index
33
+ map_attribute "scope", to: :scope
34
+ map_attribute "deprecated", to: :deprecated
35
+ map_attribute "collapsible", to: :collapsible
36
+ map_element "formal-name", to: :formal_name
37
+ map_element "description", to: :description
38
+ map_element "prop", to: :prop
39
+ map_element "use-name", to: :use_name
40
+ map_element "json-key", to: :json_key
41
+ map_element "json-value-key", to: :json_value_key
42
+ map_element "json-value-key-flag", to: :json_value_key_flag
43
+ map_element "flag", to: :flag
44
+ map_element "define-flag", to: :define_flag
45
+ map_element "constraint", to: :constraint
46
+ map_element "remarks", to: :remarks
47
+ map_element "example", to: :example
61
48
  end
62
49
  end
63
50
  end
@@ -1,23 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'define_flag_constraints_type'
6
- require_relative 'example_type'
7
- require_relative 'markup_line_datatype'
8
- require_relative 'property_type'
9
- require_relative 'remarks_type'
10
- require_relative 'use_name_type'
11
-
12
3
  module Metaschema
13
4
  class GlobalFlagDefinitionType < Lutaml::Model::Serializable
14
5
  attribute :name, :string
15
6
  attribute :index, :integer
16
- attribute :as_type, :string, default: -> { 'string' }
7
+ attribute :as_type, :string, default: -> { "string" }
17
8
  attribute :default, :string
18
- attribute :scope, :string, default: -> { 'global' }
9
+ attribute :scope, :string, default: -> { "global" }
19
10
  attribute :deprecated, :string
20
- attribute :formal_name, :string
11
+ attribute :formal_name, FormalName
21
12
  attribute :description, MarkupLineDatatype
22
13
  attribute :prop, PropertyType, collection: true
23
14
  attribute :use_name, UseNameType
@@ -26,22 +17,22 @@ module Metaschema
26
17
  attribute :example, ExampleType, collection: true
27
18
 
28
19
  xml do
29
- root 'GlobalFlagDefinitionType'
30
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
20
+ element "GlobalFlagDefinitionType"
21
+ namespace ::Metaschema::Namespace
31
22
 
32
- map_attribute 'name', to: :name
33
- map_attribute 'index', to: :index
34
- map_attribute 'as-type', to: :as_type
35
- map_attribute 'default', to: :default
36
- map_attribute 'scope', to: :scope
37
- map_attribute 'deprecated', to: :deprecated
38
- map_element 'formal-name', to: :formal_name
39
- map_element 'description', to: :description
40
- map_element 'prop', to: :prop
41
- map_element 'use-name', to: :use_name
42
- map_element 'constraint', to: :constraint
43
- map_element 'remarks', to: :remarks
44
- map_element 'example', to: :example
23
+ map_attribute "name", to: :name
24
+ map_attribute "index", to: :index
25
+ map_attribute "as-type", to: :as_type
26
+ map_attribute "default", to: :default
27
+ map_attribute "scope", to: :scope
28
+ map_attribute "deprecated", to: :deprecated
29
+ map_element "formal-name", to: :formal_name
30
+ map_element "description", to: :description
31
+ map_element "prop", to: :prop
32
+ map_element "use-name", to: :use_name
33
+ map_element "constraint", to: :constraint
34
+ map_element "remarks", to: :remarks
35
+ map_element "example", to: :example
45
36
  end
46
37
  end
47
38
  end
@@ -1,20 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
3
  module Metaschema
6
4
  class GroupAsType < Lutaml::Model::Serializable
7
5
  attribute :name, :string
8
- attribute :in_json, :string, default: -> { 'SINGLETON_OR_ARRAY' }
9
- attribute :in_xml, :string, default: -> { 'UNGROUPED' }
6
+ attribute :in_json, :string, default: -> { "SINGLETON_OR_ARRAY" }
7
+ attribute :in_xml, :string, default: -> { "UNGROUPED" }
10
8
 
11
9
  xml do
12
- root 'GroupAsType'
13
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
10
+ element "GroupAsType"
11
+ namespace ::Metaschema::Namespace
14
12
 
15
- map_attribute 'name', to: :name
16
- map_attribute 'in-json', to: :in_json
17
- map_attribute 'in-xml', to: :in_xml
13
+ map_attribute "name", to: :name
14
+ map_attribute "in-json", to: :in_json
15
+ map_attribute "in-xml", to: :in_xml
18
16
  end
19
17
  end
20
18
  end
@@ -1,17 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'markup_line_datatype'
6
- require_relative 'property_type'
7
- require_relative 'remarks_type'
8
- require_relative 'use_name_type'
9
-
10
3
  module Metaschema
11
4
  class GroupedAssemblyReferenceType < Lutaml::Model::Serializable
12
5
  attribute :ref, :string
13
6
  attribute :deprecated, :string
14
- attribute :formal_name, :string
7
+ attribute :formal_name, FormalName
15
8
  attribute :description, MarkupLineDatatype
16
9
  attribute :prop, PropertyType, collection: true
17
10
  attribute :use_name, UseNameType
@@ -19,17 +12,17 @@ module Metaschema
19
12
  attribute :remarks, RemarksType
20
13
 
21
14
  xml do
22
- root 'GroupedAssemblyReferenceType'
23
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
15
+ element "GroupedAssemblyReferenceType"
16
+ namespace ::Metaschema::Namespace
24
17
 
25
- map_attribute 'ref', to: :ref
26
- map_attribute 'deprecated', to: :deprecated
27
- map_element 'formal-name', to: :formal_name
28
- map_element 'description', to: :description
29
- map_element 'prop', to: :prop
30
- map_element 'use-name', to: :use_name
31
- map_element 'discriminator-value', to: :discriminator_value
32
- map_element 'remarks', to: :remarks
18
+ map_attribute "ref", to: :ref
19
+ map_attribute "deprecated", to: :deprecated
20
+ map_element "formal-name", to: :formal_name
21
+ map_element "description", to: :description
22
+ map_element "prop", to: :prop
23
+ map_element "use-name", to: :use_name
24
+ map_element "discriminator-value", to: :discriminator_value
25
+ map_element "remarks", to: :remarks
33
26
  end
34
27
  end
35
28
  end
@@ -1,39 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lutaml/model'
4
-
5
- require_relative 'group_as_type'
6
- require_relative 'grouped_assembly_reference_type'
7
- require_relative 'grouped_field_reference_type'
8
- require_relative 'grouped_inline_assembly_definition_type'
9
- require_relative 'grouped_inline_field_definition_type'
10
- require_relative 'json_key_type'
11
-
12
3
  module Metaschema
13
4
  class GroupedChoiceType < Lutaml::Model::Serializable
14
- attribute :min_occurs, :integer, default: -> { '0' }
15
- attribute :max_occurs, :string, default: -> { 'unbounded' }
5
+ attribute :min_occurs, :integer, default: -> { "0" }
6
+ attribute :max_occurs, :string, default: -> { "unbounded" }
16
7
  attribute :json_key, JsonKeyType
17
8
  attribute :group_as, GroupAsType
18
- attribute :discriminator, :string, default: -> { 'object-type' }
9
+ attribute :discriminator, :string, default: -> { "object-type" }
19
10
  attribute :assembly, GroupedAssemblyReferenceType, collection: true
20
11
  attribute :field, GroupedFieldReferenceType, collection: true
21
- attribute :define_assembly, GroupedInlineAssemblyDefinitionType, collection: true
12
+ attribute :define_assembly, GroupedInlineAssemblyDefinitionType,
13
+ collection: true
22
14
  attribute :define_field, GroupedInlineFieldDefinitionType, collection: true
23
15
 
24
16
  xml do
25
- root 'GroupedChoiceType'
26
- namespace 'http://csrc.nist.gov/ns/oscal/metaschema/1.0'
17
+ element "GroupedChoiceType"
18
+ namespace ::Metaschema::Namespace
27
19
 
28
- map_attribute 'min-occurs', to: :min_occurs
29
- map_attribute 'max-occurs', to: :max_occurs
30
- map_element 'json-key', to: :json_key
31
- map_element 'group-as', to: :group_as
32
- map_element 'discriminator', to: :discriminator
33
- map_element 'field', to: :field
34
- map_element 'define-assembly', to: :define_assembly
35
- map_element 'assembly', to: :assembly
36
- map_element 'define-field', to: :define_field
20
+ map_attribute "min-occurs", to: :min_occurs
21
+ map_attribute "max-occurs", to: :max_occurs
22
+ map_element "json-key", to: :json_key
23
+ map_element "group-as", to: :group_as
24
+ map_element "discriminator", to: :discriminator
25
+ map_element "field", to: :field
26
+ map_element "define-assembly", to: :define_assembly
27
+ map_element "assembly", to: :assembly
28
+ map_element "define-field", to: :define_field
37
29
  end
38
30
  end
39
31
  end