Class Rascut::Asdoc::Httpd
In: lib/rascut/asdoc/httpd.rb
Parent: Object

Methods

config   json_handler   logger   new   run   search_regexes   stop  

Included Modules

Utils

Attributes

command  [R] 
data  [R] 

Public Class methods

[Source]

    # File lib/rascut/asdoc/httpd.rb, line 17
17:       def initialize
18:         @logger = Logger.new(STDOUT)
19:         @threads = []
20:         @data = Rascut::Asdoc::Data.asdoc_data
21:       end

Public Instance methods

[Source]

     # File lib/rascut/asdoc/httpd.rb, line 108
108:       def config
109:         #command.config
110:         {}
111:       end

[Source]

    # File lib/rascut/asdoc/httpd.rb, line 36
36:       def json_handler
37:         ProcHandler.new do |req, res|
38:           ary = []
39:           params = Mongrel::HttpRequest.query_parse(req.params['QUERY_STRING'])
40:           if word = params['word']
41:             method_re, class_re, package_re = *search_regexes(word.strip)
42: 
43:             c = 0
44:             if method_re
45:               @data[:methods].each do |i| 
46:                 if i[:name].match method_re
47:                   next if class_re && !i[:classname].match(class_re)
48:                   next if package_re && !i[:package].match(package_re)
49:                   ary << i
50:                   c += 1
51:                   break if c >= 20
52:                 end
53:               end
54:             elsif class_re
55:               @data[:classes].each do |i| 
56:                 if i[:classname].match class_re
57:                   next if package_re && !i[:package].match(package_re)
58:                   ary << i
59:                   c += 1
60:                   break if c >= 20
61:                 end
62:               end
63:             elsif package_re
64:               @data[:packages].each do |i| 
65:                 if i[:package].match package_re
66:                   ary << i
67:                   c += 1
68:                   break if c >= 20
69:                 end
70:               end
71:             end
72:           end
73: 
74:           res.start do |head, out|
75:             head['Content-Type'] = 'application/json'
76:             out << ary.to_json
77:           end
78:         end
79:       end

[Source]

     # File lib/rascut/asdoc/httpd.rb, line 113
113:       def logger
114:         @logger
115:       end

[Source]

    # File lib/rascut/asdoc/httpd.rb, line 24
24:       def run 
25:         port = config[:port] || 3002
26:         host = config[:bind_address] || '0.0.0.0'
27: 
28:         @http_server = Mongrel::HttpServer.new(host, port)
29:         @http_server.register('/', Mongrel::DirHandler.new(asdoc_home.to_s))
30:         @http_server.register('/json', json_handler)
31:         @http_server.run
32:         logger.info "Start Mongrel: http://#{host}:#{port}/"
33:       end

[Source]

     # File lib/rascut/asdoc/httpd.rb, line 81
 81:       def search_regexes(w)
 82:         method_re = class_re = package_re = nil
 83: 
 84:         words = w.split(/\s+/)
 85:         words.each do |word|
 86:           case word[0..0]
 87:           when '.'
 88:             #package
 89:             package_re = /#{Regexp.escape(word[1..-1])}/
 90:           when /[A-Z]/
 91:             # class
 92:             class_re = /#{Regexp.escape(word)}/
 93:             #when '#'
 94:           else
 95:             # method
 96:             method_re = /^#{Regexp.escape(word.sub('#', ''))}/
 97:           end
 98:         end
 99:         [method_re, class_re, package_re]
100:       end

[Source]

     # File lib/rascut/asdoc/httpd.rb, line 103
103:       def stop
104:         # XXX
105:         # @http_server.stop
106:       end

[Validate]