Major restructuring in rbcurse 1.5.0
I’ve just finished a massive operation of splitting rbcurse into 3 gems. rbcurse-core contains the core infrastructure and basic widgets. These should allow for most ncurses applications. I intend to focus on keeping this as well tested and stable, and backward-compatible as possible. I’ll also work on simplifying the code of core as much as possible. The earliest widgets have also made it into core since a lot of users are using them. Thus, menu and textarea have made it, even though the editable textarea will never be very stable, and its better to use Vim to edit bodies of text. Core does have some new work which is quite experimental but i hope to have it as an integral part of rbcurse and to stabilize soon.
I’ve moved some more complex widgets to rbcurse-extras. These are widgets you should require less often. I’ve moved Table to extras, the simple. non-editable version will be in core. Similarly, the editable version of listbox is in extras, but the readonly version will be in core.
Stuff that is usable but experimental, and not thoroughly tested is in rbcurse-experimental. Essentially, I really am leaving it to users to improve. Some of it could move to extras if it proves useful.
Henceforth, rbcurse will be a meta-gem that installs the other three. You may install only core and develop with that. The directory structures have also changed appreciably. I did this in order to make the movement into 3 separate repositories a bit easier.
BTW, the first part of this operation was separating code into code, extras and experimental directories. Then adjusting the ‘requires’ in each file. Shell and perl (pie) made this quite easy. The second part was to create separate repos. After reading many posts on stackoverflow, I managed to get that done. I hope the history of each file is correct.
I did all this in the 1.5.0 branch, not master, so pushing this to master was another small job. Again found some articles and help on SO. Then to create separate gems for thm repos and tie them together. Someone pointed me to rspec and I’ve used their model.
I still have all the examples lying in the old repo. These still need to be changed so they can run only using core or extras. Most of them use features from all or two gems. I still have to change the names of some widgets that have moved from core to extras or vice-versa (listbox and table), and replace messagebox and tabbedpane with the simpler rewrites. This should take me several days, esp rewriting the examples. I intend standardizing the core widgets in 1.5. I’ve dome work on stacks and flows for placing widgets which needs to be tested further and integrated fully. I’ve done work on color-formatting of text which needs to be integrated and the API firmed up.
1.5.x should mainly be simplifying and cleaning up stuff, removing cruft. Very few feature additions.