Merge branch 'master' of git://factorcode.org/git/factor
commit
b5664733ed
|
@ -79,7 +79,7 @@ TUPLE: action rest authorize init display validate submit ;
|
|||
|
||||
: revalidate-url ( -- url/f )
|
||||
revalidate-url-key param
|
||||
dup [ >url [ same-host? ] keep and ] when ;
|
||||
dup [ >url ensure-port [ same-host? ] keep and ] when ;
|
||||
|
||||
: validation-failed ( -- * )
|
||||
post-request? revalidate-url and [
|
||||
|
|
|
@ -65,7 +65,7 @@ HELP: [wlet
|
|||
|
||||
HELP: ::
|
||||
{ $syntax ":: word ( bindings... -- outputs... ) body... ;" }
|
||||
{ $description "Defines a word with named inputs; it reads stack values into bindings from left to right, then executes the body with those bindings in lexical scope. Any " { $link POSTPONE: [| } ", " { $link POSTPONE: [let } " or " { $link POSTPONE: [wlet } " forms used in the body of the word definition are automatically closure-converted." }
|
||||
{ $description "Defines a word with named inputs; it reads stack values into bindings from left to right, then executes the body with those bindings in lexical scope." }
|
||||
{ $notes "The output names do not affect the word's behavior, however the compiler attempts to check the stack effect as with other definitions." }
|
||||
{ $examples "See " { $link POSTPONE: [| } ", " { $link POSTPONE: [let } " and " { $link POSTPONE: [wlet } "." } ;
|
||||
|
||||
|
|
|
@ -19,10 +19,10 @@ HELP: assoc>query
|
|||
{ $notes "This word is used by the implementation of " { $link "urls" } ". It is also used by the HTTP client to encode POST requests." }
|
||||
{ $examples
|
||||
{ $example
|
||||
"USING: io urls ;"
|
||||
"USING: io urls.encoding ;"
|
||||
"{ { \"from\" \"Lead\" } { \"to\" \"Gold, please\" } }"
|
||||
"assoc>query print"
|
||||
"from=Lead&to=Gold%2c+please"
|
||||
"from=Lead&to=Gold%2c%20please"
|
||||
}
|
||||
} ;
|
||||
|
||||
|
@ -32,7 +32,7 @@ HELP: query>assoc
|
|||
{ $notes "This word is used by the implementation of " { $link "urls" } ". It is also used by the HTTP server to parse POST requests." }
|
||||
{ $examples
|
||||
{ $unchecked-example
|
||||
"USING: prettyprint urls ;"
|
||||
"USING: prettyprint urls.encoding ;"
|
||||
"\"gender=female&agefrom=22&ageto=28&location=Omaha+NE\""
|
||||
"query>assoc ."
|
||||
<" H{
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: kernel ascii combinators combinators.short-circuit
|
||||
sequences splitting fry namespaces make assocs arrays strings
|
||||
io.sockets io.sockets.secure io.encodings.string
|
||||
io.encodings.utf8 math math.parser accessors hashtables present ;
|
||||
io.encodings.string io.encodings.utf8 math math.parser accessors
|
||||
hashtables present ;
|
||||
IN: urls.encoding
|
||||
|
||||
: url-quotable? ( ch -- ? )
|
||||
|
|
|
@ -10,7 +10,6 @@ arrays kernel assocs present accessors ;
|
|||
{ host "www.apple.com" }
|
||||
{ port 1234 }
|
||||
{ path "/a/path" }
|
||||
{ raw-query "a=b" }
|
||||
{ query H{ { "a" "b" } } }
|
||||
{ anchor "foo" }
|
||||
}
|
||||
|
@ -21,7 +20,6 @@ arrays kernel assocs present accessors ;
|
|||
{ protocol "http" }
|
||||
{ host "www.apple.com" }
|
||||
{ path "/a/path" }
|
||||
{ raw-query "a=b" }
|
||||
{ query H{ { "a" "b" } } }
|
||||
{ anchor "foo" }
|
||||
}
|
||||
|
@ -59,7 +57,6 @@ arrays kernel assocs present accessors ;
|
|||
{
|
||||
T{ url
|
||||
{ path "bar" }
|
||||
{ raw-query "a=b" }
|
||||
{ query H{ { "a" "b" } } }
|
||||
}
|
||||
"bar?a=b"
|
||||
|
@ -213,7 +210,6 @@ urls [
|
|||
T{ url
|
||||
{ protocol "http" }
|
||||
{ host "localhost" }
|
||||
{ raw-query "foo=bar" }
|
||||
{ query H{ { "foo" "bar" } } }
|
||||
{ path "/" }
|
||||
}
|
||||
|
@ -224,7 +220,6 @@ urls [
|
|||
T{ url
|
||||
{ protocol "http" }
|
||||
{ host "localhost" }
|
||||
{ raw-query "foo=bar" }
|
||||
{ query H{ { "foo" "bar" } } }
|
||||
{ path "/" }
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ strings.parser lexer prettyprint.backend hashtables present
|
|||
peg.ebnf urls.encoding ;
|
||||
IN: urls
|
||||
|
||||
TUPLE: url protocol username password host port path raw-query query anchor ;
|
||||
TUPLE: url protocol username password host port path query anchor ;
|
||||
|
||||
: <url> ( -- url ) url new ;
|
||||
|
||||
|
@ -47,7 +47,7 @@ protocol = [a-z]+ => [[ url-decode ]]
|
|||
username = [^/:@#?]+ => [[ url-decode ]]
|
||||
password = [^/:@#?]+ => [[ url-decode ]]
|
||||
pathname = [^#?]+ => [[ url-decode ]]
|
||||
query = [^#]+ => [[ >string ]]
|
||||
query = [^#]+ => [[ query>assoc ]]
|
||||
anchor = .+ => [[ url-decode ]]
|
||||
|
||||
hostname = [^/#?]+ => [[ url-decode ]]
|
||||
|
@ -80,7 +80,7 @@ M: string >url
|
|||
] [ f f f f f ] if*
|
||||
]
|
||||
[ second ] ! pathname
|
||||
[ third dup query>assoc ] ! query
|
||||
[ third ] ! query
|
||||
[ fourth ] ! anchor
|
||||
} cleave url boa
|
||||
dup host>> [ [ "/" or ] change-path ] when ;
|
||||
|
@ -139,14 +139,14 @@ PRIVATE>
|
|||
|
||||
: derive-url ( base url -- url' )
|
||||
[ clone ] dip over {
|
||||
[ [ protocol>> ] either? >>protocol ]
|
||||
[ [ username>> ] either? >>username ]
|
||||
[ [ password>> ] either? >>password ]
|
||||
[ [ host>> ] either? >>host ]
|
||||
[ [ port>> ] either? >>port ]
|
||||
[ [ path>> ] bi@ swap url-append-path >>path ]
|
||||
[ [ query>> ] either? >>query ]
|
||||
[ [ anchor>> ] either? >>anchor ]
|
||||
[ [ protocol>> ] either? >>protocol ]
|
||||
[ [ username>> ] either? >>username ]
|
||||
[ [ password>> ] either? >>password ]
|
||||
[ [ host>> ] either? >>host ]
|
||||
[ [ port>> ] either? >>port ]
|
||||
[ [ path>> ] bi@ swap url-append-path >>path ]
|
||||
[ [ query>> ] either? >>query ]
|
||||
[ [ anchor>> ] either? >>anchor ]
|
||||
} 2cleave ;
|
||||
|
||||
: relative-url ( url -- url' )
|
||||
|
|
|
@ -573,12 +573,12 @@ $nl
|
|||
} ;
|
||||
|
||||
HELP: initial:
|
||||
{ $syntax "TUPLE: ... { \"slot\" initial: value } ... ;" }
|
||||
{ $syntax "TUPLE: ... { slot initial: value } ... ;" }
|
||||
{ $values { "slot" "a slot name" } { "value" "any literal" } }
|
||||
{ $description "Specifies an initial value for a tuple slot." } ;
|
||||
|
||||
HELP: read-only
|
||||
{ $syntax "TUPLE: ... { \"slot\" read-only } ... ;" }
|
||||
{ $syntax "TUPLE: ... { slot read-only } ... ;" }
|
||||
{ $values { "slot" "a slot name" } }
|
||||
{ $description "Defines a tuple slot to be read-only. If a tuple has read-only slots, instances of the tuple should only be created by calling " { $link boa } ", instead of " { $link new } ". Using " { $link boa } " is the only way to set the value of a read-only slot." } ;
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ TUPLE: help-webapp < dispatcher ;
|
|||
|
||||
[
|
||||
{
|
||||
{ "search" [ 2 v-min-length 50 v-max-length v-one-line ] }
|
||||
{ "search" [ 1 v-min-length 50 v-max-length v-one-line ] }
|
||||
} validate-params
|
||||
|
||||
help-dir set-current-directory
|
||||
|
|
|
@ -23,10 +23,10 @@
|
|||
|
||||
<p>This is the <a href="http://factorcode.org" target="_top">Factor</a>
|
||||
documentation, generated offline from a
|
||||
<code>load-everything</code> image. The Factor UI also
|
||||
includes a documentation browser tool.</p>
|
||||
<code>load-everything</code> image. If you want, you can also browse the
|
||||
documentation from within the <a href="http://factorcode.org" target="_top">Factor</a> UI.</p>
|
||||
|
||||
<p>You may search article titles below.</p>
|
||||
<p>You may search article titles below; for example, try searching for "HTTP".</p>
|
||||
|
||||
<t:form t:action="$help-webapp/search">
|
||||
<t:field t:name="search" />
|
||||
|
|
|
@ -77,10 +77,9 @@ SYMBOL: dh-file
|
|||
"password" key-password set-global
|
||||
common-configuration
|
||||
<factor-website>
|
||||
<pastebin> "pastebin" add-responder
|
||||
<planet> "planet" add-responder
|
||||
<pastebin> <factor-boilerplate> "pastebin" add-responder
|
||||
<planet> <factor-boilerplate> "planet" add-responder
|
||||
"/tmp/docs/" <help-webapp> "docs" add-responder
|
||||
<factor-boilerplate>
|
||||
<configuration>
|
||||
main-responder set-global ;
|
||||
|
||||
|
|
Loading…
Reference in New Issue