Hello Mahmoud,
Thank you for the suggestion. Yes, it's on my plan to separate the library to a core version and an extended version. I'm doing the necessary work for that. For example, all the eXTended features of a given function are now moved to a separate ..XT() function with the same name ( Section() --> SectionXT() ).
Also, the idea of separating the codebase to different folders will be considered after the first release.
This being said, it's important to know that the dependency graph in SoftanzaLib, as expressed by its class design, is kept intentionally shallow, never exceeding 3 levels (always only 2) from parent to child class.But the classes themselves are deep, because I do want all the functions related to the same thing, all in one file. By experience, this leads to a more simple programming experience, both for writing and reading code...
For those who are interested, let me summarize roughly the dependency and inheritance graph we have :
- Softanza uses some Ring libraries, especially RingQt.
- There is a root class called stzObject.
- There are 3 Softanza types inheriting from stzObject, namely : stzString, stzNumber, and stzList.
- For each main class, there is an enumeration class inheriting from stzList, namely : stzListOfObjects, stzListOfNumbers, stzListOfStrings, and stzListOfLists.
- There are some specific types like stzHashList, stzTable, stzGrid, and stzSet that inherit also from stzList.
- There is a Unicode based classe, stzChar, that inherits from stzString.
- Finally, there are some supporting classes for managing stzUnicodeData, stzLocale, stzLanguage, stzScript, stzCountry, stzTime and stzDate.
As you can see, there is a sense of modularity in this design where each class-family represents a functional module : one for texts, one for numbers, one for lists, one for unicode and locales, etc. The complete list of modules targeted is shown in this visualisation :
![image.png](https://groups.google.com/group/ring-lang/attach/ccd486731fc/image.png?part=0.1&view=1)
PS : The first 6 modules are now implemented, the other 3 have been prototyped but will be finalised later after the first release.
All the best,
Mansour