Changes to "References" between 2018-07-06 19:58:51 and 2018-07-07 03:53:31

1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
17
18
19


20
21
22
23
24
25
26
27


28
29

30
31

32
33
34

35
36
37
38
39
40
41


1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
16
17


18
19
20
21
22
23
24
25


26
27
28

29
30

31
32
33

34
35
36
37
38
39


40
41








-
+








-
-
+
+






-
-
+
+

-
+

-
+


-
+





-
-
+
+
#### References / Existing Implementations

PMD is somewhat cemented now for most of my projects. Even if you don't actually need the management features. This is just a list of existing parsers and usage schemes.

## Python: [streamtuner2](http://fossil.include-once.org/streamtuner2/) → [pluginconf](https://pypi.org/project/pluginconf/)

 * Comes with a full parser, and handles plugin activation with a simple configuration hashtable.
 * [plugin_meta()](http://fossil.include-once.org/streamtuner2/artifact/8ae013bd9365f11be08fe429caf0a7f2e18976cc) can extract from files or loaded modules, and pyz archives
 * The admin UI sets conf.plugins{} for activcation states as follows:
 * The admin UI sets a `.plugins{}` dict with activation states:

        "plugins": {
           "bookmarks": true, 
           "cachereset": false, 
           "configwin": true, 
           "continuous_record": false, 
           "delicast": true, 

 * Plugins are scanned for meta infos on each startup (there isn't too many), and instantiated according to config table.
 * Hooks/`type:` are not used much. Instead class types are used implicitly, or plugins register themselves with the main application.
 * Plugins are scanned for meta infos on each startup (there isn't too many), and instantiated according to config list.
 * Hooks/`type:` aren't utilized much. Instead class types are used implicitly, or plugins register themselves with the main application.
 * `config:` options show up in a neat combined settings window, defaults are applied on startup / to the conf{} dict.
 * Defines an [extra `arg:` attribute](http://fossil.include-once.org/streamtuner2/wiki/plugin+meta+data) for the `config:` list.

## Powershell: [Clicky](http://fossil.include-once.org/clickycoloury/)

 * Has a [full parser](http://fossil.include-once.org/clickycoloury/artifact/fb2017bd6797bf6c2c9df6c92966632c7262cb61), and utilizes both config options and other meta fields at runtime..
 * `type:` covers a couple of magic values (init*, inline, cli, window, …) deciding on when to run/inline a script.
 * But primarily the `category:` is used for UI hookup (menu structuring). Which is one of the more basic uses for plugin meta data.
 * `type:` covers a couple of magic values (`init*`,` inline`, `cli`, `window`, …) deciding on when to run/inline a script.
 * But primarily the `category:` is used for UI hookup (menu structuring). Which is one of the more basic uses for PMD.
 * Defines a [bunch of custom fields](http://fossil.include-once.org/clickycoloury/wiki/plugin+meta+data) like `hidden:`, `nomenu:`, `vars:` (like config struct), `key:` and `shortcut:`, which avoids lots of code duplication for plugins/scripts.
 * But there's no plugin activation states as such, all scripts are "loaded" all the time. Though there's a basic Plugin Manager now.
 * But there's no plugin activation states as such. All scripts are "loaded" all the time. Though there's a basic Plugin Manager now.

## Ruby: [cross packaage maker](http://fossil.include-once.org/xpm/)
## Ruby: [cross package maker](http://fossil.include-once.org/xpm/)

 * Implements just a [crude parser](http://fossil.include-once.org/xpm/artifact/35d5f731ae94db88356bd05042812970781261d0).
 * Uses PMD partially as source for packaging info. (Wasn't intended for that, but very convenient!)
 * Uses PMD partially as source for packaging info. (Wasn't intended for that, but very applicable nonetheless!)
 * Defines the `#pack:` specifier for relative file references. Albeit partially supports `#depends:` specifiers.

## PHP: [libconfig / Generic PHP Plugins](http://milki.include-once.org/genericplugins/)

 * Was the original implementation. Still pretty close to the current spec.
 * Only the `config:` syntax uses HTML-style rather than JSOL attributes.
 * Main goal here was a *non-destructive `config.php` editing* feature via plugin meta data.
 * Except that the `config:` syntax uses HTML-style rather than JSOL attributes.
 * Main goal here was a *non-destructive `config.php` editing* feature via plugin meta data