module Atheme::Parser
Public Class Methods
included(klass)
click to toggle source
# File lib/atheme/parser.rb, line 2 def self.included(klass) if klass.name.split('::').count > 3 service = klass.name.sub('Atheme::Parser::', '').gsub(/::.*/, '') command = klass.name.sub('Atheme::Parser::', '').gsub(/.*::/, '').downcase Atheme::PARSERS[service] ||= [] (Atheme::PARSERS[service] << command) unless command == '' Atheme::PARSERS[service].uniq! end end
Public Instance Methods
command(name, &block)
click to toggle source
# File lib/atheme/parser.rb, line 15 def command(name, &block) @commands << [name, block] end
parse(name) { || ... }
click to toggle source
# File lib/atheme/parser.rb, line 19 def parse(name) @commands = [] create_parser(name) yield if block_given? create_commands if @commands.count > 0 end
Private Instance Methods
create_commands()
click to toggle source
# File lib/atheme/parser.rb, line 42 def create_commands @commands.each do |command, block| Atheme::Support.constantize(@parser).send(:define_method, command, block) end end
create_parser(name)
click to toggle source
# File lib/atheme/parser.rb, line 31 def create_parser(name) @parser = "Atheme::Parser::#{self.name.gsub('Atheme::Parser::', '')}::#{name.capitalize}" module_eval <<-RUBY module #{@parser} include Atheme::Parser include Atheme::ParserHelper end RUBY end