primedia-endeca 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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