diff --git a/documentation.yaml b/documentation.yaml new file mode 100644 index 0000000..6d22b8f --- /dev/null +++ b/documentation.yaml @@ -0,0 +1,195 @@ +additionalVariables: + netlogoUrl: http://ccl.northwestern.edu/netlogo/docs/ +extensionName: table +icon: i-lucide-table-properties +filesToIncludeInManual: +- USING.md +- primitives +markdownTemplate: |2 + + # NetLogo Table Extension + + {{> BUILDING.md}} + + {{> USING.md}} + + ## Primitives + + {{#contents}}{{#prims}} + [`{{name}}`](#{{primitive.extensionName}}{{primitive.name}}) + {{/prims}}{{/contents}} + + {{#primitives}} + {{> primTemplate}} + {{/primitives}} + + {{> LICENSE.md}} +primTemplate: |2 + + ### `{{name}}` + + ```NetLogo + {{#examples}} + {{primitive.fullName}}{{#args}} {{name}}{{/args}} + {{/examples}} + ``` + + {{{description}}} +primitives: +- arguments: + - type: table + description: Removes all key-value pairs from *table*. + name: clear + type: command +- arguments: + - type: list + description: Counts the occurrences of each element of the given list and reports the counts in a table. + name: counts + returns: table + type: reporter +- arguments: + - type: agentset + - type: reporter + description: |2 + + Groups the agents in the agentset based on the given reporter. + Agents that report the same thing for reporter will be grouped together. + The results of the reporter will be used as the keys in the resulting table and the groups will be agentsets. + + For example: + + {{! prevent mustache from interpreting extension object as template variable }}{{= | | =}} + ``` + observer> create-turtles 100 [ set color one-of [ red green blue ] ] + observer> show table:group-agents turtles [ color ] + observer: {{table: [[105 (agentset, 38 turtles)] [55 (agentset, 32 turtles)] [15 (agentset, 30 turtles)]]}} + ``` + name: group-agents + returns: table + type: reporter +- arguments: + - type: list + - type: anonymous-reporter + description: |2 + + Groups the items of the list based on the given reporter. + The reporter should take a single argument, which will be the items of the list. + Items that report the same thing when passed to the reporter will be grouped together. + The results of the reporter will be used as the keys in the resulting table and the groups will be lists. + + For example: + + {{! prevent mustache from interpreting extension object as template variable }}{{= | | =}} + ``` + observer> show table:group-items range 10 [ num -> num mod 3 ] + observer: {{table: [[0 [0 3 6 9]] [1 [1 4 7]] [2 [2 5 8]]]}} + ``` + name: group-items + returns: table + type: reporter +- arguments: + - type: list + description: |2 + + Reports a new table with the contents of *list*. + *list* must be a list of two element lists, or pairs. + The first element in the pair is the key and the second element is the value. + name: from-list + returns: table + type: reporter +- arguments: + - type: string + description: "\n Reads in the JSON object from the given string argument, converts it to a table, and reports the table.\n The JSON object in the argument must be an object, not an array (i.e. the outmost characters must be `{` and `}`, not `[` and `]`),\n but there can be arrays inside the JSON object which will be converted to NetLogo lists.\n " + name: from-json + returns: table + type: reporter +- arguments: + - type: filename + description: "\n Reads in the JSON object from *filename.json*, converts it to a table and reports the table.\n The JSON object in *filename.json* must be an object, not an array (i.e. the outmost characters of the file must be `{` and `}`, not `[` and `]`),\n but there can be arrays inside the JSON object which will be converted to NetLogo lists.\n " + name: from-json-file + returns: table + type: reporter +- arguments: + - type: table + - name: key + type: anything + description: Reports the value that *key* is mapped to in the table. Causes an error if there is no entry for the key. + name: get + returns: anything + type: reporter +- arguments: + - type: table + - name: key + type: anything + - name: default-value + type: anything + description: Reports the value that *key* is mapped to in the table. Reports the default-value if there is no entry for the key. + name: get-or-default + returns: anything + type: reporter +- arguments: + - type: table + - name: key + type: anything + description: Reports true if *key* has an entry in *table*. + name: has-key? + returns: boolean + type: reporter +- arguments: + - type: table + description: Reports a list of all the keys in *table*, in the same order the keys were inserted. + name: keys + returns: list + type: reporter +- arguments: + - type: table + description: Reports the number of entries in *table*. + name: length + returns: number + type: reporter +- description: Reports a new, empty table. + name: make + returns: table + type: reporter +- arguments: + - type: table + - name: key + type: anything + - name: value + type: anything + description: Maps *key* to *value* in *table*. If an entry already exists in the table for the given key, it is replaced. + name: put + type: command +- arguments: + - type: table + - name: key + type: anything + description: Removes the mapping in *table* for *key*. + name: remove + type: command +- arguments: + - type: table + description: |2- + + Reports a list with the content of table. The list will be a + list of two element lists, or pairs. The first element in the pair is + the key and the second element is the value. The keys appear in the + same order they were inserted. + name: to-list + returns: list + type: reporter +- arguments: + - type: table + description: Reports a string with the contents of the given table as a JSON string. + name: to-json + returns: string + type: reporter +- arguments: + - type: table + description: |2- + + Reports a list with the entries of table. The entries will appear + in the same order they were inserted, with duplicates included. + name: values + returns: list + type: reporter