class_from_son 0.1.3 → 0.1.4

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -2
  3. data/lib/class_from_SON.rb +35 -15
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a9c37e0f86b52f9b278a97fe1282d031ec1fd8bacc4697f45e039bf624d460b
4
- data.tar.gz: f40619bf1ecbe6e9f2bbd1ec44c814d9eaef5efc1e81934ee4b2df2fb2d319a6
3
+ metadata.gz: 96b192d3635ec52034f3ceec776c4dcbf6e8fbd540615350eb64ca5e8219c26f
4
+ data.tar.gz: 1a5cbb62e7bf8dc915db9b2868d48b13dbce2979679d0d774e0d8d50314d02ff
5
5
  SHA512:
6
- metadata.gz: 833ef78c9b05c1b5310507fad502551e1d8734aa77093cdf786c478d66404d960c1bd94447f3f0ca13a881bcc678be9e6758d2c88bde56899e2ade0f04b68467
7
- data.tar.gz: d40049cc202f07ac2ed698f5f0ff0896264d50f0eda0980252c7b04cd03b9521335b49963b77895234cfc6a15de6218a90824877168ffdef0c1c87f67ee279a0
6
+ metadata.gz: 8fd944b6627746d48c69652b3c5b145101287278507fd5350ac3994fe60aee9ac22811e34650f655413c670946016b81c79b6a7b082db9e07b2b71073e1decea
7
+ data.tar.gz: 421318731974f73ae5af42528e65096b0b5f5768e25a61a5c09f19d15cc788473703a32c0c1857d28dc9c29ef5e8426fdcf0b184253dd4590340fed7bbd7b1cb
data/README.md CHANGED
@@ -7,9 +7,10 @@ If the SON looks to have a nested object structure (e.g. a Contact object looks
7
7
  Limitations :
8
8
 
9
9
  SON : will only process JSON
10
- Code : will only generate Ruby or Java
10
+ Code : will only generate Ruby or Java (to generate Java using Lombok, use the :java_lombok symbol)
11
11
 
12
12
  Usage : require the gem, then invoke
13
+
13
14
  ```
14
15
  require 'class_from_son'
15
16
 
@@ -21,6 +22,7 @@ ClassFromSON.generate :ruby, my_json_string, :json
21
22
  ```
22
23
 
23
24
  or from the command line :
25
+
24
26
  ```
25
27
  ruby -e "require 'class_from_son'; ClassFromSON.generate_from_file :ruby, 'a_file.json'"
26
28
 
@@ -30,6 +32,7 @@ ruby -e "require 'class_from_son'; ClassFromSON.generate :ruby, my_json_string,
30
32
  ```
31
33
 
32
34
  Method parameter explanations :
35
+
33
36
  ```
34
37
  # Will generate classes from a SON file
35
38
  # Regardless of whether or not files are written, this will return an array of hashes; each hash represents a file, with two keys : :name for filename (without extension), and :contents for file contents
@@ -52,4 +55,4 @@ def ClassFromSON.generate_from_file(dest_lang, file, source_lang, make_file = tr
52
55
  # make_file flag defaults to true; set to false if you do not want files to be created by this method
53
56
  # force_file flag is false; set to true if you wish to overwrite matching destination files (use with caution!)
54
57
  def ClassFromSON.generate(dest_lang, source, source_lang, make_file = true, force_file = false)
55
- ```
58
+ ```
@@ -5,7 +5,7 @@ require "more_ruby"
5
5
 
6
6
  class ClassFromSON
7
7
 
8
- @@target_languages = [:java, :ruby]
8
+ @@target_languages = [:java, :java_lombok, :ruby]
9
9
  @@input_modes = [:json]
10
10
 
11
11
  def error(message)
@@ -55,7 +55,7 @@ class ClassFromSON
55
55
  # Translate "Fixnum" into the desired output language
56
56
  def convert_fixnum_to_type
57
57
  case @language
58
- when :java
58
+ when :java, :java_lombok
59
59
  return "int"
60
60
  else
61
61
  error_and_exit "Could not convert to output language #{@language}"
@@ -65,7 +65,7 @@ class ClassFromSON
65
65
  # Translate "Fixnum" into the desired output language
66
66
  def convert_float_to_type
67
67
  case @language
68
- when :java
68
+ when :java, :java_lombok
69
69
  return "float"
70
70
  else
71
71
  error_and_exit "Could not convert to output language #{@language}"
@@ -75,7 +75,7 @@ class ClassFromSON
75
75
  # Translate "Fixnum" into the desired output language
76
76
  def convert_boolean_to_type
77
77
  case @language
78
- when :java
78
+ when :java, :java_lombok
79
79
  return "boolean"
80
80
  else
81
81
  error_and_exit "Could not convert to output language #{@language}"
@@ -85,7 +85,7 @@ class ClassFromSON
85
85
  # Translate "String" into the desired output language
86
86
  def convert_string_to_type
87
87
  case @language
88
- when :java
88
+ when :java, :java_lombok
89
89
  return "String"
90
90
  else
91
91
  error_and_exit "Could not convert to output language #{@language}"
@@ -97,7 +97,7 @@ class ClassFromSON
97
97
  def convert_array_to_type(value_types)
98
98
  error_and_exit "Detected an array, but could not determine the type of its children; found #{value_types.size} possibilities" unless value_types.size == 1
99
99
  case @language
100
- when :java
100
+ when :java, :java_lombok
101
101
  return "List<#{convert_ruby_type_to_type(value_types[0])}>"
102
102
  else
103
103
  error_and_exit "Could not convert to output language #{@language}"
@@ -109,7 +109,7 @@ class ClassFromSON
109
109
  def convert_hash_to_type(value_types)
110
110
  error_and_exit "Detected a hash, but could not determine the type of its keys and values; found #{value_types.size} possibilities" unless value_types.size == 2
111
111
  case @language
112
- when :java
112
+ when :java, :java_lombok
113
113
  return "HashMap<#{convert_ruby_type_to_type(value_types[0])}, #{convert_ruby_type_to_type(value_types[1])}>"
114
114
  else
115
115
  error_and_exit "Could not convert to output language #{@language}"
@@ -119,7 +119,7 @@ class ClassFromSON
119
119
  # Returns code representing the start of the class
120
120
  def convert_custom_class_type(type)
121
121
  case @language
122
- when :java, :ruby
122
+ when :java, :java_lombok, :ruby
123
123
  return type.capitalize_first_letter_only
124
124
  else
125
125
  error_and_exit "Could not convert to output language #{@language}"
@@ -128,7 +128,7 @@ class ClassFromSON
128
128
 
129
129
  def generate_top_level_name
130
130
  case @language
131
- when :java
131
+ when :java, :java_lombok
132
132
  return "generatedFrom#{@mode.capitalize}"
133
133
  when :ruby
134
134
  return "generated_from_#{@mode}"
@@ -140,7 +140,7 @@ class ClassFromSON
140
140
  # Returns an appropriately-formatted classname for the given name
141
141
  def generate_classname(name)
142
142
  case @language
143
- when :java, :ruby
143
+ when :java, :java_lombok, :ruby
144
144
  return name.capitalize_first_letter_only
145
145
  else
146
146
  error_and_exit "Could not convert to output language #{@language}"
@@ -150,7 +150,7 @@ class ClassFromSON
150
150
  # Returns an appropriately-formatted filename for the given name
151
151
  def generate_filename(name)
152
152
  case @language
153
- when :java
153
+ when :java, :java_lombok
154
154
  return name.capitalize_first_letter_only + @extension
155
155
  when :ruby
156
156
  return name.snakecase + @extension
@@ -161,7 +161,7 @@ class ClassFromSON
161
161
 
162
162
  def set_file_extension_for_language
163
163
  case @language
164
- when :java
164
+ when :java, :java_lombok
165
165
  @extension = ".java"
166
166
  when :ruby
167
167
  @extension = ".rb"
@@ -173,11 +173,29 @@ class ClassFromSON
173
173
  # Returns code representing the start of the class
174
174
  def generate_class_start(name)
175
175
  case @language
176
- when :java
176
+ when :java, :java_lombok
177
177
  start = <<-START
178
178
 
179
179
  import com.fasterxml.jackson.annotation.JsonProperty;
180
180
 
181
+ public class #{convert_custom_class_type(name)} {
182
+ START
183
+ when :java_lombok # TODO
184
+ start = <<-START
185
+
186
+ import com.fasterxml.jackson.annotation.JsonProperty;
187
+ import lombok.AllArgsConstructor;
188
+ import lombok.Builder;
189
+ import lombok.Getter;
190
+ import lombok.NoArgsConstructor;
191
+ import lombok.Setter;
192
+
193
+ @JsonInclude(Include.NON_NULL)
194
+ @NoArgsConstructor // Need @NoArgsConstructor for JSON deserialisation
195
+ @AllArgsConstructor // Need @AllArgsConstructor for @Builder
196
+ @Builder
197
+ @Getter
198
+ @Setter
181
199
  public class #{convert_custom_class_type(name)} {
182
200
  START
183
201
  when :ruby
@@ -191,7 +209,7 @@ START
191
209
  # Returns code representing the end of the class
192
210
  def generate_class_end
193
211
  case @language
194
- when :java
212
+ when :java, :java_lombok
195
213
  class_end = "}"
196
214
  when :ruby
197
215
  class_end = "end"
@@ -204,6 +222,8 @@ START
204
222
  def generate_getter_and_setter(type, name)
205
223
  lines = []
206
224
  case @language
225
+ when :java_lombok
226
+ # do nothing - Lombok's raison d'etre is to avoid getters & setters
207
227
  when :java
208
228
  class_name = convert_custom_class_type(name)
209
229
  lines << "\t"
@@ -223,7 +243,7 @@ START
223
243
  # Returns code representing each of the supplied attributes
224
244
  def generate_code_from_attributes(attributes)
225
245
  case @language
226
- when :java
246
+ when :java, :java_lombok
227
247
  return generate_java_code_from_attributes(attributes)
228
248
  when :ruby
229
249
  return generate_ruby_code_from_attributes(attributes)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: class_from_son
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Morrisby