]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' into xml
authorDaniel Ehrenberg <ehrenbed@carleton.edu>
Wed, 19 Dec 2007 17:40:55 +0000 (12:40 -0500)
committerDaniel Ehrenberg <ehrenbed@carleton.edu>
Wed, 19 Dec 2007 17:40:55 +0000 (12:40 -0500)
Conflicts:

extra/rss/rss.factor
extra/sequences/lib/lib.factor
extra/xml/data/data.factor

1  2 
extra/delegate/delegate.factor
extra/rss/rss.factor
extra/sequences/lib/lib.factor
extra/xml/data/data.factor

Simple merge
index d34a9855180e9746f280e1d5e53486c77e736ea5,cfb1c903e852179eb198ccd072199d6db37abd3f..233dfcb221a05fd09df89c4a21c648e336ac7e87
@@@ -81,22 -85,26 +85,22 @@@ C: <entry> entr
      ] if ;
  
  ! Atom generation
 -: simple-tag, ( content name -- )
 -    [ , ] tag, ;
 -
 -: simple-tag*, ( content name attrs -- )
 -    [ , ] tag*, ;
 -
  : entry, ( entry -- )
 -    "entry" [
 -        dup entry-title "title" { { "type" "html" } } simple-tag*,
 -        "link" over entry-link "href" associate contained*,
 -        dup entry-pub-date "published" simple-tag,
 -        entry-description [ "content" { { "type" "html" } } simple-tag*, ] when*
 -    ] tag, ;
 +    << entry >> [
 +        << title >> [ dup entry-title , ]
 +        << link [ dup entry-link ] == href // >>
 +        << published >> [ dup entry-pub-date , ]
 +        << content >> [ entry-description , ]
 +    ] ;
  
  : feed>xml ( feed -- xml )
 -    "feed" { { "xmlns" "http://www.w3.org/2005/Atom" } } [
 -        dup feed-title "title" simple-tag,
 -        "link" over feed-link "href" associate contained*,
 -        feed-entries [ entry, ] each
 -    ] make-xml* ;
 +    <XML
 +        << feed [ "http://www.w3.org/2005/Atom" ] == xmlns >> [
 +            << title >> [ dup feed-title , ]
 +            << link [ dup feed-link ] == href // >>
 +            feed-entries [ entry, ] each
 +        ]
 +    XML> ;
  
- : write-feed ( feed -- xml )
+ : write-feed ( feed -- )
      feed>xml write-xml ;
index 2f98e274670cc49c8774e37e508c7b4a5f6d1e4f,ba2fb055e258e014f7c9a32b0faedd974b4411fb..ea6fdd141b24136ff6483d90d6061d13edf2954a
@@@ -63,6 -64,61 +64,65 @@@ IN: sequences.li
  : delete-random ( seq -- value )
      [ length random ] keep [ nth ] 2keep delete-nth ;
  
 +: split-around ( seq quot -- before elem after )
 +    dupd find over [ "Element not found" throw ] unless
 +    >r cut-slice 1 tail r> swap ; inline
++
+ : (map-until) ( quot pred -- quot )
+     [ dup ] swap 3compose
+     [ [ drop t ] [ , f ] if ] compose [ find 2drop ] curry ;
+ : map-until ( seq quot pred -- newseq )
+     (map-until) { } make ;
+ : take-while ( seq quot -- newseq )
+     [ not ] compose
+     [ find drop [ head-slice ] when* ] curry
+     [ dup ] swap compose keep like ;
+ ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ <PRIVATE
+ : translate-string ( n alphabet out-len -- seq )
+     [ drop /mod ] curry* map nip  ;
+ : map-alphabet ( alphabet seq[seq] -- seq[seq] )
+     [ [ swap nth ] curry* map ] curry* map ;
+ : exact-number-strings ( n out-len -- seqs )
+     [ ^ ] 2keep [ translate-string ] 2curry map ;
+ : number-strings ( n max-length -- seqs )
+     1+ [ exact-number-strings ] curry* map concat ;
+ PRIVATE>
+ : exact-strings ( alphabet length -- seqs )
+     >r dup length r> exact-number-strings map-alphabet ;
+ : strings ( alphabet length -- seqs )
+     >r dup length r> number-strings map-alphabet ;
+ : nths ( nths seq -- subseq )
+     ! nths is a sequence of ones and zeroes
+     >r [ length ] keep [ nth 1 = ] curry subset r>
+     [ nth ] curry { } map-as ;
+ : power-set ( seq -- subsets )
+     2 over length exact-number-strings swap [ nths ] curry map ;
+ : cut-find ( seq pred -- before after )
+     dupd find drop dup [ cut ] when ;
+ : cut3 ( seq pred -- first mid last )
+     [ cut-find ] keep [ not ] compose cut-find ;
+ : (cut-all) ( seq pred quot -- )
+     [ >r cut3 r> dip >r >r , r> [ , ] when* r> ] 2keep
+     pick [ (cut-all) ] [ 3drop ] if ;
+ : cut-all ( seq pred quot -- first mid last )
+     [ (cut-all) ] { } make ;
+ : human-sort ( seq -- newseq )
+     [ dup [ digit? ] [ string>number ] cut-all ] { } map>assoc
+     sort-values keys ;
index cb7dd3c7030b3dcd6d5d7dcc31646e9c4700b2e6,725d6da3cc7c819bb0d8beaf7945f5b78d19a72e..77f7c4d92943c9e93b8792cfc26186b6983978bd
@@@ -1,6 -1,6 +1,6 @@@
  ! Copyright (C) 2005, 2006 Daniel Ehrenberg
  ! See http://factorcode.org/license.txt for BSD license.
- USING: kernel sequences sequences.private assocs arrays delegate ;
 -USING: kernel sequences sequences.private assocs arrays vectors ;
++USING: kernel sequences sequences.private assocs arrays delegate vectors ;
  IN: xml.data
  
  TUPLE: name space tag url ;