- live search: timer delay would be nice
-- httpd search tools
- hashed generic method dispatch
- fix this:
[ 1 2 3 4 5 6 7 8 9 10 10 10 10 10 10 10 10 10 10 11 11 11 113 ] .
pastebin get pastebin-pastes nth ;
: show-paste ( n -- )
- "Paste"
- swap get-paste
- "show-paste" render-page ;
+ get-paste "show-paste" "Paste" render-page ;
\ show-paste { { "n" v-number } } define-action
: new-paste ( -- )
- "New paste" f "new-paste" render-page ;
+ f "new-paste" "New paste" render-page ;
\ new-paste { } define-action
[ show-paste ] "show-paste-quot" set
[ new-paste ] "new-paste-quot" set
- "Pastebin"
- pastebin get
- "paste-list" render-page
+ pastebin get "paste-list" "Pastebin" render-page
] with-scope ;
\ paste-list { } define-action
".fhtml" append resource-path run-embedded-file
] with-scope ;
-TUPLE: component model template ;
-
-TUPLE: page title root ;
-
-C: page ( title model template -- page )
- [ >r <component> r> set-page-root ] keep
- [ set-page-title ] keep ;
-
: render-template ( model template -- )
template-path get swap path+ call-template ;
-: render-page ( title model template -- )
+: render-page ( model template title -- )
[
- rot [
+ [
render-template
] html-document
] with-html-stream ;
2dup lookup dup
[ 2nip summary ] [ drop nip "IN: " swap append ] if ;
-TUPLE: browser word vocab ;
+TUPLE: browser word vocab apropos ;
-: browse ( word vocab -- )
- 2dup browser-title
- -rot <browser>
- "browser" render-page ;
+: browse ( word vocab apropos -- )
+ pick pick browser-title >r <browser> "browser" r> render-page ;
\ browse {
{ "word" }
{ "vocab" "kernel" v-default }
+ { "apropos" }
} define-action
"browser" "browse" "contrib/furnace/tools" web-app
M: word browser-link-href
- dup word-name swap word-vocabulary \ browse
- 3array >quotation quot-link ;
+ dup word-name swap word-vocabulary f \ browse
+ 4array >quotation quot-link ;
-<% USING: namespaces furnace:browser words help kernel ; %>
+<% USING: namespaces furnace:browser words help kernel tools sequences io
+html ; %>
<form id="main" action="browse" method="get">
<table width="100%">
<tr>
- <th>Vocabularies</th>
- <th>Words</th>
- <th>Documentation</th>
+ <th align="left">Vocabularies</th>
+ <th align="left">Words</th>
+ <th align="left">Documentation</th>
</tr>
<tr>
<td valign="top" style="width: 200px;">
</td>
</tr>
</table>
+ <h2>Apropos</h2>
+ <input type="field" name="apropos" /><br/>
+ <%
+ "apropos" get dup empty? [
+ drop
+ ] [
+ <b> "Results for " write dup write ":" write </b> <br/>
+ apropos
+ ] if
+ %>
</form>
! Copyright (C) 2005, 2006 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
IN: furnace:help
-USING: furnace help html kernel sequences words strings ;
-
-: string>topic ( string -- topic )
- " " split dup length 1 = [ first ] when ;
+USING: furnace help html kernel sequences words strings io ;
: show-help ( topic -- )
dup article-title [
[ help ] with-html-stream
+ <br/>
+ <a "search" =href a> "Search" write </a>
] html-document ;
\ show-help {
{ "topic" "handbook" v-default string>topic }
} define-action
-"help" "show-help" "contrib/furnace/tools" web-app
-
M: link browser-link-href
link-name [ \ f ] unless* dup word? [
browser-link-href
dup [ string? ] all? [ " " join ] when
[ show-help ] curry quot-link
] if ;
+
+TUPLE: search terms ;
+
+: search ( terms -- )
+ <search> "search" "Search" render-page ;
+
+\ search {
+ { "terms" }
+} define-action
+
+"help" "show-help" "contrib/furnace/tools" web-app
--- /dev/null
+<% USING: help kernel sequences html namespaces io ; %>
+
+<form action="search" method="get">
+ <h1>Search help</h1>
+ <input type="field" name="terms" />
+ <%
+ "terms" get dup empty? [
+ drop
+ ] [
+ <b> "Results for " write dup write ":" write </b> <br/>
+ search-help.
+ ] if
+ %>
+ <input type="submit" />
+</form>