Repository: esdoc/esdoc-plugins
Branch: master
Commit: 2de5022baa56
Files: 605
Total size: 543.1 KB
Directory structure:
gitextract_msrci168/
├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── _template/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── MyClass.js
│ │ └── MyClass.test.js
│ └── util.js
├── esdoc-accessor-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── MyClass.js
│ │ └── MyClass.test.js
│ └── util.js
├── esdoc-brand-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── misc/
│ │ └── publish-html-mock-plugin.js
│ ├── package.json
│ └── src/
│ ├── MyClass.js
│ └── MyClass.test.js
├── esdoc-coverage-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ └── src/
│ ├── MyClass.js
│ └── MyClass.test.js
├── esdoc-ecmascript-proposal-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── AsyncGenerators.js
│ │ ├── ClassProperties.js
│ │ ├── Decorators.js
│ │ ├── DoExpressions.js
│ │ ├── DynamicImport.js
│ │ ├── ECMAScriptProposal.test.js
│ │ ├── ExportExtensions.js
│ │ ├── FunctionBind.js
│ │ ├── FunctionSent.js
│ │ └── ObjectRestSpread.js
│ └── util.js
├── esdoc-exclude-source-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ └── src/
│ ├── MyClass.js
│ └── MyClass.test.js
├── esdoc-external-ecmascript-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ ├── Plugin.js
│ │ └── external-ecmascript.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ └── src/
│ ├── MyClass.js
│ └── MyClass.test.js
├── esdoc-external-nodejs-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ ├── Plugin.js
│ │ └── external-nodejs.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── MyClass.js
│ │ └── MyClass.test.js
│ └── util.js
├── esdoc-external-webapi-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ ├── Plugin.js
│ │ └── external-webapi.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── MyClass.js
│ │ └── MyClass.test.js
│ └── util.js
├── esdoc-flow-type-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── FlowType.js
│ │ └── FlowType.test.js
│ └── util.js
├── esdoc-importpath-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── package.json
│ ├── src/
│ │ ├── Index.js
│ │ ├── MyClass1.js
│ │ ├── MyClass2.js
│ │ └── all.test.js
│ └── util.js
├── esdoc-inject-gtm-plugin/
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── misc/
│ │ └── publish-html-mock-plugin.js
│ └── src/
│ ├── MyClass.js
│ └── MyClass.test.js
├── esdoc-inject-script-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── misc/
│ │ ├── inject.js
│ │ └── publish-html-mock-plugin.js
│ └── src/
│ ├── MyClass.js
│ └── MyClass.test.js
├── esdoc-inject-style-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── misc/
│ │ ├── inject.css
│ │ └── publish-html-mock-plugin.js
│ └── src/
│ ├── MyClass.js
│ └── MyClass.test.js
├── esdoc-integrate-manual-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── CHANGELOG.md
│ ├── esdoc.json
│ ├── init.js
│ ├── manual/
│ │ ├── advanced.md
│ │ ├── all.test.js
│ │ ├── configuration.md
│ │ ├── design.md
│ │ ├── example.md
│ │ ├── faq.md
│ │ ├── index.md
│ │ ├── installation.md
│ │ ├── overview.md
│ │ ├── tutorial.md
│ │ ├── usage1.md
│ │ └── usage2.md
│ ├── src/
│ │ └── Dummy.js
│ └── util.js
├── esdoc-integrate-test-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ ├── Plugin.js
│ │ ├── TestDoc.js
│ │ ├── TestDocFactory.js
│ │ └── TestFileDoc.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ └── Dummy.js
│ ├── test/
│ │ ├── Test.js
│ │ └── Test.test.js
│ └── util.js
├── esdoc-jsx-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── MyClass.js
│ │ └── MyClass.test.js
│ └── util.js
├── esdoc-lint-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ └── src/
│ ├── MyArrowFunction.js
│ ├── MyClass.js
│ └── results.test.js
├── esdoc-publish-html-plugin/
│ ├── .babelrc
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ ├── Builder/
│ │ │ ├── ClassDocBuilder.js
│ │ │ ├── DocBuilder.js
│ │ │ ├── DocResolver.js
│ │ │ ├── FileDocBuilder.js
│ │ │ ├── IdentifiersDocBuilder.js
│ │ │ ├── IndexDocBuilder.js
│ │ │ ├── ManualDocBuilder.js
│ │ │ ├── SearchIndexBuilder.js
│ │ │ ├── SingleDocBuilder.js
│ │ │ ├── SourceDocBuilder.js
│ │ │ ├── StaticFileBuilder.js
│ │ │ ├── TestDocBuilder.js
│ │ │ ├── TestFileDocBuilder.js
│ │ │ ├── template/
│ │ │ │ ├── class.html
│ │ │ │ ├── css/
│ │ │ │ │ ├── github.css
│ │ │ │ │ ├── identifiers.css
│ │ │ │ │ ├── manual.css
│ │ │ │ │ ├── prettify-tomorrow.css
│ │ │ │ │ ├── search.css
│ │ │ │ │ ├── source.css
│ │ │ │ │ ├── style.css
│ │ │ │ │ └── test.css
│ │ │ │ ├── details.html
│ │ │ │ ├── file.html
│ │ │ │ ├── identifiers.html
│ │ │ │ ├── index.html
│ │ │ │ ├── layout.html
│ │ │ │ ├── manual.html
│ │ │ │ ├── manualCardIndex.html
│ │ │ │ ├── manualIndex.html
│ │ │ │ ├── nav.html
│ │ │ │ ├── properties.html
│ │ │ │ ├── script/
│ │ │ │ │ ├── inherited-summary.js
│ │ │ │ │ ├── inner-link.js
│ │ │ │ │ ├── manual.js
│ │ │ │ │ ├── patch-for-local.js
│ │ │ │ │ ├── prettify/
│ │ │ │ │ │ ├── Apache-License-2.0.txt
│ │ │ │ │ │ └── prettify.js
│ │ │ │ │ ├── pretty-print.js
│ │ │ │ │ ├── search.js
│ │ │ │ │ └── test-summary.js
│ │ │ │ ├── single.html
│ │ │ │ ├── source.html
│ │ │ │ ├── summary.html
│ │ │ │ ├── test.html
│ │ │ │ └── testInterface.html
│ │ │ └── util.js
│ │ └── Plugin.js
│ └── test/
│ ├── fixture/
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── esdoc.json
│ │ ├── manual/
│ │ │ ├── advanced.md
│ │ │ ├── configuration.md
│ │ │ ├── design.md
│ │ │ ├── example.md
│ │ │ ├── faq.md
│ │ │ ├── index.md
│ │ │ ├── installation.md
│ │ │ ├── overview.md
│ │ │ ├── tutorial.md
│ │ │ ├── usage1.md
│ │ │ └── usage2.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── Abstract/
│ │ │ │ ├── Definition.js
│ │ │ │ └── Override.js
│ │ │ ├── Access/
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ ├── Method.js
│ │ │ │ ├── Property.js
│ │ │ │ └── Variable.js
│ │ │ ├── Async/
│ │ │ │ ├── Function.js
│ │ │ │ └── Method.js
│ │ │ ├── Class/
│ │ │ │ └── Definition.js
│ │ │ ├── ClassProperty/
│ │ │ │ └── Definition.js
│ │ │ ├── Computed/
│ │ │ │ ├── Method.js
│ │ │ │ └── Property.js
│ │ │ ├── Decorator/
│ │ │ │ └── Definition.js
│ │ │ ├── Deprecated/
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ └── Variable.js
│ │ │ ├── Desc/
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ ├── Markdown.js
│ │ │ │ ├── MultiLine.js
│ │ │ │ └── Variable.js
│ │ │ ├── Destructuring/
│ │ │ │ ├── Array.js
│ │ │ │ └── Object.js
│ │ │ ├── Duplication/
│ │ │ │ └── Definition.js
│ │ │ ├── Emits/
│ │ │ │ ├── Function.js
│ │ │ │ └── Method.js
│ │ │ ├── Example/
│ │ │ │ ├── Caption.js
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ └── Variable.js
│ │ │ ├── Experimental/
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ └── Variable.js
│ │ │ ├── ExponentiationOperator/
│ │ │ │ └── Definition.js
│ │ │ ├── Export/
│ │ │ │ ├── AnonymousClass.js
│ │ │ │ ├── AnonymousFunction.js
│ │ │ │ ├── ArrowFunction.js
│ │ │ │ ├── Class.js
│ │ │ │ ├── ClassIndirectDefault.js
│ │ │ │ ├── Default.js
│ │ │ │ ├── Extends.js
│ │ │ │ ├── Function.js
│ │ │ │ ├── FunctionIndirectDefault.js
│ │ │ │ ├── Multiple.js
│ │ │ │ ├── Named.js
│ │ │ │ ├── NewExpression.js
│ │ │ │ ├── NewExpressionIndirect.js
│ │ │ │ ├── NewExpressionProperty.js
│ │ │ │ ├── Variable.js
│ │ │ │ └── VariableIndirectDefault.js
│ │ │ ├── Extends/
│ │ │ │ ├── Builtin.js
│ │ │ │ ├── Deep.js
│ │ │ │ ├── Expression.js
│ │ │ │ ├── Inner.js
│ │ │ │ ├── Mixin.js
│ │ │ │ ├── Outer.js
│ │ │ │ └── Property.js
│ │ │ ├── External/
│ │ │ │ └── Definition.js
│ │ │ ├── Generator/
│ │ │ │ ├── Function.js
│ │ │ │ └── Method.js
│ │ │ ├── Ignore/
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ └── Variable.js
│ │ │ ├── Interface/
│ │ │ │ ├── Definition.js
│ │ │ │ └── Implements.js
│ │ │ ├── Invalid/
│ │ │ │ ├── CodeSyntax.js
│ │ │ │ └── DocSyntax.js
│ │ │ ├── Link/
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ └── Variable.js
│ │ │ ├── Listens/
│ │ │ │ ├── Function.js
│ │ │ │ └── Method.js
│ │ │ ├── Param/
│ │ │ │ ├── Function.js
│ │ │ │ └── Method.js
│ │ │ ├── Property/
│ │ │ │ └── Return.js
│ │ │ ├── Return/
│ │ │ │ ├── Function.js
│ │ │ │ └── Method.js
│ │ │ ├── See/
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ └── Variable.js
│ │ │ ├── Since/
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ └── Variable.js
│ │ │ ├── Throws/
│ │ │ │ ├── Function.js
│ │ │ │ └── Method.js
│ │ │ ├── Todo/
│ │ │ │ ├── Class.js
│ │ │ │ ├── Function.js
│ │ │ │ └── Variable.js
│ │ │ ├── TrailingComma/
│ │ │ │ └── Definition.js
│ │ │ ├── Type/
│ │ │ │ ├── Array.js
│ │ │ │ ├── Class.js
│ │ │ │ ├── Complex.js
│ │ │ │ ├── Default.js
│ │ │ │ ├── External.js
│ │ │ │ ├── Function.js
│ │ │ │ ├── Generics.js
│ │ │ │ ├── Literal.js
│ │ │ │ ├── Nullable.js
│ │ │ │ ├── Object.js
│ │ │ │ ├── Optional.js
│ │ │ │ ├── Record.js
│ │ │ │ ├── Spread.js
│ │ │ │ ├── Typedef.js
│ │ │ │ └── Union.js
│ │ │ ├── Typedef/
│ │ │ │ └── Definition.js
│ │ │ ├── Undocument/
│ │ │ │ └── Definition.js
│ │ │ ├── Unknown/
│ │ │ │ └── Definition.js
│ │ │ ├── Variable/
│ │ │ │ ├── ArrayPattern.js
│ │ │ │ ├── Definition.js
│ │ │ │ └── ObjectPattern.js
│ │ │ └── Version/
│ │ │ ├── Class.js
│ │ │ ├── Function.js
│ │ │ └── Variable.js
│ │ └── test/
│ │ └── DescTest.js
│ └── src/
│ ├── DocumentTest/
│ │ ├── AbstractTest/
│ │ │ ├── DefinitionTest.js
│ │ │ └── OverrideTest.js
│ │ ├── AsyncTest/
│ │ │ ├── FunctionTest.js
│ │ │ └── MethodTest.js
│ │ ├── ClassPropertyTest/
│ │ │ └── DefinitionTest.js
│ │ ├── ClassTest/
│ │ │ └── DefinitionTest.js
│ │ ├── ComputedTest/
│ │ │ ├── MethodTest.js
│ │ │ └── PropertyTest.js
│ │ ├── DecoratorTest/
│ │ │ └── DefinitionTest.js
│ │ ├── DeprecatedTest/
│ │ │ ├── ClassTest.js
│ │ │ ├── FunctionTest.js
│ │ │ └── VariableTest.js
│ │ ├── DescTest/
│ │ │ ├── ClassTest.js
│ │ │ ├── FunctionTest.js
│ │ │ ├── MarkdownTest.js
│ │ │ ├── MultiLineTest.js
│ │ │ └── VariableTest.js
│ │ ├── DestructuringTest/
│ │ │ ├── ArrayTest.js
│ │ │ └── ObjectTest.js
│ │ ├── DuplicationTest/
│ │ │ └── DefinitionTest.js
│ │ ├── EmitsTest/
│ │ │ ├── FunctionTest.js
│ │ │ └── MethodTest.js
│ │ ├── ExamleTest/
│ │ │ ├── CaptionTest.js
│ │ │ ├── ClassTest.js
│ │ │ ├── FunctionTest.js
│ │ │ └── VariableTest.js
│ │ ├── ExperimentalTest/
│ │ │ ├── ClassTest.js
│ │ │ ├── FunctionTest.js
│ │ │ └── VariableTest.js
│ │ ├── ExponentialOperatorTest/
│ │ │ └── DefinitionTest.js
│ │ ├── ExportTest/
│ │ │ ├── AnonymousClassTest.js
│ │ │ ├── AnonymousFunctionTest.js
│ │ │ ├── ArrowFunctionTest.js
│ │ │ ├── ClassIndirectDefaultTest.js
│ │ │ ├── ClassTest.js
│ │ │ ├── DefaultTest.js
│ │ │ ├── ExtendTest.js
│ │ │ ├── FunctionIndirectDefaultTest.js
│ │ │ ├── FunctionTest.js
│ │ │ ├── MultipleTest.js
│ │ │ ├── NamedTest.js
│ │ │ ├── NewExpressionIndirectTest.js
│ │ │ ├── NewExpressionPropertyTest.js
│ │ │ ├── NewExpressionTest.js
│ │ │ ├── VariableIndirectDefaultTest.js
│ │ │ └── VariableTest.js
│ │ ├── ExtendsTest/
│ │ │ ├── BuiltinTest.js
│ │ │ ├── DeepTest.js
│ │ │ ├── ExpressionTest.js
│ │ │ ├── InnerTest.js
│ │ │ ├── MixinTest.js
│ │ │ ├── OuterTest.js
│ │ │ └── PropertyTest.js
│ │ ├── ExternalTest/
│ │ │ └── DefinitionTest.js
│ │ ├── GeneratorTest/
│ │ │ ├── FunctionTest.js
│ │ │ └── MethodTest.js
│ │ ├── IgnoreTest/
│ │ │ ├── ClassTest.js
│ │ │ ├── FunctionTest.js
│ │ │ └── VariableTest.js
│ │ ├── InterfaceTest/
│ │ │ ├── DefinitionTest.js
│ │ │ └── ImplementsTest.js
│ │ ├── LinkTest/
│ │ │ ├── ClassTest.js
│ │ │ ├── FunctionTest.js
│ │ │ └── VariableTest.js
│ │ ├── ListensTest/
│ │ │ ├── FunctionTest.js
│ │ │ └── MethodTest.js
│ │ ├── ParamTest/
│ │ │ ├── FunctionTest.js
│ │ │ └── MethodTest.js
│ │ ├── PropertyTest/
│ │ │ └── ReturnTest.js
│ │ ├── ReturnTest/
│ │ │ ├── FunctionTest.js
│ │ │ └── MethodTest.js
│ │ ├── SeeTest/
│ │ │ ├── ClassTest.js
│ │ │ ├── FunctionTest.js
│ │ │ └── VariableTest.js
│ │ ├── SinceTest/
│ │ │ ├── ClassTest.js
│ │ │ ├── FunctionTest.js
│ │ │ └── VariableTest.js
│ │ ├── ThrowsTest/
│ │ │ ├── FunctionTest.js
│ │ │ └── MethodTest.js
│ │ ├── TodoTest/
│ │ │ ├── ClassTest.js
│ │ │ ├── FunctionTest.js
│ │ │ └── VariableTest.js
│ │ ├── TrailingCommaTest/
│ │ │ └── DefinitionTest.js
│ │ ├── TypeTest/
│ │ │ ├── ArrayTest.js
│ │ │ ├── ClassTest.js
│ │ │ ├── ComplexTest.js
│ │ │ ├── DefaultTest.js
│ │ │ ├── ExternalTest.js
│ │ │ ├── FunctionTest.js
│ │ │ ├── GenericsTest.js
│ │ │ ├── LiteralTest.js
│ │ │ ├── NullableTest.js
│ │ │ ├── ObjectTest.js
│ │ │ ├── OptionalTest.js
│ │ │ ├── RecordTest.js
│ │ │ ├── SpreadTest.js
│ │ │ ├── TypedefTest.js
│ │ │ └── UnionTest.js
│ │ ├── TypedefTest/
│ │ │ └── DefinitionTest.js
│ │ ├── UndocumentTest/
│ │ │ └── DefinitionTest.js
│ │ ├── VariableTest/
│ │ │ ├── ArrayPatterTest.js
│ │ │ ├── DefinitionTest.js
│ │ │ └── ObjectPatterTest.js
│ │ └── VersionTest/
│ │ ├── ClassTest.js
│ │ ├── FunctionTest.js
│ │ └── VariableTest.js
│ ├── FileTest/
│ │ └── FileTest.js
│ ├── IdentifiersTest/
│ │ └── IdentifiersTest.js
│ ├── IndexTest/
│ │ └── IndexTest.js
│ ├── ManualTest/
│ │ └── ManualTest.js
│ ├── NavTest/
│ │ └── NavTest.js
│ ├── SearchTest/
│ │ └── SearchTest.js
│ ├── TestTest/
│ │ ├── TestLinkTest.js
│ │ └── TestTest.js
│ ├── init.js
│ └── util.js
├── esdoc-publish-markdown-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── misc/
│ │ └── index.md
│ ├── package.json
│ ├── src/
│ │ ├── AbstractBuilder.js
│ │ ├── ClassBuilder.js
│ │ ├── FunctionBuilder.js
│ │ ├── Plugin.js
│ │ └── template/
│ │ ├── class.html
│ │ └── function.html
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── MyClass.js
│ │ ├── MyClass.test.js
│ │ ├── myFunction.js
│ │ └── myFunction.test.js
│ └── util.js
├── esdoc-react-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── MyClass.js
│ │ └── MyClass.test.js
│ └── util.js
├── esdoc-standard-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── README.md
│ ├── esdoc.json
│ ├── init.js
│ ├── manual/
│ │ └── overview.md
│ ├── package.json
│ ├── spy-plugin.js
│ ├── src/
│ │ ├── MyClass.js
│ │ └── Plugin.test.js
│ └── test/
│ └── MyClassTest.js
├── esdoc-type-inference-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── Getter.js
│ │ ├── Getter.test.js
│ │ ├── Member.js
│ │ ├── Member.test.js
│ │ ├── Param.js
│ │ ├── Param.test.js
│ │ ├── Return.js
│ │ ├── Return.test.js
│ │ ├── Variable.js
│ │ └── Variable.test.js
│ └── util.js
├── esdoc-typescript-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── TypeScript.test.js
│ │ └── TypeScript.ts
│ └── util.js
├── esdoc-undocumented-identifier-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── MyClass.js
│ │ └── MyClass.test.js
│ └── util.js
├── esdoc-unexported-identifier-plugin/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── src/
│ │ └── Plugin.js
│ └── test/
│ ├── esdoc.json
│ ├── init.js
│ ├── src/
│ │ ├── MyClass.js
│ │ └── MyClass.test.js
│ └── util.js
└── script/
├── check.sh
├── install.sh
└── test.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
node_modules
out
npm-debug.log
================================================
FILE: .travis.yml
================================================
language: node_js
sudo: false
node_js:
- "6"
script:
- ./script/test.sh
install:
- ./script/install.sh
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2015 Ryo Maruyama
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
[](https://travis-ci.org/esdoc/esdoc-plugins)
# ESDoc Plugins
This repository is official plugins for ESDoc.
**In most case, we recommend [esdoc-standard-plugin](./esdoc-standard-plugin)**
## Each Plugins
**Publisher**
- [esdoc-publish-html-plugin](./esdoc-publish-html-plugin)
- [esdoc-publish-markdown-plugin](./esdoc-publish-markdown-plugin) [PoC]
**Integration**
- [esdoc-integrate-manual-plugin](./esdoc-integrate-manual-plugin)
- [esdoc-integrate-test-plugin](./esdoc-integrate-test-plugin)
**Transform**
- [esdoc-accessor-plugin](./esdoc-accessor-plugin)
- [esdoc-brand-plugin](./esdoc-brand-plugin)
- [esdoc-exclude-source-plugin](./esdoc-exclude-source-plugin)
- [esdoc-importpath-plugin](./esdoc-importpath-plugin)
- [esdoc-inject-script-plugin](./esdoc-inject-script-plugin)
- [esdoc-inject-style-plugin](./esdoc-inject-style-plugin)
- [esdoc-undocumented-identifier-plugin](./esdoc-undocumented-identifier-plugin)
- [esdoc-unexported-identifier-plugin](./esdoc-unexported-identifier-plugin)
**Inspection**
- [esdoc-coverage-plugin](./esdoc-coverage-plugin)
- [esdoc-lint-plugin](./esdoc-lint-plugin)
- [esdoc-type-inference-plugin](./esdoc-type-inference-plugin)
**External Identifier**
- [esdoc-external-ecmascript-plugin](./esdoc-external-ecmascript-plugin)
- [esdoc-external-nodejs-plugin](./esdoc-external-nodejs-plugin)
- [esdoc-external-webapi-plugin](./esdoc-external-webapi-plugin)
**Language**
- [esdoc-ecmascript-proposal-plugin](./esdoc-ecmascript-proposal-plugin)
- [esdoc-flow-type-plugin](./esdoc-flow-type-plugin) [PoC]
- [esdoc-typescript-plugin](./esdoc-typescript-plugin) [PoC]
**React**
- [esdoc-jsx-plugin](./esdoc-jsx-plugin)
- [esdoc-react-plugin](./esdoc-react-plugin) [PoC]
================================================
FILE: _template/CHANGELOG.md
================================================
# Changelog
## 1.0.0 (2017-07-30)
- Release
================================================
FILE: _template/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2015 Ryo Maruyama
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: _template/README.md
================================================
# ESDoc Template Plugin
## Install
```bash
npm install esdoc-template-plugin
```
## Config
```json
{
"source": "./src",
"destination": "./doc",
"plugins": [
{"name": "esdoc-template-plugin", "option": {"foo": true}}
]
}
```
- `foo` is default `true`
## LICENSE
MIT
## Author
[Ryo Maruyama@h13i32maru](https://github.com/h13i32maru)
================================================
FILE: _template/package.json
================================================
{
"name": "esdoc-template-plugin",
"version": "0.0.1",
"description": "A __TEMPLATE__ plugin for ESDoc",
"author": "h13i32maru",
"homepage": "https://github.com/esdoc/esdoc-plugins",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/esdoc/esdoc-plugins"
},
"devDependencies": {
"esdoc": "alpha",
"mocha": "2.5.3"
},
"engines": {
"node": ">= 6.0.0"
},
"scripts": {
"test": "rm -rf ./test/out && mocha --require ./test/init.js $(find test/ -regex '.*.test.js$') -R spec"
},
"keywords": [
"esdoc",
"plugin"
],
"files": [
"src",
"README.md"
],
"main": "src/Plugin.js"
}
================================================
FILE: _template/src/Plugin.js
================================================
class Plugin {
onHandleDocs(ev) {
this._docs = ev.data.docs;
}
}
module.exports = new Plugin();
================================================
FILE: _template/test/esdoc.json
================================================
{
"source": "./test/src",
"destination": "./test/out",
"excludes": ["\\.test\\.js$"],
"plugins": [
{"name": "./src/Plugin.js", "option": {"foo": true}}
]
}
================================================
FILE: _template/test/init.js
================================================
const path = require('path');
const fs = require('fs');
const ESDocCLI = require('esdoc/out/src/ESDocCLI.js').default;
function cli() {
const cliPath = path.resolve('./node_modules/esdoc/out/ESDocCLI.js');
const argv = ['node', cliPath, '-c', './test/esdoc.json'];
const cli = new ESDocCLI(argv);
cli.exec();
global.docs = JSON.parse(fs.readFileSync('./test/out/index.json').toString());
}
cli();
================================================
FILE: _template/test/src/MyClass.js
================================================
export default class MyClass {
method1(){}
}
================================================
FILE: _template/test/src/MyClass.test.js
================================================
const assert = require('assert');
const {find, file} = require('../util');
describe('test/MyClass.js:', ()=> {
it('has method doc', ()=>{
const doc = find('longname', 'src/MyClass.js~MyClass#method1');
assert(doc);
});
});
================================================
FILE: _template/test/util.js
================================================
const fs = require('fs');
exports.find = function(key, ...values) {
if (values.length === 1) {
return global.docs.find((doc) => {
if (typeof values[0] === 'string') return doc[key] === values[0];
if (values[0] instanceof RegExp) return doc[key].match(values[0]);
});
}
const results = [];
for (const value of values) {
const result = global.docs.find(doc => {
if (typeof value === 'string') return doc[key] === value;
if (value instanceof RegExp) return doc[key].match(value);
});
results.push(result);
}
return results;
};
exports.file = function (filePath) {
return fs.readFileSync(filePath).toString();
};
================================================
FILE: esdoc-accessor-plugin/CHANGELOG.md
================================================
# Changelog
## 1.0.0 (2017-07-30)
- Release
================================================
FILE: esdoc-accessor-plugin/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2015 Ryo Maruyama
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: esdoc-accessor-plugin/README.md
================================================
# ESDoc Accessor Plugin
## Install
```bash
npm install esdoc-accessor-plugin
```
## Config
```json
{
"source": "./src",
"destination": "./doc",
"plugins": [
{"name": "esdoc-accessor-plugin", "option": {"access": ["public", "protected", "private"], "autoPrivate": true}}
]
}
```
- `access` is default `["public", "protected", "private"]`
- `autoPrivate` is default `true`
## LICENSE
MIT
## Author
[Ryo Maruyama@h13i32maru](https://github.com/h13i32maru)
================================================
FILE: esdoc-accessor-plugin/package.json
================================================
{
"name": "esdoc-accessor-plugin",
"version": "1.0.0",
"description": "A accessor plugin for ESDoc",
"author": "h13i32maru",
"homepage": "https://github.com/esdoc/esdoc-plugins",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/esdoc/esdoc-plugins"
},
"devDependencies": {
"esdoc": "latest",
"mocha": "2.5.3"
},
"engines": {
"node": ">= 6.0.0"
},
"scripts": {
"test": "rm -rf ./test/out && mocha --require ./test/init.js $(find test/ -regex '.*.test.js$') -R spec"
},
"keywords": [
"esdoc",
"accessor",
"plugin"
],
"files": [
"src",
"README.md"
],
"main": "src/Plugin.js"
}
================================================
FILE: esdoc-accessor-plugin/src/Plugin.js
================================================
class Plugin {
constructor() {
this._docs = null;
this._option = null;
}
onHandleDocs(ev) {
const option = ev.data.option || {};
if (!('access' in option)) option.access = ['public', 'protected', 'private'];
if (!('autoPrivate' in option)) option.autoPrivate = true;
const access = option.access;
const autoPrivate = option.autoPrivate;
for (const doc of ev.data.docs) {
if (!doc.access) {
if (autoPrivate && doc.name.charAt(0) === '_') {
doc.access = 'private';
} else {
doc.access = 'public';
}
}
if (!access.includes(doc.access)) doc.ignore = true;
}
}
}
module.exports = new Plugin();
================================================
FILE: esdoc-accessor-plugin/test/esdoc.json
================================================
{
"source": "./test/src",
"destination": "./test/out",
"excludes": ["\\.test\\.js$"],
"plugins": [
{"name": "./src/Plugin.js", "option": {"access": ["public", "protected"], "autoPrivate": true}}
]
}
================================================
FILE: esdoc-accessor-plugin/test/init.js
================================================
const path = require('path');
const fs = require('fs');
const ESDocCLI = require('esdoc/out/src/ESDocCLI.js').default;
function cli() {
const cliPath = path.resolve('./node_modules/esdoc/out/ESDocCLI.js');
const argv = ['node', cliPath, '-c', './test/esdoc.json'];
const cli = new ESDocCLI(argv);
cli.exec();
global.docs = JSON.parse(fs.readFileSync('./test/out/index.json').toString());
}
cli();
================================================
FILE: esdoc-accessor-plugin/test/src/MyClass.js
================================================
export default class MyClass {
/**
* method1 is default access.
*/
method1(){}
/**
* method2 is public.
* @public
*/
method2(){}
/**
* method3 is protected.
* @protected
*/
method3(){}
/**
* method4 is private.
* @private
*/
method4(){}
/**
* method5 is auto private.
*/
_method5(){}
}
================================================
FILE: esdoc-accessor-plugin/test/src/MyClass.test.js
================================================
const assert = require('assert');
const {find} = require('../util');
describe('test/MyClass.js:', ()=> {
it('has default access', ()=>{
const doc = find('longname', 'src/MyClass.js~MyClass#method1');
assert.equal(doc.access, 'public');
assert.equal(doc.ignore, undefined);
});
it('has public access', ()=>{
const doc = find('longname', 'src/MyClass.js~MyClass#method2');
assert.equal(doc.access, 'public');
assert.equal(doc.ignore, undefined);
});
it('has protected access', ()=>{
const doc = find('longname', 'src/MyClass.js~MyClass#method3');
assert.equal(doc.access, 'protected');
assert.equal(doc.ignore, undefined);
});
it('has private access and is ignored', ()=>{
const doc = find('longname', 'src/MyClass.js~MyClass#method4');
assert.equal(doc.access, 'private');
assert.equal(doc.ignore, true);
});
it('has auto private access and is ignored', ()=>{
const doc = find('longname', 'src/MyClass.js~MyClass#_method5');
assert.equal(doc.access, 'private');
assert.equal(doc.ignore, true);
});
});
================================================
FILE: esdoc-accessor-plugin/test/util.js
================================================
const fs = require('fs');
exports.find = function(key, ...values) {
if (values.length === 1) {
return global.docs.find((doc) => {
if (typeof values[0] === 'string') return doc[key] === values[0];
if (values[0] instanceof RegExp) return doc[key].match(values[0]);
});
}
const results = [];
for (const value of values) {
const result = global.docs.find(doc => {
if (typeof value === 'string') return doc[key] === value;
if (value instanceof RegExp) return doc[key].match(value);
});
results.push(result);
}
return results;
};
exports.file = function (filePath) {
return fs.readFileSync(filePath).toString();
};
================================================
FILE: esdoc-brand-plugin/CHANGELOG.md
================================================
# Changelog
## Next
- **Fix**
- Use the same as original logo file type ([#43](https://github.com/esdoc/esdoc-plugins/pull/43)). Thanks [@bencevans](https://github.com/bencevans)
## 1.0.0 (2017-07-30)
- Release
================================================
FILE: esdoc-brand-plugin/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2015 Ryo Maruyama
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: esdoc-brand-plugin/README.md
================================================
# ESDoc Brand Plugin
## Install
```bash
npm install esdoc-brand-plugin
```
## Config
This plugin takes a title and a repository from `package.json (name, repsitory)`.
```json
{
"source": "./src",
"destination": "./doc",
"package.json": "./package.json",
"plugins": [
{
"name": "esdoc-brand-plugin",
"option": {
"logo": "./logo.png",
"title": "My Library",
"description": "this is awesome library",
"repository": "https://github.com/foo/bar",
"site": "http://my-library.org",
"author": "https://twitter.com/foo",
"image": "http://my-library.org/logo.png"
}
}
]
}
```
- `logo` default is `null`
- `title` default is `name` of `package.json`
- `description` default is `description` of `package.json`
- `repository` default is `repository` of `package.json`
- `site` default is `homepage` of `package.json`
- `author` default is `author` of `package.json`
- `image` default is `null`. support an aspect ratio of 1:1
## LICENSE
MIT
## Author
[Ryo Maruyama@h13i32maru](https://github.com/h13i32maru)
================================================
FILE: esdoc-brand-plugin/package.json
================================================
{
"name": "esdoc-brand-plugin",
"version": "1.0.0",
"description": "A brand plugin for ESDoc",
"author": "h13i32maru",
"homepage": "https://github.com/esdoc/esdoc-plugins",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/esdoc/esdoc-plugins"
},
"dependencies": {
"cheerio": "0.22.0"
},
"devDependencies": {
"esdoc": "latest",
"mocha": "2.5.3"
},
"engines": {
"node": ">= 6.0.0"
},
"scripts": {
"test": "rm -rf ./test/out && mocha --require ./test/init.js $(find test/ -regex '.*.test.js$') -R spec"
},
"keywords": [
"esdoc",
"brand",
"title",
"plugin"
],
"files": [
"src",
"README.md"
],
"main": "src/Plugin.js"
}
================================================
FILE: esdoc-brand-plugin/src/Plugin.js
================================================
const fs = require('fs');
const path = require('path');
const cheerio = require('cheerio');
class Plugin {
onHandleConfig(ev) {
const config = ev.data.config;
const option = ev.data.option || {};
// get package.json
let packageObj = {};
try {
const packagePath = config.package || './package.json';
const tmp = fs.readFileSync(packagePath).toString();
packageObj = JSON.parse(tmp);
} catch (e) {
// ignore
}
this._logo = option.logo;
this._description = option.description || packageObj.description;
this._title = option.title || packageObj.name;
this._repository = option.repository || this._getRepositoryURL(packageObj);
this._site = option.site || packageObj.homepage;
this._image = option.image;
this._author = option.author || this._getAuthor(packageObj);
}
onPublish(ev) {
if (this._repository && this._repository.indexOf('https://github.com/') === 0) {
const srcPath = path.resolve(__dirname, 'github.png');
ev.data.copyFile(srcPath, 'image/github.png');
}
if (this._logo) {
const srcPath = path.resolve(this._logo);
ev.data.copyFile(srcPath, 'image/brand_logo' + path.extname(this._logo));
}
}
onHandleContent(ev) {
const content = ev.data.content;
const fileName = ev.data.fileName;
if (path.extname(fileName) !== '.html') return content;
const $ = cheerio.load(content);
// logo
if (this._logo) {
const $el = $('header a[href="./"]');
$el.text('');
$el.css({display: 'flex', 'align-items': 'center'});
$el.append('');
}
// title
if (this._title) {
const $title = $('title');
const original = $title.text();
$title.text(`${original} | ${this._title}`);
}
// repository
if (this._repository) {
if (this._repository.indexOf('https://github.com/') === 0) {
const style = 'style="position:relative; top:3px;"';
$('header').append(`
`);
} else {
$('header').append(`Repository`);
}
}
// meta tag
this._addMetaTag($);
ev.data.content = $.html();
}
_getRepositoryURL(packageObj) {
if (!packageObj.repository) return null;
let url = packageObj.repository.url || packageObj.repository;
if (typeof url !== 'string') return null;
if (url.indexOf('git@github.com:') === 0) { // url: git@github.com:foo/bar.git
const matched = url.match(/^git@github\.com:(.*)\.git$/);
return `https://github.com/${matched[1]}`;
} else if (url.match(/^[\w\d\-_]+\/[\w\d\-_]+$/)) { // url: foo/bar
return `https://github.com/${url}`;
} else if (url.match(/^git\+https:\/\/github.com\/.*\.git$/)) { // git+https://github.com/foo/bar.git
const matched = url.match(/^git\+(https:\/\/github.com\/.*)\.git$/);
return matched[1];
} else if (url.match(/(https?:\/\/.*$)/)) { // other url
const matched = url.match(/(https?:\/\/.*$)/);
return matched[1];
}
return null;
}
_getAuthor(packageObj) {
if (!packageObj.author) return null;
if (typeof packageObj.author === 'string') {
return packageObj.author;
} else {
return packageObj.author.url || packageObj.author.name;
}
}
_addMetaTag($) {
const metaProps = [];
// normal
if (this._description){
metaProps.push({name: 'description', content: this._description});
}
// og tag http://ogp.me/#metadata
if (this._title && this._image && this._site){
metaProps.push({property: 'og:type', content: 'website'});
metaProps.push({property: 'og:url', content: this._site});
metaProps.push({property: 'og:site_name', content: this._title});
metaProps.push({property: 'og:title', content: this._title});
metaProps.push({property: 'og:image', content: this._image});
if (this._description) metaProps.push({property: 'og:description', content: this._description});
if (this._author) metaProps.push({property: 'og:author', content: this._author});
}
// twitter card https://dev.twitter.com/cards/types/summary
if (this._title && this._description){
metaProps.push({property: 'twitter:card', content: 'summary'});
metaProps.push({property: 'twitter:title', content: this._title});
metaProps.push({property: 'twitter:description', content: this._description});
if (this._image) metaProps.push({property: 'twitter:image', content: this._image});
if (this._site && this._site.indexOf('https://twitter.com/') === 0) {
const twitterName = this._site.replace('https://twitter.com/', '@');
metaProps.push({property: 'twitter:site', content: twitterName});
metaProps.push({property: 'twitter:creator', content: twitterName});
}
}
const $head = $('head');
for (const metaProp of metaProps) {
const prop = Object.keys(metaProp).map((key) => `${key}="${metaProp[key]}"`).join(' ');
const metaTag = ``;
$head.append(metaTag);
}
}
}
module.exports = new Plugin();
================================================
FILE: esdoc-brand-plugin/test/esdoc.json
================================================
{
"source": "./test/src",
"destination": "./test/out",
"excludes": ["\\.test\\.js$"],
"package": "./test/package.json",
"plugins": [
{"name": "./test/misc/publish-html-mock-plugin.js"},
{"name": "./src/Plugin.js", "option": {"logo": "./test/misc/logo.png", "image": "https://esdoc.org/manual/asset/image/logo.png"}}
]
}
================================================
FILE: esdoc-brand-plugin/test/init.js
================================================
const path = require('path');
const fs = require('fs');
const ESDocCLI = require('esdoc/out/src/ESDocCLI.js').default;
function cli() {
const cliPath = path.resolve('./node_modules/esdoc/out/ESDocCLI.js');
const argv = ['node', cliPath, '-c', './test/esdoc.json'];
const cli = new ESDocCLI(argv);
cli.exec();
global.docs = JSON.parse(fs.readFileSync('./test/out/index.json').toString());
}
cli();
================================================
FILE: esdoc-brand-plugin/test/misc/publish-html-mock-plugin.js
================================================
exports.onPublish = function(ev) {
const html = `
## Feature
- Generates detailed document.
- Measures document coverage.
- Integrate test codes into documentation.
- [ESDoc Hosting Service](https://doc.esdoc.org)
## Demo
- [ESDoc](https://esdoc.org/esdoc) is self-hosting 😄
## License
MIT
## Author
[Ryo Maruyama@h13i32maru](https://twitter.com/h13i32maru)
================================================
FILE: esdoc-integrate-manual-plugin/test/manual/tutorial.md
================================================
# Tutorial
this is tutorial.
================================================
FILE: esdoc-integrate-manual-plugin/test/manual/usage1.md
================================================
# Usage
```sh
esdoc -c esdoc.json
```
``esdoc.json``
```json
{
"source": "./src",
"destination": "./doc"
}
```
================================================
FILE: esdoc-integrate-manual-plugin/test/manual/usage2.md
================================================
# Usage2
this is usage2
## h2 in usage2
this is h2 in usage2
### h3 in usage2
this is h2 in usage3
================================================
FILE: esdoc-integrate-manual-plugin/test/src/Dummy.js
================================================
export default class TestDummy {}
================================================
FILE: esdoc-integrate-manual-plugin/test/util.js
================================================
const fs = require('fs');
exports.find = function(key, ...values) {
if (values.length === 1) {
return global.docs.find((doc) => {
if (typeof values[0] === 'string') return doc[key] === values[0];
if (values[0] instanceof RegExp) return doc[key].match(values[0]);
});
}
const results = [];
for (const value of values) {
const result = global.docs.find(doc => {
if (typeof value === 'string') return doc[key] === value;
if (value instanceof RegExp) return doc[key].match(value);
});
results.push(result);
}
return results;
};
exports.file = function (filePath) {
return fs.readFileSync(filePath).toString();
};
================================================
FILE: esdoc-integrate-test-plugin/CHANGELOG.md
================================================
# Changelog
## 1.0.0 (2017-07-30)
- Release
================================================
FILE: esdoc-integrate-test-plugin/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2015 Ryo Maruyama
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: esdoc-integrate-test-plugin/README.md
================================================
# ESDoc Integrate Test Plugin
## Install
```bash
npm install esdoc-integrate-test-plugin
```
## Config
```json
{
"source": "./src",
"destination": "./docs",
"plugins": [
{
"name": "esdoc-integrate-test-plugin",
"option": {
"source": "./test/",
"interfaces": ["describe", "it", "context", "suite", "test"],
"includes": ["(spec|Spec|test|Test)\\.js$"],
"excludes": ["\\.config\\.js$"]
}
}
]
}
```
- `source` is required
- `interfaces` default is `["describe", "it", "context", "suite", "test"]`
- `includes` default is `["(spec|Spec|test|Test)\\.js$"]`
- `excludes` default is `["\\.config\\.js$"]`
## LICENSE
MIT
## Author
[Ryo Maruyama@h13i32maru](https://github.com/h13i32maru)
================================================
FILE: esdoc-integrate-test-plugin/package.json
================================================
{
"name": "esdoc-integrate-test-plugin",
"version": "1.0.0",
"description": "A integrate test plugin for ESDoc",
"author": "h13i32maru",
"homepage": "https://github.com/esdoc/esdoc-plugins",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/esdoc/esdoc-plugins"
},
"devDependencies": {
"esdoc": "latest",
"mocha": "2.5.3"
},
"engines": {
"node": ">= 6.0.0"
},
"scripts": {
"test": "rm -rf ./test/out && mocha --require ./test/init.js $(find test/ -regex '.*.test.js$') -R spec"
},
"keywords": [
"esdoc",
"test",
"plugin"
],
"files": [
"src",
"README.md"
],
"main": "src/Plugin.js"
}
================================================
FILE: esdoc-integrate-test-plugin/src/Plugin.js
================================================
const assert = require('assert');
const path = require('path');
const fs = require('fs');
const TestDocFactory = require('./TestDocFactory');
// hack
const ESParser = require('esdoc/out/src/Parser/ESParser').default;
const InvalidCodeLogger = require('esdoc/out/src/Util/InvalidCodeLogger').default;
const PathResolver = require('esdoc/out/src/Util/PathResolver').default;
const ASTUtil = require('esdoc/out/src/Util/ASTUtil').default;
class Plugin {
onHandleDocs(ev) {
this._docs = ev.data.docs;
this._option = ev.data.option;
this._exec();
}
_exec() {
this._setDefault();
const docs = this._generateDocs();
this._docs.push(...docs);
}
_setDefault() {
if (!this._option) return;
const option = this._option;
assert(option.source);
if (!option.interfaces) option.interfaces = ['describe', 'it', 'context', 'suite', 'test'];
if (!option.includes) option.includes = ['(spec|Spec|test|Test)\\.js$'];
if (!option.excludes) option.excludes = ['\\.config\\.js$'];
}
/**
* Generate document from test code.
*/
_generateDocs() {
const option = this._option;
const results = [];
if (!option) return results;
const includes = option.includes.map((v) => new RegExp(v));
const excludes = option.excludes.map((v) => new RegExp(v));
const sourceDirPath = path.resolve(option.source);
this._walk(option.source, (filePath)=>{
const relativeFilePath = path.relative(sourceDirPath, filePath);
let match = false;
for (const reg of includes) {
if (relativeFilePath.match(reg)) {
match = true;
break;
}
}
if (!match) return;
for (const reg of excludes) {
if (relativeFilePath.match(reg)) return;
}
console.log(`parse: ${filePath}`);
const temp = this._traverse(option.interfaces, option.source, filePath);
if (!temp) return;
results.push(...temp.results);
// todo: enable work
// asts.push({filePath: `test${path.sep}${relativeFilePath}`, ast: temp.ast});
});
return results;
}
/**
* walk recursive in directory.
* @param {string} dirPath - target directory path.
* @param {function(entryPath: string)} callback - callback for find file.
* @private
*/
_walk(dirPath, callback) {
const entries = fs.readdirSync(dirPath);
for (const entry of entries) {
const entryPath = path.resolve(dirPath, entry);
const stat = fs.statSync(entryPath);
if (stat.isFile()) {
callback(entryPath);
} else if (stat.isDirectory()) {
this._walk(entryPath, callback);
}
}
}
/**
* traverse doc comment in test code file.
* @param {string[]} interfaces - test interface names.
* @param {string} inDirPath - root directory path.
* @param {string} filePath - target test code file path.
* @returns {Object} return document info that is traversed.
* @property {DocObject[]} results - this is contained test code.
* @property {AST} ast - this is AST of test code.
* @private
*/
_traverse(interfaces, inDirPath, filePath) {
let ast;
try {
ast = ESParser.parse(filePath);
} catch (e) {
InvalidCodeLogger.showFile(filePath, e);
return null;
}
const pathResolver = new PathResolver(inDirPath, filePath);
const factory = new TestDocFactory(interfaces, ast, pathResolver);
ASTUtil.traverse(ast, (node, parent)=>{
try {
factory.push(node, parent);
} catch (e) {
InvalidCodeLogger.show(filePath, node);
throw e;
}
});
return {results: factory.results, ast: ast};
}
}
module.exports = new Plugin();
================================================
FILE: esdoc-integrate-test-plugin/src/TestDoc.js
================================================
// hack: depends on esdoc internal class
const AbstractDoc = require('esdoc/out/src/Doc/AbstractDoc').default;
const ParamParser = require('esdoc/out/src/Parser/ParamParser').default;
/**
* Doc Class from test code file.
*/
class TestDoc extends AbstractDoc {
/**
* apply own tag.
* @private
*/
_apply() {
super._apply();
this._$testTarget();
Reflect.deleteProperty(this._value, 'export');
Reflect.deleteProperty(this._value, 'importPath');
Reflect.deleteProperty(this._value, 'importStyle');
}
/** use name property of self node. */
_$kind() {
super._$kind();
this._value.kind = 'test';
}
/** set name and testId from special esdoc property. */
_$name() {
super._$name();
this._value.name = this._node._esdocTestName;
this._value.testId = this._node._esdocTestId;
}
/** set memberof to use parent test nod and file path. */
_$memberof() {
super._$memberof();
const chain = [];
let parent = this._node.parent;
while (parent) {
if (parent._esdocTestName) chain.push(parent._esdocTestName);
parent = parent.parent;
}
const filePath = this._pathResolver.filePath;
if (chain.length) {
this._value.memberof = `${filePath}~${chain.reverse().join('.')}`;
this._value.testDepth = chain.length;
} else {
this._value.memberof = filePath;
this._value.testDepth = 0;
}
}
/** set describe by using test node arguments. */
_$desc() {
super._$desc();
if (this._value.description) return;
this._value.description = this._node.arguments[0].value;
}
/** for @testTarget. */
_$testTarget() {
const values = this._findAllTagValues(['@test', '@testTarget']);
if (!values) return;
this._value.testTargets = [];
for (const value of values) {
const {typeText} = ParamParser.parseParamValue(value, true, false, false);
this._value.testTargets.push(typeText);
}
}
_$test() {
// alias of testTarget
}
}
module.exports = TestDoc;
================================================
FILE: esdoc-integrate-test-plugin/src/TestDocFactory.js
================================================
const assert = require('assert');
const TestDoc = require('./TestDoc');
const TestFileDoc = require('./TestFileDoc');
// hack: depends on ESDoc internal class
const CommentParser = require('esdoc/out/src/Parser/CommentParser').default;
const already = Symbol('already');
/**
* Test doc factory class.
* @example
* let factory = new TestDocFactory('mocha', ast, pathResolver);
* factory.push(node, parentNode);
* let results = factory.results;
*/
class TestDocFactory {
/**
* get unique id.
* @returns {number} unique id.
* @private
*/
static _getUniqueId() {
if (!this._sequence) /** @type {number} */ this._sequence = 0;
return this._sequence++;
}
/**
* @type {DocObject[]}
*/
get results() {
return [...this._results];
}
/**
* create instance.
* @param {string[]} interfaces - test interface names.
* @param {AST} ast - AST of test code.
* @param {PathResolver} pathResolver - path resolver of test code.
*/
constructor(interfaces, ast, pathResolver) {
/** @type {string} */
this._interfaces = interfaces;
/** @type {AST} */
this._ast = ast;
/** @type {PathResolver} */
this._pathResolver = pathResolver;
/** @type {DocObject[]} */
this._results = [];
// file doc
const doc = new TestFileDoc(ast, ast, pathResolver, []);
this._results.push(doc.value);
}
/**
* push node, and factory process the node.
* @param {ASTNode} node - target node.
* @param {ASTNode} parentNode - parent node of target node.
*/
push(node, parentNode) {
if (node[already]) return;
node[already] = true;
Reflect.defineProperty(node, 'parent', {value: parentNode});
this._push(node);
}
/**
* push node as mocha test code.
* @param {ASTNode} node - target node.
* @private
*/
_push(node) {
if (node.type !== 'ExpressionStatement') return;
const expression = node.expression;
if (expression.type !== 'CallExpression') return;
if (!this._interfaces.includes(expression.callee.name)) return;
expression[already] = true;
Reflect.defineProperty(expression, 'parent', {value: node});
let tags = [];
if (node.leadingComments && node.leadingComments.length) {
const comment = node.leadingComments[node.leadingComments.length - 1];
tags = CommentParser.parse(comment);
}
const uniqueId = this.constructor._getUniqueId();
expression._esdocTestId = uniqueId;
expression._esdocTestName = expression.callee.name + uniqueId;
const testDoc = new TestDoc(this._ast, expression, this._pathResolver, tags);
this._results.push(testDoc.value);
}
}
module.exports = TestDocFactory;
================================================
FILE: esdoc-integrate-test-plugin/src/TestFileDoc.js
================================================
// hack: depends on esdoc internal class
const FileDoc = require('esdoc/out/src/Doc/FileDoc').default;
/**
* Doc class for test code file.
*/
class TestFileDoc extends FileDoc {
/** set ``testFile`` to kind. */
_$kind() {
this._value.kind = 'testFile';
}
}
module.exports = TestFileDoc;
================================================
FILE: esdoc-integrate-test-plugin/test/esdoc.json
================================================
{
"source": "./test/src",
"destination": "./test/out",
"excludes": ["\\.test\\.js$"],
"plugins": [
{
"name": "./src/Plugin.js",
"option": {
"source": "./test/test",
"excludes": ["\\.test\\.js$"]
}
}
]
}
================================================
FILE: esdoc-integrate-test-plugin/test/init.js
================================================
const path = require('path');
const fs = require('fs');
const ESDocCLI = require('esdoc/out/src/ESDocCLI.js').default;
function cli() {
const cliPath = path.resolve('./node_modules/esdoc/out/ESDocCLI.js');
const argv = ['node', cliPath, '-c', './test/esdoc.json'];
const cli = new ESDocCLI(argv);
cli.exec();
global.docs = JSON.parse(fs.readFileSync('./test/out/index.json').toString());
}
cli();
================================================
FILE: esdoc-integrate-test-plugin/test/src/Dummy.js
================================================
export default class Dummy {
}
================================================
FILE: esdoc-integrate-test-plugin/test/test/Test.js
================================================
/**
* @test {TestTarget1}
*/
describe('describe/', ()=>{
/**
* @test {TestTarget2}
*/
it('describe/it', ()=>{});
/**
* @test {TestTarget3}
*/
describe('describe/describe/', ()=>{
/**
* @test {TestTarget4}
*/
it('describe/describe/it', ()=>{});
});
/**
* @test {TestTarget5}
*/
context('describe/context/', ()=>{
/**
* @test {TestTarget6}
*/
it('describe/context/it', ()=>{});
});
});
/**
* @test {TestTarget7}
*/
suite('suite/', ()=>{
/**
* @test {TestTarget8}
*/
test('suite/test', ()=>{});
/**
* @test {TestTarget9}
*/
suite('suite/suite/', ()=>{
/**
* @test {TestTarget10}
*/
test('suite/suite/test', ()=>{});
})
});
================================================
FILE: esdoc-integrate-test-plugin/test/test/Test.test.js
================================================
const assert = require('assert');
const {find} = require('../util');
describe('test/Test.js:', ()=>{
it('has describe/', ()=>{
const doc = find('longname', 'test/Test.js~describe0');
assert.equal(doc.testId, 0);
assert.equal(doc.testDepth, 0);
assert.equal(doc.description, 'describe/');
assert.deepEqual(doc.testTargets, ['TestTarget1']);
});
it('has describe/it', ()=>{
const doc = find('longname', 'test/Test.js~describe0.it1');
assert.equal(doc.testId, 1);
assert.equal(doc.testDepth, 1);
assert.equal(doc.description, 'describe/it');
assert.deepEqual(doc.testTargets, ['TestTarget2']);
});
it('has describe/describe', ()=>{
const doc = find('longname', 'test/Test.js~describe0.describe2');
assert.equal(doc.testId, 2);
assert.equal(doc.testDepth, 1);
assert.equal(doc.description, 'describe/describe/');
assert.deepEqual(doc.testTargets, ['TestTarget3']);
});
it('has describe/describe/it', ()=>{
const doc = find('longname', 'test/Test.js~describe0.describe2.it3');
assert.equal(doc.testId, 3);
assert.equal(doc.testDepth, 2);
assert.equal(doc.description, 'describe/describe/it');
assert.deepEqual(doc.testTargets, ['TestTarget4']);
});
it('has describe/context/it', ()=>{
const doc = find('longname', 'test/Test.js~describe0.context4.it5');
assert.equal(doc.testId, 5);
assert.equal(doc.testDepth, 2);
assert.equal(doc.description, 'describe/context/it');
assert.deepEqual(doc.testTargets, ['TestTarget6']);
});
it('has suite/', ()=>{
const doc = find('longname', 'test/Test.js~suite6');
assert.equal(doc.testId, 6);
assert.equal(doc.testDepth, 0);
assert.equal(doc.description, 'suite/');
assert.deepEqual(doc.testTargets, ['TestTarget7']);
});
it('has suite/test', ()=>{
const doc = find('longname', 'test/Test.js~suite6.test7');
assert.equal(doc.testId, 7);
assert.equal(doc.testDepth, 1);
assert.equal(doc.description, 'suite/test');
assert.deepEqual(doc.testTargets, ['TestTarget8']);
});
it('has suite/suite/', ()=>{
const doc = find('longname', 'test/Test.js~suite6.suite8');
assert.equal(doc.testId, 8);
assert.equal(doc.testDepth, 1);
assert.equal(doc.description, 'suite/suite/');
assert.deepEqual(doc.testTargets, ['TestTarget9']);
});
it('has suite/suite/test', ()=>{
const doc = find('longname', 'test/Test.js~suite6.suite8.test9');
assert.equal(doc.testId, 9);
assert.equal(doc.testDepth, 2);
assert.equal(doc.description, 'suite/suite/test');
assert.deepEqual(doc.testTargets, ['TestTarget10']);
});
});
================================================
FILE: esdoc-integrate-test-plugin/test/util.js
================================================
const fs = require('fs');
exports.find = function(key, ...values) {
if (values.length === 1) {
return global.docs.find((doc) => {
if (typeof values[0] === 'string') return doc[key] === values[0];
if (values[0] instanceof RegExp) return doc[key].match(values[0]);
});
}
const results = [];
for (const value of values) {
const result = global.docs.find(doc => {
if (typeof value === 'string') return doc[key] === value;
if (value instanceof RegExp) return doc[key].match(value);
});
results.push(result);
}
return results;
};
exports.file = function (filePath) {
return fs.readFileSync(filePath).toString();
};
================================================
FILE: esdoc-jsx-plugin/CHANGELOG.md
================================================
# Changelog
## 1.0.0 (2017-07-30)
- Release
================================================
FILE: esdoc-jsx-plugin/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2015 Ryo Maruyama
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: esdoc-jsx-plugin/README.md
================================================
# ESDoc JSX Plugin
## Install
```bash
npm install esdoc-jsx-plugin
```
## Config
```json
{
"source": "./src",
"destination": "./doc",
"plugins": [
{"name": "esdoc-jsx-plugin", "option": {"enable": true}}
]
}
```
- `enable` is default `true`
## LICENSE
MIT
## Author
[Ryo Maruyama@h13i32maru](https://github.com/h13i32maru)
================================================
FILE: esdoc-jsx-plugin/package.json
================================================
{
"name": "esdoc-jsx-plugin",
"version": "1.0.0",
"description": "A JSX plugin for ESDoc",
"author": "h13i32maru",
"homepage": "https://github.com/esdoc/esdoc-plugins",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/esdoc/esdoc-plugins"
},
"devDependencies": {
"esdoc": "latest",
"mocha": "2.5.3"
},
"engines": {
"node": ">= 6.0.0"
},
"scripts": {
"test": "rm -rf ./test/out && mocha --require ./test/init.js $(find test/ -regex '.*.test.js$') -R spec"
},
"keywords": [
"esdoc",
"jsx",
"plugin"
],
"files": [
"src",
"README.md"
],
"main": "src/Plugin.js"
}
================================================
FILE: esdoc-jsx-plugin/src/Plugin.js
================================================
class Plugin {
onHandleCodeParser(ev) {
const option = ev.data.option || {};
const plugins = ev.data.parserOption.plugins;
if (!('enable' in option)) option.enable = true;
if (option.enable) plugins.push('jsx');
}
}
module.exports = new Plugin();
================================================
FILE: esdoc-jsx-plugin/test/esdoc.json
================================================
{
"source": "./test/src",
"destination": "./test/out",
"excludes": ["\\.test\\.js$"],
"plugins": [
{"name": "./src/Plugin.js"}
]
}
================================================
FILE: esdoc-jsx-plugin/test/init.js
================================================
const path = require('path');
const fs = require('fs');
const ESDocCLI = require('esdoc/out/src/ESDocCLI.js').default;
function cli() {
const cliPath = path.resolve('./node_modules/esdoc/out/ESDocCLI.js');
const argv = ['node', cliPath, '-c', './test/esdoc.json'];
const cli = new ESDocCLI(argv);
cli.exec();
global.docs = JSON.parse(fs.readFileSync('./test/out/index.json').toString());
}
cli();
================================================
FILE: esdoc-jsx-plugin/test/src/MyClass.js
================================================
export default class MyClass {
method(){
return
Sorry, this documentation does not provide source code.
================================================ FILE: esdoc-publish-html-plugin/src/Builder/template/identifiers.html ================================================
| Name | Type | Attribute | Description |
=h&&(b+=2);f>=k&&(w+=2)}}finally{g&&(g.style.display=a)}}catch(x){E.console&&console.log(x&&x.stack||x)}}var E=window,C=["break,continue,do,else,for,if,return,while"], F=[[C,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,restrict,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],H=[F,"alignas,alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,noexcept,noreturn,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"], O=[F,"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],P=[F,"abstract,add,alias,as,ascending,async,await,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,get,global,group,implicit,in,interface,internal,into,is,join,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,remove,sbyte,sealed,select,set,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,value,var,virtual,where,yield"], F=[F,"abstract,async,await,constructor,debugger,enum,eval,export,function,get,implements,instanceof,interface,let,null,set,undefined,var,with,yield,Infinity,NaN"],Q=[C,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],R=[C,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],C=[C,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"], S=/^(DIR|FILE|array|vector|(de|priority_)?queue|(forward_)?list|stack|(const_)?(reverse_)?iterator|(unordered_)?(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,W=/\S/,X=y({keywords:[H,P,O,F,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",Q,R,C],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),I={};t(X,["default-code"]);t(G([],[["pln",/^[^]+/],["dec", /^]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^