Documentation

MiniParcel

A mini-text-based-language for Divooka.

MiniParcel

Tags: Utility, Program RFC: RFC 194

(NEED DOCUMENTATION OF SYNTAX HERE FOR QUICK REFERENCE!)

MiniParcel (derived from "Parcel NExT", pronounciation: /ˈmɪniˌpɑːrˈsɛl/ or /ˈmɪniˌpɑrˈsɛl/) is a mini text-based language for Divooka that can be used for graph editor automation, shell (process) automation, simple scripting, facilitating copy-pasting of Divooka subgraphs, and easy text-based description of Divooka programs.

MiniParcel refers to both the declarative DSL language and a parser program. For language specification and standard behaviors, please refer to Divooka Open Standards (WIP, pending creating entry). MiniParcel is smart - lots of intuitively expected behaviors behave just as they are expected, optionally made explicit with specific instructions.

MiniParcel has a few distinct functions:

  1. When used interpretatively, it just executes each statement and creates a local state (for variables) - this process may or may not require pre-parsing into Zora document (though it will certainly help for pre-gathering and loading all needed packages).
  2. It's a text-based Zora program specification format for node graphs, in which case the intended use is to be parsed directly into a Zora document.

Specification

Goals:

  • Super "smart" - without AI! Can automatically known (when semantic ambiguity is not a problem) which node to use as available from current system.
  • May incorporate procedural elements - but mostly it's just sequential commands and functional processing.
  • It should be very natural and feels like using Zora/node graph editor, and can handle both low-level API access (like node graph), and process-level automation (because it's really trivial) - all as commands.

Proposals:

  • Support Jump command and Tag: syntax.

Summaryof Usage

Below provides quick references of how to use it:

  • Fully addressed or simplified class/function target path (requires using).
  • Lots of contextual names are default imported (unpacked)/used upon first encountering, including all functions from Parcel Standard Libraries, and development-time added lists of parcel original frameworks.
  • unpack(package/module/framework/path): Preloads function lists.
  • using namespace/type: Allows simplifying addressing in subsequent codes.
  • Key syntax: NodeName = TargetPath [ParameterName:]ParameterValue...., where Parameter value can be a reference of a previously defined node.

(PENDING MIGRATION OF SOME OF THE EXAMPLES FROM MINIPARCEL UNIT TESTS HERE FOR REFERENCE PURPOSE)