zabcon 0.0.6 → 0.0.327

Sign up to get free protection for your applications and to get access to all the features.
data/libs/command_help.rb CHANGED
@@ -18,86 +18,36 @@
18
18
 
19
19
  ##########################################
20
20
  # Subversion information
21
- # $Id: command_help.rb 274 2011-01-10 01:01:31Z nelsonab $
22
- # $Revision: 274 $
21
+ # $Id: command_help.rb 296 2011-07-11 19:48:46Z nelsonab $
22
+ # $Revision: 296 $
23
23
  ##########################################
24
24
 
25
- require 'libs/zdebug'
26
-
27
- require 'pp'
28
25
  require 'rexml/document'
29
26
 
30
- # CommandHelp is the class which behaves as a wrapper to the help text stored in a separate file.
31
- # All help functions are dynamically generated by default. This is done through the lambda procedure
32
- # in the method "method". The overloaded method "method" attempts to determine if the symbol passed
33
- # in matches a pre-existing method. If it does not a local default lambda is created and returned.
34
27
  class CommandHelp
35
28
 
36
- include ZDebug
37
29
 
38
- def initialize(language)
30
+ def self.setup(language)
39
31
  @file = File.new(ZABCON_PATH+"/libs/help.xml")
40
32
 
41
33
  @doc=REXML::Document.new(@file).elements["//help[@language='#{language}']"]
42
- # puts @doc.root.attributes
43
-
34
+
44
35
  EnvVars.instance.register_notifier("language",self.method(:language=))
36
+
45
37
  end
46
38
 
47
- def language=(language)
39
+ def self.language=(language)
48
40
  @file.rewind
49
41
  @doc=REXML::Document.new(@file).elements["//help[@language='#{language}']"]
50
42
  end
51
43
 
52
- alias o_method method
53
-
54
- # This overloaded method returns a local lambda if the symbol passed in is not found
55
- # The lambda behaves as a default help function looking up the passed in symbol in the help file
56
- # If the command is found but no help exists, a message stating this is printed
57
- def method(sym)
58
- debug(8,sym,"CommandHelp.method overload (sym)")
59
- methods=self.methods
60
- index=methods.index(sym.to_s)
61
- if !index.nil?
62
- method_local=o_method(sym)
44
+ def self.get(sym)
45
+ item=@doc.elements["//item[@command='#{sym.to_s}']"]
46
+ if item.nil?
47
+ "Help not available for internal command: #{sym.to_s}"
63
48
  else
64
- method_local=lambda do |not_used| #not_used is here due to zabcon_globals and callbacks.
65
- debug(6, sym, "auto generated help func for")
66
- item=@doc.elements["//item[@command='#{sym.to_s}']"]
67
- if item.nil?
68
- puts "Help not available for internal command: #{sym.to_s}"
69
- else
70
- puts item.text
71
- end
72
- end
49
+ item.text
73
50
  end
74
- debug(8,method_local,"returning")
75
- method_local
76
51
  end
77
52
 
78
- def help(command_tree,input)
79
- input=input.gsub(/^\s*help\s*/,"") #strip out the help statement at the start
80
- debug(6,command_tree.commands,"command_tree",350)
81
- debug(6,input,"input")
82
-
83
- items=input.split(" ")
84
- if items.length==0
85
- puts @doc.elements["//item[@command='help']"].text
86
- else # more than "help" was typed by the user
87
- help_cmd=items.join(" ").lstrip.chomp
88
-
89
- if help_cmd.downcase=="commands"
90
- puts @doc.elements["//item[@command='help_commands']"].text
91
- else
92
- debug(4,help_cmd,"Searching for help on")
93
-
94
- cmd=command_tree.search(help_cmd)[0] #search returns an array
95
- if cmd.nil? or cmd[:helpproc].nil?
96
- puts "Unable to find help for \"#{help_cmd}\""
97
- else
98
- cmd[:helpproc].call(nil) #TODO: need to fix, see line 67 above
99
- end
100
- end
101
- end
102
- end #def help
103
53
  end