Class: Jast::SchemaRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/jast/schema_renderer.rb

Instance Method Summary collapse

Constructor Details

#initialize(name, path) ⇒ SchemaRenderer

Returns a new instance of SchemaRenderer.



5
6
7
8
# File 'lib/jast/schema_renderer.rb', line 5

def initialize name, path
  @name = name
  @path = path
end

Instance Method Details

#build_json(file, properties = {}, required = []) ⇒ Object



10
11
12
13
14
# File 'lib/jast/schema_renderer.rb', line 10

def build_json file, properties = {}, required = []
  filename = "#{file}.json.erb"
  template_path = "#{File.expand_path(File.dirname(__FILE__))}/templates/#{filename}"
  ERB.new(File.read(template_path), nil, ">").result(binding)
end

#render_definition(properties, required) ⇒ Object



16
17
18
# File 'lib/jast/schema_renderer.rb', line 16

def render_definition properties, required
  render_file :definition, {path: "#{@path}definitions/", properties: properties, required: required, filename: @name}
end

#render_file(file, fileopts = {}) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/jast/schema_renderer.rb', line 20

def render_file file, fileopts = {}
  content = build_json(file, fileopts[:properties], fileopts[:required])
  path = fileopts[:path].nil? ? @path : fileopts[:path]
  FileUtils.mkdir_p(path)
  filename = fileopts[:filename].nil? ? "#{@name}_#{file}.json" : fileopts[:filename]
  IO.write("#{path}#{filename}", content)
end

#render_list_responseObject



28
29
30
# File 'lib/jast/schema_renderer.rb', line 28

def render_list_response
  render_file :list_response
end

#render_resource(properties, required) ⇒ Object



32
33
34
35
36
# File 'lib/jast/schema_renderer.rb', line 32

def render_resource properties, required
  render_definition(properties, required)
  render_list_response
  render_response
end

#render_responseObject



38
39
40
# File 'lib/jast/schema_renderer.rb', line 38

def render_response
  render_file :response
end