1 ! Copyright (C) 2008 Daniel Ehrenberg
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel strings values io.files assocs
4 splitting sequences io namespaces sets io.encodings.8-bit
5 io.encodings.ascii io.encodings.utf8 io.encodings.utf16 ;
15 { utf16be "UTF-16BE" }
16 { utf16le "UTF-16LE" }
17 { latin1 "ISO-8859-1" }
18 { latin2 "ISO-8859-2" }
19 { latin3 "ISO-8859-3" }
20 { latin4 "ISO-8859-4" }
21 { latin/cyrillic "ISO-8859-5" }
22 { latin/arabic "ISO-8859-6" }
23 { latin/greek "ISO-8859-7" }
24 { latin/hebrew "ISO-8859-8" }
25 { latin5 "ISO-8859-9" }
26 { latin6 "ISO-8859-10" }
30 : name>encoding ( name -- encoding )
33 : encoding>name ( encoding -- name )
37 : parse-iana ( stream -- synonym-set )
40 [ first { "Name:" "Alias:" } member? ] filter
41 [ second ] map { "None" } diff
44 : more-aliases ( -- assoc )
51 : make-n>e ( stream -- n>e )
55 [ swap [ set ] with each ]
58 ] each ] H{ } make-assoc more-aliases assoc-union ;
61 "resource:basis/io/encodings/iana/character-sets"
62 ascii <file-reader> make-n>e to: n>e-table