11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/each_sql/parser.rb', line 11
def self.parser_for type, delimiter = ';'
return @@parser[[type, delimiter]] if @@parser[[type, delimiter]]
path = File.join( File.dirname(__FILE__), 'parser/sql.citrus.erb' )
erb = Erubis::Eruby.new( File.read path )
suffix = @@parser.length.to_s
Citrus.eval erb.result(binding)
@@parser[[type, delimiter]] =
case type
when :default
eval "EachSQL::Parser::Default#{suffix}"
when :mysql
eval "EachSQL::Parser::MySQL#{suffix}"
when :oracle
eval "EachSQL::Parser::Oracle#{suffix}"
when :postgres, :postgresql
eval "EachSQL::Parser::PostgreSQL#{suffix}"
else
raise NotImplementedError.new(
"Parser not implemented for #{type}. Try use :default instead.")
end
end
|