putting encodings on all file readers/writers

db4
Daniel Ehrenberg 2008-02-16 22:17:41 -06:00
parent 8d5f4714fa
commit 62f9ed5dbd
62 changed files with 174 additions and 161 deletions

View File

@ -4,7 +4,7 @@ USING: bit-arrays byte-arrays float-arrays arrays
generator.registers assocs kernel kernel.private libc math generator.registers assocs kernel kernel.private libc math
namespaces parser sequences strings words assocs splitting namespaces parser sequences strings words assocs splitting
math.parser cpu.architecture alien alien.accessors quotations math.parser cpu.architecture alien alien.accessors quotations
system compiler.units ; system compiler.units io.encodings.binary ;
IN: alien.c-types IN: alien.c-types
DEFER: <int> DEFER: <int>
@ -273,6 +273,9 @@ M: long-long-type box-return ( type -- )
r> add* r> add*
] when ; ] when ;
: malloc-file-contents ( path -- alien )
binary file-contents >byte-array malloc-byte-array ;
[ [
[ alien-cell ] [ alien-cell ]
[ set-alien-cell ] [ set-alien-cell ]

View File

@ -7,7 +7,7 @@ strings sbufs vectors words quotations assocs system layouts
splitting growable classes tuples words.private splitting growable classes tuples words.private
io.binary io.files vocabs vocabs.loader source-files io.binary io.files vocabs vocabs.loader source-files
definitions debugger float-arrays quotations.private definitions debugger float-arrays quotations.private
sequences.private combinators ; sequences.private combinators io.encodings.binary ;
IN: bootstrap.image IN: bootstrap.image
: my-arch ( -- arch ) : my-arch ( -- arch )
@ -416,7 +416,7 @@ M: curry '
"Writing image to " write "Writing image to " write
architecture get boot-image-name resource-path architecture get boot-image-name resource-path
dup write "..." print flush dup write "..." print flush
[ (write-image) ] with-file-writer ; binary [ (write-image) ] with-file-writer ;
PRIVATE> PRIVATE>

View File

@ -1,2 +1 @@
IN: io.encodings.binary IN: io.encodings.binary SYMBOL: binary
SYMBOL: binary

View File

@ -1,7 +1,7 @@
! Copyright (C) 2006, 2007 Daniel Ehrenberg. ! Copyright (C) 2006, 2007 Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: math kernel sequences sbufs vectors namespaces USING: math kernel sequences sbufs vectors namespaces
growable strings io classes io.streams.c continuations growable strings io classes continuations
io.styles io.streams.nested io.encodings.binary ; io.styles io.streams.nested io.encodings.binary ;
IN: io.encodings IN: io.encodings
@ -13,12 +13,12 @@ TUPLE: decode-error ;
SYMBOL: begin SYMBOL: begin
: decoded ( buf ch -- buf ch state ) : push-decoded ( buf ch -- buf ch state )
over push 0 begin ; over push 0 begin ;
: push-replacement ( buf -- buf ch state ) : push-replacement ( buf -- buf ch state )
! This is the replacement character ! This is the replacement character
HEX: fffd decoded ; HEX: fffd push-decoded ;
: finish-decoding ( buf ch state -- str ) : finish-decoding ( buf ch state -- str )
begin eq? [ decode-error ] unless drop "" like ; begin eq? [ decode-error ] unless drop "" like ;
@ -59,16 +59,16 @@ TUPLE: decoded code cr ;
decoded construct decoded construct
] if ; ] if ;
: cr+ t swap set-line-reader-cr ; inline : cr+ t swap set-decoded-cr ; inline
: cr- f swap set-line-reader-cr ; inline : cr- f swap set-decoded-cr ; inline
: line-ends/eof ( stream str -- str ) f like swap cr- ; inline : line-ends/eof ( stream str -- str ) f like swap cr- ; inline
: line-ends\r ( stream str -- str ) swap cr+ ; inline : line-ends\r ( stream str -- str ) swap cr+ ; inline
: line-ends\n ( stream str -- str ) : line-ends\n ( stream str -- str )
over line-reader-cr over empty? and over decoded-cr over empty? and
[ drop dup cr- stream-readln ] [ swap cr- ] if ; inline [ drop dup cr- stream-readln ] [ swap cr- ] if ; inline
: handle-readln ( stream str ch -- str ) : handle-readln ( stream str ch -- str )
@ -79,7 +79,7 @@ TUPLE: decoded code cr ;
} case ; } case ;
: fix-read ( stream string -- string ) : fix-read ( stream string -- string )
over line-reader-cr [ over decoded-cr [
over cr- over cr-
"\n" ?head [ "\n" ?head [
swap stream-read1 [ add ] when* swap stream-read1 [ add ] when*
@ -91,13 +91,21 @@ M: decoded stream-read
M: decoded stream-read-partial tuck stream-read fix-read ; M: decoded stream-read-partial tuck stream-read fix-read ;
: read-until-loop ( stream delim -- ch )
! Copied from { c-reader stream-read-until }!!!
over stream-read1 dup [
dup pick memq? [ 2nip ] [ , read-until-loop ] if
] [
2nip
] if ;
M: decoded stream-read-until M: decoded stream-read-until
! Copied from { c-reader stream-read-until }!!! ! Copied from { c-reader stream-read-until }!!!
[ swap read-until-loop ] "" make [ swap read-until-loop ] "" make
swap over empty? over not and [ 2drop f f ] when ; swap over empty? over not and [ 2drop f f ] when ;
: fix-read1 ( stream char -- char ) : fix-read1 ( stream char -- char )
over line-reader-cr [ over decoded-cr [
over cr- over cr-
dup CHAR: \n = [ dup CHAR: \n = [
drop stream-read1 drop stream-read1
@ -106,7 +114,7 @@ M: decoded stream-read-until
M: decoded stream-read1 1 over stream-read ; M: decoded stream-read1 1 over stream-read ;
M: line-reader stream-readln ( stream -- str ) M: decoded stream-readln ( stream -- str )
"\r\n" over stream-read-until handle-readln ; "\r\n" over stream-read-until handle-readln ;
! Encoding ! Encoding

View File

@ -16,7 +16,7 @@ SYMBOL: ignore
8 shift bitor ; 8 shift bitor ;
: end-multibyte ( buf byte ch -- buf ch state ) : end-multibyte ( buf byte ch -- buf ch state )
append-nums decoded ; append-nums push-decoded ;
: begin-utf16be ( buf byte -- buf ch state ) : begin-utf16be ( buf byte -- buf ch state )
dup -3 shift BIN: 11011 number= [ dup -3 shift BIN: 11011 number= [
@ -36,7 +36,7 @@ SYMBOL: ignore
{ double [ end-multibyte ] } { double [ end-multibyte ] }
{ quad1 [ append-nums quad2 ] } { quad1 [ append-nums quad2 ] }
{ quad2 [ handle-quad2be ] } { quad2 [ handle-quad2be ] }
{ quad3 [ append-nums HEX: 10000 + decoded ] } { quad3 [ append-nums HEX: 10000 + push-decoded ] }
{ ignore [ 2drop push-replacement ] } { ignore [ 2drop push-replacement ] }
} case ; } case ;
@ -52,7 +52,7 @@ SYMBOL: ignore
: handle-quad3le ( buf byte ch -- buf ch state ) : handle-quad3le ( buf byte ch -- buf ch state )
swap dup -2 shift BIN: 110111 = [ swap dup -2 shift BIN: 110111 = [
BIN: 11 bitand append-nums HEX: 10000 + decoded BIN: 11 bitand append-nums HEX: 10000 + push-decoded
] [ 2drop push-replacement ] if ; ] [ 2drop push-replacement ] if ;
: decode-utf16le-step ( buf byte ch state -- buf ch state ) : decode-utf16le-step ( buf byte ch state -- buf ch state )

View File

@ -23,7 +23,7 @@ SYMBOL: quad3
: begin-utf8 ( buf byte -- buf ch state ) : begin-utf8 ( buf byte -- buf ch state )
{ {
{ [ dup -7 shift zero? ] [ decoded ] } { [ dup -7 shift zero? ] [ push-decoded ] }
{ [ dup -5 shift BIN: 110 number= ] [ BIN: 11111 bitand double ] } { [ dup -5 shift BIN: 110 number= ] [ BIN: 11111 bitand double ] }
{ [ dup -4 shift BIN: 1110 number= ] [ BIN: 1111 bitand triple ] } { [ dup -4 shift BIN: 1110 number= ] [ BIN: 1111 bitand triple ] }
{ [ dup -3 shift BIN: 11110 number= ] [ BIN: 111 bitand quad ] } { [ dup -3 shift BIN: 11110 number= ] [ BIN: 111 bitand quad ] }
@ -31,7 +31,7 @@ SYMBOL: quad3
} cond ; } cond ;
: end-multibyte ( buf byte ch -- buf ch state ) : end-multibyte ( buf byte ch -- buf ch state )
f append-nums [ decoded ] unless* ; f append-nums [ push-decoded ] unless* ;
: decode-utf8-step ( buf byte ch state -- buf ch state ) : decode-utf8-step ( buf byte ch state -- buf ch state )
{ {

View File

@ -1,34 +1,34 @@
IN: temporary IN: temporary
USING: tools.test io.files io threads kernel continuations ; USING: tools.test io.files io threads kernel continuations io.encodings.ascii ;
[ "passwd" ] [ "/etc/passwd" file-name ] unit-test [ "passwd" ] [ "/etc/passwd" file-name ] unit-test
[ "awk" ] [ "/usr/libexec/awk/" file-name ] unit-test [ "awk" ] [ "/usr/libexec/awk/" file-name ] unit-test
[ "awk" ] [ "/usr/libexec/awk///" file-name ] unit-test [ "awk" ] [ "/usr/libexec/awk///" file-name ] unit-test
[ ] [ [ ] [
"test-foo.txt" resource-path [ "test-foo.txt" resource-path ascii [
"Hello world." print "Hello world." print
] with-file-writer ] with-file-writer
] unit-test ] unit-test
[ ] [ [ ] [
"test-foo.txt" resource-path <file-appender> [ "test-foo.txt" resource-path ascii [
"Hello appender." print "Hello appender." print
] with-stream ] with-file-appender
] unit-test ] unit-test
[ ] [ [ ] [
"test-bar.txt" resource-path <file-appender> [ "test-bar.txt" resource-path ascii [
"Hello appender." print "Hello appender." print
] with-stream ] with-file-appender
] unit-test ] unit-test
[ "Hello world.\nHello appender.\n" ] [ [ "Hello world.\nHello appender.\n" ] [
"test-foo.txt" resource-path file-contents "test-foo.txt" resource-path ascii file-contents
] unit-test ] unit-test
[ "Hello appender.\n" ] [ [ "Hello appender.\n" ] [
"test-bar.txt" resource-path file-contents "test-bar.txt" resource-path ascii file-contents
] unit-test ] unit-test
[ ] [ "test-foo.txt" resource-path delete-file ] unit-test [ ] [ "test-foo.txt" resource-path delete-file ] unit-test
@ -42,7 +42,7 @@ USING: tools.test io.files io threads kernel continuations ;
[ ] [ "test-blah" resource-path make-directory ] unit-test [ ] [ "test-blah" resource-path make-directory ] unit-test
[ ] [ [ ] [
"test-blah/fooz" resource-path <file-writer> dispose "test-blah/fooz" resource-path ascii <file-writer> dispose
] unit-test ] unit-test
[ t ] [ [ t ] [
@ -55,11 +55,11 @@ USING: tools.test io.files io threads kernel continuations ;
[ f ] [ "test-blah" resource-path exists? ] unit-test [ f ] [ "test-blah" resource-path exists? ] unit-test
[ ] [ "test-quux.txt" resource-path [ [ yield "Hi" write ] in-thread ] with-file-writer ] unit-test [ ] [ "test-quux.txt" resource-path ascii [ [ yield "Hi" write ] in-thread ] with-file-writer ] unit-test
[ ] [ "test-quux.txt" resource-path delete-file ] unit-test [ ] [ "test-quux.txt" resource-path delete-file ] unit-test
[ ] [ "test-quux.txt" resource-path [ [ yield "Hi" write ] in-thread ] with-file-writer ] unit-test [ ] [ "test-quux.txt" resource-path ascii [ [ yield "Hi" write ] in-thread ] with-file-writer ] unit-test
[ ] [ "test-quux.txt" "quux-test.txt" [ resource-path ] 2apply rename-file ] unit-test [ ] [ "test-quux.txt" "quux-test.txt" [ resource-path ] 2apply rename-file ] unit-test
[ t ] [ "quux-test.txt" resource-path exists? ] unit-test [ t ] [ "quux-test.txt" resource-path exists? ] unit-test

View File

@ -1,5 +1,5 @@
USING: arrays io io.files kernel math parser strings system USING: arrays io io.files kernel math parser strings system
tools.test words namespaces io.encodings.ascii ; tools.test words namespaces io.encodings.ascii io.encodings.binary ;
IN: temporary IN: temporary
[ f ] [ [ f ] [
@ -8,7 +8,7 @@ IN: temporary
] unit-test ] unit-test
: <resource-reader> ( resource -- stream ) : <resource-reader> ( resource -- stream )
resource-path binary ascii <file-reader> ; resource-path ascii <file-reader> ;
[ [
"This is a line.\rThis is another line.\r" "This is a line.\rThis is another line.\r"
@ -53,7 +53,7 @@ IN: temporary
] unit-test ] unit-test
[ ] [ [ ] [
image [ image binary [
10 [ 65536 read drop ] times 10 [ 65536 read drop ] times
] with-file-reader ] with-file-reader
] unit-test ] unit-test

View File

@ -2,7 +2,7 @@ USING: tools.test io.files io io.streams.c ;
IN: temporary IN: temporary
[ "hello world" ] [ [ "hello world" ] [
"test.txt" resource-path [ "test.txt" resource-path ascii [
"hello world" write "hello world" write
] with-file-writer ] with-file-writer

View File

@ -2,8 +2,7 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel kernel.private namespaces io USING: kernel kernel.private namespaces io
strings sequences math generic threads.private classes strings sequences math generic threads.private classes
io.backend io.streams.lines io.streams.plain io.streams.duplex io.backend io.streams.duplex io.files continuations ;
io.files continuations ;
IN: io.streams.c IN: io.streams.c
TUPLE: c-writer handle ; TUPLE: c-writer handle ;

View File

@ -1,9 +1,7 @@
! Copyright (C) 2004, 2007 Slava Pestov. ! Copyright (C) 2004, 2007 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
IN: io.streams.lines IN: io.streams.lines
USING: io.encodings.latin1 io.encodings ; ! USING: io.encodings.latin1 io.encodings ;
TUPLE: line-reader cr ; ! : <line-reader> ( stream -- new-stream )
! latin1 <decoded> ;
: <line-reader> ( stream -- new-stream )
latin1 <decoded> ;

View File

@ -4,7 +4,7 @@ USING: arrays definitions generic assocs kernel math
namespaces prettyprint sequences strings vectors words namespaces prettyprint sequences strings vectors words
quotations inspector io.styles io combinators sorting quotations inspector io.styles io combinators sorting
splitting math.parser effects continuations debugger splitting math.parser effects continuations debugger
io.files io.streams.string io.streams.lines vocabs io.files io.streams.string io.streams.lines vocabs io.encodings.utf8
source-files classes hashtables compiler.errors compiler.units ; source-files classes hashtables compiler.errors compiler.units ;
IN: parser IN: parser
@ -489,7 +489,7 @@ SYMBOL: interactive-vocabs
[ [
[ [
[ parsing-file ] keep [ parsing-file ] keep
[ ?resource-path <file-reader> ] keep [ ?resource-path utf8 <file-reader> ] keep
parse-stream parse-stream
] with-compiler-errors ] with-compiler-errors
] [ ] [

View File

@ -5,7 +5,7 @@ namespaces prettyprint sequences strings vectors words
quotations inspector io.styles io combinators sorting quotations inspector io.styles io combinators sorting
splitting math.parser effects continuations debugger splitting math.parser effects continuations debugger
io.files io.crc32 io.streams.string io.streams.lines vocabs io.files io.crc32 io.streams.string io.streams.lines vocabs
hashtables graphs compiler.units ; hashtables graphs compiler.units io.encodings.utf8 ;
IN: source-files IN: source-files
SYMBOL: source-files SYMBOL: source-files
@ -17,7 +17,7 @@ uses definitions ;
: (source-modified?) ( path modified checksum -- ? ) : (source-modified?) ( path modified checksum -- ? )
pick file-modified rot [ 0 or ] 2apply > pick file-modified rot [ 0 or ] 2apply >
[ swap file-lines lines-crc32 = not ] [ 2drop f ] if ; [ swap utf8 file-lines lines-crc32 = not ] [ 2drop f ] if ;
: source-modified? ( path -- ? ) : source-modified? ( path -- ? )
dup source-files get at [ dup source-files get at [
@ -68,7 +68,7 @@ uses definitions ;
: reset-checksums ( -- ) : reset-checksums ( -- )
source-files get [ source-files get [
swap ?resource-path dup exists? swap ?resource-path dup exists?
[ file-lines swap record-checksum ] [ 2drop ] if [ utf8 file-lines swap record-checksum ] [ 2drop ] if
] assoc-each ; ] assoc-each ;
M: pathname where pathname-string 1 2array ; M: pathname where pathname-string 1 2array ;

View File

@ -1,6 +1,6 @@
! Based on http://shootout.alioth.debian.org/gp4/benchmark.php?test=fasta&lang=java&id=2 ! Based on http://shootout.alioth.debian.org/gp4/benchmark.php?test=fasta&lang=java&id=2
USING: math kernel io io.files locals multiline assocs sequences USING: math kernel io io.files locals multiline assocs sequences
sequences.private benchmark.reverse-complement hints sequences.private benchmark.reverse-complement hints io.encodings.ascii
byte-arrays float-arrays ; byte-arrays float-arrays ;
IN: benchmark.fasta IN: benchmark.fasta
@ -94,7 +94,7 @@ HINTS: random fixnum ;
n [ ] n [ ]
seed [ initial-seed ] | seed [ initial-seed ] |
out [ out ascii [
n 2 * ALU "Homo sapiens alu" "ONE" write-repeat-fasta n 2 * ALU "Homo sapiens alu" "ONE" write-repeat-fasta
initial-seed initial-seed

View File

@ -1,4 +1,4 @@
USING: kernel io io.files splitting strings USING: kernel io io.files splitting strings io.encodings.ascii
hashtables sequences assocs math namespaces prettyprint hashtables sequences assocs math namespaces prettyprint
math.parser combinators arrays sorting unicode.case ; math.parser combinators arrays sorting unicode.case ;
@ -57,7 +57,7 @@ IN: benchmark.knucleotide
: knucleotide ( -- ) : knucleotide ( -- )
"extra/benchmark/knucleotide/knucleotide-input.txt" resource-path "extra/benchmark/knucleotide/knucleotide-input.txt" resource-path
[ read-input ] with-file-reader ascii [ read-input ] with-file-reader
process-input ; process-input ;
MAIN: knucleotide MAIN: knucleotide

View File

@ -1,6 +1,6 @@
IN: benchmark.mandel IN: benchmark.mandel
USING: arrays io kernel math namespaces sequences strings sbufs USING: arrays io kernel math namespaces sequences strings sbufs
math.functions math.parser io.files colors.hsv ; math.functions math.parser io.files colors.hsv io.encodings.binary ;
: max-color 360 ; inline : max-color 360 ; inline
: zoom-fact 0.8 ; inline : zoom-fact 0.8 ; inline
@ -66,6 +66,6 @@ SYMBOL: cols
: mandel-main ( -- ) : mandel-main ( -- )
"mandel.ppm" resource-path "mandel.ppm" resource-path
[ mandel write ] with-file-writer ; binary [ mandel write ] with-file-writer ;
MAIN: mandel-main MAIN: mandel-main

View File

@ -3,7 +3,7 @@
USING: float-arrays compiler generic io io.files kernel math USING: float-arrays compiler generic io io.files kernel math
math.functions math.vectors math.parser namespaces sequences math.functions math.vectors math.parser namespaces sequences
sequences.private words ; sequences.private words io.encodings.binary ;
IN: benchmark.raytracer IN: benchmark.raytracer
! parameters ! parameters
@ -171,6 +171,6 @@ DEFER: create ( level c r -- scene )
: raytracer-main : raytracer-main
"raytracer.pnm" resource-path "raytracer.pnm" resource-path
[ run write ] with-file-writer ; binary [ run write ] with-file-writer ;
MAIN: raytracer-main MAIN: raytracer-main

View File

@ -1,6 +1,6 @@
USING: io io.files io.streams.duplex kernel sequences USING: io io.files io.streams.duplex kernel sequences
sequences.private strings vectors words memoize splitting sequences.private strings vectors words memoize splitting
hints unicode.case ; hints unicode.case io.encodings.latin1 ;
IN: benchmark.reverse-complement IN: benchmark.reverse-complement
MEMO: trans-map ( -- str ) MEMO: trans-map ( -- str )
@ -32,7 +32,7 @@ HINTS: do-line vector string ;
readln [ do-line (reverse-complement) ] [ show-seq ] if* ; readln [ do-line (reverse-complement) ] [ show-seq ] if* ;
: reverse-complement ( infile outfile -- ) : reverse-complement ( infile outfile -- )
<file-writer> >r <file-reader> r> <duplex-stream> [ latin1 <file-writer> >r latin1 <file-reader> r> <duplex-stream> [
500000 <vector> (reverse-complement) 500000 <vector> (reverse-complement)
] with-stream ; ] with-stream ;

View File

@ -1,11 +1,11 @@
USING: io io.files math math.parser kernel prettyprint ; USING: io io.files math math.parser kernel prettyprint io.encodings.ascii ;
IN: benchmark.sum-file IN: benchmark.sum-file
: sum-file-loop ( n -- n' ) : sum-file-loop ( n -- n' )
readln [ string>number + sum-file-loop ] when* ; readln [ string>number + sum-file-loop ] when* ;
: sum-file ( file -- ) : sum-file ( file -- )
[ 0 sum-file-loop ] with-file-reader . ; ascii [ 0 sum-file-loop ] with-file-reader . ;
: sum-file-main ( -- ) : sum-file-main ( -- )
home "sum-file-in.txt" path+ sum-file ; home "sum-file-in.txt" path+ sum-file ;

View File

@ -2,14 +2,14 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
IN: bootstrap.image.upload IN: bootstrap.image.upload
USING: http.client crypto.md5 splitting assocs kernel io.files USING: http.client crypto.md5 splitting assocs kernel io.files
bootstrap.image sequences io namespaces io.launcher math ; bootstrap.image sequences io namespaces io.launcher math io.encodings.ascii ;
: destination "slava@factorcode.org:www/images/latest/" ; : destination "slava@factorcode.org:www/images/latest/" ;
: boot-image-names images [ boot-image-name ] map ; : boot-image-names images [ boot-image-name ] map ;
: compute-checksums ( -- ) : compute-checksums ( -- )
"checksums.txt" [ "checksums.txt" ascii [
boot-image-names [ dup write bl file>md5str print ] each boot-image-names [ dup write bl file>md5str print ] each
] with-file-writer ; ] with-file-writer ;

View File

@ -1,5 +1,5 @@
USING: alien alien.c-types arrays sequences math math.vectors math.matrices USING: alien alien.c-types arrays sequences math math.vectors math.matrices
math.parser io io.files kernel opengl opengl.gl opengl.glu math.parser io io.files kernel opengl opengl.gl opengl.glu io.encodings.ascii
opengl.capabilities shuffle http.client vectors splitting tools.time system opengl.capabilities shuffle http.client vectors splitting tools.time system
combinators combinators.cleave float-arrays continuations namespaces combinators combinators.cleave float-arrays continuations namespaces
sequences.lib ; sequences.lib ;
@ -35,7 +35,7 @@ IN: bunny.model
: read-model ( stream -- model ) : read-model ( stream -- model )
"Reading model" print flush [ "Reading model" print flush [
[ parse-model ] with-file-reader ascii [ parse-model ] with-file-reader
[ normals ] 2keep 3array [ normals ] 2keep 3array
] time ; ] time ;

View File

@ -4,7 +4,7 @@
USING: kernel math sequences words arrays io USING: kernel math sequences words arrays io
io.files namespaces math.parser kernel.private io.files namespaces math.parser kernel.private
assocs quotations parser parser-combinators tools.time assocs quotations parser parser-combinators tools.time
sequences.private compiler.units ; sequences.private compiler.units io.encodings.binary ;
IN: cpu.8080.emulator IN: cpu.8080.emulator
TUPLE: cpu b c d e f h l a pc sp halted? last-interrupt cycles ram ; TUPLE: cpu b c d e f h l a pc sp halted? last-interrupt cycles ram ;
@ -461,7 +461,7 @@ M: cpu reset ( cpu -- )
: load-rom ( filename cpu -- ) : load-rom ( filename cpu -- )
#! Load the contents of the file into ROM. #! Load the contents of the file into ROM.
#! (address 0x0000-0x1FFF). #! (address 0x0000-0x1FFF).
cpu-ram swap [ cpu-ram swap binary [
0 swap (load-rom) 0 swap (load-rom)
] with-file-reader ; ] with-file-reader ;
@ -477,7 +477,7 @@ SYMBOL: rom-root
#! file path shoul dbe relative to the '/roms' resource path. #! file path shoul dbe relative to the '/roms' resource path.
rom-dir [ rom-dir [
cpu-ram [ cpu-ram [
swap first2 rom-dir swap path+ [ swap first2 rom-dir swap path+ binary [
swap (load-rom) swap (load-rom)
] with-file-reader ] with-file-reader
] curry each ] curry each

View File

@ -1,5 +1,6 @@
USING: cryptlib.libcl cryptlib prettyprint kernel alien sequences libc math USING: cryptlib.libcl cryptlib prettyprint kernel alien sequences libc math
tools.test io io.files continuations alien.c-types splitting generic.math ; tools.test io io.files continuations alien.c-types splitting generic.math
io.encodings.binary ;
"=========================================================" print "=========================================================" print
"Envelope/de-envelop test..." print "Envelope/de-envelop test..." print
@ -152,7 +153,7 @@ tools.test io io.files continuations alien.c-types splitting generic.math ;
! envelope ! envelope
CRYPT_FORMAT_CRYPTLIB [ CRYPT_FORMAT_CRYPTLIB [
"extra/cryptlib/test/large_data.txt" resource-path "extra/cryptlib/test/large_data.txt" resource-path
file-contents set-pop-buffer binary file-contents set-pop-buffer
envelope-handle CRYPT_ATTRIBUTE_BUFFERSIZE envelope-handle CRYPT_ATTRIBUTE_BUFFERSIZE
get-pop-buffer alien>char-string length 10000 + set-attribute get-pop-buffer alien>char-string length 10000 + set-attribute
envelope-handle CRYPT_ENVINFO_DATASIZE envelope-handle CRYPT_ENVINFO_DATASIZE
@ -192,7 +193,7 @@ tools.test io io.files continuations alien.c-types splitting generic.math ;
CRYPT_FORMAT_CRYPTLIB [ CRYPT_FORMAT_CRYPTLIB [
envelope-handle CRYPT_ENVINFO_PASSWORD "password" set-attribute-string envelope-handle CRYPT_ENVINFO_PASSWORD "password" set-attribute-string
"extra/cryptlib/test/large_data.txt" resource-path "extra/cryptlib/test/large_data.txt" resource-path
file-contents set-pop-buffer binary file-contents set-pop-buffer
envelope-handle CRYPT_ATTRIBUTE_BUFFERSIZE envelope-handle CRYPT_ATTRIBUTE_BUFFERSIZE
get-pop-buffer alien>char-string length 10000 + set-attribute get-pop-buffer alien>char-string length 10000 + set-attribute
envelope-handle CRYPT_ENVINFO_DATASIZE envelope-handle CRYPT_ENVINFO_DATASIZE

View File

@ -1,6 +1,6 @@
USING: arrays combinators crypto.common crypto.md5 crypto.sha1 USING: arrays combinators crypto.common crypto.md5 crypto.sha1
crypto.md5.private io io.binary io.files io.streams.string crypto.md5.private io io.binary io.files io.streams.string
kernel math math.vectors memoize sequences ; kernel math math.vectors memoize sequences io.encodings.binary ;
IN: crypto.hmac IN: crypto.hmac
: sha1-hmac ( Ko Ki -- hmac ) : sha1-hmac ( Ko Ki -- hmac )
@ -32,7 +32,7 @@ MEMO: opad ( -- seq ) 64 HEX: 5c <array> ;
[ init-hmac sha1-hmac ] with-stream ; [ init-hmac sha1-hmac ] with-stream ;
: file>sha1-hmac ( K path -- hmac ) : file>sha1-hmac ( K path -- hmac )
<file-reader> stream>sha1-hmac ; binary <file-reader> stream>sha1-hmac ;
: string>sha1-hmac ( K string -- hmac ) : string>sha1-hmac ( K string -- hmac )
<string-reader> stream>sha1-hmac ; <string-reader> stream>sha1-hmac ;
@ -42,7 +42,7 @@ MEMO: opad ( -- seq ) 64 HEX: 5c <array> ;
[ init-hmac md5-hmac ] with-stream ; [ init-hmac md5-hmac ] with-stream ;
: file>md5-hmac ( K path -- hmac ) : file>md5-hmac ( K path -- hmac )
<file-reader> stream>md5-hmac ; binary <file-reader> stream>md5-hmac ;
: string>md5-hmac ( K string -- hmac ) : string>md5-hmac ( K string -- hmac )
<string-reader> stream>md5-hmac ; <string-reader> stream>md5-hmac ;

View File

@ -2,7 +2,8 @@
USING: kernel io io.binary io.files io.streams.string math USING: kernel io io.binary io.files io.streams.string math
math.functions math.parser namespaces splitting strings math.functions math.parser namespaces splitting strings
sequences crypto.common byte-arrays locals sequences.private ; sequences crypto.common byte-arrays locals sequences.private
io.encodings.binary ;
IN: crypto.md5 IN: crypto.md5
<PRIVATE <PRIVATE
@ -186,5 +187,5 @@ PRIVATE>
: string>md5 ( string -- byte-array ) <string-reader> stream>md5 ; : string>md5 ( string -- byte-array ) <string-reader> stream>md5 ;
: string>md5str ( string -- md5-string ) string>md5 hex-string ; : string>md5str ( string -- md5-string ) string>md5 hex-string ;
: file>md5 ( path -- byte-array ) <file-reader> stream>md5 ; : file>md5 ( path -- byte-array ) binary <file-reader> stream>md5 ;
: file>md5str ( path -- md5-string ) file>md5 hex-string ; : file>md5str ( path -- md5-string ) file>md5 hex-string ;

View File

@ -1,4 +1,4 @@
USING: arrays combinators crypto.common kernel io io.binary USING: arrays combinators crypto.common kernel io io.encodings.binary
io.files io.streams.string math.vectors strings sequences io.files io.streams.string math.vectors strings sequences
namespaces math parser sequences vectors namespaces math parser sequences vectors
hashtables ; hashtables ;
@ -123,7 +123,7 @@ SYMBOL: K
: string>sha1 ( string -- sha1 ) <string-reader> stream>sha1 ; : string>sha1 ( string -- sha1 ) <string-reader> stream>sha1 ;
: string>sha1str ( string -- str ) string>sha1 hex-string ; : string>sha1str ( string -- str ) string>sha1 hex-string ;
: string>sha1-bignum ( string -- n ) string>sha1 be> ; : string>sha1-bignum ( string -- n ) string>sha1 be> ;
: file>sha1 ( file -- sha1 ) <file-reader> stream>sha1 ; : file>sha1 ( file -- sha1 ) binary <file-reader> stream>sha1 ;
: string>sha1-interleave ( string -- seq ) : string>sha1-interleave ( string -- seq )
[ zero? ] left-trim [ zero? ] left-trim

View File

@ -3,11 +3,11 @@
USING: arrays definitions io kernel math USING: arrays definitions io kernel math
namespaces parser prettyprint sequences strings words namespaces parser prettyprint sequences strings words
editors io.files io.sockets io.streams.string io.binary editors io.files io.sockets io.streams.string io.binary
math.parser ; math.parser io.encodings.ascii ;
IN: editors.jedit IN: editors.jedit
: jedit-server-info ( -- port auth ) : jedit-server-info ( -- port auth )
home "/.jedit/server" path+ [ home "/.jedit/server" path+ ascii [
readln drop readln drop
readln string>number readln string>number
readln string>number readln string>number

View File

@ -5,7 +5,7 @@ furnace.validator hashtables heaps html.elements http
http.server.responders http.server.templating io.files kernel http.server.responders http.server.templating io.files kernel
math namespaces quotations sequences splitting words strings math namespaces quotations sequences splitting words strings
vectors webapps.callback continuations tuples classes vocabs vectors webapps.callback continuations tuples classes vocabs
html io ; html io io.encodings.binary ;
IN: furnace IN: furnace
: code>quotation ( word/quot -- quot ) : code>quotation ( word/quot -- quot )
@ -194,7 +194,7 @@ SYMBOL: model
</a> ; </a> ;
: send-resource ( name -- ) : send-resource ( name -- )
template-path get swap path+ resource-path <file-reader> template-path get swap path+ resource-path binary <file-reader>
stdio get stream-copy ; stdio get stream-copy ;
: render-link ( quot name -- ) : render-link ( quot name -- )

View File

@ -4,7 +4,7 @@
USING: alien arrays byte-arrays combinators USING: alien arrays byte-arrays combinators
graphics.viewer io io.binary io.files kernel libc math graphics.viewer io io.binary io.files kernel libc math
math.functions namespaces opengl opengl.gl prettyprint math.functions namespaces opengl opengl.gl prettyprint
sequences strings ui ui.gadgets.panes ; sequences strings ui ui.gadgets.panes io.encodings.binary ;
IN: graphics.bitmap IN: graphics.bitmap
! Currently can only handle 24bit bitmaps. ! Currently can only handle 24bit bitmaps.
@ -59,7 +59,7 @@ TUPLE: bitmap magic size reserved offset header-length width
dup color-index-length read swap set-bitmap-color-index ; dup color-index-length read swap set-bitmap-color-index ;
: load-bitmap ( path -- bitmap ) : load-bitmap ( path -- bitmap )
[ binary [
T{ bitmap } clone T{ bitmap } clone
dup parse-file-header dup parse-file-header
dup parse-bitmap-header dup parse-bitmap-header
@ -69,7 +69,7 @@ TUPLE: bitmap magic size reserved offset header-length width
raw-bitmap>string >byte-array over set-bitmap-array ; raw-bitmap>string >byte-array over set-bitmap-array ;
: save-bitmap ( bitmap path -- ) : save-bitmap ( bitmap path -- )
[ binary [
"BM" write "BM" write
dup bitmap-array length 14 + 40 + 4 >le write dup bitmap-array length 14 + 40 + 4 >le write
0 4 >le write 0 4 >le write

View File

@ -191,11 +191,11 @@ ARTICLE: "cookbook-io" "Input and output cookbook"
} }
"Print the lines of a file in sorted order:" "Print the lines of a file in sorted order:"
{ $code { $code
"\"lines.txt\" file-lines natural-sort [ print ] each" "utf8 \"lines.txt\" file-lines natural-sort [ print ] each"
} }
"Read 1024 bytes from a file:" "Read 1024 bytes from a file:"
{ $code { $code
"\"data.bin\" [ 1024 read ] with-file-reader" "\"data.bin\" binary [ 1024 read ] with-file-reader"
} }
"Convert a file of 4-byte cells from little to big endian or vice versa, by directly mapping it into memory:" "Convert a file of 4-byte cells from little to big endian or vice versa, by directly mapping it into memory:"
{ $code { $code

View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: assocs http kernel math math.parser namespaces sequences USING: assocs http kernel math math.parser namespaces sequences
io io.sockets io.streams.string io.files io.timeouts strings io io.sockets io.streams.string io.files io.timeouts strings
splitting continuations assocs.lib ; splitting continuations assocs.lib io.encodings.binary ;
IN: http.client IN: http.client
: parse-host ( url -- host port ) : parse-host ( url -- host port )
@ -71,7 +71,7 @@ DEFER: http-get-stream
: download-to ( url file -- ) : download-to ( url file -- )
#! Downloads the contents of a URL to a file. #! Downloads the contents of a URL to a file.
>r http-get-stream check-response >r http-get-stream check-response
r> <file-writer> stream-copy ; r> binary <file-writer> stream-copy ;
: download ( url -- ) : download ( url -- )
dup download-name download-to ; dup download-name download-to ;

View File

@ -1,5 +1,5 @@
USING: io io.files io.streams.string http.server.templating kernel tools.test USING: io io.files io.streams.string http.server.templating kernel tools.test
sequences ; sequences io.encodings.utf8 ;
IN: temporary IN: temporary
: test-template ( path -- ? ) : test-template ( path -- ? )
@ -8,7 +8,7 @@ IN: temporary
".fhtml" append resource-path ".fhtml" append resource-path
[ run-template-file ] with-string-writer [ run-template-file ] with-string-writer
] keep ] keep
".html" append resource-path file-contents = ; ".html" append resource-path utf8 file-contents = ;
[ t ] [ "example" test-template ] unit-test [ t ] [ "example" test-template ] unit-test
[ t ] [ "bug" test-template ] unit-test [ t ] [ "bug" test-template ] unit-test

View File

@ -4,7 +4,7 @@
USING: continuations sequences kernel parser namespaces io USING: continuations sequences kernel parser namespaces io
io.files io.streams.lines io.streams.string html html.elements io.files io.streams.lines io.streams.string html html.elements
source-files debugger combinators math quotations generic source-files debugger combinators math quotations generic
strings splitting ; strings splitting io.encodings.utf8 ;
IN: http.server.templating IN: http.server.templating
@ -82,7 +82,7 @@ DEFER: <% delimiter
templating-vocab use+ templating-vocab use+
dup source-file file set ! so that reload works properly dup source-file file set ! so that reload works properly
[ [
?resource-path file-contents ?resource-path utf8 file-contents
[ eval-template ] [ html-error. drop ] recover [ eval-template ] [ html-error. drop ] recover
] keep ] keep
] with-file-vocabs ] with-file-vocabs
@ -93,4 +93,4 @@ DEFER: <% delimiter
swap path+ run-template-file ; swap path+ run-template-file ;
: template-convert ( infile outfile -- ) : template-convert ( infile outfile -- )
[ run-template-file ] with-file-writer ; utf8 [ run-template-file ] with-file-writer ;

View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel math sequences kernel.private namespaces arrays io USING: kernel math sequences kernel.private namespaces arrays io
io.files splitting io.binary math.functions vectors quotations io.files splitting io.binary math.functions vectors quotations
combinators ; combinators io.encodings.binary ;
IN: icfp.2006 IN: icfp.2006
SYMBOL: regs SYMBOL: regs
@ -134,7 +134,7 @@ SYMBOL: open-arrays
[ run-op exec-loop ] unless ; [ run-op exec-loop ] unless ;
: load-platters ( path -- ) : load-platters ( path -- )
file-contents 4 group [ be> ] map binary file-contents 4 group [ be> ] map
0 arrays get set-nth ; 0 arrays get set-nth ;
: init ( path -- ) : init ( path -- )

View File

@ -3,7 +3,7 @@
USING: arrays combinators io io.binary io.files io.paths USING: arrays combinators io io.binary io.files io.paths
io.encodings.utf16 kernel math math.parser namespaces sequences io.encodings.utf16 kernel math math.parser namespaces sequences
splitting strings assocs unicode.categories ; splitting strings assocs unicode.categories io.encodings.binary ;
IN: id3 IN: id3
@ -107,20 +107,20 @@ C: <extended-header> extended-header
read-header read-frames <tag> ; read-header read-frames <tag> ;
: supported-version? ( version -- ? ) : supported-version? ( version -- ? )
[ 3 4 ] member? ; { 3 4 } member? ;
: read-id3v2 ( -- tag/f ) : read-id3v2 ( -- tag/f )
read1 dup supported-version? read1 dup supported-version?
[ (read-id3v2) ] [ drop f ] if ; [ (read-id3v2) ] [ drop f ] if ;
: id3v2? ( -- ? ) : id3v2? ( -- ? )
3 read "ID3" = ; 3 read "ID3" sequence= ;
: read-tag ( stream -- tag/f ) : read-tag ( stream -- tag/f )
id3v2? [ read-id3v2 ] [ f ] if ; id3v2? [ read-id3v2 ] [ f ] if ;
: id3v2 ( filename -- tag/f ) : id3v2 ( filename -- tag/f )
[ read-tag ] with-file-reader ; binary [ read-tag ] with-file-reader ;
: file? ( path -- ? ) : file? ( path -- ? )
stat 3drop not ; stat 3drop not ;
@ -135,7 +135,7 @@ C: <extended-header> extended-header
[ mp3? ] subset ; [ mp3? ] subset ;
: id3? ( file -- ? ) : id3? ( file -- ? )
[ id3v2? ] with-file-reader ; binary [ id3v2? ] with-file-reader ;
: id3s ( files -- id3s ) : id3s ( files -- id3s )
[ id3? ] subset ; [ id3? ] subset ;

View File

@ -1,9 +1,10 @@
USING: io io.mmap io.files kernel tools.test continuations sequences ; USING: io io.mmap io.files kernel tools.test continuations
sequences io.encodings.ascii ;
IN: temporary IN: temporary
[ "mmap-test-file.txt" resource-path delete-file ] ignore-errors [ "mmap-test-file.txt" resource-path delete-file ] ignore-errors
[ ] [ "mmap-test-file.txt" resource-path [ "12345" write ] with-file-writer ] unit-test [ ] [ "mmap-test-file.txt" resource-path ascii [ "12345" write ] with-file-writer ] unit-test
[ ] [ "mmap-test-file.txt" resource-path dup file-length [ CHAR: 2 0 pick set-nth drop ] with-mapped-file ] unit-test [ ] [ "mmap-test-file.txt" resource-path dup file-length [ CHAR: 2 0 pick set-nth drop ] with-mapped-file ] unit-test
[ 5 ] [ "mmap-test-file.txt" resource-path dup file-length [ length ] with-mapped-file ] unit-test [ 5 ] [ "mmap-test-file.txt" resource-path dup file-length [ length ] with-mapped-file ] unit-test
[ "22345" ] [ "mmap-test-file.txt" resource-path file-contents ] unit-test [ "22345" ] [ "mmap-test-file.txt" resource-path ascii file-contents ] unit-test
[ "mmap-test-file.txt" resource-path delete-file ] ignore-errors [ "mmap-test-file.txt" resource-path delete-file ] ignore-errors

View File

@ -1,6 +1,6 @@
USING: io.files io.sockets io kernel threads namespaces USING: io.files io.sockets io kernel threads namespaces
tools.test continuations strings byte-arrays sequences tools.test continuations strings byte-arrays sequences
prettyprint system ; prettyprint system io.encodings.binary ;
IN: temporary IN: temporary
! Unix domain stream sockets ! Unix domain stream sockets
@ -131,15 +131,15 @@ client-addr <datagram>
! Invalid parameter tests ! Invalid parameter tests
[ [
image [ stdio get accept ] with-file-reader image binary [ stdio get accept ] with-file-reader
] must-fail ] must-fail
[ [
image [ stdio get receive ] with-file-reader image binary [ stdio get receive ] with-file-reader
] must-fail ] must-fail
[ [
image [ image binary [
B{ 1 2 } server-addr B{ 1 2 } server-addr
stdio get send stdio get send
] with-file-reader ] with-file-reader

View File

@ -1,4 +1,4 @@
USING: kernel io io.files io.monitors ; USING: kernel io io.files io.monitors io.encodings.utf8 ;
IN: log-viewer IN: log-viewer
: read-lines ( stream -- ) : read-lines ( stream -- )
@ -9,6 +9,6 @@ IN: log-viewer
dup next-change 2drop over read-lines tail-file-loop ; dup next-change 2drop over read-lines tail-file-loop ;
: tail-file ( file -- ) : tail-file ( file -- )
dup <file-reader> dup read-lines dup utf8 <file-reader> dup read-lines
swap parent-directory f <monitor> swap parent-directory f <monitor>
tail-file-loop ; tail-file-loop ;

View File

@ -1,7 +1,8 @@
! Copyright (C) 2008 Slava Pestov. ! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: logging.analysis logging.server logging smtp io.sockets USING: logging.analysis logging.server logging smtp io.sockets
kernel io.files io.streams.string namespaces raptor.cron assocs ; kernel io.files io.streams.string namespaces raptor.cron assocs
io.encodings.utf8 ;
IN: logging.insomniac IN: logging.insomniac
SYMBOL: insomniac-smtp-host SYMBOL: insomniac-smtp-host
@ -11,7 +12,7 @@ SYMBOL: insomniac-recipients
: ?analyze-log ( service word-names -- string/f ) : ?analyze-log ( service word-names -- string/f )
>r log-path 1 log# dup exists? [ >r log-path 1 log# dup exists? [
file-lines r> [ analyze-log ] with-string-writer utf8 file-lines r> [ analyze-log ] with-string-writer
] [ ] [
r> 2drop f r> 2drop f
] if ; ] if ;

View File

@ -3,7 +3,7 @@
USING: namespaces kernel io calendar sequences io.files USING: namespaces kernel io calendar sequences io.files
io.sockets continuations prettyprint assocs math.parser io.sockets continuations prettyprint assocs math.parser
words debugger math combinators concurrency arrays init words debugger math combinators concurrency arrays init
math.ranges strings ; math.ranges strings io.encodings.utf8 ;
IN: logging.server IN: logging.server
: log-root ( -- string ) : log-root ( -- string )
@ -20,7 +20,7 @@ SYMBOL: log-files
: open-log-stream ( service -- stream ) : open-log-stream ( service -- stream )
log-path log-path
dup make-directories dup make-directories
1 log# <file-appender> ; 1 log# utf8 <file-appender> ;
: log-stream ( service -- stream ) : log-stream ( service -- stream )
log-files get [ open-log-stream ] cache ; log-files get [ open-log-stream ] cache ;

View File

@ -1,7 +1,8 @@
! Copyright (C) 2007 Adam Wendt. ! Copyright (C) 2007 Adam Wendt.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types byte-arrays io io.binary io.files kernel mad USING: alien alien.c-types byte-arrays io io.binary io.files kernel mad
namespaces prettyprint sbufs sequences tools.interpreter vars ; namespaces prettyprint sbufs sequences tools.interpreter vars
io.encodings.binary ;
IN: mad.api IN: mad.api
VARS: buffer-start buffer-length output-callback-var ; VARS: buffer-start buffer-length output-callback-var ;
@ -80,9 +81,6 @@ VARS: buffer-start buffer-length output-callback-var ;
: make-decoder ( -- decoder ) : make-decoder ( -- decoder )
"mad_decoder" malloc-object ; "mad_decoder" malloc-object ;
: malloc-file-contents ( path -- alien )
file-contents >byte-array malloc-byte-array ;
: mad-run ( -- int ) : mad-run ( -- int )
make-decoder [ mad-init ] keep MAD_DECODER_MODE_SYNC mad_decoder_run ; make-decoder [ mad-init ] keep MAD_DECODER_MODE_SYNC mad_decoder_run ;

View File

@ -1,4 +1,4 @@
USING: io io.files sequences xml xml.utilities ; USING: io io.files sequences xml xml.utilities io.encodings.utf8 ;
IN: msxml-to-csv IN: msxml-to-csv
: print-csv ( table -- ) [ "," join print ] each ; : print-csv ( table -- ) [ "," join print ] each ;
@ -13,6 +13,6 @@ IN: msxml-to-csv
] map ; ] map ;
: msxml>csv ( infile outfile -- ) : msxml>csv ( infile outfile -- )
[ utf8 [
file>xml (msxml>csv) print-csv file>xml (msxml>csv) print-csv
] with-file-writer ; ] with-file-writer ;

View File

@ -14,7 +14,8 @@ USING: kernel alien ogg ogg.vorbis ogg.theora io byte-arrays
sequences libc shuffle alien.c-types system openal math sequences libc shuffle alien.c-types system openal math
namespaces threads shuffle opengl arrays ui.gadgets.worlds namespaces threads shuffle opengl arrays ui.gadgets.worlds
combinators math.parser ui.gadgets ui.render opengl.gl ui combinators math.parser ui.gadgets ui.render opengl.gl ui
continuations io.files hints combinators.lib sequences.lib ; continuations io.files hints combinators.lib sequences.lib
io.encodings.binary ;
IN: ogg.player IN: ogg.player
@ -612,7 +613,7 @@ M: theora-gadget draw-gadget* ( gadget -- )
<player> play-ogg ; <player> play-ogg ;
: play-vorbis-file ( filename -- ) : play-vorbis-file ( filename -- )
<file-reader> play-vorbis-stream ; binary <file-reader> play-vorbis-stream ;
: play-theora-stream ( stream -- ) : play-theora-stream ( stream -- )
<player> <player>
@ -620,5 +621,5 @@ M: theora-gadget draw-gadget* ( gadget -- )
play-ogg ; play-ogg ;
: play-theora-file ( filename -- ) : play-theora-file ( filename -- )
<file-reader> play-theora-stream ; binary <file-reader> play-theora-stream ;

View File

@ -1,6 +1,6 @@
IN: temporary IN: temporary
USING: arrays io kernel porter-stemmer sequences tools.test USING: arrays io kernel porter-stemmer sequences tools.test
io.files ; io.files io.encodings.utf8 ;
[ 0 ] [ "xa" consonant-seq ] unit-test [ 0 ] [ "xa" consonant-seq ] unit-test
[ 0 ] [ "xxaa" consonant-seq ] unit-test [ 0 ] [ "xxaa" consonant-seq ] unit-test
@ -56,7 +56,7 @@ io.files ;
[ "hell" ] [ "hell" step5 "" like ] unit-test [ "hell" ] [ "hell" step5 "" like ] unit-test
[ "mate" ] [ "mate" step5 "" like ] unit-test [ "mate" ] [ "mate" step5 "" like ] unit-test
: resource-lines resource-path file-lines ; : resource-lines resource-path utf8 file-lines ;
[ { } ] [ [ { } ] [
"extra/porter-stemmer/test/voc.txt" resource-lines "extra/porter-stemmer/test/voc.txt" resource-lines

View File

@ -1,7 +1,7 @@
! Copyright (c) 2008 Aaron Schaefer. ! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: ascii io.files kernel math math.functions namespaces USING: ascii io.files kernel math math.functions namespaces
project-euler.common sequences sequences.lib splitting ; project-euler.common sequences sequences.lib splitting io.encodings.ascii ;
IN: project-euler.042 IN: project-euler.042
! http://projecteuler.net/index.php?section=problems&id=42 ! http://projecteuler.net/index.php?section=problems&id=42
@ -31,7 +31,7 @@ IN: project-euler.042
: source-042 ( -- seq ) : source-042 ( -- seq )
"extra/project-euler/042/words.txt" resource-path "extra/project-euler/042/words.txt" resource-path
file-contents [ quotable? ] subset "," split ; ascii file-contents [ quotable? ] subset "," split ;
: (triangle-upto) ( limit n -- ) : (triangle-upto) ( limit n -- )
2dup nth-triangle > [ 2dup nth-triangle > [

View File

@ -1,6 +1,7 @@
! Copyright (c) 2007 Samuel Tardieu, Aaron Schaefer. ! Copyright (c) 2007 Samuel Tardieu, Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: io.files math.parser namespaces project-euler.common sequences splitting ; USING: io.files math.parser namespaces project-euler.common
io.encodings.ascii sequences splitting ;
IN: project-euler.067 IN: project-euler.067
! http://projecteuler.net/index.php?section=problems&id=67 ! http://projecteuler.net/index.php?section=problems&id=67
@ -38,7 +39,7 @@ IN: project-euler.067
: source-067 ( -- seq ) : source-067 ( -- seq )
"extra/project-euler/067/triangle.txt" resource-path "extra/project-euler/067/triangle.txt" resource-path
file-lines [ " " split [ string>number ] map ] map ; ascii file-lines [ " " split [ string>number ] map ] map ;
PRIVATE> PRIVATE>

View File

@ -1,6 +1,7 @@
! Copyright (c) 2008 Aaron Schaefer. ! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: assocs hashtables io.files kernel math math.parser namespaces sequences ; USING: assocs hashtables io.files kernel math math.parser namespaces
io.encodings.ascii sequences ;
IN: project-euler.079 IN: project-euler.079
! http://projecteuler.net/index.php?section=problems&id=79 ! http://projecteuler.net/index.php?section=problems&id=79
@ -26,7 +27,7 @@ IN: project-euler.079
<PRIVATE <PRIVATE
: source-079 ( -- seq ) : source-079 ( -- seq )
"extra/project-euler/079/keylog.txt" resource-path file-lines ; "extra/project-euler/079/keylog.txt" resource-path ascii file-lines ;
: >edges ( seq -- seq ) : >edges ( seq -- seq )
[ [

View File

@ -42,10 +42,10 @@ SYMBOL: networking-hook
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
USING: io io.files io.streams.lines io.streams.plain io.streams.duplex USING: io io.files io.streams.lines io.streams.plain io.streams.duplex
listener ; listener io.encodings.utf8 ;
: tty-listener ( tty -- ) : tty-listener ( tty -- )
[ <file-reader> ] [ <file-writer> ] bi <duplex-stream> [ utf8 <file-reader> ] [ utf8 <file-writer> ] bi <duplex-stream>
[ listener ] with-stream ; [ listener ] with-stream ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

View File

@ -1,9 +1,9 @@
USING: rss io kernel io.files tools.test ; USING: rss io kernel io.files tools.test io.encodings.utf8 ;
: load-news-file ( filename -- feed ) : load-news-file ( filename -- feed )
#! Load an news syndication file and process it, returning #! Load an news syndication file and process it, returning
#! it as an feed tuple. #! it as an feed tuple.
<file-reader> read-feed ; utf8 <file-reader> read-feed ;
[ T{ [ T{
feed feed

View File

@ -1,7 +1,7 @@
USING: combinators io io.files io.streams.duplex USING: combinators io io.files io.streams.duplex
io.streams.string kernel math math.parser continuations io.streams.string kernel math math.parser continuations
namespaces pack prettyprint sequences strings system namespaces pack prettyprint sequences strings system
hexdump tools.interpreter ; hexdump tools.interpreter io.encodings.binary ;
IN: tar IN: tar
: zero-checksum 256 ; : zero-checksum 256 ;
@ -94,7 +94,7 @@ TUPLE: unimplemented-typeflag header ;
! Normal file ! Normal file
: typeflag-0 : typeflag-0
tar-header-name tar-path+ <file-writer> tar-header-name tar-path+ binary <file-writer>
[ read-data-blocks ] keep dispose ; [ read-data-blocks ] keep dispose ;
! Hard link ! Hard link
@ -236,7 +236,7 @@ TUPLE: unimplemented-typeflag header ;
] when* ; ] when* ;
: parse-tar ( path -- obj ) : parse-tar ( path -- obj )
[ binary [
"tar-test" resource-path base-dir set "tar-test" resource-path base-dir set
global [ nl nl nl "Starting to parse .tar..." print flush ] bind global [ nl nl nl "Starting to parse .tar..." print flush ] bind
global [ "Expanding to: " write base-dir get . flush ] bind global [ "Expanding to: " write base-dir get . flush ] bind

View File

@ -5,12 +5,12 @@ words vocabs vocabs.loader definitions parser continuations
inspector debugger io io.styles io.streams.lines hashtables inspector debugger io io.styles io.streams.lines hashtables
sorting prettyprint source-files arrays combinators strings sorting prettyprint source-files arrays combinators strings
system math.parser help.markup help.topics help.syntax system math.parser help.markup help.topics help.syntax
help.stylesheet memoize ; help.stylesheet memoize io.encodings.utf8 ;
IN: tools.browser IN: tools.browser
MEMO: (vocab-file-contents) ( path -- lines ) MEMO: (vocab-file-contents) ( path -- lines )
?resource-path dup exists? ?resource-path dup exists?
[ file-lines ] [ drop f ] if ; [ utf8 file-lines ] [ drop f ] if ;
: vocab-file-contents ( vocab name -- seq ) : vocab-file-contents ( vocab name -- seq )
vocab-path+ dup [ (vocab-file-contents) ] when ; vocab-path+ dup [ (vocab-file-contents) ] when ;
@ -18,7 +18,7 @@ MEMO: (vocab-file-contents) ( path -- lines )
: set-vocab-file-contents ( seq vocab name -- ) : set-vocab-file-contents ( seq vocab name -- )
dupd vocab-path+ [ dupd vocab-path+ [
?resource-path ?resource-path
[ [ print ] each ] with-file-writer utf8 [ [ print ] each ] with-file-writer
] [ ] [
"The " swap vocab-name "The " swap vocab-name
" vocabulary was not loaded from the file system" " vocabulary was not loaded from the file system"

View File

@ -46,8 +46,8 @@ IN: tools.deploy.macosx
] H{ } make-assoc print-plist ; ] H{ } make-assoc print-plist ;
: create-app-plist ( vocab bundle-name -- ) : create-app-plist ( vocab bundle-name -- )
dup "Contents/Info.plist" path+ <file-writer> dup "Contents/Info.plist" path+
[ print-app-plist ] with-stream ; utf8 [ print-app-plist ] with-file-writer ;
: create-app-dir ( vocab bundle-name -- vm ) : create-app-dir ( vocab bundle-name -- vm )
dup "Frameworks" copy-bundle-dir dup "Frameworks" copy-bundle-dir

View File

@ -2,7 +2,7 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: io.files io words alien kernel math.parser alien.syntax USING: io.files io words alien kernel math.parser alien.syntax
io.launcher system assocs arrays sequences namespaces qualified io.launcher system assocs arrays sequences namespaces qualified
system math windows.kernel32 generator.fixup ; system math windows.kernel32 generator.fixup io.encodings.ascii ;
IN: tools.disassembler IN: tools.disassembler
: in-file "gdb-in.txt" resource-path ; : in-file "gdb-in.txt" resource-path ;
@ -15,7 +15,7 @@ M: word make-disassemble-cmd
word-xt code-format - 2array make-disassemble-cmd ; word-xt code-format - 2array make-disassemble-cmd ;
M: pair make-disassemble-cmd M: pair make-disassemble-cmd
in-file [ in-file ascii [
"attach " write "attach " write
current-process-handle number>string print current-process-handle number>string print
"disassemble " write "disassemble " write
@ -28,7 +28,7 @@ M: pair make-disassemble-cmd
out-file +stdout+ set out-file +stdout+ set
[ "gdb" , "-x" , in-file , "-batch" , ] { } make +arguments+ set [ "gdb" , "-x" , in-file , "-batch" , ] { } make +arguments+ set
] { } make-assoc run-process drop ] { } make-assoc run-process drop
out-file file-lines ; out-file ascii file-lines ;
: tabs>spaces ( str -- str' ) : tabs>spaces ( str -- str' )
{ { CHAR: \t CHAR: \s } } substitute ; { { CHAR: \t CHAR: \s } } substitute ;

View File

@ -73,7 +73,7 @@ M: freetype-renderer free-fonts ( world -- )
: open-face ( font style -- face ) : open-face ( font style -- face )
ttf-name ttf-path ttf-name ttf-path
dup file-contents >byte-array malloc-byte-array dup malloc-file-contents
swap file-length swap file-length
(open-face) ; (open-face) ;

View File

@ -1,7 +1,7 @@
USING: unicode.categories kernel math combinators splitting USING: unicode.categories kernel math combinators splitting
sequences math.parser io.files io assocs arrays namespaces sequences math.parser io.files io assocs arrays namespaces
combinators.lib assocs.lib math.ranges unicode.normalize combinators.lib assocs.lib math.ranges unicode.normalize
unicode.syntax unicode.data compiler.units alien.syntax ; unicode.syntax unicode.data compiler.units alien.syntax io.encodings.ascii ;
IN: unicode.breaks IN: unicode.breaks
C-ENUM: Any L V T Extend Control CR LF graphemes ; C-ENUM: Any L V T Extend Control CR LF graphemes ;
@ -30,7 +30,7 @@ CATEGORY: grapheme-control Zl Zp Cc Cf ;
concat >set ; concat >set ;
: other-extend-lines ( -- lines ) : other-extend-lines ( -- lines )
"extra/unicode/PropList.txt" resource-path file-lines ; "extra/unicode/PropList.txt" resource-path ascii file-lines ;
VALUE: other-extend VALUE: other-extend

View File

@ -1,6 +1,6 @@
USING: assocs math kernel sequences io.files hashtables USING: assocs math kernel sequences io.files hashtables
quotations splitting arrays math.parser combinators.lib hash2 quotations splitting arrays math.parser combinators.lib hash2
byte-arrays words namespaces words compiler.units parser ; byte-arrays words namespaces words compiler.units parser io.encodings.ascii ;
IN: unicode.data IN: unicode.data
<< <<
@ -21,7 +21,7 @@ IN: unicode.data
! Loading data from UnicodeData.txt ! Loading data from UnicodeData.txt
: data ( filename -- data ) : data ( filename -- data )
file-lines [ ";" split ] map ; ascii file-lines [ ";" split ] map ;
: load-data ( -- data ) : load-data ( -- data )
"extra/unicode/UnicodeData.txt" resource-path data ; "extra/unicode/UnicodeData.txt" resource-path data ;

View File

@ -3,7 +3,7 @@
USING: calendar html io io.files kernel math math.parser USING: calendar html io io.files kernel math math.parser
http.server.responders http.server.templating namespaces parser http.server.responders http.server.templating namespaces parser
sequences strings assocs hashtables debugger http.mime sorting sequences strings assocs hashtables debugger http.mime sorting
html.elements logging ; html.elements logging io.encodings.binary ;
IN: webapps.file IN: webapps.file
@ -37,7 +37,7 @@ SYMBOL: serve-file-hook
[ [
dupd dupd
file-response file-response
<file-reader> stdio get stream-copy binary <file-reader> stdio get stream-copy
] serve-file-hook set-global ] serve-file-hook set-global
: serve-static ( filename mime-type -- ) : serve-static ( filename mime-type -- )

View File

@ -1,7 +1,7 @@
! Copyright (C) 2007 Slava Pestov. ! Copyright (C) 2007 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: io.files namespaces webapps.file http.server.responders USING: io.files namespaces webapps.file http.server.responders
xmode.code2html kernel html sequences ; xmode.code2html kernel html sequences io.encodings.utf8 ;
IN: webapps.source IN: webapps.source
! This responder is a potential security problem. Make sure you ! This responder is a potential security problem. Make sure you
@ -15,7 +15,7 @@ IN: webapps.source
: source-responder ( path mime-type -- ) : source-responder ( path mime-type -- )
drop drop
serving-html serving-html
[ dup <file-reader> htmlize-stream ] with-html-stream ; [ dup utf8 <file-reader> htmlize-stream ] with-html-stream ;
global [ global [
! Serve up our own source code ! Serve up our own source code

View File

@ -3,7 +3,7 @@
USING: io io.streams.string io.files kernel math namespaces USING: io io.streams.string io.files kernel math namespaces
prettyprint sequences arrays generic strings vectors prettyprint sequences arrays generic strings vectors
xml.char-classes xml.data xml.errors xml.tokenize xml.writer xml.char-classes xml.data xml.errors xml.tokenize xml.writer
xml.utilities state-parser assocs ascii ; xml.utilities state-parser assocs ascii io.encodings.utf8 ;
IN: xml IN: xml
! -- Overall parser with data tree ! -- Overall parser with data tree
@ -167,7 +167,8 @@ TUPLE: pull-xml scope ;
<string-reader> read-xml ; <string-reader> read-xml ;
: file>xml ( filename -- xml ) : file>xml ( filename -- xml )
<file-reader> read-xml ; ! Autodetect encoding!
utf8 <file-reader> read-xml ;
: xml-reprint ( string -- ) : xml-reprint ( string -- )
string>xml print-xml ; string>xml print-xml ;

View File

@ -1,6 +1,6 @@
USING: xmode.loader xmode.utilities xmode.rules namespaces USING: xmode.loader xmode.utilities xmode.rules namespaces
strings splitting assocs sequences kernel io.files xml memoize strings splitting assocs sequences kernel io.files xml memoize
words globs combinators ; words globs combinators io.encodings.utf8 ;
IN: xmode.catalog IN: xmode.catalog
TUPLE: mode file file-name-glob first-line-glob ; TUPLE: mode file file-name-glob first-line-glob ;
@ -25,7 +25,7 @@ TAGS>
: load-catalog ( -- modes ) : load-catalog ( -- modes )
"extra/xmode/modes/catalog" resource-path "extra/xmode/modes/catalog" resource-path
<file-reader> read-xml parse-modes-tag ; file>xml parse-modes-tag ;
: modes ( -- assoc ) : modes ( -- assoc )
\ modes get-global [ \ modes get-global [
@ -38,7 +38,7 @@ TAGS>
MEMO: (load-mode) ( name -- rule-sets ) MEMO: (load-mode) ( name -- rule-sets )
modes at mode-file modes at mode-file
"extra/xmode/modes/" swap append "extra/xmode/modes/" swap append
resource-path <file-reader> parse-mode ; resource-path utf8 <file-reader> parse-mode ;
SYMBOL: rule-sets SYMBOL: rule-sets

View File

@ -1,5 +1,5 @@
USING: xmode.tokens xmode.marker xmode.catalog kernel html html.elements io USING: xmode.tokens xmode.marker xmode.catalog kernel html html.elements io
io.files sequences words ; io.files sequences words io.encodings.utf8 ;
IN: xmode.code2html IN: xmode.code2html
: htmlize-tokens ( tokens -- ) : htmlize-tokens ( tokens -- )
@ -20,7 +20,7 @@ IN: xmode.code2html
: default-stylesheet ( -- ) : default-stylesheet ( -- )
<style> <style>
"extra/xmode/code2html/stylesheet.css" "extra/xmode/code2html/stylesheet.css"
resource-path file-contents write resource-path utf8 file-contents write
</style> ; </style> ;
: htmlize-stream ( path stream -- ) : htmlize-stream ( path stream -- )
@ -40,5 +40,5 @@ IN: xmode.code2html
</html> ; </html> ;
: htmlize-file ( path -- ) : htmlize-file ( path -- )
dup <file-reader> over ".html" append <file-writer> dup utf8 <file-reader> over ".html" append utf8 <file-writer>
[ htmlize-stream ] with-stream ; [ htmlize-stream ] with-stream ;

View File

@ -6,6 +6,6 @@ USING: tools.test yahoo kernel io.files xml sequences ;
"Official Foo Fighters" "Official Foo Fighters"
"http://www.foofighters.com/" "http://www.foofighters.com/"
"Official site with news, tour dates, discography, store, community, and more." "Official site with news, tour dates, discography, store, community, and more."
} ] [ "extra/yahoo/test-results.xml" resource-path <file-reader> read-xml parse-yahoo first ] unit-test } ] [ "extra/yahoo/test-results.xml" resource-path file>xml parse-yahoo first ] unit-test
[ "http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=Factor-search&query=hi&results=1" ] [ "hi" 1 query ] unit-test [ "http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=Factor-search&query=hi&results=1" ] [ "hi" 1 query ] unit-test