1
<?xml version="1.0" encoding="iso-8859-1"?>
3
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
8
<title>search (EstraierPure::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" />
12
<body class="standalone-code">
13
<pre><span class="ruby-comment cmt"># File estraierpure.rb, line 838</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">unless</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>, <span class="ruby-ivar">@wwidth</span>, <span class="ruby-ivar">@hwidth</span>, <span class="ruby-ivar">@awidth</span>)
22
<span class="ruby-identifier">resbody</span> = <span class="ruby-constant">StringIO</span><span class="ruby-operator">::</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>, <span class="ruby-value">-1</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-operator">::</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-operator">::</span><span class="ruby-identifier">new</span>
56
<span class="ruby-identifier">rdvector</span> = <span class="ruby-value str">""</span>
57
<span class="ruby-identifier">rlnum</span> = <span class="ruby-identifier">snum</span>
58
<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>
59
<span class="ruby-identifier">rdline</span> = <span class="ruby-identifier">lines</span>[<span class="ruby-identifier">rlnum</span>].<span class="ruby-identifier">strip</span>
60
<span class="ruby-identifier">rlnum</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
61
<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>
62
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rdline</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^%/</span>
63
<span class="ruby-identifier">lidx</span> = <span class="ruby-identifier">rdline</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">"\t"</span>)
64
<span class="ruby-identifier">rdvector</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>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rdline</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/%VECTOR/</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">lidx</span>
65
<span class="ruby-keyword kw">else</span>
66
<span class="ruby-identifier">lidx</span> = <span class="ruby-identifier">rdline</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">"="</span>)
67
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lidx</span>
68
<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>]
69
<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>]
70
<span class="ruby-identifier">rdattrs</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span>
71
<span class="ruby-keyword kw">end</span>
72
<span class="ruby-keyword kw">end</span>
73
<span class="ruby-keyword kw">end</span>
74
<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>
75
<span class="ruby-identifier">rdline</span> = <span class="ruby-identifier">lines</span>[<span class="ruby-identifier">rlnum</span>]
76
<span class="ruby-identifier">rlnum</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
77
<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>)
78
<span class="ruby-keyword kw">end</span>
79
<span class="ruby-identifier">rduri</span> = <span class="ruby-identifier">rdattrs</span>[<span class="ruby-value str">"@uri"</span>]
80
<span class="ruby-identifier">rdsnippet</span> = <span class="ruby-identifier">sb</span>.<span class="ruby-identifier">string</span>
81
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rduri</span>
82
<span class="ruby-identifier">rdoc</span> = <span class="ruby-constant">ResultDocument</span><span class="ruby-operator">::</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>, <span class="ruby-identifier">rdvector</span>)
83
<span class="ruby-identifier">docs</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">rdoc</span>)
84
<span class="ruby-keyword kw">end</span>
85
<span class="ruby-keyword kw">end</span>
86
<span class="ruby-identifier">snum</span> = <span class="ruby-identifier">lnum</span>
87
<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>
88
<span class="ruby-keyword kw">end</span>
89
<span class="ruby-keyword kw">end</span>
90
<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>
91
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nres</span>
92
<span class="ruby-keyword kw">end</span></pre>
b'\\ No newline at end of file'