]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://factorcode.org/git/factor
authorJoe Groff <arcata@gmail.com>
Tue, 2 Mar 2010 23:25:06 +0000 (15:25 -0800)
committerJoe Groff <arcata@gmail.com>
Tue, 2 Mar 2010 23:25:06 +0000 (15:25 -0800)
14 files changed:
basis/bootstrap/image/download/download.factor
basis/calendar/calendar.factor
basis/calendar/format/format.factor
basis/http/client/client-docs.factor
basis/http/client/client.factor
basis/http/http-tests.factor
basis/syndication/syndication.factor
extra/calendar/holidays/us/us.factor
extra/images/http/http.factor
extra/slots/syntax/syntax-docs.factor
extra/slots/syntax/syntax-tests.factor
extra/slots/syntax/syntax.factor
extra/webapps/fjsc/fjsc.factor
extra/yahoo/yahoo.factor

index 9ab7689eca093c8baf70a5c296642677c451c9c4..e2de6219844e439ea8488777a7e77ea80fa04e64 100644 (file)
@@ -7,7 +7,7 @@ IN: bootstrap.image.download
 CONSTANT: url URL" http://factorcode.org/images/latest/"
 
 : download-checksums ( -- alist )
-    url "checksums.txt" >url derive-url http-data
+    url "checksums.txt" >url derive-url http-get nip
     string-lines [ " " split1 ] { } map>assoc ;
 
 : need-new-image? ( image -- ? )
index 1a64ceb646a5c3dffa0e5b7740819d4167966536..cd87701aa91fba0b33aa19f7c302d9d91267fb12 100644 (file)
@@ -170,18 +170,6 @@ M: timestamp easter ( timestamp -- timestamp )
 : microseconds ( x -- duration ) 1000000 / seconds ;
 : nanoseconds ( x -- duration ) 1000000000 / seconds ;
 
-GENERIC: year ( obj -- n )
-M: integer year ;
-M: timestamp year year>> ;
-
-GENERIC: month ( obj -- n )
-M: integer month ;
-M: timestamp month month>> ;
-
-GENERIC: day ( obj -- n )
-M: integer day ;
-M: timestamp day day>> ;
-
 GENERIC: leap-year? ( obj -- ? )
 
 M: integer leap-year? ( year -- ? )
index 96d76d0ce86430c5e7b9badbd0502b7393f8aba8..35e364e6aafe1a746469728bddf160c2a5c25c20 100644 (file)
@@ -1,8 +1,8 @@
 ! Copyright (C) 2008, 2010 Slava Pestov, Doug Coleman.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: math math.order math.parser math.functions kernel\r
-sequences io accessors arrays io.streams.string splitting\r
-combinators calendar calendar.format.macros present ;\r
+USING: accessors arrays calendar calendar.format.macros\r
+combinators io io.streams.string kernel math math.functions\r
+math.order math.parser present sequences typed ;\r
 IN: calendar.format\r
 \r
 : pad-00 ( n -- str ) number>string 2 CHAR: 0 pad-head ;\r
@@ -272,16 +272,16 @@ ERROR: invalid-timestamp-format ;
 : (timestamp>ymd) ( timestamp -- )\r
     { YYYY "-" MM "-" DD } formatted ;\r
 \r
-: timestamp>ymd ( timestamp -- str )\r
+TYPED: timestamp>ymd ( timestamp: timestamp -- str )\r
     [ (timestamp>ymd) ] with-string-writer ;\r
 \r
 : (timestamp>hms) ( timestamp -- )\r
     { hh ":" mm ":" ss } formatted ;\r
 \r
-: timestamp>hms ( timestamp -- str )\r
+TYPED: timestamp>hms ( timestamp: timestamp -- str )\r
     [ (timestamp>hms) ] with-string-writer ;\r
 \r
-: timestamp>ymdhms ( timestamp -- str )\r
+TYPED: timestamp>ymdhms ( timestamp: timestamp -- str )\r
     [\r
         >gmt\r
         { (timestamp>ymd) " " (timestamp>hms) } formatted\r
index 0d0887d10d80ce2e457c85f34d62ca75150644f3..04077fc2f7b0369b4cab6750041a1e57de778f6a 100644 (file)
@@ -35,11 +35,6 @@ HELP: http-get
 { $description "Downloads the contents of a URL." }
 { $errors "Throws an error if the HTTP request fails." } ;
 
-HELP: http-data
-{ $values { "url" "a " { $link url } " or " { $link string } } { "data" sequence } }
-{ $description "Downloads the contents of a URL. To view the HTTP response, use " { $link http-get } "." }
-{ $errors "Throws an error if the HTTP request fails." } ;
-
 HELP: http-post
 { $values { "post-data" object } { "url" "a " { $link url } " or " { $link string } } { "response" response } { "data" sequence } }
 { $description "Submits an HTTP POST request." }
@@ -66,7 +61,7 @@ HELP: with-http-request
 
 ARTICLE: "http.client.get" "GET requests with the HTTP client"
 "Basic usage involves passing a " { $link url } " and getting a " { $link response } " and data back:"
-{ $subsections http-get http-data }
+{ $subsections http-get }
 "Utilities to retrieve a " { $link url } " and save the contents to a file:"
 { $subsections
     download
index 9e540f111fe8e9bdd817ba6192c06146d2da0660..482a23aeaa644328712528762155b16e210b9202 100644 (file)
@@ -157,9 +157,6 @@ ERROR: download-failed response ;
 : http-get ( url -- response data )
     <get-request> http-request ;
 
-: http-data ( url -- data )
-    http-get nip ;
-
 : with-http-get ( url quot -- response )
     [ <get-request> ] dip with-http-request ; inline
 
index 62936af7ff725eeebc5a7fec47aece72b89d5a59..35d01c10141d7ebbd6157cb02206af74dcc1039e 100644 (file)
@@ -226,14 +226,14 @@ test-db [
 
 [ t ] [
     "vocab:http/test/foo.html" ascii file-contents
-    "http://localhost/nested/foo.html" add-port http-data =
+    "http://localhost/nested/foo.html" add-port http-get nip =
 ] unit-test
 
-[ "http://localhost/redirect-loop" add-port http-data ]
+[ "http://localhost/redirect-loop" add-port http-get nip ]
 [ too-many-redirects? ] must-fail-with
 
 [ "Goodbye" ] [
-    "http://localhost/quit" add-port http-data
+    "http://localhost/quit" add-port http-get nip
 ] unit-test
 
 ! HTTP client redirect bug
@@ -247,7 +247,7 @@ test-db [
 ] unit-test
 
 [ "Goodbye" ] [
-    "http://localhost/redirect" add-port http-data
+    "http://localhost/redirect" add-port http-get nip
 ] unit-test
 
 
@@ -274,12 +274,12 @@ test-db [
 : 404? ( response -- ? ) [ download-failed? ] [ response>> code>> 404 = ] bi and ;
 
 ! This should give a 404 not an infinite redirect loop
-[ "http://localhost/d/blah" add-port http-data ] [ 404? ] must-fail-with
+[ "http://localhost/d/blah" add-port http-get nip ] [ 404? ] must-fail-with
 
 ! This should give a 404 not an infinite redirect loop
-[ "http://localhost/blah/" add-port http-data ] [ 404? ] must-fail-with
+[ "http://localhost/blah/" add-port http-get nip ] [ 404? ] must-fail-with
 
-[ "Goodbye" ] [ "http://localhost/quit" add-port http-data ] unit-test
+[ "Goodbye" ] [ "http://localhost/quit" add-port http-get nip ] unit-test
 
 [ ] [
     <dispatcher>
@@ -293,9 +293,9 @@ test-db [
     test-httpd
 ] unit-test
 
-[ "Hi" ] [ "http://localhost/" add-port http-data ] unit-test
+[ "Hi" ] [ "http://localhost/" add-port http-get nip ] unit-test
 
-[ "Goodbye" ] [ "http://localhost/quit" add-port http-data ] unit-test
+[ "Goodbye" ] [ "http://localhost/quit" add-port http-get nip ] unit-test
 
 USING: html.components html.forms
 xml xml.traversal validators
@@ -353,7 +353,7 @@ SYMBOL: a
 
 [ 4 ] [ a get-global ] unit-test
 
-[ "Goodbye" ] [ "http://localhost/quit" add-port http-data ] unit-test
+[ "Goodbye" ] [ "http://localhost/quit" add-port http-get nip ] unit-test
 
 ! Test cloning
 [ f ] [ <404> dup clone "b" "a" set-header drop "a" header ] unit-test
@@ -371,7 +371,7 @@ SYMBOL: a
 ] unit-test
 
 [ t ] [
-    "http://localhost/" add-port http-data
+    "http://localhost/" add-port http-get nip
     "vocab:http/test/foo.html" ascii file-contents =
 ] unit-test
 
index edfbebeeabeedafaffe13bbbf8d51d43bde21404..fe31a49265d425ca2f4d9e7592b0292a329a44c4 100644 (file)
@@ -115,7 +115,7 @@ M: byte-array parse-feed [ bytes>xml xml>feed ] with-html-entities ;
 
 : download-feed ( url -- feed )
     #! Retrieve an news syndication file, return as a feed tuple.
-    http-data parse-feed ;
+    http-get nip parse-feed ;
 
 ! Atom generation
 
index a4fb19c5979204b93e63f466c3ece97651d6b261..538836952f339fd842262eb8d12bc8598867083a 100644 (file)
@@ -33,7 +33,7 @@ HOLIDAY-NAME: new-years-day us-federal "New Year's Day"
 HOLIDAY: martin-luther-king-day january 3 monday-of-month ;
 HOLIDAY-NAME: martin-luther-king-day us-federal "Martin Luther King Day"
 
-HOLIDAY: inauguration-day year dup 4 neg rem + january 20 >>day ;
+HOLIDAY: inauguration-day january 20 >>day [ dup 4 neg rem + ] change-year ;
 HOLIDAY-NAME: inauguration-day us "Inauguration Day"
 
 HOLIDAY: washingtons-birthday february 3 monday-of-month ;
index d3cff18afbea2aa934d8bb839e83b4d872206ed5..620ab6f73b956df5affdb19e5f67db2290219ea9 100644 (file)
@@ -5,7 +5,7 @@ images.viewer ;
 IN: images.http
 
 : load-http-image ( path -- image )
-    [ http-data ] [ image-class ] bi load-image* ;
+    [ http-get nip ] [ image-class ] bi load-image* ;
 
 : http-image. ( path -- )
     load-http-image image. ;
index b79916f91b225d74e5f59431adac81b0f9d81055..84e6e89dacc670069fe1efa970c0c15f5aaa76d0 100755 (executable)
@@ -3,6 +3,16 @@
 USING: help.markup help.syntax ;
 IN: slots.syntax
 
+HELP: slots[
+{ $description "Outputs several slot values to the stack." }
+{ $example "USING: kernel prettyprint slots.syntax ;"
+           "IN: slots.syntax.example"
+           "TUPLE: rectangle width height ;"
+           "T{ rectangle { width 3 } { height 5 } } slots[ width height ] [ . ] bi@"
+           """3
+5"""
+} ;
+
 HELP: slots{
 { $description "Outputs an array of slot values from a tuple." }
 { $example "USING: prettyprint slots.syntax ;"
@@ -14,6 +24,8 @@ HELP: slots{
 
 ARTICLE: "slots.syntax" "Slots syntax sugar"
 "The " { $vocab-link "slots.syntax" } " vocabulary provides an alternative syntax for taking a sequence of slots from a tuple." $nl
+"Syntax sugar for cleaving slots to the stack:"
+{ $subsections POSTPONE: slots[ }
 "Syntax sugar for cleaving slots to an array:"
 { $subsections POSTPONE: slots{ } ;
 
index 689ccb48eba7c7c1b7f3eb8b2428a936fcd5c294..e4dac6e4a4927425f0483714842352d8f1c81cd9 100755 (executable)
@@ -5,6 +5,10 @@ IN: slots.syntax.tests
 
 TUPLE: slot-test a b c ;
 
+[ 1 2 3 ] [ T{ slot-test f 1 2 3 } slots[ a b c ] ] unit-test
+[ 3 ] [ T{ slot-test f 1 2 3 } slots[ c ] ] unit-test
+[ ] [ T{ slot-test f 1 2 3 } slots[ ] ] unit-test
+
 [ { 1 2 3 } ] [ T{ slot-test f 1 2 3 } slots{ a b c } ] unit-test
 [ { 3 } ] [ T{ slot-test f 1 2 3 } slots{ c } ] unit-test
-[ { } ] [ T{ slot-test f 1 2 3 } slots{ } ] unit-test
\ No newline at end of file
+[ { } ] [ T{ slot-test f 1 2 3 } slots{ } ] unit-test
index 95207a0de94fb713594c1a751e0c58cc2aa527e7..7bfe238fa83515dbbc0a1ef263dfa48088abad82 100755 (executable)
@@ -4,6 +4,10 @@ USING: combinators combinators.smart fry lexer quotations
 sequences slots  ;
 IN: slots.syntax
 
+SYNTAX: slots[
+    "]" [ reader-word 1quotation ] map-tokens
+    '[ _ cleave ] append! ;
+
 SYNTAX: slots{
     "}" [ reader-word 1quotation ] map-tokens
     '[ [ _ cleave ] output>array ] append! ;
index 4dec2580830bc9f3d91d540674af8bb4f0f18bb6..01d6935bee7d1658069e3a82c9c185b3563c0ee3 100644 (file)
@@ -35,7 +35,7 @@ TUPLE: fjsc < dispatcher ;
 
 : do-compile-url ( url -- response )
     [ 
-        absolute-url http-data 'expression' parse fjsc-compile write "();" write
+        absolute-url http-get nip 'expression' parse fjsc-compile write "();" write
     ] with-string-writer
     "application/javascript" <content> ;
 
index 2a8469c32831e9d9e235b329b8195a10394b6e40..5e0c08b430eadb66dacb656d21a8f877ce6f8606 100644 (file)
@@ -57,4 +57,4 @@ CONSTANT: factor-id "fRrVAKzV34GDyeRw6bUHDhEWHRedwfOC7e61wwXZLgGF80E67spxdQXuugB
         swap >>query ;
 
 : search-yahoo ( search -- seq )
-    query http-data string>xml parse-yahoo ;
+    query http-get nip string>xml parse-yahoo ;