endeca_on_demand 1.2.0 → 1.3.0

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.
Files changed (34) hide show
  1. data/.gitignore +3 -0
  2. data/.travis.yml +3 -0
  3. data/Gemfile +14 -0
  4. data/Guardfile +5 -0
  5. data/{README.rdoc → README.md} +97 -71
  6. data/Rakefile +4 -0
  7. data/endeca_on_demand.gemspec +6 -5
  8. data/lib/endeca_on_demand.rb +11 -299
  9. data/lib/endeca_on_demand/client.rb +16 -14
  10. data/lib/endeca_on_demand/collection.rb +29 -27
  11. data/lib/endeca_on_demand/core_ext.rb +1 -0
  12. data/lib/endeca_on_demand/core_ext/hash.rb +30 -0
  13. data/lib/endeca_on_demand/pp.rb +39 -37
  14. data/lib/endeca_on_demand/proxy.rb +49 -57
  15. data/lib/endeca_on_demand/query.rb +129 -147
  16. data/lib/endeca_on_demand/response.rb +50 -41
  17. data/lib/endeca_on_demand/response/applied_filters.rb +33 -25
  18. data/lib/endeca_on_demand/response/applied_filters/keyword_redirect.rb +28 -27
  19. data/lib/endeca_on_demand/response/applied_filters/search_report.rb +36 -33
  20. data/lib/endeca_on_demand/response/applied_filters/search_report/search.rb +30 -27
  21. data/lib/endeca_on_demand/response/applied_filters/selected_dimension_value_id.rb +26 -20
  22. data/lib/endeca_on_demand/response/breadcrumb.rb +26 -20
  23. data/lib/endeca_on_demand/response/breadcrumb/bread.rb +29 -28
  24. data/lib/endeca_on_demand/response/business_rules_result.rb +25 -19
  25. data/lib/endeca_on_demand/response/business_rules_result/business_rule.rb +36 -35
  26. data/lib/endeca_on_demand/response/dimension.rb +34 -33
  27. data/lib/endeca_on_demand/response/dimension/dimension_value.rb +28 -35
  28. data/lib/endeca_on_demand/response/property.rb +29 -22
  29. data/lib/endeca_on_demand/response/records_set.rb +40 -32
  30. data/lib/endeca_on_demand/response/records_set/record.rb +43 -36
  31. data/lib/endeca_on_demand/version.rb +1 -1
  32. data/spec/endeca_on_demand_spec.rb +11 -0
  33. data/spec/spec_helper.rb +21 -0
  34. metadata +59 -29
@@ -1,50 +1,58 @@
1
- class EndecaOnDemand::Response::RecordsSet < EndecaOnDemand::Proxy
1
+ module EndecaOnDemand
2
+ class Response
3
+ class RecordsSet < EndecaOnDemand::Proxy
2
4
 
3
- include EndecaOnDemand::PP
5
+ include EndecaOnDemand::PP
4
6
 
5
- def inspect_attributes; [ :options, :records ]; end
7
+ def inspect_attributes; [ :options, :records ]; end
6
8
 
7
- ## fields ##
9
+ ## fields ##
8
10
 
9
- attr_reader :parent, :records
11
+ attr_reader :parent, :records
10
12
 
11
- def initialize(parent, xml)
12
- @parent, @xml = parent, xml
13
- end
13
+ def initialize(parent, xml)
14
+ @parent, @xml = parent, xml
14
15
 
15
- ## override proxy ##
16
+ define_getters(:options)
17
+ end
16
18
 
17
- def class
18
- EndecaOnDemand::Response::RecordsSet
19
- end
19
+ ## override proxy ##
20
20
 
21
- ##
21
+ def class
22
+ EndecaOnDemand::Response::RecordsSet
23
+ end
22
24
 
23
- ## associations ##
25
+ ##
24
26
 
25
- def records
26
- @records ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::RecordsSet::Record, xml.children.css('Record'), self)
27
- end
27
+ ## associations ##
28
28
 
29
- ##
29
+ def records
30
+ @records ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::RecordsSet::Record, xml.children.css('Record'), self)
31
+ end
32
+
33
+ ##
30
34
 
31
- ## data ##
35
+ ## data ##
32
36
 
33
- def options
34
- xml.xpath('child::node()[not(local-name() = "Record")]').inject({}) do |hash,child|
35
- hash.tap do
36
- hash[child.name] = child.content
37
+ def options
38
+ @options ||= xml.xpath('child::node()[not(local-name() = "Record")]').inject({}) do |hash,child|
39
+ hash.tap do
40
+ hash[child.name] = child.content
41
+ end
42
+ end.symbolize_keys
37
43
  end
38
- end.symbolize_keys
39
- end
40
44
 
41
- ##
45
+ ##
42
46
 
43
- protected
47
+ protected
44
48
 
45
- def method_missing(method, *args, &block)
46
- return options[method] if options.has_key?(method)
47
- super(method, *args, &block)
49
+ # def method_missing(method, *args, &block)
50
+ # return options[method] if options.has_key?(method)
51
+ # super(method, *args, &block)
52
+ # end
53
+
54
+ end
48
55
  end
49
-
50
- end
56
+ end
57
+
58
+ require 'endeca_on_demand/response/records_set/record'
@@ -1,57 +1,64 @@
1
- class EndecaOnDemand::Response::RecordsSet::Record < EndecaOnDemand::Proxy
1
+ module EndecaOnDemand
2
+ class Response
3
+ class RecordsSet
4
+ class Record < EndecaOnDemand::Proxy
2
5
 
3
- include EndecaOnDemand::PP
6
+ include EndecaOnDemand::PP
4
7
 
5
- def inspect_attributes; [ :properties ]; end
8
+ def inspect_attributes; [ :properties ]; end
6
9
 
7
- ## fields ##
10
+ ## fields ##
8
11
 
9
- attr_reader :properties, :records_set
12
+ attr_reader :properties, :records_set
10
13
 
11
- def initialize(records_set, xml)
12
- @records_set, @xml = records_set, xml
14
+ def initialize(records_set, xml)
15
+ @records_set, @xml = records_set, xml
13
16
 
14
- properties
15
- end
17
+ define_getters(:serializable_hash)
18
+ end
16
19
 
17
- ## override proxy ##
20
+ ## override proxy ##
18
21
 
19
- def class
20
- EndecaOnDemand::Response::RecordsSet::Record
21
- end
22
+ def class
23
+ EndecaOnDemand::Response::RecordsSet::Record
24
+ end
22
25
 
23
- ##
26
+ ##
24
27
 
25
- ## associations ##
28
+ ## associations ##
26
29
 
27
- def properties
28
- @properties ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::Property, xml.children, self)
29
- end
30
+ def properties
31
+ @properties ||= EndecaOnDemand::Collection.new(EndecaOnDemand::Response::Property, xml.children, self)
32
+ end
30
33
 
31
- ##
34
+ ##
32
35
 
33
- ## data ##
36
+ ## data ##
34
37
 
35
- def keys
36
- properties.map { |property| property.name }
37
- end
38
+ def keys
39
+ properties.map { |property| property.name }
40
+ end
38
41
 
39
- def serializable_hash
40
- properties.inject({}) { |hash,property| hash.tap { hash[property.name] = property } }.symbolize_keys
41
- end
42
- alias :to_hash :serializable_hash
42
+ def serializable_hash
43
+ properties.inject({}) do |hash,property|
44
+ hash.tap do
45
+ hash.has_key?(property.label) ? (hash[property.label] = [*hash[property.label]].push(property.value)) : (hash[property.label] = property.value)
46
+ end
47
+ end.symbolize_keys
48
+ end
49
+ alias :to_hash :serializable_hash
50
+
51
+ ##
43
52
 
44
- ##
53
+ protected
45
54
 
46
- protected
55
+ def method_missing(method, *args, &block)
56
+ super(method, *args, &block)
57
+ rescue NoMethodError
58
+ ''
59
+ end
47
60
 
48
- def method_missing(method, *args, &block)
49
- if @properties.present? and (property = properties.where(label: method.to_s).first || properties.where(name: method.to_s).first).present?
50
- return property.value
61
+ end
51
62
  end
52
- super(method, *args, &block)
53
- rescue NoMethodError
54
- ''
55
63
  end
56
-
57
64
  end
@@ -1,3 +1,3 @@
1
1
  module EndecaOnDemand
2
- VERSION = "1.2.0"
2
+ VERSION = "1.3.0"
3
3
  end
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+
3
+ require "spec_helper"
4
+
5
+ describe EndecaOnDemand do
6
+
7
+ pending "it should do something" do
8
+
9
+ end
10
+
11
+ end
@@ -0,0 +1,21 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'endeca_on_demand'
5
+
6
+ Dir["#{File.expand_path('..', __FILE__)}/support/**/*.rb"].each { |f| require f }
7
+
8
+ puts "Please do not update/create files while tests are running."
9
+
10
+ RSpec.configure do |config|
11
+ config.color_enabled = true
12
+
13
+ config.filter_run focus: true
14
+ config.treat_symbols_as_metadata_keys_with_true_values = true
15
+ config.run_all_when_everything_filtered = true
16
+
17
+ config.before(:each) do
18
+ @fixture_path = Pathname.new(File.expand_path('../fixtures/', __FILE__))
19
+ end
20
+
21
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: endeca_on_demand
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-10 00:00:00.000000000Z
12
+ date: 2011-12-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rspec
16
- requirement: &70144082452440 !ruby/object:Gem::Requirement
15
+ name: bundler
16
+ requirement: &70304290690700 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70144082452440
24
+ version_requirements: *70304290690700
25
25
  - !ruby/object:Gem::Dependency
26
- name: pry
27
- requirement: &70144082452020 !ruby/object:Gem::Requirement
26
+ name: guard-rspec
27
+ requirement: &70304290690200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,43 +32,54 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70144082452020
35
+ version_requirements: *70304290690200
36
36
  - !ruby/object:Gem::Dependency
37
- name: nokogiri
38
- requirement: &70144082451580 !ruby/object:Gem::Requirement
37
+ name: pry
38
+ requirement: &70304290688520 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
44
- type: :runtime
44
+ type: :development
45
45
  prerelease: false
46
- version_requirements: *70144082451580
46
+ version_requirements: *70304290688520
47
47
  - !ruby/object:Gem::Dependency
48
- name: builder
49
- requirement: &70144082451040 !ruby/object:Gem::Requirement
48
+ name: rake
49
+ requirement: &70304290688080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- type: :runtime
55
+ type: :development
56
56
  prerelease: false
57
- version_requirements: *70144082451040
57
+ version_requirements: *70304290688080
58
58
  - !ruby/object:Gem::Dependency
59
- name: activesupport
60
- requirement: &70144082443940 !ruby/object:Gem::Requirement
59
+ name: rspec
60
+ requirement: &70304290687440 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
64
64
  - !ruby/object:Gem::Version
65
- version: '3.1'
65
+ version: 2.7.0
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70304290687440
69
+ - !ruby/object:Gem::Dependency
70
+ name: nokogiri
71
+ requirement: &70304290686940 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
66
77
  type: :runtime
67
78
  prerelease: false
68
- version_requirements: *70144082443940
79
+ version_requirements: *70304290686940
69
80
  - !ruby/object:Gem::Dependency
70
- name: i18n
71
- requirement: &70144082443100 !ruby/object:Gem::Requirement
81
+ name: builder
82
+ requirement: &70304290686340 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,10 +87,21 @@ dependencies:
76
87
  version: '0'
77
88
  type: :runtime
78
89
  prerelease: false
79
- version_requirements: *70144082443100
90
+ version_requirements: *70304290686340
91
+ - !ruby/object:Gem::Dependency
92
+ name: activesupport
93
+ requirement: &70304290685760 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: '3.1'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *70304290685760
80
102
  - !ruby/object:Gem::Dependency
81
- name: facets
82
- requirement: &70144082442160 !ruby/object:Gem::Requirement
103
+ name: i18n
104
+ requirement: &70304290685260 !ruby/object:Gem::Requirement
83
105
  none: false
84
106
  requirements:
85
107
  - - ! '>='
@@ -87,7 +109,7 @@ dependencies:
87
109
  version: '0'
88
110
  type: :runtime
89
111
  prerelease: false
90
- version_requirements: *70144082442160
112
+ version_requirements: *70304290685260
91
113
  description: EndecaOnDemand will take a query-string and construct an XML query and
92
114
  send it to an hosted Endeca On-Demand Cluster. It will then parse the response and
93
115
  expose an API for using the response data.
@@ -98,14 +120,18 @@ extensions: []
98
120
  extra_rdoc_files: []
99
121
  files:
100
122
  - .gitignore
123
+ - .travis.yml
101
124
  - Gemfile
125
+ - Guardfile
102
126
  - LICENSE.txt
103
- - README.rdoc
127
+ - README.md
104
128
  - Rakefile
105
129
  - endeca_on_demand.gemspec
106
130
  - lib/endeca_on_demand.rb
107
131
  - lib/endeca_on_demand/client.rb
108
132
  - lib/endeca_on_demand/collection.rb
133
+ - lib/endeca_on_demand/core_ext.rb
134
+ - lib/endeca_on_demand/core_ext/hash.rb
109
135
  - lib/endeca_on_demand/pp.rb
110
136
  - lib/endeca_on_demand/proxy.rb
111
137
  - lib/endeca_on_demand/query.rb
@@ -125,7 +151,9 @@ files:
125
151
  - lib/endeca_on_demand/response/records_set.rb
126
152
  - lib/endeca_on_demand/response/records_set/record.rb
127
153
  - lib/endeca_on_demand/version.rb
128
- homepage: http://github.com/sdomino/endeca_on-demand
154
+ - spec/endeca_on_demand_spec.rb
155
+ - spec/spec_helper.rb
156
+ homepage: https://github.com/sdomino/endeca_on_demand
129
157
  licenses: []
130
158
  post_install_message:
131
159
  rdoc_options: []
@@ -150,4 +178,6 @@ signing_key:
150
178
  specification_version: 3
151
179
  summary: Formerly EndecaXml (endeca_xml), This gem provides an easy way for you to
152
180
  use the Thanx Media, Endeca On-Demand Web API
153
- test_files: []
181
+ test_files:
182
+ - spec/endeca_on_demand_spec.rb
183
+ - spec/spec_helper.rb