blob: e06e13a2cab3091abe0583d76da518565561e18d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# Created on 2008-01-19
# Copyright Luke Kanies
# A common module to handle tagging.
module Puppet::Util::Tagging
# Add a tag to our current list. These tags will be added to all
# of the objects contained in this scope.
def tag(*ary)
@tags ||= []
qualified = []
ary.collect { |tag| tag.to_s.downcase }.each do |tag|
fail(Puppet::ParseError, "Invalid tag %s" % tag.inspect) unless valid_tag?(tag)
qualified << tag if tag.include?("::")
@tags << tag unless @tags.include?(tag)
end
# LAK:NOTE See http://snurl.com/21zf8 [groups_google_com]
qualified.collect { |name| x = name.split("::") }.flatten.each { |tag| @tags << tag unless @tags.include?(tag) }
end
# Are we tagged with the provided tag?
def tagged?(tag)
defined?(@tags) and @tags.include?(tag.to_s)
end
# Return a copy of the tag list, so someone can't ask for our tags
# and then modify them.
def tags
@tags ||= []
@tags.dup
end
private
def valid_tag?(tag)
tag =~ /^\w[-\w:.]*$/
end
end
|