Class: ActsAsTaggableOnMongoid::TaggerTagList
- Inherits:
-
Object
- Object
- ActsAsTaggableOnMongoid::TaggerTagList
- Includes:
- Comparable
- Defined in:
- lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb
Overview
:reek:RepeatedConditional
Instance Attribute Summary collapse
-
#tag_definition ⇒ Object
readonly
Returns the value of attribute tag_definition.
-
#taggable ⇒ Object
Returns the value of attribute taggable.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #[](tagger) ⇒ Object
- #[]=(tagger, value) ⇒ Object
- #blank? ⇒ Boolean
- #compact ⇒ Object
- #compact! ⇒ Object
- #dup ⇒ Object
- #flatten ⇒ Object
-
#initialize(tag_definition, taggable) ⇒ TaggerTagList
constructor
A new instance of TaggerTagList.
- #notify_will_change ⇒ Object
Constructor Details
#initialize(tag_definition, taggable) ⇒ TaggerTagList
Returns a new instance of TaggerTagList.
27 28 29 30 31 32 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 27 def initialize(tag_definition, taggable) @tag_definition = tag_definition @taggable = taggable @tagger_tag_lists = Hash.new { ActsAsTaggableOnMongoid::TagList.new_taggable_list(tag_definition, taggable) } end |
Instance Attribute Details
#tag_definition ⇒ Object (readonly)
Returns the value of attribute tag_definition.
24 25 26 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 24 def tag_definition @tag_definition end |
#taggable ⇒ Object
Returns the value of attribute taggable.
24 25 26 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 24 def taggable @taggable end |
Instance Method Details
#<=>(other) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 53 def <=>(other) compact! if other.is_a?(ActsAsTaggableOnMongoid::TagList) compare_to_tag_list(other) elsif other.is_a?(ActsAsTaggableOnMongoid::TaggerTagList) other.compact! compare_to_tagger_tag_list(other) else super(other) end end |
#[](tagger) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 67 def [](tagger) list = tagger_tag_lists[tagger] list.tagger = tagger tagger_tag_lists[tagger] = list end |
#[]=(tagger, value) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 75 def []=(tagger, value) tagger_list = self[tagger] if value.is_a?(ActsAsTaggableOnMongoid::TagList) tagger_list.set(value) else value = Array.wrap(value).dup = value. [:parse] = .fetch(:parse) { true } value = [*value, ] tagger_list.set(*value) end end |
#blank? ⇒ Boolean
115 116 117 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 115 def blank? tagger_tag_lists.values.all?(&:blank?) end |
#compact ⇒ Object
39 40 41 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 39 def compact dup.compact! end |
#compact! ⇒ Object
34 35 36 37 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 34 def compact! reject! { |_key, value| value.blank? } self end |
#dup ⇒ Object
91 92 93 94 95 96 97 98 99 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 91 def dup list = ActsAsTaggableOnMongoid::TaggerTagList.new(tag_definition, taggable) each do |tagger, tag_list| list[tagger].silent_concat(tag_list) if tag_list.present? end list end |
#flatten ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 43 def flatten list = ActsAsTaggableOnMongoid::TagList.new_taggable_list(tag_definition, taggable) each_value do |tag_list| list.concat(tag_list) end list end |
#notify_will_change ⇒ Object
109 110 111 112 113 |
# File 'lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb', line 109 def notify_will_change return unless taggable taggable.tag_list_on_changed tag_definition end |