class DDLParser::Parser
Attributes
parse_error[RW]
parse_tree[RW]
statement_type[RW]
Public Class Methods
new(statement, do_downcase=true)
click to toggle source
# File lib/ddl_parser/parser.rb, line 5 def initialize(statement, do_downcase=true) @statement = do_downcase ? statement.downcase : statement @parse_tree = nil @parse_error = nil begin case @statement.strip when /\Acreate\stable.*/i @statement_type = :create_table @parse_tree = DDLParser::DDL::DB2::Parser.new.create_table.parse(@statement) when /\Aalter\stable.*/i @statement_type = :alter_table @parse_tree = DDLParser::DDL::DB2::Parser.new.alter_table.parse(@statement) when /\Acreate.*index.*/i @statement_type = :create_index @parse_tree = DDLParser::DDL::DB2::Parser.new.create_index.parse(@statement) else raise 'Unknown DDL statement' end rescue Parslet::ParseFailed => error @parse_error = error end end
Public Instance Methods
errors()
click to toggle source
# File lib/ddl_parser/parser.rb, line 32 def errors @parse_error.cause.ascii_tree if @parse_error end
most_likely_error()
click to toggle source
# File lib/ddl_parser/parser.rb, line 36 def most_likely_error @parse_error.cause.ascii_tree.split("\n").last.gsub(' `- ','') if @parse_error end
translate()
click to toggle source
# File lib/ddl_parser/parser.rb, line 40 def translate case statement_type when :create_table DDLParser::Translator::CreateTable.new(parse_tree) when :alter_table DDLParser::Translator::AlterTable.new(parse_tree) when :create_index DDLParser::Translator::CreateIndexHeader.new(parse_tree) else raise "Unknown statement_type #{statement_type}" end end
valid?()
click to toggle source
# File lib/ddl_parser/parser.rb, line 28 def valid? @parse_error == nil && @parse_tree && @parse_tree.count > 0 end