1 |
dpavlin |
10 |
<?xml version="1.0" encoding="iso-8859-1"?> |
2 |
|
|
<!DOCTYPE html |
3 |
|
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
4 |
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
5 |
|
|
|
6 |
|
|
<html> |
7 |
|
|
<head> |
8 |
|
|
<title>search (Estraier::Node)</title> |
9 |
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
10 |
|
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" /> |
11 |
|
|
</head> |
12 |
|
|
<body class="standalone-code"> |
13 |
|
|
<pre><span class="ruby-comment cmt"># File estraier.rb, line 581</span> |
14 |
|
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">search</span>(<span class="ruby-identifier">cond</span>, <span class="ruby-identifier">depth</span>) |
15 |
|
|
<span class="ruby-constant">Utility</span><span class="ruby-operator">::</span><span class="ruby-identifier">check_types</span>({ <span class="ruby-identifier">cond</span>=<span class="ruby-operator">></span><span class="ruby-constant">Condition</span>, <span class="ruby-identifier">depth</span>=<span class="ruby-operator">></span><span class="ruby-constant">Integer</span> }) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span> |
16 |
|
|
<span class="ruby-ivar">@status</span> = <span class="ruby-value">-1</span> |
17 |
|
|
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@url</span> |
18 |
|
|
<span class="ruby-identifier">turl</span> = <span class="ruby-ivar">@url</span> <span class="ruby-operator">+</span> <span class="ruby-value str">"/search"</span> |
19 |
|
|
<span class="ruby-identifier">reqheads</span> = [ <span class="ruby-value str">"Content-Type: application/x-www-form-urlencoded"</span> ] |
20 |
|
|
<span class="ruby-identifier">reqheads</span>.<span class="ruby-identifier">push</span>(<span class="ruby-value str">"Authorization: Basic "</span> <span class="ruby-operator">+</span> <span class="ruby-constant">Utility</span><span class="ruby-operator">::</span><span class="ruby-identifier">base_encode</span>(<span class="ruby-ivar">@auth</span>)) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@auth</span> |
21 |
|
|
<span class="ruby-identifier">reqbody</span> = <span class="ruby-constant">Utility</span><span class="ruby-operator">::</span><span class="ruby-identifier">cond_to_query</span>(<span class="ruby-identifier">cond</span>, <span class="ruby-identifier">depth</span>) |
22 |
|
|
<span class="ruby-identifier">resbody</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span> |
23 |
|
|
<span class="ruby-identifier">rv</span> = <span class="ruby-constant">Utility</span><span class="ruby-operator">::</span><span class="ruby-identifier">shuttle_url</span>(<span class="ruby-identifier">turl</span>, <span class="ruby-ivar">@pxhost</span>, <span class="ruby-ivar">@pxport</span>, <span class="ruby-ivar">@timeout</span>, <span class="ruby-identifier">reqheads</span>, <span class="ruby-identifier">reqbody</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">resbody</span>) |
24 |
|
|
<span class="ruby-ivar">@status</span> = <span class="ruby-identifier">rv</span> |
25 |
|
|
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rv</span> <span class="ruby-operator">!=</span> <span class="ruby-value">200</span> |
26 |
|
|
<span class="ruby-identifier">lines</span> = <span class="ruby-identifier">resbody</span>.<span class="ruby-identifier">string</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/\n/</span>) |
27 |
|
|
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lines</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator"><</span> <span class="ruby-value">1</span> |
28 |
|
|
<span class="ruby-identifier">docs</span> = [] |
29 |
|
|
<span class="ruby-identifier">hints</span> = {} |
30 |
|
|
<span class="ruby-identifier">nres</span> = <span class="ruby-constant">NodeResult</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">docs</span>, <span class="ruby-identifier">hints</span>) |
31 |
|
|
<span class="ruby-identifier">border</span> = <span class="ruby-identifier">lines</span>[<span class="ruby-value">0</span>] |
32 |
|
|
<span class="ruby-identifier">isend</span> = <span class="ruby-keyword kw">false</span> |
33 |
|
|
<span class="ruby-identifier">lnum</span> = <span class="ruby-value">1</span> |
34 |
|
|
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">lnum</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">lines</span>.<span class="ruby-identifier">length</span> |
35 |
|
|
<span class="ruby-identifier">line</span> = <span class="ruby-identifier">lines</span>[<span class="ruby-identifier">lnum</span>] |
36 |
|
|
<span class="ruby-identifier">lnum</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> |
37 |
|
|
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">border</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">border</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span> |
38 |
|
|
<span class="ruby-identifier">isend</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line</span>[<span class="ruby-identifier">border</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">...</span><span class="ruby-identifier">line</span>.<span class="ruby-identifier">length</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">":END"</span> |
39 |
|
|
<span class="ruby-keyword kw">break</span> |
40 |
|
|
<span class="ruby-keyword kw">end</span> |
41 |
|
|
<span class="ruby-identifier">lidx</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">"\t"</span>) |
42 |
|
|
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lidx</span> |
43 |
|
|
<span class="ruby-identifier">key</span> = <span class="ruby-identifier">line</span>[<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-identifier">lidx</span>] |
44 |
|
|
<span class="ruby-identifier">value</span> = <span class="ruby-identifier">line</span>[(<span class="ruby-identifier">lidx</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">line</span>.<span class="ruby-identifier">length</span>] |
45 |
|
|
<span class="ruby-identifier">hints</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span> |
46 |
|
|
<span class="ruby-keyword kw">end</span> |
47 |
|
|
<span class="ruby-keyword kw">end</span> |
48 |
|
|
<span class="ruby-identifier">snum</span> = <span class="ruby-identifier">lnum</span> |
49 |
|
|
<span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-identifier">isend</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">lnum</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">lines</span>.<span class="ruby-identifier">length</span> |
50 |
|
|
<span class="ruby-identifier">line</span> = <span class="ruby-identifier">lines</span>[<span class="ruby-identifier">lnum</span>] |
51 |
|
|
<span class="ruby-identifier">lnum</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> |
52 |
|
|
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">border</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">border</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span> |
53 |
|
|
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lnum</span> <span class="ruby-operator">></span> <span class="ruby-identifier">snum</span> |
54 |
|
|
<span class="ruby-identifier">rdattrs</span> = {} |
55 |
|
|
<span class="ruby-identifier">sb</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span> |
56 |
|
|
<span class="ruby-identifier">rlnum</span> = <span class="ruby-identifier">snum</span> |
57 |
|
|
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">rlnum</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">lnum</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> |
58 |
|
|
<span class="ruby-identifier">rdline</span> = <span class="ruby-identifier">lines</span>[<span class="ruby-identifier">rlnum</span>] |
59 |
|
|
<span class="ruby-identifier">rlnum</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> |
60 |
|
|
<span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rdline</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator"><</span> <span class="ruby-value">1</span> |
61 |
|
|
<span class="ruby-identifier">lidx</span> = <span class="ruby-identifier">rdline</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">"="</span>) |
62 |
|
|
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lidx</span> |
63 |
|
|
<span class="ruby-identifier">key</span> = <span class="ruby-identifier">rdline</span>[<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-identifier">lidx</span>] |
64 |
|
|
<span class="ruby-identifier">value</span> = <span class="ruby-identifier">rdline</span>[(<span class="ruby-identifier">lidx</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">rdline</span>.<span class="ruby-identifier">length</span>] |
65 |
|
|
<span class="ruby-identifier">rdattrs</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span> |
66 |
|
|
<span class="ruby-keyword kw">end</span> |
67 |
|
|
<span class="ruby-keyword kw">end</span> |
68 |
|
|
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">rlnum</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">lnum</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> |
69 |
|
|
<span class="ruby-identifier">rdline</span> = <span class="ruby-identifier">lines</span>[<span class="ruby-identifier">rlnum</span>] |
70 |
|
|
<span class="ruby-identifier">rlnum</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> |
71 |
|
|
<span class="ruby-identifier">sb</span>.<span class="ruby-identifier">printf</span>(<span class="ruby-value str">"%s\n"</span>, <span class="ruby-identifier">rdline</span>) |
72 |
|
|
<span class="ruby-keyword kw">end</span> |
73 |
|
|
<span class="ruby-identifier">rduri</span> = <span class="ruby-identifier">rdattrs</span>[<span class="ruby-value str">"@uri"</span>] |
74 |
|
|
<span class="ruby-identifier">rdsnippet</span> = <span class="ruby-identifier">sb</span>.<span class="ruby-identifier">string</span> |
75 |
|
|
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rduri</span> |
76 |
|
|
<span class="ruby-identifier">rdoc</span> = <span class="ruby-constant">ResultDocument</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rduri</span>, <span class="ruby-identifier">rdattrs</span>, <span class="ruby-identifier">rdsnippet</span>) |
77 |
|
|
<span class="ruby-identifier">docs</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">rdoc</span>) |
78 |
|
|
<span class="ruby-keyword kw">end</span> |
79 |
|
|
<span class="ruby-keyword kw">end</span> |
80 |
|
|
<span class="ruby-identifier">snum</span> = <span class="ruby-identifier">lnum</span> |
81 |
|
|
<span class="ruby-identifier">isend</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line</span>[<span class="ruby-identifier">border</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">...</span><span class="ruby-identifier">line</span>.<span class="ruby-identifier">length</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">":END"</span> |
82 |
|
|
<span class="ruby-keyword kw">end</span> |
83 |
|
|
<span class="ruby-keyword kw">end</span> |
84 |
|
|
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">isend</span> |
85 |
|
|
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nres</span> |
86 |
|
|
<span class="ruby-keyword kw">end</span></pre> |
87 |
|
|
</body> |
88 |
|
|
</html> |