Class: ActsAsTaggableOnMongoid::TaggerTagList

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/acts_as_taggable_on_mongoid/tagger_tag_list.rb

Overview

:reek:RepeatedConditional

Instance Attribute Summary collapse

Instance Method Summary collapse

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_definitionObject (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

#taggableObject

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
    options         = value.extract_options!
    options[:parse] = options.fetch(:parse) { true }

    value = [*value, options]

    tagger_list.set(*value)
  end
end

#blank?Boolean

Returns:

  • (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

#compactObject



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

#dupObject



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

#flattenObject



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_changeObject



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