primedia-endeca 0.9.23 → 0.9.24

Sign up to get free protection for your applications and to get access to all the features.
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