Class | Rascut::Asdoc::Httpd |
In: |
lib/rascut/asdoc/httpd.rb
|
Parent: | Object |
command | [R] | |
data | [R] |
# 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
# 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
# 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
# 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