primedia-endeca 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *.swp
2
+ .swn
3
+ .swp
4
+ .DS_Store
5
+ coverage/
6
+ pkg/
7
+ doc/
data/endeca.gemspec CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{endeca}
5
- s.version = "0.9.2"
5
+ s.version = "0.9.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Rein Henrichs", "Andy Stone"]
9
- s.date = %q{2009-01-23}
9
+ s.date = %q{2009-01-26}
10
10
  s.description = %q{An Endeca client library for Ruby.}
11
11
  s.email = %q{}
12
- s.extra_rdoc_files = ["History.txt", "README.rdoc"]
13
- s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "endeca.gemspec", "example/benchmark.rb", "example/listing.rb", "lib/class_to_proc.rb", "lib/core_ext.rb", "lib/endeca.rb", "lib/endeca/dimension.rb", "lib/endeca/document.rb", "lib/endeca/document_collection.rb", "lib/endeca/map.rb", "lib/endeca/readers.rb", "lib/endeca/refinement.rb", "lib/endeca/request.rb", "lib/endeca/transformer.rb", "spec/core_ext_spec.rb", "spec/endeca/dimension_spec.rb", "spec/endeca/document_collection_spec.rb", "spec/endeca/document_spec.rb", "spec/endeca/map_spec.rb", "spec/endeca/readers_spec.rb", "spec/endeca/refinement_spec.rb", "spec/endeca/request_spec.rb", "spec/endeca/transformer_spec.rb", "spec/endeca_spec.rb", "spec/rcov.opts", "spec/spec.opts", "spec/spec_helper.rb"]
12
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc", "lib/.endeca.rb.swp"]
13
+ s.files = [".gitignore", "History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "endeca.gemspec", "example/benchmark.rb", "example/listing.rb", "lib/.endeca.rb.swp", "lib/class_to_proc.rb", "lib/core_ext.rb", "lib/endeca.rb", "lib/endeca/dimension.rb", "lib/endeca/document.rb", "lib/endeca/document_collection.rb", "lib/endeca/map.rb", "lib/endeca/readers.rb", "lib/endeca/refinement.rb", "lib/endeca/request.rb", "lib/endeca/transformer.rb", "spec/core_ext_spec.rb", "spec/endeca/dimension_spec.rb", "spec/endeca/document_collection_spec.rb", "spec/endeca/document_spec.rb", "spec/endeca/map_spec.rb", "spec/endeca/readers_spec.rb", "spec/endeca/refinement_spec.rb", "spec/endeca/request_spec.rb", "spec/endeca/transformer_spec.rb", "spec/endeca_spec.rb", "spec/rcov.opts", "spec/spec.opts", "spec/spec_helper.rb"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://github.com/primedia/endeca-ruby}
16
16
  s.rdoc_options = ["--main", "README.rdoc"]
@@ -24,11 +24,11 @@ Gem::Specification.new do |s|
24
24
  s.specification_version = 2
25
25
 
26
26
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
- s.add_development_dependency(%q<bones>, [">= 2.2.0"])
27
+ s.add_development_dependency(%q<bones>, [">= 2.3.0"])
28
28
  else
29
- s.add_dependency(%q<bones>, [">= 2.2.0"])
29
+ s.add_dependency(%q<bones>, [">= 2.3.0"])
30
30
  end
31
31
  else
32
- s.add_dependency(%q<bones>, [">= 2.2.0"])
32
+ s.add_dependency(%q<bones>, [">= 2.3.0"])
33
33
  end
34
34
  end
data/lib/endeca.rb CHANGED
@@ -18,7 +18,7 @@ require 'endeca/document'
18
18
  module Endeca
19
19
 
20
20
  # :stopdoc:
21
- VERSION = '0.9.2'
21
+ VERSION = '0.9.3'
22
22
  # :startdoc:
23
23
 
24
24
  # Returns the version string for the library.
data/lib/endeca/map.rb CHANGED
@@ -31,6 +31,8 @@ module Endeca
31
31
  self
32
32
  end
33
33
 
34
+ def into?; @into end
35
+
34
36
  # When mapping multiple key/value pairs to a single parameter value (via
35
37
  # +into+), use this character to join a key with a value.
36
38
  def with(character)
@@ -45,12 +47,32 @@ module Endeca
45
47
  self
46
48
  end
47
49
 
50
+ def join?; @join end
51
+
48
52
  # Code block to execute on the original data
49
53
  def transform(&block)
50
54
  add_transformation block
51
55
  self
52
56
  end
53
57
 
58
+ # When mapping multiple values, enclose the values in the string provided
59
+ # to +enclose+.
60
+ def enclose(str)
61
+ @enclose = str
62
+ self
63
+ end
64
+
65
+ def enclose?; @enclose end
66
+
67
+ # When mapping multiple key/value pairs, replace existing keys with the new
68
+ # keys rather than joining.
69
+ def replace!
70
+ @replace = true
71
+ self
72
+ end
73
+
74
+ def replace?; @replace end
75
+
54
76
  # Perform the mapping as defined for the current_query
55
77
  def perform(current_query)
56
78
  @current_query = current_query
@@ -75,12 +97,18 @@ module Endeca
75
97
  @transformations ||= []
76
98
  end
77
99
 
100
+ def transformations?
101
+ !transformations.empty?
102
+ end
103
+
78
104
  def add_transformation(transformation = nil, &block)
79
105
  transformations.push transformation if transformation
80
106
  transformations.push block if block_given?
81
107
  end
82
108
 
83
109
  def perform_transformation
110
+ return unless transformations?
111
+
84
112
  current_value = @current_query[@old_key]
85
113
  transformations.each do |transformation|
86
114
  current_value = transformation.call(current_value)
@@ -93,18 +121,23 @@ module Endeca
93
121
  end
94
122
 
95
123
  def perform_into
96
- return unless @into
124
+ return unless into?
125
+
97
126
  old_key, old_value = Array(@new_query).flatten
98
127
  new_key, new_value = Array(@into).flatten
99
128
  if new_value
100
129
  @new_query = {new_key => old_key, new_value => old_value}
101
130
  else
102
- @new_query = {new_key => [old_key, old_value].compact.join(@with)}
131
+ new_value = [old_key, old_value].compact.join(@with)
132
+ new_value = "#{@enclose}(#{new_value})" if enclose?
133
+ @new_query = {new_key => new_value}
103
134
  end
104
135
  end
105
136
 
106
137
  def perform_join
107
- return unless @join
138
+ return unless join?
139
+ return if replace?
140
+
108
141
  @new_query.each do |key, value|
109
142
  @new_query[key] = [@current_query[key], value].compact.join(@join)
110
143
  end
@@ -4,6 +4,7 @@ describe Endeca::Map do
4
4
  before do
5
5
  @query = {:foo => "bazz", :bizz => "somevalue"}
6
6
  @map = Endeca::Map.new :foo, :bizz
7
+
7
8
  end
8
9
 
9
10
  describe ".perform" do
@@ -41,6 +42,26 @@ describe Endeca::Map do
41
42
  end
42
43
  end
43
44
 
45
+ describe "#perform_into" do
46
+ describe "with an enclosing string" do
47
+ map = Endeca::Map.new(:foo, :bar)
48
+ map.into(:bizz).enclose(:AND)
49
+ map.perform(:foo => :quux).should == {:bizz => 'AND(bar:quux)'}
50
+ end
51
+
52
+ describe "with replace" do
53
+ map = Endeca::Map.new(:foo, :bar)
54
+ map.into(:bizz).replace!
55
+ map.perform(:foo => :quux, :bizz => :foobar).should == {:bizz => 'bar:quux'}
56
+ end
57
+
58
+ describe "with enclose and replace" do
59
+ map = Endeca::Map.new(:foo, :bar)
60
+ map.into(:bizz).enclose(:AND).replace!
61
+ map.perform(:foo => :quux, :bizz => :foobar).should == {:bizz => 'AND(bar:quux)'}
62
+ end
63
+ end
64
+
44
65
  describe "#with" do
45
66
  it "should assign the character to join keys to values with" do
46
67
  @map.with('*').instance_variable_get(:@with).should == '*'
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.2
4
+ version: 0.9.3
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-01-23 00:00:00 -08:00
13
+ date: 2009-01-26 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 2.2.0
23
+ version: 2.3.0
24
24
  version:
25
25
  description: An Endeca client library for Ruby.
26
26
  email: ""
@@ -30,8 +30,11 @@ extensions: []
30
30
 
31
31
  extra_rdoc_files:
32
32
  - History.txt
33
+ - Manifest.txt
33
34
  - README.rdoc
35
+ - lib/.endeca.rb.swp
34
36
  files:
37
+ - .gitignore
35
38
  - History.txt
36
39
  - Manifest.txt
37
40
  - README.rdoc
@@ -39,6 +42,7 @@ files:
39
42
  - endeca.gemspec
40
43
  - example/benchmark.rb
41
44
  - example/listing.rb
45
+ - lib/.endeca.rb.swp
42
46
  - lib/class_to_proc.rb
43
47
  - lib/core_ext.rb
44
48
  - lib/endeca.rb