primedia-endeca 0.9.23 → 0.9.24

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/Manifest.txt CHANGED
@@ -8,15 +8,21 @@ example/listing.rb
8
8
  lib/class_to_proc.rb
9
9
  lib/core_ext.rb
10
10
  lib/endeca.rb
11
+ lib/endeca/benchmarking.rb
12
+ lib/endeca/breadcrumb.rb
13
+ lib/endeca/breadcrumbs.rb
11
14
  lib/endeca/dimension.rb
12
15
  lib/endeca/document.rb
13
16
  lib/endeca/document_collection.rb
17
+ lib/endeca/logging.rb
14
18
  lib/endeca/map.rb
15
19
  lib/endeca/readers.rb
16
20
  lib/endeca/refinement.rb
17
21
  lib/endeca/request.rb
18
22
  lib/endeca/transformer.rb
19
23
  spec/core_ext_spec.rb
24
+ spec/endeca/benchmarking_spec.rb
25
+ spec/endeca/breadcrumb_spec.rb
20
26
  spec/endeca/dimension_spec.rb
21
27
  spec/endeca/document_collection_spec.rb
22
28
  spec/endeca/document_spec.rb
data/endeca.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{endeca}
5
- s.version = "0.9.23"
5
+ s.version = "0.9.24"
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"]
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.description = %q{An Endeca client library for Ruby.}
11
11
  s.email = %q{}
12
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"]
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/benchmarking.rb", "lib/endeca/breadcrumb.rb", "lib/endeca/breadcrumbs.rb", "lib/endeca/dimension.rb", "lib/endeca/document.rb", "lib/endeca/document_collection.rb", "lib/endeca/logging.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/benchmarking_spec.rb", "spec/endeca/breadcrumb_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"]
@@ -0,0 +1,18 @@
1
+ require 'benchmark'
2
+
3
+ module Endeca
4
+ module Benchmarking
5
+ # Log and benchmark the workings of a single block. Will only be called if
6
+ # Endeca.debug and Endeca.benchmark are true.
7
+ def bm(title)
8
+ if Endeca.debug && Endeca.logger && Endeca.benchmark
9
+ result = nil
10
+ ms = ::Benchmark.ms { result = yield }
11
+ Endeca.logger.debug("#{title}#{'%.1f' % ms}ms")
12
+ result
13
+ else
14
+ yield
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,42 @@
1
+ module Endeca
2
+
3
+ class Breadcrumb
4
+ extend Readers
5
+
6
+ def self.create(raw)
7
+ name = raw['Type']
8
+ breadcrumb_class = self
9
+
10
+ if name
11
+ unless Breadcrumbs.include?(name)
12
+ raise Breadcrumbs::TypeError, "Unknown breadcrumb type: #{name.inspect}"
13
+ end
14
+ breadcrumb_class = Breadcrumbs[name]
15
+ end
16
+
17
+ breadcrumb_class.new(raw)
18
+ end
19
+
20
+ def self.to_proc
21
+ proc(&method(:create))
22
+ end
23
+
24
+ attr_reader :raw
25
+ def initialize(raw={})
26
+ @raw = raw
27
+ end
28
+ alias_method :attributes, :raw
29
+
30
+ reader 'Type' => :type
31
+ def name; '' end
32
+
33
+ def ==(other)
34
+ name == other.name
35
+ end
36
+
37
+ def inspect
38
+ "#<#{self.class}=0x#{self.object_id.to_s(16)} name=#{name.inspect}>"
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,13 @@
1
+ module Endeca
2
+ module Breadcrumbs
3
+ class TypeError < StandardError; end
4
+
5
+ def self.include?(klass)
6
+ self.const_defined?(klass)
7
+ end
8
+
9
+ def self.[](klass)
10
+ self.const_get(klass)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ module Endeca
2
+ module Logging
3
+ # Log and benchmark the workings of a single block. Will only be called if
4
+ # Endeca.benchmark is true
5
+ def log(message)
6
+ Endeca.logger.debug(message) if Endeca.debug && Endeca.logger
7
+ end
8
+ end
9
+ end
data/lib/endeca.rb CHANGED
@@ -25,7 +25,7 @@ module Endeca
25
25
  extend Logging
26
26
 
27
27
  # :stopdoc:
28
- VERSION = '0.9.23'
28
+ VERSION = '0.9.24'
29
29
  # :startdoc:
30
30
 
31
31
  # Returns the version string for the library.
@@ -0,0 +1,22 @@
1
+ require File.join(File.dirname(__FILE__), %w[.. spec_helper])
2
+
3
+ describe Endeca::Benchmarking do
4
+ class Helper
5
+ extend Endeca::Benchmarking
6
+ end
7
+ describe "#benchmark" do
8
+ before do
9
+ @logger = mock('Logger')
10
+
11
+ Endeca.stub!(:logger).and_return(@logger)
12
+ Endeca.stub!(:debug => true, :benchmark => true)
13
+
14
+ Benchmark.stub!(:ms => 1)
15
+ end
16
+
17
+ it "should log the title and the time to the Endeca logger" do
18
+ @logger.should_receive(:debug).with("title => 1.0ms")
19
+ Endeca.bm("title => "){ 1 }
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,90 @@
1
+ require File.join(File.dirname(__FILE__), %w[.. spec_helper])
2
+
3
+ module Endeca
4
+ module Breadcrumbs
5
+ class Navigation < Endeca::Breadcrumb
6
+ end
7
+ end
8
+ end
9
+
10
+ describe Endeca::Breadcrumb do
11
+ before do
12
+ @dimension_value = {
13
+ "DimValueID" => "4343565665",
14
+ "RemovalLink" => "N=",
15
+ "DimValueName" => "Apartment"
16
+ }
17
+
18
+ @navigation_hash = {
19
+ "Type" => "Navigation",
20
+ "DimensionName" => "property type",
21
+ "DimensionRemovalLink" => "N=",
22
+ "DimensionValues" => [@dimension_value]
23
+ }
24
+
25
+ @dimensions = { "Dimensions" => [@navigation_hash] }
26
+ @breadcrumb = Endeca::Breadcrumb.new( @dimensions )
27
+ end
28
+
29
+ describe ".create" do
30
+ before do
31
+ @navigation = Endeca::Breadcrumb.create(@navigation_hash)
32
+ end
33
+
34
+ it "should create a breadcrumb of the appropriate type" do
35
+ Endeca::Breadcrumb.create(@navigation_hash).
36
+ should be_a_kind_of(Endeca::Breadcrumbs::Navigation)
37
+ end
38
+
39
+ describe "with an invalid type" do
40
+ it do
41
+ creating_invalid_breadcrumb = lambda{Endeca::Breadcrumb.create({'Type' => 'Invalid'})}
42
+ creating_invalid_breadcrumb.should raise_error(Endeca::Breadcrumbs::TypeError)
43
+ end
44
+ end
45
+ end
46
+
47
+ describe ".to_proc" do
48
+ it "should call create" do
49
+ Endeca::Breadcrumb.should_receive(:create).with(:obj)
50
+ [:obj].map(&Endeca::Breadcrumb)
51
+ end
52
+ end
53
+
54
+ describe '#==' do
55
+ it "should compare Breadcrumbs by name" do
56
+ doc_1, doc_2 = Endeca::Breadcrumb.new, Endeca::Breadcrumb.new
57
+ doc_1.stub!(:name).and_return('property type')
58
+ doc_2.stub!(:name).and_return('property type')
59
+ (doc_1 == doc_2).should be_true
60
+
61
+ doc_2.stub!(:name).and_return('something else')
62
+ (doc_1 == doc_2).should be_false
63
+ end
64
+ end
65
+
66
+ describe '#inspect' do
67
+ it "includes the class name" do
68
+ @breadcrumb.inspect.should include(Endeca::Breadcrumb.name)
69
+ end
70
+
71
+ it "includes the hex string of the object id" do
72
+ @breadcrumb.inspect.should include("0x#{@breadcrumb.object_id.to_s(16)}")
73
+ end
74
+
75
+ it "includes the inspected name" do
76
+ @breadcrumb.stub!(:name).and_return('A Name')
77
+ @breadcrumb.inspect.should include('name="A Name"')
78
+ end
79
+ end
80
+
81
+ describe "#type" do
82
+ it "returns the Type value" do
83
+ Endeca::Breadcrumb.new('Type' => 'AType').type.should == 'AType'
84
+ end
85
+ end
86
+
87
+ describe "#name" do
88
+ it {Endeca::Breadcrumb.new.name.should == ''}
89
+ end
90
+ end
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.23
4
+ version: 0.9.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rein Henrichs
@@ -42,15 +42,21 @@ files:
42
42
  - lib/class_to_proc.rb
43
43
  - lib/core_ext.rb
44
44
  - lib/endeca.rb
45
+ - lib/endeca/benchmarking.rb
46
+ - lib/endeca/breadcrumb.rb
47
+ - lib/endeca/breadcrumbs.rb
45
48
  - lib/endeca/dimension.rb
46
49
  - lib/endeca/document.rb
47
50
  - lib/endeca/document_collection.rb
51
+ - lib/endeca/logging.rb
48
52
  - lib/endeca/map.rb
49
53
  - lib/endeca/readers.rb
50
54
  - lib/endeca/refinement.rb
51
55
  - lib/endeca/request.rb
52
56
  - lib/endeca/transformer.rb
53
57
  - spec/core_ext_spec.rb
58
+ - spec/endeca/benchmarking_spec.rb
59
+ - spec/endeca/breadcrumb_spec.rb
54
60
  - spec/endeca/dimension_spec.rb
55
61
  - spec/endeca/document_collection_spec.rb
56
62
  - spec/endeca/document_spec.rb