class Environment::Directory
Attributes
children[R]
parent[R]
Public Class Methods
new(parent, dir)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 102 def initialize(parent, dir) @path = Dir.new(dir) @parent = parent @children = [] @local_methods = {} @locked_methods = [] @local_variables = {} @locked_variables = [] end
root(dir)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 98 def self.root(dir) Directory.new(nil, dir) end
Public Instance Methods
add_child(path)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 237 def add_child(path) dir = Directory.new(self, path) @children << dir dir end
add_local_method(name, &block)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 130 def add_local_method(name, &block) raise ArgumentError.new "no method body provided" unless block_given? @local_methods[name.to_sym] = block # if name already exists, its function is overriden name.to_sym end
add_parent(dir)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 225 def add_parent(dir) @parent = Directory.root(dir) @parent.add_child(self.to_s) @parent end
child(path)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 231 def child(path) ch = @children.find {|c| c.to_s == path} ch = add_child(path) unless ch ch end
clear_local_method(name)
click to toggle source
might not be useful
# File lib/rash/ext/filesystem.rb, line 159 def clear_local_method(name) @local_methods.delete(name.to_sym) name.to_sym end
clear_local_variable(name)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 212 def clear_local_variable(name) @local_variables.delete(name.to_sym) name.to_sym end
local_method(name)
click to toggle source
Local method methods
# File lib/rash/ext/filesystem.rb, line 116 def local_method(name) name = name.to_sym @local_methods[name] || @parent&.unlocked_local_method(name) end
local_method?(name)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 121 def local_method?(name) name = name.to_sym @local_methods.key?(name) || !!@parent&.unlocked_local_method?(name) end
local_methods()
click to toggle source
# File lib/rash/ext/filesystem.rb, line 126 def local_methods @local_methods.keys + (@parent&.unlocked_local_methods).to_a end
local_variable(name)
click to toggle source
Local variable stuff
# File lib/rash/ext/filesystem.rb, line 168 def local_variable(name) name = name.to_sym @local_variables[name] || @parent&.unlocked_local_variable(name) end
local_variable?(name)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 173 def local_variable?(name) @local_variables.include?(name.to_sym) || !!@parent&.unlocked_local_variable?(name.to_sym) end
local_variables()
click to toggle source
# File lib/rash/ext/filesystem.rb, line 177 def local_variables @local_variables.keys + (@parent&.unlocked_local_variables).to_a end
lock_method(name)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 151 def lock_method(name) n = name.to_sym raise NameError.new("#{name} is not a local method", n) unless @local_methods.key?(n) @locked_methods << n unless @locked_methods.include?(n) n end
lock_variable(name)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 205 def lock_variable(name) n = name.to_sym raise NameError.new("#{name} is not a local variable", n) unless @local_variables.key?(n) @locked_variables << n unless @locked_variables.include?(n) n end
root?()
click to toggle source
Generic traversal methods
# File lib/rash/ext/filesystem.rb, line 221 def root? parent.nil? end
set_local_variable(name, value)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 181 def set_local_variable(name, value) name = name.to_sym if !@local_variables.key?(name) && @parent&.unlocked_local_variable?(name) @parent&.set_local_variable(name, value) else @local_variables[name] = value end end
to_s()
click to toggle source
# File lib/rash/ext/filesystem.rb, line 243 def to_s @path.path end
unlocked_local_method(name)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 136 def unlocked_local_method(name) name = name.to_sym @local_methods[name] || @parent&.unlocked_local_method(name) end
unlocked_local_method?(name)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 141 def unlocked_local_method?(name) name = name.to_sym @local_methods.filter{|k, v| !@locked_methods.include?(k)}.key?(name) || !!@parent&.unlocked_local_method?(name) end
unlocked_local_methods()
click to toggle source
# File lib/rash/ext/filesystem.rb, line 147 def unlocked_local_methods @local_methods.filter{|k, v| !@locked_methods.include?(k)}.keys + (@parent&.unlocked_local_methods).to_a end
unlocked_local_variable(name)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 190 def unlocked_local_variable(name) name = name.to_sym @local_variables.filter{|k| !@locked_variables.include?(k)}[name] || @parent&.unlocked_local_variable(name) end
unlocked_local_variable?(name)
click to toggle source
# File lib/rash/ext/filesystem.rb, line 195 def unlocked_local_variable?(name) name = name.to_sym @local_variables.filter{|k,_v| !@locked_variables.include?(k)}.key?(name) || !!@parent&.unlocked_local_variable?(name) end
unlocked_local_variables()
click to toggle source
# File lib/rash/ext/filesystem.rb, line 201 def unlocked_local_variables @local_variables.keys.filter{|k| !@locked_variables.include?(k)} + (@parent&.unlocked_local_variables).to_a end