Francy Core

Francy is responsible for generating JSON metadata models allowing external tools / libraries / frameworks to add visual representations to math structures. This JSON model representation defines the contract between this package (server) and a GUI framework (client), enabling complete SoC (Separation of Concerns). Francy can be used to provide graphical interactive environments on existing GAP packages.

A JSON schema is available and can be used to produce compliant clients for this package. See schema/francy.json

To map required and optional attributes from the schema into GAP code, the implementation follows the following criteria: Object creation requests mandatory attributes, i.e. required with no default value, e.g. canvas:=Canvas("Title") Object creation accepts an object of defaults, i.e. default values for mandatory fields but that might repeat throughout the creation of multiple similar objects, e.g. defaults:=DefaultCanvas; defaults!.zoomToFit:=false; canvas:=Canvas("Title",defaults); Where DefaultCanvas contains defaults for width (800) and height (600) Attributes associated with the object that can be set, .i.e. optional with no defaults, e.g. canvas:=Canvas("Title"); SetTexTypesetting(canvas,true); The API follows common GAP naming conventions and adding objects is done using Add(objectHolder,object) and removing object is done using Remove(objectHolder,object).

Although Francy has the concept of a Graph, it does not implement any Mathematics Graphs Theory.

Please see Francy-JS for client implementation.
Categories In this section we show all Francy Core Categories. true or false Identifies all Objects in Francy. true or false Identifies all Default record objects in Francy. true or false Identifies all Type record objects in Francy.
Families In this section we show all Francy Core Families.
Global In this section we show all Francy Core Types
Attributes In this section we show all Francy Core Attributes IsString with the unique identifier of the object All Objects created in Francy have a generated unique identifier. a IsString with the unique id of the object Prints the object unique identifier. Use with care! Changing the unique ID might be useful in certain cases, but bear in mind it might cause unexpected behavior. Use at your own risk.