module SqliteExt::DbTracksCreatedFunctions

Public Class Methods

included(other) click to toggle source
# File lib/sqlite_ext/db_tracks_created_functions.rb, line 18
def self.included(other)
  orig_create_function = other.instance_method(:create_function)
  other.send :define_method, :create_function, proc{ |name, arity, *other_args, &block|
    orig_create_function.bind(self).call name, arity, *other_args, &block
    created_function_names << name_key_from(name)
  }
end

Public Instance Methods

create_function(name, arity, *other_args, &block) click to toggle source
Calls superclass method
# File lib/sqlite_ext/db_tracks_created_functions.rb, line 11
def create_function(name, arity, *other_args, &block)
  super
  created_function_names << name_key_from(name)
end
function_created?(name) click to toggle source

Given a name, returns true if a function of that hane has been created on the target instance. The name lookup is case-insensitive, and either a string or a symbol may be supplied.

# File lib/sqlite_ext/db_tracks_created_functions.rb, line 32
def function_created?(name)
  name_key = name_key_from(name)
  created_function_names.include?(name_key)
end

Private Instance Methods

created_function_names() click to toggle source
# File lib/sqlite_ext/db_tracks_created_functions.rb, line 43
def created_function_names
  @created_function_names ||= Set.new
end
name_key_from(name) click to toggle source
# File lib/sqlite_ext/db_tracks_created_functions.rb, line 39
def name_key_from(name)
  "#{name}".upcase
end