class Billy::Documentation
Attributes
method[RW]
Documentation
includes the method definition and any commented lines preceding the method definition
mode[RW]
owner[W]
Public Class Methods
new(args)
click to toggle source
# File lib/billygoat/documentation.rb, line 14 def initialize(args) args.each { |k,v| public_send("#{k}=",v) } end
Public Instance Methods
block_parameters()
click to toggle source
# File lib/billygoat/documentation.rb, line 71 def block_parameters parameters .select{ |pair| pair.first == :block } .map{ |pair| pair.last} end
build()
click to toggle source
# File lib/billygoat/documentation.rb, line 102 def build doc = lines doc[-1] = "goat #{owner} #{name} " required_parameters.each do |parameter| doc[-1] << "[#{parameter}] " end optional_parameters.each do |parameter| doc[-1] << "(#{parameter}) " end variable_parameters.each do |parameter| doc[-1] << "(*#{parameter}) " end block_parameters.each do |parameter| doc[-1] << "{&#{parameter}} " end doc << "\n" doc end
build_markdown()
click to toggle source
# File lib/billygoat/documentation.rb, line 121 def build_markdown doc = build doc.pop doc.map! { |line| line.match(/^\s*#/) ? " #{line}" : line } doc.unshift "### #{doc.pop}" doc << "\n" doc.map! { |line| line.gsub(/(\[)/,'\[').gsub(/(\])/,'\]') } doc end
file_name()
click to toggle source
# File lib/billygoat/documentation.rb, line 33 def file_name @file_name ||= self.method.source_location.first end
inspect()
click to toggle source
# File lib/billygoat/documentation.rb, line 18 def inspect return unless file_name && line_number case mode when :markdown build_markdown else build end end
inspect_markdown()
click to toggle source
# File lib/billygoat/documentation.rb, line 28 def inspect_markdown return unless file_name && line_number build_markdown end
line_number()
click to toggle source
# File lib/billygoat/documentation.rb, line 37 def line_number @line_number ||= self.method.source_location.last end
lines()
click to toggle source
# File lib/billygoat/documentation.rb, line 98 def lines source[range].map(&unindent) end
name()
click to toggle source
# File lib/billygoat/documentation.rb, line 49 def name @name ||= self.method.name.downcase end
optional_parameters()
click to toggle source
# File lib/billygoat/documentation.rb, line 59 def optional_parameters parameters .select{ |pair| pair.first == :opt } .map{ |pair| pair.last} end
owner()
click to toggle source
# File lib/billygoat/documentation.rb, line 45 def owner @owner ||= self.method.owner.name.downcase end
parameters()
click to toggle source
# File lib/billygoat/documentation.rb, line 41 def parameters @parameters ||= self.method.parameters end
range()
click to toggle source
# File lib/billygoat/documentation.rb, line 85 def range head = tail = line_number - 1 tail.downto(0).each do break unless source[head-1].match(/^\s*#/) head -= 1 end (head..tail) end
required_parameters()
click to toggle source
# File lib/billygoat/documentation.rb, line 53 def required_parameters parameters .select{ |pair| pair.first == :req } .map{ |pair| pair.last} end
source()
click to toggle source
# File lib/billygoat/documentation.rb, line 81 def source source_file.split("\n") end
source_file()
click to toggle source
# File lib/billygoat/documentation.rb, line 77 def source_file File.read(file_name) end
unindent()
click to toggle source
# File lib/billygoat/documentation.rb, line 94 def unindent ->(line) { line.gsub(/^\s*/, '') } end
variable_parameters()
click to toggle source
# File lib/billygoat/documentation.rb, line 65 def variable_parameters parameters .select{ |pair| pair.first == :rest } .map{ |pair| pair.last} end