mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
9cadc95b28
* lib/rake: Update to rake 10.1.0 * bin/rake: ditto. * test/rake: ditto. * NEWS: Update NEWS to include rake 10.1.0 and links to release notes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
42 lines
868 B
Ruby
42 lines
868 B
Ruby
module Rake
|
|
class Scope < LinkedList
|
|
|
|
# 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
|