class Erudite::Example::Parser
Parses IRB output into examples.
Public Class Methods
exemplify(lines)
click to toggle source
# File lib/erudite/example/parser.rb, line 26 def self.exemplify(lines) source = extract_source(lines) result = extract_result(lines) output = extract_output(lines) Example.new(source, result, output) end
extract_output(lines)
click to toggle source
# File lib/erudite/example/parser.rb, line 48 def self.extract_output(lines) output = lines .reject { |line| line.start_with?('>> ', '.. ', '=> ') } .map(&:chomp) output.join("\n") unless output.empty? end
extract_result(lines)
click to toggle source
# File lib/erudite/example/parser.rb, line 41 def self.extract_result(lines) result = lines .select { |line| line.start_with?('=> ') } .map { |line| line[3..-1].chomp } result.join("\n") unless result.empty? end
extract_source(lines)
click to toggle source
# File lib/erudite/example/parser.rb, line 34 def self.extract_source(lines) source = lines .select { |line| line.start_with?('>> ', '.. ') } .map { |line| line[3..-1].chomp } source.join("\n") unless source.empty? end
group(string)
click to toggle source
# File lib/erudite/example/parser.rb, line 11 def self.group(string) buffer = [] groups = string.each_line.each_with_object([]) do |line, array| if line.start_with?('>> ') && !buffer.empty? array.push(buffer) buffer = [] end buffer.push(line) end buffer.empty? ? groups : groups.push(buffer) end
parse(string)
click to toggle source
# File lib/erudite/example/parser.rb, line 7 def self.parse(string) group(string).map { |lines| exemplify(lines) } end