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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e9936810f307e280d9cf047a82bf8188b4ee07d3
4
- data.tar.gz: baa7200f85f8464e923f603795f3cd661929e6d8
3
+ metadata.gz: 8321bbfa2fec6b2364797671e98be8b492271502
4
+ data.tar.gz: fe982cac6d4748c8345e3c0ae26d0785c497a876
5
5
  SHA512:
6
- metadata.gz: 1f6a701340d20417def057c970ed0ebc8de4b03149faf5403a4cc7173abd8221916246788add177dbc3167e216e8ef3a939c6907b97cba225622d492a18263ff
7
- data.tar.gz: 4db1f9280f5c94fd034c8dc5bbd81d3234f23aeee2d03fc8ae44aa17b3acbcb0ed83c25f2f15be4af4121499b3ce99892bec60e50ddfad6c6d6153a90808a383
6
+ metadata.gz: a658b32cd5c2f85aa9dd7868c823ecfb43f2b8b50ed877cb2fe4fbf76f60c9b03857c7933091c6a53a346ad9ba091c11b78cbfe70c9a6091d2883c905e948eb1
7
+ data.tar.gz: fe38eac69b6af13202c09c26fd6fa4e101e803642376a882a4f010510ebcf229ddb5800908c892d8ec1f415eaead2f549274f7e6df7ff541b01bafaa79738db2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vulcano (0.5.0)
4
+ vulcano (0.6.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -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 = nil)
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)
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Vulcano
2
- VERSION = "0.6.2"
2
+ VERSION = "0.7.0"
3
3
  end
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.6.2
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-02 00:00:00.000000000 Z
11
+ date: 2018-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler