Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automated SKILL API Documentation #22

Open
3 tasks
curtisma opened this issue Aug 18, 2022 · 2 comments
Open
3 tasks

Automated SKILL API Documentation #22

curtisma opened this issue Aug 18, 2022 · 2 comments
Labels
enhancement New feature or request help wanted Extra attention is needed needs definition

Comments

@curtisma
Copy link
Contributor

curtisma commented Aug 18, 2022

Problem Statement

We would like to be able to generate API documentation of SKILL code from SKILL function docstrings in the official SKILL function docstring format which supports the Virtuoso function browser. It should produce API docs similar to the output of the Sphinx autodoc directive.

Proposed Solution

Ideally this solution would be based on Python for ease of integration with our documentation CI on GitHub but a SKILL-based solution for creating it locally could also work ok.

Alternatives Considered

  • SKILLdoc-ng is an existing solution but it doesn't use the official SKILL docstring format which supports the Virtuoso function browser and it's not clear if it would support integration into our existing Sphinx-based documentation

Proposed Action Plan

  • 1. we'll do this
  • 2. We'll do that
  • 3. Then we'll add tests for this and that.
@curtisma curtisma added enhancement New feature or request needs definition help wanted Extra attention is needed labels Aug 18, 2022
@curtisma
Copy link
Contributor Author

Here is the start of a method using the fdoc skill function to read the docstrings in skill.

let((Module
     (module_description "Create Virtue SKILL packages"))
    )



Module = let(()

  procedure(FunctionDocStrings(package "l")
    "Reads the documentation string for all the public functions of a package"
    let((property_symbol)
    for(property
      fdoc()
    )
  ))

  list(nil
    'New New
    'IsModule IsModule
  )
)

Module->New('Module Module Virtue
             ?description module_description)
)

@tbrandtner
Copy link

@curtisma : Did you try that fdoc call inside a Skill++ let()? Is it really returning all docstrings of the local procedures? imho it can only read the fdoc slot of symbols. And these slots are global - which means that if you access those slots later, they might contain other data - and not necessarily the docstrings of that locally defined procedures anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed needs definition
Projects
None yet
Development

No branches or pull requests

2 participants