vulcano 0.6.2 → 0.7.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
  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