class RubySimpleParser::Parser
Attributes
class_definition[R]
class_method_calls[RW]
Public Class Methods
new(code = '')
click to toggle source
# File lib/generators/brain_damage/lib/ruby_simple_parser/parser.rb, line 14 def initialize(code = '') @code = code @line_classifier = LineClassifier.new parse if code end
Public Instance Methods
class_method_calls_after(method)
click to toggle source
# File lib/generators/brain_damage/lib/ruby_simple_parser/parser.rb, line 82 def class_method_calls_after(method) if @class_method_calls.has_key? method @class_method_calls[method] else [] end end
parse()
click to toggle source
# File lib/generators/brain_damage/lib/ruby_simple_parser/parser.rb, line 28 def parse prepare_to_parse @code_lines.each_index do |line_number| line_code = @code_lines[line_number] line_class = @line_classifier.classify line_code new_block = nil if line_class == CLASS_START new_block = RubySimpleParser::ClassDefinition.new line_code, @context @context = new_block @class_definition = new_block # puts "Entered context: #{@context.name}" elsif line_class == CODE_WITH_BLOCK new_block = RubySimpleParser::Block.new line_code, @context @context = new_block elsif line_class == METHOD_START new_block = RubySimpleParser::Method.new line_code, @method_scope, @context @context = new_block @methods[@method_scope][new_block.name] = new_block @last_method = new_block.name # puts "Entered context: #{@context.name}" elsif line_class == PRIVATE_BLOCK @method_scope = :private RubySimpleParser::CodeLine.new line_code, @context else new_block = RubySimpleParser::CodeLine.new line_code, @context if line_class == BLOCK_END if @context.parent # puts "Left context: #{@context.name} (line_class: #{line_class})" @context = @context.parent end end end if new_block and (![EMPTY, BLOCK_END].include? line_class) and !new_block.is_a? ClassDefinition and (( line_class == CODE_WITH_BLOCK and @context.parent.is_a? ClassDefinition ) or @context.is_a? ClassDefinition ) if @last_method @class_method_calls[@last_method] ||= [] @class_method_calls[@last_method] << new_block else @class_method_calls[:after_class_definition] << new_block end end end end
print()
click to toggle source
# File lib/generators/brain_damage/lib/ruby_simple_parser/parser.rb, line 90 def print @global_context.print end
private_methods()
click to toggle source
# File lib/generators/brain_damage/lib/ruby_simple_parser/parser.rb, line 24 def private_methods @methods[:private] end
public_methods()
click to toggle source
# File lib/generators/brain_damage/lib/ruby_simple_parser/parser.rb, line 20 def public_methods @methods[:public] end
Private Instance Methods
prepare_to_parse()
click to toggle source
# File lib/generators/brain_damage/lib/ruby_simple_parser/parser.rb, line 95 def prepare_to_parse @code_lines = @code.split("\n") @parsed_code = {} @global_context = GlobalContext.new @context = @global_context @methods = { public: {}, private: {} } @last_method = nil @class_method_calls = { after_class_definition: [] } @class_definition = nil @method_scope = :public end