diff --git a/README.md b/README.md index 859ed5d..e5d495a 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,18 @@ Additionally, Modpol seeks to counteract the tendency for "[implicit feudalism]( It is certainly possible to use Modpol to replicate practices of implicit feudalism, such as all-powerful admins, but doing so requires extra work to overcome these defaults. +## Documentation + +Various guides are available at the [GitLab wiki](https://gitlab.com/medlabboulder/modpol/-/wikis/home). + +Read documentation of functions and modules at `docs/doc/index.html`. Documentation was generated using [LDoc](https://stevedonovan.github.io/ldoc/). To generate basic documentation for every page, download `ldoc` and use the following command: + +``` +$ cd docs/ +$ ldoc .. +``` + +This will not generate the same index page and sidebar as the documentation provided; the appropriate structure needs to be added manually. ## Credits diff --git a/docs/config.ld b/docs/config.ld new file mode 100644 index 0000000..9492f75 --- /dev/null +++ b/docs/config.ld @@ -0,0 +1,2 @@ +project = 'Modpol' +description = 'modpol core' diff --git a/docs/doc/index.html b/docs/doc/index.html new file mode 100644 index 0000000..2907009 --- /dev/null +++ b/docs/doc/index.html @@ -0,0 +1,201 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ + +

modpol core

+ +

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
modpol.interactionsINTERACTIONS.LUA (CLI).
add_child_org_consentAdds a child org.
change_moduleschange_modules
change_moduleschange_modules + Depends on consent
consentA utility module for checking consent
create_tokenCreate token.
defer_consentDefer consent
display_processesDisplay processes
join_orgAdds a user to org
join_org_consentJoin org (consent).
leave_orgRemoves initiator from org
message_orgMessages all org members
randomizerA utility module that outputs a random result from a set of options
remove_child_consentRemove child (consent).
remove_member_consentCalls consent to remove member from org
remove_orgA simple module that removes an org.
remove_org_consentRemove org (consent) + A simple module that calls a consent process on an org to remove it.
remove_processRemove a process
rename_org_consentRename org (consent) + A simple module that calls a consent process on an org to rename it.
send_tokenSend token.
module_templateTemplate for module writers.
tokenomicsTokenomics.
modpol.orgs.baseBasic function for orgs
modpol.orgs.processProcess functions for orgs
modpol.util.miscMiscellaneous functions
modpol_minetest.apiScript for loading Minetest files
priv_to_orgSet privilege to org members + Allows initiator to grant a priv they have to all members of an org
modpol_minetest.overrides.interactionsINTERACTIONS.LUA (for Minetest) + CONTEXTUAL STUFF + ================
+ +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/ldoc.css b/docs/doc/ldoc.css new file mode 100644 index 0000000..52c4ad2 --- /dev/null +++ b/docs/doc/ldoc.css @@ -0,0 +1,303 @@ +/* BEGIN RESET + +Copyright (c) 2010, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.com/yui/license.html +version: 2.8.2r1 +*/ +html { + color: #000; + background: #FFF; +} +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td { + margin: 0; + padding: 0; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +fieldset,img { + border: 0; +} +address,caption,cite,code,dfn,em,strong,th,var,optgroup { + font-style: inherit; + font-weight: inherit; +} +del,ins { + text-decoration: none; +} +li { + margin-left: 20px; +} +caption,th { + text-align: left; +} +h1,h2,h3,h4,h5,h6 { + font-size: 100%; + font-weight: bold; +} +q:before,q:after { + content: ''; +} +abbr,acronym { + border: 0; + font-variant: normal; +} +sup { + vertical-align: baseline; +} +sub { + vertical-align: baseline; +} +legend { + color: #000; +} +input,button,textarea,select,optgroup,option { + font-family: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; +} +input,button,textarea,select {*font-size:100%; +} +/* END RESET */ + +body { + margin-left: 1em; + margin-right: 1em; + font-family: arial, helvetica, geneva, sans-serif; + background-color: #ffffff; margin: 0px; +} + +code, tt { font-family: monospace; font-size: 1.1em; } +span.parameter { font-family:monospace; } +span.parameter:after { content:":"; } +span.types:before { content:"("; } +span.types:after { content:")"; } +.type { font-weight: bold; font-style:italic } + +body, p, td, th { font-size: .95em; line-height: 1.2em;} + +p, ul { margin: 10px 0 0 0px;} + +strong { font-weight: bold;} + +em { font-style: italic;} + +h1 { + font-size: 1.5em; + margin: 20px 0 20px 0; +} +h2, h3, h4 { margin: 15px 0 10px 0; } +h2 { font-size: 1.25em; } +h3 { font-size: 1.15em; } +h4 { font-size: 1.06em; } + +a:link { font-weight: bold; color: #004080; text-decoration: none; } +a:visited { font-weight: bold; color: #006699; text-decoration: none; } +a:link:hover { text-decoration: underline; } + +hr { + color:#cccccc; + background: #00007f; + height: 1px; +} + +blockquote { margin-left: 3em; } + +ul { list-style-type: disc; } + +p.name { + font-family: "Andale Mono", monospace; + padding-top: 1em; +} + +pre { + background-color: rgb(245, 245, 245); + border: 1px solid #C0C0C0; /* silver */ + padding: 10px; + margin: 10px 0 10px 0; + overflow: auto; + font-family: "Andale Mono", monospace; +} + +pre.example { + font-size: .85em; +} + +table.index { border: 1px #00007f; } +table.index td { text-align: left; vertical-align: top; } + +#container { + margin-left: 1em; + margin-right: 1em; + background-color: #f0f0f0; +} + +#product { + text-align: center; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; +} + +#product big { + font-size: 2em; +} + +#main { + background-color: #f0f0f0; + border-left: 2px solid #cccccc; +} + +#navigation { + float: left; + width: 14em; + vertical-align: top; + background-color: #f0f0f0; + overflow: visible; +} + +#navigation h2 { + background-color:#e7e7e7; + font-size:1.1em; + color:#000000; + text-align: left; + padding:0.2em; + border-top:1px solid #dddddd; + border-bottom:1px solid #dddddd; +} + +#navigation ul +{ + font-size:1em; + list-style-type: none; + margin: 1px 1px 10px 1px; +} + +#navigation li { + text-indent: -1em; + display: block; + margin: 3px 0px 0px 22px; +} + +#navigation li li a { + margin: 0px 3px 0px -1em; +} + +#content { + margin-left: 14em; + padding: 1em; + width: 700px; + border-left: 2px solid #cccccc; + border-right: 2px solid #cccccc; + background-color: #ffffff; +} + +#about { + clear: both; + padding: 5px; + border-top: 2px solid #cccccc; + background-color: #ffffff; +} + +@media print { + body { + font: 12pt "Times New Roman", "TimeNR", Times, serif; + } + a { font-weight: bold; color: #004080; text-decoration: underline; } + + #main { + background-color: #ffffff; + border-left: 0px; + } + + #container { + margin-left: 2%; + margin-right: 2%; + background-color: #ffffff; + } + + #content { + padding: 1em; + background-color: #ffffff; + } + + #navigation { + display: none; + } + pre.example { + font-family: "Andale Mono", monospace; + font-size: 10pt; + page-break-inside: avoid; + } +} + +table.module_list { + border-width: 1px; + border-style: solid; + border-color: #cccccc; + border-collapse: collapse; +} +table.module_list td { + border-width: 1px; + padding: 3px; + border-style: solid; + border-color: #cccccc; +} +table.module_list td.name { background-color: #f0f0f0; min-width: 200px; } +table.module_list td.summary { width: 100%; } + + +table.function_list { + border-width: 1px; + border-style: solid; + border-color: #cccccc; + border-collapse: collapse; +} +table.function_list td { + border-width: 1px; + padding: 3px; + border-style: solid; + border-color: #cccccc; +} +table.function_list td.name { background-color: #f0f0f0; min-width: 200px; } +table.function_list td.summary { width: 100%; } + +ul.nowrap { + overflow:auto; + white-space:nowrap; +} + +dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;} +dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;} +dl.table h3, dl.function h3 {font-size: .95em;} + +/* stop sublists from having initial vertical space */ +ul ul { margin-top: 0px; } +ol ul { margin-top: 0px; } +ol ol { margin-top: 0px; } +ul ol { margin-top: 0px; } + +/* make the target distinct; helps when we're navigating to a function */ +a:target + * { + background-color: #FF9; +} + + +/* styles for prettification of source */ +pre .comment { color: #558817; } +pre .constant { color: #a8660d; } +pre .escape { color: #844631; } +pre .keyword { color: #aa5050; font-weight: bold; } +pre .library { color: #0e7c6b; } +pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; } +pre .string { color: #8080ff; } +pre .number { color: #f8660d; } +pre .operator { color: #2239a8; font-weight: bold; } +pre .preprocessor, pre .prepro { color: #a33243; } +pre .global { color: #800080; } +pre .user-keyword { color: #800080; } +pre .prompt { color: #558817; } +pre .url { color: #272fc2; text-decoration: underline; } + diff --git a/docs/doc/modules/add_child_org_consent.html b/docs/doc/modules/add_child_org_consent.html new file mode 100644 index 0000000..9826d97 --- /dev/null +++ b/docs/doc/modules/add_child_org_consent.html @@ -0,0 +1,145 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module add_child_org_consent

+

Adds a child org.

+

+ Depends on `consent`

+ + +

Functions

+ + + + + + + + + +
initiate (result)Initiate consent for new child org
create_child_org ()Create a new child orgg
+ +
+
+ + +

Functions

+ +
+
+ + initiate (result) +
+
+ Initiate consent for new child org + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+ + create_child_org () +
+
+ Create a new child orgg + + + + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/change_modules.html b/docs/doc/modules/change_modules.html new file mode 100644 index 0000000..6779a7d --- /dev/null +++ b/docs/doc/modules/change_modules.html @@ -0,0 +1,128 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module change_modules

+

change_modules + Depends on consent

+

+ + +

Functions

+ + + + + +
initiate (result)Initiate change in modules.
+ +
+
+ + +

Functions

+ +
+
+ + initiate (result) +
+
+ Initiate change in modules. + Either adds or removes module depending on user input + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/consent.html b/docs/doc/modules/consent.html new file mode 100644 index 0000000..85c01a8 --- /dev/null +++ b/docs/doc/modules/consent.html @@ -0,0 +1,150 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module consent

+

A utility module for checking consent

+

+ + +

Functions

+ + + + + + + + + +
initiate (result)Initiate consent
callback (member)Callback
+ +
+
+ + +

Functions

+ +
+
+ + initiate (result) +
+
+ Initiate consent + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+ + callback (member) +
+
+ Callback + + +

Parameters:

+
    +
  • member + +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/create_token.html b/docs/doc/modules/create_token.html new file mode 100644 index 0000000..1305190 --- /dev/null +++ b/docs/doc/modules/create_token.html @@ -0,0 +1,127 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module create_token

+

Create token.

+

+ Depends on tokenomics

+ + +

Functions

+ + + + + +
create_toke:initiate (result)Initiate function
+ +
+
+ + +

Functions

+ +
+
+ + create_toke:initiate (result) +
+
+ Initiate function + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/defer_consent.html b/docs/doc/modules/defer_consent.html new file mode 100644 index 0000000..f6c2807 --- /dev/null +++ b/docs/doc/modules/defer_consent.html @@ -0,0 +1,190 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module defer_consent

+

Defer consent

+

+ + +

Functions

+ + + + + +
initiate (result)Initiate function
+

Tables

+ + + + + +
configConfig for module
+

Fields

+ + + + + +
modpol.modules.defer_consent(Required) Add to module table
+ +
+
+ + +

Functions

+ +
+
+ + initiate (result) +
+
+ Initiate function + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+

Tables

+ +
+
+ + config +
+
+ Config for module + + +

Fields:

+
    +
  • defer_org + Name or ID of target org +
  • +
  • votes_required + Threshold passed on to `consent` +
  • +
  • prompt + String passed on to `consent` +
  • +
+ + + + + +
+
+

Fields

+ +
+
+ + modpol.modules.defer_consent +
+
+ (Required) Add to module table + + + + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/display_processes.html b/docs/doc/modules/display_processes.html new file mode 100644 index 0000000..e64806b --- /dev/null +++ b/docs/doc/modules/display_processes.html @@ -0,0 +1,126 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module display_processes

+

Display processes

+

+ + +

Functions

+ + + + + +
initiate (result)Initiate function
+ +
+
+ + +

Functions

+ +
+
+ + initiate (result) +
+
+ Initiate function + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/join_org.html b/docs/doc/modules/join_org.html new file mode 100644 index 0000000..f936507 --- /dev/null +++ b/docs/doc/modules/join_org.html @@ -0,0 +1,126 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module join_org

+

Adds a user to org

+

+ + +

Functions

+ + + + + +
initiate (result)Adds the user to the org
+ +
+
+ + +

Functions

+ +
+
+ + initiate (result) +
+
+ Adds the user to the org + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/join_org_consent.html b/docs/doc/modules/join_org_consent.html new file mode 100644 index 0000000..15126bf --- /dev/null +++ b/docs/doc/modules/join_org_consent.html @@ -0,0 +1,146 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module join_org_consent

+

Join org (consent).

+

+ A simple module that calls a consent process on an org to add a member. + Depends on the Consent module.

+ + +

Functions

+ + + + + + + + + +
initiate (result)Initiate join org with consent
complete ()Adds member to org, notifies org, and deletes process
+ +
+
+ + +

Functions

+ +
+
+ + initiate (result) +
+
+ Initiate join org with consent + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+ + complete () +
+
+ Adds member to org, notifies org, and deletes process + + + + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/leave_org.html b/docs/doc/modules/leave_org.html new file mode 100644 index 0000000..c2ba803 --- /dev/null +++ b/docs/doc/modules/leave_org.html @@ -0,0 +1,126 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module leave_org

+

Removes initiator from org

+

+ + +

Functions

+ + + + + +
initiate (result)Removes user from org
+ +
+
+ + +

Functions

+ +
+
+ + initiate (result) +
+
+ Removes user from org + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/message_org.html b/docs/doc/modules/message_org.html new file mode 100644 index 0000000..5bfd0af --- /dev/null +++ b/docs/doc/modules/message_org.html @@ -0,0 +1,126 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module message_org

+

Messages all org members

+

+ + +

Functions

+ + + + + +
initiate (result)Allows user to send input message to all org members
+ +
+
+ + +

Functions

+ +
+
+ + initiate (result) +
+
+ Allows user to send input message to all org members + + +

Parameters:

+
    +
  • result + Callback if this module is embedded in other modules +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/modpol.interactions.html b/docs/doc/modules/modpol.interactions.html new file mode 100644 index 0000000..a3a65b0 --- /dev/null +++ b/docs/doc/modules/modpol.interactions.html @@ -0,0 +1,434 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module modpol.interactions

+

INTERACTIONS.LUA (CLI).

+

+ User interaction functions for Modular Politics + Called by modpol.lua

+ + +

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
modpol.interactions.dashboard (user)Output: Display a menu of commands to the user
modpol.interactions.org_dashboard (user, org_string)Output: Displays a menu of org-specific commands to the user
modpol.interactions.user_dashboard (viewer, user, completion)Function: modpol.interactions.user_dashboard + Displays a dashboard about a particular user
modpol.interactions.message (user, message)Prints message to CLI.
modpol.interactions.message_user (sender, recipient)Gets and sends a message from one user to another
modpol.interactions.display (user, title, message, done)Displays complex data to a user
modpol.interactions.text_query (User, Query, func)Applies "func" to user input.
modpol.interactions.dropdown_query (user, label, options, func)Output: Calls func on choice.
modpol.interactions.checkbox_query (user, label, options, func)Allows user to select from a set of options
modpol.interactions.binary_poll_user (user, question, func)Output: Applies "func" to user input.
modpol.interactions.message_org (initiator, org, message)Output: broadcasts message to all org members
+ +
+
+ + +

Functions

+ +
+
+ + modpol.interactions.dashboard (user) +
+
+ Output: Display a menu of commands to the user + + +

Parameters:

+
    +
  • user + (string) +
  • +
+ + + + + +
+
+ + modpol.interactions.org_dashboard (user, org_string) +
+
+ Output: Displays a menu of org-specific commands to the user + + +

Parameters:

+
    +
  • user + (string) +
  • +
  • org_string + (string or id) +
  • +
+ + + + + +
+
+ + modpol.interactions.user_dashboard (viewer, user, completion) +
+
+ Function: modpol.interactions.user_dashboard + Displays a dashboard about a particular user + + +

Parameters:

+
    +
  • viewer + Name of user viewing the dashboard (string) +
  • +
  • user + Name of user being viewed (string) +
  • +
  • completion + Optional function to call on Done button +
  • +
+ + + + + +
+
+ + modpol.interactions.message (user, message) +
+
+ Prints message to CLI. + Buttons: message, done + + +

Parameters:

+
    +
  • user + (string) +
  • +
  • message + (string) +
  • +
+ + + + + +
+
+ + modpol.interactions.message_user (sender, recipient) +
+
+ Gets and sends a message from one user to another + + +

Parameters:

+
    +
  • sender + Name of user sending (string) +
  • +
  • recipient + Name of user receiving (string) +
  • +
+ + + + + +
+
+ + modpol.interactions.display (user, title, message, done) +
+
+ Displays complex data to a user + + +

Parameters:

+
    +
  • user + Name of target user (string) +
  • +
  • title + Title of display (string) +
  • +
  • message + Content of message (string or table of strings) +
  • +
  • done + Optional function for what happens when user is done +
  • +
+ + + + + +
+
+ + modpol.interactions.text_query (User, Query, func) +
+
+ Applies "func" to user input. + Func input: user input (string) + + +

Parameters:

+
    +
  • User + (string) +
  • +
  • Query + (string) +
  • +
  • func + (function) +
  • +
+ + + + + +
+
+ + modpol.interactions.dropdown_query (user, label, options, func) +
+
+ Output: Calls func on choice. + Func input: choice (string) + + +

Parameters:

+
    +
  • user + (string) +
  • +
  • label + (string) +
  • +
  • options + (table of strings) +
  • +
  • func + (choice) (function) +
  • +
+ + + + + +
+
+ + modpol.interactions.checkbox_query (user, label, options, func) +
+
+ Allows user to select from a set of options + + +

Parameters:

+
    +
  • user + Name of user (string) +
  • +
  • label + Query for user before options (string) +
  • +
  • options + Table of options and their checked status in the form {{"option_1_string", true}, {"option_2_string", false}} +
  • +
  • func + Function to be called with param "input", made up of the corrected table in the same format as the param options +
  • +
+ + + + + +
+
+ + modpol.interactions.binary_poll_user (user, question, func) +
+
+ Output: Applies "func" to user input. + Func input: user input (string: y/n) + + +

Parameters:

+
    +
  • user + (string) +
  • +
  • question + (string) +
  • +
  • func + (function) +
  • +
+ + + + + +
+
+ + modpol.interactions.message_org (initiator, org, message) +
+
+ Output: broadcasts message to all org members + + +

Parameters:

+
    +
  • initiator + (string) +
  • +
  • org + (number or string) +
  • +
  • message + (string) +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/modpol.orgs.base.html b/docs/doc/modules/modpol.orgs.base.html new file mode 100644 index 0000000..8f0ad53 --- /dev/null +++ b/docs/doc/modules/modpol.orgs.base.html @@ -0,0 +1,476 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module modpol.orgs.base

+

Basic function for orgs

+

+ + +

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
modpol.orgs.get_org (arg)Return org when given its id or name
modpol.orgs.list_all ()Return a table list of all org names
modpol.orgs.user_orgs (user)Return the orgs of a user
modpol.orgs.reset ()Deletes all orgs except for the
modpol.orgs.init_instance ()Initializes the instance (root org) + can only be run once, as only one instance can exist
modpol.orgs:record ()Records a log message to the modpol ledger
modpol.orgs:add_org (name, user)Adds a new sub org to the org it is called on.
modpol.orgs:delete ()Recursively deletes an org and its suborgs + Leaves entry in modpol.orgs.array as a string "removed".
modpol.orgs:get_member_index (member)Internal function to get the index of a member name
modpol.orgs:add_member (user)Adds a user to an org
modpol.orgs:remove_member (user)Removes a user from an org
modpol.orgs:has_member (user)Boolean check whether user is an org
modpol.orgs:list_members ()
modpol.orgs:get_member_count ()Because member list uses lazy deletion, using #org.members will not show an accurate number
modpol.orgs:set_policy (policy_type, process_type, must_be_member)Adds a new policy to the policy table.
+ +
+
+ + +

Functions

+ +
+
+ + modpol.orgs.get_org (arg) +
+
+ Return org when given its id or name + + +

Parameters:

+
    +
  • arg + string for name of org or id of org +
  • +
+ +

Returns:

+
    + + org specified by id or name +
+ + + + +
+
+ + modpol.orgs.list_all () +
+
+ Return a table list of all org names + + + +

Returns:

+
    + + a table list of all org names +
+ + + + +
+
+ + modpol.orgs.user_orgs (user) +
+
+ Return the orgs of a user + + +

Parameters:

+
    +
  • user + string of user name +
  • +
+ +

Returns:

+
    + + table of strings of org names +
+ + + + +
+
+ + modpol.orgs.reset () +
+
+ Deletes all orgs except for the + + + + + + + +
+
+ + modpol.orgs.init_instance () +
+
+ Initializes the instance (root org) + can only be run once, as only one instance can exist + + + + + + + +
+
+ + modpol.orgs:record () +
+
+ Records a log message to the modpol ledger + + + + + + + +
+
+ + modpol.orgs:add_org (name, user) +
+
+ Adds a new sub org to the org it is called on. + Ex: instance:add_org('town hall') + + +

Parameters:

+
    +
  • name + (string) name of new org +
  • +
  • user + (string) +
  • +
+ +

Returns:

+
    + + child org created +
+ + + + +
+
+ + modpol.orgs:delete () +
+
+ Recursively deletes an org and its suborgs + Leaves entry in modpol.orgs.array as a string "removed". + Note: "reason" param was removed, can be added back + + + + + + + +
+
+ + modpol.orgs:get_member_index (member) +
+
+ Internal function to get the index of a member name + + +

Parameters:

+
    +
  • member + +
  • +
+ +

Returns:

+
    + + index of given member +
+ + + + +
+
+ + modpol.orgs:add_member (user) +
+
+ Adds a user to an org + + +

Parameters:

+
    +
  • user + +
  • +
+ + + + + +
+
+ + modpol.orgs:remove_member (user) +
+
+ Removes a user from an org + + +

Parameters:

+
    +
  • user + +
  • +
+ + + + + +
+
+ + modpol.orgs:has_member (user) +
+
+ Boolean check whether user is an org + + +

Parameters:

+
    +
  • user + +
  • +
+ +

Returns:

+
    + + true if user is in org, false if not +
+ + + + +
+
+ + modpol.orgs:list_members () +
+
+ + + + +

Returns:

+
    + + a table of the names (string) of members +
+ + + + +
+
+ + modpol.orgs:get_member_count () +
+
+ Because member list uses lazy deletion, using #org.members will not show an accurate number + + + +

Returns:

+
    + + numbers of members +
+ + + + +
+
+ + modpol.orgs:set_policy (policy_type, process_type, must_be_member) +
+
+ Adds a new policy to the policy table. + Must define the policy type, process associated with it, and whether the request must be made by an org member + + +

Parameters:

+
    +
  • policy_type + +
  • +
  • process_type + +
  • +
  • must_be_member + Boolean +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/modpol.orgs.process.html b/docs/doc/modules/modpol.orgs.process.html new file mode 100644 index 0000000..a999644 --- /dev/null +++ b/docs/doc/modules/modpol.orgs.process.html @@ -0,0 +1,349 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module modpol.orgs.process

+

Process functions for orgs

+

+ + +

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
modpol.orgs.call_module (module_slug, intiator, config, result)Call modules
modpol.orgs.get_root_process (id)Get the root process of the given id
modpol.orgs.delete_process (id)Delete the process given id
modpol.orgs:delete_process_tree (id)Delete process tree by id
modpol.orgs:add_pending_action (process_id, user, callback)Add a new pending action
modpol.orgs:remove_pending_action (process_id, user)Remove a pending action
modpol.orgs:wipe_pending_actions (process_id)Wipe all pending actions for process
modpol.orgs:has_pending_actions (user)Check if there are pending actions for user
modpol.orgs:interact (process_id, user)Interact a user with given process
+ +
+
+ + +

Functions

+ +
+
+ + modpol.orgs.call_module (module_slug, intiator, config, result) +
+
+ Call modules + + +

Parameters:

+
    +
  • module_slug + Same as module name +
  • +
  • intiator + Initiator for module +
  • +
  • config + Config for module +
  • +
  • result + +
  • +
+ + + + + +
+
+ + modpol.orgs.get_root_process (id) +
+
+ Get the root process of the given id + + +

Parameters:

+
    +
  • id + +
  • +
+ +

Returns:

+
    + + root process +
+ + + + +
+
+ + modpol.orgs.delete_process (id) +
+
+ Delete the process given id + + +

Parameters:

+
    +
  • id + +
  • +
+ + + + + +
+
+ + modpol.orgs:delete_process_tree (id) +
+
+ Delete process tree by id + + +

Parameters:

+
    +
  • id + Id of process tree +
  • +
+ + + + + +
+
+ + modpol.orgs:add_pending_action (process_id, user, callback) +
+
+ Add a new pending action + + +

Parameters:

+
    +
  • process_id + Process id +
  • +
  • user + User adding the action +
  • +
  • callback + +
  • +
+ + + + + +
+
+ + modpol.orgs:remove_pending_action (process_id, user) +
+
+ Remove a pending action + + +

Parameters:

+
    +
  • process_id + Process id to be removed +
  • +
  • user + +
  • +
+ + + + + +
+
+ + modpol.orgs:wipe_pending_actions (process_id) +
+
+ Wipe all pending actions for process + + +

Parameters:

+
    +
  • process_id + +
  • +
+ + + + + +
+
+ + modpol.orgs:has_pending_actions (user) +
+
+ Check if there are pending actions for user + + +

Parameters:

+
    +
  • user + User +
  • +
+ +

Returns:

+
    + + True if there are pending actions for a user, false if not +
+ + + + +
+
+ + modpol.orgs:interact (process_id, user) +
+
+ Interact a user with given process + + +

Parameters:

+
    +
  • process_id + +
  • +
  • user + +
  • +
+ + + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/modpol.util.misc.html b/docs/doc/modules/modpol.util.misc.html new file mode 100644 index 0000000..0a23e70 --- /dev/null +++ b/docs/doc/modules/modpol.util.misc.html @@ -0,0 +1,160 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module modpol.util.misc

+

Miscellaneous functions

+

+ + +

Functions

+ + + + + + + + + +
modpol.util.copy_table (t)Returns a copy of the table inputted
modpol.util.num_pairs (t)Returns the number of elements in a pairs table
+ +
+
+ + +

Functions

+ +
+
+ + modpol.util.copy_table (t) +
+
+ Returns a copy of the table inputted + + +

Parameters:

+
    +
  • t + table to copy +
  • +
+ +

Returns:

+
    + + copy of table +
+ + + + +
+
+ + modpol.util.num_pairs (t) +
+
+ Returns the number of elements in a pairs table + + +

Parameters:

+
    +
  • t + pairs table +
  • +
+ +

Returns:

+
    + + number of elements in pairs table +
+ + + + +
+
+ + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/modpol_minetest.api.html b/docs/doc/modules/modpol_minetest.api.html new file mode 100644 index 0000000..ef1d11c --- /dev/null +++ b/docs/doc/modules/modpol_minetest.api.html @@ -0,0 +1,91 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module modpol_minetest.api

+

Script for loading Minetest files

+

+ + + +
+
+ + + + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/modpol_minetest.overrides.interactions.html b/docs/doc/modules/modpol_minetest.overrides.interactions.html new file mode 100644 index 0000000..3701c75 --- /dev/null +++ b/docs/doc/modules/modpol_minetest.overrides.interactions.html @@ -0,0 +1,93 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module modpol_minetest.overrides.interactions

+

INTERACTIONS.LUA (for Minetest) + CONTEXTUAL STUFF + ================

+

+ + + +
+
+ + + + +
+
+
+generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
+
+ + diff --git a/docs/doc/modules/module_template.html b/docs/doc/modules/module_template.html new file mode 100644 index 0000000..3eb5f95 --- /dev/null +++ b/docs/doc/modules/module_template.html @@ -0,0 +1,223 @@ + + + + + Reference + + + + +
+ +
+ +
+
+
+ + +
+ + + + + + +
+ +

Module module_template

+

Template for module writers.

+

+ Short description goes here.

+ + +

Functions

+ + + + + +
initiate (result)(Required): Initiate function + Modules have access to the following instance variables: +
  • self.org (the org the module was called in),
  • +
  • self.initiator (the user that callced the module),
  • +
  • self.id (the process id of the module instance)
  • +

    Tables

    + + + + + + + + + +
    data(Required) Data for module + Variables that module uses during the course of a process.
    config(Required): Config for module + Defines the input parameters to the module initiate function.
    +

    Fields

    + + + + + +
    modpol.modules.module_template(Required) Add to module table
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + (Required): Initiate function + Modules have access to the following instance variables: +
  • self.org (the org the module was called in),
  • +
  • self.initiator (the user that callced the module),
  • +
  • self.id (the process id of the module instance)
  • + + +

    Parameters:

    +
      +
    • result + (optional) Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    +

    Tables

    + +
    +
    + + data +
    +
    + (Required) Data for module + Variables that module uses during the course of a process. + Can be blank + + + + + + + +
    +
    + + config +
    +
    + (Required): Config for module + Defines the input parameters to the module initiate function. + Can be blank + When calling a module from within another module, + variables not defined in config will be ignored. + Default values set in config can be overridden + + +

    Fields:

    +
      +
    • field_1 + ex: votes_required, default = 5 +
    • +
    • field_2 + ex: voting_type, default = "majority" +
    • +
    + + + + + +
    +
    +

    Fields

    + +
    +
    + + modpol.modules.module_template +
    +
    + (Required) Add to module table + + + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/priv_to_org.html b/docs/doc/modules/priv_to_org.html new file mode 100644 index 0000000..630c61b --- /dev/null +++ b/docs/doc/modules/priv_to_org.html @@ -0,0 +1,127 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module priv_to_org

    +

    Set privilege to org members + Allows initiator to grant a priv they have to all members of an org

    +

    + + +

    Functions

    + + + + + +
    initiate (result)Initiate function
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + Initiate function + + +

    Parameters:

    +
      +
    • result + +
    • +
    + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/randomizer.html b/docs/doc/modules/randomizer.html new file mode 100644 index 0000000..d518684 --- /dev/null +++ b/docs/doc/modules/randomizer.html @@ -0,0 +1,144 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module randomizer

    +

    A utility module that outputs a random result from a set of options

    +

    + + +

    Functions

    + + + + + + + + + +
    initiate (result)Initiate function
    random_loop ()Returns result_table
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + Initiate function + + +

    Parameters:

    +
      +
    • result + Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    + + random_loop () +
    +
    + Returns result_table + + + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/remove_child_consent.html b/docs/doc/modules/remove_child_consent.html new file mode 100644 index 0000000..bd1fe9e --- /dev/null +++ b/docs/doc/modules/remove_child_consent.html @@ -0,0 +1,146 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module remove_child_consent

    +

    Remove child (consent).

    +

    + A simple module that calls a consent process on an org to remove its child. + Depends on the Consent module.

    + + +

    Functions

    + + + + + + + + + +
    initiate (result)Removes a child org with consent
    complete ()Complete the remove process
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + Removes a child org with consent + + +

    Parameters:

    +
      +
    • result + Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    + + complete () +
    +
    + Complete the remove process + + + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/remove_member_consent.html b/docs/doc/modules/remove_member_consent.html new file mode 100644 index 0000000..72545ae --- /dev/null +++ b/docs/doc/modules/remove_member_consent.html @@ -0,0 +1,144 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module remove_member_consent

    +

    Calls consent to remove member from org

    +

    + + +

    Functions

    + + + + + + + + + +
    initiate (result)Removes given member from org
    complete ()Complete after consent
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + Removes given member from org + + +

    Parameters:

    +
      +
    • result + Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    + + complete () +
    +
    + Complete after consent + + + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/remove_org.html b/docs/doc/modules/remove_org.html new file mode 100644 index 0000000..b42d327 --- /dev/null +++ b/docs/doc/modules/remove_org.html @@ -0,0 +1,126 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module remove_org

    +

    A simple module that removes an org.

    +

    + + +

    Functions

    + + + + + +
    initiate (result)Removes org
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + Removes org + + +

    Parameters:

    +
      +
    • result + Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/remove_org_consent.html b/docs/doc/modules/remove_org_consent.html new file mode 100644 index 0000000..5ba6665 --- /dev/null +++ b/docs/doc/modules/remove_org_consent.html @@ -0,0 +1,146 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module remove_org_consent

    +

    Remove org (consent) + A simple module that calls a consent process on an org to remove it.

    +

    + Depends on the Consent module.

    + + +

    Functions

    + + + + + + + + + +
    initiate (result)Remove org if all members consent
    complete ()Complete after consent
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + Remove org if all members consent + + +

    Parameters:

    +
      +
    • result + Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    + + complete () +
    +
    + Complete after consent + + + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/remove_process.html b/docs/doc/modules/remove_process.html new file mode 100644 index 0000000..5f56e4b --- /dev/null +++ b/docs/doc/modules/remove_process.html @@ -0,0 +1,126 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module remove_process

    +

    Remove a process

    +

    + + +

    Functions

    + + + + + +
    initiate (result)Initiate function
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + Initiate function + + +

    Parameters:

    +
      +
    • result + Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/rename_org_consent.html b/docs/doc/modules/rename_org_consent.html new file mode 100644 index 0000000..2234db9 --- /dev/null +++ b/docs/doc/modules/rename_org_consent.html @@ -0,0 +1,146 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module rename_org_consent

    +

    Rename org (consent) + A simple module that calls a consent process on an org to rename it.

    +

    + Depends on the Consent module.

    + + +

    Functions

    + + + + + + + + + +
    initiate (result)Renames the org after consent is reached
    complete ()Changes the name of the org after consent is reached
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + Renames the org after consent is reached + + +

    Parameters:

    +
      +
    • result + Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    + + complete () +
    +
    + Changes the name of the org after consent is reached + + + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/send_token.html b/docs/doc/modules/send_token.html new file mode 100644 index 0000000..c0df915 --- /dev/null +++ b/docs/doc/modules/send_token.html @@ -0,0 +1,157 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module send_token

    +

    Send token.

    +

    + Depends on tokenomics

    + + +

    Functions

    + + + + + +
    initiate (result)initiate function
    +

    Tables

    + + + + + +
    data(Required) Data for module + Variables that module uses during the course of a process + Can be blank
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + initiate function + + +

    Parameters:

    +
      +
    • result + Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    +

    Tables

    + +
    +
    + + data +
    +
    + (Required) Data for module + Variables that module uses during the course of a process + Can be blank + + + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/doc/modules/tokenomics.html b/docs/doc/modules/tokenomics.html new file mode 100644 index 0000000..f16018d --- /dev/null +++ b/docs/doc/modules/tokenomics.html @@ -0,0 +1,357 @@ + + + + + Reference + + + + +
    + +
    + +
    +
    +
    + + +
    + + + + + + +
    + +

    Module tokenomics

    +

    Tokenomics.

    +

    + Depends on consent

    + + +

    Functions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    initiate (result)Initiate function: creates a token in an org.
    create_token ()Create token
    balance (org, token, user)Returns balance.
    change_balance (org, token, user, amount)Change balance
    transfer (org, token, sender, recipient, amount)Transfer tokens from a sender to recipient
    treasury_transfer (org, token, recipient, amount)Transfer from treasury
    issue (org, token, amount)Creates new tokens in the org treasury
    +

    Tables

    + + + + + +
    configConfig for module
    + +
    +
    + + +

    Functions

    + +
    +
    + + initiate (result) +
    +
    + Initiate function: creates a token in an org. + Set up the token data structure. + Create an org treasury + + +

    Parameters:

    +
      +
    • result + (optional) Callback if this module is embedded in other modules +
    • +
    + + + + + +
    +
    + + create_token () +
    +
    + Create token + + + + + + + +
    +
    + + balance (org, token, user) +
    +
    + Returns balance. + If no user, get treasury balance + + +

    Parameters:

    +
      +
    • org + Name (string) or id (num) +
    • +
    • token + Slug (string) +
    • +
    • user + Name (string) +
    • +
    + + + + + +
    +
    + + change_balance (org, token, user, amount) +
    +
    + Change balance + + +

    Parameters:

    +
      +
    • org + Org name (string) or id (number) +
    • +
    • token + Token slug (string) +
    • +
    • user + +
    • +
    • amount + +
    • +
    + + + + + +
    +
    + + transfer (org, token, sender, recipient, amount) +
    +
    + Transfer tokens from a sender to recipient + + +

    Parameters:

    +
      +
    • org + +
    • +
    • token + +
    • +
    • sender + +
    • +
    • recipient + +
    • +
    • amount + Positive number +
    • +
    + + + + + +
    +
    + + treasury_transfer (org, token, recipient, amount) +
    +
    + Transfer from treasury + + +

    Parameters:

    +
      +
    • org + +
    • +
    • token + +
    • +
    • recipient + +
    • +
    • amount + Can be positive or negative, assumes flow from treasury to recipient +
    • +
    + + + + + +
    +
    + + issue (org, token, amount) +
    +
    + Creates new tokens in the org treasury + + +

    Parameters:

    +
      +
    • org + +
    • +
    • token + +
    • +
    • amount + +
    • +
    + + + + + +
    +
    +

    Tables

    + +
    +
    + + config +
    +
    + Config for module + + +

    Fields:

    +
      +
    • consent + Require consent to create? +
    • +
    • token_variables + the data that goes into the token +
    • +
    • token_slug + A no-spaces slug for the token +
    • +
    • initial_treasury + Quantity in org treasury +
    • +
    • negative_spend + Boolean: can users spend negative tokens? (for mutual credit) +
    • +
    • balances + Table of user balances +
    • +
    + + + + + +
    +
    + + +
    +
    +
    +generated by LDoc 1.4.6 +Last updated 2022-01-23 18:18:51 +
    +
    + + diff --git a/docs/headers_template.html b/docs/headers_template.html new file mode 100644 index 0000000..ce66f4a --- /dev/null +++ b/docs/headers_template.html @@ -0,0 +1,63 @@ +

    Basic Functions

    + + +

    Core Modules

    + + +

    Minetest Modules

    + + + + +

    Basic Functions

    + + +

    Core Modules

    + + +

    Minetest Modules

    + \ No newline at end of file diff --git a/modpol_core/interactions/interactions.lua b/modpol_core/interactions/interactions.lua index ee47e09..1581e78 100644 --- a/modpol_core/interactions/interactions.lua +++ b/modpol_core/interactions/interactions.lua @@ -1,7 +1,7 @@ --- INTERACTIONS.LUA (CLI) - --- User interaction functions for Modpol +--- INTERACTIONS.LUA (CLI). +-- User interaction functions for Modular Politics -- Called by modpol.lua +-- @module modpol.interactions modpol.interactions = {} @@ -9,10 +9,11 @@ modpol.interactions = {} -- DASHBOARDS -- ========== --- Function: modpol.interactions.dashboard(user) --- Params: user (string) +--- Output: Display a menu of commands to the user +-- @function modpol.interactions.dashboard +-- @param user (string) + -- Q: Should this return a menu of commands relevant to the specific user? --- Output: Displays a menu of commands to the user -- TKTK currently just prints all of modpol---needs major improvement function modpol.interactions.dashboard(user) -- adds user to root org if not already in it @@ -96,10 +97,10 @@ function modpol.interactions.dashboard(user) end end - --- Function: modpol.interactions.org_dashboard --- Params: user (string), org_string (string or id) --- Output: Displays a menu of org-specific commands to the user +--- Output: Displays a menu of org-specific commands to the user +-- @function modpol.interactions.org_dashboard +-- @param user (string) +-- @param org_string (string or id) function modpol.interactions.org_dashboard(user, org_string) local org = modpol.orgs.get_org(org_string) if not org then return nil end @@ -241,21 +242,22 @@ function modpol.interactions.user_dashboard(viewer, user, completion) end --- buttons: message, done + -- INTERACTION PRIMITIVES -- ====================== --- Function: modpol.interactions.message --- Produces a brief message to a user --- input: user (string), message (string) --- output: prints message to CLI +--- Prints message to CLI. +-- Buttons: message, done +-- @function modpol.interactions.message +-- @param user (string) +-- @param message (string) function modpol.interactions.message(user, message) print(user .. ": " .. message) end ---- Function: modpol.interactions.message_user --- Gets and sends a message from one user to another +--- Gets and sends a message from one user to another +-- @function modpol.interactions.message_user -- @param sender Name of user sending (string) -- @param recipient Name of user receiving (string) function modpol.interactions.message_user(sender, recipient) @@ -266,8 +268,9 @@ function modpol.interactions.message_user(sender, recipient) sel.." [from "..sender.."]") end ---- Function: modpol.interactions.display --- Displays complex data to a user + +--- Displays complex data to a user +-- @function modpol.interactions.display -- @param user Name of target user (string) -- @param title Title of display (string) -- @param message Content of message (string or table of strings) @@ -299,20 +302,25 @@ function modpol.interactions.display(user, title, message, completion) end --- Function: modpol.interactions.text_query --- input: User (string), Query (string), func (function) --- func input: user input (string) --- output: Applies "func" to user input +--- Applies "func" to user input. +-- Func input: user input (string) +-- @function modpol.interactions.text_query +-- @param User (string) +-- @param Query (string) +-- @param func (function) function modpol.interactions.text_query(user, query, func) print(user .. ": " .. query) answer = io.read() func(answer) end --- Function: dropdown_query --- input: user (string), label (string), options (table of strings), func(choice) (function) --- func input: choice (string) --- output: calls func on choice +--- Output: Calls func on choice. +-- Func input: choice (string) +-- @function modpol.interactions.dropdown_query +-- @param user (string) +-- @param label (string) +-- @param options (table of strings) +-- @param func (choice) (function) function modpol.interactions.dropdown_query(user, label, options, func) -- set up options local options_display = "" @@ -348,12 +356,13 @@ function modpol.interactions.dropdown_query(user, label, options, func) end end ---- Function: modpol.interactions.checkbox_query --- Allows user to select from a set of options + +--- Allows user to select from a set of options +-- @function modpol.interactions.checkbox_query -- @param user Name of user (string) -- @param label Query for user before options (string) --- @param options table of options and their checked status in the form {{"option_1_string", true}, {"option_2_string", false}} --- @param func function to be called with param "input", made up of the corrected table in the same format as the param options +-- @param options Table of options and their checked status in the form {{"option_1_string", true}, {"option_2_string", false}} +-- @param func Function to be called with param "input", made up of the corrected table in the same format as the param options function modpol.interactions.checkbox_query( user, label, options, func) -- set up options @@ -397,10 +406,12 @@ function modpol.interactions.checkbox_query( end --- Function: modpol.interactions.binary_poll_user --- Params: user (string), question (string), func (function) --- func input: user input (string: y/n) --- Output: Applies "func" to user input +--- Output: Applies "func" to user input. +-- Func input: user input (string: y/n) +-- @function modpol.interactions.binary_poll_user +-- @param user (string) +-- @param question (string) +-- @param func (function) function modpol.interactions.binary_poll_user(user, question, func) local query = "Poll for " .. user .. " (y/n): ".. question local answer @@ -422,9 +433,11 @@ end -- COMPLEX INTERACTIONS -- ==================== --- Function: modpol.interactions.message_org --- input: initiator (string), org (number or string), message (string) --- output: broadcasts message to all org members +--- Output: broadcasts message to all org members +-- @function modpol.interactions.message_org +-- @param initiator (string) +-- @param org (number or string) +-- @param message (string) function modpol.interactions.message_org(initiator, org, message) local this_org = modpol.orgs.get_org(org) local users = this_org:list_members() diff --git a/modpol_core/modules/add_child_org_consent.lua b/modpol_core/modules/add_child_org_consent.lua index 6816b71..34d2c7f 100644 --- a/modpol_core/modules/add_child_org_consent.lua +++ b/modpol_core/modules/add_child_org_consent.lua @@ -1,6 +1,6 @@ ---- @module add_child_org_consent --- Adds a child org +--- Adds a child org. -- Depends on `consent` +-- @module add_child_org_consent local add_child_org_consent = { name = "Add child org (consent)", @@ -14,7 +14,9 @@ add_child_org_consent.data = { add_child_org_consent.config = { } --- @function initiate +--- Initiate consent for new child org +-- @function add_child_org_consent:initiate(result) +-- @param result Callback if this module is embedded in other modules function add_child_org_consent:initiate(result) modpol.interactions.text_query( self.initiator,"Child org name: ", @@ -60,6 +62,8 @@ function add_child_org_consent:initiate(result) ) end +--- Create a new child orgg +-- @function add_child_org_consent:create_child_org function add_child_org_consent:create_child_org() self.org:add_org(self.data.child_name, self.initiator) modpol.interactions.message_org( @@ -71,5 +75,4 @@ function add_child_org_consent:create_child_org() self.org:delete_process(self.id) end ---- (Required) Add to module table modpol.modules.add_child_org_consent = add_child_org_consent diff --git a/modpol_core/modules/change_modules-dropdown.lua b/modpol_core/modules/change_modules-dropdown.lua index ae651ec..efeb3d9 100644 --- a/modpol_core/modules/change_modules-dropdown.lua +++ b/modpol_core/modules/change_modules-dropdown.lua @@ -16,6 +16,9 @@ change_modules.data = { change_modules.config = { } +--- Change modules initiate +-- @function change_modules:initiate +-- @param result Callback if this module is embedded in other modules function change_modules:initiate(result) self.data.result = result -- Step 1: add or remove? @@ -32,6 +35,8 @@ function change_modules:initiate(result) ) end +--- Add a new module +-- @function change_modules:add_module function change_modules:add_module() -- prepare module options local available_modules = modpol.util.copy_table(modpol.modules) @@ -78,6 +83,8 @@ function change_modules:add_module() ) end +--- Remove a module +-- @function change_modules:remove_module function change_modules:remove_module() -- prepare module options local available_modules = {} @@ -125,8 +132,11 @@ function change_modules:remove_module() ) end ---- propose_change --- @field type "add" or "remove" +--- Propose a change. +-- Type "add" or "remove" +-- @function change_modules:propose_change +-- @param type +-- @param mod_text function change_modules:propose_change(type, mod_text) self:call_module( "consent",self.initiator, @@ -165,5 +175,4 @@ function change_modules:propose_change(type, mod_text) self.org:delete_process(self.id) end ---- (Required) Add to module table modpol.modules.change_modules = change_modules diff --git a/modpol_core/modules/change_modules.lua b/modpol_core/modules/change_modules.lua index 036e10b..beec34d 100644 --- a/modpol_core/modules/change_modules.lua +++ b/modpol_core/modules/change_modules.lua @@ -1,6 +1,6 @@ --- change_modules --- @module change_modules -- Depends on consent +-- @module change_modules local change_modules = { name = "Change modules (consent)", @@ -19,6 +19,10 @@ change_modules.data = { change_modules.config = { } +--- Initiate change in modules. +-- Either adds or removes module depending on user input +-- @function change_modules:initiate +-- @param result Callback if this module is embedded in other modules function change_modules:initiate(result) self.data.result = result self.data.add_modules = {} @@ -112,5 +116,4 @@ function change_modules:implement_change() self.org:delete_process(self.id) end ---- (Required) Add to module table modpol.modules.change_modules = change_modules diff --git a/modpol_core/modules/consent.lua b/modpol_core/modules/consent.lua index 6c670ed..4311421 100644 --- a/modpol_core/modules/consent.lua +++ b/modpol_core/modules/consent.lua @@ -1,5 +1,5 @@ ---- @module consent --- A utility module for checking consent +--- A utility module for checking consent +-- @module consent local consent = { name = "Consent process", @@ -17,6 +17,9 @@ consent.config = { votes_required = 1 } +--- Initiate consent +-- @function consent:initiate +-- @param result Callback if this module is embedded in other modules function consent:initiate(result) self.data.result = result -- if org is empty, consent is given automatically @@ -32,6 +35,9 @@ function consent:initiate(result) end end +--- Callback +-- @function consent:callback +-- @param member function consent:callback(member) modpol.interactions.binary_poll_user( member, diff --git a/modpol_core/modules/create_token.lua b/modpol_core/modules/create_token.lua index 6f4c30c..e8becdd 100644 --- a/modpol_core/modules/create_token.lua +++ b/modpol_core/modules/create_token.lua @@ -1,6 +1,6 @@ ---- create_token +--- Create token. +-- Depends on tokenomics -- @module create_token --- depends on tokenomics local create_token = { name = "Create a token (consent)", @@ -9,9 +9,6 @@ local create_token = { hide = false; } ---- (Required) Data for module --- Variables that module uses during the course of a process --- Can be blank create_token.data = { } @@ -19,9 +16,9 @@ create_token.config = { token_name = "" } ---- (Required): initiate function --- @param result (optional) Callback if this module is embedded in other modules --- @function initiate +--- Initiate function +-- @function create_toke:initiate +-- @param result Callback if this module is embedded in other modules function create_token:initiate(result) modpol.interactions.text_query( self.initiator, @@ -49,5 +46,4 @@ function create_token:initiate(result) ) end ---- (Required) Add to module table modpol.modules.create_token = create_token diff --git a/modpol_core/modules/defer_consent.lua b/modpol_core/modules/defer_consent.lua index b931bf8..60492bc 100644 --- a/modpol_core/modules/defer_consent.lua +++ b/modpol_core/modules/defer_consent.lua @@ -1,11 +1,6 @@ ---- defer_consent +--- Defer consent -- @module defer_consent ---- (Required): data table containing name and description of the module --- @field name "Human-readable name (parens OK, no brackets)" --- @field slug "Same as module class name" --- @field desc "Description of the module" --- @field hide "Whether this is a hidden utility module" local defer_consent = { name = "Defer consent", slug = "defer_consent", @@ -13,13 +8,10 @@ local defer_consent = { hide = true; } ---- (Required) Data for module --- Variables that module uses during the course of a process --- Can be blank defer_consent.data = { } ---- (Required): config for module +--- Config for module -- @field defer_org Name or ID of target org -- @field votes_required Threshold passed on to `consent` -- @field prompt String passed on to `consent` @@ -29,9 +21,9 @@ defer_consent.config = { prompt = "Do you consent?" } ---- (Required): initiate function --- @param result (optional) Callback if this module is embedded in other modules --- @function initiate +--- Initiate function +-- @param result Callback if this module is embedded in other modules +-- @function defer_consent:initiate function defer_consent:initiate(result) local defer_org = modpol.orgs.get_org(self.config.defer_org) if not defer_org then diff --git a/modpol_core/modules/display_processes.lua b/modpol_core/modules/display_processes.lua index c851fc5..e2feb21 100644 --- a/modpol_core/modules/display_processes.lua +++ b/modpol_core/modules/display_processes.lua @@ -1,4 +1,4 @@ ---- display_processes +--- Display processes -- @module display_processes local display_processes = { @@ -8,18 +8,15 @@ local display_processes = { hide = false; } ---- (Required) Data for module --- Variables that module uses during the course of a process --- Can be blank display_processes.data = { } display_processes.config = { } ---- (Required): initiate function --- @param result (optional) Callback if this module is embedded in other modules --- @function initiate +--- Initiate function +-- @function display_processes:initiate +-- @param result Callback if this module is embedded in other modules function display_processes:initiate(result) local display_table = {} for k,v in pairs(self.org.processes) do @@ -66,5 +63,4 @@ function display_processes:initiate(result) ) end ---- (Required) Add to module table modpol.modules.display_processes = display_processes diff --git a/modpol_core/modules/join_org.lua b/modpol_core/modules/join_org.lua index 23d277b..ae78a4e 100644 --- a/modpol_core/modules/join_org.lua +++ b/modpol_core/modules/join_org.lua @@ -1,3 +1,5 @@ +--- Adds a user to org +-- @module join_org join_org = {} @@ -7,6 +9,9 @@ join_org.setup = { desc = "If consent process is passed, initiator joins this org." } +--- Adds the user to the org +-- @function join_org.initiate +-- @param result Callback if this module is embedded in other modules function join_org.initiate(result) modpol.interactions.binary_poll_user( initiator, diff --git a/modpol_core/modules/join_org_consent.lua b/modpol_core/modules/join_org_consent.lua index d8d78d8..79423f8 100644 --- a/modpol_core/modules/join_org_consent.lua +++ b/modpol_core/modules/join_org_consent.lua @@ -1,6 +1,7 @@ ---- Join org (consent) +--- Join org (consent). -- A simple module that calls a consent process on an org to add a member. -- Depends on the Consent module. +-- @module join_org_consent local join_org_consent = { name = "Join this org (consent)", @@ -15,6 +16,9 @@ join_org_consent.data = { join_org_consent.config = { } +--- Initiate join org with consent +-- @function join_org_consent:initiate +-- @param result Callback if this module is embedded in other modules function join_org_consent:initiate(result) if self.org:has_member(self.initiator) then modpol.interactions.message( @@ -38,6 +42,8 @@ function join_org_consent:initiate(result) end end +--- Adds member to org, notifies org, and deletes process +-- @function join_org_consent:complete function join_org_consent:complete() self.org:add_member(self.initiator) modpol.interactions.message_org( diff --git a/modpol_core/modules/leave_org.lua b/modpol_core/modules/leave_org.lua index d8e685d..60ef085 100644 --- a/modpol_core/modules/leave_org.lua +++ b/modpol_core/modules/leave_org.lua @@ -1,4 +1,4 @@ ---- leave_org +--- Removes initiator from org -- @module leave_org local leave_org = { @@ -13,10 +13,9 @@ leave_org.data = { leave_org.config = { } ---- (Required): initiate function --- Modules have access to the following instance variables: --- @param result (optional) Callback if this module is embedded in other modules --- @function initiate +--- Removes user from org +-- @function leave_org:initiate +-- @param result Callback if this module is embedded in other modules function leave_org:initiate(result) if self.org == modpol.instance then modpol.interactions.message( @@ -35,5 +34,4 @@ function leave_org:initiate(result) self.org:delete_process(self.id) end ---- (Required) Add to module table modpol.modules.leave_org = leave_org diff --git a/modpol_core/modules/message_org.lua b/modpol_core/modules/message_org.lua index 8262989..a251e5f 100644 --- a/modpol_core/modules/message_org.lua +++ b/modpol_core/modules/message_org.lua @@ -1,4 +1,4 @@ ---- message_org +--- Messages all org members -- @module message_org local message_org = { @@ -14,7 +14,9 @@ message_org.data = { message_org.config = { } +--- Allows user to send input message to all org members -- @function initiate +-- @param result Callback if this module is embedded in other modules function message_org:initiate(result) modpol.interactions.text_query( self.initiator, "Message to all org members: ", @@ -34,5 +36,4 @@ function message_org:initiate(result) self.org:delete_process(self.id) end ---- (Required) Add to module table modpol.modules.message_org = message_org diff --git a/modpol_core/modules/randomizer.lua b/modpol_core/modules/randomizer.lua index fa45851..59061c1 100644 --- a/modpol_core/modules/randomizer.lua +++ b/modpol_core/modules/randomizer.lua @@ -1,5 +1,5 @@ ---- @module randomizer --- A utility module that outputs a random result from a set of options +--- A utility module that outputs a random result from a set of options +-- @module randomizer local randomizer = { name = "Randomizer", @@ -18,6 +18,9 @@ randomizer.config = { result_table = {} } +--- Initiate function +-- @function randomizer:initiate +-- @param result Callback if this module is embedded in other modules function randomizer:initiate(result) self.data.result = result self.data.options_table = modpol.util.copy_table(self.config.options_table) @@ -32,7 +35,8 @@ function randomizer:initiate(result) end end --- returns result_table +--- Returns result_table +-- @function randomizer:random_loop function randomizer:random_loop() self.data.results = 0 if results == self.config.num_results then diff --git a/modpol_core/modules/remove_child_consent.lua b/modpol_core/modules/remove_child_consent.lua index c7ba25f..e2bceb9 100644 --- a/modpol_core/modules/remove_child_consent.lua +++ b/modpol_core/modules/remove_child_consent.lua @@ -1,6 +1,7 @@ ---- Remove child (consent) --- A simple module that calls a consent process on an org to remove its child +--- Remove child (consent). +-- A simple module that calls a consent process on an org to remove its child. -- Depends on the Consent module. +-- @module remove_child_consent local remove_child_consent = { name = "Remove child (consent)", @@ -16,6 +17,9 @@ remove_child_consent.data = { remove_child_consent.config = { } +--- Removes a child org with consent +-- @function remove_child_consent:initiate +-- @param result Callback if this module is embedded in other modules function remove_child_consent:initiate(result) local children = {} for i,v in ipairs(self.org.children) do @@ -54,6 +58,8 @@ function remove_child_consent:initiate(result) end end +--- Complete the remove process +-- @function remove_child_consent:complete function remove_child_consent:complete() modpol.interactions.message_org( self.initiator, self.data.child_to_remove.id, diff --git a/modpol_core/modules/remove_member_consent.lua b/modpol_core/modules/remove_member_consent.lua index 4088e31..8a5a4fe 100644 --- a/modpol_core/modules/remove_member_consent.lua +++ b/modpol_core/modules/remove_member_consent.lua @@ -1,4 +1,4 @@ ---- remove_member_consent +--- Calls consent to remove member from org -- @module remove_member_consent local remove_member_consent = { @@ -15,6 +15,9 @@ remove_member_consent.data = { remove_member_consent.config = { } +--- Removes given member from org +-- @function remove_member_consent:initiate +-- @param result Callback if this module is embedded in other modules function remove_member_consent:initiate(result) -- Abort if in root org if self.org == modpol.instance then @@ -49,6 +52,8 @@ function remove_member_consent:initiate(result) end end +--- Complete after consent +-- @function remove_member_consent:complete function remove_member_consent:complete() modpol.interactions.message_org( self.initiator, self.org.id, @@ -60,5 +65,4 @@ function remove_member_consent:complete() if self.data.result then self.data.result() end end ---- (Required) Add to module table modpol.modules.remove_member_consent = remove_member_consent diff --git a/modpol_core/modules/remove_org.lua b/modpol_core/modules/remove_org.lua index b2118d1..eb217f8 100644 --- a/modpol_core/modules/remove_org.lua +++ b/modpol_core/modules/remove_org.lua @@ -1,8 +1,6 @@ ---- @module Remove Org --- A simple module that removes an org. +--- A simple module that removes an org. +-- @module remove_org - ---- Main module table remove_org = { name = "Remove this org", slug = "remove_org", @@ -12,8 +10,9 @@ remove_org = { remove_org.config = {} remove_org.data = {} ---- Initiate function --- @function initiate +--- Removes org +-- @function remove_org:initiate +-- @param result Callback if this module is embedded in other modules function remove_org:initiate(result) if self.org == modpol.instance then modpol.interactions.message( diff --git a/modpol_core/modules/remove_org_consent.lua b/modpol_core/modules/remove_org_consent.lua index 9dcb391..61ad4a2 100644 --- a/modpol_core/modules/remove_org_consent.lua +++ b/modpol_core/modules/remove_org_consent.lua @@ -1,6 +1,7 @@ --- Remove org (consent) -- A simple module that calls a consent process on an org to remove it. -- Depends on the Consent module. +-- @module remove_org_consent local remove_org_consent = { name = "Remove this org (consent)", @@ -15,6 +16,9 @@ remove_org_consent.data = { remove_org_consent.config = { } +--- Remove org if all members consent +-- @function remove_org_consent:initiate +-- @param result Callback if this module is embedded in other modules function remove_org_consent:initiate(result) if self.org == modpol.instance then modpol.interactions.message( @@ -40,6 +44,8 @@ function remove_org_consent:initiate(result) end end +--- Complete after consent +-- @function remove_org_consent:complete function remove_org_consent:complete() modpol.interactions.message_org( self.initiator, self.org.id, diff --git a/modpol_core/modules/remove_process.lua b/modpol_core/modules/remove_process.lua index b5c5339..13b12e2 100644 --- a/modpol_core/modules/remove_process.lua +++ b/modpol_core/modules/remove_process.lua @@ -1,4 +1,4 @@ ---- remove_process +--- Remove a process -- @module remove_process local remove_process = { @@ -8,18 +8,15 @@ local remove_process = { hide = false; } ---- (Required) Data for module --- Variables that module uses during the course of a process --- Can be blank remove_process.data = { } remove_process.config = { } ---- (Required): initiate function --- @param result (optional) Callback if this module is embedded in other modules --- @function initiate +--- Initiate function +-- @function remove_process:initiate +-- @param result Callback if this module is embedded in other modules function remove_process:initiate(result) -- prepare process options local available_processes = {} @@ -108,6 +105,4 @@ function remove_process:initiate(result) ) end - ---- (Required) Add to module table modpol.modules.remove_process = remove_process diff --git a/modpol_core/modules/rename_org_consent.lua b/modpol_core/modules/rename_org_consent.lua index 551bf20..49629b1 100644 --- a/modpol_core/modules/rename_org_consent.lua +++ b/modpol_core/modules/rename_org_consent.lua @@ -1,6 +1,7 @@ --- Rename org (consent) -- A simple module that calls a consent process on an org to rename it. -- Depends on the Consent module. +-- @module rename_org_consent local rename_org_consent = { name = "Rename this org (consent)", @@ -16,6 +17,9 @@ rename_org_consent.data = { rename_org_consent.config = { } +--- Renames the org after consent is reached +-- @function rename_org_consent:initiate +-- @param result Callback if this module is embedded in other modules function rename_org_consent:initiate(result) modpol.interactions.text_query( self.initiator,"New org name: ", @@ -63,6 +67,8 @@ function rename_org_consent:initiate(result) ) end +--- Changes the name of the org after consent is reached +-- @funciton rename_org_consent function rename_org_consent:complete() modpol.interactions.message_org( self.initiator, diff --git a/modpol_core/modules/send_token.lua b/modpol_core/modules/send_token.lua index 84e0019..98d629b 100644 --- a/modpol_core/modules/send_token.lua +++ b/modpol_core/modules/send_token.lua @@ -1,6 +1,6 @@ ---- send_token +--- Send token. +-- Depends on tokenomics -- @module send_token --- depends on tokenomics local send_token = { name = "Send tokens", @@ -19,9 +19,9 @@ send_token.config = { token_name = "" } ---- (Required): initiate function --- @param result (optional) Callback if this module is embedded in other modules --- @function initiate +--- initiate function +-- @function send_token:initiate +-- @param result Callback if this module is embedded in other modules function send_token:initiate(result) local token_list = {} if self.org.tokens then @@ -73,5 +73,4 @@ function send_token:initiate(result) end end ---- (Required) Add to module table modpol.modules.send_token = send_token diff --git a/modpol_core/modules/template.lua b/modpol_core/modules/template.lua index 360af59..3a4c531 100644 --- a/modpol_core/modules/template.lua +++ b/modpol_core/modules/template.lua @@ -1,11 +1,12 @@ ---- module_template +--- Template for module writers. +-- Short description goes here. -- @module module_template ---- (Required): data table containing name and description of the module +--- (Required): Data table containing name and description of the module -- @field name "Human-readable name (parens OK, no brackets)" -- @field slug "Same as module class name" -- @field desc "Description of the module" --- @field hide "Whether this is a hidden utility module" +-- @field hide Whether this is a hidden utility module local module_template = { name = "Module Human-Readable Name", slug = "module_template", @@ -14,12 +15,12 @@ local module_template = { } --- (Required) Data for module --- Variables that module uses during the course of a process +-- Variables that module uses during the course of a process. -- Can be blank module_template.data = { } ---- (Required): config for module +--- (Required): Config for module -- Defines the input parameters to the module initiate function. -- Can be blank -- When calling a module from within another module, @@ -32,13 +33,13 @@ module_template.config = { field_2 = "majority" } ---- (Required): initiate function +--- (Required): Initiate function -- Modules have access to the following instance variables: --
  • self.org (the org the module was called in),
  • --
  • self.initiator (the user that callced the module),
  • --
  • self.id (the process id of the module instance)
  • +-- @function module_template:initiate -- @param result (optional) Callback if this module is embedded in other modules --- @function initiate function module_template:initiate(result) -- call interaction functions here! diff --git a/modpol_core/modules/tokenomics.lua b/modpol_core/modules/tokenomics.lua index d9aa306..372fda7 100644 --- a/modpol_core/modules/tokenomics.lua +++ b/modpol_core/modules/tokenomics.lua @@ -1,6 +1,6 @@ ---- tokenomics --- @module tokenomics +--- Tokenomics. -- Depends on consent +-- @module tokenomics local tokenomics = { name = "Tokenomics", @@ -9,14 +9,11 @@ local tokenomics = { hide = true; } ---- (Required) Data for module --- Variables that module uses during the course of a process --- Can be blank tokenomics.data = { result = nil } ---- (Required): config for module +--- Config for module -- @field consent Require consent to create? -- @field token_variables the data that goes into the token -- @field token_slug A no-spaces slug for the token @@ -33,11 +30,11 @@ tokenomics.config = { } } ---- (Required): initiate function: creates a token in an org --- set up the token data structure --- create an org treasury +--- Initiate function: creates a token in an org. +-- Set up the token data structure. +-- Create an org treasury +-- @function tokenomics:initiate -- @param result (optional) Callback if this module is embedded in other modules --- @function initiate function tokenomics:initiate(result) -- TODO need to create a series of interactions to get the info from users self.data.result = result @@ -69,6 +66,8 @@ function tokenomics:initiate(result) end end +--- Create token +-- @function tokenomics:create_token function tokenomics:create_token() if not self.org.tokens then self.org.tokens = {} end self.org.tokens[self.config.token_slug] = @@ -89,8 +88,9 @@ end -- all need to write to persistent data -- amount can be positive or negative (except transfer) --- returns balance --- if no user, get treasury balance +--- Returns balance. +-- If no user, get treasury balance +-- @function tokenomics.balance -- @param org Name (string) or id (num) -- @param token Slug (string) -- @param user Name (string) @@ -112,8 +112,12 @@ function tokenomics.balance(org, token, user) end end +--- Change balance +-- @function tokenomics.change_balance -- @param org Org name (string) or id (number) -- @param token Token slug (string) +-- @param user +-- @param amount function tokenomics.change_balance(org, token, user, amount) local this_org = modpol.orgs.get_org(org) if not this_org then @@ -139,6 +143,12 @@ function tokenomics.change_balance(org, token, user, amount) end end +--- Transfer tokens from a sender to recipient +-- @function tokenomics.transfer +-- @param org +-- @param token +-- @param sender +-- @param recipient -- @param amount Positive number function tokenomics.transfer(org, token, sender, recipient, amount) local sender_balance = tokenomics.balance(org, token, sender) @@ -161,6 +171,11 @@ function tokenomics.transfer(org, token, sender, recipient, amount) end end +--- Transfer from treasury +-- @function tokenomics.treasury_transfer +-- @param org +-- @param token +-- @param recipient -- @param amount Can be positive or negative, assumes flow from treasury to recipient function tokenomics.treasury_transfer(org, token, recipient, amount) local this_org = modpol.orgs.get_org(org) @@ -189,7 +204,11 @@ function tokenomics.treasury_transfer(org, token, recipient, amount) end end --- creates new tokens in the org treasury +--- Creates new tokens in the org treasury +-- @function tokenomics.issue +-- @param org +-- @param token +-- @param amount function tokenomics.issue(org, token, amount) local this_org = modpol.orgs.get_org(org) if not this_org then @@ -209,5 +228,4 @@ end ------------------------------------------ ---- (Required) Add to module table modpol.modules.tokenomics = tokenomics diff --git a/modpol_core/orgs/base.lua b/modpol_core/orgs/base.lua index 6cd2227..6b37e3f 100644 --- a/modpol_core/orgs/base.lua +++ b/modpol_core/orgs/base.lua @@ -1,5 +1,5 @@ ---- Orgs: Base --- Basic functions for orgs +--- Basic function for orgs +-- @module modpol.orgs.base modpol.orgs = modpol.orgs or { @@ -23,8 +23,10 @@ function temp_org() } end --- ================================================== --- returns org when given its id or name +--- Return org when given its id or name +-- @function modpol.orgs.get_org +-- @param arg string for name of org or id of org +-- @return org specified by id or name function modpol.orgs.get_org(arg) if type(arg) == 'string' then for id, org in ipairs(modpol.orgs.array) do @@ -38,8 +40,9 @@ function modpol.orgs.get_org(arg) return nil end --- =============================================== --- returns a table list of all org names +--- Return a table list of all org names +-- @function modpol.orgs.list_all +-- @return a table list of all org names function modpol.orgs.list_all() local org_table for k, v in ipairs(modpol.orgs.array) do @@ -54,9 +57,10 @@ function modpol.orgs.list_all() return org_table end --- Function: modpol.orgs.user_orgs(user) --- input: user (string) --- output: table of strings of org names +--- Return the orgs of a user +-- @function modpol.orgs.user_orgs +-- @param user string of user name +-- @return table of strings of org names function modpol.orgs.user_orgs(user) local all_orgs = modpol.orgs.list_all() local user_orgs = {} @@ -69,8 +73,8 @@ function modpol.orgs.user_orgs(user) return user_orgs end --- =========================================== --- deletes all orgs except for the instance +--- Deletes all orgs except for the +-- @function modpol.orgs.reset function modpol.orgs.reset() local instance_members = modpol.util.copy_table(modpol.instance.members) @@ -88,9 +92,9 @@ function modpol.orgs.reset() modpol.orgs:record('Resetting all orgs', 'org_reset') end --- =================================================== --- initializes the instance (root org) +--- Initializes the instance (root org) -- can only be run once, as only one instance can exist +-- @function modpol.orgs.init_instance function modpol.orgs.init_instance() local error_msg if modpol.orgs.array[1] then @@ -116,8 +120,8 @@ end -- FUNCTIONS BEYOND HERE OPERATE ON ORG OBJECTS --- ======================================================= --- records a log message to the modpol ledger +--- Records a log message to the modpol ledger +-- @function modpol.orgs:record function modpol.orgs:record(msg, entry_type) local entry = { timestamp = '', @@ -150,10 +154,12 @@ function modpol.orgs:record(msg, entry_type) modpol.store_data() end --- ================================================== --- adds a new sub org to the org it is called on --- input: name (string), user (string) --- ex: instance:add_org('town hall') +--- Adds a new sub org to the org it is called on. +-- Ex: instance:add_org('town hall') +-- @function modpol.orgs:add_org +-- @param name (string) name of new org +-- @param user (string) +-- @return child org created function modpol.orgs:add_org(name, user) if self.id == nil then modpol.ocutil.log('Error in ' .. self.name .. ':add_org -> add_org can only be called by another org') @@ -196,10 +202,10 @@ function modpol.orgs:add_org(name, user) return child_org end --- ======================================== --- recursively deletes an org and its suborgs --- leaves entry in modpol.orgs.array as a string "removed" --- note: "reason" param was removed, can be added back +--- Recursively deletes an org and its suborgs +-- Leaves entry in modpol.orgs.array as a string "removed". +-- Note: "reason" param was removed, can be added back +-- @function modpol.orgs:delete function modpol.orgs:delete() if self.id == 1 then modpol.ocutil.log('Error in ' .. self.name .. ':delete -> cannot delete instance') @@ -221,9 +227,10 @@ function modpol.orgs:delete() end - --- =========================================== --- internal function to get the index of a member name +--- Internal function to get the index of a member name +-- @function modpol.orgs:get_member_index +-- @param member +-- @return index of given member function modpol.orgs:get_member_index(member) for k, v in ipairs(self.members) do if v == member then @@ -232,8 +239,9 @@ function modpol.orgs:get_member_index(member) end end --- =========================================== --- adds a user to an org +--- Adds a user to an org +-- @function modpol.orgs:add_member +-- @param user function modpol.orgs:add_member(user) for id, name in ipairs(self.members) do if user == name then @@ -255,8 +263,9 @@ function modpol.orgs:add_member(user) end --- ======================================= --- removes a user from an org +--- Removes a user from an org +-- @function modpol.orgs:remove_member +-- @param user function modpol.orgs:remove_member(user) -- sets the array index to an empty string so that consecutive list is preserved -- empty spots will get filled in by new members @@ -270,8 +279,10 @@ function modpol.orgs:remove_member(user) self:record('Removed member ' .. user, 'del_member') end --- =========================================== --- boolean check whether user is an org +--- Boolean check whether user is an org +-- @function modpol.orgs:has_member +-- @param user +-- @return true if user is in org, false if not function modpol.orgs:has_member(user) local user_index = self:get_member_index(user) if user_index then @@ -281,9 +292,9 @@ function modpol.orgs:has_member(user) end end --- ================================== --- Function: modpol.orgs:list_members() --- output: a table of the names (string) of members +--- +-- @function modpol.orgs:list_members() +-- @return a table of the names (string) of members function modpol.orgs:list_members() local members = {} for k, v in ipairs(self.members) do @@ -292,8 +303,9 @@ function modpol.orgs:list_members() return members end --- ============================== --- because member list uses lazy deletion, using #org.members will not show an accurate number +--- Because member list uses lazy deletion, using #org.members will not show an accurate number +-- @function modpol.orgs:get_member_count +-- @return numbers of members function modpol.orgs:get_member_count() local count = 0 for k, v in ipairs(self.members) do @@ -304,9 +316,13 @@ function modpol.orgs:get_member_count() end return count end --- ==================================== --- adds a new policy to the policy table --- must define the policy type, process associated with it, and whether the request must be made by an org member + +--- Adds a new policy to the policy table. +-- Must define the policy type, process associated with it, and whether the request must be made by an org member +-- @function modpol.orgs:set_policy +-- @param policy_type +-- @param process_type +-- @param must_be_member Boolean function modpol.orgs:set_policy(policy_type, process_type, must_be_member) local new_policy = { process_type = process_type, diff --git a/modpol_core/orgs/process.lua b/modpol_core/orgs/process.lua index f00ad2c..aedaa36 100644 --- a/modpol_core/orgs/process.lua +++ b/modpol_core/orgs/process.lua @@ -1,5 +1,12 @@ --- Process functions for orgs +-- @module modpol.orgs.process +--- Call modules +-- @function modpol.orgs.call_module +-- @param module_slug Same as module name +-- @param intiator Initiator for module +-- @param config Config for module +-- @param result function modpol.orgs:call_module(module_slug, initiator, config, result, parent_id) if not modpol.modules[module_slug] then modpol.ocutil.log('Error in ' .. self.name .. ':call_module -> module "' .. module_slug .. '" not found') @@ -48,6 +55,10 @@ function modpol.orgs:call_module(module_slug, initiator, config, result, parent_ return index end +--- Get the root process of the given id +-- @function modpol.orgs.get_root_process +-- @param id +-- @return root process function modpol.orgs:get_root_process(id) local process = self.processes[id] while (process.parent_id) do @@ -56,6 +67,9 @@ function modpol.orgs:get_root_process(id) return process end +--- Delete the process given id +-- @function modpol.orgs.delete_process +-- @param id function modpol.orgs:delete_process(id) local process = self.processes[id] if process and process ~= "deleted" then @@ -74,10 +88,18 @@ function modpol.orgs:delete_process(id) end end +--- Delete process tree by id +-- @function modpol.orgs:delete_process_tree +-- @param id Id of process tree function modpol.orgs:delete_process_tree(id) self:delete_process(self:get_root_process(id).id) end +--- Add a new pending action +-- @function modpol.orgs:add_pending_action +-- @param process_id Process id +-- @param user User adding the action +-- @param callback function modpol.orgs:add_pending_action(process_id, user, callback) self.pending[user] = self.pending[user] or {} self.pending[user][process_id] = callback @@ -85,18 +107,29 @@ function modpol.orgs:add_pending_action(process_id, user, callback) user, "New pending action in org "..self.name) end +--- Remove a pending action +-- @function modpol.orgs:remove_pending_action +-- @param process_id Process id to be removed +-- @param user function modpol.orgs:remove_pending_action(process_id, user) if self.pending[user] then self.pending[user][process_id] = nil end end +--- Wipe all pending actions for process +-- @function modpol.orgs:wipe_pending_actions +-- @param process_id function modpol.orgs:wipe_pending_actions(process_id) for user in pairs(self.pending) do self.pending[user][process_id] = nil end end +--- Check if there are pending actions for user +-- @function modpol.orgs:has_pending_actions +-- @param user User +-- @return True if there are pending actions for a user, false if not function modpol.orgs:has_pending_actions(user) -- next() will return the next pair in a table -- if next() returns nil, the table is empty @@ -111,6 +144,10 @@ function modpol.orgs:has_pending_actions(user) end end +--- Interact a user with given process +-- @function modpol.orgs:interact +-- @param process_id +-- @param user function modpol.orgs:interact(process_id, user) local process = self.processes[process_id] if self.pending[user] then diff --git a/modpol_core/util/misc.lua b/modpol_core/util/misc.lua index 202374a..e92b1a2 100644 --- a/modpol_core/util/misc.lua +++ b/modpol_core/util/misc.lua @@ -1,8 +1,12 @@ +--- Miscellaneous functions +-- @module modpol.util.misc + modpol.util = {} ---- @function modpol.copy_table --- @param t table --- Returns a copy of the table inputted +--- Returns a copy of the table inputted +-- @function modpol.util.copy_table +-- @param t table to copy +-- @return copy of table function modpol.util.copy_table(t) local t2 = {} if pairs(t) then @@ -17,9 +21,10 @@ function modpol.util.copy_table(t) return t2 end ---- @function modpol.num_pairs --- @param t table with pairs --- Returns the number of elements in a pairs table +--- Returns the number of elements in a pairs table +-- @function modpol.util.num_pairs +-- @param t pairs table +-- @return number of elements in pairs table function modpol.util.num_pairs(t) local i = 0 for k,v in pairs(t) do diff --git a/modpol_minetest/modules/priv_to_org.lua b/modpol_minetest/modules/priv_to_org.lua index 2a960b2..6f2b8dd 100644 --- a/modpol_minetest/modules/priv_to_org.lua +++ b/modpol_minetest/modules/priv_to_org.lua @@ -1,6 +1,6 @@ --- Set privilege to org members --- @module priv_to_org -- Allows initiator to grant a priv they have to all members of an org +-- @module priv_to_org local priv_to_org = { name = "Set privilege to org members", @@ -14,9 +14,9 @@ priv_to_org.data = { priv_to_org.config = { } ---- (Required): initiate function --- @param result (optional) Callback if this module is embedded in other modules --- @function initiate +--- Initiate function +-- @function priv_to_org:initiate +-- @param result function priv_to_org:initiate(result) local player_privs = minetest.get_player_privs(self.initiator) -- construct table for display @@ -45,5 +45,4 @@ function priv_to_org:initiate(result) if result then result() end end ---- (Required) Add to module table modpol.modules.priv_to_org = priv_to_org diff --git a/modpol_minetest/overrides/interactions.lua b/modpol_minetest/overrides/interactions.lua index 69b3fe9..9bbca45 100644 --- a/modpol_minetest/overrides/interactions.lua +++ b/modpol_minetest/overrides/interactions.lua @@ -1,5 +1,4 @@ --- INTERACTIONS.LUA (for Minetest) - +--- INTERACTIONS.LUA (for Minetest) -- CONTEXTUAL STUFF -- ================ diff --git a/modpol_minetest/overrides/users.lua b/modpol_minetest/overrides/users.lua index 3d25227..ac8a36d 100644 --- a/modpol_minetest/overrides/users.lua +++ b/modpol_minetest/overrides/users.lua @@ -1,9 +1,9 @@ -- =================================================================== --- Function: modpol.list_users(org) --- Overwrites function at /users.lua --- Params: +--- Overwrites function at /users.lua. -- if nil, lists instance members; if an org name, lists its members --- Output: a table with names of players currently in the game +-- @function modpol.list_users +-- @param org +-- @return a table with names of players currently in the game modpol.list_users = function(org) local users = {} if (org == nil) then -- no specified org; all players