Sha256: 73fda24c97e626cb8b8f2b23144e17ed2dbf93eec6a1d1ef4d56c14c3eb65b8c

Contents?: true

Size: 839 Bytes

Versions: 8

Compression:

Stored size: 839 Bytes

Contents

module Mautic
  class Tag < Model

    class Collection < Array
      attr_reader :model

      # @param [Mautic::Model] model
      def initialize(model, *several_variants)
        @model = model
        @tags_to_remove = []
        super(several_variants)
      end

      def <<(item)
        @model.changed = true
        item = Tag.new(@model, { tag: item }) if item.is_a?(String)
        super(item)
      end

      def remove(item)
        @model.changed = true
        item = detect { |t| t.name == item } if item.is_a?(String)
        @tags_to_remove << "-#{item}"
        delete item
      end

      def to_mautic
        map(&:name) + @tags_to_remove
      end
    end

    # alias for attribute :tag
    def name
      tag
    end

    def to_s
      name
    end

    def name=(name)
      self.tag = name
    end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
mautic-3.1.0 app/models/mautic/tag.rb
mautic-3.0.0 app/models/mautic/tag.rb
mautic-2.6.1 app/models/mautic/tag.rb
mautic-2.6.0 app/models/mautic/tag.rb
mautic-2.5.0 app/models/mautic/tag.rb
mautic-2.4.0 app/models/mautic/tag.rb
mautic-2.3.11 app/models/mautic/tag.rb
mautic-2.3.10 app/models/mautic/tag.rb