Class: Qa::Authorities::LinkedData::SearchConfig
- Inherits:
-
Object
- Object
- Qa::Authorities::LinkedData::SearchConfig
- Defined in:
- lib/qa/authorities/linked_data/config/search_config.rb
Instance Method Summary collapse
-
#initialize(config) ⇒ SearchConfig
constructor
A new instance of SearchConfig.
-
#language ⇒ String
Return the preferred language for literal value selection for search query.
-
#qa_replacement_encoded?(pattern_key) ⇒ Boolean
Should the replacement pattern be encoded?.
-
#qa_replacement_patterns ⇒ Hash
Return parameters that are required for QA api.
-
#replacement_count ⇒ Integer
Return the number of possible replacement values to make in the search URL.
-
#replacement_encoded?(map_key) ⇒ True|False
Should the replacement parameter be encoded?.
-
#replacements ⇒ Hash
Return the replacement configurations.
-
#replacements? ⇒ True|False
Are there replacement parameters configured for search query?.
-
#results ⇒ Hash, NilClass
Return results predicates if specified.
-
#results_altlabel_predicate ⇒ String
Return results altlabel_predicate.
-
#results_id_predicate ⇒ String
Return results id_predicate.
-
#results_label_predicate ⇒ String
Return results label_predicate.
-
#results_sort_predicate ⇒ String
Return results sort_predicate.
-
#subauthorities ⇒ Hash
Return the list of subauthorities for search query.
-
#subauthorities? ⇒ True|False
Are there subauthorities configured for search query?.
-
#subauthority?(subauth_name) ⇒ True|False
Is a specific subauthority configured for search query?.
-
#subauthority_count ⇒ Integer
Return the number of subauthorities defined for search query.
-
#subauthority_replacement_pattern ⇒ Hash
Return the replacement configurations.
-
#supports_search? ⇒ Boolean
Does this authority configuration have search defined?.
-
#supports_sort? ⇒ True|False
Does this authority configuration support sorting of search results?.
-
#url ⇒ Hash, NilClass
Return search url encoding defined in the configuration for this authority if it was provided.
-
#url_mappings ⇒ Hash
Return search url parameter mapping defined in the configuration for this authority.
-
#url_template ⇒ String
Return search url template defined in the configuration for this authority.
-
#url_with_replacements(query, sub_auth = nil, search_replacements = {}) ⇒ String
Build a linked data authority search url.
Constructor Details
#initialize(config) ⇒ SearchConfig
Returns a new instance of SearchConfig.
9 10 11 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 9 def initialize(config) @search_config = config end |
Instance Method Details
#language ⇒ String
Return the preferred language for literal value selection for search query. Only applies if the authority provides language encoded literals.
47 48 49 50 51 52 53 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 47 def language return @language unless @language.nil? lang = search_config[:language] return nil if lang.nil? lang = [lang] if lang.is_a? String @language = lang.collect(&:to_sym) end |
#qa_replacement_encoded?(pattern_key) ⇒ Boolean
Should the replacement pattern be encoded?
100 101 102 103 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 100 def qa_replacement_encoded?(pattern_key) map_key = qa_replacement_patterns[pattern_key].to_sym replacement_encoded? map_key end |
#qa_replacement_patterns ⇒ Hash
Return parameters that are required for QA api
94 95 96 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 94 def qa_replacement_patterns search_config.fetch(:qa_replacement_patterns) end |
#replacement_count ⇒ Integer
Return the number of possible replacement values to make in the search URL
120 121 122 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 120 def replacement_count replacements.size end |
#replacement_encoded?(map_key) ⇒ True|False
Should the replacement parameter be encoded?
113 114 115 116 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 113 def replacement_encoded?(map_key) return false unless url_mappings[map_key].key? :encode url_mappings[map_key][:encode] end |
#replacements ⇒ Hash
Return the replacement configurations
126 127 128 129 130 131 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 126 def replacements return @replacements unless @replacements.nil? @replacements = {} @replacements = url_mappings.select { |k, _v| !qa_replacement_patterns.include?(k) } unless search_config.nil? || url_mappings.nil? @replacements end |
#replacements? ⇒ True|False
Are there replacement parameters configured for search query?
107 108 109 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 107 def replacements? replacement_count.positive? end |
#results ⇒ Hash, NilClass
Return results predicates if specified
57 58 59 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 57 def results search_config[:results] end |
#results_altlabel_predicate ⇒ String
Return results altlabel_predicate
75 76 77 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 75 def results_altlabel_predicate Config.predicate_uri(results, :altlabel_predicate) end |
#results_id_predicate ⇒ String
Return results id_predicate
63 64 65 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 63 def results_id_predicate Config.predicate_uri(results, :id_predicate) end |
#results_label_predicate ⇒ String
Return results label_predicate
69 70 71 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 69 def results_label_predicate Config.predicate_uri(results, :label_predicate) end |
#results_sort_predicate ⇒ String
Return results sort_predicate
88 89 90 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 88 def results_sort_predicate Config.predicate_uri(results, :sort_predicate) end |
#subauthorities ⇒ Hash
Return the list of subauthorities for search query
154 155 156 157 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 154 def @subauthorities ||= {} if search_config.nil? || !(search_config.key? :subauthorities) @subauthorities ||= search_config.fetch(:subauthorities) end |
#subauthorities? ⇒ True|False
Are there subauthorities configured for search query?
135 136 137 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 135 def .positive? end |
#subauthority?(subauth_name) ⇒ True|False
Is a specific subauthority configured for search query?
141 142 143 144 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 141 def (subauth_name) subauth_name = subauth_name.to_sym if subauth_name.is_a? String .key? subauth_name end |
#subauthority_count ⇒ Integer
Return the number of subauthorities defined for search query
148 149 150 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 148 def .size end |
#subauthority_replacement_pattern ⇒ Hash
Return the replacement configurations
161 162 163 164 165 166 167 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 161 def return {} unless @subauthority_replacement_pattern ||= {} if search_config.nil? || ! pattern = qa_replacement_patterns[:subauth] default = url_mappings[pattern.to_sym][:default] @subauthority_replacement_pattern ||= { pattern: pattern, default: default } end |
#supports_search? ⇒ Boolean
Does this authority configuration have search defined?
18 19 20 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 18 def supports_search? search_config.present? end |
#supports_sort? ⇒ True|False
Does this authority configuration support sorting of search results?
81 82 83 84 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 81 def supports_sort? return true unless results_sort_predicate.nil? || !results_sort_predicate.size.positive? false end |
#url ⇒ Hash, NilClass
Return search url encoding defined in the configuration for this authority if it was provided
25 26 27 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 25 def url search_config[:url] end |
#url_mappings ⇒ Hash
Return search url parameter mapping defined in the configuration for this authority.
37 38 39 40 41 42 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 37 def url_mappings return @url_mappings unless @url_mappings.nil? mappings = Config.config_value(url, :mapping) return {} if mappings.nil? Hash[*mappings.collect { |m| [m[:variable].to_sym, m] }.flatten] end |
#url_template ⇒ String
Return search url template defined in the configuration for this authority.
31 32 33 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 31 def url_template url.fetch(:template) end |
#url_with_replacements(query, sub_auth = nil, search_replacements = {}) ⇒ String
Build a linked data authority search url
174 175 176 177 178 179 180 181 |
# File 'lib/qa/authorities/linked_data/config/search_config.rb', line 174 def url_with_replacements(query, sub_auth = nil, search_replacements = {}) return nil unless supports_search? sub_auth = sub_auth.to_sym if sub_auth.present? url = Config.replace_pattern(url_template, qa_replacement_patterns[:query], query, qa_replacement_encoded?(:query)) url = Config.(url, , , sub_auth) if url = Config.apply_replacements(url, replacements, search_replacements) if replacements? url end |