This gem will attempt to generate code of a class of an object representing the contents of a Serialised-Object-Notation (SON) string (or file). E.g. it will generate code of a object's class from some JSON.
The intention with this gem is to provide assistance with creating code that can translate JSON (or other SON) into a proper Object.
If the SON looks to have a nested object structure (e.g. a Contact object looks to hold a PhoneNumber object) then multiple classes will be generated.
Limitations :
SON : will only process JSON Code : will only generate Ruby or Java (to generate Java using Lombok, use the :java_lombok symbol)
Usage : require the gem, then invoke
require 'class_from_son' ClassFromSON.generate_from_file :ruby, "a_file.json" or ClassFromSON.generate :ruby, my_json_string, :json
or from the command line :
ruby -e "require 'class_from_son'; ClassFromSON.generate_from_file :ruby, 'a_file.json'" or ruby -e "require 'class_from_son'; ClassFromSON.generate :ruby, my_json_string, :json"
Advanced use :
ruby -e "require 'class_from_son'; ClassFromSON.generate :ruby, my_json_string, :json, true, false, true, '../write/files/somewhere/else'"
Method parameter explanations :
# Will generate classes from a SON file # 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 # # dest_lang is symbol # file is filename & path # source_lang is symbol or nil (if nil, source language will be determined from the file extension) # make_file flag defaults to true; set to false if you do not want files to be created by this method # force_file flag is false; set to true if you wish to overwrite matching destination files (use with caution!) # lenient_mode flag is true; if the SON contains different objects with the same name (e.g. "data") then these will be treated # as different objects with a _1, _2, etc. suffix. If this flag is false and these different objects are present, then errors will occur # custom_file_path is nil; set to an absoulte or relative path to have the new files be written to that location def ClassFromSON.generate_from_file(dest_lang, file, source_lang = nil, make_file = true, force_file = false, lenient_mode = true, custom_file_path = nil)
# Will generate classes from a SON string # 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 # # dest_lang is symbol # file is filename & path # source_lang is symbol # make_file flag defaults to true; set to false if you do not want files to be created by this method # force_file flag is false; set to true if you wish to overwrite matching destination files (use with caution!) # lenient_mode flag is true; if the SON contains different objects with the same name (e.g. "data") then these will be treated # as different objects with a _1, _2, etc. suffix. If this flag is false and these different objects are present, then errors will occur # custom_file_path is nil; set to an absoulte or relative path to have the new files be written to that location def ClassFromSON.generate(dest_lang, source, source_lang, make_file = true, force_file = false, lenient_mode = true, custom_file_path = nil)