{
  "$schema": "rulealize/registry/plugin/v1",
  "id": "Rulealize.Plugin.Grid",
  "namespace": "grid",
  "prefix": null,
  "admitted": "1.1.0",
  "latest": "1.2.0",
  "description": "Two-dimensional boards, coordinates, directions, ray traversal and functional board update for Rulealize rule sets.",
  "repository": "https://github.com/reny-develop/Rulealize.Plugin.Grid",
  "license": "Apache-2.0",
  "specification": "https://raw.githubusercontent.com/reny-develop/Rulealize.Plugin.Grid/main/doc/specification.md",
  "forms": {
    "grid.at": "{ \u0022op\u0022: \u0022grid.at\u0022, \u0022grid\u0022: \u003Cexpression:board\u003E, \u0022coord\u0022: \u003Cexpression:coord\u003E }",
    "grid.board": "{\n  \u0022op\u0022: \u0022grid.board\u0022,\n  \u0022width\u0022: \u003Cinteger\u003E,        // static\n  \u0022height\u0022: \u003Cinteger\u003E,       // static\n  \u0022coord\u0022: \u0022\u003Cnotation\u003E\u0022,     // static, \u0022index\u0022 if omitted\n  \u0022cell\u0022: \u003Cschema node\u003E      // static\n}",
    "grid.cells": "{ \u0022op\u0022: \u0022grid.cells\u0022, \u0022of\u0022: \u003Cexpression:board\u003E }",
    "grid.coords": "{ \u0022op\u0022: \u0022grid.coords\u0022, \u0022of\u0022: \u003Cexpression:board\u003E }",
    "grid.directions": "{\n  \u0022op\u0022: \u0022grid.directions\u0022,\n  \u0022of\u0022: \u003Cexpression:board\u003E,\n  \u0022kind\u0022: \u0022\u003Ckind\u003E\u0022       // static\n}",
    "grid.ray": "{\n  \u0022op\u0022: \u0022grid.ray\u0022,\n  \u0022grid\u0022: \u003Cexpression:board\u003E,\n  \u0022from\u0022: \u003Cexpression:coord\u003E,\n  \u0022dir\u0022: \u003Cexpression:direction\u003E,\n  \u0022length\u0022: \u003Cexpression:Number\u003E   // optional\n}",
    "grid.run": "{\n  \u0022op\u0022: \u0022grid.run\u0022,\n  \u0022grid\u0022: \u003Cexpression:board\u003E,\n  \u0022from\u0022: \u003Cexpression:coord\u003E,\n  \u0022axis\u0022: \u003Cexpression:direction\u003E,\n  \u0022value\u0022: \u003Cexpression\u003E\n}",
    "grid.set": "{\n  \u0022op\u0022: \u0022grid.set\u0022,\n  \u0022target\u0022: \u003Cstate field:board\u003E,\n  \u0022coord\u0022: \u003Cexpression:coord\u003E,\n  \u0022value\u0022: \u003Cexpression\u003E\n}",
    "grid.setMany": "{\n  \u0022op\u0022: \u0022grid.setMany\u0022,\n  \u0022target\u0022: \u003Cstate field:board\u003E,\n  \u0022coords\u0022: \u003Cexpression:Sequence\u003E,\n  \u0022value\u0022: \u003Cexpression\u003E\n}",
    "grid.square": "{\n  \u0022op\u0022: \u0022grid.square\u0022,\n  \u0022width\u0022: \u003Cinteger\u003E,\n  \u0022height\u0022: \u003Cinteger\u003E,\n  \u0022coord\u0022: \u0022\u003Cnotation\u003E\u0022,   // optional, one of \u0022index\u0022, \u0022algebraic\u0022; default \u0022index\u0022\n  \u0022nullable\u0022: \u003Cboolean\u003E    // optional, default false\n}",
    "grid.with": "{ \u0022op\u0022: \u0022grid.with\u0022,     \u0022grid\u0022: \u003Cexpression:board\u003E, \u0022coord\u0022: \u003Cexpression:coord\u003E,     \u0022value\u0022: \u003Cexpression\u003E }",
    "grid.withMany": "{ \u0022op\u0022: \u0022grid.withMany\u0022, \u0022grid\u0022: \u003Cexpression:board\u003E, \u0022coords\u0022: \u003Cexpression:Sequence\u003E, \u0022value\u0022: \u003Cexpression\u003E }"
  },
  "versions": [
    {
      "version": "1.1.0",
      "abstraction": "0.3.0",
      "framework": "net10.0",
      "operations": {
        "expression": [
          "grid.at",
          "grid.cells",
          "grid.coords",
          "grid.directions",
          "grid.ray",
          "grid.with",
          "grid.withMany"
        ],
        "effect": [
          "grid.set",
          "grid.setMany"
        ],
        "schema": [
          "grid.board",
          "grid.square"
        ],
        "draw": []
      }
    },
    {
      "version": "1.1.1",
      "abstraction": "0.3.0",
      "framework": "net10.0",
      "operations": {
        "expression": [
          "grid.at",
          "grid.cells",
          "grid.coords",
          "grid.directions",
          "grid.ray",
          "grid.with",
          "grid.withMany"
        ],
        "effect": [
          "grid.set",
          "grid.setMany"
        ],
        "schema": [
          "grid.board",
          "grid.square"
        ],
        "draw": []
      }
    },
    {
      "version": "1.1.2",
      "abstraction": "0.4.0",
      "framework": "net10.0",
      "operations": {
        "expression": [
          "grid.at",
          "grid.cells",
          "grid.coords",
          "grid.directions",
          "grid.ray",
          "grid.with",
          "grid.withMany"
        ],
        "effect": [
          "grid.set",
          "grid.setMany"
        ],
        "schema": [
          "grid.board",
          "grid.square"
        ],
        "draw": []
      }
    },
    {
      "version": "1.2.0",
      "abstraction": "0.4.0",
      "framework": "net10.0",
      "operations": {
        "expression": [
          "grid.at",
          "grid.cells",
          "grid.coords",
          "grid.directions",
          "grid.ray",
          "grid.run",
          "grid.with",
          "grid.withMany"
        ],
        "effect": [
          "grid.set",
          "grid.setMany"
        ],
        "schema": [
          "grid.board",
          "grid.square"
        ],
        "draw": []
      }
    }
  ]
}
