From 14303926f26d07aa7527901eefe6af11d5dcf862 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Tue, 13 Aug 2024 15:42:19 -0500 Subject: [PATCH 1/3] updated documentation --- DEV_NOTES.md | 3 ++- README.md | 43 +++++++++++++++++++++++++++---------------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/DEV_NOTES.md b/DEV_NOTES.md index 68934fc..39adb76 100644 --- a/DEV_NOTES.md +++ b/DEV_NOTES.md @@ -3,7 +3,8 @@ Stuff we fix vs. the standard [JSDoc DMD](https://github.com/jsdoc2md/dmd): - Try and normalize all the section spacing to a single line. There's an unknown error where the last is getting cut off sometimes, but not always, so we have to do two for some sections to keep things working (see [`description.hbs`](./partial/all-docs/docs/body/description.hbs) for an example; search for TODO for more). - Make [`throws.hbs`](./partial/all-docs/docs/body/throws.hbs) smart about using one line for a single entry and a list if multiple. -- Added 'list' format ([`global-index-list.hbs`](./partial/main-index/global-index/global-index-list.hbs) format to the global index; made more compact and shortened index signatures ([`sig-name-only-link.hbs`](./partial/shared/signature/sig-name-only-link.hbs)). +- Added 'list' format ([`global-index-list.hbs`](./partial/main-index/global-index/global-index-list.hbs) format to the global index +- Made index signatures more cmpact in the index listings ([`sig-name-only-link.hbs`](./partial/shared/signature/sig-name-only-link.hbs)). - Only display the 'Kind' when it's complex; no need to tell someone it's a basic function or constant or whatever. (which is oddly defined in [`scope.hbs`](./partial/all-docs/docs/body/scope.hbs), but we keep it to mirror base DMD). - Removed last vestigates of HTML (``s). - Added detection of the 'summary' (first line of description) for use in index. Before was dropping the whole description in the index links! diff --git a/README.md b/README.md index 61628a6..a55904d 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ A [jsdoc2md](https://github.com/jsdoc2md/jsdoc-to-markdown) template plugin gene - [Installation](#installation) - [Usage](#usage) +- [Features](#features) - [Examples](#examples) - [History](#history]) - [Contributing](#contributing) @@ -23,13 +24,17 @@ npx jsdoc2md \ --files 'src/**/*' \ --global-index-format list \ --name-format \ - --plugin dmd-readme-api + --plugin dmd-readme-api \ + --no-cache ```
- You can leave off the `--plugin` if it's specified in the `jsdoc.config.json` file. Expand this section for furthe details. + You must specify `--plugin` even if it's specified in the `jsdoc.config.json` file. Expand this section for further details. -- The `--global-index-format list` bit is important, it's what the template was designed to use and we don't fully support the 'table', 'grouped', or 'dl' formats yet. You're free to try them, but results are not guaranteed. +- The `--global-index-format grouped` will use + + +bit is important, it's what the template was designed to use and we don't fully support the 'table', 'grouped', or 'dl' formats yet. You're free to try them, but results are not guaranteed. - You don't need to specify the plugin on both the CLI and in the config file (see below). - You do need the `--files 'path/to/src/**'` bit, even though you also (and really must) specify the 'source' in the config file as well. jsdoc2md and jsdoc don't seem to be fully integrated at this point. - Same with `--name-format`. It's part of the style and is recommended, but can only be set on the command line at this time. @@ -66,19 +71,31 @@ npx jsdoc2md \
+## Features + +(As compared to the base [dmd](https://github.com/jsdoc2md/dmd) template.) + +- Only display summary (first line) of documentation in the index and show full documentation in the linked entry. (This makes thins _a lot_ more compact.) +- Added sorting of the underlying data so everything is displayed in a consistent order. +- Adds support for simple list of global identifiers (set `--global-index-format list`). +- Add links to the source code where an identifier is defined. +- Fixes all `` and uses Markdown native backtick instead. +- Uses compact method signatures in any index; much easier to read. +- Render `@throws` on one line if only one `@throws` defined, otherwise generate list. +- Makes the 'Examples' section more compact. +- Only display identifier 'kind' when it's complex; otherwise it's obvious based on the section. + ## Examples - [react-window-context](https://github.com/liquid-labs/react-window-context) [API section](https://github.com/liquid-labs/react-window-context#api-reference) +- [regex-repo](https://github.com/liquid-labs/regex-repo) [regex reference](https://github.com/liquid-labs/regex-repo#regex-reference) ## History
- We wanted good API documentation and a live demo and tried a lot of different ways to get there. - -We wanted to accomplish two main goals: + We wanted good, compact API documentation and tried a lot of different ways to get there. -1) Embed an API in our `README.md` and update it automatically. -2) Provide a live demo. +Our main goal was to embed an easy to read, automatically generated API in our `README.md` files. Our first thought, after some research, was to use [Docusaurus](https://docusaurus.io/), hosted on GitHub. We found [this script](https://gist.github.com/slorber/0bf8c8c8001505f0f99a062ac55bf442) and, even more promising, [this library](https://naver.github.io/jsdoc-to-mdx/docs/setting-up-docusaurus/), which seemed to be exactly what we wanted because Docusaurus supports rendering React components and the script and library promised to generate API documentation as a Docusaurus doc. @@ -86,7 +103,7 @@ Unfortunately, neither worked out. The script has a lot of assumptions and the l [^1]:as of 2024-02-09 -We instead turned to tackling the goals in two steps. The first step was rendering the jsdocs in markdown and appending those to a simple template. We'l then use [CodePen](https://codepen.io) or something to host a live demo. +We instead turned to tackling the goals in two steps. The first step was rendering the jsdocs in markdown and appending those to a simple template. So, the way jsdocs works is gather's all the doc information into JSON data. The data representing the parsed jsdocs is passed through a templating system to generate the output. We tried many different templates, expecting to find one that worked off the shelf. @@ -102,13 +119,7 @@ But one nice thing about jsdoc2md is it's "relatively" easy to customize. You ha So, anyway, there's a template system called dmd which process [handlebarjs](https://handlebarsjs.com/) and jsdoc2md uses, [dmd](https://github.com/jsdoc2md/dmd) and you can make little template partials to override snippets of their template. So that's what we did, and that's what this library is. -We tried to cleanup a lot of things in template. You can see the full list of modifications in the [`DEV_NOTES.md`](./DEV_NOTES.md). In summmary, though, we believe our template: - -- Removes unecessary verbosity. -- Increases the generated API document's clarity and readability. -- Generates consistent, proper markdown. - -The result is a templaet that, when used jsdoc2md, creates nice, relatively compact Markdown you can attach right ot your `README.md`. +We tried to cleanup a lot of things in template. You can see the full list of modifications in the [`DEV_NOTES.md`](./DEV_NOTES.md). The result is a template that, when used jsdoc2md, creates nice, relatively compact Markdown you can attach right to your `README.md`.
From d06e9e0f39bbd10b5d25c94ef5b0aec1d7105ef8 Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Tue, 13 Aug 2024 15:42:38 -0500 Subject: [PATCH 2/3] Save QA files. --- qa/coverage/base.css | 224 +++++++++++++++ qa/coverage/block-navigation.js | 87 ++++++ qa/coverage/clover.xml | 64 +++++ qa/coverage/coverage-final.json | 4 + qa/coverage/ddata.js.html | 187 ++++++++++++ qa/coverage/dmd-readme-api/.eslintrc.js.html | 265 ++++++++++++++++++ .../dmd-readme-api/helpers/ddata.js.html | 187 ++++++++++++ .../dmd-readme-api/helpers/helpers.js.html | 247 ++++++++++++++++ qa/coverage/dmd-readme-api/helpers/index.html | 131 +++++++++ qa/coverage/dmd-readme-api/index.html | 116 ++++++++ qa/coverage/favicon.png | Bin 0 -> 445 bytes qa/coverage/helpers.js.html | 220 +++++++++++++++ qa/coverage/helpers/ddata.js.html | 190 +++++++++++++ qa/coverage/helpers/helpers.js.html | 175 ++++++++++++ qa/coverage/helpers/index.html | 131 +++++++++ qa/coverage/index.html | 131 +++++++++ qa/coverage/prettify.css | 1 + qa/coverage/prettify.js | 2 + qa/coverage/sort-arrow-sprite.png | Bin 0 -> 138 bytes qa/coverage/sorter.js | 196 +++++++++++++ qa/lint.txt | 2 + qa/unit-test.txt | 69 +++++ 22 files changed, 2629 insertions(+) create mode 100644 qa/coverage/base.css create mode 100644 qa/coverage/block-navigation.js create mode 100644 qa/coverage/clover.xml create mode 100644 qa/coverage/coverage-final.json create mode 100644 qa/coverage/ddata.js.html create mode 100644 qa/coverage/dmd-readme-api/.eslintrc.js.html create mode 100644 qa/coverage/dmd-readme-api/helpers/ddata.js.html create mode 100644 qa/coverage/dmd-readme-api/helpers/helpers.js.html create mode 100644 qa/coverage/dmd-readme-api/helpers/index.html create mode 100644 qa/coverage/dmd-readme-api/index.html create mode 100644 qa/coverage/favicon.png create mode 100644 qa/coverage/helpers.js.html create mode 100644 qa/coverage/helpers/ddata.js.html create mode 100644 qa/coverage/helpers/helpers.js.html create mode 100644 qa/coverage/helpers/index.html create mode 100644 qa/coverage/index.html create mode 100644 qa/coverage/prettify.css create mode 100644 qa/coverage/prettify.js create mode 100644 qa/coverage/sort-arrow-sprite.png create mode 100644 qa/coverage/sorter.js create mode 100644 qa/lint.txt create mode 100644 qa/unit-test.txt diff --git a/qa/coverage/base.css b/qa/coverage/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/qa/coverage/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/qa/coverage/block-navigation.js b/qa/coverage/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/qa/coverage/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/qa/coverage/clover.xml b/qa/coverage/clover.xml new file mode 100644 index 0000000..1003f43 --- /dev/null +++ b/qa/coverage/clover.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qa/coverage/coverage-final.json b/qa/coverage/coverage-final.json new file mode 100644 index 0000000..4f693f6 --- /dev/null +++ b/qa/coverage/coverage-final.json @@ -0,0 +1,4 @@ +{"/Users/zane/playground/dmd-readme-api/.eslintrc.js": {"path":"/Users/zane/playground/dmd-readme-api/.eslintrc.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":47,"column":1}},"1":{"start":{"line":60,"column":0},"end":{"line":60,"column":29}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0},"f":{},"b":{}} +,"/Users/zane/playground/dmd-readme-api/helpers/ddata.js": {"path":"/Users/zane/playground/dmd-readme-api/helpers/ddata.js","statementMap":{"0":{"start":{"line":1,"column":22},"end":{"line":13,"column":1}},"1":{"start":{"line":15,"column":26},"end":{"line":15,"column":46}},"2":{"start":{"line":18,"column":2},"end":{"line":18,"column":99}},"3":{"start":{"line":18,"column":50},"end":{"line":18,"column":69}},"4":{"start":{"line":18,"column":70},"end":{"line":18,"column":80}},"5":{"start":{"line":22,"column":2},"end":{"line":29,"column":4}},"6":{"start":{"line":23,"column":23},"end":{"line":23,"column":72}},"7":{"start":{"line":23,"column":54},"end":{"line":23,"column":71}},"8":{"start":{"line":24,"column":23},"end":{"line":24,"column":72}},"9":{"start":{"line":24,"column":54},"end":{"line":24,"column":71}},"10":{"start":{"line":26,"column":4},"end":{"line":28,"column":48}},"11":{"start":{"line":26,"column":35},"end":{"line":26,"column":44}},"12":{"start":{"line":27,"column":9},"end":{"line":28,"column":48}},"13":{"start":{"line":27,"column":40},"end":{"line":27,"column":48}},"14":{"start":{"line":28,"column":11},"end":{"line":28,"column":46}},"15":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"16":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}},"17":{"start":{"line":34,"column":0},"end":{"line":34,"column":25}}},"fnMap":{"0":{"name":"handledKinds","decl":{"start":{"line":15,"column":9},"end":{"line":15,"column":21}},"loc":{"start":{"line":15,"column":24},"end":{"line":15,"column":48}},"line":15},"1":{"name":"hasMultipleKinds","decl":{"start":{"line":17,"column":9},"end":{"line":17,"column":25}},"loc":{"start":{"line":17,"column":35},"end":{"line":19,"column":1}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":36},"end":{"line":18,"column":37}},"loc":{"start":{"line":18,"column":48},"end":{"line":18,"column":82}},"line":18},"3":{"name":"sortAll","decl":{"start":{"line":21,"column":9},"end":{"line":21,"column":16}},"loc":{"start":{"line":21,"column":26},"end":{"line":30,"column":1}},"line":21},"4":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":25},"end":{"line":22,"column":26}},"loc":{"start":{"line":22,"column":35},"end":{"line":29,"column":3}},"line":22},"5":{"name":"(anonymous_5)","decl":{"start":{"line":23,"column":47},"end":{"line":23,"column":48}},"loc":{"start":{"line":23,"column":54},"end":{"line":23,"column":71}},"line":23},"6":{"name":"(anonymous_6)","decl":{"start":{"line":24,"column":47},"end":{"line":24,"column":48}},"loc":{"start":{"line":24,"column":54},"end":{"line":24,"column":71}},"line":24}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":48}},"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":28,"column":48}},{"start":{"line":27,"column":9},"end":{"line":28,"column":48}}],"line":26},"1":{"loc":{"start":{"line":27,"column":9},"end":{"line":28,"column":48}},"type":"if","locations":[{"start":{"line":27,"column":9},"end":{"line":28,"column":48}},{"start":{"line":28,"column":9},"end":{"line":28,"column":48}}],"line":27}},"s":{"0":2,"1":4,"2":13,"3":27,"4":27,"5":7,"6":9,"7":45,"8":9,"9":41,"10":9,"11":1,"12":8,"13":4,"14":4,"15":2,"16":2,"17":2},"f":{"0":4,"1":13,"2":27,"3":7,"4":9,"5":45,"6":41},"b":{"0":[1,8],"1":[4,4]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f2339f4eb613591b882520eab030c2abd9e3fe54"} +,"/Users/zane/playground/dmd-readme-api/helpers/helpers.js": {"path":"/Users/zane/playground/dmd-readme-api/helpers/helpers.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":25}},"1":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"2":{"start":{"line":5,"column":4},"end":{"line":5,"column":13}},"3":{"start":{"line":8,"column":15},"end":{"line":8,"column":24}},"4":{"start":{"line":9,"column":19},"end":{"line":9,"column":32}},"5":{"start":{"line":10,"column":15},"end":{"line":10,"column":24}},"6":{"start":{"line":11,"column":17},"end":{"line":11,"column":28}},"7":{"start":{"line":14,"column":18},"end":{"line":14,"column":46}},"8":{"start":{"line":16,"column":2},"end":{"line":16,"column":49}},"9":{"start":{"line":21,"column":16},"end":{"line":21,"column":61}},"10":{"start":{"line":22,"column":2},"end":{"line":22,"column":43}},"11":{"start":{"line":26,"column":20},"end":{"line":26,"column":42}},"12":{"start":{"line":27,"column":2},"end":{"line":27,"column":43}},"13":{"start":{"line":27,"column":29},"end":{"line":27,"column":41}},"14":{"start":{"line":29,"column":2},"end":{"line":29,"column":33}},"15":{"start":{"line":33,"column":20},"end":{"line":33,"column":42}},"16":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"17":{"start":{"line":34,"column":29},"end":{"line":34,"column":41}},"18":{"start":{"line":36,"column":2},"end":{"line":36,"column":32}},"19":{"start":{"line":40,"column":20},"end":{"line":45,"column":1}},"20":{"start":{"line":42,"column":20},"end":{"line":42,"column":47}},"21":{"start":{"line":43,"column":2},"end":{"line":43,"column":46}},"22":{"start":{"line":43,"column":32},"end":{"line":43,"column":44}},"23":{"start":{"line":44,"column":2},"end":{"line":44,"column":18}},"24":{"start":{"line":47,"column":0},"end":{"line":47,"column":45}},"25":{"start":{"line":48,"column":0},"end":{"line":48,"column":39}},"26":{"start":{"line":49,"column":0},"end":{"line":49,"column":17}},"27":{"start":{"line":50,"column":0},"end":{"line":50,"column":15}},"28":{"start":{"line":51,"column":0},"end":{"line":51,"column":28}},"29":{"start":{"line":51,"column":23},"end":{"line":51,"column":28}},"30":{"start":{"line":52,"column":0},"end":{"line":52,"column":30}},"31":{"start":{"line":52,"column":24},"end":{"line":52,"column":30}},"32":{"start":{"line":53,"column":0},"end":{"line":53,"column":28}},"33":{"start":{"line":53,"column":23},"end":{"line":53,"column":28}},"34":{"start":{"line":54,"column":0},"end":{"line":54,"column":30}},"35":{"start":{"line":54,"column":24},"end":{"line":54,"column":30}}},"fnMap":{"0":{"name":"extractSourceLink","decl":{"start":{"line":3,"column":9},"end":{"line":3,"column":26}},"loc":{"start":{"line":3,"column":29},"end":{"line":17,"column":1}},"line":3},"1":{"name":"extractSummary","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":23}},"loc":{"start":{"line":19,"column":37},"end":{"line":23,"column":1}},"line":19},"2":{"name":"and","decl":{"start":{"line":25,"column":9},"end":{"line":25,"column":12}},"loc":{"start":{"line":25,"column":15},"end":{"line":30,"column":1}},"line":25},"3":{"name":"or","decl":{"start":{"line":32,"column":9},"end":{"line":32,"column":11}},"loc":{"start":{"line":32,"column":14},"end":{"line":37,"column":1}},"line":32},"4":{"name":"(anonymous_4)","decl":{"start":{"line":40,"column":20},"end":{"line":40,"column":21}},"loc":{"start":{"line":40,"column":35},"end":{"line":45,"column":1}},"line":40},"5":{"name":"(anonymous_5)","decl":{"start":{"line":51,"column":13},"end":{"line":51,"column":14}},"loc":{"start":{"line":51,"column":23},"end":{"line":51,"column":28}},"line":51},"6":{"name":"(anonymous_6)","decl":{"start":{"line":52,"column":14},"end":{"line":52,"column":15}},"loc":{"start":{"line":52,"column":24},"end":{"line":52,"column":30}},"line":52},"7":{"name":"(anonymous_7)","decl":{"start":{"line":53,"column":13},"end":{"line":53,"column":14}},"loc":{"start":{"line":53,"column":23},"end":{"line":53,"column":28}},"line":53},"8":{"name":"(anonymous_8)","decl":{"start":{"line":54,"column":14},"end":{"line":54,"column":15}},"loc":{"start":{"line":54,"column":24},"end":{"line":54,"column":30}},"line":54}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"type":"if","locations":[{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},{"start":{},"end":{}}],"line":4},"1":{"loc":{"start":{"line":22,"column":9},"end":{"line":22,"column":43}},"type":"binary-expr","locations":[{"start":{"line":22,"column":10},"end":{"line":22,"column":15}},{"start":{"line":22,"column":19},"end":{"line":22,"column":27}},{"start":{"line":22,"column":32},"end":{"line":22,"column":43}}],"line":22},"2":{"loc":{"start":{"line":27,"column":2},"end":{"line":27,"column":43}},"type":"if","locations":[{"start":{"line":27,"column":2},"end":{"line":27,"column":43}},{"start":{},"end":{}}],"line":27},"3":{"loc":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"type":"if","locations":[{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},{"start":{},"end":{}}],"line":34},"4":{"loc":{"start":{"line":43,"column":2},"end":{"line":43,"column":46}},"type":"if","locations":[{"start":{"line":43,"column":2},"end":{"line":43,"column":46}},{"start":{},"end":{}}],"line":43}},"s":{"0":2,"1":8,"2":0,"3":8,"4":8,"5":8,"6":8,"7":8,"8":8,"9":12,"10":12,"11":17,"12":17,"13":1,"14":16,"15":17,"16":17,"17":1,"18":16,"19":2,"20":34,"21":34,"22":2,"23":32,"24":2,"25":2,"26":2,"27":2,"28":2,"29":0,"30":2,"31":0,"32":2,"33":0,"34":2,"35":0},"f":{"0":8,"1":12,"2":17,"3":17,"4":34,"5":0,"6":0,"7":0,"8":0},"b":{"0":[0,8],"1":[12,7,5],"2":[1,16],"3":[1,16],"4":[2,32]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d024a9f0b3d3f7cc91e746883d4545bb4b615bc5"} +} diff --git a/qa/coverage/ddata.js.html b/qa/coverage/ddata.js.html new file mode 100644 index 0000000..fd48b42 --- /dev/null +++ b/qa/coverage/ddata.js.html @@ -0,0 +1,187 @@ + + + + + + Code coverage report for ddata.js + + + + + + + + + +
+
+

All files ddata.js

+
+ +
+ 100% + Statements + 18/18 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 7/7 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +352x +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +19x +  +  +  +6x +35x +29x +  +7x +6x +4x +  +  +  +2x +2x +2x + 
const _handledKinds = [
+  { kind: 'class', title: 'Classes' },
+  { kind: 'mixin', title: 'Mixins' },
+  { kind: 'member', title: 'Members' },
+  { kind: 'namespace', title: 'Namespaces' },
+  { kind: 'constant', title: 'Constants' },
+  { kind: 'component', title: 'Components' },
+  { kind: 'function', title: 'Functions' },
+  { kind: 'event', title: 'Events' },
+  { kind: 'typedef', title: 'Typedefs' },
+  { kind: 'external', title: 'Externals' },
+  { kind: 'interface', interface: 'Interfaces' }
+]
+ 
+function handledKinds() { return _handledKinds }
+ 
+function hasMultipleKinds(globals) {
+  return Object.keys(globals.reduce((acc, g) => { acc[g.kind] = true; return acc }, {})).length > 1
+}
+ 
+function sortAll(options) {
+  options.data.root.sort((a, b) => {
+    const indexAKind = _handledKinds.findIndex((k) => k.kind === a.kind)
+    const indexBKind = _handledKinds.findIndex((k) => k.kind === b.kind)
+ 
+    if (indexAKind < indexBKind) { return -1 }
+    else if (indexAKind > indexBKind) { return 1 }
+    else { return a.name.localeCompare(b.name) }
+  })
+}
+ 
+exports.handledKinds = handledKinds
+exports.hasMultipleKinds = hasMultipleKinds
+exports.sortAll = sortAll
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/.eslintrc.js.html b/qa/coverage/dmd-readme-api/.eslintrc.js.html new file mode 100644 index 0000000..e75c059 --- /dev/null +++ b/qa/coverage/dmd-readme-api/.eslintrc.js.html @@ -0,0 +1,265 @@ + + + + + + Code coverage report for dmd-readme-api/.eslintrc.js + + + + + + + + + +
+
+

All files / dmd-readme-api .eslintrc.js

+
+ +
+ 0% + Statements + 0/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 0% + Lines + 0/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
const eslintConfig = {
+  extends : [
+    'standard',
+    'eslint:recommended'
+  ],
+  env : {
+    es6 : true
+  },
+  plugins : [],
+  rules   : {
+    'brace-style'       : [2, 'stroustrup', { allowSingleLine : true }],
+    curly               : [2, 'multi-line'],
+    'import/export'     : 1,
+    'import/extensions' : ['error', 'never', { json : ['error', 'always'] }],
+    indent              : [2, 2, {
+      FunctionDeclaration : { body : 1, parameters : 2 },
+      ignoredNodes        : ['JSXElement', 'JSXElement > *', 'JSXAttribute', 'JSXIdentifier', 'JSXNamespacedName', 'JSXMemberExpression', 'JSXSpreadAttribute', 'JSXExpressionContainer', 'JSXOpeningElement', 'JSXClosingElement', 'JSXText', 'JSXEmptyExpression', 'JSXSpreadChild']
+    }],
+    'key-spacing' : [2, {
+      singleLine : {
+        beforeColon : true,
+        afterColon  : true,
+        mode        : 'strict'
+      },
+      multiLine : {
+        beforeColon : true,
+        afterColon  : true,
+        align       : 'colon'
+      }
+    }],
+    'operator-linebreak'          : [2, 'before', { overrides : { '=' : 'after' } }],
+    'prefer-const'                : 2,
+    'prefer-spread'               : 2,
+    'space-before-function-paren' : [2, 'never'],
+ 
+    'array-callback-return'   : 2,
+    'guard-for-in'            : 2,
+    'no-caller'               : 2,
+    'no-extra-bind'           : 2,
+    'no-multi-spaces'         : 2,
+    'no-new-wrappers'         : 2,
+    'no-throw-literal'        : 2,
+    'no-unexpected-multiline' : 2,
+    'no-with'                 : 2,
+    yoda                      : 2
+  }
+}
+ 
+/*
+if (pkglib.target.isReactish) {
+  eslintConfig.extends.push('standard-react')
+  eslintConfig.plugins.push('react')
+  Object.assign(eslintConfig.rules, {
+    'react/jsx-boolean-value' : [2, 'never'],
+    'react/jsx-indent-props'  : [2, 4]
+  })
+}
+*/
+ 
+module.exports = eslintConfig
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/helpers/ddata.js.html b/qa/coverage/dmd-readme-api/helpers/ddata.js.html new file mode 100644 index 0000000..32bf56b --- /dev/null +++ b/qa/coverage/dmd-readme-api/helpers/ddata.js.html @@ -0,0 +1,187 @@ + + + + + + Code coverage report for dmd-readme-api/helpers/ddata.js + + + + + + + + + +
+
+

All files / dmd-readme-api/helpers ddata.js

+
+ +
+ 100% + Statements + 18/18 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 7/7 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +352x +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +  +  +27x +  +  +  +7x +45x +41x +  +9x +8x +4x +  +  +  +2x +2x +2x + 
const _handledKinds = [
+  { kind : 'class', title : 'Classes' },
+  { kind : 'mixin', title : 'Mixins' },
+  { kind : 'member', title : 'Members' },
+  { kind : 'namespace', title : 'Namespaces' },
+  { kind : 'constant', title : 'Constants' },
+  { kind : 'component', title : 'Components' },
+  { kind : 'function', title : 'Functions' },
+  { kind : 'event', title : 'Events' },
+  { kind : 'typedef', title : 'Typedefs' },
+  { kind : 'external', title : 'Externals' },
+  { kind : 'interface', interface : 'Interfaces' }
+]
+ 
+function handledKinds() { return _handledKinds }
+ 
+function hasMultipleKinds(globals) {
+  return Object.keys(globals.reduce((acc, g) => { acc[g.kind] = true; return acc }, {})).length > 1
+}
+ 
+function sortAll(options) {
+  options.data.root.sort((a, b) => {
+    const indexAKind = _handledKinds.findIndex((k) => k.kind === a.kind)
+    const indexBKind = _handledKinds.findIndex((k) => k.kind === b.kind)
+ 
+    if (indexAKind < indexBKind) { return -1 }
+    else if (indexAKind > indexBKind) { return 1 }
+    else { return a.name.localeCompare(b.name) }
+  })
+}
+ 
+exports.handledKinds = handledKinds
+exports.hasMultipleKinds = hasMultipleKinds
+exports.sortAll = sortAll
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/helpers/helpers.js.html b/qa/coverage/dmd-readme-api/helpers/helpers.js.html new file mode 100644 index 0000000..9536cb6 --- /dev/null +++ b/qa/coverage/dmd-readme-api/helpers/helpers.js.html @@ -0,0 +1,247 @@ + + + + + + Code coverage report for dmd-readme-api/helpers/helpers.js + + + + + + + + + +
+
+

All files / dmd-readme-api/helpers helpers.js

+
+ +
+ 86.11% + Statements + 31/36 +
+ + +
+ 90.9% + Branches + 10/11 +
+ + +
+ 55.55% + Functions + 5/9 +
+ + +
+ 96.55% + Lines + 28/29 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +552x +  +  +8x +  +  +  +8x +8x +8x +8x +  +  +8x +  +8x +  +  +  +  +12x +12x +  +  +  +17x +17x +  +16x +  +  +  +17x +17x +  +16x +  +  +  +2x +  +34x +34x +32x +  +  +2x +2x +2x +2x +2x +2x +2x +2x + 
const cwd = process.cwd()
+ 
+function extractSourceLink() {
+  Iif (this.meta === undefined) {
+    return ''
+  }
+ 
+  const meta = this.meta
+  const filename = meta.filename
+  const path = meta.path
+  const lineno = meta.lineno
+  // assumes we've checked out to a folder matching myPackageName
+  // TODO: this logic is assuming *nix style path separators
+  const relPath = '.' + path.slice(cwd.length)
+ 
+  return relPath + '/' + filename + '#L' + lineno
+}
+ 
+function extractSummary(description) {
+  // No idea why, but the 'm' (multiline match) doesn't seem to be working...
+  const match = description.match(/([^.!?]+[.?!])(?:.|\n)*/m)
+  return (match && match[1]) || description
+}
+ 
+function and() {
+  const testInput = logicHelper(arguments)
+  if (testInput === false) { return false }
+  // else
+  return testInput.every(Boolean)
+}
+ 
+function or() {
+  const testInput = logicHelper(arguments)
+  if (testInput === false) { return false }
+  // else
+  return testInput.some(Boolean)
+}
+ 
+// Helper fenctions
+const logicHelper = (argsArray) => {
+  // we cut out the last arg because it's the implicit 'options' arg, which isn't really part of the input
+  const testInput = [...argsArray].slice(0, -1)
+  if (testInput.length === 0) { return false }
+  return testInput
+}
+ 
+exports.extractSourceLink = extractSourceLink
+exports.extractSummary = extractSummary
+exports.and = and
+exports.or = or
+exports.gt = (a, b) => a > b
+exports.gte = (a, b) => a >= b
+exports.lt = (a, b) => a < b
+exports.lte = (a, b) => a <= b
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/helpers/index.html b/qa/coverage/dmd-readme-api/helpers/index.html new file mode 100644 index 0000000..4e8dbdf --- /dev/null +++ b/qa/coverage/dmd-readme-api/helpers/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for dmd-readme-api/helpers + + + + + + + + + +
+
+

All files dmd-readme-api/helpers

+
+ +
+ 90.74% + Statements + 49/54 +
+ + +
+ 93.33% + Branches + 14/15 +
+ + +
+ 75% + Functions + 12/16 +
+ + +
+ 97.56% + Lines + 40/41 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ddata.js +
+
100%18/18100%4/4100%7/7100%12/12
helpers.js +
+
86.11%31/3690.9%10/1155.55%5/996.55%28/29
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/index.html b/qa/coverage/dmd-readme-api/index.html new file mode 100644 index 0000000..e89e5a6 --- /dev/null +++ b/qa/coverage/dmd-readme-api/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for dmd-readme-api + + + + + + + + + +
+
+

All files dmd-readme-api

+
+ +
+ 0% + Statements + 0/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 0% + Lines + 0/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
.eslintrc.js +
+
0%0/2100%0/0100%0/00%0/2
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/favicon.png b/qa/coverage/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for helpers.js + + + + + + + + + +
+
+

All files helpers.js

+
+ +
+ 100% + Statements + 26/26 +
+ + +
+ 100% + Branches + 9/9 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 23/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +42 +43 +44 +45 +462x +  +  +6x +6x +6x +6x +  +  +6x +  +6x +  +  +  +  +10x +10x +  +  +  +14x +14x +  +13x +  +  +  +14x +14x +  +13x +  +  +  +2x +  +28x +28x +26x +  +  +2x +2x +2x +2x
const cwd = process.cwd()
+ 
+function extractSourceLink() {
+  const meta = this.meta
+  const filename = meta.filename
+  const path = meta.path
+  const lineno = meta.lineno
+  // assumes we've checked out to a folder matching myPackageName
+  // TODO: this logic is assuming *nix style path separators
+  const relPath = '.' + path.slice(cwd.length)
+ 
+  return relPath + '/' + filename + '#L' + lineno
+}
+ 
+function extractSummary(description) {
+  // No idea why, but the 'm' (multiline match) doesn't seem to be working...
+  const match = description.match(/([^.!?]+[.?!])(?:.|\n)*/m)
+  return (match && match[1]) || description
+}
+ 
+function and() {
+  const testInput = logicHelper(arguments)
+  if (testInput === false) { return false }
+  // else
+  return testInput.every(Boolean);
+}
+ 
+function or() {
+  const testInput = logicHelper(arguments)
+  if (testInput === false) { return false }
+  // else
+  return testInput.some(Boolean);
+}
+ 
+// Helper fenctions
+const logicHelper = (argsArray) => {
+  // we cut out the last arg because it's the implicit 'options' arg, which isn't really part of the input
+  const testInput = [...argsArray].slice(0, -1)
+  if (testInput.length === 0) { return false }
+  return testInput
+}
+ 
+exports.extractSourceLink = extractSourceLink
+exports.extractSummary = extractSummary
+exports.and = and
+exports.or = or
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/helpers/ddata.js.html b/qa/coverage/helpers/ddata.js.html new file mode 100644 index 0000000..36773d4 --- /dev/null +++ b/qa/coverage/helpers/ddata.js.html @@ -0,0 +1,190 @@ + + + + + + Code coverage report for helpers/ddata.js + + + + + + + + + +
+
+

All files / helpers ddata.js

+
+ +
+ 0% + Statements + 0/19 +
+ + +
+ 0% + Branches + 0/4 +
+ + +
+ 0% + Functions + 0/7 +
+ + +
+ 0% + Lines + 0/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
var handlebars = require('handlebars')
+ 
+function hasMultipleKinds(globals) {
+  return Object.keys(globals.reduce((acc, g) => { acc[g.kind] = true; return acc }, {})).length > 1
+}
+ 
+const _kinds = [
+  { kind: 'class', title: 'Classes' },
+  { kind: 'mixin', title: 'Mixins' },
+  { kind: 'member', title: 'Members' },
+  { kind: 'namespace', title: 'Namespaces' },
+  { kind: 'constant', title: 'Constants' },
+  { kind: 'component', title: 'Components' },
+  { kind: 'function', title: 'Functions' },
+  { kind: 'event', title: 'Events' },
+  { kind: 'typedef', title: 'Typedefs' },
+  { kind: 'external', title: 'Externals' },
+  { kind: 'interface', interface: 'Interfaces' }
+]
+ 
+function kinds() { return _kinds }
+ 
+function sortAll(options) {
+  options.data.root.sort((a, b) => {
+    const indexAKind = _kinds.findIndex((k) => k.kind === a.kind)
+    const indexBKind = _kinds.findIndex((k) => k.kind === b.kind)
+ 
+    if (indexAKind < indexBKind) { return -1 }
+    else if (indexAKind > indexBKind) { return 1 }
+    else { return a.name.localeCompare(b.name) }
+  })
+}
+ 
+exports.hasMultipleKinds = hasMultipleKinds
+exports.kinds = kinds
+exports.sortAll = sortAll
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/helpers/helpers.js.html b/qa/coverage/helpers/helpers.js.html new file mode 100644 index 0000000..0ce4754 --- /dev/null +++ b/qa/coverage/helpers/helpers.js.html @@ -0,0 +1,175 @@ + + + + + + Code coverage report for helpers/helpers.js + + + + + + + + + +
+
+

All files / helpers helpers.js

+
+ +
+ 0% + Statements + 0/14 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/4 +
+ + +
+ 0% + Lines + 0/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
const cwd = process.cwd()
+ 
+function extractSourceLink() {
+  const meta = this.meta
+  const filename = meta.filename
+  const path = meta.path
+  const lineno = meta.lineno
+  // assumes we've checked out to a folder matching myPackageName
+  // TODO: this logic is assuming *nix style path separators
+  const relPath = '.' + path.slice(cwd.length)
+ 
+  return relPath + '/' + filename + '#L' + lineno
+}
+ 
+function extractSummary(description) {
+  // No idea why, but the 'm' (multiline match) doesn't seem to be working...
+  return description.match(/([^.]+\.)(?:.|\n)*/m)[1] || description
+}
+ 
+function and() {
+  return Array.prototype.every.call(arguments, Boolean);
+}
+ 
+function or() {
+  return Array.prototype.slice.call(arguments, 0, -1).some(Boolean);
+}
+ 
+exports.extractSourceLink = extractSourceLink
+exports.extractSummary = extractSummary
+exports.and = and
+exports.or = or
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/helpers/index.html b/qa/coverage/helpers/index.html new file mode 100644 index 0000000..624007d --- /dev/null +++ b/qa/coverage/helpers/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for helpers + + + + + + + + + +
+
+

All files helpers

+
+ +
+ 0% + Statements + 0/33 +
+ + +
+ 0% + Branches + 0/6 +
+ + +
+ 0% + Functions + 0/11 +
+ + +
+ 0% + Lines + 0/27 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ddata.js +
+
0%0/190%0/40%0/70%0/13
helpers.js +
+
0%0/140%0/20%0/40%0/14
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/index.html b/qa/coverage/index.html new file mode 100644 index 0000000..3cf0699 --- /dev/null +++ b/qa/coverage/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 87.5% + Statements + 49/56 +
+ + +
+ 93.33% + Branches + 14/15 +
+ + +
+ 75% + Functions + 12/16 +
+ + +
+ 93.02% + Lines + 40/43 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
dmd-readme-api +
+
0%0/2100%0/0100%0/00%0/2
dmd-readme-api/helpers +
+
90.74%49/5493.33%14/1575%12/1697.56%40/41
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/qa/coverage/prettify.css b/qa/coverage/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/qa/coverage/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/qa/coverage/prettify.js b/qa/coverage/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/qa/coverage/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="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";var I=[h,"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"];var f=[h,"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"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/qa/coverage/sort-arrow-sprite.png b/qa/coverage/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/qa/coverage/sorter.js b/qa/coverage/sorter.js new file mode 100644 index 0000000..2bb296a --- /dev/null +++ b/qa/coverage/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/qa/lint.txt b/qa/lint.txt new file mode 100644 index 0000000..cf972d2 --- /dev/null +++ b/qa/lint.txt @@ -0,0 +1,2 @@ +-n Test git rev: +4c611c7bf8008162a0d723963478805750b1080e diff --git a/qa/unit-test.txt b/qa/unit-test.txt new file mode 100644 index 0000000..5fdaf52 --- /dev/null +++ b/qa/unit-test.txt @@ -0,0 +1,69 @@ +-n Test git rev: +14303926f26d07aa7527901eefe6af11d5dcf862 +PASS test/partial/template.test.js + ● Console + + console.log + + ## API Reference + _API generated with [dmd-readme-api](https://www.npmjs.com/package/dmd-readme-api)._ + + - Classes: + - [InvalidArgumentError](#InvalidArgumentError): A class! + - Typedefs: + - [InvalidArgumentOptions](#InvalidArgumentOptions): The arguments option for `InvalidArgumentError`. + + + ### InvalidArgumentError + + A class! + + [**Source code**](.b1c0000gp/T/zoa6cwksxi6tdg5yl4xuw.js#L52) + + + + #### new InvalidArgumentError(packageNameOrOptions, options) + + The `InvalidArgumentError` constructor. + + + | Param | Type | Description | + | --- | --- | --- | + | packageNameOrOptions | `string` \| [`InvalidArgumentOptions`](#InvalidArgumentOptions) \| `undefined` | The package name, a [`InvalidArgumentOptions`](#InvalidArgumentOptions) object, or undefined (which will omit the package name from the message unless specified in a final options argument). | + | options | [`InvalidArgumentOptions`](#InvalidArgumentOptions) \| `undefined` | The final options `Object`, if any, which is passed to the `Error` super-constructor and whose values can override the positional arguments. | + + + + ### InvalidArgumentOptions + + The arguments option for `InvalidArgumentError`. These options are also passed to the `Error` constructor, which may + recognize additional options. + + **Properties** + + | Name | Type | Description | + | --- | --- | --- | + | functionName | `string` | The name of the function to use in any generated message. | + + [**Source code**](.b1c0000gp/T/zoa6cwksxi6tdg5yl4xuw.js#L6) + + at log (test/partial/template.test.js:191:11) + +PASS test/helpers/helpers.test.js +PASS test/helpers/ddata.test.js +------------------------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +------------------------|---------|----------|---------|---------|------------------- +All files | 87.5 | 93.33 | 75 | 93.02 | + dmd-readme-api | 0 | 100 | 100 | 0 | + .eslintrc.js | 0 | 100 | 100 | 0 | 1-60 + dmd-readme-api/helpers | 90.74 | 93.33 | 75 | 97.56 | + ddata.js | 100 | 100 | 100 | 100 | + helpers.js | 86.11 | 90.9 | 55.55 | 96.55 | 5 +------------------------|---------|----------|---------|---------|------------------- + +Test Suites: 3 passed, 3 total +Tests: 39 passed, 39 total +Snapshots: 0 total +Time: 0.349 s, estimated 1 s +Ran all test suites. From 84bd77c892b288f54251ce7c1c53824dff9286ce Mon Sep 17 00:00:00 2001 From: Zane Rockenbaugh Date: Tue, 13 Aug 2024 15:42:38 -0500 Subject: [PATCH 3/3] removed QA files --- qa/coverage/base.css | 224 --------------- qa/coverage/block-navigation.js | 87 ------ qa/coverage/clover.xml | 64 ----- qa/coverage/coverage-final.json | 4 - qa/coverage/ddata.js.html | 187 ------------ qa/coverage/dmd-readme-api/.eslintrc.js.html | 265 ------------------ .../dmd-readme-api/helpers/ddata.js.html | 187 ------------ .../dmd-readme-api/helpers/helpers.js.html | 247 ---------------- qa/coverage/dmd-readme-api/helpers/index.html | 131 --------- qa/coverage/dmd-readme-api/index.html | 116 -------- qa/coverage/favicon.png | Bin 445 -> 0 bytes qa/coverage/helpers.js.html | 220 --------------- qa/coverage/helpers/ddata.js.html | 190 ------------- qa/coverage/helpers/helpers.js.html | 175 ------------ qa/coverage/helpers/index.html | 131 --------- qa/coverage/index.html | 131 --------- qa/coverage/prettify.css | 1 - qa/coverage/prettify.js | 2 - qa/coverage/sort-arrow-sprite.png | Bin 138 -> 0 bytes qa/coverage/sorter.js | 196 ------------- qa/lint.txt | 2 - qa/unit-test.txt | 69 ----- 22 files changed, 2629 deletions(-) delete mode 100644 qa/coverage/base.css delete mode 100644 qa/coverage/block-navigation.js delete mode 100644 qa/coverage/clover.xml delete mode 100644 qa/coverage/coverage-final.json delete mode 100644 qa/coverage/ddata.js.html delete mode 100644 qa/coverage/dmd-readme-api/.eslintrc.js.html delete mode 100644 qa/coverage/dmd-readme-api/helpers/ddata.js.html delete mode 100644 qa/coverage/dmd-readme-api/helpers/helpers.js.html delete mode 100644 qa/coverage/dmd-readme-api/helpers/index.html delete mode 100644 qa/coverage/dmd-readme-api/index.html delete mode 100644 qa/coverage/favicon.png delete mode 100644 qa/coverage/helpers.js.html delete mode 100644 qa/coverage/helpers/ddata.js.html delete mode 100644 qa/coverage/helpers/helpers.js.html delete mode 100644 qa/coverage/helpers/index.html delete mode 100644 qa/coverage/index.html delete mode 100644 qa/coverage/prettify.css delete mode 100644 qa/coverage/prettify.js delete mode 100644 qa/coverage/sort-arrow-sprite.png delete mode 100644 qa/coverage/sorter.js delete mode 100644 qa/lint.txt delete mode 100644 qa/unit-test.txt diff --git a/qa/coverage/base.css b/qa/coverage/base.css deleted file mode 100644 index f418035..0000000 --- a/qa/coverage/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/qa/coverage/block-navigation.js b/qa/coverage/block-navigation.js deleted file mode 100644 index cc12130..0000000 --- a/qa/coverage/block-navigation.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - if ( - document.getElementById('fileSearch') === document.activeElement && - document.activeElement != null - ) { - // if we're currently focused on the search input, we don't want to navigate - return; - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/qa/coverage/clover.xml b/qa/coverage/clover.xml deleted file mode 100644 index 1003f43..0000000 --- a/qa/coverage/clover.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qa/coverage/coverage-final.json b/qa/coverage/coverage-final.json deleted file mode 100644 index 4f693f6..0000000 --- a/qa/coverage/coverage-final.json +++ /dev/null @@ -1,4 +0,0 @@ -{"/Users/zane/playground/dmd-readme-api/.eslintrc.js": {"path":"/Users/zane/playground/dmd-readme-api/.eslintrc.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":47,"column":1}},"1":{"start":{"line":60,"column":0},"end":{"line":60,"column":29}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0},"f":{},"b":{}} -,"/Users/zane/playground/dmd-readme-api/helpers/ddata.js": {"path":"/Users/zane/playground/dmd-readme-api/helpers/ddata.js","statementMap":{"0":{"start":{"line":1,"column":22},"end":{"line":13,"column":1}},"1":{"start":{"line":15,"column":26},"end":{"line":15,"column":46}},"2":{"start":{"line":18,"column":2},"end":{"line":18,"column":99}},"3":{"start":{"line":18,"column":50},"end":{"line":18,"column":69}},"4":{"start":{"line":18,"column":70},"end":{"line":18,"column":80}},"5":{"start":{"line":22,"column":2},"end":{"line":29,"column":4}},"6":{"start":{"line":23,"column":23},"end":{"line":23,"column":72}},"7":{"start":{"line":23,"column":54},"end":{"line":23,"column":71}},"8":{"start":{"line":24,"column":23},"end":{"line":24,"column":72}},"9":{"start":{"line":24,"column":54},"end":{"line":24,"column":71}},"10":{"start":{"line":26,"column":4},"end":{"line":28,"column":48}},"11":{"start":{"line":26,"column":35},"end":{"line":26,"column":44}},"12":{"start":{"line":27,"column":9},"end":{"line":28,"column":48}},"13":{"start":{"line":27,"column":40},"end":{"line":27,"column":48}},"14":{"start":{"line":28,"column":11},"end":{"line":28,"column":46}},"15":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"16":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}},"17":{"start":{"line":34,"column":0},"end":{"line":34,"column":25}}},"fnMap":{"0":{"name":"handledKinds","decl":{"start":{"line":15,"column":9},"end":{"line":15,"column":21}},"loc":{"start":{"line":15,"column":24},"end":{"line":15,"column":48}},"line":15},"1":{"name":"hasMultipleKinds","decl":{"start":{"line":17,"column":9},"end":{"line":17,"column":25}},"loc":{"start":{"line":17,"column":35},"end":{"line":19,"column":1}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":36},"end":{"line":18,"column":37}},"loc":{"start":{"line":18,"column":48},"end":{"line":18,"column":82}},"line":18},"3":{"name":"sortAll","decl":{"start":{"line":21,"column":9},"end":{"line":21,"column":16}},"loc":{"start":{"line":21,"column":26},"end":{"line":30,"column":1}},"line":21},"4":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":25},"end":{"line":22,"column":26}},"loc":{"start":{"line":22,"column":35},"end":{"line":29,"column":3}},"line":22},"5":{"name":"(anonymous_5)","decl":{"start":{"line":23,"column":47},"end":{"line":23,"column":48}},"loc":{"start":{"line":23,"column":54},"end":{"line":23,"column":71}},"line":23},"6":{"name":"(anonymous_6)","decl":{"start":{"line":24,"column":47},"end":{"line":24,"column":48}},"loc":{"start":{"line":24,"column":54},"end":{"line":24,"column":71}},"line":24}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":48}},"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":28,"column":48}},{"start":{"line":27,"column":9},"end":{"line":28,"column":48}}],"line":26},"1":{"loc":{"start":{"line":27,"column":9},"end":{"line":28,"column":48}},"type":"if","locations":[{"start":{"line":27,"column":9},"end":{"line":28,"column":48}},{"start":{"line":28,"column":9},"end":{"line":28,"column":48}}],"line":27}},"s":{"0":2,"1":4,"2":13,"3":27,"4":27,"5":7,"6":9,"7":45,"8":9,"9":41,"10":9,"11":1,"12":8,"13":4,"14":4,"15":2,"16":2,"17":2},"f":{"0":4,"1":13,"2":27,"3":7,"4":9,"5":45,"6":41},"b":{"0":[1,8],"1":[4,4]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f2339f4eb613591b882520eab030c2abd9e3fe54"} -,"/Users/zane/playground/dmd-readme-api/helpers/helpers.js": {"path":"/Users/zane/playground/dmd-readme-api/helpers/helpers.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":25}},"1":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"2":{"start":{"line":5,"column":4},"end":{"line":5,"column":13}},"3":{"start":{"line":8,"column":15},"end":{"line":8,"column":24}},"4":{"start":{"line":9,"column":19},"end":{"line":9,"column":32}},"5":{"start":{"line":10,"column":15},"end":{"line":10,"column":24}},"6":{"start":{"line":11,"column":17},"end":{"line":11,"column":28}},"7":{"start":{"line":14,"column":18},"end":{"line":14,"column":46}},"8":{"start":{"line":16,"column":2},"end":{"line":16,"column":49}},"9":{"start":{"line":21,"column":16},"end":{"line":21,"column":61}},"10":{"start":{"line":22,"column":2},"end":{"line":22,"column":43}},"11":{"start":{"line":26,"column":20},"end":{"line":26,"column":42}},"12":{"start":{"line":27,"column":2},"end":{"line":27,"column":43}},"13":{"start":{"line":27,"column":29},"end":{"line":27,"column":41}},"14":{"start":{"line":29,"column":2},"end":{"line":29,"column":33}},"15":{"start":{"line":33,"column":20},"end":{"line":33,"column":42}},"16":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"17":{"start":{"line":34,"column":29},"end":{"line":34,"column":41}},"18":{"start":{"line":36,"column":2},"end":{"line":36,"column":32}},"19":{"start":{"line":40,"column":20},"end":{"line":45,"column":1}},"20":{"start":{"line":42,"column":20},"end":{"line":42,"column":47}},"21":{"start":{"line":43,"column":2},"end":{"line":43,"column":46}},"22":{"start":{"line":43,"column":32},"end":{"line":43,"column":44}},"23":{"start":{"line":44,"column":2},"end":{"line":44,"column":18}},"24":{"start":{"line":47,"column":0},"end":{"line":47,"column":45}},"25":{"start":{"line":48,"column":0},"end":{"line":48,"column":39}},"26":{"start":{"line":49,"column":0},"end":{"line":49,"column":17}},"27":{"start":{"line":50,"column":0},"end":{"line":50,"column":15}},"28":{"start":{"line":51,"column":0},"end":{"line":51,"column":28}},"29":{"start":{"line":51,"column":23},"end":{"line":51,"column":28}},"30":{"start":{"line":52,"column":0},"end":{"line":52,"column":30}},"31":{"start":{"line":52,"column":24},"end":{"line":52,"column":30}},"32":{"start":{"line":53,"column":0},"end":{"line":53,"column":28}},"33":{"start":{"line":53,"column":23},"end":{"line":53,"column":28}},"34":{"start":{"line":54,"column":0},"end":{"line":54,"column":30}},"35":{"start":{"line":54,"column":24},"end":{"line":54,"column":30}}},"fnMap":{"0":{"name":"extractSourceLink","decl":{"start":{"line":3,"column":9},"end":{"line":3,"column":26}},"loc":{"start":{"line":3,"column":29},"end":{"line":17,"column":1}},"line":3},"1":{"name":"extractSummary","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":23}},"loc":{"start":{"line":19,"column":37},"end":{"line":23,"column":1}},"line":19},"2":{"name":"and","decl":{"start":{"line":25,"column":9},"end":{"line":25,"column":12}},"loc":{"start":{"line":25,"column":15},"end":{"line":30,"column":1}},"line":25},"3":{"name":"or","decl":{"start":{"line":32,"column":9},"end":{"line":32,"column":11}},"loc":{"start":{"line":32,"column":14},"end":{"line":37,"column":1}},"line":32},"4":{"name":"(anonymous_4)","decl":{"start":{"line":40,"column":20},"end":{"line":40,"column":21}},"loc":{"start":{"line":40,"column":35},"end":{"line":45,"column":1}},"line":40},"5":{"name":"(anonymous_5)","decl":{"start":{"line":51,"column":13},"end":{"line":51,"column":14}},"loc":{"start":{"line":51,"column":23},"end":{"line":51,"column":28}},"line":51},"6":{"name":"(anonymous_6)","decl":{"start":{"line":52,"column":14},"end":{"line":52,"column":15}},"loc":{"start":{"line":52,"column":24},"end":{"line":52,"column":30}},"line":52},"7":{"name":"(anonymous_7)","decl":{"start":{"line":53,"column":13},"end":{"line":53,"column":14}},"loc":{"start":{"line":53,"column":23},"end":{"line":53,"column":28}},"line":53},"8":{"name":"(anonymous_8)","decl":{"start":{"line":54,"column":14},"end":{"line":54,"column":15}},"loc":{"start":{"line":54,"column":24},"end":{"line":54,"column":30}},"line":54}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"type":"if","locations":[{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},{"start":{},"end":{}}],"line":4},"1":{"loc":{"start":{"line":22,"column":9},"end":{"line":22,"column":43}},"type":"binary-expr","locations":[{"start":{"line":22,"column":10},"end":{"line":22,"column":15}},{"start":{"line":22,"column":19},"end":{"line":22,"column":27}},{"start":{"line":22,"column":32},"end":{"line":22,"column":43}}],"line":22},"2":{"loc":{"start":{"line":27,"column":2},"end":{"line":27,"column":43}},"type":"if","locations":[{"start":{"line":27,"column":2},"end":{"line":27,"column":43}},{"start":{},"end":{}}],"line":27},"3":{"loc":{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},"type":"if","locations":[{"start":{"line":34,"column":2},"end":{"line":34,"column":43}},{"start":{},"end":{}}],"line":34},"4":{"loc":{"start":{"line":43,"column":2},"end":{"line":43,"column":46}},"type":"if","locations":[{"start":{"line":43,"column":2},"end":{"line":43,"column":46}},{"start":{},"end":{}}],"line":43}},"s":{"0":2,"1":8,"2":0,"3":8,"4":8,"5":8,"6":8,"7":8,"8":8,"9":12,"10":12,"11":17,"12":17,"13":1,"14":16,"15":17,"16":17,"17":1,"18":16,"19":2,"20":34,"21":34,"22":2,"23":32,"24":2,"25":2,"26":2,"27":2,"28":2,"29":0,"30":2,"31":0,"32":2,"33":0,"34":2,"35":0},"f":{"0":8,"1":12,"2":17,"3":17,"4":34,"5":0,"6":0,"7":0,"8":0},"b":{"0":[0,8],"1":[12,7,5],"2":[1,16],"3":[1,16],"4":[2,32]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d024a9f0b3d3f7cc91e746883d4545bb4b615bc5"} -} diff --git a/qa/coverage/ddata.js.html b/qa/coverage/ddata.js.html deleted file mode 100644 index fd48b42..0000000 --- a/qa/coverage/ddata.js.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - Code coverage report for ddata.js - - - - - - - - - -
-
-

All files ddata.js

-
- -
- 100% - Statements - 18/18 -
- - -
- 100% - Branches - 4/4 -
- - -
- 100% - Functions - 7/7 -
- - -
- 100% - Lines - 12/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
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 -352x -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -19x -  -  -  -6x -35x -29x -  -7x -6x -4x -  -  -  -2x -2x -2x - 
const _handledKinds = [
-  { kind: 'class', title: 'Classes' },
-  { kind: 'mixin', title: 'Mixins' },
-  { kind: 'member', title: 'Members' },
-  { kind: 'namespace', title: 'Namespaces' },
-  { kind: 'constant', title: 'Constants' },
-  { kind: 'component', title: 'Components' },
-  { kind: 'function', title: 'Functions' },
-  { kind: 'event', title: 'Events' },
-  { kind: 'typedef', title: 'Typedefs' },
-  { kind: 'external', title: 'Externals' },
-  { kind: 'interface', interface: 'Interfaces' }
-]
- 
-function handledKinds() { return _handledKinds }
- 
-function hasMultipleKinds(globals) {
-  return Object.keys(globals.reduce((acc, g) => { acc[g.kind] = true; return acc }, {})).length > 1
-}
- 
-function sortAll(options) {
-  options.data.root.sort((a, b) => {
-    const indexAKind = _handledKinds.findIndex((k) => k.kind === a.kind)
-    const indexBKind = _handledKinds.findIndex((k) => k.kind === b.kind)
- 
-    if (indexAKind < indexBKind) { return -1 }
-    else if (indexAKind > indexBKind) { return 1 }
-    else { return a.name.localeCompare(b.name) }
-  })
-}
- 
-exports.handledKinds = handledKinds
-exports.hasMultipleKinds = hasMultipleKinds
-exports.sortAll = sortAll
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/.eslintrc.js.html b/qa/coverage/dmd-readme-api/.eslintrc.js.html deleted file mode 100644 index e75c059..0000000 --- a/qa/coverage/dmd-readme-api/.eslintrc.js.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - Code coverage report for dmd-readme-api/.eslintrc.js - - - - - - - - - -
-
-

All files / dmd-readme-api .eslintrc.js

-
- -
- 0% - Statements - 0/2 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 0% - Lines - 0/2 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
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 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
const eslintConfig = {
-  extends : [
-    'standard',
-    'eslint:recommended'
-  ],
-  env : {
-    es6 : true
-  },
-  plugins : [],
-  rules   : {
-    'brace-style'       : [2, 'stroustrup', { allowSingleLine : true }],
-    curly               : [2, 'multi-line'],
-    'import/export'     : 1,
-    'import/extensions' : ['error', 'never', { json : ['error', 'always'] }],
-    indent              : [2, 2, {
-      FunctionDeclaration : { body : 1, parameters : 2 },
-      ignoredNodes        : ['JSXElement', 'JSXElement > *', 'JSXAttribute', 'JSXIdentifier', 'JSXNamespacedName', 'JSXMemberExpression', 'JSXSpreadAttribute', 'JSXExpressionContainer', 'JSXOpeningElement', 'JSXClosingElement', 'JSXText', 'JSXEmptyExpression', 'JSXSpreadChild']
-    }],
-    'key-spacing' : [2, {
-      singleLine : {
-        beforeColon : true,
-        afterColon  : true,
-        mode        : 'strict'
-      },
-      multiLine : {
-        beforeColon : true,
-        afterColon  : true,
-        align       : 'colon'
-      }
-    }],
-    'operator-linebreak'          : [2, 'before', { overrides : { '=' : 'after' } }],
-    'prefer-const'                : 2,
-    'prefer-spread'               : 2,
-    'space-before-function-paren' : [2, 'never'],
- 
-    'array-callback-return'   : 2,
-    'guard-for-in'            : 2,
-    'no-caller'               : 2,
-    'no-extra-bind'           : 2,
-    'no-multi-spaces'         : 2,
-    'no-new-wrappers'         : 2,
-    'no-throw-literal'        : 2,
-    'no-unexpected-multiline' : 2,
-    'no-with'                 : 2,
-    yoda                      : 2
-  }
-}
- 
-/*
-if (pkglib.target.isReactish) {
-  eslintConfig.extends.push('standard-react')
-  eslintConfig.plugins.push('react')
-  Object.assign(eslintConfig.rules, {
-    'react/jsx-boolean-value' : [2, 'never'],
-    'react/jsx-indent-props'  : [2, 4]
-  })
-}
-*/
- 
-module.exports = eslintConfig
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/helpers/ddata.js.html b/qa/coverage/dmd-readme-api/helpers/ddata.js.html deleted file mode 100644 index 32bf56b..0000000 --- a/qa/coverage/dmd-readme-api/helpers/ddata.js.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - Code coverage report for dmd-readme-api/helpers/ddata.js - - - - - - - - - -
-
-

All files / dmd-readme-api/helpers ddata.js

-
- -
- 100% - Statements - 18/18 -
- - -
- 100% - Branches - 4/4 -
- - -
- 100% - Functions - 7/7 -
- - -
- 100% - Lines - 12/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
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 -352x -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -27x -  -  -  -7x -45x -41x -  -9x -8x -4x -  -  -  -2x -2x -2x - 
const _handledKinds = [
-  { kind : 'class', title : 'Classes' },
-  { kind : 'mixin', title : 'Mixins' },
-  { kind : 'member', title : 'Members' },
-  { kind : 'namespace', title : 'Namespaces' },
-  { kind : 'constant', title : 'Constants' },
-  { kind : 'component', title : 'Components' },
-  { kind : 'function', title : 'Functions' },
-  { kind : 'event', title : 'Events' },
-  { kind : 'typedef', title : 'Typedefs' },
-  { kind : 'external', title : 'Externals' },
-  { kind : 'interface', interface : 'Interfaces' }
-]
- 
-function handledKinds() { return _handledKinds }
- 
-function hasMultipleKinds(globals) {
-  return Object.keys(globals.reduce((acc, g) => { acc[g.kind] = true; return acc }, {})).length > 1
-}
- 
-function sortAll(options) {
-  options.data.root.sort((a, b) => {
-    const indexAKind = _handledKinds.findIndex((k) => k.kind === a.kind)
-    const indexBKind = _handledKinds.findIndex((k) => k.kind === b.kind)
- 
-    if (indexAKind < indexBKind) { return -1 }
-    else if (indexAKind > indexBKind) { return 1 }
-    else { return a.name.localeCompare(b.name) }
-  })
-}
- 
-exports.handledKinds = handledKinds
-exports.hasMultipleKinds = hasMultipleKinds
-exports.sortAll = sortAll
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/helpers/helpers.js.html b/qa/coverage/dmd-readme-api/helpers/helpers.js.html deleted file mode 100644 index 9536cb6..0000000 --- a/qa/coverage/dmd-readme-api/helpers/helpers.js.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - Code coverage report for dmd-readme-api/helpers/helpers.js - - - - - - - - - -
-
-

All files / dmd-readme-api/helpers helpers.js

-
- -
- 86.11% - Statements - 31/36 -
- - -
- 90.9% - Branches - 10/11 -
- - -
- 55.55% - Functions - 5/9 -
- - -
- 96.55% - Lines - 28/29 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
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 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -552x -  -  -8x -  -  -  -8x -8x -8x -8x -  -  -8x -  -8x -  -  -  -  -12x -12x -  -  -  -17x -17x -  -16x -  -  -  -17x -17x -  -16x -  -  -  -2x -  -34x -34x -32x -  -  -2x -2x -2x -2x -2x -2x -2x -2x - 
const cwd = process.cwd()
- 
-function extractSourceLink() {
-  Iif (this.meta === undefined) {
-    return ''
-  }
- 
-  const meta = this.meta
-  const filename = meta.filename
-  const path = meta.path
-  const lineno = meta.lineno
-  // assumes we've checked out to a folder matching myPackageName
-  // TODO: this logic is assuming *nix style path separators
-  const relPath = '.' + path.slice(cwd.length)
- 
-  return relPath + '/' + filename + '#L' + lineno
-}
- 
-function extractSummary(description) {
-  // No idea why, but the 'm' (multiline match) doesn't seem to be working...
-  const match = description.match(/([^.!?]+[.?!])(?:.|\n)*/m)
-  return (match && match[1]) || description
-}
- 
-function and() {
-  const testInput = logicHelper(arguments)
-  if (testInput === false) { return false }
-  // else
-  return testInput.every(Boolean)
-}
- 
-function or() {
-  const testInput = logicHelper(arguments)
-  if (testInput === false) { return false }
-  // else
-  return testInput.some(Boolean)
-}
- 
-// Helper fenctions
-const logicHelper = (argsArray) => {
-  // we cut out the last arg because it's the implicit 'options' arg, which isn't really part of the input
-  const testInput = [...argsArray].slice(0, -1)
-  if (testInput.length === 0) { return false }
-  return testInput
-}
- 
-exports.extractSourceLink = extractSourceLink
-exports.extractSummary = extractSummary
-exports.and = and
-exports.or = or
-exports.gt = (a, b) => a > b
-exports.gte = (a, b) => a >= b
-exports.lt = (a, b) => a < b
-exports.lte = (a, b) => a <= b
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/helpers/index.html b/qa/coverage/dmd-readme-api/helpers/index.html deleted file mode 100644 index 4e8dbdf..0000000 --- a/qa/coverage/dmd-readme-api/helpers/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for dmd-readme-api/helpers - - - - - - - - - -
-
-

All files dmd-readme-api/helpers

-
- -
- 90.74% - Statements - 49/54 -
- - -
- 93.33% - Branches - 14/15 -
- - -
- 75% - Functions - 12/16 -
- - -
- 97.56% - Lines - 40/41 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
ddata.js -
-
100%18/18100%4/4100%7/7100%12/12
helpers.js -
-
86.11%31/3690.9%10/1155.55%5/996.55%28/29
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/dmd-readme-api/index.html b/qa/coverage/dmd-readme-api/index.html deleted file mode 100644 index e89e5a6..0000000 --- a/qa/coverage/dmd-readme-api/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for dmd-readme-api - - - - - - - - - -
-
-

All files dmd-readme-api

-
- -
- 0% - Statements - 0/2 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 0% - Lines - 0/2 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
.eslintrc.js -
-
0%0/2100%0/0100%0/00%0/2
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/favicon.png b/qa/coverage/favicon.png deleted file mode 100644 index c1525b811a167671e9de1fa78aab9f5c0b61cef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> - - - - Code coverage report for helpers.js - - - - - - - - - -
-
-

All files helpers.js

-
- -
- 100% - Statements - 26/26 -
- - -
- 100% - Branches - 9/9 -
- - -
- 100% - Functions - 5/5 -
- - -
- 100% - Lines - 23/23 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
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 -42 -43 -44 -45 -462x -  -  -6x -6x -6x -6x -  -  -6x -  -6x -  -  -  -  -10x -10x -  -  -  -14x -14x -  -13x -  -  -  -14x -14x -  -13x -  -  -  -2x -  -28x -28x -26x -  -  -2x -2x -2x -2x
const cwd = process.cwd()
- 
-function extractSourceLink() {
-  const meta = this.meta
-  const filename = meta.filename
-  const path = meta.path
-  const lineno = meta.lineno
-  // assumes we've checked out to a folder matching myPackageName
-  // TODO: this logic is assuming *nix style path separators
-  const relPath = '.' + path.slice(cwd.length)
- 
-  return relPath + '/' + filename + '#L' + lineno
-}
- 
-function extractSummary(description) {
-  // No idea why, but the 'm' (multiline match) doesn't seem to be working...
-  const match = description.match(/([^.!?]+[.?!])(?:.|\n)*/m)
-  return (match && match[1]) || description
-}
- 
-function and() {
-  const testInput = logicHelper(arguments)
-  if (testInput === false) { return false }
-  // else
-  return testInput.every(Boolean);
-}
- 
-function or() {
-  const testInput = logicHelper(arguments)
-  if (testInput === false) { return false }
-  // else
-  return testInput.some(Boolean);
-}
- 
-// Helper fenctions
-const logicHelper = (argsArray) => {
-  // we cut out the last arg because it's the implicit 'options' arg, which isn't really part of the input
-  const testInput = [...argsArray].slice(0, -1)
-  if (testInput.length === 0) { return false }
-  return testInput
-}
- 
-exports.extractSourceLink = extractSourceLink
-exports.extractSummary = extractSummary
-exports.and = and
-exports.or = or
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/helpers/ddata.js.html b/qa/coverage/helpers/ddata.js.html deleted file mode 100644 index 36773d4..0000000 --- a/qa/coverage/helpers/ddata.js.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - Code coverage report for helpers/ddata.js - - - - - - - - - -
-
-

All files / helpers ddata.js

-
- -
- 0% - Statements - 0/19 -
- - -
- 0% - Branches - 0/4 -
- - -
- 0% - Functions - 0/7 -
- - -
- 0% - Lines - 0/13 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
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  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var handlebars = require('handlebars')
- 
-function hasMultipleKinds(globals) {
-  return Object.keys(globals.reduce((acc, g) => { acc[g.kind] = true; return acc }, {})).length > 1
-}
- 
-const _kinds = [
-  { kind: 'class', title: 'Classes' },
-  { kind: 'mixin', title: 'Mixins' },
-  { kind: 'member', title: 'Members' },
-  { kind: 'namespace', title: 'Namespaces' },
-  { kind: 'constant', title: 'Constants' },
-  { kind: 'component', title: 'Components' },
-  { kind: 'function', title: 'Functions' },
-  { kind: 'event', title: 'Events' },
-  { kind: 'typedef', title: 'Typedefs' },
-  { kind: 'external', title: 'Externals' },
-  { kind: 'interface', interface: 'Interfaces' }
-]
- 
-function kinds() { return _kinds }
- 
-function sortAll(options) {
-  options.data.root.sort((a, b) => {
-    const indexAKind = _kinds.findIndex((k) => k.kind === a.kind)
-    const indexBKind = _kinds.findIndex((k) => k.kind === b.kind)
- 
-    if (indexAKind < indexBKind) { return -1 }
-    else if (indexAKind > indexBKind) { return 1 }
-    else { return a.name.localeCompare(b.name) }
-  })
-}
- 
-exports.hasMultipleKinds = hasMultipleKinds
-exports.kinds = kinds
-exports.sortAll = sortAll
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/helpers/helpers.js.html b/qa/coverage/helpers/helpers.js.html deleted file mode 100644 index 0ce4754..0000000 --- a/qa/coverage/helpers/helpers.js.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - Code coverage report for helpers/helpers.js - - - - - - - - - -
-
-

All files / helpers helpers.js

-
- -
- 0% - Statements - 0/14 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/4 -
- - -
- 0% - Lines - 0/14 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
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  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
const cwd = process.cwd()
- 
-function extractSourceLink() {
-  const meta = this.meta
-  const filename = meta.filename
-  const path = meta.path
-  const lineno = meta.lineno
-  // assumes we've checked out to a folder matching myPackageName
-  // TODO: this logic is assuming *nix style path separators
-  const relPath = '.' + path.slice(cwd.length)
- 
-  return relPath + '/' + filename + '#L' + lineno
-}
- 
-function extractSummary(description) {
-  // No idea why, but the 'm' (multiline match) doesn't seem to be working...
-  return description.match(/([^.]+\.)(?:.|\n)*/m)[1] || description
-}
- 
-function and() {
-  return Array.prototype.every.call(arguments, Boolean);
-}
- 
-function or() {
-  return Array.prototype.slice.call(arguments, 0, -1).some(Boolean);
-}
- 
-exports.extractSourceLink = extractSourceLink
-exports.extractSummary = extractSummary
-exports.and = and
-exports.or = or
- -
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/helpers/index.html b/qa/coverage/helpers/index.html deleted file mode 100644 index 624007d..0000000 --- a/qa/coverage/helpers/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for helpers - - - - - - - - - -
-
-

All files helpers

-
- -
- 0% - Statements - 0/33 -
- - -
- 0% - Branches - 0/6 -
- - -
- 0% - Functions - 0/11 -
- - -
- 0% - Lines - 0/27 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
ddata.js -
-
0%0/190%0/40%0/70%0/13
helpers.js -
-
0%0/140%0/20%0/40%0/14
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/index.html b/qa/coverage/index.html deleted file mode 100644 index 3cf0699..0000000 --- a/qa/coverage/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 87.5% - Statements - 49/56 -
- - -
- 93.33% - Branches - 14/15 -
- - -
- 75% - Functions - 12/16 -
- - -
- 93.02% - Lines - 40/43 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
dmd-readme-api -
-
0%0/2100%0/0100%0/00%0/2
dmd-readme-api/helpers -
-
90.74%49/5493.33%14/1575%12/1697.56%40/41
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/qa/coverage/prettify.css b/qa/coverage/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/qa/coverage/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/qa/coverage/prettify.js b/qa/coverage/prettify.js deleted file mode 100644 index b322523..0000000 --- a/qa/coverage/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="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";var I=[h,"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"];var f=[h,"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"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/qa/coverage/sort-arrow-sprite.png b/qa/coverage/sort-arrow-sprite.png deleted file mode 100644 index 6ed68316eb3f65dec9063332d2f69bf3093bbfab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc diff --git a/qa/coverage/sorter.js b/qa/coverage/sorter.js deleted file mode 100644 index 2bb296a..0000000 --- a/qa/coverage/sorter.js +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable */ -var addSorting = (function() { - 'use strict'; - var cols, - currentSort = { - index: 0, - desc: false - }; - - // returns the summary table element - function getTable() { - return document.querySelector('.coverage-summary'); - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector('thead tr'); - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector('tbody'); - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll('th')[n]; - } - - function onFilterInput() { - const searchValue = document.getElementById('fileSearch').value; - const rows = document.getElementsByTagName('tbody')[0].children; - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - if ( - row.textContent - .toLowerCase() - .includes(searchValue.toLowerCase()) - ) { - row.style.display = ''; - } else { - row.style.display = 'none'; - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById('filterTemplate'); - var templateClone = template.content.cloneNode(true); - templateClone.getElementById('fileSearch').oninput = onFilterInput; - template.parentElement.appendChild(templateClone); - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll('th'), - colNode, - cols = [], - col, - i; - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i]; - col = { - key: colNode.getAttribute('data-col'), - sortable: !colNode.getAttribute('data-nosort'), - type: colNode.getAttribute('data-type') || 'string' - }; - cols.push(col); - if (col.sortable) { - col.defaultDescSort = col.type === 'number'; - colNode.innerHTML = - colNode.innerHTML + ''; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSearchBox(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/qa/lint.txt b/qa/lint.txt deleted file mode 100644 index cf972d2..0000000 --- a/qa/lint.txt +++ /dev/null @@ -1,2 +0,0 @@ --n Test git rev: -4c611c7bf8008162a0d723963478805750b1080e diff --git a/qa/unit-test.txt b/qa/unit-test.txt deleted file mode 100644 index 5fdaf52..0000000 --- a/qa/unit-test.txt +++ /dev/null @@ -1,69 +0,0 @@ --n Test git rev: -14303926f26d07aa7527901eefe6af11d5dcf862 -PASS test/partial/template.test.js - ● Console - - console.log - - ## API Reference - _API generated with [dmd-readme-api](https://www.npmjs.com/package/dmd-readme-api)._ - - - Classes: - - [InvalidArgumentError](#InvalidArgumentError): A class! - - Typedefs: - - [InvalidArgumentOptions](#InvalidArgumentOptions): The arguments option for `InvalidArgumentError`. - - - ### InvalidArgumentError - - A class! - - [**Source code**](.b1c0000gp/T/zoa6cwksxi6tdg5yl4xuw.js#L52) - - - - #### new InvalidArgumentError(packageNameOrOptions, options) - - The `InvalidArgumentError` constructor. - - - | Param | Type | Description | - | --- | --- | --- | - | packageNameOrOptions | `string` \| [`InvalidArgumentOptions`](#InvalidArgumentOptions) \| `undefined` | The package name, a [`InvalidArgumentOptions`](#InvalidArgumentOptions) object, or undefined (which will omit the package name from the message unless specified in a final options argument). | - | options | [`InvalidArgumentOptions`](#InvalidArgumentOptions) \| `undefined` | The final options `Object`, if any, which is passed to the `Error` super-constructor and whose values can override the positional arguments. | - - - - ### InvalidArgumentOptions - - The arguments option for `InvalidArgumentError`. These options are also passed to the `Error` constructor, which may - recognize additional options. - - **Properties** - - | Name | Type | Description | - | --- | --- | --- | - | functionName | `string` | The name of the function to use in any generated message. | - - [**Source code**](.b1c0000gp/T/zoa6cwksxi6tdg5yl4xuw.js#L6) - - at log (test/partial/template.test.js:191:11) - -PASS test/helpers/helpers.test.js -PASS test/helpers/ddata.test.js -------------------------|---------|----------|---------|---------|------------------- -File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -------------------------|---------|----------|---------|---------|------------------- -All files | 87.5 | 93.33 | 75 | 93.02 | - dmd-readme-api | 0 | 100 | 100 | 0 | - .eslintrc.js | 0 | 100 | 100 | 0 | 1-60 - dmd-readme-api/helpers | 90.74 | 93.33 | 75 | 97.56 | - ddata.js | 100 | 100 | 100 | 100 | - helpers.js | 86.11 | 90.9 | 55.55 | 96.55 | 5 -------------------------|---------|----------|---------|---------|------------------- - -Test Suites: 3 passed, 3 total -Tests: 39 passed, 39 total -Snapshots: 0 total -Time: 0.349 s, estimated 1 s -Ran all test suites.