activity/tools/vocab/gen/README.md

906 B

gen

This library is used to generate the go-fed/activity/vocab library implementation. Changes to this will fundamentally change the implementation of the vocab library. If custom ActivityStream types are required, no changes to this are required. Instead, the go-fed/activity/tools/defs library will need edits.

Creating a static type implementation from the specification is not straightforward due to the following considerations that stem from its roots in JSON-LD:

  • Any property could be an IRI (url.URL)
  • Most properties could be another ActivityStream type (map[string]interface{}) or a value (time.Time, etc)
  • Most properties can have multiple values ([]interface{})
  • In a multiple value scenario, each value could once more be an IRI, another ActivityStream type, or a value

The current generation algorithm leaves ample opportunity for improvements and optimizations.