ariel 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +21 -0
- data/README +98 -0
- data/bin/ariel +56 -0
- data/examples/google_calculator/labeled/1 +43 -0
- data/examples/google_calculator/labeled/2 +41 -0
- data/examples/google_calculator/labeled/3 +41 -0
- data/examples/google_calculator/structure.rb +12 -0
- data/examples/google_calculator/structure.yaml +46 -0
- data/examples/google_calculator/unlabeled/1 +43 -0
- data/examples/google_calculator/unlabeled/2 +43 -0
- data/examples/raa/labeled/highline.html +135 -0
- data/examples/raa/labeled/mongrel.html +168 -0
- data/examples/raa/structure.rb +17 -0
- data/examples/raa/structure.yaml +183 -0
- data/examples/raa/unlabeled/pdf-writer.html +175 -0
- data/lib/ariel/candidate_selector.rb +94 -0
- data/lib/ariel/example_document_loader.rb +59 -0
- data/lib/ariel/extracted_node.rb +20 -0
- data/lib/ariel/label_utils.rb +71 -0
- data/lib/ariel/learner.rb +237 -0
- data/lib/ariel/node_like.rb +26 -0
- data/lib/ariel/rule.rb +112 -0
- data/lib/ariel/rule_set.rb +34 -0
- data/lib/ariel/structure_node.rb +75 -0
- data/lib/ariel/token.rb +68 -0
- data/lib/ariel/token_stream.rb +240 -0
- data/lib/ariel/wildcards.rb +33 -0
- data/lib/ariel.rb +69 -0
- data/test/ariel_test_case.rb +15 -0
- data/test/fixtures.rb +43 -0
- data/test/specs/token_spec.rb +65 -0
- data/test/specs/token_stream_spec.rb +43 -0
- data/test/specs/wildcards_spec.rb +26 -0
- data/test/test_candidate_selector.rb +58 -0
- data/test/test_example_document_loader.rb +7 -0
- data/test/test_label_utils.rb +15 -0
- data/test/test_learner.rb +38 -0
- data/test/test_rule.rb +38 -0
- data/test/test_structure_node.rb +81 -0
- data/test/test_token.rb +16 -0
- data/test/test_token_stream.rb +82 -0
- data/test/test_wildcards.rb +18 -0
- metadata +103 -0
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (c) 2006 A. S. Bradbury
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
4
|
+
obtaining a copy of this software and associated documentation
|
5
|
+
files (the "Software"), to deal in the Software without
|
6
|
+
restriction, including without limitation the rights to use, copy,
|
7
|
+
modify, merge, publish, distribute, sublicense, and/or sell copies
|
8
|
+
of the Software, and to permit persons to whom the Software is
|
9
|
+
furnished to do so, subject to the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
15
|
+
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
16
|
+
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
|
17
|
+
AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
18
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
19
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
21
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
= Ariel release 0.0.1
|
2
|
+
|
3
|
+
== Install
|
4
|
+
gem install ariel
|
5
|
+
|
6
|
+
== Announcement
|
7
|
+
This is the first public release of Ariel - A Ruby Information Extraction
|
8
|
+
Library. See my previous post, ruby-talk:200140[http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/200140]
|
9
|
+
for more background information. This release supports defining a tree document
|
10
|
+
structure and learning rules to extract each node of this true. Handling of list
|
11
|
+
extraction and learning is not yet implemented, and is the next immediate
|
12
|
+
priority. See the examples directory included in this release and below for
|
13
|
+
discussion of the included examples. Rule learning is functional, and appears to
|
14
|
+
work well, but many refinements are possible. Look out for more updates and a
|
15
|
+
new releases shortly.
|
16
|
+
|
17
|
+
== About Ariel
|
18
|
+
Ariel intends to assist in extracting information from semi-structured
|
19
|
+
documents including (but not in any way limited to) web pages. Although you
|
20
|
+
may use libraries such as Hpricot or Rubyful Soup, or even plain Regular
|
21
|
+
Expressions to achieve the same goal, Ariel approaches the problem very
|
22
|
+
differently. Ariel relies on the user labeling examples of the data they
|
23
|
+
want to extract, and then finds patterns across several such labeled
|
24
|
+
examples in order to produce a set of general rules for extracting this
|
25
|
+
information from any similar document. It uses the MIT license.
|
26
|
+
|
27
|
+
== Examples
|
28
|
+
This release includes two examples in the example directory (which should now
|
29
|
+
be in the directory to which rubygems installed ariel). The first is the
|
30
|
+
google_calculator directory (inspired by Justin Bailey's post to my Ariel
|
31
|
+
progress report). The structure is very simple, a calculation is extracted from
|
32
|
+
the page, and then the actual result is extracted from that calculation. 3
|
33
|
+
labeled examples are included. Ariel reads each of these, tokenizes them,
|
34
|
+
and extracts each label. 4 sets of rules are learnt:
|
35
|
+
1. Rules to locate the start of the calculation in the original document.
|
36
|
+
2. Rules to locate the end of the calculation in the original document (applied
|
37
|
+
from the end of the document).
|
38
|
+
3. Rules to locate the start of the result of the calculation from the
|
39
|
+
extracted calculation.
|
40
|
+
4. Rules to locate the end of the result of the calculation from the extracted
|
41
|
+
calculation (applied from the end of the calculation).
|
42
|
+
|
43
|
+
Take note of 3 and 4 - this is the advantage of treating a document as a tree in
|
44
|
+
this way. Deeply nested elements can be located by generating a series of simple
|
45
|
+
rules, rather than generating a rule with complexity that increases at each
|
46
|
+
level. Sets of rules are generated because it may not be possible to generate a
|
47
|
+
single rule that will catch all cases. A rule is found that matches as many of
|
48
|
+
the examples as possible (and fails on the rest), these examples are then removed
|
49
|
+
and a rule is found that will match as many of the remaining examples and so on.
|
50
|
+
When it comes to applying these learnt rules, the rules are applied in order
|
51
|
+
until there is a rule that matches.
|
52
|
+
|
53
|
+
To see this example for yourself just execute structure.rb in the
|
54
|
+
examples/google_calculator directory to create a locally writable
|
55
|
+
structure.yaml. Then do:
|
56
|
+
ariel -D -m learn -s structure.yaml -d /path/to/examples/google_calculator/labeled
|
57
|
+
|
58
|
+
You'll have to wait a while (see my note about performance below). At the end,
|
59
|
+
the learnt rules will be printed in YAML format, and structure.yaml will be
|
60
|
+
updated to include these rules. Apply these learnt rules to some unlabeled
|
61
|
+
documents by doing:
|
62
|
+
ariel -D -m extract -s structure.yaml -d /path/to/examples/google_calculator/unlabeled
|
63
|
+
|
64
|
+
You should see the results of a successful extraction printed to your terminal,
|
65
|
+
such as this one:
|
66
|
+
|
67
|
+
Results for unlabeled/2:
|
68
|
+
calculation: 3.5 U.S. dollars = 1.8486241 British pounds
|
69
|
+
result: 1.8486241 British pounds
|
70
|
+
|
71
|
+
The second example (raa) learns rules using just 2 labeled examples. This is probably
|
72
|
+
fewer than I'd recommend in most cases, but as it works... This example consists
|
73
|
+
of project entries in the Ruby Application Archive. The structure of the page is
|
74
|
+
very flat, so all rules are applied to the full page. Rules are learnt and
|
75
|
+
applied as shown above. The structure.yaml files included in the examples
|
76
|
+
directories already include rules generated by Ariel, use these if you just want
|
77
|
+
to see extraction working.
|
78
|
+
|
79
|
+
Note: The interface demonstrated by ariel above is not very flexible or
|
80
|
+
friendly, it's just to serve as a demonstration for the moment.
|
81
|
+
|
82
|
+
== Performance
|
83
|
+
Generating rules takes quite a long time. It is always going to be an intensive
|
84
|
+
operation, but there are some very simple and obvious improvements in efficiency
|
85
|
+
that can be made. For a start, the rule candidate refining process currently
|
86
|
+
re-applies the same rules over and over every time the remaining rule candidates
|
87
|
+
are ranked. This is where most time is spent, and caching these should make a
|
88
|
+
big difference. This will definitely be implemented. Other performance
|
89
|
+
enhancements are bound to be there, but my focus at this time is to get
|
90
|
+
something that works.
|
91
|
+
|
92
|
+
== Credits
|
93
|
+
Ariel is developed by Alex Bradbury as a Google Summer of Code project under the
|
94
|
+
mentoring of Austin Ziegler.
|
95
|
+
|
96
|
+
== Links
|
97
|
+
Watch my development through the subversion repository at http://rubyforge.org/projects/ariel
|
98
|
+
I've also just started using the tracker at http://code.google.com/p/ariel/
|
data/bin/ariel
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
require 'yaml'
|
5
|
+
|
6
|
+
options = {}
|
7
|
+
|
8
|
+
OptionParser.new do |opts|
|
9
|
+
opts.banner = "Usage: #$0 [mode] [options]"
|
10
|
+
|
11
|
+
opts.on('-m', '--mode=learn|extract') do |mode|
|
12
|
+
raise OptionParser::InvalidArgument unless (mode=="extract" or mode=="learn")
|
13
|
+
options[:mode]=mode
|
14
|
+
end
|
15
|
+
|
16
|
+
opts.on('-d', '--dir=DIRECTORY', 'Directory to look for documents to operate on.') do |dir|
|
17
|
+
options[:dir]=dir
|
18
|
+
end
|
19
|
+
|
20
|
+
opts.on('-D', '--debug', 'Directory to look for documents to operate on.') do
|
21
|
+
$DEBUG=true
|
22
|
+
end
|
23
|
+
|
24
|
+
opts.on('-s', '--structure=STRUCTURE', 'YAML file in which the structure is defined') do |structure|
|
25
|
+
options[:structure]=structure
|
26
|
+
end
|
27
|
+
end.parse!
|
28
|
+
|
29
|
+
require 'ariel' #After option parsing to debug setting can take effect
|
30
|
+
|
31
|
+
case options[:mode]
|
32
|
+
when "learn"
|
33
|
+
structure=YAML.load_file options[:structure]
|
34
|
+
learnt_structure=Ariel::ExampleDocumentLoader.load_directory options[:dir], structure
|
35
|
+
File.open(options[:structure], 'wb') do |file|
|
36
|
+
YAML.dump(learnt_structure, file)
|
37
|
+
end
|
38
|
+
learnt_structure.each_descendant do |structure_node|
|
39
|
+
puts structure_node.meta.name.to_s
|
40
|
+
puts structure_node.ruleset.to_yaml
|
41
|
+
end
|
42
|
+
when "extract"
|
43
|
+
learnt_structure=YAML.load_file options[:structure]
|
44
|
+
Dir.glob("#{options[:dir]}/*") do |file|
|
45
|
+
tokenstream=Ariel::TokenStream.new
|
46
|
+
tokenstream.tokenize File.read(file)
|
47
|
+
root_node=Ariel::ExtractedNode.new :root, tokenstream, learnt_structure
|
48
|
+
learnt_structure.apply_extraction_tree_on root_node
|
49
|
+
puts "Results for #{file}:"
|
50
|
+
root_node.each_descendant do |node|
|
51
|
+
puts "#{node.meta.name}: #{node.tokenstream.text}"
|
52
|
+
end
|
53
|
+
puts
|
54
|
+
# puts root_node.to_yaml
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<html><head><meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=ISO-8859-1"><title>46km in miles - Google Search</title><style><!--
|
2
|
+
body,td,div,.p,a{font-family:arial,sans-serif }
|
3
|
+
div,td{color:#000}
|
4
|
+
.f{color:#6f6f6f}
|
5
|
+
.flc,.fl:link{color:#77c}
|
6
|
+
a:link,.w,a.w:link,.w a:link{color:#00c}
|
7
|
+
a:visited,.fl:visited{color:#551a8b}
|
8
|
+
a:active,.fl:active{color:#f00}
|
9
|
+
.t a:link,.t a:active,.t a:visited,.t{color:#000}
|
10
|
+
.t{background-color:#e5ecf9}
|
11
|
+
.k{background-color:#36c}
|
12
|
+
.j{width:34em}
|
13
|
+
.h{color:#36c}
|
14
|
+
.i,.i:link{color:#a90a08}
|
15
|
+
.a,.a:link{color:#008000}
|
16
|
+
.z{display:none}
|
17
|
+
div.n{margin-top:1ex}
|
18
|
+
.n a{font-size:10pt;color:#000}
|
19
|
+
.n .i{font-size:10pt;font-weight:bold}
|
20
|
+
.q:visited,.q:link,.q:active,.q{color:#00c;}
|
21
|
+
.b a{font-size:12pt;color:#00c;font-weight:bold}
|
22
|
+
.ch{cursor:pointer;cursor:hand}
|
23
|
+
.e{margin-top:.75em;margin-bottom:.75em}
|
24
|
+
.g{margin-top:1em;margin-bottom:1em}
|
25
|
+
.sm{display:block;margin-top:0px;margin-bottom:0px;margin-left:40px}
|
26
|
+
-->
|
27
|
+
</style>
|
28
|
+
<script><!--
|
29
|
+
//-->
|
30
|
+
</script><noscript></noscript><script>
|
31
|
+
<!--
|
32
|
+
function ss(w,id){window.status=w;return true;}
|
33
|
+
function cs(){window.status='';}
|
34
|
+
function ga(o,e) {return true;}
|
35
|
+
//-->
|
36
|
+
</script>
|
37
|
+
</head><body bgcolor=#ffffff topmargin=3 marginheight=3><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td align=right nowrap><font size=-1><a href="https://www.google.com/accounts/Login?continue=http://www.google.co.uk/search%3Fhl%3Den%26ie%3DISO-8859-1%26q%3D46km%2Bin%2Bmiles%26meta%3D&hl=en">Sign in</a></font></td></tr><tr height=4><td><img alt="" width=1 height=1></td></tr></table><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><form name=gs method=GET action=/search><td valign=top><a href="http://www.google.co.uk/webhp?hl=en"><img src="/images/logo_sm.gif" width=150 height=55 alt="Go to Google Home" border=0 vspace=12></a></td><td> </td><td valign=top width=100% style="padding-top:0px"><table cellpadding=0 cellspacing=0 border=0><tr><td height=14 valign=bottom><table border=0 cellspacing=0 cellpadding=4><tr><td nowrap><font size=-1><b>Web</b> <a class=q href="http://images.google.co.uk/images?hl=en&ie=ISO-8859-1&q=46km+in+miles&sa=N&tab=wi">Images</a> <a class=q href="http://groups.google.co.uk/groups?hl=en&ie=ISO-8859-1&q=46km+in+miles&sa=N&tab=wg">Groups</a> <a class=q href="http://news.google.co.uk/news?hl=en&ie=ISO-8859-1&q=46km+in+miles&sa=N&tab=wn">News</a> <a class=q href="http://froogle.google.co.uk/froogle?hl=en&ie=ISO-8859-1&q=46km+in+miles&sa=N&tab=wf">Froogle</a> <b><a href="/intl/en/options/" class=q >more »</a></b></font></td></tr></table></td></tr><tr><td><table border=0 cellpadding=0 cellspacing=0><tr><td nowrap><input type=hidden name=hl value="en"><input type=hidden name=ie value="ISO-8859-1"><input type=text name=q size=41 maxlength=2048 value="46km in miles" title="Search"><font size=-1> <input type=submit name="btnG" value="Search"><span id=hf></span></font></td><td nowrap><font size=-2> <a href=/advanced_search?q=46km+in+miles&hl=en&lr=&ie=UTF-8>Advanced Search</a><br> <a href=/preferences?q=46km+in+miles&hl=en&lr=&ie=UTF-8>Preferences</a> </font></td></tr></table></td></tr></table><table cellpadding=0 cellspacing=0 border=0><tr><td><font size=-1>Search: <input id=all type=radio name=meta value="" checked><label for=all> the web </label><input id=cty type=radio name=meta value="cr=countryUK|countryGB" ><label for=cty> pages from the UK </label></font></td></tr><tr><td height=7><img width=1 height=1 alt=""></td></tr></table></td></form></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc><img width=1 height=1 alt=""></td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0 bgcolor=#e5ecf9><tr><td bgcolor=#e5ecf9 width=1% nowrap><font size=+1> <b>Web</b></font> </td></tr></table>
|
38
|
+
<script><!--
|
39
|
+
var tt = document.gs.q;
|
40
|
+
tt.focus();
|
41
|
+
// -->
|
42
|
+
</script>
|
43
|
+
<p><table><tr><td><img src=/images/calc_img.gif></td><td> </td><td nowrap><font size=+1><b><l:calculation>46 kilometers = <l:result>28.5830748 miles</l:result></l:calculation></b></td></tr><tr><td> </td><td> </td><td><font size=-1><a href=/intl/en/help/features.html#calculator>More about calculator.</a></td></tr></table><br><table><tr><td><font size=+0>Search for documents containing the terms <a href=/search?hl=en&lr=&ie=UTF-8&q=%2B46km+in+miles&nocalc=1><b><i>46km in miles</i></b></a>.</td></tr></table><br><br><br clear=all><center><p><hr class=z><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc colspan=2><img width=1 height=1 alt=""></td></tr></table><table width=100% cellpadding=2 cellspacing=0 border=0><tr><td align=center class=t><font size=-1><a href="/">Google Home</a> - <a href="/intl/en/ads/">Advertising Programmes</a> - <a href=/services/>Business Solutions</a> - <a href=/intl/en/about.html>About Google</a></font></table><br><font size=-1 class=p>©2006 Google</font></center></body></html>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<html><head><meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=ISO-8859-1"><title>5*67 - Google Search</title><style><!--
|
2
|
+
body,td,div,.p,a{font-family:arial,sans-serif }
|
3
|
+
div,td{color:#000}
|
4
|
+
.f{color:#6f6f6f}
|
5
|
+
.flc,.fl:link{color:#77c}
|
6
|
+
a:link,.w,a.w:link,.w a:link{color:#00c}
|
7
|
+
a:visited,.fl:visited{color:#551a8b}
|
8
|
+
a:active,.fl:active{color:#f00}
|
9
|
+
.t a:link,.t a:active,.t a:visited,.t{color:#000}
|
10
|
+
.t{background-color:#e5ecf9}
|
11
|
+
.k{background-color:#36c}
|
12
|
+
.j{width:34em}
|
13
|
+
.h{color:#36c}
|
14
|
+
.i,.i:link{color:#a90a08}
|
15
|
+
.a,.a:link{color:#008000}
|
16
|
+
.z{display:none}
|
17
|
+
div.n{margin-top:1ex}
|
18
|
+
.n a{font-size:10pt;color:#000}
|
19
|
+
.n .i{font-size:10pt;font-weight:bold}
|
20
|
+
.q:visited,.q:link,.q:active,.q{color:#00c;}
|
21
|
+
.b a{font-size:12pt;color:#00c;font-weight:bold}
|
22
|
+
.ch{cursor:pointer;cursor:hand}
|
23
|
+
.e{margin-top:.75em;margin-bottom:.75em}
|
24
|
+
.g{margin-top:1em;margin-bottom:1em}
|
25
|
+
.sm{display:block;margin-top:0px;margin-bottom:0px;margin-left:40px}
|
26
|
+
-->
|
27
|
+
</style>
|
28
|
+
<script>
|
29
|
+
<!--
|
30
|
+
function ss(w,id){window.status=w;return true;}
|
31
|
+
function cs(){window.status='';}
|
32
|
+
function ga(o,e) {return true;}
|
33
|
+
//-->
|
34
|
+
</script>
|
35
|
+
</head><body bgcolor=#ffffff topmargin=3 marginheight=3><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td align=right nowrap><font size=-1><a href="https://www.google.com/accounts/Login?continue=http://www.google.co.uk/search%3Fhl%3Den%26ie%3DISO-8859-1%26q%3D5*67%26meta%3D&hl=en">Sign in</a></font></td></tr><tr height=4><td><img alt="" width=1 height=1></td></tr></table><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><form name=gs method=GET action=/search><td valign=top><a href="http://www.google.co.uk/webhp?hl=en"><img src="/images/logo_sm.gif" width=150 height=55 alt="Go to Google Home" border=0 vspace=12></a></td><td> </td><td valign=top width=100% style="padding-top:0px"><table cellpadding=0 cellspacing=0 border=0><tr><td height=14 valign=bottom><table border=0 cellspacing=0 cellpadding=4><tr><td nowrap><font size=-1><b>Web</b> <a class=q href="http://images.google.co.uk/images?hl=en&ie=ISO-8859-1&q=5*67&sa=N&tab=wi">Images</a> <a class=q href="http://groups.google.co.uk/groups?hl=en&ie=ISO-8859-1&q=5*67&sa=N&tab=wg">Groups</a> <a class=q href="http://news.google.co.uk/news?hl=en&ie=ISO-8859-1&q=5*67&sa=N&tab=wn">News</a> <a class=q href="http://froogle.google.co.uk/froogle?hl=en&ie=ISO-8859-1&q=5*67&sa=N&tab=wf">Froogle</a> <b><a href="/intl/en/options/" class=q>more »</a></b></font></td></tr></table></td></tr><tr><td><table border=0 cellpadding=0 cellspacing=0><tr><td nowrap><input type=hidden name=hl value="en"><input type=hidden name=ie value="ISO-8859-1"><input type=text name=q size=41 maxlength=2048 value="5*67" title="Search"><font size=-1> <input type=submit name="btnG" value="Search"><span id=hf></span></font></td><td nowrap><font size=-2> <a href=/advanced_search?q=5*67&hl=en&lr=&ie=UTF-8>Advanced Search</a><br> <a href=/preferences?q=5*67&hl=en&lr=&ie=UTF-8>Preferences</a> </font></td></tr></table></td></tr></table><table cellpadding=0 cellspacing=0 border=0><tr><td><font size=-1>Search: <input id=all type=radio name=meta value="" checked><label for=all> the web </label><input id=cty type=radio name=meta value="cr=countryUK|countryGB" ><label for=cty> pages from the UK </label></font></td></tr><tr><td height=7><img width=1 height=1 alt=""></td></tr></table></td></form></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc><img width=1 height=1 alt=""></td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0 bgcolor=#e5ecf9><tr><td bgcolor=#e5ecf9 width=1% nowrap><font size=+1> <b>Web</b></font> </td></tr></table>
|
36
|
+
<script><!--
|
37
|
+
var tt = document.gs.q;
|
38
|
+
tt.focus();
|
39
|
+
// -->
|
40
|
+
</script>
|
41
|
+
<p><table><tr><td><img src=/images/calc_img.gif></td><td> </td><td nowrap><font size=+1><b><l:calculation>5 * 67 = <l:result>335</l:result></l:calculation></b></td></tr><tr><td> </td><td> </td><td><font size=-1><a href=/intl/en/help/features.html#calculator>More about calculator.</a></td></tr></table><br><table><tr><td><font size=+0>Search for documents containing the terms <a href=/search?hl=en&lr=&ie=UTF-8&q=%2B5*67&nocalc=1><b><i>5*67</i></b></a>.</td></tr></table><br><br><br clear=all><center><p><hr class=z><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc colspan=2><img width=1 height=1 alt=""></td></tr></table><table width=100% cellpadding=2 cellspacing=0 border=0><tr><td align=center class=t><font size=-1><a href="/">Google Home</a> - <a href="/intl/en/ads/">Advertising Programmes</a> - <a href=/services/>Business Solutions</a> - <a href=/intl/en/about.html>About Google</a></font></table><br><font size=-1 class=p>©2006 Google</font></center></body></html>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<html><head><meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=ISO-8859-1"><title>345 + 89 - 45 - Google Search</title><style><!--
|
2
|
+
body,td,div,.p,a{font-family:arial,sans-serif }
|
3
|
+
div,td{color:#000}
|
4
|
+
.f{color:#6f6f6f}
|
5
|
+
.flc,.fl:link{color:#77c}
|
6
|
+
a:link,.w,a.w:link,.w a:link{color:#00c}
|
7
|
+
a:visited,.fl:visited{color:#551a8b}
|
8
|
+
a:active,.fl:active{color:#f00}
|
9
|
+
.t a:link,.t a:active,.t a:visited,.t{color:#000}
|
10
|
+
.t{background-color:#e5ecf9}
|
11
|
+
.k{background-color:#36c}
|
12
|
+
.j{width:34em}
|
13
|
+
.h{color:#36c}
|
14
|
+
.i,.i:link{color:#a90a08}
|
15
|
+
.a,.a:link{color:#008000}
|
16
|
+
.z{display:none}
|
17
|
+
div.n{margin-top:1ex}
|
18
|
+
.n a{font-size:10pt;color:#000}
|
19
|
+
.n .i{font-size:10pt;font-weight:bold}
|
20
|
+
.q:visited,.q:link,.q:active,.q{color:#00c;}
|
21
|
+
.b a{font-size:12pt;color:#00c;font-weight:bold}
|
22
|
+
.ch{cursor:pointer;cursor:hand}
|
23
|
+
.e{margin-top:.75em;margin-bottom:.75em}
|
24
|
+
.g{margin-top:1em;margin-bottom:1em}
|
25
|
+
.sm{display:block;margin-top:0px;margin-bottom:0px;margin-left:40px}
|
26
|
+
-->
|
27
|
+
</style>
|
28
|
+
<script>
|
29
|
+
<!--
|
30
|
+
function ss(w,id){window.status=w;return true;}
|
31
|
+
function cs(){window.status='';}
|
32
|
+
function ga(o,e) {return true;}
|
33
|
+
//-->
|
34
|
+
</script>
|
35
|
+
</head><body bgcolor=#ffffff topmargin=3 marginheight=3><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td align=right nowrap><font size=-1><a href="https://www.google.com/accounts/Login?continue=http://www.google.co.uk/search%3Fhl%3Den%26ie%3DISO-8859-1%26q%3D345%2B%252B%2B89%2B-%2B45%26meta%3D&hl=en">Sign in</a></font></td></tr><tr height=4><td><img alt="" width=1 height=1></td></tr></table><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><form name=gs method=GET action=/search><td valign=top><a href="http://www.google.co.uk/webhp?hl=en"><img src="/images/logo_sm.gif" width=150 height=55 alt="Go to Google Home" border=0 vspace=12></a></td><td> </td><td valign=top width=100% style="padding-top:0px"><table cellpadding=0 cellspacing=0 border=0><tr><td height=14 valign=bottom><table border=0 cellspacing=0 cellpadding=4><tr><td nowrap><font size=-1><b>Web</b> <a class=q href="http://images.google.co.uk/images?hl=en&ie=ISO-8859-1&q=345+%2B+89+-+45&sa=N&tab=wi">Images</a> <a class=q href="http://groups.google.co.uk/groups?hl=en&ie=ISO-8859-1&q=345+%2B+89+-+45&sa=N&tab=wg">Groups</a> <a class=q href="http://news.google.co.uk/news?hl=en&ie=ISO-8859-1&q=345+%2B+89+-+45&sa=N&tab=wn">News</a> <a class=q href="http://froogle.google.co.uk/froogle?hl=en&ie=ISO-8859-1&q=345+%2B+89+-+45&sa=N&tab=wf">Froogle</a> <b><a href="/intl/en/options/" class=q>more »</a></b></font></td></tr></table></td></tr><tr><td><table border=0 cellpadding=0 cellspacing=0><tr><td nowrap><input type=hidden name=hl value="en"><input type=hidden name=ie value="ISO-8859-1"><input type=text name=q size=41 maxlength=2048 value="345 + 89 - 45" title="Search"><font size=-1> <input type=submit name="btnG" value="Search"><span id=hf></span></font></td><td nowrap><font size=-2> <a href=/advanced_search?q=345+%2B+89+-+45&hl=en&lr=&ie=UTF-8>Advanced Search</a><br> <a href=/preferences?q=345+%2B+89+-+45&hl=en&lr=&ie=UTF-8>Preferences</a> </font></td></tr></table></td></tr></table><table cellpadding=0 cellspacing=0 border=0><tr><td><font size=-1>Search: <input id=all type=radio name=meta value="" checked><label for=all> the web </label><input id=cty type=radio name=meta value="cr=countryUK|countryGB" ><label for=cty> pages from the UK </label></font></td></tr><tr><td height=7><img width=1 height=1 alt=""></td></tr></table></td></form></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc><img width=1 height=1 alt=""></td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0 bgcolor=#e5ecf9><tr><td bgcolor=#e5ecf9 width=1% nowrap><font size=+1> <b>Web</b></font> </td></tr></table>
|
36
|
+
<script><!--
|
37
|
+
var tt = document.gs.q;
|
38
|
+
tt.focus();
|
39
|
+
// -->
|
40
|
+
</script>
|
41
|
+
<p><table><tr><td><img src=/images/calc_img.gif></td><td> </td><td nowrap><font size=+1><b><l:calculation>345 + 89 - 45 = <l:result>389</l:result></l:calculation></b></td></tr><tr><td> </td><td> </td><td><font size=-1><a href=/intl/en/help/features.html#calculator>More about calculator.</a></td></tr></table><br><table><tr><td><font size=+0>Search for documents containing the terms <a href=/search?hl=en&lr=&ie=UTF-8&q=%2B345+%2B+89+-+45&nocalc=1><b><i>345 + 89 - 45</i></b></a>.</td></tr></table><br><br><br clear=all><center><p><hr class=z><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc colspan=2><img width=1 height=1 alt=""></td></tr></table><table width=100% cellpadding=2 cellspacing=0 border=0><tr><td align=center class=t><font size=-1><a href="/">Google Home</a> - <a href="/intl/en/ads/">Advertising Programmes</a> - <a href=/services/>Business Solutions</a> - <a href=/intl/en/about.html>About Google</a></font></table><br><font size=-1 class=p>©2006 Google</font></center></body></html>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
--- &id002 !ruby/object:Ariel::StructureNode
|
2
|
+
children:
|
3
|
+
:calculation: &id001 !ruby/object:Ariel::StructureNode
|
4
|
+
children:
|
5
|
+
:result: !ruby/object:Ariel::StructureNode
|
6
|
+
children: {}
|
7
|
+
|
8
|
+
meta: !ruby/object:OpenStruct
|
9
|
+
table:
|
10
|
+
:node_type: :not_list
|
11
|
+
:name: :result
|
12
|
+
parent: *id001
|
13
|
+
ruleset: !ruby/object:Ariel::RuleSet
|
14
|
+
end_rules:
|
15
|
+
- !ruby/object:Ariel::Rule
|
16
|
+
direction: :back
|
17
|
+
landmarks: []
|
18
|
+
|
19
|
+
start_rules:
|
20
|
+
- !ruby/object:Ariel::Rule
|
21
|
+
direction: :forward
|
22
|
+
landmarks:
|
23
|
+
- - "="
|
24
|
+
meta: !ruby/object:OpenStruct
|
25
|
+
table:
|
26
|
+
:node_type: :not_list
|
27
|
+
:name: :calculation
|
28
|
+
parent: *id002
|
29
|
+
ruleset: !ruby/object:Ariel::RuleSet
|
30
|
+
end_rules:
|
31
|
+
- !ruby/object:Ariel::Rule
|
32
|
+
direction: :back
|
33
|
+
landmarks:
|
34
|
+
- - </b>
|
35
|
+
- - </b>
|
36
|
+
start_rules:
|
37
|
+
- !ruby/object:Ariel::Rule
|
38
|
+
direction: :forward
|
39
|
+
landmarks:
|
40
|
+
- - <b>
|
41
|
+
- - gif
|
42
|
+
- - <b>
|
43
|
+
meta: !ruby/object:OpenStruct
|
44
|
+
table:
|
45
|
+
:node_type: :not_list
|
46
|
+
:name: :root
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<html><head><meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=ISO-8859-1"><title>56 in binary - Google Search</title><style><!--
|
2
|
+
body,td,div,.p,a{font-family:arial,sans-serif }
|
3
|
+
div,td{color:#000}
|
4
|
+
.f{color:#6f6f6f}
|
5
|
+
.flc,.fl:link{color:#77c}
|
6
|
+
a:link,.w,a.w:link,.w a:link{color:#00c}
|
7
|
+
a:visited,.fl:visited{color:#551a8b}
|
8
|
+
a:active,.fl:active{color:#f00}
|
9
|
+
.t a:link,.t a:active,.t a:visited,.t{color:#000}
|
10
|
+
.t{background-color:#e5ecf9}
|
11
|
+
.k{background-color:#36c}
|
12
|
+
.j{width:34em}
|
13
|
+
.h{color:#36c}
|
14
|
+
.i,.i:link{color:#a90a08}
|
15
|
+
.a,.a:link{color:#008000}
|
16
|
+
.z{display:none}
|
17
|
+
div.n{margin-top:1ex}
|
18
|
+
.n a{font-size:10pt;color:#000}
|
19
|
+
.n .i{font-size:10pt;font-weight:bold}
|
20
|
+
.q:visited,.q:link,.q:active,.q{color:#00c;}
|
21
|
+
.b a{font-size:12pt;color:#00c;font-weight:bold}
|
22
|
+
.ch{cursor:pointer;cursor:hand}
|
23
|
+
.e{margin-top:.75em;margin-bottom:.75em}
|
24
|
+
.g{margin-top:1em;margin-bottom:1em}
|
25
|
+
.sm{display:block;margin-top:0px;margin-bottom:0px;margin-left:40px}
|
26
|
+
-->
|
27
|
+
</style>
|
28
|
+
<script><!--
|
29
|
+
//-->
|
30
|
+
</script><noscript></noscript><script>
|
31
|
+
<!--
|
32
|
+
function ss(w,id){window.status=w;return true;}
|
33
|
+
function cs(){window.status='';}
|
34
|
+
function ga(o,e) {return true;}
|
35
|
+
//-->
|
36
|
+
</script>
|
37
|
+
</head><body bgcolor=#ffffff topmargin=3 marginheight=3><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td align=right nowrap><font size=-1><a href="https://www.google.com/accounts/Login?continue=http://www.google.co.uk/search%3Fhl%3Den%26ie%3DISO-8859-1%26q%3D56%2Bin%2Bbinary%26meta%3D&hl=en">Sign in</a></font></td></tr><tr height=4><td><img alt="" width=1 height=1></td></tr></table><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><form name=gs method=GET action=/search><td valign=top><a href="http://www.google.co.uk/webhp?hl=en"><img src="/images/logo_sm.gif" width=150 height=55 alt="Go to Google Home" border=0 vspace=12></a></td><td> </td><td valign=top width=100% style="padding-top:0px"><table cellpadding=0 cellspacing=0 border=0><tr><td height=14 valign=bottom><table border=0 cellspacing=0 cellpadding=4><tr><td nowrap><font size=-1><b>Web</b> <a class=q href="http://images.google.co.uk/images?hl=en&ie=ISO-8859-1&q=56+in+binary&sa=N&tab=wi">Images</a> <a class=q href="http://groups.google.co.uk/groups?hl=en&ie=ISO-8859-1&q=56+in+binary&sa=N&tab=wg">Groups</a> <a class=q href="http://news.google.co.uk/news?hl=en&ie=ISO-8859-1&q=56+in+binary&sa=N&tab=wn">News</a> <a class=q href="http://froogle.google.co.uk/froogle?hl=en&ie=ISO-8859-1&q=56+in+binary&sa=N&tab=wf">Froogle</a> <b><a href="/intl/en/options/" class=q >more »</a></b></font></td></tr></table></td></tr><tr><td><table border=0 cellpadding=0 cellspacing=0><tr><td nowrap><input type=hidden name=hl value="en"><input type=hidden name=ie value="ISO-8859-1"><input type=text name=q size=41 maxlength=2048 value="56 in binary" title="Search"><font size=-1> <input type=submit name="btnG" value="Search"><span id=hf></span></font></td><td nowrap><font size=-2> <a href=/advanced_search?q=56+in+binary&hl=en&lr=&ie=UTF-8>Advanced Search</a><br> <a href=/preferences?q=56+in+binary&hl=en&lr=&ie=UTF-8>Preferences</a> </font></td></tr></table></td></tr></table><table cellpadding=0 cellspacing=0 border=0><tr><td><font size=-1>Search: <input id=all type=radio name=meta value="" checked><label for=all> the web </label><input id=cty type=radio name=meta value="cr=countryUK|countryGB" ><label for=cty> pages from the UK </label></font></td></tr><tr><td height=7><img width=1 height=1 alt=""></td></tr></table></td></form></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc><img width=1 height=1 alt=""></td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0 bgcolor=#e5ecf9><tr><td bgcolor=#e5ecf9 width=1% nowrap><font size=+1> <b>Web</b></font> </td></tr></table>
|
38
|
+
<script><!--
|
39
|
+
var tt = document.gs.q;
|
40
|
+
tt.focus();
|
41
|
+
// -->
|
42
|
+
</script>
|
43
|
+
<p><table><tr><td><img src=/images/calc_img.gif></td><td> </td><td nowrap><font size=+1><b>56 = 0b111000</b></td></tr><tr><td> </td><td> </td><td><font size=-1><a href=/intl/en/help/features.html#calculator>More about calculator.</a></td></tr></table><br><table><tr><td><font size=+0>Search for documents containing the terms <a href=/search?hl=en&lr=&ie=UTF-8&q=%2B56+in+binary&nocalc=1><b><i>56 in binary</i></b></a>.</td></tr></table><br><br><br clear=all><center><p><hr class=z><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc colspan=2><img width=1 height=1 alt=""></td></tr></table><table width=100% cellpadding=2 cellspacing=0 border=0><tr><td align=center class=t><font size=-1><a href="/">Google Home</a> - <a href="/intl/en/ads/">Advertising Programmes</a> - <a href=/services/>Business Solutions</a> - <a href=/intl/en/about.html>About Google</a></font></table><br><font size=-1 class=p>©2006 Google</font></center></body></html>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<html><head><meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=ISO-8859-1"><title>3.5 USD in GBP - Google Search</title><style><!--
|
2
|
+
body,td,div,.p,a{font-family:arial,sans-serif }
|
3
|
+
div,td{color:#000}
|
4
|
+
.f{color:#6f6f6f}
|
5
|
+
.flc,.fl:link{color:#77c}
|
6
|
+
a:link,.w,a.w:link,.w a:link{color:#00c}
|
7
|
+
a:visited,.fl:visited{color:#551a8b}
|
8
|
+
a:active,.fl:active{color:#f00}
|
9
|
+
.t a:link,.t a:active,.t a:visited,.t{color:#000}
|
10
|
+
.t{background-color:#e5ecf9}
|
11
|
+
.k{background-color:#36c}
|
12
|
+
.j{width:34em}
|
13
|
+
.h{color:#36c}
|
14
|
+
.i,.i:link{color:#a90a08}
|
15
|
+
.a,.a:link{color:#008000}
|
16
|
+
.z{display:none}
|
17
|
+
div.n{margin-top:1ex}
|
18
|
+
.n a{font-size:10pt;color:#000}
|
19
|
+
.n .i{font-size:10pt;font-weight:bold}
|
20
|
+
.q:visited,.q:link,.q:active,.q{color:#00c;}
|
21
|
+
.b a{font-size:12pt;color:#00c;font-weight:bold}
|
22
|
+
.ch{cursor:pointer;cursor:hand}
|
23
|
+
.e{margin-top:.75em;margin-bottom:.75em}
|
24
|
+
.g{margin-top:1em;margin-bottom:1em}
|
25
|
+
.sm{display:block;margin-top:0px;margin-bottom:0px;margin-left:40px}
|
26
|
+
-->
|
27
|
+
</style>
|
28
|
+
<script><!--
|
29
|
+
//-->
|
30
|
+
</script><noscript></noscript><script>
|
31
|
+
<!--
|
32
|
+
function ss(w,id){window.status=w;return true;}
|
33
|
+
function cs(){window.status='';}
|
34
|
+
function ga(o,e) {return true;}
|
35
|
+
//-->
|
36
|
+
</script>
|
37
|
+
</head><body bgcolor=#ffffff topmargin=3 marginheight=3><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td align=right nowrap><font size=-1><a href="https://www.google.com/accounts/Login?continue=http://www.google.com/search%3Fq%3D3.5%2BUSD%2Bin%2BGBP%26btnG%3DGoogle%2BSearch&hl=en">Sign in</a></font></td></tr><tr height=4><td><img alt="" width=1 height=1></td></tr></table><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><form name=gs method=GET action=/search><td valign=top><a href="http://www.google.com/webhp?hl=en"><img src="/images/logo_sm.gif" width=150 height=55 alt="Go to Google Home" border=0 vspace=12></a></td><td> </td><td valign=top width=100% style="padding-top:0px"><table cellpadding=0 cellspacing=0 border=0><tr><td height=14 valign=bottom><table border=0 cellspacing=0 cellpadding=4><tr><td nowrap><font size=-1><b>Web</b> <a class=q href="http://images.google.com/images?q=3.5+USD+in+GBP&btnG=Google+Search&sa=N&tab=wi">Images</a> <a class=q href="http://groups.google.com/groups?q=3.5+USD+in+GBP&btnG=Google+Search&sa=N&tab=wg">Groups</a> <a class=q href="http://news.google.com/news?q=3.5+USD+in+GBP&btnG=Google+Search&sa=N&tab=wn">News</a> <a class=q href="http://froogle.google.com/froogle?q=3.5+USD+in+GBP&btnG=Google+Search&sa=N&tab=wf">Froogle</a> <a class=q href="http://maps.google.com/maps?q=3.5+USD+in+GBP&btnG=Google+Search&sa=N&tab=wl">Maps</a> <b><a href="/intl/en/options/" class=q >more »</a></b></font></td></tr></table></td></tr><tr><td><table border=0 cellpadding=0 cellspacing=0><tr><td nowrap><input type=hidden name=hl value="en"><input type=hidden name=lr value=""><input type=hidden name=ie value="ISO-8859-1"><input type=text name=q size=41 maxlength=2048 value="3.5 USD in GBP" title="Search"><font size=-1> <input type=submit name="btnG" value="Search"><span id=hf></span></font></td><td nowrap><font size=-2> <a href=/advanced_search?q=3.5+USD+in+GBP&hl=en&lr=&ie=UTF-8>Advanced Search</a><br> <a href=/preferences?q=3.5+USD+in+GBP&hl=en&lr=&ie=UTF-8>Preferences</a> </font></td></tr></table></td></tr></table><table cellpadding=0 cellspacing=0 border=0><tr><td><font size=-1></font></td></tr><tr><td height=7><img width=1 height=1 alt=""></td></tr></table></td></form></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc><img width=1 height=1 alt=""></td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0 bgcolor=#e5ecf9><tr><td bgcolor=#e5ecf9 width=1% nowrap><font size=+1> <b>Web</b></font> </td></tr></table>
|
38
|
+
<script><!--
|
39
|
+
var tt = document.gs.q;
|
40
|
+
tt.focus();
|
41
|
+
// -->
|
42
|
+
</script>
|
43
|
+
<p><table><tr><td><img src=/images/calc_img.gif></td><td> </td><td nowrap><font size=+1><b>3.5 U.S. dollars = 1.8486241 British pounds</b></td></tr><tr><td> </td><td> </td><td><font size=-1><nobr>Rates provided for information only - <a href="/intl/en/help/currency_disclaimer.html">see disclaimer</a>.</nobr> <a href=/intl/en/help/features.html#currency>More about currency conversion.</a></td></tr></table><br><table><tr><td><font size=+0>Search for documents containing the terms <a href=/search?hl=en&lr=&ie=UTF-8&q=%2B3.5+USD+in+GBP&nocalc=1><b><i>3.5 USD in GBP</i></b></a>.</td></tr></table><br><br><br clear=all><center><p><hr class=z><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc colspan=2><img width=1 height=1 alt=""></td></tr></table><table width=100% cellpadding=2 cellspacing=0 border=0><tr><td align=center class=t><font size=-1><a href="/">Google Home</a> - <a href="/intl/en/ads/">Advertising Programs</a> - <a href=/intl/en/services/>Business Solutions</a> - <a href=/intl/en/about.html>About Google</a></font></table><br><font size=-1 class=p>©2006 Google</font></center></body></html>
|
@@ -0,0 +1,135 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<base href="http://raa.ruby-lang.org/">
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6
|
+
<meta name="Author" content="ruby-lang.org">
|
7
|
+
<meta http-equiv="content-style-type" content="text/css">
|
8
|
+
<link rev="made" href="mailto:raa-admin@ruby-lang.org">
|
9
|
+
<link rel="home" href="http://raa.ruby-lang.org/">
|
10
|
+
<link rel="index" href="index.html">
|
11
|
+
<link rel="search" href="search.rhtml">
|
12
|
+
<link rel="glossary" href="all.html">
|
13
|
+
<link rel="SHORTCUT ICON" href="/favicon.ico">
|
14
|
+
<link rel="stylesheet" href="raa.css" type="text/css" media="all">
|
15
|
+
|
16
|
+
<title>RAA - <l:name>highline</l:name></title>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<div class="header">
|
21
|
+
<h1>RAA - highline</h1>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<form method="get" action="search.rhtml">
|
25
|
+
<div class="header-searchbox">
|
26
|
+
<input name="search" type="text" size="20" maxlength="63"><input type="submit" value="Search"><br>
|
27
|
+
<a href="index.html#search">advanced search</a>
|
28
|
+
</div>
|
29
|
+
</form>
|
30
|
+
|
31
|
+
|
32
|
+
<p class="caption">
|
33
|
+
highline / <l:current_version>1.2.0</l:current_version>
|
34
|
+
</p>
|
35
|
+
|
36
|
+
<table class="entry">
|
37
|
+
|
38
|
+
<tr><th>Short description: </th>
|
39
|
+
<td><l:short_description>A high-level line oriented interface
|
40
|
+
toolkit.</l:short_description></td>
|
41
|
+
</tr>
|
42
|
+
<tr><th>Category: </th>
|
43
|
+
<td><l:category><a href="cat.rhtml?category_major=Library">Library</a>/<a
|
44
|
+
href="cat.rhtml?category_major=Library;category_minor=TUI">TUI</a></l:category></td>
|
45
|
+
</tr>
|
46
|
+
<tr><th>Status: </th>
|
47
|
+
<td>Production/Stable</td>
|
48
|
+
</tr>
|
49
|
+
<tr><th>Created: </th>
|
50
|
+
<td>2005-05-21 01:14:44 GMT</td>
|
51
|
+
</tr>
|
52
|
+
<tr>
|
53
|
+
<th>Last update: </th>
|
54
|
+
<td>2006-03-23 04:28:57 GMT</td>
|
55
|
+
</tr>
|
56
|
+
<tr><th>Owner: </th>
|
57
|
+
<td><a href="mailto:james@grayproductions.net"><l:owner>James Edward Gray
|
58
|
+
II</l:owner></a>
|
59
|
+
(<a href="owner.rhtml?id=1679">Projects of this owner</a>)</td>
|
60
|
+
</tr>
|
61
|
+
<tr><th>Homepage: </th>
|
62
|
+
<td><a
|
63
|
+
href="http://highline.rubyforge.org/"><l:homepage>http://highline.rubyforge.org/</l:homepage></a></td>
|
64
|
+
</tr>
|
65
|
+
<tr><th>Download: </th>
|
66
|
+
<td>
|
67
|
+
<a href="http://rubyforge.org/frs/?group_id=683">http://rubyforge.org/frs/?group_id=683</a>
|
68
|
+
|
69
|
+
</td>
|
70
|
+
</tr>
|
71
|
+
|
72
|
+
<tr><th>License: </th>
|
73
|
+
<td><l:license>Ruby's</l:license></td>
|
74
|
+
</tr>
|
75
|
+
<tr><th>Dependency: </th>
|
76
|
+
<td colspan='5'>
|
77
|
+
<table>
|
78
|
+
|
79
|
+
<tr width="100%">
|
80
|
+
<td nowrap>Requires:</td>
|
81
|
+
<td nowrap>
|
82
|
+
|
83
|
+
termios/0.9.4
|
84
|
+
|
85
|
+
</td>
|
86
|
+
<td width="100%">For character reading. (Optional--will work without it.)</td>
|
87
|
+
</tr>
|
88
|
+
|
89
|
+
</table>
|
90
|
+
</td>
|
91
|
+
</tr>
|
92
|
+
<tr><th>Description: </th>
|
93
|
+
<td><p>HighLine was designed to ease the tedious tasks of doing console input and output with low-level methods like gets() and puts(). HighLine provides a robust system for requesting data from a user, without needing to code all the error checking and validation rules and without needing to convert the typed Strings into what your program really needs. Just tell HighLine what you're after, and let it do all the work.</p>
|
94
|
+
</td>
|
95
|
+
</tr>
|
96
|
+
|
97
|
+
<tr><th>Versions: </th>
|
98
|
+
<td>
|
99
|
+
<l:version_history>[<a href="project/highline/1.2.0">1.2.0</a> (2006-03-23)]
|
100
|
+
|
101
|
+
[<a href="project/highline/1.0.2">1.0.2</a> (2006-02-20)]
|
102
|
+
|
103
|
+
[<a href="project/highline/1.0.1">1.0.1</a> (2005-07-07)]
|
104
|
+
|
105
|
+
[<a href="project/highline/1.0.0">1.0.0</a> (2005-07-07)]
|
106
|
+
|
107
|
+
[<a href="project/highline/0.6.1">0.6.1</a> (2005-05-26)]
|
108
|
+
|
109
|
+
[<a href="project/highline/0.6.0">0.6.0</a>
|
110
|
+
(2005-05-21)]</l:version_history>
|
111
|
+
|
112
|
+
</td>
|
113
|
+
</tr>
|
114
|
+
|
115
|
+
</table>
|
116
|
+
|
117
|
+
<p class="caption">
|
118
|
+
<a href="list.rhtml?name=highline">Edit this project (for project owner)</a>
|
119
|
+
</p>
|
120
|
+
|
121
|
+
<p class="caption">
|
122
|
+
<a href="index.html">back to RAA top</a>
|
123
|
+
</p>
|
124
|
+
|
125
|
+
<div class="footer">
|
126
|
+
<hr>
|
127
|
+
<address>
|
128
|
+
For all questions or comments, or if you have any inquiries about this page, contact <a title="Send Feedback for RAA" href="mailto:raa-admin@ruby-lang.org">raa-admin@ruby-lang.org</a>.
|
129
|
+
</address>
|
130
|
+
</div>
|
131
|
+
|
132
|
+
</body>
|
133
|
+
</html>
|
134
|
+
|
135
|
+
|