Module: Blacklight::Configuration::Fields
- Extended by:
- ActiveSupport::Concern
- Included in:
- Blacklight::Configuration
- Defined in:
- lib/blacklight/configuration/fields.rb
Overview
This mixin provides Blacklight::Configuration with generic solr fields configuration
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary (collapse)
-
- (Object) add_solr_field(config_key, *args, &block)
Add a solr field configuration to the given configuration key.
-
- (Object) field_config_from_array(config_key, array_of_fields_or_hashes)
protected
Add multiple solr fields using a hash or Field instance.
-
- (Object) field_config_from_field_or_hash(config_key, field_or_hash = {})
protected
Add a solr field using a hash or Field instance.
-
- (Object) field_config_from_key_and_hash(config_key, solr_field, field_or_hash = {})
protected
Add a solr field by a solr field name and hash.
-
- (Object) hash_arg_to_config(hash_arg, klass)
protected
for our add_* methods, takes the optional hash param, and makes it into a specific config OpenStruct, like FacetField or SearchField.
Instance Method Details
- (Object) add_solr_field(config_key, *args, &block)
Add a solr field configuration to the given configuration key
The recommended and strongly encouraged format is a field name, configuration pair, e.g.:
add_solr_field :index_field, 'format', :label => 'Format'
Alternative formats include:
-
a field name and block format:
add_solr_field :index_field, 'format' do |field| field.label = 'Format' end -
a plain block:
add_solr_field :index_field do |field| field.field = 'format' field.label = 'Format' end -
a configuration hash:
add_solr_field :index_field, :field => 'format', :label => 'Format' -
a Field instance:
add_solr_field :index_field, IndexField.new(:field => 'format', :label => 'Format') -
an array of hashes:
add_solr_field :index_field, [{:field => 'format', :label => 'Format'}, IndexField.new(:field => 'date', :label => 'Date')]
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/blacklight/configuration/fields.rb', line 69 def add_solr_field config_key, *args, &block field_config = case args.first when String field_config_from_key_and_hash(config_key, *args) when Symbol args[0] = args[0].to_s field_config_from_key_and_hash(config_key, *args) when Array field_config_from_array(config_key, *args) else field_config_from_field_or_hash(config_key, *args) end return if field_config.is_a? Array if block_given? yield field_config end field_config.normalize!(self) field_config.validate! raise "A #{config_key} with the key #{field_config.field} already exists." if self[config_key.pluralize][field_config.field].present? self[config_key.pluralize][ field_config.field ] = field_config end |
- (Object) field_config_from_array(config_key, array_of_fields_or_hashes) (protected)
Add multiple solr fields using a hash or Field instance
106 107 108 109 110 |
# File 'lib/blacklight/configuration/fields.rb', line 106 def field_config_from_array config_key, array_of_fields_or_hashes array_of_fields_or_hashes.map do |field_or_hash| add_solr_field(config_key, field_or_hash) end end |
- (Object) field_config_from_field_or_hash(config_key, field_or_hash = {}) (protected)
Add a solr field using a hash or Field instance
113 114 115 |
# File 'lib/blacklight/configuration/fields.rb', line 113 def field_config_from_field_or_hash config_key, field_or_hash = {} hash_arg_to_config(field_or_hash, field_class_from_key(config_key)) end |
- (Object) field_config_from_key_and_hash(config_key, solr_field, field_or_hash = {}) (protected)
Add a solr field by a solr field name and hash
98 99 100 101 102 103 |
# File 'lib/blacklight/configuration/fields.rb', line 98 def field_config_from_key_and_hash config_key, solr_field, field_or_hash = {} field_config = field_config_from_field_or_hash(config_key, field_or_hash) field_config.field = solr_field field_config end |
- (Object) hash_arg_to_config(hash_arg, klass) (protected)
for our add_* methods, takes the optional hash param, and makes it into a specific config OpenStruct, like FacetField or SearchField. Or if the param already was one, that's cool. Or if the param is nil, make an empty one. Second argument is an actual class object.
122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/blacklight/configuration/fields.rb', line 122 def hash_arg_to_config(hash_arg, klass) case hash_arg when Hash klass.new(hash_arg) when NilClass klass.new else # this assumes it already is an element of klass, or acts like one, # if not something bad will happen later, that's your problem. hash_arg end end |