/Docs/OTF/ProseObject-Stack/Cmacc_Extensions_0.md
Document views: Document Xray Visual Cicero Print   Source views: Source OpenParameters JSON(ish)   On GitHub: File ~PageRank   (rare: 'ShowMe' 1)
___
TiCmacc Extensions
0.secThe Cmacc data model can be added on to. We need to be extremely conservative as a community, but individuals and groups are of course free to fork. Here are {ID.HazardJ.my/our} ideas about a few extensions.
1.TiFile-Level Overrides
1.secThe current model is based on overriding keys. There are use-cases where it would be very helpful to be able to override files. That is to say, when rendering looks for a file named [Z/ol/s3] it can be directed to look for a file named [P/my/Z/ol/s3] before looking for [Z/ol/s3]. This can be done by including a Key/Value such as [[]]=[[P/my/]] in the file (or by referencing a file that contains such a Key/Value). This solves a bunch of forking and use-case problems while retaining the basic intellectual model of overrides. Perhaps it makes sense to be able to declare in a folder that all files in the folder (and in subfolders) are deemed to have such a Key/Value. Details to be worked out.
2.TiAccessing overridden Key/Values.
2.secSometimes it is helpful to be able to include in a text an overridden key=value. There needs to be a syntax and mechanism to say something like 1.2.sec=The content of this section was: {1.2.sec/-2} and then {1.2.sec/-1}
3.TiAutomated Widgets
3.secThe cluster of /Z/ol/ ; /Z/ol-i/ ; Z/paras/ ; Z/para/ etc. is very useful, but very incomplete and totally hand-done. Each of these could be automated as some kind of smart folder.
4.TiReverse-Walking the Graph - and generally using graph queries
4.secIf I've referenced Alice as P1.=[U/id/Alice.md] and I now want to reference her mother, I might want to say something like (totally making this up) {P1.(>Child.; if He/She = She)Name.Full}. This gets messy pretty quickly. The workaround is to add Alice's mother as P1.Mother.=[U/id/Mary.md]. Perhaps there is a way to encapsulate a standard graph query.
5.TiCalculations
5.secCmacc is text, not calculation. We don't want to create a new programming language. Cmacc can be interfaced to programming environments by having unmatched variables be processed and Values returned by the environment, included expressly or implicitly as a default File. E.g., {Math.3 * 5} might return 15 if there is no Key/Value like "Math.3 * 5=TBD by negotiation". See Blockchain interface.
6.TiNon-recursive Includes
6.secInclude the Key/Values in a File, but not it's references. A notation such as P1.=[!U/id/acme_incorporated] would include Keys from that File, but not from =[U/class/ID_Entity] etc.
7.TiPrefixed Key/Values in a File
7.secIf there are a number of Key/Values where each Key begins the same .. Product.Price=x ; Product.ID=321 ; etc., it might be convenient to be able to express this as
Product:
  • Price=x
  • ID=321
or the like. Variables in such indented elements would need to be evaluated as prefixed.
[OTF/Z/ol/7]
ID.HazardJ.[U/id/hazardj]