index.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env node
  2. /**
  3. * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  4. *
  5. * @author David Sehnal <david.sehnal@gmail.com>
  6. */
  7. import * as _ from '../../mol-plugin-state/transforms';
  8. import { StateTransformer, StateObject } from '../../mol-state';
  9. import { StringBuilder } from '../../mol-util';
  10. import * as fs from 'fs';
  11. import { paramsToMd } from './pd-to-md';
  12. import { PluginContext } from '../../mol-plugin/context';
  13. import { ParamDefinition } from '../../mol-util/param-definition';
  14. // force the transform to be evaluated
  15. _.StateTransforms.Data.Download.id;
  16. // Empty plugin context
  17. const ctx = new PluginContext({
  18. behaviors: []
  19. });
  20. const builder = StringBuilder.create();
  21. function typeToString(o: StateObject.Ctor[]) {
  22. if (o.length === 0) return '()';
  23. return o.map(o => o.name).join(' | ');
  24. }
  25. function writeTransformer(t: StateTransformer) {
  26. StringBuilder.write(builder, `## <a name="${t.id.replace('.', '-')}"></a>${t.id} :: ${typeToString(t.definition.from)} -> ${typeToString(t.definition.to)}`);
  27. StringBuilder.newline(builder);
  28. if (t.definition.display.description) {
  29. StringBuilder.write(builder, `*${t.definition.display.description}*`);
  30. StringBuilder.newline(builder);
  31. }
  32. StringBuilder.newline(builder);
  33. if (t.definition.params) {
  34. const params = t.definition.params(void 0, ctx);
  35. StringBuilder.write(builder, `### Parameters`);
  36. StringBuilder.newline(builder);
  37. StringBuilder.write(builder, paramsToMd(params));
  38. StringBuilder.newline(builder);
  39. StringBuilder.write(builder, `### Default Parameters`);
  40. StringBuilder.newline(builder);
  41. StringBuilder.write(builder, `\`\`\`js\n${JSON.stringify(ParamDefinition.getDefaultValues(params), null, 2)}\n\`\`\``);
  42. StringBuilder.newline(builder);
  43. }
  44. StringBuilder.write(builder, '----------------------------');
  45. StringBuilder.newline(builder);
  46. }
  47. const transformers = StateTransformer.getAll();
  48. StringBuilder.write(builder, '# Mol* Plugin State Transformer Reference');
  49. StringBuilder.newline(builder);
  50. StringBuilder.newline(builder);
  51. transformers.forEach(t => {
  52. StringBuilder.write(builder, `* [${t.id}](#${t.id.replace('.', '-')})`);
  53. StringBuilder.newline(builder);
  54. });
  55. StringBuilder.newline(builder);
  56. StringBuilder.write(builder, '----------------------------');
  57. StringBuilder.newline(builder);
  58. transformers.forEach(t => writeTransformer(t));
  59. fs.writeFileSync(`docs/state/transforms.md`, StringBuilder.getString(builder));