]> gitweb.factorcode.org Git - factor.git/commitdiff
Add a seq>dlist word and make a dlist literal DL{
authorDoug Coleman <doug.coleman@gmail.com>
Thu, 27 Oct 2011 22:17:49 +0000 (15:17 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Sat, 29 Oct 2011 08:05:37 +0000 (01:05 -0700)
Implement prettyprint on dlists.

basis/dlists/dlists.factor
basis/dlists/prettyprint/authors.txt [new file with mode: 0644]
basis/dlists/prettyprint/prettyprint.factor [new file with mode: 0644]

index 5ad627076fcdd845c3fae1ea49e330d7c932de60..710c9d94fb3c805210363781273b6b5d68e5086f 100644 (file)
@@ -1,8 +1,8 @@
 ! Copyright (C) 2007, 2009 Mackenzie Straight, Doug Coleman,
 ! Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: combinators kernel math sequences accessors deques
-search-deques summary hashtables fry math.order ;
+USING: accessors combinators deques fry hashtables kernel math
+math.order parser search-deques sequences summary vocabs.loader ;
 IN: dlists
 
 <PRIVATE
@@ -158,6 +158,9 @@ M: dlist clear-deque ( dlist -- )
 : dlist>seq ( dlist -- seq )
     [ ] collector [ dlist-each ] dip ;
 
+: seq>dlist ( seq -- dlist )
+    <dlist> [ '[ _ push-back ] each ] keep ;
+
 : 1dlist ( obj -- dlist ) <dlist> [ push-front ] keep ;
 
 : dlist-filter ( ... dlist quot: ( ... value -- ... ? ) -- ... dlist' )
@@ -167,3 +170,8 @@ M: dlist clone
     <dlist> [ '[ _ push-back ] dlist-each ] keep ;
 
 INSTANCE: dlist deque
+
+SYNTAX: DL{ \ } [ seq>dlist ] parse-literal ;
+
+{ "dlists" "prettyprint" } "dlists.prettyprint" require-when
+
diff --git a/basis/dlists/prettyprint/authors.txt b/basis/dlists/prettyprint/authors.txt
new file mode 100644 (file)
index 0000000..7c1b2f2
--- /dev/null
@@ -0,0 +1 @@
+Doug Coleman
diff --git a/basis/dlists/prettyprint/prettyprint.factor b/basis/dlists/prettyprint/prettyprint.factor
new file mode 100644 (file)
index 0000000..393cf07
--- /dev/null
@@ -0,0 +1,10 @@
+! Copyright (C) 2011 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: dlists kernel prettyprint.custom ;
+IN: dlists.prettyprint
+
+M: dlist pprint-delims drop \ DL{ \ } ;
+M: dlist >pprint-sequence dlist>seq ;
+M: dlist pprint-narrow? drop f ;
+M: dlist pprint* pprint-object ;
+