Ah, for a sidenote, it struck me this library extremely easily can be wrapped into a "SRFI 75: Unicode" implementation almost only through procedure renaming.
For SRFI 75: Unicode, see: http://srfi.schemers.org/srfi-75/srfi-75.html
So, this is just to mention that all the functionality of SRFI 75 is already implemented within the combo of Gambit + this Unicode lib.
If anyone would see a reason for bringing this functionality into the exact naming used in SRFI 75 and releasing this under the name of a "srfi75" wrapper library (spontaneously I didn't quite see any reason for this til now, except for perhaps cross-Scheme-system-compatibility reasons), you're free to mention this here and/or implement it.
Brgds, M
Basically Gambit already implements 80% of SRFI 75 by it using Unicode fully internally and in all of its char and string representaitons, the only remaining things being case-insensitive comparison and upcasing/downcasing operations i.e.
string-ci=? string-ci<? string-ci>? string-ci<=? string-ci>=? char-ci<? char-ci=? char-ci=? char-upper-case? char-lower-case? char-title-case? char-title-case?
char-upcase char-downcase char-titlecase char-foldcase string-upcase string-downcase string-foldcase string-titlecase
These, Gambit essentially implements but regarding the US charset only. This Unicode library implements them for the entire Unicode standard but under different function names. (I believe the functionality is implemented exactly according to the SRFI 75 spec, though this would need to be double-checked and if anything needs to be adjusted to match, it ought to be completely minor.)
Perhaps there could be a benefit of having the Gambit-provided ANSI-only correspondents of the abovementioned procedures left referred to under some name though. Perhaps even the original name, and thus having the unicode ones under separate names, as it is with this Unicode lib already.
2012/5/21 Mikael mikael.rcv@gmail.com
Hi guys,
A Unicode library for Gambit has been released.
Many thanks to Florian Loitsch for releasing the Unicode library for Bigloo, of which this library in many respects is a port.
The Unicode library for Gambit does the following Unicode handling:
unicode-char-upper unicode-char-lower unicode-string-upper unicode-string-upper! ; "aBc" => "ABC" unicode-string-lower unicode-string-lower! ; "aBc" => "abc" unicode-string-capitalize-strict! unicode-string-capitalize-strict ;
"aBc" => "Abc" string-unicode-ci<? string-unicode-ci<=? string-unicode-ci=? string-unicode-ci>? string-unicode-ci>=?
It runs out of the box on vanilla Gambit and on Black Hole.
License is New BSD.
It's both released on the Dumping grounds http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Dumping_Grounds and on GitHub at https://github.com/m-i-k-a-e-l/gambit-unicode .
For some more info, please see the copy of the library headers below.
Kind regards, Mikael
Gambit Unicode library 1.0 New BSD license
Enables Gambit Scheme with Unicode handling features. Runs out of the box on vanilla Gambit and on Black Hole.
The Gambit-specific code and distribution: Copyright (C) 2010-2012 Mikael More
The unicode-data.scm generator and Bigloo unicode library this library was inspired by, found in the bigloo-unicode directory: Copyright (C) 2007-2012 Florian Loitsch
The source data for the unicode-data.scm generator, found in the bigloo-unicode/data directory: Copyright (C) 1991-2011 Unicode, Inc.
## Exports unicode-char-upper unicode-char-lower unicode-string-upper unicode-string-upper! ; "aBc" => "ABC" unicode-string-lower unicode-string-lower! ; "aBc" => "abc" unicode-string-capitalize-strict! ; "aBc" => "Abc" unicode-string-capitalize-strict ; string-unicode-ci<? string-unicode-ci<=? string-unicode-ci=? string-unicode-ci>? string-unicode-ci>=?
## Relation with Bigloo Unicode library. Intended scope of use of this library. This library is based on the Unicode library for Bigloo Scheme by Florian Loitsch, as bundled with the js2scheme distribution as found on http://code.google.com/p/js2scheme/source/browse/ . A copy of this library is provided in this distribution in the bigloo-unicode directory, to enable you to easily generate Unicode constants based on any new Unicode Character Database versions. The vesion of the Bigloo Unicode library bundled here is was pulled from the abovementioned repo the 13:t of May 2012. Florian's last changes were the 12:th of March 2011. Florian's code is to be viewed as stable since at least 2010, to the best of my knowledge the only changes since then have been minor restructurings.
Please note that the scope of this library and the Bigloo unicode library are different, in that Gambit has complete native Unicode character handling and charset encoding/decoding features built-in and thus none of this needs to be provided in a separate library, whereas the Bigloo Unicode library provides such functionality to Bigloo.
## Distribution overview unicode.scm - The Gambit Unicode handling library unicode-data.scm - The constants required to make unicode.scm spin. Generated out of the Unicode Character Database. bigloo-unicode/* - Florian Loitsch's unicode-data.scm generator, and Bigloo Unicode library that was used as inspiration for making this library. Use this to generate a new unicode-data.scm out of a Unicode Character Database update, if that would ever be released and relevant. Latest version as of the 13:th of May 2012, see more above. bigloo-unicode/data/* - The required files of the Unicode Character Database, see below.
## How to update unicode-data.scm with a new version of the Unicode Character Database In case by any reason this would ever be relevant, here is how to proceed:
Update the bigloo-unicode/data/ files (namely SpecialCasing.txt and UnicodeData.txt) with the new Unicode Character Database files.
As of the date of writing, these are released on http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt and http://www.unicode.org/Public/UNIDATA/UnicodeData.txt , and you can see the release date of the latest update of them on http://www.unicode.org/Public/UNIDATA/ .
Afficher les réponses par date