vulcano 0.6.2 → 0.7.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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/vulcano/codable_generator.rb +7 -7
- data/lib/vulcano/parsed_class.rb +5 -1
- data/lib/vulcano/version.rb +1 -1
- data/lib/vulcano.rb +9 -1
- data/resources/TemplateFile.swift +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8321bbfa2fec6b2364797671e98be8b492271502
|
4
|
+
data.tar.gz: fe982cac6d4748c8345e3c0ae26d0785c497a876
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a658b32cd5c2f85aa9dd7868c823ecfb43f2b8b50ed877cb2fe4fbf76f60c9b03857c7933091c6a53a346ad9ba091c11b78cbfe70c9a6091d2883c905e948eb1
|
7
|
+
data.tar.gz: fe38eac69b6af13202c09c26fd6fa4e101e803642376a882a4f010510ebcf229ddb5800908c892d8ec1f415eaead2f549274f7e6df7ff541b01bafaa79738db2
|
data/Gemfile.lock
CHANGED
@@ -3,23 +3,23 @@ require "vulcano/parsed_variable"
|
|
3
3
|
|
4
4
|
module Vulcano
|
5
5
|
class CodableGenerator
|
6
|
-
def generate_codable_file(json, destination_folder, className
|
6
|
+
def generate_codable_file(json, destination_folder, options, className)
|
7
7
|
if json.is_a?(Array)
|
8
|
-
generate_codable_file(json.first, destination_folder, className)
|
8
|
+
generate_codable_file(json.first, destination_folder, options, className)
|
9
9
|
return
|
10
10
|
end
|
11
11
|
|
12
12
|
variables = []
|
13
13
|
|
14
14
|
json.each do |key, value|
|
15
|
-
parsed_object = parse_object(destination_folder, key, value)
|
15
|
+
parsed_object = parse_object(destination_folder, options, key, value)
|
16
16
|
|
17
17
|
variables.push(parsed_object) unless parsed_object.nil?
|
18
18
|
end
|
19
19
|
|
20
20
|
name = className.nil? ? 'Generated' : className
|
21
21
|
|
22
|
-
parsed_class = ParsedClass.new(name, variables)
|
22
|
+
parsed_class = ParsedClass.new(name, variables, !(options[:public].nil?), options[:use_classes].nil?)
|
23
23
|
|
24
24
|
spec = Gem::Specification.find_by_name('vulcano')
|
25
25
|
template = File.read("#{spec.gem_dir}/resources/TemplateFile.swift")
|
@@ -30,13 +30,13 @@ module Vulcano
|
|
30
30
|
File.open("#{destination_folder}/#{name}.swift", 'w') { |f| f.write(result) }
|
31
31
|
end
|
32
32
|
|
33
|
-
def parse_object(destination_folder, key, value)
|
33
|
+
def parse_object(destination_folder, options, key, value)
|
34
34
|
return nil if value.is_a?(Array) && value.size == 0
|
35
|
-
return parse_object(destination_folder, key, value.first).array if value.is_a?(Array)
|
35
|
+
return parse_object(destination_folder, options, key, value.first).array if value.is_a?(Array)
|
36
36
|
return nil if value.nil?
|
37
37
|
|
38
38
|
if value.is_a?(Hash)
|
39
|
-
generate_codable_file(value, destination_folder, class_name_from_key(key))
|
39
|
+
generate_codable_file(value, destination_folder, options, class_name_from_key(key))
|
40
40
|
end
|
41
41
|
|
42
42
|
ParsedVariable.new(key, value)
|
data/lib/vulcano/parsed_class.rb
CHANGED
@@ -5,11 +5,15 @@ module Vulcano
|
|
5
5
|
attr_reader :name
|
6
6
|
attr_reader :variables
|
7
7
|
attr_reader :codable_keys
|
8
|
+
attr_reader :is_public
|
9
|
+
attr_reader :is_struct
|
8
10
|
|
9
|
-
def initialize(name, variables)
|
11
|
+
def initialize(name, variables, is_public, is_struct)
|
12
|
+
@is_public = is_public
|
10
13
|
@name = name
|
11
14
|
@variables = variables
|
12
15
|
@codable_keys = codable_keys
|
16
|
+
@is_struct = is_struct
|
13
17
|
end
|
14
18
|
|
15
19
|
def class_binding
|
data/lib/vulcano/version.rb
CHANGED
data/lib/vulcano.rb
CHANGED
@@ -15,7 +15,7 @@ module Vulcano
|
|
15
15
|
json_path = ARGV[0]
|
16
16
|
destination_folder = options[:destination_folder].nil? ? "." : options[:destination_folder]
|
17
17
|
json = JsonReader.new.read_from_file(json_path)
|
18
|
-
CodableGenerator.new.generate_codable_file(json, destination_folder, options[:class_name])
|
18
|
+
CodableGenerator.new.generate_codable_file(json, destination_folder, options, options[:class_name])
|
19
19
|
end
|
20
20
|
|
21
21
|
def parse_options
|
@@ -31,6 +31,14 @@ module Vulcano
|
|
31
31
|
opts.on("-n", "--class-name CLASS_NAME", String, "Name for the generated class (the default name is 'Generated')") do |class_name|
|
32
32
|
options[:class_name] = class_name
|
33
33
|
end
|
34
|
+
|
35
|
+
opts.on("-p", "--public", "Generates all the objects as public objects") do |is_public|
|
36
|
+
options[:public] = is_public
|
37
|
+
end
|
38
|
+
|
39
|
+
opts.on("-c", "--use-classes", "Generates classes instead of structs") do |use_classes|
|
40
|
+
options[:use_classes] = use_classes
|
41
|
+
end
|
34
42
|
end.parse!
|
35
43
|
|
36
44
|
return options
|
@@ -4,8 +4,8 @@
|
|
4
4
|
// Generated with Vulcano https://rubygems.org/gems/vulcano
|
5
5
|
//
|
6
6
|
|
7
|
-
class <%= @name %>: Codable {<% for @variable in @variables %>
|
8
|
-
var <%= @variable.name %>: <%= @variable.type %><% end %><% if (@codable_keys != nil) then %>
|
7
|
+
<% if is_public then %>public <% end %><% if is_struct then %>struct<% else %>class<% end %> <%= @name %>: Codable {<% for @variable in @variables %>
|
8
|
+
<% if is_public then %>public <% end %>var <%= @variable.name %>: <%= @variable.type %><% end %><% if (@codable_keys != nil) then %>
|
9
9
|
|
10
10
|
enum CodingKeys: String, CodingKey { <% for @codable_key in @codable_keys %>
|
11
11
|
<% if (@codable_key.codable_name != nil) then %> case <%= @codable_key.codable_name %> = "<%= @codable_key.original_name %>"<% else %> case <%= @codable_key.original_name %><% end %><% end %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vulcano
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Franco Meloni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|