Sha256: f94e532a85daa9f06e8462938c63a3e602b1ac7a55b3c9e9862c5eb021163cf7

Contents?: true

Size: 1.45 KB

Versions: 3

Compression:

Stored size: 1.45 KB

Contents

require 'json'

def init
  sections :header, [:topic_doc, :method_details_list, [T('method_details')]]
  @resource = object
  @beta = options[:controllers].any? { |c| c.tag('beta') }
end

def method_details_list
  @meths = options[:controllers].map { |c| c.meths(:inherited => false, :included => false) }.flatten
  @meths = run_verifier(@meths)
  erb(:method_details_list)
end

def topic_doc
  @docstring = options[:controllers].map { |c| c.docstring }.join("\n\n")
  @object = @object.dup
  def @object.source_type; nil; end
  @json_objects = options[:json_objects][@resource] || []
  erb(:topic_doc)
end

def properties_of_model(json)
  begin
    JSON::parse(json || '')['properties']
  rescue JSON::ParserError
    nil
  end
end

def word_wrap(text, col_width=80)
  text.gsub!( /(\S{#{col_width}})(?=\S)/, '\1 ' )
  text.gsub!( /(.{1,#{col_width}})(?:\s+|$)/, "\\1\n" )
  text
end

def indent(str, amount = 2, char = ' ')
  str.gsub(/^/, char * amount)
end

def render_comment(string, wrap = 75)
  string ? indent(word_wrap(string), 2, '/') : ''
end

def render_value(value, type = 'string')
  case type
  when 'integer', 'double', 'number' then value.to_s
  else %{"#{value}"}
  end
end

def render_properties(json)
  if properties = properties_of_model(json)
    "{\n" + indent(
    properties.map do |name, prop|
      "\n" + render_comment(prop['description']) +
      %{"#{name}": } + render_value(prop['example'], prop['type'])
    end.join(",\n")) +
    "\n}"
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
yard-api-0.2.3 templates/api/topic/html/setup.rb
yard-api-0.2.2 templates/api/topic/html/setup.rb
yard-api-0.2.1 templates/api/topic/html/setup.rb