]> gitweb.factorcode.org Git - factor.git/commitdiff
io.encodings: use new latin1 instead of 8-bit encoding from file.
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 28 Feb 2018 16:55:15 +0000 (08:55 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 28 Feb 2018 16:56:01 +0000 (08:56 -0800)
20 files changed:
basis/ftp/server/server.factor
basis/http/client/client-docs.factor
basis/http/http-tests.factor
basis/io/encodings/8-bit/8-bit-tests.factor
basis/io/encodings/8-bit/8-bit.factor
basis/io/sockets/secure/openssl/openssl.factor
basis/io/streams/limited/limited-tests.factor
basis/quoted-printable/quoted-printable-tests.factor
basis/tools/deploy/test/4/4.factor
core/alien/strings/strings-tests.factor
core/alien/strings/strings.factor
core/io/files/files-tests.factor
extra/geobytes/geobytes.factor
extra/graphviz/graphviz-tests.factor
extra/graphviz/render/render-docs.factor
extra/graphviz/render/render.factor
extra/images/bitmap/bitmap.factor
extra/images/png/png.factor
extra/io/encodings/detect/detect-tests.factor
extra/io/encodings/detect/detect.factor

index dbf7a6affbb05c857d4d268d637ff55b2628fea9..1bd87be39347312765194b16d6d88123ef949dd8 100644 (file)
@@ -3,7 +3,7 @@
 USING: accessors calendar calendar.format classes combinators
 combinators.short-circuit concurrency.promises continuations
 destructors ftp io io.directories io.encodings
-io.encodings.8-bit io.encodings.binary io.encodings.utf8
+io.encodings.binary io.encodings.latin1 io.encodings.utf8
 io.files io.files.info io.pathnames io.servers io.sockets
 io.streams.string io.timeouts kernel logging math math.bitwise
 math.parser namespaces sequences simple-tokenizer splitting
index a6e7996fd53fcd4fedd6c415868754cafe929251..d846693adb938b67e85d04a6530712ee68513b6a 100644 (file)
@@ -1,6 +1,6 @@
 USING: assocs byte-arrays destructors help.markup help.syntax http
 http.client.post-data.private http.client.private
-io.encodings.8-bit io.encodings.binary io.pathnames kernel
+io.encodings.binary io.encodings.latin1 io.pathnames kernel
 sequences strings urls urls.encoding ;
 IN: http.client
 
index ab83ba1f86a9889275ae0a22a472fffc826c79d1..fc6a896c653c641c18a7c797dad92635a03b9246 100644 (file)
@@ -1,6 +1,6 @@
 USING: destructors http http.server http.server.requests http.client
 http.client.private tools.test multiline fry io.streams.string io.crlf
-io.encodings.utf8 io.encodings.8-bit io.encodings.binary io.encodings.string
+io.encodings.utf8 io.encodings.latin1 io.encodings.binary io.encodings.string
 io.encodings.ascii kernel arrays splitting sequences assocs io.sockets db
 db.sqlite make continuations urls hashtables accessors namespaces xml.data
 random combinators.short-circuit literals ;
index 758b0ef48be142d901215ee0f590b019d14284d7..d6309b5656c3a4e82dda0835a439a6ab0d391d59 100644 (file)
@@ -11,3 +11,5 @@ io.encodings.8-bit.private strings tools.test ;
 
 { t } [ \ latin1 8-bit-encoding? ] unit-test
 { "bar" } [ "bar" \ latin1 decode ] unit-test
+
+{ { 0x221a 0x00b1 0x0040 } } [ B{ 0xfb 0xf1 0x40 } cp437 decode >array ] unit-test
index e2ac549f8cef2a6be876ad141276aeb9dbc3a2f8..73e17ba46caecc389a99efd020a0f901c4380154 100644 (file)
@@ -1,8 +1,8 @@
 ! Copyright (C) 2008 Daniel Ehrenberg, Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs biassocs classes.mixin classes.singleton
-fry io io.encodings io.encodings.iana kernel lexer namespaces
-parser sequences simple-flat-file ;
+USING: accessors assocs biassocs classes.singleton generic io
+io.encodings io.encodings.iana kernel lexer parser sequences
+simple-flat-file words ;
 IN: io.encodings.8-bit
 
 <<
@@ -11,41 +11,28 @@ IN: io.encodings.8-bit
 : encoding-file ( file-name -- stream )
     "vocab:io/encodings/8-bit/" ".TXT" surround ;
 
-SYMBOL: 8-bit-encodings
-8-bit-encodings [ H{ } clone ] initialize
-
-TUPLE: 8-bit { biassoc biassoc read-only } ;
+TUPLE: 8-bit { table biassoc read-only } ;
 
 : 8-bit-encode ( char 8-bit -- byte )
-    biassoc>> value-at [ encode-error ] unless* ; inline
+    table>> value-at [ encode-error ] unless* ; inline
 
 M: 8-bit encode-char
     swap [ 8-bit-encode ] dip stream-write1 ;
 
 M: 8-bit decode-char
-    swap stream-read1
-    [ swap biassoc>> at [ replacement-char ] unless* ]
-    [ drop f ] if* ;
-
-MIXIN: 8-bit-encoding
-
-M: 8-bit-encoding <encoder>
-    8-bit-encodings get-global at <encoder> ;
-
-M: 8-bit-encoding <decoder>
-    8-bit-encodings get-global at <decoder> ;
+    swap stream-read1 [
+        swap table>> at [ replacement-char ] unless*
+    ] [ drop f ] if* ;
 
 : create-encoding ( name -- word )
-    create-word-in
-    [ define-singleton-class ]
-    [ 8-bit-encoding add-mixin-instance ]
-    [ ] tri ;
+    create-word-in dup define-singleton-class ;
 
 : load-encoding ( name iana-name file-name -- )
     [ create-encoding dup ]
     [ register-encoding ]
     [ encoding-file load-codetable-file 8-bit boa ] tri*
-    swap 8-bit-encodings get-global set-at ;
+    [ [ \ <encoder> create-method ] dip [ nip <encoder> ] curry define ]
+    [ [ \ <decoder> create-method ] dip [ nip <decoder> ] curry define ] 2bi ;
 
 PRIVATE>
 
@@ -75,7 +62,7 @@ SYNTAX: 8-BIT: scan-token scan-token scan-token load-encoding ;
 8-BIT: latin/greek ISO_8859-7:1987 8859-7
 8-BIT: latin/hebrew ISO_8859-8:1988 8859-8
 8-BIT: latin/thai TIS-620 8859-11
-8-BIT: latin1 ISO_8859-1:1987 8859-1
+8-BIT: latin1 ISO_8859-1:1987 8859-1
 8-BIT: latin2 ISO_8859-2:1987 8859-2
 8-BIT: latin3 ISO_8859-3:1988 8859-3
 8-BIT: latin4 ISO_8859-4:1988 8859-4
index 9d1fb96f77a09af2cccadb07950d52c671b8e2e1..7ee03d3adf22e11475c2ef9fda98bf4fd5fb0e89 100644 (file)
@@ -3,7 +3,7 @@
 USING: accessors alien alien.c-types alien.data alien.enums
 alien.strings assocs byte-arrays classes.struct combinators
 combinators.short-circuit destructors fry io io.backend
-io.binary io.buffers io.encodings.8-bit io.encodings.utf8
+io.binary io.buffers io.encodings.latin1 io.encodings.utf8
 io.files io.pathnames io.ports io.sockets io.sockets.secure
 io.timeouts kernel libc locals math math.functions math.order
 math.parser memoize namespaces openssl openssl.libcrypto
index 59a7530c1f47426be43f4471599087fb9ab6d838..643776107914e9712d8d8bbb10947c8d03b1b806 100644 (file)
@@ -1,4 +1,4 @@
-USING: destructors io io.encodings io.encodings.8-bit
+USING: destructors io io.encodings io.encodings.latin1
 io.encodings.ascii io.encodings.binary io.encodings.string
 io.encodings.utf8 io.files io.pipes io.streams.byte-array
 io.streams.duplex io.streams.limited io.streams.string kernel
index 2e51891fbbffced1f4ab2a6eb8fdca2839874d83..c389045aba2c946c65e0ae62a4337114f35018cf 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2009 Daniel Ehrenberg
 ! See http://factorcode.org/license.txt for BSD license.
 USING: tools.test quoted-printable io.encodings.string
-sequences splitting kernel io.encodings.8-bit ;
+sequences splitting kernel io.encodings.latin1 ;
 IN: quoted-printable.tests
 
 { "José was the
index 2527dd5a1736638916f565104752411bc4147e4e..30f5b8c4dac1d448bb7536eb2856599908f9b040 100644 (file)
@@ -2,6 +2,6 @@ USING: io.encodings.string kernel io.encodings.8-bit ;
 IN: tools.deploy.test.4
 
 : deploy-test-4 ( -- )
-    "xyzthg" latin7 encode drop ;
+    "xyzthg" latin7 encode drop ;
 
 MAIN: deploy-test-4
index dda7aafd5858d5a4d9bc79184d72b03f46e7d8ba..03d29738be4bd159ae444ba5b7be68a5ff90e8b9 100644 (file)
@@ -1,6 +1,6 @@
 USING: alien.strings alien.c-types alien.data tools.test
 kernel libc io.encodings.utf8 io.encodings.utf16 io.encodings.utf16n
-io.encodings.ascii alien io.encodings.string io.encodings.8-bit ;
+io.encodings.ascii alien io.encodings.string io.encodings.latin1 ;
 
 { "\u0000ff" }
 [ "\u0000ff" latin1 string>alien latin1 alien>string ]
index 74fdfb56370214cd2dc0cf39837830b1eca5d324..e2bb70bcd4821e7dd5256b26af2d064250b02d61 100644 (file)
@@ -1,10 +1,10 @@
 ! Copyright (C) 2008, 2011 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors alien arrays byte-arrays byte-vectors init io
-io.encodings io.encodings.ascii io.encodings.utf16n
-io.encodings.utf8 io.streams.memory kernel kernel.private math
-namespaces sequences sequences.private strings strings.private
-system system.private ;
+io.encodings io.encodings.ascii io.encodings.latin1
+io.encodings.utf16n io.encodings.utf8 io.streams.memory kernel
+kernel.private math namespaces sequences sequences.private
+strings strings.private system system.private ;
 IN: alien.strings
 
 GENERIC#: alien>string 1 ( c-ptr encoding -- string/f )
@@ -31,7 +31,7 @@ M: c-ptr string>alien drop ;
 <PRIVATE
 
 : fast-string? ( string encoding -- ? )
-    swap aux>> not [ { ascii utf8 } member-eq? ] [ drop f ] if ; inline
+    swap aux>> not [ { ascii latin1 utf8 } member-eq? ] [ drop f ] if ; inline
 
 : string>alien-fast ( string encoding -- byte-array )
     { string object } declare ! aux>> must be f
index ba880b1b329fff07c620adbb2432e9f1eceeab24..4024e5ed5c3008febeaa57f2c88f22b1a5dae614 100644 (file)
@@ -1,7 +1,7 @@
 USING: alien alien.c-types alien.data arrays classes.struct
 compiler.units continuations destructors fry generic.single io
-io.backend io.directories io.encodings io.encodings.8-bit
-io.encodings.ascii io.encodings.binary io.encodings.string
+io.backend io.directories io.encodings io.encodings.ascii
+io.encodings.binary io.encodings.latin1 io.encodings.string
 io.encodings.utf16 io.encodings.utf8 io.files io.files.private
 io.pathnames kernel locals make math sequences
 specialized-arrays system threads tools.test vocabs ;
index 567523eb7f3c6120fde497f7e93e1639c3e365b2..2859c862b8d35efe703a54f4af079845d644b1ac 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2009 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: combinators combinators.smart csv io.encodings.8-bit
+USING: combinators combinators.smart csv io.encodings.latin1
 kernel math.parser memoize money sequences unicode ;
 IN: geobytes
 
index 4d37f6f9a2b570e741ec060a1073994467ba7945..b5b58fb465de572b58ebc67b4f9a9efff012cf1b 100644 (file)
@@ -1,7 +1,7 @@
 USING: accessors arrays assocs continuations formatting graphviz
 graphviz.notation graphviz.render graphviz.render.private
-images.loader.private io.directories io.encodings.8-bit
-io.encodings.ascii io.encodings.utf8 io.files io.launcher kernel
+images.loader.private io.directories io.encodings.ascii
+io.encodings.latin1 io.encodings.utf8 io.files io.launcher kernel
 locals make math math.combinatorics math.parser namespaces
 sequences sequences.extras sets splitting system tools.test ;
 IN: graphviz.tests
index 230bcb0ed86d64b1c8e300c36ca7dcd0ab66019f..2f75dcb8bd90b05aeb4b49071b9e75fb5a63cf29 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2012 Alex Vondrak.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: graphviz help.markup help.syntax images.viewer
-io.encodings.8-bit io.encodings.utf8 io.launcher kernel
+io.encodings.latin1 io.encodings.utf8 io.launcher kernel
 strings ;
 IN: graphviz.render
 
index 2b96d8a4418e963348dd58d6e60049e5dd5d6bb5..ea077a15ecb95ebd8c33f356c95250d09756298c 100644 (file)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: calendar combinators compiler.units continuations
 graphviz.dot images.viewer io.backend io.directories
-io.encodings.8-bit io.encodings.utf8 io.files
+io.encodings.latin1 io.encodings.utf8 io.files
 io.files.temp io.files.unique io.launcher io.standard-paths
 kernel locals make namespaces sequences summary system threads
 unicode vocabs webbrowser words ;
index ee514bc9dcbc71b7fd07239a44e1d678c7ed75c8..8c9de5005b72058b3dedc77ef66778ab19f7583e 100644 (file)
@@ -3,7 +3,7 @@
 USING: accessors alien.c-types alien.data arrays byte-arrays
 combinators compression.run-length fry grouping images
 images.loader images.normalization io io.binary
-io.encodings.8-bit io.encodings.string io.streams.throwing
+io.encodings.latin1 io.encodings.string io.streams.throwing
 kernel math math.bitwise sequences specialized-arrays summary ;
 QUALIFIED-WITH: bitstreams b
 SPECIALIZED-ARRAYS: uint ushort ;
index eff32f4736bd89b4113f8c33d6e8414217b9bf2d..c5a195d546e6cf6f46c661a293e7bb50d39a1751 100644 (file)
@@ -2,10 +2,10 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors arrays assocs checksums checksums.crc32
 combinators compression.inflate fry grouping images
-images.loader io io.binary io.encodings.8-bit io.encodings.ascii
-io.encodings.binary io.encodings.string io.streams.byte-array
-io.streams.throwing kernel locals math math.bitwise
-math.functions sequences sorting ;
+images.loader io io.binary io.encodings.ascii
+io.encodings.binary io.encodings.latin1 io.encodings.string
+io.streams.byte-array io.streams.throwing kernel locals math
+math.bitwise math.functions sequences sorting ;
 QUALIFIED: bitstreams
 IN: images.png
 
index 61e4a4ff41ade5e7b26f983dbac08fb41b636475..5a8c00fcb21ea549dd76a0b2daf11799b6a97e71 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2010 Joe Groff.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: byte-arrays io.encodings.8-bit io.encodings.binary
-io.encodings.detect io.encodings.utf16 io.encodings.utf32
+USING: byte-arrays io.encodings.binary io.encodings.detect
+io.encodings.latin1 io.encodings.utf16 io.encodings.utf32
 io.encodings.utf8 namespaces tools.test ;
 
 ! UTF encodings with BOMs
index 370100d9d5f02f9ae3de88328d9e6b7ef2336504..2f1ab0572f6a5e86ee52cd04fa474c1a9d66e965 100644 (file)
@@ -1,15 +1,14 @@
 ! Copyright (C) 2010 Joe Groff.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors byte-arrays combinators continuations fry io
-io.encodings io.encodings.8-bit io.encodings.ascii
-io.encodings.binary io.encodings.iana io.encodings.string
-io.encodings.utf16 io.encodings.utf32 io.encodings.utf8
-io.files io.streams.string kernel literals math namespaces
-sequences strings ;
+USING: byte-arrays combinators continuations fry io io.encodings
+io.encodings.ascii io.encodings.binary io.encodings.iana
+io.encodings.latin1 io.encodings.string io.encodings.utf16
+io.encodings.utf32 io.encodings.utf8 io.files kernel literals
+math namespaces sequences strings ;
 IN: io.encodings.detect
 
-SYMBOL: default-8bit-encoding
-default-8bit-encoding [ latin1 ] initialize
+SYMBOL: default-encoding
+default-encoding [ latin1 ] initialize
 
 <PRIVATE
 
@@ -41,7 +40,7 @@ PRIVATE>
         { [ 0 over member? ] [ drop binary ] }
         { [ dup empty? ] [ drop utf8 ] }
         { [ dup valid-utf8? ] [ drop utf8 ] }
-        [ drop default-8bit-encoding get ]
+        [ drop default-encoding get ]
     } cond ;
 
 : detect-stream ( stream -- sample encoding )