locabulary 0.6.0 → 0.6.1
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.
- checksums.yaml +4 -4
- data/lib/locabulary.rb +14 -11
- data/lib/locabulary/hierarchy_processor.rb +2 -0
- data/lib/locabulary/item.rb +1 -1
- data/lib/locabulary/items/base.rb +14 -0
- data/lib/locabulary/services.rb +27 -0
- data/lib/locabulary/{commands → services}/active_hierarchical_roots_command.rb +7 -1
- data/lib/locabulary/{commands → services}/active_items_for_command.rb +7 -1
- data/lib/locabulary/{commands → services}/build_ordered_hierarchical_tree_command.rb +7 -1
- data/lib/locabulary/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1eb4d78aa929a7b2ef35ab9a952a1bdb8c0ca23
|
4
|
+
data.tar.gz: 871c5926d7e64db00a969b719822571cfaf01f20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68d54f45f0210abacc45a9a2ddf7011099eeaea01a6622bf3c042370ad19c46d7dc07711b9f8ffed3b2d0573ccd3ba16f7c0499e78342fad71f0c616c0400617
|
7
|
+
data.tar.gz: 3b306460efc705ce496ff1b1297013a2b8056416591bcb958fc58786fd6b86e1fbe9805d93c248d95e4e0152a0cbebc07f13ca5641b5c7b85a58d60f7c562d56
|
data/lib/locabulary.rb
CHANGED
@@ -2,13 +2,11 @@ require 'date'
|
|
2
2
|
require 'json'
|
3
3
|
require 'locabulary/exceptions'
|
4
4
|
require 'locabulary/item'
|
5
|
-
require 'locabulary/
|
6
|
-
require 'locabulary/commands/active_items_for_command'
|
7
|
-
require 'locabulary/commands/active_hierarchical_roots_command'
|
5
|
+
require 'locabulary/services'
|
8
6
|
|
9
7
|
# @since 0.1.0
|
10
8
|
module Locabulary
|
11
|
-
# @api
|
9
|
+
# @api public
|
12
10
|
# @since 0.5.0
|
13
11
|
#
|
14
12
|
# Responsible for building a hierarchical tree from faceted items, and ordering the nodes as per the presentation sequence for the
|
@@ -18,11 +16,11 @@ module Locabulary
|
|
18
16
|
# @option options [String] :predicate_name
|
19
17
|
# @option options [Array<#hits, #value>] :faceted_items
|
20
18
|
# @option options [String] :faceted_item_hierarchy_delimiter
|
21
|
-
# @return Array
|
19
|
+
# @return [Array<FacetWrapperForItem>]
|
22
20
|
#
|
23
|
-
# @see Locabulary::
|
21
|
+
# @see Locabulary::Services
|
24
22
|
def self.build_ordered_hierarchical_tree(options = {})
|
25
|
-
|
23
|
+
Services.call(:build_ordered_hierarchical_tree, options)
|
26
24
|
end
|
27
25
|
|
28
26
|
# @api public
|
@@ -33,11 +31,11 @@ module Locabulary
|
|
33
31
|
# @param [Hash] options
|
34
32
|
# @option options [String] :predicate_name
|
35
33
|
# @option options [Date] :as_of (Date.today)
|
36
|
-
# @return Array
|
34
|
+
# @return [Array<Locabulary::Items::Base>]
|
37
35
|
#
|
38
|
-
# @see Locabulary::
|
36
|
+
# @see Locabulary::Services
|
39
37
|
def self.active_items_for(options = {})
|
40
|
-
|
38
|
+
Services.call(:active_items_for, options)
|
41
39
|
end
|
42
40
|
|
43
41
|
# @api public
|
@@ -50,12 +48,17 @@ module Locabulary
|
|
50
48
|
# @option options [String] :predicate_name
|
51
49
|
# @option options [Date] :as_of (Date.today)
|
52
50
|
# @return [Array<Locabulary::Items::Base>] - the root nodes
|
51
|
+
# @see Locabulary::Services
|
53
52
|
def self.active_hierarchical_roots(options = {})
|
54
|
-
|
53
|
+
Services.call(:active_hierarchical_roots, options)
|
55
54
|
end
|
56
55
|
|
57
56
|
# @api public
|
58
57
|
# @since 0.5.0
|
58
|
+
#
|
59
|
+
# For the given :predicate_name and :term_label find an item.
|
60
|
+
# We prefer to find an active item, but will settle for a non-active item.
|
61
|
+
#
|
59
62
|
# @param options [Hash]
|
60
63
|
# @option options [String] :predicate_name
|
61
64
|
# @option options [String] :term_label
|
data/lib/locabulary/item.rb
CHANGED
@@ -20,7 +20,7 @@ module Locabulary
|
|
20
20
|
|
21
21
|
# @api public
|
22
22
|
# @since 0.2.1
|
23
|
-
# @deprecated 0.6.0 Prefer instead class_to_instantiate
|
23
|
+
# @deprecated 0.6.0 Prefer instead class_to_instantiate; This will be removed in 0.7.0.
|
24
24
|
#
|
25
25
|
# Responsible for finding the appropriate Factory method for building a Locabulary::Item
|
26
26
|
#
|
@@ -58,6 +58,7 @@ module Locabulary
|
|
58
58
|
@children = []
|
59
59
|
end
|
60
60
|
|
61
|
+
# @api private
|
61
62
|
def to_h
|
62
63
|
attribute_names.each_with_object({}) do |key, mem|
|
63
64
|
mem[key.to_s] = send(key) unless send(key).to_s.strip == ''
|
@@ -66,6 +67,7 @@ module Locabulary
|
|
66
67
|
end
|
67
68
|
alias as_json to_h
|
68
69
|
|
70
|
+
# @api public
|
69
71
|
def to_persistence_format_for_fedora
|
70
72
|
return term_uri unless term_uri.to_s.strip == ''
|
71
73
|
term_label
|
@@ -102,39 +104,50 @@ module Locabulary
|
|
102
104
|
default_presentation_sequence || SORT_SEQUENCE_FOR_NIL
|
103
105
|
end
|
104
106
|
|
107
|
+
# @api public
|
105
108
|
def children
|
106
109
|
@children.sort
|
107
110
|
end
|
108
111
|
|
112
|
+
# @api private
|
113
|
+
# Yes, this is private. Its an internal mechanism.
|
109
114
|
def add_child(*input)
|
110
115
|
@children += input
|
111
116
|
end
|
112
117
|
|
113
118
|
HIERARCHY_DELIMITER = '::'.freeze
|
119
|
+
|
120
|
+
# @api public
|
114
121
|
def slugs
|
115
122
|
term_label.split(HIERARCHY_DELIMITER)
|
116
123
|
end
|
117
124
|
|
125
|
+
# @api public
|
118
126
|
def self.hierarchy_delimiter
|
119
127
|
HIERARCHY_DELIMITER
|
120
128
|
end
|
121
129
|
|
130
|
+
# @api public
|
122
131
|
def parent_slugs
|
123
132
|
slugs[0..-2]
|
124
133
|
end
|
125
134
|
|
135
|
+
# @api public
|
126
136
|
def parent_term_label
|
127
137
|
parent_slugs.join(HIERARCHY_DELIMITER)
|
128
138
|
end
|
129
139
|
|
140
|
+
# @api public
|
130
141
|
def root_slug
|
131
142
|
slugs[0]
|
132
143
|
end
|
133
144
|
|
145
|
+
# @api public
|
134
146
|
def selectable?
|
135
147
|
children.count.zero?
|
136
148
|
end
|
137
149
|
|
150
|
+
# @api public
|
138
151
|
# When rendered as part of a select list
|
139
152
|
def selectable_label
|
140
153
|
slugs[-1]
|
@@ -142,6 +155,7 @@ module Locabulary
|
|
142
155
|
|
143
156
|
alias selectable_id id
|
144
157
|
|
158
|
+
# @api public
|
145
159
|
# When rendered as part of a facet list
|
146
160
|
def hierarchy_facet_label
|
147
161
|
slugs[-1]
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
2
|
+
require 'locabulary/services/build_ordered_hierarchical_tree_command'
|
3
|
+
require 'locabulary/services/active_items_for_command'
|
4
|
+
require 'locabulary/services/active_hierarchical_roots_command'
|
5
|
+
|
6
|
+
module Locabulary
|
7
|
+
# @api private
|
8
|
+
#
|
9
|
+
# A container namespace for service style objects; These service objects are
|
10
|
+
# responsible for encapsulating logic related to interaction with the data
|
11
|
+
# storage.
|
12
|
+
module Services
|
13
|
+
# @api private
|
14
|
+
# @since 0.6.1
|
15
|
+
#
|
16
|
+
# Responsible for delegating messages to underlying class.
|
17
|
+
# This indirection is used to protect the direct to private classes and thus
|
18
|
+
# keep a tightly defined interface.
|
19
|
+
#
|
20
|
+
# @param command_name [Symbol]
|
21
|
+
# @param options [Hash]
|
22
|
+
def self.call(command_name, options = {})
|
23
|
+
command_class = "#{command_name}_command".classify
|
24
|
+
const_get(command_class).call(options)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -5,7 +5,10 @@ require 'locabulary/exceptions'
|
|
5
5
|
require 'locabulary/hierarchy_processor'
|
6
6
|
|
7
7
|
module Locabulary
|
8
|
-
|
8
|
+
# :nodoc:
|
9
|
+
module Services
|
10
|
+
# @api private
|
11
|
+
#
|
9
12
|
# Responsible for transforming the flat data for the given :predicate_name
|
10
13
|
# into a hierarchy.
|
11
14
|
class ActiveHierarchicalRootsCommand
|
@@ -35,6 +38,8 @@ module Locabulary
|
|
35
38
|
cache[predicate_name] ||= new(options).call
|
36
39
|
end
|
37
40
|
|
41
|
+
private_class_method :new
|
42
|
+
|
38
43
|
def initialize(options = {})
|
39
44
|
@predicate_name = options.fetch(:predicate_name)
|
40
45
|
@as_of = options.fetch(:as_of) { Date.today }
|
@@ -67,5 +72,6 @@ module Locabulary
|
|
67
72
|
Utility
|
68
73
|
end
|
69
74
|
end
|
75
|
+
private_constant :ActiveHierarchicalRootsCommand
|
70
76
|
end
|
71
77
|
end
|
@@ -3,7 +3,10 @@ require 'locabulary/item'
|
|
3
3
|
require 'locabulary/utility'
|
4
4
|
|
5
5
|
module Locabulary
|
6
|
-
|
6
|
+
# :nodoc:
|
7
|
+
module Services
|
8
|
+
# @api private
|
9
|
+
#
|
7
10
|
# Responsible for extracting a non-hierarchical sorted array of Locabulary::Item for the given predicate_name
|
8
11
|
#
|
9
12
|
# @see Locabulary::Item
|
@@ -35,6 +38,8 @@ module Locabulary
|
|
35
38
|
cache[predicate_name] ||= new(options).call
|
36
39
|
end
|
37
40
|
|
41
|
+
private_class_method :new
|
42
|
+
|
38
43
|
def initialize(options = {})
|
39
44
|
@predicate_name = options.fetch(:predicate_name)
|
40
45
|
@as_of = options.fetch(:as_of) { Date.today }
|
@@ -53,5 +58,6 @@ module Locabulary
|
|
53
58
|
|
54
59
|
attr_reader :predicate_name, :as_of, :builder
|
55
60
|
end
|
61
|
+
private_constant :ActiveItemsForCommand
|
56
62
|
end
|
57
63
|
end
|
@@ -6,7 +6,10 @@ require 'locabulary/facet_wrapper_for_item'
|
|
6
6
|
require 'locabulary/hierarchy_processor'
|
7
7
|
|
8
8
|
module Locabulary
|
9
|
-
|
9
|
+
# :nodoc:
|
10
|
+
module Services
|
11
|
+
# @api private
|
12
|
+
#
|
10
13
|
# Responsible for building a hierarchical tree from faceted items, and ordering the nodes as per the presentation sequence for the
|
11
14
|
# associated predicate_name.
|
12
15
|
class BuildOrderedHierarchicalTreeCommand
|
@@ -24,6 +27,8 @@ module Locabulary
|
|
24
27
|
new(options).call
|
25
28
|
end
|
26
29
|
|
30
|
+
private_class_method :new
|
31
|
+
|
27
32
|
def initialize(options = {})
|
28
33
|
@predicate_name = options.fetch(:predicate_name)
|
29
34
|
@faceted_items = options.fetch(:faceted_items)
|
@@ -67,5 +72,6 @@ module Locabulary
|
|
67
72
|
value.split(faceted_item_hierarchy_delimiter).join(locabulary_item_class.hierarchy_delimiter)
|
68
73
|
end
|
69
74
|
end
|
75
|
+
private_constant :BuildOrderedHierarchicalTreeCommand
|
70
76
|
end
|
71
77
|
end
|
data/lib/locabulary/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: locabulary
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Friesen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -258,9 +258,6 @@ files:
|
|
258
258
|
- data/work_patent_strategy.json
|
259
259
|
- data/work_publication_strategy.json
|
260
260
|
- lib/locabulary.rb
|
261
|
-
- lib/locabulary/commands/active_hierarchical_roots_command.rb
|
262
|
-
- lib/locabulary/commands/active_items_for_command.rb
|
263
|
-
- lib/locabulary/commands/build_ordered_hierarchical_tree_command.rb
|
264
261
|
- lib/locabulary/exceptions.rb
|
265
262
|
- lib/locabulary/facet_wrapper_for_item.rb
|
266
263
|
- lib/locabulary/hierarchy_processor.rb
|
@@ -270,6 +267,10 @@ files:
|
|
270
267
|
- lib/locabulary/items/base.rb
|
271
268
|
- lib/locabulary/json_creator.rb
|
272
269
|
- lib/locabulary/schema.rb
|
270
|
+
- lib/locabulary/services.rb
|
271
|
+
- lib/locabulary/services/active_hierarchical_roots_command.rb
|
272
|
+
- lib/locabulary/services/active_items_for_command.rb
|
273
|
+
- lib/locabulary/services/build_ordered_hierarchical_tree_command.rb
|
273
274
|
- lib/locabulary/utility.rb
|
274
275
|
- lib/locabulary/version.rb
|
275
276
|
- locabulary.gemspec
|