Sha256: d45bc2533497561c9a07d085195cfc7f5943bb65917d6bc85435c7fd334fad73
Contents?: true
Size: 1.1 KB
Versions: 2
Compression:
Stored size: 1.1 KB
Contents
require 'citrus' require 'erubis' require 'quote_unquote' class EachSQL module Parser @@parser = {} # @param[Symbol] type RDBMS type: :default|:mysql|:oracle|:postgres # @param[String] delimiter SQL delimiter # @return[Module] Citrus parser def self.parser_for type, delimiter = ';' # Is there any better way of handling dynamic changes? 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 end#Parser end#EachSQL
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
each_sql-0.4.1 | lib/each_sql/parser.rb |
each_sql-0.4.0 | lib/each_sql/parser.rb |