kwalify_to_json_schema 0.1.3 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18d110d9d28e8bd0a1231dd65df8f8f52063c8bf01e96069a74d577c717ec886
4
- data.tar.gz: 1fd58dd04f1e30d48540f7b55a7f10d75aafd186e75e6ce0b9b6f932ec1f5b6d
3
+ metadata.gz: 0655ac6570cc133063989b7781e8057fe9054ad609a7306411de16d7f3318e20
4
+ data.tar.gz: 49e0cb1f1473f3688b4c3a993c0c0c49057581d640d5f0ec0f131152c76e74df
5
5
  SHA512:
6
- metadata.gz: a5989d6935db5941cb5950e4d8db007fbe1a54bbca5b89e48b27f4e67f3b0747a52d0f95b67ca3c11bb57dcbf07d62a047fff57ef75e7342ffbf5c4652a0d3e2
7
- data.tar.gz: 2acbfa4dd347768e076c02629de054b4c9ddfc5adbbb931ad0fdad9354e105f039e24658ffb1781204a55f1b1032412bc497535a00b323ec3f053bed96d3ec0b
6
+ metadata.gz: 535ae226d987f26c1d4d8d1348486bfaefe6d37e927a80a4b0db3265018758aea2cc3953010706398c9802fc6c55f8cc083216b1bb3d4a325179aa12ef1baefa
7
+ data.tar.gz: fd6257842bc6ec9327152d67f6ae879fc8d5aad8cfc1897d5247b93d6152711a705f53bd244546c8f704f2bcbcf1ce2ccda6455ca3a6ab5c90a8a7710f4d2730
@@ -25,11 +25,11 @@ module KwalifyToJsonSchema
25
25
 
26
26
  desc "convert KWALIFY_SCHEMA_FILE, RESULT_FILE",
27
27
  "Convert a Kwalify schema file to a JSON schema file. The result file extension will decide the format: .json or .yaml"
28
- option :issues_to_description,
29
- :type => :boolean,
30
- :default => false,
31
- :desc => "Will append any conversion issue to the schema description"
32
- option :custom_processing,
28
+ option(*Options.cli_option(Options::ID))
29
+ option(*Options.cli_option(Options::TITLE))
30
+ option(*Options.cli_option(Options::DESCRIPTION))
31
+ option(*Options.cli_option(Options::ISSUES_TO_DESCRIPTION))
32
+ option Options::CUSTOM_PROCESSING,
33
33
  :type => :string,
34
34
  :desc => <<~DESC
35
35
  Allows to provide a pre/post processing file on handled schemas.
@@ -38,10 +38,8 @@ module KwalifyToJsonSchema
38
38
  DESC
39
39
 
40
40
  def convert(kwalify_schema_file, result_file)
41
- opts = {
42
- Options::ISSUES_TO_DESCRIPTION => options[:issues_to_description],
43
- Options::CUSTOM_PROCESSING => custom_processing(options),
44
- }
41
+ opts = options.dup
42
+ opts[Options::CUSTOM_PROCESSING] = custom_processing(options)
45
43
  KwalifyToJsonSchema.convert_file(kwalify_schema_file, result_file, opts)
46
44
  end
47
45
 
@@ -49,10 +47,7 @@ module KwalifyToJsonSchema
49
47
 
50
48
  desc "convert_dir KWALIFY_SCHEMA_DIR, RESULT_DIR",
51
49
  "Convert all the Kwalify schema from a directory to a JSON schema"
52
- option :issues_to_description,
53
- :type => :boolean,
54
- :default => false,
55
- :desc => "Will append any conversion issue to the schema description"
50
+ option(*Options.cli_option(:issues_to_description))
56
51
  option :format,
57
52
  :type => :string,
58
53
  :enum => ["json", "yaml"],
@@ -63,7 +58,7 @@ module KwalifyToJsonSchema
63
58
  :default => false,
64
59
  :desc => "Process files recursively",
65
60
  :long_desc => ""
66
- option :custom_processing,
61
+ option Options::CUSTOM_PROCESSING,
67
62
  :type => :string,
68
63
  :desc => <<~DESC
69
64
  Allows to provide a pre/post processing file on handled schemas.
@@ -98,7 +93,7 @@ module KwalifyToJsonSchema
98
93
  begin
99
94
  processing_class = Object.const_get :CustomProcessing
100
95
  custom_processing = processing_class.new
101
- rescue NameError => e
96
+ rescue NameError
102
97
  raise "The 'CustomProcessing' module must be defined in #{pf}"
103
98
  end
104
99
  end
@@ -19,13 +19,13 @@ module KwalifyToJsonSchema
19
19
  attr_reader :issues
20
20
 
21
21
  # Converter options:
22
- # | Name | Type | Default value| Description |
23
- # |-----------------------|--------|--------------|-----------------------------------------------------|
24
- # | :id | String | nil | The JSON schema identifier |
25
- # | :title | String | nil | The JSON schema title |
26
- # | :description | String | nil | The JSON schema description |
27
- # | :issues_to_description| Boolean| false | To append the issuses to the JSON schema description|
28
- # | :custom_processing | Object | nil | To customize the conversion |
22
+ # | Name | Type | Default value| Description |
23
+ # |-----------------------|--------|--------------|------------------------------------------------------------------------------------------|
24
+ # | :id | string | nil | The JSON schema identifier |
25
+ # | :title | string | nil | The JSON schema title |
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 issuses to the JSON schema description |
28
+ # | :custom_processing | object | nil | To customize the conversion |
29
29
  # --
30
30
  def initialize(options_hash = {})
31
31
  @options = Options.new(options_hash)
@@ -46,6 +46,9 @@ module KwalifyToJsonSchema
46
46
  description << issues.map { |issue| "* #{issue}" }.join("\n")
47
47
  end
48
48
 
49
+ # Override description if given in option
50
+ json_schema["description"] = options.description if options.description
51
+
49
52
  postprocess(json_schema)
50
53
  end
51
54
 
@@ -56,7 +59,6 @@ module KwalifyToJsonSchema
56
59
  "$schema" => SCHEMA,
57
60
  "$id" => options.id,
58
61
  "title" => options.title,
59
- "description" => options.description,
60
62
  }.reject { |k, v| v.nil? }
61
63
  end
62
64
 
@@ -5,13 +5,13 @@ module KwalifyToJsonSchema
5
5
  # The file extension is used to select the format: .json or .yaml.
6
6
  # Other extension will fallback to JSON.
7
7
  # Converter options:
8
- # | Name | Type | Default value| Description |
9
- # |-----------------------|--------|--------------|-----------------------------------------------------|
10
- # | :id | String | nil | The JSON schema identifier |
11
- # | :title | String | nil | The JSON schema title |
12
- # | :description | String | nil | The JSON schema description |
13
- # | :issues_to_description| Boolean| false | To append the issuses to the JSON schema description|
14
- # | :custom_processing | Object | nil | To customize the conversion |
8
+ # | Name | Type | Default value| Description |
9
+ # |-----------------------|--------|--------------|------------------------------------------------------------------------------------------|
10
+ # | :id | string | nil | The JSON schema identifier |
11
+ # | :title | string | nil | The JSON schema title |
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 issuses to the JSON schema description |
14
+ # | :custom_processing | object | nil | To customize the conversion |
15
15
  # --
16
16
  # @param source Path to Kwalify YAML schema
17
17
  # @param dest Path to resulting JSON schema
@@ -28,13 +28,13 @@ module KwalifyToJsonSchema
28
28
  # The source and destination strings can be JSON or YAML.
29
29
  # Other extension will fallback to JSON.
30
30
  # Converter options:
31
- # | Name | Type | Default value| Description |
32
- # |-----------------------|--------|--------------|-----------------------------------------------------|
33
- # | :id | String | nil | The JSON schema identifier |
34
- # | :title | String | nil | The JSON schema title |
35
- # | :description | String | nil | The JSON schema description |
36
- # | :issues_to_description| Boolean| false | To append the issuses to the JSON schema description|
37
- # | :custom_processing | Object | nil | To customize the conversion |
31
+ # | Name | Type | Default value| Description |
32
+ # |-----------------------|--------|--------------|------------------------------------------------------------------------------------------|
33
+ # | :id | string | nil | The JSON schema identifier |
34
+ # | :title | string | nil | The JSON schema title |
35
+ # | :description | string | nil | The JSON schema description. If not given the Kwalify description will be used if present|
36
+ # | :issues_to_description| boolean| false | To append the issuses to the JSON schema description |
37
+ # | :custom_processing | object | nil | To customize the conversion |
38
38
  # --
39
39
  # @param kwalify_schema Kwalify schema as YAML or JSON
40
40
  # @param source_format format of the source schema
@@ -2,20 +2,20 @@ module KwalifyToJsonSchema
2
2
  # The possible options for the conversion and the associated accessors
3
3
  class Options
4
4
  # Converter options:
5
- # | Name | Type | Default value| Description |
6
- # |-----------------------|--------|--------------|-----------------------------------------------------|
7
- # | :id | String | nil | The JSON schema identifier |
8
- # | :title | String | nil | The JSON schema title |
9
- # | :description | String | nil | The JSON schema description |
10
- # | :issues_to_description| Boolean| false | To append the issuses to the JSON schema description|
11
- # | :custom_processing | Object | nil | To customize the conversion |
5
+ # | Name | Type | Default value| Description |
6
+ # |-----------------------|--------|--------------|------------------------------------------------------------------------------------------|
7
+ # | :id | string | nil | The JSON schema identifier |
8
+ # | :title | string | nil | The JSON schema title |
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 issuses to the JSON schema description |
11
+ # | :custom_processing | object | nil | To customize the conversion |
12
12
  # --
13
13
  DECLARATION = %q(
14
- ID # The JSON schema identifier [String] (nil)
15
- TITLE # The JSON schema title [String] (nil)
16
- DESCRIPTION # The JSON schema description [String] (nil)
17
- ISSUES_TO_DESCRIPTION # To append the issuses to the JSON schema description [Boolean] (false)
18
- CUSTOM_PROCESSING # To customize the conversion [Object] (nil)
14
+ ID # The JSON schema identifier [string] (nil)
15
+ TITLE # The JSON schema title [string] (nil)
16
+ DESCRIPTION # The JSON schema description. If not given the Kwalify description will be used if present [string] (nil)
17
+ ISSUES_TO_DESCRIPTION # To append the issuses to the JSON schema description [boolean] (false)
18
+ CUSTOM_PROCESSING # To customize the conversion [object] (nil)
19
19
  )
20
20
 
21
21
  # The options as Hash
@@ -40,13 +40,13 @@ module KwalifyToJsonSchema
40
40
  default_value = eval(default_value)
41
41
 
42
42
  # Create read accessor
43
- attr_reader_name = "#{name}#{type == "Boolean" ? "?" : ""}"
43
+ attr_reader_name = "#{name}#{type == "boolean" ? "?" : ""}"
44
44
 
45
45
  # Array entry as Hash for the option
46
46
  {
47
47
  const_name: const_name,
48
48
  const_name_full: "#{Options.name}::#{const_name}",
49
- name: name,
49
+ name: name.to_sym,
50
50
  description: description,
51
51
  type: type,
52
52
  default_value: default_value,
@@ -55,6 +55,11 @@ module KwalifyToJsonSchema
55
55
  }.compact
56
56
  end
57
57
 
58
+ # Same as :parse but give a Hash with the name as key
59
+ def self.parse_hash
60
+ parse.map { |e| [e[:name], e] }.to_h
61
+ end
62
+
58
63
  # Setup the constants and methods for the options
59
64
  # Example: ID will lead to get ID constant and :id method
60
65
  def self.setup
@@ -69,6 +74,12 @@ module KwalifyToJsonSchema
69
74
  }
70
75
  end
71
76
 
77
+ # Get description for option name
78
+ def self.cli_option(name)
79
+ o = parse_hash[name]
80
+ [o[:name], :type => o[:type].to_sym, :default => o[:default_value], :desc => o[:description]]
81
+ end
82
+
72
83
  setup
73
84
  end
74
85
  end
@@ -25,7 +25,7 @@ module KwalifyToJsonSchema
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
- serializer = { "json" => Json, "yaml" => Yaml }[format] || Json
28
+ { "json" => Json, "yaml" => Yaml }[format] || Json
29
29
  end
30
30
 
31
31
  class Language
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kwalify_to_json_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Gamot