class Documentize::Collector
Constants
- REGEX
Public Instance Methods
run(lines)
click to toggle source
# File lib/documentize/collector.rb, line 16 def run(lines) queue, header = remove_headers(lines) [build(queue), header] end
Private Instance Methods
build(queue)
click to toggle source
# File lib/documentize/collector.rb, line 23 def build(queue) content = [] skips = 0 until queue.length == 0 item = queue.shift if item =~ REGEX[:is_class] || item =~ REGEX[:is_method] || item =~ REGEX[:is_module] item = parse_command(item) item[:content], queue = build(queue) elsif item =~ REGEX[:block] || item =~ REGEX[:flow] skips += 1 unless item =~ REGEX[:inline_do] elsif item =~ /end/ return content, queue if skips <= 0 skips -= 1 end content << item end content end
get_args(cmd)
click to toggle source
# File lib/documentize/collector.rb, line 57 def get_args(cmd) if cmd !~ REGEX[:args] [cmd, nil] else matches = cmd.match(REGEX[:args]) [matches[1], parse_args(matches[2])] end end
parse_args(arg_list)
click to toggle source
# File lib/documentize/collector.rb, line 66 def parse_args(arg_list) breakup = arg_list.split(",").map{|arg| arg.strip} breakup.map do |arg| items = arg.split("=").map{ |item| item.strip } { name: items[0], default: items[1], type: nil, test: nil } end end
parse_command(cmd)
click to toggle source
# File lib/documentize/collector.rb, line 79 def parse_command(cmd) breakup = cmd.split(" ", 2) if breakup[0] == "def" type = "method" cmd, args = get_args(breakup[1]) else type = breakup[0] cmd = breakup[1] end { type: type, name: cmd, desc: nil, doc: nil, args: args, content: [], } end
remove_headers(file)
click to toggle source
# File lib/documentize/collector.rb, line 98 def remove_headers(file) header = "" until file[0] !~ REGEX[:header] && file[0] !~ REGEX[:comment] header << "#{file.shift}\n" end header = header.length == 0 ? nil : header.strip [file, header] end