Skip to content

Commit

Permalink
first pass at dm-shim
Browse files Browse the repository at this point in the history
  • Loading branch information
tpitale committed Sep 15, 2011
1 parent 302b735 commit e0782fd
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 13 deletions.
5 changes: 5 additions & 0 deletions lib/garb.rb
Expand Up @@ -78,6 +78,11 @@ def parse_link(entry, rel)
entry['link'].detect {|link| link["rel"] == rel}['href']
end

def symbol_operator_slugs
[:eql, :not_eql, :gt, :gte, :lt, :lte, :desc, :descending, :matches,
:does_not_match, :contains, :does_not_contain, :substring, :not_substring]
end

# new(address, port = nil, p_addr = nil, p_port = nil, p_user = nil, p_pass = nil)

# opts => open_timeout, read_timeout, ssl_timeout
Expand Down
43 changes: 30 additions & 13 deletions lib/support.rb
Expand Up @@ -2,11 +2,7 @@
require File.expand_path("./lib/support/string.rb")
end

class SymbolOperator
def initialize(field, operator)
@field, @operator = field, operator
end unless method_defined?(:initialize)

module SymbolOperatorMethods
def to_google_analytics
operators = {
:eql => '==',
Expand All @@ -25,21 +21,42 @@ def to_google_analytics
:descending => '-'
}

target = Garb.to_google_analytics(@field)
operator = operators[@operator]
t = Garb.to_google_analytics(@field || @target)
o = operators[@operator]

[:desc, :descending].include?(@operator) ? "#{operator}#{target}" : "#{target}#{operator}"
[:desc, :descending].include?(@operator) ? "#{o}#{t}" : "#{t}#{o}"
end
end

class Symbol
[:eql, :not_eql, :gt, :gte, :lt, :lte, :desc, :descending,
:matches, :does_not_match, :contains, :does_not_contain,
:substring, :not_substring].each do |operator|
class SymbolOperator
def initialize(field, operator)
@field, @operator = field, operator
end unless method_defined?(:initialize)

include SymbolOperatorMethods
end

symbol_slugs = []

if Object.const_defined?(DataMapper)
# make sure the class is defined
require 'dm-core/core_ext/symbol'

# add to_google_analytics to DM's Opeartor
class DataMapper::Query::Operator
include SymbolOperatorMethods
end

symbol_slugs = (Garb.symbol_operator_slugs - DataMapper::Query::Conditions::Comparison.slugs)
else
symbol_slugs = Garb.symbol_operator_slugs
end

class Symbol
symbol_slugs.each do |operator|
define_method(operator) do
warn("The use of SymbolOperator(#{operator}, etc.) has been deprecated. Please use named filters.")
SymbolOperator.new(self, operator)
end unless method_defined?(operator)
end
end
end

0 comments on commit e0782fd

Please sign in to comment.