+++ /dev/null
-Doug Coleman
+++ /dev/null
-! Copyright (C) 2018 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: base91 combinators command-line escape-strings fry
-io.backend io.directories io.directories.search
-io.encodings.binary io.encodings.utf8 io.files io.files.info
-io.pathnames kernel locals math namespaces sequences
-sequences.extras splitting ;
-IN: tools.directory-to-file
-
-: file-is-text? ( path -- ? )
- binary file-contents [ 127 < ] all? ;
-
-: directory-repr ( path -- obj )
- escape-simplest
- "DIRECTORY: " prepend ;
-
-: file-repr ( path string -- obj )
- [ escape-simplest "FILE:: " prepend ] dip " " glue ;
-
-:: directory-to-string ( path -- string )
- path normalize-path
- [ path-separator = ] trim-tail "/" append
- [ recursive-directory-files ] keep
- dup '[
- [ _ ?head drop ] map
- [
- {
- { [ dup file-info directory? ] [ directory-repr ] }
- { [ dup file-is-text? ] [ dup utf8 file-contents escape-string file-repr ] }
- [
- dup binary file-contents >base91
- "" like escape-string
- "base91" prepend file-repr
- ]
- } cond
- ] map
- ] with-directory
- "\n\n" join
- "<DIRECTORY: " path escape-simplest "\n\n" 3append
- "\n\n;DIRECTORY>" surround ;
-
-: directory-to-file ( path -- )
- [ directory-to-string ] keep ".modern" append
- utf8 set-file-contents ;
-
-: directory-to-file-main ( -- )
- command-line get dup length 1 = [ "oops" throw ] unless first
- directory-to-file ;
-
-MAIN: directory-to-file-main
+++ /dev/null
-Doug Coleman
+++ /dev/null
-! Copyright (C) 2018 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: base91 combinators command-line fry io.directories
-io.encodings.binary io.encodings.utf8 io.files io.pathnames
-kernel modern modern.out namespaces sequences splitting strings ;
-IN: tools.file-to-directory
-
-ERROR: expected-one-path got ;
-ERROR: expected-modern-path got ;
-
-: write-directory-files ( path -- )
- [ ".modern" ?tail drop dup make-directories ]
- [ path>literals ] bi
- '[
- _ first second rest [
- dup first "DIRECTORY:" head?
- [ second first second >string make-directories ]
- [
- second first2
- [ second >string ] [
- first3 nip swap "base91" head? [
- base91> binary
- ] [
- utf8
- ] if
- ] bi* swapd
- [ dup parent-directory make-directories ] dip set-file-contents
- ] if
- ] each
- ] with-directory ;
-
-: get-file-to-directory-path ( array -- path )
- dup length 1 = [ expected-one-path ] unless
- first dup ".modern" tail? [ expected-modern-path ] unless ;
-
-: file-to-directory ( -- )
- command-line get get-file-to-directory-path write-directory-files ;
-
-MAIN: file-to-directory
--- /dev/null
+Doug Coleman
--- /dev/null
+! Copyright (C) 2018 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: base91 combinators command-line escape-strings fry
+io.backend io.directories io.directories.search
+io.encodings.binary io.encodings.utf8 io.files io.files.info
+io.pathnames kernel locals math namespaces sequences
+sequences.extras splitting ;
+IN: tools.directory-to-file
+
+: file-is-text? ( path -- ? )
+ binary file-contents [ 127 < ] all? ;
+
+: directory-repr ( path -- obj )
+ escape-simplest
+ "DIRECTORY: " prepend ;
+
+: file-repr ( path string -- obj )
+ [ escape-simplest "FILE:: " prepend ] dip " " glue ;
+
+:: directory-to-string ( path -- string )
+ path normalize-path
+ [ path-separator = ] trim-tail "/" append
+ [ recursive-directory-files ] keep
+ dup '[
+ [ _ ?head drop ] map
+ [
+ {
+ { [ dup file-info directory? ] [ directory-repr ] }
+ { [ dup file-is-text? ] [ dup utf8 file-contents escape-string file-repr ] }
+ [
+ dup binary file-contents >base91
+ "" like escape-string
+ "base91" prepend file-repr
+ ]
+ } cond
+ ] map
+ ] with-directory
+ "\n\n" join
+ "<DIRECTORY: " path escape-simplest "\n\n" 3append
+ "\n\n;DIRECTORY>" surround ;
+
+: directory-to-file ( path -- )
+ [ directory-to-string ] keep ".modern" append
+ utf8 set-file-contents ;
+
+: directory-to-file-main ( -- )
+ command-line get dup length 1 = [ "oops" throw ] unless first
+ directory-to-file ;
+
+MAIN: directory-to-file-main
--- /dev/null
+Doug Coleman
--- /dev/null
+! Copyright (C) 2018 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: base91 combinators command-line fry io.directories
+io.encodings.binary io.encodings.utf8 io.files io.pathnames
+kernel modern modern.out namespaces sequences splitting strings ;
+IN: tools.file-to-directory
+
+ERROR: expected-one-path got ;
+ERROR: expected-modern-path got ;
+
+: write-directory-files ( path -- )
+ [ ".modern" ?tail drop dup make-directories ]
+ [ path>literals ] bi
+ '[
+ _ first second rest [
+ dup first "DIRECTORY:" head?
+ [ second first second >string make-directories ]
+ [
+ second first2
+ [ second >string ] [
+ first3 nip swap "base91" head? [
+ base91> binary
+ ] [
+ utf8
+ ] if
+ ] bi* swapd
+ [ dup parent-directory make-directories ] dip set-file-contents
+ ] if
+ ] each
+ ] with-directory ;
+
+: get-file-to-directory-path ( array -- path )
+ dup length 1 = [ expected-one-path ] unless
+ first dup ".modern" tail? [ expected-modern-path ] unless ;
+
+: file-to-directory ( -- )
+ command-line get get-file-to-directory-path write-directory-files ;
+
+MAIN: file-to-directory