class Rabbit::Parser::RD::Ext::Base
Public Class Methods
add_extension(name)
click to toggle source
# File lib/rabbit/parser/rd/ext/base.rb, line 21 def add_extension(name) extensions.push(name) end
extensions()
click to toggle source
# File lib/rabbit/parser/rd/ext/base.rb, line 25 def extensions self::EXTENSIONS end
inherited(klass)
click to toggle source
# File lib/rabbit/parser/rd/ext/base.rb, line 17 def inherited(klass) klass.const_set("EXTENSIONS", []) end
method_added(name)
click to toggle source
# File lib/rabbit/parser/rd/ext/base.rb, line 29 def method_added(name) if /^ext_/ =~ name.to_s add_extension(name.to_s) end end
Public Instance Methods
apply(label, source, content, visitor)
click to toggle source
# File lib/rabbit/parser/rd/ext/base.rb, line 36 def apply(label, source, content, visitor) result = nil extensions.find do |entry| begin result = __send__(entry, label, source, content, visitor) rescue NameError visitor.logger.error($!) raise end end result end
extensions()
click to toggle source
# File lib/rabbit/parser/rd/ext/base.rb, line 49 def extensions self.class.extensions end
Private Instance Methods
parse_source(source)
click to toggle source
# File lib/rabbit/parser/rd/ext/base.rb, line 54 def parse_source(source) prop = {} in_src = false src = "" source.each_line do |line| if in_src src << line else case line when /^\s*$/ in_src = true when /^(?:#\s*)?(\S+)\s*=\s*(.+)\s*$/ prop[$1] = $2 else in_src = true src << line end end end [src, prop] end