primedia-endeca 0.9.19 → 0.9.20
Sign up to get free protection for your applications and to get access to all the features.
- data/endeca.gemspec +2 -2
- data/lib/endeca/map.rb +6 -5
- data/lib/endeca/transformer.rb +9 -7
- data/lib/endeca.rb +1 -1
- data/spec/endeca/document_spec.rb +11 -0
- metadata +2 -2
data/endeca.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{endeca}
|
3
|
-
s.version = "0.9.
|
3
|
+
s.version = "0.9.20"
|
4
4
|
|
5
5
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
6
|
s.authors = ["Rein Henrichs", "Andy Stone"]
|
7
|
-
s.date = %q{2009-02-
|
7
|
+
s.date = %q{2009-02-09}
|
8
8
|
s.description = %q{An Endeca client library for Ruby.}
|
9
9
|
s.email = %q{}
|
10
10
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc"]
|
data/lib/endeca/map.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Endeca
|
2
2
|
class Map
|
3
3
|
def initialize(old_key, new_key=nil)
|
4
|
-
@old_key = old_key
|
4
|
+
@old_key = old_key
|
5
5
|
@new_key = new_key || @old_key
|
6
6
|
boolean
|
7
7
|
end
|
@@ -26,6 +26,7 @@ module Endeca
|
|
26
26
|
# ?ntk=propercity&ntt=>Atlanta
|
27
27
|
def into(hash)
|
28
28
|
@into = hash
|
29
|
+
@into = @into.symbolize_keys if @into.respond_to?(:symbolize_keys)
|
29
30
|
@with ||= ':'
|
30
31
|
@join ||= '|'
|
31
32
|
self
|
@@ -76,6 +77,7 @@ module Endeca
|
|
76
77
|
# Perform the mapping as defined for the current_query
|
77
78
|
def perform(current_query)
|
78
79
|
@current_query = current_query.symbolize_keys
|
80
|
+
@current_value = @current_query[@old_key]
|
79
81
|
|
80
82
|
perform_transformation
|
81
83
|
perform_map
|
@@ -108,8 +110,7 @@ module Endeca
|
|
108
110
|
|
109
111
|
def perform_transformation
|
110
112
|
return unless transformations?
|
111
|
-
|
112
|
-
current_value = @current_query[@old_key]
|
113
|
+
current_value = @current_value
|
113
114
|
transformations.each do |transformation|
|
114
115
|
current_value = transformation.call(current_value)
|
115
116
|
end
|
@@ -117,12 +118,12 @@ module Endeca
|
|
117
118
|
end
|
118
119
|
|
119
120
|
def perform_map
|
120
|
-
@new_query = {@new_key => @current_value}
|
121
|
+
@new_query = {@new_key => @current_value}.symbolize_keys
|
121
122
|
end
|
122
123
|
|
123
124
|
def perform_into
|
124
125
|
return unless into?
|
125
|
-
|
126
|
+
|
126
127
|
old_key, old_value = Array(@new_query).flatten
|
127
128
|
new_key, new_value = Array(@into).flatten
|
128
129
|
if new_value
|
data/lib/endeca/transformer.rb
CHANGED
@@ -11,6 +11,7 @@ module Endeca
|
|
11
11
|
# map(:new_name)
|
12
12
|
def map(mapping = {})
|
13
13
|
mapping = {mapping => mapping} if Symbol === mapping
|
14
|
+
mapping = mapping.symbolize_keys
|
14
15
|
|
15
16
|
if mapping.length > 1
|
16
17
|
raise ArgumentError, "map only accepts one key=>value pair"
|
@@ -25,16 +26,17 @@ module Endeca
|
|
25
26
|
# Use the mappings hash to replace domain level query query_options with
|
26
27
|
# their Endeca equivalent.
|
27
28
|
def transform_query_options(query_options)
|
29
|
+
# {"apartments" => true}
|
28
30
|
query = query_options.symbolize_keys
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
# {:apartments => true}
|
32
|
+
query.each do |key, _|
|
33
|
+
if mapping = mappings[key]
|
34
|
+
new_options = mapping.perform(query)
|
35
|
+
query.delete(key)
|
36
|
+
query.update(new_options)
|
35
37
|
end
|
36
38
|
end
|
37
|
-
|
39
|
+
query
|
38
40
|
end
|
39
41
|
|
40
42
|
end
|
data/lib/endeca.rb
CHANGED
@@ -249,6 +249,17 @@ describe Endeca::Document do
|
|
249
249
|
should == {:showapartments => 1}
|
250
250
|
end
|
251
251
|
end
|
252
|
+
|
253
|
+
describe "with multiple keys that are joined" do
|
254
|
+
it "should include all the keys" do
|
255
|
+
require 'pp'
|
256
|
+
Endeca::Document.map(:apartments => :showapartments).into('Ntt' => 'Ntk')
|
257
|
+
Endeca::Document.map(:colleges => :showcolleges).into('Ntt' => 'Ntk')
|
258
|
+
ntt = Endeca::Document.transform_query_options('apartments' => '1', 'colleges' => '2')[:Ntt]
|
259
|
+
ntt.should include('showapartments')
|
260
|
+
ntt.should include('showcolleges')
|
261
|
+
end
|
262
|
+
end
|
252
263
|
|
253
264
|
describe "when there is no mapping for the given key" do
|
254
265
|
it "returns the query options without modification" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: primedia-endeca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rein Henrichs
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-02-
|
13
|
+
date: 2009-02-09 00:00:00 -08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|