lib/tcl/ruby/util.rb in tcl-ruby-0.1.0 vs lib/tcl/ruby/util.rb in tcl-ruby-0.1.1
- old
+ new
@@ -5,23 +5,54 @@
@variables = {}
@global = @variables
@v_stack = []
@hooks = {}
@proc = {}
+ @files = {}
end
def variables(arg)
- raise(TclVariableNotFoundError, "can't read $#{arg}, no such variables") unless @variables.key?(arg)
+ raise TclVariableNotFoundError.new(arg, 'no such variables') unless
+ @variables.key?(arg)
@variables[arg]
end
def add_hook(name, &block)
raise(ArgumentError, 'block is not given') unless block_given?
@hooks[name.to_s] = block
end
def delete_hook(name)
@hooks.delete(name.to_s)
+ end
+
+ def commands
+ r = []
+ r.concat private_methods.select { |e| e.match(/^___/) }
+ .map { |e| e[3..-1] }
+ r.concat @proc.keys
+ r.concat @hooks.keys
+ r
+ end
+
+ private
+
+ def parse_index_format(a)
+ case a
+ when /end-(\d+)/ then -1 - Regexp.last_match(1).to_i
+ when /end/ then -1
+ else
+ r = a.to_i
+ r < 0 ? 0 : r
+ end
+ end
+
+ def get_fp(id, delete: false)
+ if @files.key?(id)
+ delete ? @files.delete(id) : @files[id]
+ else
+ raise(CommandError, "cannnot find channel named #{id}")
+ end
end
end
end
end