Class HasMachineTags::TagList

  1. lib/has_machine_tags/tag_list.rb
Parent: Array

Methods

public class

  1. new

public instance

  1. non_machine_tags
  2. to_quick_mode_string

Constants

QUICK_MODE_DELIMITER = ';'

Public class methods

new (string_or_array, options={})

Options:

:quick_mode
When true enables a quick mode for inputing multiple machine tags under the same namespace. These machine tags are delimited by QUICK_MODE_DELIMITER. If a predicate is not specified, default_predicate() is used.
Examples:
# Namespace is added to tag 'type=test'.
HasMachineTags::TagList.new("gem:name=flog;type=test, user:name=seattlerb", :quick_mode=>true)
=> ["gem:name=flog", "gem:type=test", "user:name=seattlerb"]

# Namespace and default predicate (tags) are added to tag 'git'.
HasMachineTags::TagList.new("gem:name=grit;git, user:name=mojombo")
=> ["gem:name=grit", "gem:tags=git", "user:name=mojombo"]
[show source]
# File lib/has_machine_tags/tag_list.rb, line 21
    def initialize(string_or_array, options={})
      @options = options
      array = string_or_array.is_a?(Array) ? string_or_array : string_or_array.split(/\s*#{delimiter}\s*/)
      array = parse_quick_mode(array) if @options[:quick_mode]
      concat array
    end

Public instance methods

non_machine_tags ()
[show source]
# File lib/has_machine_tags/tag_list.rb, line 51
    def non_machine_tags
      self.reject {|e| Tag.machine_tag?(e)}
    end
to_quick_mode_string ()

Converts tag_list to a stringified version of quick_mode.

[show source]
# File lib/has_machine_tags/tag_list.rb, line 56
    def to_quick_mode_string
      machine_tags = namespace_hashes.map {|namespace, predicate_values|
        "#{namespace}:" + predicate_values.map {|pred, value|
          pred == self.default_predicate ? value : "#{pred}#{Tag::VALUE_DELIMITER}#{value}"
        }.join(QUICK_MODE_DELIMITER)
      }
      (machine_tags + non_machine_tags).join("#{delimiter} ")
    end