Class: JSON::SchemaGenerator

Inherits:
Object
  • Object
show all
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'
VERSION =
"0.0.3"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, version = 'draft3') ⇒ SchemaGenerator

Returns a new instance of SchemaGenerator.



15
16
17
18
19
20
# File 'lib/json/schema_generator.rb', line 15

def initialize name, version = 'draft3'
  @buffer = StringIO.new
  @name = name
  @version = DRAFT3 if version == 'draft3'
  @version = DRAFT4 if version == 'draft4'
end

Class Method Details

.generate(name, data, version) ⇒ Object



9
10
11
12
# File 'lib/json/schema_generator.rb', line 9

def generate name, data, version
  generator = JSON::SchemaGenerator.new name, version
  generator.generate data
end

Instance Method Details

#generate(raw_data) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/json/schema_generator.rb', line 22

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