kwalify_to_json_schema 0.5.0 → 0.6.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/lib/kwalify_to_json_schema/cli.rb +2 -2
- data/lib/kwalify_to_json_schema/converter.rb +21 -10
- data/lib/kwalify_to_json_schema/kwalify_to_json_schema.rb +4 -4
- data/lib/kwalify_to_json_schema/limitations.rb +2 -2
- data/lib/kwalify_to_json_schema/options.rb +4 -4
- data/lib/kwalify_to_json_schema/serialization.rb +8 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24ea47c83c28031d1630aa6460ab29125ee794b7b1ddfff220e4ec544a7b3c43
|
4
|
+
data.tar.gz: 3147694baf5304f1ed35298c8626584befbabfeca7313a5d100c275ce3882f48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5606734e11c35ab09d8eb671d1839d66a72b09cc9620fca6c66bd5ae43d5e713dc0cbb9aeaf839bcea91635bb136656861c69dd2b9b9705d8b8de838bd4773b9
|
7
|
+
data.tar.gz: 1fe43731e2afac08c7a0bfe6813c57c33219c84583a4adee8c6cc4ee92f93183040aeb26c139abbe8e3fc1344c4d1ebd5c03a4e9afe9d848805816f88e60723e
|
@@ -24,7 +24,7 @@ module KwalifyToJsonSchema
|
|
24
24
|
CODE
|
25
25
|
|
26
26
|
desc "convert KWALIFY_SCHEMA_FILE, RESULT_FILE",
|
27
|
-
"Convert a Kwalify schema file to a JSON schema file. The result file extension will decide the format: .json or .
|
27
|
+
"Convert a Kwalify schema file to a JSON schema file. The result file extension will decide the format: .json, .yaml or .yml"
|
28
28
|
option(*Options.cli_option(Options::ID))
|
29
29
|
option(*Options.cli_option(Options::TITLE))
|
30
30
|
option(*Options.cli_option(Options::DESCRIPTION))
|
@@ -75,7 +75,7 @@ module KwalifyToJsonSchema
|
|
75
75
|
opts = options.dup
|
76
76
|
opts[Options::CUSTOM_PROCESSING] = custom_processing(options)
|
77
77
|
|
78
|
-
path = [kwalify_schema_dir, options["recursive"] ? "**" : nil, "*.yaml"].compact
|
78
|
+
path = [kwalify_schema_dir, options["recursive"] ? "**" : nil, "*.{yaml,yml}"].compact
|
79
79
|
Dir.glob(File.join(*path)).each { |kwalify_schema_file|
|
80
80
|
result_file = File.join(result_dir, File.basename(kwalify_schema_file, File.extname(kwalify_schema_file))) + ".#{options["format"]}"
|
81
81
|
KwalifyToJsonSchema.convert_file(kwalify_schema_file, result_file, opts)
|
@@ -24,8 +24,8 @@ module KwalifyToJsonSchema
|
|
24
24
|
# | :id | string | nil | The JSON schema identifier |
|
25
25
|
# | :title | string | nil | The JSON schema title |
|
26
26
|
# | :description | string | nil | The JSON schema description. If not given the Kwalify description will be used if present|
|
27
|
-
# | :issues_to_description| boolean| false | To append the
|
28
|
-
# | :issues_to_stderr | boolean| false | To write the
|
27
|
+
# | :issues_to_description| boolean| false | To append the issues to the JSON schema description |
|
28
|
+
# | :issues_to_stderr | boolean| false | To write the issues to standard error output |
|
29
29
|
# | :custom_processing | object | nil | To customize the conversion |
|
30
30
|
# | :schema_version | string | "draft-04" | JSON schema version. Changing this value only change the value of $schema field |
|
31
31
|
# | :verbose | boolean| false | To be verbose when converting |
|
@@ -85,13 +85,18 @@ module KwalifyToJsonSchema
|
|
85
85
|
if mapping.is_a? Hash
|
86
86
|
properties = target["properties"] = {}
|
87
87
|
mapping.each_pair { |name, e|
|
88
|
-
#
|
88
|
+
# Handle partial support of mapping default value
|
89
|
+
# Only default rule is supported (see http://www.kuwata-lab.com/kwalify/ruby/users-guide.02.html#tips-default)
|
89
90
|
if name == "="
|
90
|
-
|
91
|
-
|
91
|
+
if e.is_a?(Hash)
|
92
|
+
process(target["additionalProperties"] = {}, e, path)
|
93
|
+
else
|
94
|
+
new_issue path, Limitations::ONLY_DEFAULT_RULE_SUPPORTED_FOR_DEFAULT_MAPPING
|
95
|
+
end
|
96
|
+
else
|
97
|
+
process(properties[name] = {}, e, path + [name])
|
98
|
+
required << name if e["required"] == true
|
92
99
|
end
|
93
|
-
process(properties[name] = {}, e, path + [name])
|
94
|
-
required << name if e["required"] == true
|
95
100
|
}
|
96
101
|
target["required"] = required unless required.empty?
|
97
102
|
end
|
@@ -99,7 +104,13 @@ module KwalifyToJsonSchema
|
|
99
104
|
target["type"] = "array"
|
100
105
|
sequence = kelem["sequence"]
|
101
106
|
if sequence.is_a? Array
|
102
|
-
|
107
|
+
rule = sequence.first
|
108
|
+
if rule["unique"]
|
109
|
+
target["uniqueItems"] = true
|
110
|
+
rule = rule.dup
|
111
|
+
rule.delete("unique")
|
112
|
+
end
|
113
|
+
process(target["items"] = {}, rule)
|
103
114
|
end
|
104
115
|
when "str"
|
105
116
|
target["type"] = "string"
|
@@ -135,7 +146,7 @@ module KwalifyToJsonSchema
|
|
135
146
|
when "any"
|
136
147
|
# Don't put type
|
137
148
|
else
|
138
|
-
new_issue("Unknown Kwalify type #{ktype}")
|
149
|
+
new_issue(path, "Unknown Kwalify type #{ktype}")
|
139
150
|
end
|
140
151
|
|
141
152
|
target["enum"] = kelem["enum"] if kelem["enum"]
|
@@ -166,7 +177,7 @@ module KwalifyToJsonSchema
|
|
166
177
|
end
|
167
178
|
end
|
168
179
|
|
169
|
-
new_issue path, Limitations::
|
180
|
+
new_issue path, Limitations::UNIQUE_NOT_SUPPORTED_WITHIN_MAPPING if kelem["unique"]
|
170
181
|
|
171
182
|
target
|
172
183
|
end
|
@@ -10,8 +10,8 @@ module KwalifyToJsonSchema
|
|
10
10
|
# | :id | string | nil | The JSON schema identifier |
|
11
11
|
# | :title | string | nil | The JSON schema title |
|
12
12
|
# | :description | string | nil | The JSON schema description. If not given the Kwalify description will be used if present|
|
13
|
-
# | :issues_to_description| boolean| false | To append the
|
14
|
-
# | :issues_to_stderr | boolean| false | To write the
|
13
|
+
# | :issues_to_description| boolean| false | To append the issues to the JSON schema description |
|
14
|
+
# | :issues_to_stderr | boolean| false | To write the issues to standard error output |
|
15
15
|
# | :custom_processing | object | nil | To customize the conversion |
|
16
16
|
# | :schema_version | string | "draft-04" | JSON schema version. Changing this value only change the value of $schema field |
|
17
17
|
# | :verbose | boolean| false | To be verbose when converting |
|
@@ -39,8 +39,8 @@ module KwalifyToJsonSchema
|
|
39
39
|
# | :id | string | nil | The JSON schema identifier |
|
40
40
|
# | :title | string | nil | The JSON schema title |
|
41
41
|
# | :description | string | nil | The JSON schema description. If not given the Kwalify description will be used if present|
|
42
|
-
# | :issues_to_description| boolean| false | To append the
|
43
|
-
# | :issues_to_stderr | boolean| false | To write the
|
42
|
+
# | :issues_to_description| boolean| false | To append the issues to the JSON schema description |
|
43
|
+
# | :issues_to_stderr | boolean| false | To write the issues to standard error output |
|
44
44
|
# | :custom_processing | object | nil | To customize the conversion |
|
45
45
|
# | :schema_version | string | "draft-04" | JSON schema version. Changing this value only change the value of $schema field |
|
46
46
|
# | :verbose | boolean| false | To be verbose when converting |
|
@@ -4,7 +4,7 @@ module KwalifyToJsonSchema
|
|
4
4
|
DATE_TYPE_NOT_IMPLEMENTED = "Kwalify 'date' type is not supported and is ignored"
|
5
5
|
TIME_TYPE_NOT_IMPLEMENTED = "Kwalify 'time' type is not supported and is ignored"
|
6
6
|
TIMESTAMP_TYPE_NOT_IMPLEMENTED = "Kwalify 'timestamp' type is not supported and is ignored"
|
7
|
-
|
8
|
-
|
7
|
+
UNIQUE_NOT_SUPPORTED_WITHIN_MAPPING = "Kwalify 'unique' within a mapping is not supported by JSON Schema and is ignored"
|
8
|
+
ONLY_DEFAULT_RULE_SUPPORTED_FOR_DEFAULT_MAPPING = "Kwalify mapping default value is not supported by JSON Schema and is ignored. Only default rule is supported"
|
9
9
|
end
|
10
10
|
end
|
@@ -7,8 +7,8 @@ module KwalifyToJsonSchema
|
|
7
7
|
# | :id | string | nil | The JSON schema identifier |
|
8
8
|
# | :title | string | nil | The JSON schema title |
|
9
9
|
# | :description | string | nil | The JSON schema description. If not given the Kwalify description will be used if present|
|
10
|
-
# | :issues_to_description| boolean| false | To append the
|
11
|
-
# | :issues_to_stderr | boolean| false | To write the
|
10
|
+
# | :issues_to_description| boolean| false | To append the issues to the JSON schema description |
|
11
|
+
# | :issues_to_stderr | boolean| false | To write the issues to standard error output |
|
12
12
|
# | :custom_processing | object | nil | To customize the conversion |
|
13
13
|
# | :schema_version | string | "draft-04" | JSON schema version. Changing this value only change the value of $schema field |
|
14
14
|
# | :verbose | boolean| false | To be verbose when converting |
|
@@ -17,8 +17,8 @@ module KwalifyToJsonSchema
|
|
17
17
|
ID # The JSON schema identifier [string] (nil)
|
18
18
|
TITLE # The JSON schema title [string] (nil)
|
19
19
|
DESCRIPTION # The JSON schema description. If not given the Kwalify description will be used if present [string] (nil)
|
20
|
-
ISSUES_TO_DESCRIPTION # To append the
|
21
|
-
ISSUES_TO_STDERR # To write the
|
20
|
+
ISSUES_TO_DESCRIPTION # To append the issues to the JSON schema description [boolean] (false)
|
21
|
+
ISSUES_TO_STDERR # To write the issues to standard error output [boolean] (false)
|
22
22
|
CUSTOM_PROCESSING # To customize the conversion [object] (nil)
|
23
23
|
SCHEMA_VERSION # JSON schema version. Changing this value only change the value of $schema field[string] ("draft-04")
|
24
24
|
VERBOSE # To be verbose when converting [boolean] (false)
|
@@ -18,14 +18,20 @@ module KwalifyToJsonSchema
|
|
18
18
|
serialization_for_format(format).serialize(object)
|
19
19
|
end
|
20
20
|
|
21
|
-
# @return a Hash giving serialization/deserialization module and methods for a given file extension (.json/.yaml)
|
21
|
+
# @return a Hash giving serialization/deserialization module and methods for a given file extension (.json/.yaml/.yml)
|
22
22
|
def self.serialization_for_file(file)
|
23
23
|
serialization_for_format(File.extname(file)[1..-1])
|
24
24
|
end
|
25
25
|
|
26
26
|
# @return a Hash giving serialization/deserialization module and methods for a format (json/yaml)
|
27
27
|
def self.serialization_for_format(format)
|
28
|
-
|
28
|
+
mod = {
|
29
|
+
"json" => Json,
|
30
|
+
"yaml" => Yaml,
|
31
|
+
"yml" => Yaml,
|
32
|
+
}[format]
|
33
|
+
raise "Unsupported format '#{format}'" unless mod
|
34
|
+
mod
|
29
35
|
end
|
30
36
|
|
31
37
|
class Language
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kwalify_to_json_schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Gamot
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|