Class: JSON::SchemaGenerator
- Inherits:
-
Object
- Object
- JSON::SchemaGenerator
- Defined in:
- lib/json/schema_generator.rb,
lib/json/schema_generator/version.rb,
lib/json/schema_generator/statement_group.rb
Defined Under Namespace
Classes: StatementGroup
Constant Summary collapse
- DRAFT3 =
'draft-03'- DRAFT4 =
'draft-04'- DEFAULT_VERSION =
'draft3'- SUPPORTED_VERSIONS =
['draft3', 'draft4']
- VERSION =
"0.0.4"
Class Method Summary collapse
Instance Method Summary collapse
- #generate(raw_data) ⇒ Object
-
#initialize(name, opts = {}) ⇒ SchemaGenerator
constructor
A new instance of SchemaGenerator.
Constructor Details
#initialize(name, opts = {}) ⇒ SchemaGenerator
Returns a new instance of SchemaGenerator.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/json/schema_generator.rb', line 17 def initialize name, opts = {} version = opts[:schema_version] || DEFAULT_VERSION # Unfortunately json-schema.org and json-schema (gem) use different version strings if ['draft3', 'draft-03'].include? version.to_s.downcase @version = DRAFT3 elsif ['draft4', 'draft-04'].include? version.to_s.downcase @version = DRAFT4 else abort "Unsupported schema version: #{version}" end @defaults = opts[:defaults] @buffer = StringIO.new @name = name end |
Class Method Details
.generate(name, data, opts = {}) ⇒ Object
11 12 13 14 |
# File 'lib/json/schema_generator.rb', line 11 def generate name, data, opts = {} generator = JSON::SchemaGenerator.new name, opts generator.generate data end |
Instance Method Details
#generate(raw_data) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/json/schema_generator.rb', line 34 def generate raw_data data = JSON.load(raw_data) statement_group = StatementGroup.new statement_group.add "\"$schema\": \"http://json-schema.org/#{@version}/schema#\"" statement_group.add "\"description\": \"Generated from #{@name} with shasum #{Digest::SHA1.hexdigest raw_data}\"" create_hash(statement_group, data, detect_required(data)) @buffer.puts statement_group result end |