mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
6361928083
[fix GH-668] * test/rake/*.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
42 lines
882 B
Ruby
42 lines
882 B
Ruby
module Rake
|
|
class Scope < LinkedList # :nodoc: all
|
|
|
|
# Path for the scope.
|
|
def path
|
|
map { |item| item.to_s }.reverse.join(":")
|
|
end
|
|
|
|
# Path for the scope + the named path.
|
|
def path_with_task_name(task_name)
|
|
"#{path}:#{task_name}"
|
|
end
|
|
|
|
# Trim +n+ innermost scope levels from the scope. In no case will
|
|
# this trim beyond the toplevel scope.
|
|
def trim(n)
|
|
result = self
|
|
while n > 0 && ! result.empty?
|
|
result = result.tail
|
|
n -= 1
|
|
end
|
|
result
|
|
end
|
|
|
|
# Scope lists always end with an EmptyScope object. See Null
|
|
# Object Pattern)
|
|
class EmptyScope < EmptyLinkedList
|
|
@parent = Scope
|
|
|
|
def path
|
|
""
|
|
end
|
|
|
|
def path_with_task_name(task_name)
|
|
task_name
|
|
end
|
|
end
|
|
|
|
# Singleton null object for an empty scope.
|
|
EMPTY = EmptyScope.new
|
|
end
|
|
end
|