kwalify_to_json_schema 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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