> I don’t like your solution. It solves your aim but it also destroy my work.
IMHO, I added value to your work by generalizing it and making it less intrusive.
I have no personal interest in adding this feature at all, but I followed your
argument that we should also support the eastern community.
> The task of part 2 is to detecting identifier for the compiler. It is not a common facility for the module Strings.
Basically, I reused YOUR design of module Characters, which
will be used in many client modules and which therefore cannot have a private interface.
The existing 'private' interfaces in BlackBox are a pain and we should not add another one.
The naming and the semantics can be discussed, though.
The general purpose character classes could be defined by:
exists:
IsUpper
exists:
IsLower
IsLetter ->
IsAlpha (the term 'letter' is often associated with any printable character, not just alphabetical characters)
new:
IsNumeric (for the sake of completeness and convenience; I don't really care about that )
new:
IsAlphaNumeric (for the sake of completeness and convenience; I don't really care about that )
The character classes used for CP could be defined by:
IsIdentChar ->
IsIdent (there is no 'Char' postfix in other IsXXX, so why should there be one here?)
IsFirstIdentChar ->
IsIdentStart (don't know why but seems a bit more readable and expressive to me)
There cannot be any confusion if the docu states explicitly that these latter character classes are related to
identifiers as defined in the CP language.
They are more than pure convenience classes because as you pointed out correctly they
allow us to define the valid characters for CP identifiers at one single place
with guaranteed consistency with all the client modules.
For the changes see
https://github.com/BlackBoxCenter/bbcb/ ... 320ace4714
> I overlay Cyrillic and Greek letters to the same short representation which is not good.
I have seen that and it is not yet covered in my proposal.
There is some work needed in finding out if this overlay is required at all.
To me it seems that it is for fixing bugs in other places,
viz. places where Short/Long should be called but is not (yet) called.
> Converting identifiers (LongIndent and ShortIdent)
sorry, but the names LongIndent/ShortIdent are obviously wrong because they are
in no way related with identifiers but they work on all strings.
- Josef