path>> ".xml" append
[ ]
[ file-info modified>> ]
- [ utf8 <file-reader> read-xml compile-template ] tri
+ [ file>xml compile-template ] tri
\ cached-template boa ;
\ load-template DEBUG add-input-logging
: encoding-file ( file-name -- stream )
"vocab:io/encodings/8-bit/" swap ".TXT"
- 3append ascii <file-reader> ;
+ 3append ;
: process-contents ( lines -- assoc )
[ "#" split1 drop ] map harvest
: ch>byte ( assoc -- newassoc )
[ swap ] assoc-map >hashtable ;
-: parse-file ( stream -- byte>ch ch>byte )
- lines process-contents
+: parse-file ( path -- byte>ch ch>byte )
+ ascii file-lines process-contents
[ byte>ch ] [ ch>byte ] bi ;
SYMBOL: 8-bit-encodings
dup e>n-table get-global at [ ] [ missing-name ] ?if ;
<PRIVATE
-: parse-iana ( stream -- synonym-set )
- lines { "" } split [
+: parse-iana ( file -- synonym-set )
+ utf8 file-lines { "" } split [
[ " " split ] map
[ first { "Name:" "Alias:" } member? ] filter
[ second ] map { "None" } diff
] map harvest ;
-: make-aliases ( stream -- n>e )
+: make-aliases ( file -- n>e )
parse-iana [ [ first ] [ ] bi ] H{ } map>assoc ;
: initial-n>e ( -- assoc )
PRIVATE>
"vocab:io/encodings/iana/character-sets"
-utf8 <file-reader> make-aliases aliases set-global
+make-aliases aliases set-global
n>e-table [ initial-n>e ] initialize
e>n-table [ initial-e>n ] initialize
";" split1 [ [ blank? ] trim ] bi@\r
[ " " split [ hex> ] "" map-as ] [ parse-weight ] bi* ;\r
\r
-: parse-ducet ( stream -- ducet )\r
- lines filter-comments\r
+: parse-ducet ( file -- ducet )\r
+ ascii file-lines filter-comments\r
[ parse-line ] H{ } map>assoc ;\r
\r
-"vocab:unicode/collation/allkeys.txt"\r
-ascii <file-reader> parse-ducet to: ducet\r
+"vocab:unicode/collation/allkeys.txt" parse-ducet to: ducet\r
\r
! Fix up table for long contractions\r
: help-one ( assoc key -- )\r
SYMBOL: interned
-: parse-script ( stream -- assoc )
+: parse-script ( filename -- assoc )
! assoc is code point/range => name
- lines filter-comments [ split-; ] map ;
+ ascii file-lines filter-comments [ split-; ] map ;
: range, ( value key -- )
swap interned get
[ expand-ranges ] with-variable ;
: load-script ( filename -- table )
- ascii <file-reader> parse-script process-script ;
+ parse-script process-script ;
[ name>char [ "Invalid character" throw ] unless* ]
name>char-hook set-global
MEMO: (load-mode) ( name -- rule-sets )
modes at [
file>>
- "vocab:xmode/modes/" prepend
- utf8 <file-reader> parse-mode
+ "vocab:xmode/modes/" prepend parse-mode
] [
"text" (load-mode)
] if* ;
[ merge-rule-set-props ] with each
] when* ;
-: parse-mode ( stream -- rule-sets )
- read-xml parse-mode-tag ;
+: parse-mode ( filename -- rule-sets )
+ file>xml parse-mode-tag ;
IN: io.streams.encodings.tests
[ { } ]
-[ "vocab:io/test/empty-file.txt" ascii <file-reader> lines ]
+[ "vocab:io/test/empty-file.txt" ascii file-lines ]
unit-test
-: lines-test ( stream -- line1 line2 )
- [ readln readln ] with-input-stream ;
+: lines-test ( file encoding -- line1 line2 )
+ [ readln readln ] with-file-reader ;
[
"This is a line."
"This is another line."
] [
"vocab:io/test/windows-eol.txt"
- ascii <file-reader> lines-test
+ ascii lines-test
] unit-test
[
"This is another line."
] [
"vocab:io/test/mac-os-eol.txt"
- ascii <file-reader> lines-test
+ ascii lines-test
] unit-test
[
"This is another line."
] [
"vocab:io/test/unix-eol.txt"
- ascii <file-reader> lines-test
+ ascii lines-test
] unit-test
[
[
"This is a line.\rThis is another line.\r"
] [
- "vocab:io/test/mac-os-eol.txt" latin1 <file-reader>
- [ 500 read ] with-input-stream
+ "vocab:io/test/mac-os-eol.txt" latin1
+ [ 500 read ] with-file-reader
] unit-test
[
255
] [
- "vocab:io/test/binary.txt" latin1 <file-reader>
- [ read1 ] with-input-stream >fixnum
+ "vocab:io/test/binary.txt" latin1
+ [ read1 ] with-file-reader >fixnum
] unit-test
[ ] [
] [
[
"separator-test.txt" temp-file
- latin1 <file-reader> [
+ latin1 [
"J" read-until 2array ,
"i" read-until 2array ,
"X" read-until 2array ,
- ] with-input-stream
+ ] with-file-reader
] { } make
] unit-test
: xml-benchmark ( -- )
"vocab:xmode/modes/" [
- [ utf8 <file-reader> read-xml drop ] each
+ [ file>xml drop ] each
] with-directory-files ;
MAIN: xml-benchmark
first-zip name state latitude longitude gmt-offset dst-offset ;
MEMO: cities ( -- seq )
- "resource:extra/usa-cities/zipcode.csv" ascii <file-reader>
- csv rest-slice [
+ "resource:extra/usa-cities/zipcode.csv" ascii file>csv
+ rest-slice [
[
{
[ string>number ]