class Elastics::ClassProxy::Templates::Doc::Output
Attributes
method_call[R]
template[R]
Public Class Methods
new(name, proxy)
click to toggle source
# File lib/elastics/class_proxy/templates/doc.rb, line 11 def initialize(name, proxy) @name, @template = proxy.templates.find do |n, t| t.is_a?(Elastics::Template::Api) && t.aliases.include?(name) end || [ name, proxy.templates[name]] @method_call = [proxy.context, @name].join('.') sources = [] sources << { :class => @template.class, :source => @template.to_source } @template.partials.each do |name| partial = proxy.partials[name] sources << { :class => partial.class, :source => partial.to_source } end @sources = sources end
Public Instance Methods
comments_to_s(*comments)
click to toggle source
# File lib/elastics/class_proxy/templates/doc.rb, line 60 def comments_to_s(*comments) comments = comments.compact return '' if comments == [] "# #{comments.join(' ')}" end
render()
click to toggle source
# File lib/elastics/class_proxy/templates/doc.rb, line 126 def render output = (@template.is_a?(Elastics::Template::Api) ? render_api : render_custom) output = output.split("\n").map{ |l| '# ' + l }.join("\n") output << "\n#{render_stub}\n\n" output end
render_api()
click to toggle source
# File lib/elastics/class_proxy/templates/doc.rb, line 87 def render_api <<-output.gsub(/^ {12}/m,'') ########## #{@method_call} ########## API Name: #{@template.references['api_name']} API URL: #{@template.references['api_url']} #{render_sources} Usage: #{render_usage(' ' * 12)} output end
render_custom()
click to toggle source
# File lib/elastics/class_proxy/templates/doc.rb, line 101 def render_custom <<-output.gsub(/^ {12}/m,'') ########## #{@method_call} ########## #{render_sources} Usage: #{render_usage(' ' * 12)} output end
render_sources()
click to toggle source
# File lib/elastics/class_proxy/templates/doc.rb, line 76 def render_sources @sources.map do |source| <<-output.gsub(/^ {14}/m,'') #{'-' * source[:class].name.length} #{source[:class]} #{source[:source]} output end.join("\n") end
render_stub()
click to toggle source
# File lib/elastics/class_proxy/templates/doc.rb, line 113 def render_stub aliased = if @template.is_a?(Elastics::Template::Api) && @template.references['aliases'] "\n# also aliased by: #{@template.aliases.map(&:inspect).join(', ')}" end <<-output.gsub(/^ {12}/m,'') def self.#{@name}(*vars) ## this is a stub, used for reference super end#{ aliased } output end
render_usage(indent='')
click to toggle source
# File lib/elastics/class_proxy/templates/doc.rb, line 29 def render_usage(indent='') variables = @template.instance_eval do interpolate @base_variables.deep_merge @host_elastics && @host_elastics.variables, @temp_variables end all_tags = @template.tags + @template.partials return @method_call if all_tags.size == 0 lines = all_tags.map do |t| comments = 'partial' if t.to_s[0] == '_' line = ['', t.inspect] line + if variables.has_key?(t) ["#{variables[t].inspect},", comments_to_s(comments)] else ["#{to_code(t)},", comments_to_s(comments, 'required')] end end lines.sort! { |a,b| b[3] <=> a[3] } lines.first[0] = @method_call lines.last[2].chop! max = lines.transpose.map{ |c| c.map(&:length).max } formatted = lines.map{ |line| "%-#{max[0]}s %-#{max[1]}s => %-#{max[2]}s %s" % line } indented = formatted.shift indented = [indented] + formatted.map{ |line| indent + line } indented = indented.join("\n") + "\n " notice = if @template.is_a?(Elastics::Template::Api) && @template.references['notice'] "\nNotice: #{@template.references['notice']}\n " end indented + notice end
to_code(name)
click to toggle source
# File lib/elastics/class_proxy/templates/doc.rb, line 67 def to_code(name) keys = name.to_s.split('.').map{ |s| s =~ /^[0..9]+$/ ? s.to_i : s.to_sym } code = keys.shift.to_s return code if keys.empty? keys.each { |k| code << "[#{k.inspect}]" } code end