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