j2j 0.1.0 → 0.1.1

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: 84fd8b9d66de4ebe990dc1ad1a3e292e00160504
4
- data.tar.gz: 4343f9fffd5ce38e453026bf2ae6088af599d1e0
3
+ metadata.gz: f31a54131544c0d9cac9547e566d71a1ad62af81
4
+ data.tar.gz: f2c2a12b448256f333cc721e715471ba8fad3d7d
5
5
  SHA512:
6
- metadata.gz: 7eaeb5161c90b0880fb2888783fb938b0f6a423a470364b99bb1be95d4fd8d894f3fd16b0ef64fdb1e75609cdee2ed6a6769059e141588023d4edce9bed87b69
7
- data.tar.gz: 4a71c2f34ef25cb75013294a5e0d84fd08e160ef7dc0b6c1b23c063e7caf5e32e636a28c2cbc5349422561381b5c08b3b920d2035cc6ab4e454f89a247b70f4f
6
+ metadata.gz: 0ca8381d43e8d5e49197a4910097f09bca5cf92f60f036b4797ad3bda16c29cc7c209e0811b78634434bc531b9f710ce960411d33937a9c438e98bd5ebcc2e1a
7
+ data.tar.gz: 715cfdf1418cf60a3b80ba6a8abb67fae467f4a985f132086bcc2f6307d68df2ae6be0696f120beda444f91738ccc91ae25389f57d3afa074699451e79f4d68c
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ j2j
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.1
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ cache: bundler
3
+
4
+ rvm:
5
+ - 2.2.1
6
+ before_install: gem install bundler -v 1.10.6
7
+
8
+ script: 'bundle exec rake'
9
+
10
+ notifications:
11
+ email:
12
+ recipients:
13
+ - cesar.manuel.ferreira@gmail.com
14
+ on_failure: change
15
+ on_success: never
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in j2j.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,11 @@
1
+ guard 'rspec' do
2
+ # watch /lib/ files
3
+ watch(%r{^lib/(.+).rb$}) do |m|
4
+ "spec/#{m[1]}_spec.rb"
5
+ end
6
+
7
+ # watch /spec/ files
8
+ watch(%r{^spec/(.+).rb$}) do |m|
9
+ "spec/#{m[1]}.rb"
10
+ end
11
+ end
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 César Ferreira
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # J2j
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/j2j`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'j2j'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install j2j
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake false` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/j2j.
36
+
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'rspec/core/rake_task'
2
+ require 'bundler/gem_tasks'
3
+
4
+ # Default directory to look in is `/specs`
5
+ # Run with `rake spec`
6
+ RSpec::Core::RakeTask.new(:spec) do |task|
7
+ task.rspec_opts = ['--color', '--format', 'nested']
8
+ end
9
+
10
+ task :default => :spec
data/bin/j2j ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "j2j"
5
+
6
+ J2j::Cli.start(ARGV.dup.unshift("json"))
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
data/j2j.gemspec ADDED
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'j2j/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "j2j"
8
+ spec.version = J2j::VERSION
9
+ spec.authors = ["cesar ferreira"]
10
+ spec.email = ["cesar.manuel.ferreira@gmail.com"]
11
+
12
+ spec.license = 'MIT'
13
+ spec.summary = %q{Convert any file.json to Classe.java files}
14
+ spec.description = %q{Convert any file.json to Classe.java files}
15
+ spec.homepage = "https://github.com/cesarferreira/j2j"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "bin"
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.10"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "guard"
25
+ spec.add_development_dependency "guard-rspec"
26
+ spec.add_development_dependency "coveralls"
27
+
28
+ spec.add_dependency 'pry-byebug', '~> 3.1'
29
+ spec.add_dependency 'thor', '~> 0.19.1'
30
+ spec.add_dependency 'colorize', '~> 0.7'
31
+ spec.add_dependency 'json', '~> 1.8.3'
32
+
33
+
34
+ end
@@ -0,0 +1,20 @@
1
+ #
2
+ # Set default values here, some can be overridden on command line
3
+ #
4
+ class Configurator
5
+ attr_accessor :package, :json_file, :top_level_class,
6
+ :output_directory,
7
+ :unknown_class,
8
+ :json_property_import, :json_serialize_import
9
+
10
+ def initialize
11
+
12
+ # If types cannot be inferred from example json, they will be represented with Object unless overridden.
13
+ # In which case, UNKNOWN will be used. This will prohibit the class from compiling.
14
+ self.unknown_class = "Object"
15
+
16
+ self.json_property_import = "import java.util.date;"
17
+ self.json_serialize_import = "import com.google.gson.annotations.SerializedName;"
18
+
19
+ end
20
+ end
@@ -0,0 +1,333 @@
1
+ require 'json'
2
+ require 'pry'
3
+
4
+ require_relative './configurator'
5
+ require_relative './field_details'
6
+
7
+
8
+ @java_classes = {}
9
+ @java_fields = {}
10
+ @java_lists = {}
11
+ @field_info = {}
12
+
13
+ ##
14
+ ## GET JAVA TYPES
15
+ ##
16
+ def get_java_type(value, field_details, key)
17
+ field_details.write_class_file = false
18
+ java_type = @config.unknown_class
19
+
20
+ if value.is_a?(Fixnum)
21
+ java_type = "Long"
22
+ elsif value.is_a?(Float)
23
+ java_type = "Double"
24
+ elsif value.is_a?(Array)
25
+ inner_value = get_java_type(value[0], field_details, key)
26
+ if inner_value == @config.unknown_class
27
+ inner_value = to_java_class_name(key)
28
+ if @do_chop
29
+ inner_value.chop!
30
+ end
31
+ inner_value = add_class_prefix_and_suffix(inner_value)
32
+ setup_data(value[0], key)
33
+ field_details.write_class_file = true
34
+ end
35
+ java_type = "List<" + inner_value + ">"
36
+ elsif value.is_a?(String)
37
+ java_type = "String"
38
+ elsif value.is_a?(TrueClass) || value.is_a?(FalseClass)
39
+ java_type = "Boolean"
40
+ end
41
+ return java_type;
42
+ end
43
+
44
+
45
+ ##
46
+ ## PROCESS ARRAY
47
+ ##
48
+ def process_array(value, field_details, key, parent)
49
+ field_details.type = "Array"
50
+ @java_classes[key] = parent
51
+ @java_lists[key] = parent
52
+ if value[0].is_a?(Hash)
53
+ setup_data(value[0], key)
54
+ else
55
+ field_details.array_type = get_java_type(value[0], field_details, key)
56
+ end
57
+ end
58
+
59
+
60
+ ##
61
+ ## SETUP THE DATA
62
+ ##
63
+ def setup_data(hash, parent)
64
+ @java_fields[parent] = []
65
+ hash.each do |key,value|
66
+ field_details = FieldDetails.new
67
+ field_details.field_name = key
68
+ field_details.parent = parent
69
+ field_details.write_class_file = true
70
+ if value.is_a?(Array)
71
+ process_array(value, field_details, key, parent)
72
+ elsif value.is_a?(Hash)
73
+ @java_classes[key] = parent
74
+ field_details.type = "Hash"
75
+ setup_data(value, key)
76
+ else
77
+ field_details.type = get_java_type(value, field_details, key)
78
+ end
79
+ @field_info[key] = field_details
80
+ @java_fields[parent] = @java_fields[parent] + [ key ]
81
+ end
82
+
83
+ end
84
+
85
+
86
+
87
+ ##
88
+ ## TO JAVA CLASS NAME
89
+ ##
90
+ def to_java_class_name(class_name)
91
+ java_class_name = ""
92
+ separator = false
93
+ first = true
94
+ class_name.each_char do |c|
95
+ if separator or first
96
+ java_class_name = java_class_name + c.to_s.upcase
97
+ separator = false
98
+ first = false
99
+ else
100
+ case c
101
+ when '-'
102
+ when '_'
103
+ separator = true
104
+ else
105
+ java_class_name = java_class_name + c
106
+ end
107
+ end
108
+ end
109
+
110
+ return java_class_name
111
+ end
112
+
113
+
114
+
115
+ ##
116
+ ## TO JAVA FIELD NAME
117
+ ##
118
+ def to_java_field_name(field_name)
119
+ java_field_name = ""
120
+ separator = false
121
+ first = true
122
+ leave_lowercase = false
123
+
124
+ field_name.each_char do |c|
125
+ if separator
126
+ if leave_lowercase
127
+ java_field_name = java_field_name + c
128
+ else
129
+ java_field_name = java_field_name + c.to_s.upcase
130
+ end
131
+ separator = false
132
+ else
133
+ case c
134
+ when '-'
135
+ when '_'
136
+ separator = true
137
+ leave_lowercase = false
138
+ if first
139
+ leave_lowercase = true
140
+ end
141
+ else
142
+ java_field_name = java_field_name + c
143
+ end
144
+ end
145
+ first = false
146
+ end
147
+
148
+ return java_field_name
149
+ end
150
+
151
+
152
+
153
+ ##
154
+ ## TO JAVA METHOD NAME
155
+ ##
156
+ def to_java_method_name(field_name)
157
+ java_method_name = ""
158
+ separator = false
159
+ first = true
160
+ field_name.each_char do |c|
161
+ if separator
162
+ java_method_name = java_method_name + c.to_s.upcase
163
+ separator = false
164
+ else
165
+ case c
166
+ when '-'
167
+ when '_'
168
+ separator = true
169
+ else
170
+ if first
171
+ java_method_name = java_method_name + c.to_s.upcase
172
+ else
173
+ java_method_name = java_method_name + c
174
+ end
175
+ end
176
+ end
177
+ first = false
178
+ end
179
+
180
+ return java_method_name
181
+ end
182
+
183
+
184
+ ##
185
+ ## WRITE FILE
186
+ ##
187
+ def write_file(value)
188
+
189
+ if value
190
+ return value.write_class_file
191
+ end
192
+ return true
193
+ end
194
+
195
+
196
+ ##
197
+ ## JAVA CLASS TO BE OUTPUTED
198
+ ##
199
+ def java_class_output(class_name, parent)
200
+
201
+ proper_class_name = to_java_class_name(class_name)
202
+ if @java_lists[class_name]
203
+ proper_class_name.chop! if @do_chop
204
+ end
205
+
206
+ field_list = ""
207
+ list_import = ""
208
+ json_property_import = ""
209
+ json_serialize_import = ""
210
+ getters_and_setters = ""
211
+
212
+ if @java_fields[class_name]
213
+ @java_fields[class_name].each do |field|
214
+ field_type = @field_info[field].type
215
+ method_name = to_java_method_name(field)
216
+ java_field = to_java_field_name(field)
217
+ if @java_fields[field]
218
+ field_type = to_java_class_name(field)
219
+ method_name = to_java_method_name(field_type)
220
+ end
221
+ if (@java_lists[field] and @java_lists[field] == class_name)
222
+ if @field_info[field].array_type
223
+ field_type = @field_info[field].array_type
224
+ elsif @do_chop
225
+ field_type.chop!
226
+ end
227
+ field_type = "List<#{field_type}>"
228
+ list_import = "import java.util.List;"
229
+
230
+ end
231
+ json_annotation = ""
232
+ if java_field != field
233
+ json_property_import = @config.json_property_import
234
+ json_annotation = " @SerializedName(\"#{field}\")\n"
235
+
236
+ end
237
+ field_list = field_list + json_annotation + " private #{field_type} #{java_field};\n"
238
+ getters_and_setters = getters_and_setters + <<GS
239
+
240
+ public #{field_type} get#{method_name}() {
241
+ return #{java_field};
242
+ }
243
+
244
+ public void set#{method_name}(#{field_type} #{java_field}) {
245
+ this.#{java_field} = #{java_field};
246
+ }
247
+ GS
248
+ end
249
+ end
250
+
251
+ doc = <<JCO
252
+ #{@java_class_header}
253
+ package #@package;
254
+
255
+ #{list_import}
256
+ #{json_property_import}
257
+ #{json_serialize_import}
258
+
259
+ /**
260
+ * Created with cesarferreira/j2j
261
+ */
262
+ public class #{proper_class_name} \{
263
+
264
+ #{field_list}
265
+ #{getters_and_setters}
266
+ \}
267
+ JCO
268
+
269
+ Dir.mkdir(@config.output_directory) if !File.exists?(@config.output_directory)
270
+
271
+ if !File.directory?(@config.output_directory)
272
+ puts "#{@config.output_directory} is not a directory!"
273
+ exit -1
274
+ end
275
+
276
+ # don't write java file files "primitive" array/list fields
277
+ if write_file(@field_info[class_name]) == true
278
+ File.open("#{@config.output_directory}/#{proper_class_name}.java", 'w') {|f| f.write(doc) }
279
+ end
280
+
281
+ end
282
+
283
+
284
+ ##
285
+ ## PARSE THE INCOMING PARAMS
286
+ ##
287
+ def parse_args(path, params)
288
+
289
+ ############################## TODO: analise path
290
+
291
+ @config.json_file = path
292
+ @config.package = params[:package]
293
+ @config.top_level_class = params[:root_class].gsub(/.java/,'')
294
+ @config.output_directory = params[:output]
295
+
296
+ end
297
+
298
+ ##
299
+ ## DO THE ACTUAL CONVERTING
300
+ ##
301
+ def convert(path, options)
302
+
303
+ @java_classes = {}
304
+ @java_fields = {}
305
+ @java_lists = {}
306
+ @field_info = {}
307
+
308
+ @do_chop = true
309
+ @config = Configurator.new
310
+
311
+ parse_args(path, options)
312
+
313
+ puts "Using JSON file: #{@config.json_file.green}"
314
+ puts "Using Java package: #{@config.package.green}"
315
+ puts "Using Java top level class: #{@config.top_level_class.green}"
316
+ puts "Using output directory: #{@config.output_directory.green}"
317
+
318
+ @package = @config.package
319
+
320
+ if !File.exists?(@config.json_file)
321
+ puts "JSON file: #{@config.json_file} does not exist!"
322
+ puts "Try -h flag for help"
323
+ exit -1
324
+ end
325
+
326
+ json_file_contents = IO.read(@config.json_file)
327
+ json = JSON.parse(json_file_contents)
328
+
329
+ @java_classes[@config.top_level_class] = "TOP_LEVEL_CLASS"
330
+ setup_data(json, @config.top_level_class)
331
+ @java_classes.each { |class_name,parent| java_class_output(class_name, parent) }
332
+
333
+ end
@@ -0,0 +1,3 @@
1
+ class FieldDetails
2
+ attr_accessor :parent, :type, :field_name, :array_type, :write_class_file
3
+ end
@@ -0,0 +1,3 @@
1
+ module J2j
2
+ VERSION = "0.1.1"
3
+ end
data/lib/j2j.rb ADDED
@@ -0,0 +1,44 @@
1
+ require 'thor'
2
+ require 'colorize'
3
+ require 'j2j/converter'
4
+ require 'j2j/version'
5
+ require 'thor/group'
6
+
7
+
8
+ module J2j
9
+ class Cli < Thor
10
+
11
+ include Thor::Actions
12
+
13
+ no_commands do
14
+ def log(str)
15
+ puts str if options[:verbose]
16
+ end
17
+ end
18
+
19
+
20
+ def self.source_root
21
+ File.dirname(__FILE__)
22
+ end
23
+
24
+ desc 'path/to/file.json', 'indicate the path to the file.json'
25
+ class_option :root_class, :aliases => '-r', :default => 'Example.java'
26
+ class_option :package, :aliases => '-p', :default => 'com.example'
27
+ class_option :output, :aliases => '-o', :description => 'Number to call', :default => 'out'
28
+ def json(path_to_json)
29
+ puts "JSON: #{path_to_json}"
30
+
31
+ convert(path_to_json, options)
32
+
33
+ end
34
+
35
+
36
+
37
+ # map %w[--version -v] => :__print_version
38
+ # desc "--version, -v", "print the version"
39
+ # def __print_version
40
+ # puts J2j::VERSION
41
+ # end
42
+
43
+ end
44
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: j2j
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - cesar ferreira
@@ -39,21 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec-nc
42
+ name: guard
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - ">="
@@ -67,7 +53,7 @@ dependencies:
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
- name: guard
56
+ name: guard-rspec
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - ">="
@@ -81,7 +67,7 @@ dependencies:
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
- name: guard-rspec
70
+ name: coveralls
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - ">="
@@ -101,27 +87,13 @@ dependencies:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
89
  version: '3.1'
104
- type: :development
90
+ type: :runtime
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
96
  version: '3.1'
111
- - !ruby/object:Gem::Dependency
112
- name: coveralls
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: thor
127
99
  requirement: !ruby/object:Gem::Requirement
@@ -164,14 +136,34 @@ dependencies:
164
136
  - - "~>"
165
137
  - !ruby/object:Gem::Version
166
138
  version: 1.8.3
167
- description: Write a longer description or delete this line.
139
+ description: Convert any file.json to Classe.java files
168
140
  email:
169
141
  - cesar.manuel.ferreira@gmail.com
170
- executables: []
142
+ executables:
143
+ - j2j
144
+ - setup
171
145
  extensions: []
172
146
  extra_rdoc_files: []
173
- files: []
174
- homepage: http://cesarferreira.com
147
+ files:
148
+ - ".coveralls.yml"
149
+ - ".gitignore"
150
+ - ".ruby-gemset"
151
+ - ".ruby-version"
152
+ - ".travis.yml"
153
+ - Gemfile
154
+ - Guardfile
155
+ - LICENSE
156
+ - README.md
157
+ - Rakefile
158
+ - bin/j2j
159
+ - bin/setup
160
+ - j2j.gemspec
161
+ - lib/j2j.rb
162
+ - lib/j2j/configurator.rb
163
+ - lib/j2j/converter.rb
164
+ - lib/j2j/field_details.rb
165
+ - lib/j2j/version.rb
166
+ homepage: https://github.com/cesarferreira/j2j
175
167
  licenses:
176
168
  - MIT
177
169
  metadata: {}
@@ -194,5 +186,5 @@ rubyforge_project:
194
186
  rubygems_version: 2.4.7
195
187
  signing_key:
196
188
  specification_version: 4
197
- summary: Write a short summary, because Rubygems requires one.
189
+ summary: Convert any file.json to Classe.java files
198
190
  test_files: []