README
1) The need for a casefix type toolset
A) How many times have you been touch typing notes into your editor, and looked up and realized that your caps lock has been on for the whole section, and the quickest way to redo the incorrectly cased text is to re-type the whole section?
B) How many of database administrators know that the names in their database are all miscased? Every time a form letter must be sent out, either you must write a program to recase the names or needlessly displeasing customers who don't appreciate the false casting?
Obviously, a preprogrammed solution would save lots of peoples' time and effort and increase productivity. Any number of secretaries, typist and data entry personnel over the years would have given the programmer a hug, if the required tool was available at the time it was needed., or if not a hug, loyality to tour app woukd have been created.
2) The rationale for a shared library solution
It is true that a casefix tool probably would not be needed ecery editing session, and having a casefix tool in every app would be wasteful of end user resources, however the need to have a casefix style tool is still real even if it isn't used too often. This is where a shared library really shines. When I say shared library, I do not mean an app specific library shared between different instances of the same app. That would indicate that the tools would be A feature either specific to your program's application or you hope to have such a tool set as an exclusive feature of your app. In either case, this is not realistic. It is just to wasteful of user resources to not have a library shared between all applicable apps. A casing toolset seems to be ideal for a shared library, a really shared library.
I have noticed a lack of a casing tool for at least 30 years. I remember approaching a prof in the Comp. Sci Department at the local university with some amatuer micro computer code, and not only did he "shoot me down" but he implied that such a program was not desired. In the early 1990s, first with Quick BASIC and then when I got my used "licensed like a book" Borland C/C++ 3.0 IDE/compiler I wrote some casing tool code. but that code got way-laid by life. I still have that code buried somewhere. This January (2013) I found that I had time in the evening as well as the environment to concentrate and the desire to pragram, which I always enjoy. I decided to make an attempt to actually get it done. I spent most of my evenings this January enjoying the quiet, listening to podcast and programming libcasefix and the casefix command. It is ironic, that I use KDE 3.5 and towards the end of the month, I noticed something I had never noticed before. Some KDE apps have a casing tool. Well I don't know what the specifics of theor tool set are, except the have 3 modes incorporated into their apps. I love KDE. But I think that the casefix lib should be used by apps beyond KDE and that it should be available to as many apps and environments as possible, at least for linux. Also, I think that there is more to be done with casefix, and that the design considerations listed in the file "design considerations" are valid. So I submit this casefix project.
3) The casefix project
It consist of two main parts, libcasefix and the casefix command. libcasefix is a set of tools to edit, modify or adjust the casing of any character, group of alphanumeric characters or word, , any sentence or sentences, any text string, any char array, or any text stream (of any of the supported character set) according to 6 preconfigured modes or by use of a programmer or user supplied template, a custom mode.
libcasefix is ANSI C / ISO C90 compatible but also provides for even older C compilers.
libcasefix relies only on the standard C library and uses no extensions to the standard C library.
In other words, libcasefix is portable.
The heart of libcasefix is 7 streaming text case editing functions which are fast. Also, there are 3 functions that provide an easy to use interface to the 7 streaming functions for char arrays and char strings.
libcasefix is fairly easy to implement and can give your text handling app (gui or text mode) a feature that may not have previously been available, though the need for has always been there.
The casefix command is a WYAFIWYG style text casing editor program that can modify the text casing of a alphabetic character, alphanumeric group of characters (word), group of words, sentence or sentences, string, char array, or stream of words according to several user selectable modes including a custom mode.
The casefix command is a command line implementation of libcasefix and serves as one of the example programs for developers who wish to utilize libcasefix.
If you invoked casefix by one of its supported aliases, all options are the same except that no mode option is required.
Please feel free to join me in making it into the ultimate practical case editing toolset.
I live in the woods, and at this time, I only access the internet when I go to town. My access point is via a windows box with no ssh. I tried out the telnet which it had and the next time I went in to the local library, telnet had been removed. I have requested ssh, but that remains to be seen. Absolutely no version control system will be available. I'll be amazed if I can get them to install ssh. So I can only access my sourceforge directories via the web file mahager interface provided by Sourceforge. I plan to set up a directory to allow others to leave new versions of the source code. How I'm going to keep people from overwriting each others code, I don't know. For now, I will try this.
E-mail me the revised code to: casefixproject@gmail.com In any case, casefix developers and app developer can get the accepted code and all other casefix project materials by downloading the devkit folder.
Thanks,
Jerry