Sha256: 09dfd4389b68b3b1fe8eb9e2a11ad87235429504859ddd8da9bd2ad870c7d0a4

Contents?: true

Size: 664 Bytes

Versions: 21

Compression:

Stored size: 664 Bytes

Contents

require 'thread'
require 'treetop'
require 'flydata/table_def'

module Mysql
  class ParserProvider

    @@mutex = Mutex.new
    @@parsers = {}

    def self.parser(db_type, parser_type)
      key = [db_type.to_s, parser_type.to_s].join("::").to_s
      @@mutex.synchronize do
        if @@parsers[key]
          return @@parsers[key]
        else
          # lazy load
          treetop_path = File.join(
            File.expand_path(File.dirname(__FILE__)),
            "parser/#{db_type}/#{parser_type}.treetop")
          Treetop.load treetop_path
          @@parsers[key] = "#{parser_type}_parser".camelize.constantize
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
flydata-0.2.17 lib/flydata/parser_provider.rb
flydata-0.2.16 lib/flydata/parser_provider.rb
flydata-0.2.15 lib/flydata/parser_provider.rb
flydata-0.2.13 lib/flydata/parser_provider.rb
flydata-0.2.12 lib/flydata/parser_provider.rb
flydata-0.2.11 lib/flydata/parser_provider.rb
flydata-0.2.10 lib/flydata/parser_provider.rb
flydata-0.2.9 lib/flydata/parser_provider.rb
flydata-0.2.8 lib/flydata/parser_provider.rb
flydata-0.2.7 lib/flydata/parser_provider.rb
flydata-0.2.6 lib/flydata/parser_provider.rb
flydata-0.2.5 lib/flydata/parser_provider.rb
flydata-0.2.4 lib/flydata/parser_provider.rb
flydata-0.2.3 lib/flydata/parser_provider.rb
flydata-0.2.2 lib/flydata/parser_provider.rb
flydata-0.2.1 lib/flydata/parser_provider.rb
flydata-0.2.0 lib/flydata/parser_provider.rb
flydata-0.1.15 lib/flydata/parser_provider.rb
flydata-0.1.13 lib/flydata/parser_provider.rb
flydata-0.1.12 lib/flydata/parser_provider.rb