system/meta/natives.md
2024-07-02 21:56:23 +02:00

6.9 KiB

Native - types & mappings

  • Number - Int

  • Number - Float

  • String

  • Date -> (string)

  • TimeStamp -> (uint)

  • Duration -> (uint)

  • Struct -> (uiid string to resolve type)

  • Type -> string (type type information)

  • Ref -> struct [string|string, struct]

  • Vector2D -> struct [Float,Float]

  • Vector3D -> struct [Float,Float,Float]

  • BBox -> struct [Vector3D,Vector3D]

  • Quaternion -> struct [Float,Float,Float,Float]

  • Flags -> map<string, ulong>

  • Expression -> string | struct [string|RegEx, options:flags]

  • Boolean

  • Options -> struct [flags|struct]

  • Url -> string

  • Url-Scheme -> struct [Url,options:struct]

  • Asset -> struct [Url-Scheme, options:struct]

  • Selector > Expression | struct [Expression,options:struct]

  • Symbol -> ulong

  • Type -> struct[string,Symbol] (type type information)

  • Value -> Symbol

  • Values -> map<string,value>

  • Attribute -> struct [Type, Value]

  • Parameter -> struct [Type,Value]

  • Operation -> Symbol

  • ParameterOperation -> struct [Value,Value,Operation]

  • Template -> string | struct [Type|Selector,options:struct]

  • Arguments -> struct | [...any]

Examples


# My Item

## Details

<template name="item_detail" arguments="showReferences=false">

Some text ...

</template>


<values comment="external and static values">
    <value name="bushing-sheet" value="13PuCx8zKUjXvofFYBGzoOYog7UHpvLzCgxMLF9INnr8"/>
    <value name="bushing-summary" value="0"/>
    <value name="TOTAL" value="3"/>
    <value name="Avg" value="g-sheet://<%bushing-sheet%>/<%bushing-summary%>/D11"/>
</values>

<attributes>
    <attribute name="roundtrip" value="<% TOTAL / 3 %>"/>
</attributes>

Url schemes

Google sheet value

short code : g-sheet

brief

Obtains value(s) in expressions (anywhere) from Google sheets.

parameters

We pass trough all Google API / Url parameters. See more.

examples

Estimated cost : <% VariableName / g-sheet://id/gid/range %>

short code : search

brief :

Returns a collection of PP Search results

parameters

We pass trough all Url parameters but the more common format is :

search://source/query/options

search://source/query/except={author=anonymous}

examples


Display forum search results inline with preview  

<search name="filament" query="filament" sources="Forum|Academy|Wiki">
    <option name="display" value="inline"/>
    <option name="preview" value="true"/>
    <options for="google">
        <options for google api here>
    </options>

    <options for="amazon">
        <options for amazon api here>
    </options>

    <options for="forum">
        <options for forum here>
    </options>

</search>

VFS

short code : vfs

brief

Short code to display or reference files or folders on various virtual file systems as Github, local or SSH

parameters

We pass trough all VFS parameters but the more common format is :

vfs://mount/file

vfs://mount/root folder/sub folder/filename.md?display=inline|reference

examples


Display the content of another file

<vfs name="my-file-definition" path="readme.md" mount="workspace" options="display=inline">
    <option name="display" value="inline">
    <option name="processor" value="HTML">
    
    <!-->Set option for version selection - only provided by certain VFSs as Github<-->
    <option for="github">
        <option name="branch" value="#development">
    </option>
</vfs>


Display the list of files in a folder
```md
<vfs name="my-file-definition" path="some folder" mount="workspace" options="display=inline, layout=grid">
    <option name="display" value="inline">
    <option name="processor" value="HTML">
</vfs>

It's recommended to store the definitions instead in the template's store file and then use the reference just. Override arguments is possible as well

<vfs ref="CAD files" options="display=inline, layout=list"/>

Filters

short code : filter

brief :

Short code to filter out content using the built-in expression engine or markup friendly expressions

<filter operation="equal" value1="user.group" value2="administrator">
    admin stuff here
</filter>

<filter expression="{% user.group == administrator %}">
    admin stuff here
</filter>

For repeating filters and using them as Url arguments, it's advised to store them in the template's store file.

<filter name="kingpin" expression="{% user.group == administrator %}">
    {%content%}
</filter>

<text filter="kingpin">
    trust me, and only me !
</text>

Parameter Operations

short code : operation

brief

In some cases content or values are not in the right format. This system provides per type a set of parameter operations which has 3 inputs : operation, value1 & value2 (optional).

<filter expression="<% system.config.units === 'metric' %>" >
    The thing is 
        <operation op="meter" value1="200"/> 
    <%system.config.units%> high ..
</filter>

Replace

short code : replace

private

brief

Way to modify anything - should be used as last resort only.


<replace name="named object" or classes="object, template" or selector="" attribute="attribute to change" path="inner path, ie: jsonpath" expression="">
    the replacement
</replace>

remote

short code : remote

private

brief

Returns remote content


<remote name="name for later" site="url" parser="jsdom|cheerio|json" selector="some CSS or $ selector" query="inner query, ie: jsonpath">
    <option name="some url parameter to add - easier here" value=""/>
</remote>

Resource

short code : resource

brief

Pull in HTML and system related resources


<resource name="name for later" enabled="{% system.config.debug %}" src="URL|PATH|VFS" type="CSS|SCRIPT-HEAD|SCRIPT-BODY|SCRIPT"/>

Extension

short code : extension

brief

Extension points enable extending existing templates for 3th party additions


<extension for="welding-skill" place="after|before|**first**|last">
    my extra content
</extension>

In a template

<list name="welding-skill">
    <!--extension will be placed here-->
    <requirement>{%MIG_WELDING_LABEL%}</requirement>
</list>

Implicit & inherited base attributes:

  • view : shorthand filter to make the node only visible for a certain compiler target
  • widget : widget class
  • widgetOptions : named widget options
  • filter : named filter
  • id : unique auto id "tag-name|counter"
  • vfs : if set content will be loaded from this url
  • name : if set, this unique name registers the object in the global class instance map. this attribute is being also used for wiring extensions.
  • acl : default's to any
  • remote : if set, content will be loaded from this url
  • as well all HTML attributes

Todo

  • ACLs
  • type - ui mapping
  • type - defaults
  • field composer