From b88a383151a9143aba747692eb33d0e4ff5ea721 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Sun, 1 Jun 2008 01:23:11 -0500 Subject: [PATCH 1/6] Yahoo updates --- extra/yahoo/authors.txt | 1 + extra/yahoo/summary.txt | 2 +- extra/yahoo/yahoo-tests.factor | 4 +-- extra/yahoo/yahoo.factor | 50 ++++++++++++++++++++++++++-------- 4 files changed, 43 insertions(+), 14 deletions(-) diff --git a/extra/yahoo/authors.txt b/extra/yahoo/authors.txt index f990dd0ed2..382fc3fc09 100644 --- a/extra/yahoo/authors.txt +++ b/extra/yahoo/authors.txt @@ -1 +1,2 @@ Daniel Ehrenberg +Walton Chan diff --git a/extra/yahoo/summary.txt b/extra/yahoo/summary.txt index 662369d96e..98287365af 100644 --- a/extra/yahoo/summary.txt +++ b/extra/yahoo/summary.txt @@ -1 +1 @@ -Yahoo! search example using XML-RPC +Yahoo! search example using XML diff --git a/extra/yahoo/yahoo-tests.factor b/extra/yahoo/yahoo-tests.factor index dc684af726..3776715c7b 100644 --- a/extra/yahoo/yahoo-tests.factor +++ b/extra/yahoo/yahoo-tests.factor @@ -1,4 +1,4 @@ -USING: tools.test yahoo kernel io.files xml sequences ; +USING: tools.test yahoo kernel io.files xml sequences accessors ; [ T{ result @@ -8,4 +8,4 @@ USING: tools.test yahoo kernel io.files xml sequences ; "Official site with news, tour dates, discography, store, community, and more." } ] [ "resource:extra/yahoo/test-results.xml" file>xml parse-yahoo first ] unit-test -[ "http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=Factor-search&query=hi&results=1" ] [ "hi" 1 "Factor-search" query ] unit-test +[ "http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=Factor-search&query=hi&results=2&similar_ok=1" ] [ "hi" "Factor-search" >>appid 2 >>results t >>similar-ok query ] unit-test diff --git a/extra/yahoo/yahoo.factor b/extra/yahoo/yahoo.factor index 214ad04979..dd7ce962c2 100755 --- a/extra/yahoo/yahoo.factor +++ b/extra/yahoo/yahoo.factor @@ -1,12 +1,15 @@ -! Copyright (C) 2006 Daniel Ehrenberg +! Copyright (C) 2006 Daniel Ehrenberg, Walton Chan ! See http://factorcode.org/license.txt for BSD license. USING: http.client xml xml.utilities kernel sequences -namespaces http math.parser help math.order locals ; +namespaces http math.parser help math.order locals accessors ; IN: yahoo TUPLE: result title url summary ; C: result + +TUPLE: search query results adult-ok start appid region type +format similar-ok language country site subscription license ; : parse-yahoo ( xml -- seq ) "Result" deep-tags-named [ @@ -18,19 +21,44 @@ C: result : yahoo-url ( -- str ) "http://search.yahooapis.com/WebSearchService/V1/webSearch" ; -:: query ( search num appid -- url ) +: param ( search str quot -- search ) + >r over r> call [ url-encode [ % ] bi@ ] [ drop ] if* ; + inline + +: num-param ( search str quot -- search ) + [ dup [ number>string ] when ] compose param ; inline + +: bool-param ( search str quot -- search ) + [ "1" and ] compose param ; inline + +: query ( search -- url ) [ - yahoo-url % - "?appid=" % appid % - "&query=" % search url-encode % - "&results=" % num # + yahoo-url % + "?appid=" [ appid>> ] param + "&query=" [ query>> ] param + "®ion=" [ region>> ] param + "&type=" [ type>> ] param + "&format=" [ format>> ] param + "&language=" [ language>> ] param + "&country=" [ country>> ] param + "&site=" [ site>> ] param + "&subscription=" [ subscription>> ] param + "&license=" [ license>> ] param + "&results=" [ results>> ] num-param + "&start=" [ start>> ] num-param + "&adult_ok=" [ adult-ok>> ] bool-param + "&similar_ok=" [ similar-ok>> ] bool-param + drop ] "" make ; : factor-id "fRrVAKzV34GDyeRw6bUHDhEWHRedwfOC7e61wwXZLgGF80E67spxdQXuugBe2pgIevMmKwA-" ; -: search-yahoo/id ( search num id -- seq ) - query http-get string>xml parse-yahoo ; +: ( query -- search ) + search new + factor-id >>appid + 10 >>results + swap >>query ; -: search-yahoo ( search num -- seq ) - factor-id search-yahoo/id ; +: search-yahoo ( search -- seq ) + query http-get string>xml parse-yahoo ; From d3d1db199e5c1d13071015f7aa8778dee8d1f9fb Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Sun, 1 Jun 2008 11:24:17 -0500 Subject: [PATCH 2/6] Docs for collation --- extra/unicode/collation/collation-docs.factor | 39 ++++++++++++++++++- extra/unicode/collation/collation.factor | 6 +++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/extra/unicode/collation/collation-docs.factor b/extra/unicode/collation/collation-docs.factor index 23538229a4..0e92042ddd 100644 --- a/extra/unicode/collation/collation-docs.factor +++ b/extra/unicode/collation/collation-docs.factor @@ -1,7 +1,42 @@ -USING: help.syntax help.markup ; +USING: help.syntax help.markup strings byte-arrays ; IN: unicode.collation ABOUT: "unicode.collation" ARTICLE: "unicode.collation" "Unicode collation algorithm" -"The Unicode Collation Algorithm (UTS #10) forms a reasonable way to sort strings when accouting for all of the characters in Unicode." ; +"The Unicode Collation Algorithm (UTS #10) forms a reasonable way to sort strings when accouting for all of the characters in Unicode. At the moment, only the default Unicode collation element table (DUCET) is used, but a more accurate collation would take locale into account. The following words are defined:" +{ $subsection sort-strings } +{ $subsection collation-key } +{ $subsection string<=> } +{ $subsection primary= } +{ $subsection secondary= } +{ $subsection tertiary= } +{ $subsection quaternary= } ; + +HELP: sort-strings +{ $values { "strings" "a sequence of strings" } { "sorted" "the strings in DUCET order" } } +{ $description "This word takes a sequence of strings and sorts them according to the UCA, using code point order as a tie-breaker." } ; + +HELP: collation-key +{ $values { "string" string } { "key" byte-array } } +{ $description "This takes a string and gives a representation of the collation key, which can be compared with <=>" } ; + +HELP: string<=> +{ $values { "str1" string } { "str2" string } { "<=>" "one of +lt+, +gt+ or +eq+" } } +{ $description "This word takes two strings and compares them using the UCA with the DUCET, using code point order as a tie-breaker." } ; + +HELP: primary= +{ $values { "str1" string } { "str2" string } { "?" "t or f" } } +{ $description "This checks whether the first level of collation is identical. This is the least specific kind of equality test. In Latin script, it can be understood as ignoring case, punctuation and accent marks." } ; + +HELP: secondary= +{ $values { "str1" string } { "str2" string } { "?" "t or f" } } +{ $description "This checks whether the first two levels of collation are equal. For Latin script, this means accent marks are significant again, and it is otherwise similar to primary=." } ; + +HELP: tertiary= +{ $values { "str1" string } { "str2" string } { "?" "t or f" } } +{ $description "Along the same lines as secondary=, but case is significant." } ; + +HELP: quaternary= +{ $values { "str1" string } { "str2" string } { "?" "t or f" } } +{ $description "This is similar to tertiary= but it makes punctuation significant again, while still leaving out things like null bytes and Hebrew vowel marks, which mean absolutely nothing in collation." } ; diff --git a/extra/unicode/collation/collation.factor b/extra/unicode/collation/collation.factor index b12a10709e..441339d677 100755 --- a/extra/unicode/collation/collation.factor +++ b/extra/unicode/collation/collation.factor @@ -6,6 +6,7 @@ unicode.syntax macros sequences.deep words unicode.breaks quotations ; IN: unicode.collation + : completely-ignorable? ( weight -- ? ) [ primary>> ] [ secondary>> ] [ tertiary>> ] tri @@ -131,11 +133,13 @@ ducet insert-helpers nfd string>graphemes graphemes>weights filter-ignorable weights>bytes ; + : primary= ( str1 str2 -- ? ) 3 insensitive= ; @@ -149,12 +153,14 @@ ducet insert-helpers : quaternary= ( str1 str2 -- ? ) 0 insensitive= ; + ) 2dup [ second ] bi@ <=> dup +eq+ = [ drop <=> ] [ 2nip ] if ; : w/collation-key ( str -- {str,key} ) dup collation-key 2array ; +PRIVATE> : sort-strings ( strings -- sorted ) [ w/collation-key ] map From 94776f6841c6d85131848dab3efbd773dde4c168 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Sun, 1 Jun 2008 13:50:12 -0500 Subject: [PATCH 3/6] Collation cleanup and test added --- extra/unicode/collation/collation-tests.factor | 3 +++ extra/unicode/collation/collation.factor | 11 +++-------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/extra/unicode/collation/collation-tests.factor b/extra/unicode/collation/collation-tests.factor index b4a54bb11d..16ac50d5a9 100755 --- a/extra/unicode/collation/collation-tests.factor +++ b/extra/unicode/collation/collation-tests.factor @@ -24,6 +24,9 @@ IN: unicode.collation.tests [ t t f f ] [ "hello" "HELLO" test-equality ] unit-test [ t t t f ] [ "hello" "h e l l o." test-equality ] unit-test [ t t t t ] [ "hello" "\0hello\0" test-equality ] unit-test +[ { "good bye" "goodbye" "hello" "HELLO" } ] +[ { "HELLO" "goodbye" "good bye" "hello" } sort-strings ] +unit-test parse-test 2 [ [ test-two ] assoc-each ] with-null-writer diff --git a/extra/unicode/collation/collation.factor b/extra/unicode/collation/collation.factor index 441339d677..f71a58be85 100755 --- a/extra/unicode/collation/collation.factor +++ b/extra/unicode/collation/collation.factor @@ -154,18 +154,13 @@ PRIVATE> 0 insensitive= ; ) - 2dup [ second ] bi@ <=> dup +eq+ = - [ drop <=> ] [ 2nip ] if ; - : w/collation-key ( str -- {str,key} ) - dup collation-key 2array ; + [ collation-key ] keep 2array ; PRIVATE> : sort-strings ( strings -- sorted ) [ w/collation-key ] map - [ compare-collation ] sort - keys ; + natural-sort values ; : string<=> ( str1 str2 -- <=> ) - [ w/collation-key ] bi@ compare-collation ; + [ w/collation-key ] compare ; From 94eebc747b5acf2cca6047e8172f6695d79be814 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 2 Jun 2008 15:50:15 -0500 Subject: [PATCH 4/6] Fix diff --- extra/webapps/wiki/wiki.css | 1 + 1 file changed, 1 insertion(+) diff --git a/extra/webapps/wiki/wiki.css b/extra/webapps/wiki/wiki.css index 4825839ab3..83ec918e3b 100644 --- a/extra/webapps/wiki/wiki.css +++ b/extra/webapps/wiki/wiki.css @@ -2,6 +2,7 @@ border-width: 1px; border-color: #666; border-style: solid; + width: 50%; } .comparison table { From d35f25f334a87a17175b8a16418e68ac6fa911a9 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 2 Jun 2008 17:51:06 -0500 Subject: [PATCH 5/6] Fix load errors --- extra/furnace/auth/basic/basic.factor | 6 +++--- extra/html/components/components-tests.factor | 2 +- extra/html/parser/analyzer/analyzer.factor | 2 +- extra/html/templates/chloe/chloe-tests.factor | 8 ++++---- extra/http/server/cgi/cgi.factor | 4 ++-- extra/http/server/server.factor | 3 ++- extra/webapps/counter/counter.factor | 2 +- extra/webapps/wiki/diff.xml | 11 +---------- extra/webapps/wiki/edit.xml | 6 ------ extra/webapps/wiki/page-common.xml | 14 ++++++++++++++ extra/webapps/wiki/revisions.xml | 9 --------- extra/webapps/wiki/view.xml | 7 ------- extra/webapps/wiki/wiki.factor | 16 ++++++++++------ extra/xmode/code2html/responder/responder.factor | 4 ++-- extra/yahoo/yahoo.factor | 3 ++- 15 files changed, 43 insertions(+), 54 deletions(-) create mode 100644 extra/webapps/wiki/page-common.xml diff --git a/extra/furnace/auth/basic/basic.factor b/extra/furnace/auth/basic/basic.factor index c57f78b315..c8d542c219 100755 --- a/extra/furnace/auth/basic/basic.factor +++ b/extra/furnace/auth/basic/basic.factor @@ -1,9 +1,9 @@ ! Copyright (c) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. USING: accessors quotations assocs kernel splitting -base64 html.elements io combinators http.server -furnace.auth.providers furnace.auth.login -http sequences ; +base64 html.elements io combinators sequences +http http.server.filters http.server.responses http.server +furnace.auth.providers furnace.auth.login ; IN: furnace.auth.basic TUPLE: basic-auth < filter-responder realm provider ; diff --git a/extra/html/components/components-tests.factor b/extra/html/components/components-tests.factor index 90dc156ea6..1f77768115 100644 --- a/extra/html/components/components-tests.factor +++ b/extra/html/components/components-tests.factor @@ -1,7 +1,7 @@ IN: html.components.tests USING: tools.test kernel io.streams.string io.streams.null accessors inspector html.streams -html.components namespaces ; +html.elements html.components namespaces ; [ ] [ blank-values ] unit-test diff --git a/extra/html/parser/analyzer/analyzer.factor b/extra/html/parser/analyzer/analyzer.factor index 9ce45b5c47..47d352b6b8 100755 --- a/extra/html/parser/analyzer/analyzer.factor +++ b/extra/html/parser/analyzer/analyzer.factor @@ -1,6 +1,6 @@ USING: assocs html.parser kernel math sequences strings ascii arrays shuffle unicode.case namespaces splitting http -sequences.lib accessors io combinators http.client ; +sequences.lib accessors io combinators http.client urls ; IN: html.parser.analyzer TUPLE: link attributes clickable ; diff --git a/extra/html/templates/chloe/chloe-tests.factor b/extra/html/templates/chloe/chloe-tests.factor index 3a2cd10494..d4c02061b2 100644 --- a/extra/html/templates/chloe/chloe-tests.factor +++ b/extra/html/templates/chloe/chloe-tests.factor @@ -1,7 +1,7 @@ USING: html.templates html.templates.chloe tools.test io.streams.string kernel sequences ascii boxes namespaces xml html.components -splitting unicode.categories ; +splitting unicode.categories furnace ; IN: html.templates.chloe.tests [ f ] [ f parse-query-attr ] unit-test @@ -49,7 +49,7 @@ IN: html.templates.chloe.tests [ [ "test2" test-template call-template - ] [ "test3" test-template ] with-boilerplate + ] "test3" test-template with-boilerplate ] run-template ] unit-test @@ -137,7 +137,7 @@ TUPLE: person first-name last-name ; [ "
RBaxterUnknown
DougColeman
" ] [ [ - "test9" test-template call-template + "test8" test-template call-template ] run-template [ blank? not ] filter ] unit-test @@ -145,6 +145,6 @@ TUPLE: person first-name last-name ; [ "Hello" ] [ [ - "test10" test-template call-template + "test9" test-template call-template ] run-template ] unit-test diff --git a/extra/http/server/cgi/cgi.factor b/extra/http/server/cgi/cgi.factor index a706ee6998..cf8a35f141 100755 --- a/extra/http/server/cgi/cgi.factor +++ b/extra/http/server/cgi/cgi.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: namespaces kernel assocs io.files io.streams.duplex combinators arrays io.launcher io http.server.static http.server -http accessors sequences strings math.parser fry ; +http accessors sequences strings math.parser fry urls ; IN: http.server.cgi : post? request get method>> "POST" = ; @@ -28,7 +28,7 @@ IN: http.server.cgi "" "REMOTE_IDENT" set request get method>> "REQUEST_METHOD" set - request get query>> assoc>query "QUERY_STRING" set + request get url>> query>> assoc>query "QUERY_STRING" set request get "cookie" header "HTTP_COOKIE" set request get "user-agent" header "HTTP_USER_AGENT" set diff --git a/extra/http/server/server.factor b/extra/http/server/server.factor index 68baeb28aa..02424ef974 100755 --- a/extra/http/server/server.factor +++ b/extra/http/server/server.factor @@ -63,7 +63,8 @@ LOG: httpd-hit NOTICE url>> path>> split-path main-responder get call-responder ; : do-request ( request -- response ) - [ + '[ + , [ init-request ] [ log-request ] [ dispatch-request ] tri diff --git a/extra/webapps/counter/counter.factor b/extra/webapps/counter/counter.factor index 9ac70f452a..da646fb76f 100644 --- a/extra/webapps/counter/counter.factor +++ b/extra/webapps/counter/counter.factor @@ -1,5 +1,5 @@ USING: math kernel accessors http.server http.server.dispatchers -furnace.actions furnace.sessions +furnace furnace.actions furnace.sessions html.components html.templates.chloe fry urls ; IN: webapps.counter diff --git a/extra/webapps/wiki/diff.xml b/extra/webapps/wiki/diff.xml index 55f3ef0b23..35afe51b66 100644 --- a/extra/webapps/wiki/diff.xml +++ b/extra/webapps/wiki/diff.xml @@ -2,9 +2,7 @@ - - Diff: - + Diff: @@ -23,11 +21,4 @@ - - diff --git a/extra/webapps/wiki/edit.xml b/extra/webapps/wiki/edit.xml index 37cc6d9a5b..057b7f8f71 100644 --- a/extra/webapps/wiki/edit.xml +++ b/extra/webapps/wiki/edit.xml @@ -16,10 +16,4 @@ - diff --git a/extra/webapps/wiki/page-common.xml b/extra/webapps/wiki/page-common.xml new file mode 100644 index 0000000000..1d4b507320 --- /dev/null +++ b/extra/webapps/wiki/page-common.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/extra/webapps/wiki/revisions.xml b/extra/webapps/wiki/revisions.xml index 0a0de8e470..2a909e6ab3 100644 --- a/extra/webapps/wiki/revisions.xml +++ b/extra/webapps/wiki/revisions.xml @@ -53,13 +53,4 @@ -
- - - diff --git a/extra/webapps/wiki/view.xml b/extra/webapps/wiki/view.xml index 0e1f0f7478..30dfb71270 100644 --- a/extra/webapps/wiki/view.xml +++ b/extra/webapps/wiki/view.xml @@ -10,11 +10,4 @@

This revision created on by .

- - diff --git a/extra/webapps/wiki/wiki.factor b/extra/webapps/wiki/wiki.factor index 31b5a12c41..6dcf89e208 100644 --- a/extra/webapps/wiki/wiki.factor +++ b/extra/webapps/wiki/wiki.factor @@ -216,16 +216,20 @@ revision "REVISIONS" { : ( -- dispatcher ) wiki new-dispatcher - "" add-responder - "view" add-responder - "revision" add-responder - "revisions" add-responder + + "" add-responder + "view" add-responder + "revision" add-responder + "revisions" add-responder + "diff" add-responder + { } "edit" add-responder + + { wiki "page-common" } >>template + >>default "rollback" add-responder "user-edits" add-responder - "diff" add-responder "articles" add-responder "changes" add-responder - { } "edit" add-responder { } "delete" add-responder { wiki "wiki-common" } >>template ; diff --git a/extra/xmode/code2html/responder/responder.factor b/extra/xmode/code2html/responder/responder.factor index 67cb60f8a0..2bc766dbc6 100755 --- a/extra/xmode/code2html/responder/responder.factor +++ b/extra/xmode/code2html/responder/responder.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2007, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: io io.files io.encodings.utf8 namespaces http.server -http.server.static http xmode.code2html kernel sequences -accessors fry ; +http.server.responses http.server.static http xmode.code2html +kernel sequences accessors fry ; IN: xmode.code2html.responder : ( root -- responder ) diff --git a/extra/yahoo/yahoo.factor b/extra/yahoo/yahoo.factor index dd7ce962c2..c17de206c4 100755 --- a/extra/yahoo/yahoo.factor +++ b/extra/yahoo/yahoo.factor @@ -1,7 +1,8 @@ ! Copyright (C) 2006 Daniel Ehrenberg, Walton Chan ! See http://factorcode.org/license.txt for BSD license. USING: http.client xml xml.utilities kernel sequences -namespaces http math.parser help math.order locals accessors ; +namespaces http math.parser help math.order locals +urls accessors ; IN: yahoo TUPLE: result title url summary ; From 5127a587ea862a52ee3fa1c770a4db260e02969f Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 2 Jun 2008 18:04:21 -0500 Subject: [PATCH 6/6] Yahoo uses URLs now --- extra/yahoo/yahoo-tests.factor | 4 +-- extra/yahoo/yahoo.factor | 47 ++++++++++++++++------------------ 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/extra/yahoo/yahoo-tests.factor b/extra/yahoo/yahoo-tests.factor index 3776715c7b..827d6ecfd0 100644 --- a/extra/yahoo/yahoo-tests.factor +++ b/extra/yahoo/yahoo-tests.factor @@ -1,4 +1,4 @@ -USING: tools.test yahoo kernel io.files xml sequences accessors ; +USING: tools.test yahoo kernel io.files xml sequences accessors urls ; [ T{ result @@ -8,4 +8,4 @@ USING: tools.test yahoo kernel io.files xml sequences accessors ; "Official site with news, tour dates, discography, store, community, and more." } ] [ "resource:extra/yahoo/test-results.xml" file>xml parse-yahoo first ] unit-test -[ "http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=Factor-search&query=hi&results=2&similar_ok=1" ] [ "hi" "Factor-search" >>appid 2 >>results t >>similar-ok query ] unit-test +[ URL" http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=Factor-search&query=hi&results=2&similar_ok=1" ] [ "hi" "Factor-search" >>appid 2 >>results t >>similar-ok query ] unit-test diff --git a/extra/yahoo/yahoo.factor b/extra/yahoo/yahoo.factor index c17de206c4..c47b8be15c 100755 --- a/extra/yahoo/yahoo.factor +++ b/extra/yahoo/yahoo.factor @@ -1,14 +1,13 @@ ! Copyright (C) 2006 Daniel Ehrenberg, Walton Chan ! See http://factorcode.org/license.txt for BSD license. USING: http.client xml xml.utilities kernel sequences -namespaces http math.parser help math.order locals -urls accessors ; +math.parser urls accessors locals ; IN: yahoo TUPLE: result title url summary ; C: result - + TUPLE: search query results adult-ok start appid region type format similar-ok language country site subscription license ; @@ -20,11 +19,11 @@ format similar-ok language country site subscription license ; ] map ; : yahoo-url ( -- str ) - "http://search.yahooapis.com/WebSearchService/V1/webSearch" ; + URL" http://search.yahooapis.com/WebSearchService/V1/webSearch" ; -: param ( search str quot -- search ) - >r over r> call [ url-encode [ % ] bi@ ] [ drop ] if* ; - inline +:: param ( search url name quot -- search url ) + search url search quot call + [ name set-query-param ] when* ; inline : num-param ( search str quot -- search ) [ dup [ number>string ] when ] compose param ; inline @@ -33,24 +32,22 @@ format similar-ok language country site subscription license ; [ "1" and ] compose param ; inline : query ( search -- url ) - [ - yahoo-url % - "?appid=" [ appid>> ] param - "&query=" [ query>> ] param - "®ion=" [ region>> ] param - "&type=" [ type>> ] param - "&format=" [ format>> ] param - "&language=" [ language>> ] param - "&country=" [ country>> ] param - "&site=" [ site>> ] param - "&subscription=" [ subscription>> ] param - "&license=" [ license>> ] param - "&results=" [ results>> ] num-param - "&start=" [ start>> ] num-param - "&adult_ok=" [ adult-ok>> ] bool-param - "&similar_ok=" [ similar-ok>> ] bool-param - drop - ] "" make ; + yahoo-url clone + "appid" [ appid>> ] param + "query" [ query>> ] param + "region" [ region>> ] param + "type" [ type>> ] param + "format" [ format>> ] param + "language" [ language>> ] param + "country" [ country>> ] param + "site" [ site>> ] param + "subscription" [ subscription>> ] param + "license" [ license>> ] param + "results" [ results>> ] num-param + "start" [ start>> ] num-param + "adult_ok" [ adult-ok>> ] bool-param + "similar_ok" [ similar-ok>> ] bool-param + nip ; : factor-id "fRrVAKzV34GDyeRw6bUHDhEWHRedwfOC7e61wwXZLgGF80E67spxdQXuugBe2pgIevMmKwA-" ;