diff --git a/.docco.json b/.docco.json new file mode 100755 index 00000000..45e40fdb --- /dev/null +++ b/.docco.json @@ -0,0 +1,7 @@ +{ + "sources": [ + "docco.litcoffee", + "README.md", + "src/**/*.litcoffee" + ] +} diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index a3ac9700..ee006570 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,10 @@ output docs test/data node_modules +doc +#**/*.js +#**/*.map +artifacts +.nyc_output +!/test/sim/src/fake_litcoffee.js +npm-debug.log diff --git a/.idea/docco.iml b/.idea/docco.iml new file mode 100755 index 00000000..24643cc3 --- /dev/null +++ b/.idea/docco.iml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="WEB_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$"> + <excludeFolder url="file://$MODULE_DIR$/.tmp" /> + <excludeFolder url="file://$MODULE_DIR$/temp" /> + <excludeFolder url="file://$MODULE_DIR$/tmp" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/.idea/libraries/Generated_files.xml b/.idea/libraries/Generated_files.xml new file mode 100755 index 00000000..ae8e2a73 --- /dev/null +++ b/.idea/libraries/Generated_files.xml @@ -0,0 +1,101 @@ +<component name="libraryTable"> + <library name="Generated files" type="javaScript"> + <properties> + <sourceFilesUrls> + <item url="file://$PROJECT_DIR$/src/getLanguage.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.js" /> + <item url="file://$PROJECT_DIR$/src/getSourceInformation.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getCSSPath.js" /> + <item url="file://$PROJECT_DIR$/src/format.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.js" /> + <item url="file://$PROJECT_DIR$/src/getInformationOnFiles.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-parse.js" /> + <item url="file://$PROJECT_DIR$/src/buildMatchers.js" /> + <item url="file://$PROJECT_DIR$/src/getRelativePath.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-run.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getDestinationInformation.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getLanguage.js" /> + <item url="file://$PROJECT_DIR$/src/getCSSPath.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-write.js" /> + <item url="file://$PROJECT_DIR$/src/getOthers.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-document.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-configure.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getRelativePath.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-format.js" /> + <item url="file://$PROJECT_DIR$/src/configure.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-config.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-flattened-result.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/unit-test-fixForMatch.js" /> + <item url="file://$PROJECT_DIR$/docco.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-jst-result.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-jst.js" /> + <item url="file://$PROJECT_DIR$/src/write.js" /> + <item url="file://$PROJECT_DIR$/src/parse.js" /> + <item url="file://$PROJECT_DIR$/src/document.js" /> + <item url="file://$PROJECT_DIR$/src/getDestinationInformation.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/utils/fixForMatch.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/utils/typeIsObject.js" /> + <item url="file://$PROJECT_DIR$/test/unit-tests/utils/typeIsArray.js" /> + </sourceFilesUrls> + </properties> + <CLASSES> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getCSS.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getCSS.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-result.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-result.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-a-write.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-a-write.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattenedRelative.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattenedRelative.js" /> + <root url="file://$PROJECT_DIR$/docco_original.js" /> + <root url="file://$PROJECT_DIR$/docco_original.js" /> + <root url="file://$PROJECT_DIR$/src/getLanguage.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.js" /> + <root url="file://$PROJECT_DIR$/src/getSourceInformation.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getCSSPath.js" /> + <root url="file://$PROJECT_DIR$/src/format.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.js" /> + <root url="file://$PROJECT_DIR$/src/getInformationOnFiles.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-parse.js" /> + <root url="file://$PROJECT_DIR$/src/buildMatchers.js" /> + <root url="file://$PROJECT_DIR$/src/getRelativePath.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-run.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getDestinationInformation.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getLanguage.js" /> + <root url="file://$PROJECT_DIR$/src/getCSSPath.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-write.js" /> + <root url="file://$PROJECT_DIR$/src/getOthers.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-document.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-configure.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-getRelativePath.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-format.js" /> + <root url="file://$PROJECT_DIR$/src/configure.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-config.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-flattened-result.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/unit-test-fixForMatch.js" /> + <root url="file://$PROJECT_DIR$/docco.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-jst-result.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-jst.js" /> + <root url="file://$PROJECT_DIR$/src/write.js" /> + <root url="file://$PROJECT_DIR$/src/parse.js" /> + <root url="file://$PROJECT_DIR$/src/document.js" /> + <root url="file://$PROJECT_DIR$/src/getDestinationInformation.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/utils/fixForMatch.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/utils/typeIsObject.js" /> + <root url="file://$PROJECT_DIR$/test/unit-tests/utils/typeIsArray.js" /> + </CLASSES> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml new file mode 100755 index 00000000..4fdc309a --- /dev/null +++ b/.idea/markdown-navigator.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="MarkdownProjectSettings"> + <PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true"> + <PanelProvider> + <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" /> + </PanelProvider> + </PreviewSettings> + <ParserSettings> + <PegdownExtensions> + <option name="ABBREVIATIONS" value="false" /> + <option name="ANCHORLINKS" value="true" /> + <option name="ASIDE" value="false" /> + <option name="ATXHEADERSPACE" value="true" /> + <option name="AUTOLINKS" value="true" /> + <option name="DEFINITIONS" value="false" /> + <option name="FENCED_CODE_BLOCKS" value="true" /> + <option name="FOOTNOTES" value="false" /> + <option name="HARDWRAPS" value="false" /> + <option name="INSERTED" value="false" /> + <option name="QUOTES" value="false" /> + <option name="RELAXEDHRULES" value="true" /> + <option name="SMARTS" value="false" /> + <option name="STRIKETHROUGH" value="true" /> + <option name="SUBSCRIPT" value="false" /> + <option name="SUPERSCRIPT" value="false" /> + <option name="SUPPRESS_HTML_BLOCKS" value="false" /> + <option name="SUPPRESS_INLINE_HTML" value="false" /> + <option name="TABLES" value="true" /> + <option name="TASKLISTITEMS" value="true" /> + <option name="TOC" value="false" /> + <option name="WIKILINKS" value="true" /> + </PegdownExtensions> + <ParserOptions> + <option name="COMMONMARK_LISTS" value="false" /> + <option name="DUMMY" value="false" /> + <option name="EMOJI_SHORTCUTS" value="true" /> + <option name="FLEXMARK_FRONT_MATTER" value="false" /> + <option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="true" /> + <option name="GFM_TABLE_RENDERING" value="true" /> + <option name="GITBOOK_URL_ENCODING" value="false" /> + <option name="GITHUB_EMOJI_URL" value="false" /> + <option name="GITHUB_LISTS" value="true" /> + <option name="GITHUB_WIKI_LINKS" value="true" /> + <option name="JEKYLL_FRONT_MATTER" value="false" /> + <option name="SIM_TOC_BLANK_LINE_SPACER" value="true" /> + </ParserOptions> + </ParserSettings> + <HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true"> + <GeneratorProvider> + <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" /> + </GeneratorProvider> + <headerTop /> + <headerBottom /> + <bodyTop /> + <bodyBottom /> + </HtmlSettings> + <CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssTextEnabled="false" isDynamicPageWidth="true"> + <StylesheetProvider> + <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" /> + </StylesheetProvider> + <ScriptProviders /> + <cssText /> + </CssSettings> + <HtmlExportSettings updateOnSave="false" parentDir="$ProjectFileDir$" targetDir="$ProjectFileDir$" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" /> + <LinkMapSettings> + <textMaps /> + </LinkMapSettings> + </component> +</project> \ No newline at end of file diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml new file mode 100755 index 00000000..57927c5a --- /dev/null +++ b/.idea/markdown-navigator/profiles_settings.xml @@ -0,0 +1,3 @@ +<component name="MarkdownNavigator.ProfileManager"> + <settings default="" pdf-export="" /> +</component> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100755 index 00000000..28a804d8 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="JavaScriptSettings"> + <option name="languageLevel" value="ES6" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100755 index 00000000..4cd901d2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/docco.iml" filepath="$PROJECT_DIR$/.idea/docco.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100755 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml new file mode 100755 index 00000000..c7f43370 --- /dev/null +++ b/.idea/watcherTasks.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectTasksOptions" suppressed-tasks="Babel"> + <TaskOptions isEnabled="false"> + <option name="arguments" value="--map --compile $FileName$ " /> + <option name="checkSyntaxErrors" value="true" /> + <option name="description" /> + <option name="exitCodeBehavior" value="ALWAYS" /> + <option name="fileExtension" value="litcoffee" /> + <option name="immediateSync" value="true" /> + <option name="name" value="CoffeeScript" /> + <option name="output" value="$FileNameWithoutExtension$.js:$FileNameWithoutExtension$.map:$FileNameWithoutExtension$.js.map" /> + <option name="outputFilters"> + <array> + <FilterInfo> + <option name="description" value="coffee error format" /> + <option name="name" value="coffee" /> + <option name="regExp" value="$FILE_PATH$:$LINE$:$COLUMN$: $MESSAGE$$" /> + </FilterInfo> + </array> + </option> + <option name="outputFromStdout" value="false" /> + <option name="program" value="$USER_HOME$/.nvm/versions/node/v7.7.0/bin/coffee" /> + <option name="scopeName" value="Project Files" /> + <option name="trackOnlyRoot" value="true" /> + <option name="workingDir" value="$FileDir$" /> + <envs /> + </TaskOptions> + </component> +</project> \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100755 index 00000000..f2e8c04e --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,1696 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ChangeListManager"> + <list default="true" id="276b0a16-5b5d-4c51-a0d3-f44cc53e2124" name="Default" comment=""> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/docco.iml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/libraries/Generated_files.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/markdown-navigator.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/markdown-navigator/profiles_settings.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/misc.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/modules.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/vcs.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/watcherTasks.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/package-lock.json" /> + <change type="MOVED" beforePath="$PROJECT_DIR$/test/sim/.adocco.json" afterPath="$PROJECT_DIR$/test/sim/.docco.json" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/fonts/aller-bold.eot" afterPath="$PROJECT_DIR$/resources/classic/public/fonts/aller-bold.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/fonts/aller-bold.ttf" afterPath="$PROJECT_DIR$/resources/classic/public/fonts/aller-bold.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/fonts/aller-bold.woff" afterPath="$PROJECT_DIR$/resources/classic/public/fonts/aller-bold.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/fonts/aller-light.eot" afterPath="$PROJECT_DIR$/resources/classic/public/fonts/aller-light.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/fonts/aller-light.ttf" afterPath="$PROJECT_DIR$/resources/classic/public/fonts/aller-light.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/fonts/aller-light.woff" afterPath="$PROJECT_DIR$/resources/classic/public/fonts/aller-light.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/fonts/fleurons.eot" afterPath="$PROJECT_DIR$/resources/classic/public/fonts/fleurons.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/fonts/fleurons.ttf" afterPath="$PROJECT_DIR$/resources/classic/public/fonts/fleurons.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/fonts/fleurons.woff" afterPath="$PROJECT_DIR$/resources/classic/public/fonts/fleurons.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/images/gray.png" afterPath="$PROJECT_DIR$/resources/classic/public/images/gray.png" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/fonts/aller-bold.eot" afterPath="$PROJECT_DIR$/resources/linear/public/fonts/aller-bold.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/fonts/aller-bold.ttf" afterPath="$PROJECT_DIR$/resources/linear/public/fonts/aller-bold.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/fonts/aller-bold.woff" afterPath="$PROJECT_DIR$/resources/linear/public/fonts/aller-bold.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/fonts/aller-light.eot" afterPath="$PROJECT_DIR$/resources/linear/public/fonts/aller-light.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/fonts/aller-light.ttf" afterPath="$PROJECT_DIR$/resources/linear/public/fonts/aller-light.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/fonts/aller-light.woff" afterPath="$PROJECT_DIR$/resources/linear/public/fonts/aller-light.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/fonts/fleurons.eot" afterPath="$PROJECT_DIR$/resources/linear/public/fonts/fleurons.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/fonts/fleurons.ttf" afterPath="$PROJECT_DIR$/resources/linear/public/fonts/fleurons.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/fonts/fleurons.woff" afterPath="$PROJECT_DIR$/resources/linear/public/fonts/fleurons.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/images/gray.png" afterPath="$PROJECT_DIR$/resources/linear/public/images/gray.png" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-bold.eot" afterPath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-bold.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-bold.ttf" afterPath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-bold.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-bold.woff" afterPath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-bold.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-light.eot" afterPath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-light.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-light.ttf" afterPath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-light.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-light.woff" afterPath="$PROJECT_DIR$/resources/parallel/public/fonts/aller-light.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-bold.eot" afterPath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-bold.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-bold.ttf" afterPath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-bold.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-bold.woff" afterPath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-bold.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-light.eot" afterPath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-light.eot" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-light.ttf" afterPath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-light.ttf" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-light.woff" afterPath="$PROJECT_DIR$/resources/sidebyside/public/fonts/aller-light.woff" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/images/fluffybunny1.jpg" afterPath="$PROJECT_DIR$/test/sim/images/fluffybunny1.jpg" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/images/fluffybunny2.jpg" afterPath="$PROJECT_DIR$/test/sim/images/fluffybunny2.jpg" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/images/fluffybunny3.jpg" afterPath="$PROJECT_DIR$/test/sim/images/fluffybunny3.jpg" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.docco.json" afterPath="$PROJECT_DIR$/.docco.json" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.gitignore" afterPath="$PROJECT_DIR$/.gitignore" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.npmignore" afterPath="$PROJECT_DIR$/.npmignore" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.travis.yml" afterPath="$PROJECT_DIR$/.travis.yml" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/Cakefile" afterPath="$PROJECT_DIR$/Cakefile" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/LICENSE" afterPath="$PROJECT_DIR$/LICENSE" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/docco.js" afterPath="$PROJECT_DIR$/docco.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/docco.js.map" afterPath="$PROJECT_DIR$/docco.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/docco.litcoffee" afterPath="$PROJECT_DIR$/docco.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/gulpfile.coffee" afterPath="$PROJECT_DIR$/gulpfile.coffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/index.html" afterPath="$PROJECT_DIR$/index.html" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/package.json" afterPath="$PROJECT_DIR$/package.json" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/docco.css" afterPath="$PROJECT_DIR$/resources/classic/docco.css" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/docco.jst" afterPath="$PROJECT_DIR$/resources/classic/docco.jst" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/classic/public/stylesheets/normalize.css" afterPath="$PROJECT_DIR$/resources/classic/public/stylesheets/normalize.css" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/languages.json" afterPath="$PROJECT_DIR$/resources/languages.json" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/docco.css" afterPath="$PROJECT_DIR$/resources/linear/docco.css" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/docco.jst" afterPath="$PROJECT_DIR$/resources/linear/docco.jst" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/linear/public/stylesheets/normalize.css" afterPath="$PROJECT_DIR$/resources/linear/public/stylesheets/normalize.css" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/parallel/docco.css" afterPath="$PROJECT_DIR$/resources/parallel/docco.css" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/parallel/docco.jst" afterPath="$PROJECT_DIR$/resources/parallel/docco.jst" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/parallel/public/stylesheets/normalize.css" afterPath="$PROJECT_DIR$/resources/parallel/public/stylesheets/normalize.css" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/plain-markdown/README.md" afterPath="$PROJECT_DIR$/resources/plain-markdown/README.md" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/plain-markdown/docco.jst" afterPath="$PROJECT_DIR$/resources/plain-markdown/docco.jst" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/sidebyside/docco.css" afterPath="$PROJECT_DIR$/resources/sidebyside/docco.css" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/sidebyside/docco.jst" afterPath="$PROJECT_DIR$/resources/sidebyside/docco.jst" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/resources/sidebyside/public/stylesheets/normalize.css" afterPath="$PROJECT_DIR$/resources/sidebyside/public/stylesheets/normalize.css" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/buildMatchers.js" afterPath="$PROJECT_DIR$/src/buildMatchers.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/buildMatchers.js.map" afterPath="$PROJECT_DIR$/src/buildMatchers.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/buildMatchers.litcoffee" afterPath="$PROJECT_DIR$/src/buildMatchers.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/configure.js" afterPath="$PROJECT_DIR$/src/configure.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/configure.litcoffee" afterPath="$PROJECT_DIR$/src/configure.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/document.js" afterPath="$PROJECT_DIR$/src/document.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/document.litcoffee" afterPath="$PROJECT_DIR$/src/document.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/format.js" afterPath="$PROJECT_DIR$/src/format.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/format.js.map" afterPath="$PROJECT_DIR$/src/format.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/format.litcoffee" afterPath="$PROJECT_DIR$/src/format.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getCSSPath.js" afterPath="$PROJECT_DIR$/src/getCSSPath.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getCSSPath.litcoffee" afterPath="$PROJECT_DIR$/src/getCSSPath.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getDestinationInformation.js" afterPath="$PROJECT_DIR$/src/getDestinationInformation.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getDestinationInformation.litcoffee" afterPath="$PROJECT_DIR$/src/getDestinationInformation.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getInformationOnFiles.js" afterPath="$PROJECT_DIR$/src/getInformationOnFiles.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getInformationOnFiles.js.map" afterPath="$PROJECT_DIR$/src/getInformationOnFiles.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getInformationOnFiles.litcoffee" afterPath="$PROJECT_DIR$/src/getInformationOnFiles.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getLanguage.js" afterPath="$PROJECT_DIR$/src/getLanguage.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getLanguage.litcoffee" afterPath="$PROJECT_DIR$/src/getLanguage.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getOthers.js" afterPath="$PROJECT_DIR$/src/getOthers.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getOthers.js.map" afterPath="$PROJECT_DIR$/src/getOthers.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getOthers.litcoffee" afterPath="$PROJECT_DIR$/src/getOthers.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getRelativePath.js" afterPath="$PROJECT_DIR$/src/getRelativePath.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getRelativePath.litcoffee" afterPath="$PROJECT_DIR$/src/getRelativePath.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getSourceInformation.js" afterPath="$PROJECT_DIR$/src/getSourceInformation.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/getSourceInformation.litcoffee" afterPath="$PROJECT_DIR$/src/getSourceInformation.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/parse.js" afterPath="$PROJECT_DIR$/src/parse.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/parse.js.map" afterPath="$PROJECT_DIR$/src/parse.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/parse.litcoffee" afterPath="$PROJECT_DIR$/src/parse.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/write.js" afterPath="$PROJECT_DIR$/src/write.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/write.js.map" afterPath="$PROJECT_DIR$/src/write.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/write.litcoffee" afterPath="$PROJECT_DIR$/src/write.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/.groc.json" afterPath="$PROJECT_DIR$/test/sim/.groc.json" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/README.md" afterPath="$PROJECT_DIR$/test/sim/README.md" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/src/fake_coffee.coffee" afterPath="$PROJECT_DIR$/test/sim/src/fake_coffee.coffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/src/fake_coffee2.coffee" afterPath="$PROJECT_DIR$/test/sim/src/fake_coffee2.coffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/src/fake_java.java" afterPath="$PROJECT_DIR$/test/sim/src/fake_java.java" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/src/fake_javascript.js" afterPath="$PROJECT_DIR$/test/sim/src/fake_javascript.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/sim/src/fake_litcoffee.litcoffee" afterPath="$PROJECT_DIR$/test/sim/src/fake_litcoffee.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-config.js" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-config.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-config.js.map" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-config.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-config.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-config.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-jst-result.js" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-jst-result.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-jst-result.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-jst-result.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-jst.js" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-jst.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-jst.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-jst.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-flattened-result.js" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-flattened-result.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-flattened-result.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-flattened-result.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-unflattened-result.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst-unflattened-result.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst.js" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake-linear-jst.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/fake_coffee.coffee" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/fake_coffee.coffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.js" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.js.map" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.js" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.js.map" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js.map" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-configure.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-configure.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-configure.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-configure.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-document.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-document.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-document.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-document.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-fixForMatch.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-fixForMatch.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-fixForMatch.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-fixForMatch.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-format.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-format.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-format.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-format.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getCSSPath.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getCSSPath.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getCSSPath.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getCSSPath.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getDestinationInformation.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getDestinationInformation.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getDestinationInformation.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getDestinationInformation.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getLanguage.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getLanguage.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getLanguage.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getLanguage.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js.map" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getRelativePath.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getRelativePath.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-getRelativePath.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-getRelativePath.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-parse.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-parse.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-parse.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-parse.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-run.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-run.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-run.js.map" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-run.js.map" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-run.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-run.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-write.js" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-write.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/unit-test-write.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/unit-test-write.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/utils/fixForMatch.js" afterPath="$PROJECT_DIR$/test/unit-tests/utils/fixForMatch.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/utils/fixForMatch.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/utils/fixForMatch.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/utils/typeIsArray.js" afterPath="$PROJECT_DIR$/test/unit-tests/utils/typeIsArray.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/utils/typeIsArray.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/utils/typeIsArray.litcoffee" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/utils/typeIsObject.js" afterPath="$PROJECT_DIR$/test/unit-tests/utils/typeIsObject.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/unit-tests/utils/typeIsObject.litcoffee" afterPath="$PROJECT_DIR$/test/unit-tests/utils/typeIsObject.litcoffee" /> + </list> + <ignored path="$PROJECT_DIR$/.tmp/" /> + <ignored path="$PROJECT_DIR$/temp/" /> + <ignored path="$PROJECT_DIR$/tmp/" /> + <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> + <option name="TRACKING_ENABLED" value="true" /> + <option name="SHOW_DIALOG" value="false" /> + <option name="HIGHLIGHT_CONFLICTS" value="true" /> + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> + <option name="LAST_RESOLUTION" value="IGNORE" /> + </component> + <component name="FileEditorManager"> + <leaf> + <file leaf-file-name="unit-test-getInformationOnFiles.litcoffee" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="153"> + <caret line="9" column="9" lean-forward="false" selection-start-line="9" selection-start-column="9" selection-end-line="9" selection-end-column="9" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="unit-test-getInformationOnFiles.js" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="170"> + <caret line="24" column="11" lean-forward="false" selection-start-line="24" selection-start-column="11" selection-end-line="24" selection-end-column="11" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="informationOnFilesUnFlattened.litcoffee" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="364"> + <caret line="24" column="27" lean-forward="false" selection-start-line="24" selection-start-column="27" selection-end-line="24" selection-end-column="27" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="unit-test-run.litcoffee" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-run.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="264"> + <caret line="54" column="29" lean-forward="false" selection-start-line="54" selection-start-column="29" selection-end-line="54" selection-end-column="29" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="unit-test-buildMatchers.litcoffee" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="47" lean-forward="false" selection-start-line="15" selection-start-column="47" selection-end-line="15" selection-end-column="47" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name=".gitignore" pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/.gitignore"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="204"> + <caret line="12" column="0" lean-forward="true" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="unit-test-buildMatchers.js" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="271"> + <caret line="20" column="49" lean-forward="false" selection-start-line="20" selection-start-column="49" selection-end-line="20" selection-end-column="49" /> + <folding> + <marker date="1531189548000" expanded="true" signature="272:898" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="324:894" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="438:870" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="625:696" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="718:819" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="825:864" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="unit-test-run.js" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-run.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="158"> + <caret line="60" column="9" lean-forward="false" selection-start-line="60" selection-start-column="9" selection-end-line="60" selection-end-column="9" /> + <folding> + <marker date="1531189548000" expanded="true" signature="1190:2044" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="1638:1864" ph="{"layout": "parallel"...}" /> + <marker date="1531189548000" expanded="true" signature="2100:3322" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2131:2191" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2218:2287" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2336:3148" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2382:3127" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2397:2464" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2478:2550" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2564:2628" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2642:2715" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2729:2799" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2813:2883" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2897:2967" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2981:3050" ph="..." /> + <marker date="1531189548000" expanded="true" signature="3064:3121" ph="..." /> + <marker date="1531189548000" expanded="true" signature="3174:3239" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="3264:3320" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="3390:3531" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="3440:3476" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="fake-config.litcoffee" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-config.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="153"> + <caret line="16" column="14" lean-forward="false" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="14" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="unit-test-typeIsArray.litcoffee" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="153"> + <caret line="9" column="13" lean-forward="false" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" /> + <folding /> + </state> + </provider> + </entry> + </file> + </leaf> + </component> + <component name="FindInProjectRecents"> + <findStrings> + <find>jumpwa</find> + <find>jumpw</find> + <find>jump_</find> + <find>jump_w</find> + <find>jump_wr</find> + <find>jump_wra</find> + <find>jump_wrap</find> + <find>jump_wrappe</find> + <find>jump_wrapper</find> + <find>jump_page_wrapper</find> + <find>display:</find> + <find>display: none</find> + <find>deepEqual</find> + <find>Version</find> + <find>hidden</find> + <find>block</find> + <find>wrapper</find> + <find>source</find> + <find>l</find> + <find>link</find> + <find>linkM</find> + <find>linkMa</find> + <find>linkMatc</find> + <find>linkMatcher</find> + <find>im</find> + <find>img</find> + <find>name</find> + <find>jump</find> + <find>layout</find> + <find>paral</find> + </findStrings> + <replaceStrings> + <replace>console.log</replace> + <replace>to</replace> + <replace>,</replace> + <replace>+"/"+</replace> + <replace>../..</replace> + <replace>../../fakes</replace> + <replace>../fakes</replace> + <replace>#{JSON.stringify(</replace> + <replace>\'</replace> + <replace>mockery</replace> + <replace>document</replace> + <replace>buildMatchers</replace> + <replace>format</replace> + <replace>multiline</replace> + <replace>stopMatcher</replace> + <replace>imgMatcher</replace> + </replaceStrings> + </component> + <component name="Git.Settings"> + <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> + </component> + <component name="IdeDocumentHistory"> + <option name="CHANGED_PATHS"> + <list> + <option value="$PROJECT_DIR$/src/document.litcoffee" /> + <option value="$PROJECT_DIR$/gulpfile.coffee" /> + <option value="$PROJECT_DIR$/README" /> + <option value="$PROJECT_DIR$/README.markdown" /> + <option value="$PROJECT_DIR$/travis.yml" /> + <option value="$PROJECT_DIR$/.travis.yml" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-configure.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/utils/typeIsArray.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/utils/typeIsObject.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-fixForMatch.coffee" /> + <option value="vm:170" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-fixForMatch.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/utils/fixForMatch.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/utils/fixForMatch.js" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.coffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.litcoffee" /> + <option value="$PROJECT_DIR$/.docco.json" /> + <option value="$PROJECT_DIR$/bin/docco" /> + <option value="$PROJECT_DIR$/package.json" /> + <option value="$PROJECT_DIR$/src/getInformationOnFiles.js" /> + <option value="$PROJECT_DIR$/test/sim/src/fake_litcoffee.js" /> + <option value="$PROJECT_DIR$/test/sim/src/fake_coffee2.coffee" /> + <option value="$PROJECT_DIR$/test/sim/src/fake_coffee.coffee" /> + <option value="$PROJECT_DIR$/src/write.js" /> + <option value="$PROJECT_DIR$/src/getOthers.js" /> + <option value="$PROJECT_DIR$/resources/parallel/docco.jst" /> + <option value="$PROJECT_DIR$/src/write.litcoffee" /> + <option value="$PROJECT_DIR$/resources/linear/docco.jst" /> + <option value="$PROJECT_DIR$/test/sim/.adocco.json" /> + <option value="$PROJECT_DIR$/src/getInformationOnFiles.litcoffee" /> + <option value="$PROJECT_DIR$/src/getOthers.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.litcoffee" /> + <option value="$PROJECT_DIR$/resources/sidebyside/docco.jst" /> + <option value="$PROJECT_DIR$/test/sim/README.md" /> + <option value="$PROJECT_DIR$/src/format.litcoffee" /> + <option value="$PROJECT_DIR$/resources/sidebyside/docco.css" /> + <option value="$PROJECT_DIR$/README.md" /> + <option value="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.js" /> + <option value="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.litcoffee" /> + <option value="$PROJECT_DIR$/src/parse.litcoffee" /> + <option value="$PROJECT_DIR$/resources/languages.json" /> + <option value="$PROJECT_DIR$/src/buildMatchers.litcoffee" /> + <option value="$PROJECT_DIR$/test/sim/.docco.json" /> + <option value="$PROJECT_DIR$/docco.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/fakes/fake-config.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-run.js" /> + <option value="$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-run.litcoffee" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js" /> + <option value="$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.litcoffee" /> + <option value="$PROJECT_DIR$/.gitignore" /> + </list> + </option> + </component> + <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" /> + <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" /> + <component name="JsFlowSettings"> + <service-enabled>true</service-enabled> + <exe-path /> + <annotation-enable>false</annotation-enable> + <other-services-enabled>true</other-services-enabled> + </component> + <component name="JsGulpfileManager"> + <detection-done>true</detection-done> + <sorting>DEFINITION_ORDER</sorting> + </component> + <component name="NodeModulesDirectoryManager"> + <handled-path value="$PROJECT_DIR$/node_modules" /> + </component> + <component name="ProjectFrameBounds"> + <option name="x" value="4" /> + <option name="y" value="23" /> + <option name="width" value="1916" /> + <option name="height" value="1057" /> + </component> + <component name="ProjectInspectionProfilesVisibleTreeState"> + <entry key="Project Default"> + <profile-state> + <expanded-state> + <State> + <id /> + </State> + <State> + <id>CoffeeScript</id> + </State> + <State> + <id>File Watchers</id> + </State> + <State> + <id>GeneralCoffeeScript</id> + </State> + <State> + <id>Probable bugsCoffeeScript</id> + </State> + </expanded-state> + <selected-state> + <State> + <id>AngularJS</id> + </State> + </selected-state> + </profile-state> + </entry> + </component> + <component name="ProjectLevelVcsManager"> + <ConfirmationsSetting value="1" id="Add" /> + </component> + <component name="ProjectView"> + <navigator currentView="ProjectPane" proportions="" version="1"> + <flattenPackages /> + <showMembers /> + <showModules /> + <showLibraryContents /> + <hideEmptyPackages /> + <abbreviatePackageNames /> + <autoscrollToSource /> + <autoscrollFromSource /> + <sortByType /> + <manualOrder /> + <foldersAlwaysOnTop value="true" /> + </navigator> + <panes> + <pane id="Scope" /> + <pane id="ProjectPane"> + <subPane> + <expand> + <path> + <item name="docco" type="b2602c69:ProjectViewProjectNode" /> + <item name="docco" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="docco" type="b2602c69:ProjectViewProjectNode" /> + <item name="docco" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="docco" type="b2602c69:ProjectViewProjectNode" /> + <item name="docco" type="462c0819:PsiDirectoryNode" /> + <item name="test" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="docco" type="b2602c69:ProjectViewProjectNode" /> + <item name="docco" type="462c0819:PsiDirectoryNode" /> + <item name="test" type="462c0819:PsiDirectoryNode" /> + <item name="unit-tests" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="docco" type="b2602c69:ProjectViewProjectNode" /> + <item name="docco" type="462c0819:PsiDirectoryNode" /> + <item name="test" type="462c0819:PsiDirectoryNode" /> + <item name="unit-tests" type="462c0819:PsiDirectoryNode" /> + <item name="fakes" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="docco" type="b2602c69:ProjectViewProjectNode" /> + <item name="docco" type="462c0819:PsiDirectoryNode" /> + <item name="docco.litcoffee" type="620a8d5e:NestingTreeNode" /> + </path> + </expand> + <select /> + </subPane> + </pane> + <pane id="Scratches" /> + </panes> + </component> + <component name="PropertiesComponent"> + <property name="nodejs_interpreter_path" value="$USER_HOME$/.nvm/versions/node/v7.7.0/bin/node" /> + <property name="WebServerToolWindowFactoryState" value="false" /> + <property name="last_opened_file_path" value="$PROJECT_DIR$" /> + <property name="HbShouldOpenHtmlAsHb" value="" /> + <property name="settings.editor.selected.configurable" value="watcher.settings" /> + <property name="nodejs.mocha.mocha_node_package_dir" value="$PROJECT_DIR$/node_modules/mocha" /> + <property name="JavaScriptPreferStrict" value="false" /> + <property name="JavaScriptWeakerCompletionTypeGuess" value="true" /> + <property name="settings.editor.splitter.proportion" value="0.23874755" /> + <property name="add_unversioned_files" value="$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js /Users/rolov/Code/docco/test/unit-tests/unit-test-fixForMatch.js /Users/rolov/Code/docco/docco.js /Users/rolov/Code/docco/test/unit-tests/unit-test-getCSSPath.js /Users/rolov/Code/docco/test/unit-tests/utils/fixForMatch.js /Users/rolov/Code/docco/src/parse.js /Users/rolov/Code/docco/src/document.js" /> + </component> + <component name="RecentsManager"> + <key name="CopyFile.RECENT_KEYS"> + <recent name="$PROJECT_DIR$/resources" /> + <recent name="$PROJECT_DIR$/resources/groc" /> + <recent name="$PROJECT_DIR$/test/unit-tests" /> + <recent name="$PROJECT_DIR$/test/unit-tests/utils" /> + <recent name="$PROJECT_DIR$/test/unit-tests/fakes" /> + </key> + <key name="MoveFile.RECENT_KEYS"> + <recent name="$PROJECT_DIR$/test/unit-tests" /> + <recent name="$PROJECT_DIR$/test/fakes/images" /> + <recent name="$PROJECT_DIR$/test" /> + </key> + </component> + <component name="RunDashboard"> + <option name="ruleStates"> + <list> + <RuleState> + <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> + </RuleState> + <RuleState> + <option name="name" value="StatusDashboardGroupingRule" /> + </RuleState> + </list> + </option> + </component> + <component name="RunManager" selected="Mocha.Unit Tests"> + <configuration name="README.html (1)" type="JavascriptDebugType" factoryName="JavaScript Debug" temporary="true" nameIsGenerated="true" uri="http://localhost:63342/docco/docs/README.html" /> + <configuration name="README.html" type="JavascriptDebugType" factoryName="JavaScript Debug" temporary="true" nameIsGenerated="true" uri="http://localhost:63342/docco/test/sim/docs/README.html" /> + <configuration name="Unit Tests" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>$USER_HOME$/.nvm/versions/node/v10.4.0/bin/node</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>DIRECTORY</test-kind> + <test-directory>$PROJECT_DIR$/test/unit-tests</test-directory> + <recursive>false</recursive> + </configuration> + <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js"> + <node-interpreter>project</node-interpreter> + <node-options /> + <gulpfile /> + <tasks /> + <arguments /> + <envs /> + </configuration> + <configuration default="true" type="BashConfigurationType" factoryName="Bash"> + <option name="INTERPRETER_OPTIONS" value="" /> + <option name="INTERPRETER_PATH" value="/bin/bash" /> + <option name="WORKING_DIRECTORY" value="" /> + <option name="PARENT_ENVS" value="true" /> + <option name="SCRIPT_NAME" value="" /> + <option name="PARAMETERS" value="" /> + <module name="" /> + <envs /> + <method /> + </configuration> + <configuration default="true" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application"> + <method /> + </configuration> + <configuration default="true" type="DartTestRunConfigurationType" factoryName="Dart Test"> + <method /> + </configuration> + <configuration default="true" type="JavaScriptTestRunnerJest" factoryName="Jest"> + <node-interpreter value="project" /> + <working-dir value="" /> + <envs /> + <scope-kind value="ALL" /> + <method /> + </configuration> + <configuration default="true" type="JavaScriptTestRunnerKarma" factoryName="Karma"> + <config-file value="" /> + <node-interpreter value="project" /> + <envs /> + <method /> + </configuration> + <configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor"> + <config-file value="" /> + <node-interpreter value="project" /> + <envs /> + <method /> + </configuration> + <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug"> + <method /> + </configuration> + <configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" path-to-node="project" working-dir=""> + <method /> + </configuration> + <configuration default="true" type="cucumber.js" factoryName="Cucumber.js"> + <option name="cucumberJsArguments" value="" /> + <option name="executablePath" /> + <option name="filePath" /> + <method /> + </configuration> + <configuration default="true" type="js.build_tools.npm" factoryName="npm"> + <command value="run" /> + <scripts /> + <node-interpreter value="project" /> + <envs /> + <method /> + </configuration> + <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory /> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui /> + <extra-mocha-options /> + <test-kind>DIRECTORY</test-kind> + <test-directory /> + <recursive>false</recursive> + <method /> + </configuration> + <configuration name="buildMatchers" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js</test-file> + </configuration> + <configuration name="docco --setup only --layout linear --template" type="NodeJSConfigurationType" factoryName="Node.js" singleton="false" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="--setup=.adocco.json --layout linear --css ../../resource/classic/docco.jst --template ../../resources/classic/docco.jst" working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="docco --setup only --layout linear" type="NodeJSConfigurationType" factoryName="Node.js" singleton="false" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="--setup=.adocco.json --layout linear" working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="docco --setup only --layout sidebyside" type="NodeJSConfigurationType" factoryName="Node.js" singleton="false" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="--setup=.adocco.json --layout sidebyside" working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="docco --setup only" type="NodeJSConfigurationType" factoryName="Node.js" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="--setup=.adocco.json " working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="docco --setup with --flatten --layout linear --css " type="NodeJSConfigurationType" factoryName="Node.js" singleton="false" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="--setup=.adocco.json --flatten --layout linear -c ../../resources/classic/docco.css" working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="docco --setup with --flatten --layout linear" type="NodeJSConfigurationType" factoryName="Node.js" singleton="false" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="--setup=.adocco.json --flatten --layout linear" working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="docco --setup with --flatten" type="NodeJSConfigurationType" factoryName="Node.js" singleton="false" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="--setup=.adocco.json --flatten " working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="docco --setup with --languages resouces/languages.json" type="NodeJSConfigurationType" factoryName="Node.js" singleton="false" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="--setup=.adocco.json --languages ../../resources/languages.json" working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="docco files on command line" type="NodeJSConfigurationType" factoryName="Node.js" singleton="false" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="README.md images/**/*.jpg" working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="docco getOthers" type="mocha-javascript-test-runner" factoryName="Mocha" temporary="true" nameIsGenerated="true"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>SUITE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js</test-file> + <test-names> + <name value="docco getOthers" /> + </test-names> + </configuration> + <configuration name="docco getOthers.gets paths to other destination files: 1 level down, flattened." type="mocha-javascript-test-runner" factoryName="Mocha" temporary="true" nameIsGenerated="true"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.litcoffee</test-file> + <test-names> + <name value="docco getOthers" /> + <name value="gets paths to other destination files: 1 level down, flattened." /> + </test-names> + </configuration> + <configuration name="docco no --setup with --layout parallel" type="NodeJSConfigurationType" factoryName="Node.js" singleton="false" path-to-node="project" path-to-js-file="$PROJECT_DIR$/bin/docco" application-parameters="--setup=.adocco.json --flatten --layout parallel" working-dir="$PROJECT_DIR$/test/sim"> + <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> + <option name="envVars"> + <list /> + </option> + <option name="extraHosts"> + <list /> + </option> + <option name="links"> + <list /> + </option> + <option name="networkDisabled" value="false" /> + <option name="networkMode" value="bridge" /> + <option name="portBindings"> + <list /> + </option> + <option name="publishAllPorts" value="false" /> + <option name="version" value="1" /> + <option name="volumeBindings"> + <list /> + </option> + </EXTENSION> + </configuration> + <configuration name="document" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-document.js</test-file> + </configuration> + <configuration name="fake_javascript.html" type="JavascriptDebugType" factoryName="JavaScript Debug" temporary="true" nameIsGenerated="true" uri="http://localhost:63342/docco/test/sim/docs/src/fake_javascript.html" /> + <configuration name="fix for match" type="mocha-javascript-test-runner" factoryName="Mocha"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-fixForMatch.js</test-file> + </configuration> + <configuration name="format" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-format.js</test-file> + </configuration> + <configuration name="getCSSPath" type="mocha-javascript-test-runner" factoryName="Mocha"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-getCSSPath.js</test-file> + </configuration> + <configuration name="getDestinationInformation" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-getDestinationInformation.js</test-file> + </configuration> + <configuration name="getInformationOnFiles" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.js</test-file> + </configuration> + <configuration name="getLanguage" type="mocha-javascript-test-runner" factoryName="Mocha"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-getLanguage.js</test-file> + </configuration> + <configuration name="getOthers" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js</test-file> + </configuration> + <configuration name="getRelativePath" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-getRelativePath.js</test-file> + </configuration> + <configuration name="parse" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-parse.js</test-file> + </configuration> + <configuration name="run" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-run.js</test-file> + </configuration> + <configuration name="write" type="mocha-javascript-test-runner" factoryName="Mocha" singleton="false"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST_FILE</test-kind> + <test-file>$PROJECT_DIR$/test/unit-tests/unit-test-write.js</test-file> + </configuration> + <list size="29"> + <item index="0" class="java.lang.String" itemvalue="Node.js.docco --setup only" /> + <item index="1" class="java.lang.String" itemvalue="Node.js.docco --setup with --flatten" /> + <item index="2" class="java.lang.String" itemvalue="Node.js.docco files on command line" /> + <item index="3" class="java.lang.String" itemvalue="Node.js.docco --setup only --layout linear" /> + <item index="4" class="java.lang.String" itemvalue="Node.js.docco --setup with --flatten --layout linear" /> + <item index="5" class="java.lang.String" itemvalue="Mocha.getLanguage" /> + <item index="6" class="java.lang.String" itemvalue="Mocha.getInformationOnFiles" /> + <item index="7" class="java.lang.String" itemvalue="Mocha.getCSSPath" /> + <item index="8" class="java.lang.String" itemvalue="Mocha.getRelativePath" /> + <item index="9" class="java.lang.String" itemvalue="Mocha.Unit Tests" /> + <item index="10" class="java.lang.String" itemvalue="Mocha.getDestinationInformation" /> + <item index="11" class="java.lang.String" itemvalue="Mocha.write" /> + <item index="12" class="java.lang.String" itemvalue="Mocha.getOthers" /> + <item index="13" class="java.lang.String" itemvalue="Node.js.docco no --setup with --layout parallel" /> + <item index="14" class="java.lang.String" itemvalue="Mocha.parse" /> + <item index="15" class="java.lang.String" itemvalue="Mocha.format" /> + <item index="16" class="java.lang.String" itemvalue="Mocha.document" /> + <item index="17" class="java.lang.String" itemvalue="Mocha.buildMatchers" /> + <item index="18" class="java.lang.String" itemvalue="Mocha.run" /> + <item index="19" class="java.lang.String" itemvalue="Node.js.docco --setup with --flatten --layout linear --css " /> + <item index="20" class="java.lang.String" itemvalue="Node.js.docco --setup with --languages resouces/languages.json" /> + <item index="21" class="java.lang.String" itemvalue="Node.js.docco --setup only --layout linear --template" /> + <item index="22" class="java.lang.String" itemvalue="Mocha.fix for match" /> + <item index="23" class="java.lang.String" itemvalue="Node.js.docco --setup only --layout sidebyside" /> + <item index="24" class="java.lang.String" itemvalue="JavaScript Debug.README.html" /> + <item index="25" class="java.lang.String" itemvalue="JavaScript Debug.README.html (1)" /> + <item index="26" class="java.lang.String" itemvalue="JavaScript Debug.fake_javascript.html" /> + <item index="27" class="java.lang.String" itemvalue="Mocha.docco getOthers.gets paths to other destination files: 1 level down, flattened." /> + <item index="28" class="java.lang.String" itemvalue="Mocha.docco getOthers" /> + </list> + <recent_temporary> + <list size="5"> + <item index="0" class="java.lang.String" itemvalue="JavaScript Debug.README.html" /> + <item index="1" class="java.lang.String" itemvalue="JavaScript Debug.README.html (1)" /> + <item index="2" class="java.lang.String" itemvalue="Mocha.docco getOthers" /> + <item index="3" class="java.lang.String" itemvalue="Mocha.docco getOthers.gets paths to other destination files: 1 level down, flattened." /> + <item index="4" class="java.lang.String" itemvalue="JavaScript Debug.fake_javascript.html" /> + </list> + </recent_temporary> + </component> + <component name="ShelveChangesManager" show_recycled="false"> + <option name="remove_strategy" value="false" /> + </component> + <component name="TaskManager"> + <task active="true" id="Default" summary="Default task"> + <changelist id="276b0a16-5b5d-4c51-a0d3-f44cc53e2124" name="Default" comment="" /> + <created>1499113411165</created> + <option name="number" value="Default" /> + <option name="presentableId" value="Default" /> + <updated>1499113411165</updated> + <workItem from="1499113413336" duration="48134000" /> + <workItem from="1499270789324" duration="26498000" /> + <workItem from="1499311905250" duration="7328000" /> + <workItem from="1499363746950" duration="21026000" /> + <workItem from="1499413604060" duration="10261000" /> + <workItem from="1499463726746" duration="7655000" /> + <workItem from="1499709490623" duration="6620000" /> + <workItem from="1499721529302" duration="552000" /> + <workItem from="1499722183283" duration="810000" /> + <workItem from="1499727695046" duration="1103000" /> + <workItem from="1499731477751" duration="1082000" /> + <workItem from="1499736178047" duration="13868000" /> + <workItem from="1499795270542" duration="619000" /> + <workItem from="1499801213252" duration="8497000" /> + <workItem from="1500051307473" duration="376000" /> + <workItem from="1500052270841" duration="836000" /> + <workItem from="1531187960815" duration="1681000" /> + </task> + <servers /> + </component> + <component name="TestHistory"> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 21m 16s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 21m 47s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 22m 35s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 22m 52s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 23m 27s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 24m 06s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 24m 08s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 24m 18s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 25m 18s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="Unit_Tests - 2018.07.09 at 19h 25m 51s.xml"> + <configuration name="Unit Tests" configurationId="mocha-javascript-test-runner" /> + </history-entry> + </component> + <component name="TimeTrackingManager"> + <option name="totallyTimeSpent" value="156946000" /> + </component> + <component name="TodoView" selected-index="2"> + <todo-panel id="selected-file"> + <is-autoscroll-to-source value="true" /> + </todo-panel> + <todo-panel id="all"> + <are-packages-shown value="true" /> + <is-autoscroll-to-source value="true" /> + </todo-panel> + </component> + <component name="ToolWindowManager"> + <frame x="4" y="23" width="1916" height="1057" extended-state="0" /> + <editor active="true" /> + <layout> + <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.20263852" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> + <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.27608874" sideWeight="0.4983539" order="6" side_tool="false" content_ui="tabs" /> + <window_info id="Buck" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" /> + <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" /> + <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.47295082" sideWeight="0.49860057" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32851985" sideWeight="0.5871007" order="7" side_tool="false" content_ui="tabs" /> + <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3985932" sideWeight="0.32332808" order="2" side_tool="true" content_ui="tabs" /> + <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.55146265" sideWeight="0.5676672" order="7" side_tool="false" content_ui="tabs" /> + <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> + <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.39761648" sideWeight="0.6766719" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> + <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> + <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> + <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> + <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> + <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + </layout> + <layout-to-restore> + <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.27608874" sideWeight="0.4983539" order="6" side_tool="false" content_ui="tabs" /> + <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> + <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> + <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> + <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" /> + <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> + <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4051724" sideWeight="0.30053192" order="2" side_tool="true" content_ui="tabs" /> + <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32949877" sideWeight="0.4983539" order="8" side_tool="false" content_ui="tabs" /> + <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3040263" sideWeight="0.4983539" order="9" side_tool="false" content_ui="tabs" /> + <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1606383" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> + <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> + <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> + <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4051724" sideWeight="0.6994681" order="3" side_tool="false" content_ui="tabs" /> + <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> + </layout-to-restore> + </component> + <component name="TypeScriptGeneratedFilesManager"> + <option name="version" value="1" /> + </component> + <component name="Vcs.Log.History.Properties"> + <option name="COLUMN_ORDER"> + <list> + <option value="0" /> + <option value="2" /> + <option value="3" /> + <option value="1" /> + </list> + </option> + </component> + <component name="VcsContentAnnotationSettings"> + <option name="myLimit" value="2678400000" /> + </component> + <component name="XDebuggerManager"> + <breakpoint-manager> + <option name="time" value="87" /> + </breakpoint-manager> + <watches-manager> + <configuration name="NodeJSConfigurationType"> + <watch expression="links" language="JavaScript" /> + <watch expression="files" language="JavaScript" /> + <watch expression="fileInfo.others" language="JavaScript" /> + </configuration> + <configuration name="mocha-javascript-test-runner"> + <watch expression="result" language="JavaScript" /> + <watch expression="result.thingId" language="JavaScript" /> + <watch expression="indexOf.call(valuesToFake, ref)" language="JavaScript" /> + <watch expression="valuesToFake" language="JavaScript" /> + <watch expression="k" language="JavaScript" /> + </configuration> + </watches-manager> + </component> + <component name="editorHistoryManager"> + <entry file="file://$PROJECT_DIR$/resources/groc/default.coffee" /> + <entry file="file://$PROJECT_DIR$/src/getLanguage.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/buildMatchers.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="120"> + <caret line="8" column="31" lean-forward="false" selection-start-line="8" selection-start-column="31" selection-end-line="8" selection-end-column="31" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/sim/src/fake_javascript.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="120"> + <caret line="8" column="48" lean-forward="false" selection-start-line="8" selection-start-column="48" selection-end-line="8" selection-end-column="48" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/sim/src/fake_java.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/sim/src/fake_coffee.coffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="120"> + <caret line="8" column="13" lean-forward="false" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/sim/src/fake_coffee2.coffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="165"> + <caret line="11" column="42" lean-forward="false" selection-start-line="11" selection-start-column="42" selection-end-line="11" selection-end-column="42" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-format.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="180"> + <caret line="12" column="31" lean-forward="false" selection-start-line="12" selection-start-column="23" selection-end-line="12" selection-end-column="31" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/configure.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="324"> + <caret line="30" column="22" lean-forward="false" selection-start-line="30" selection-start-column="22" selection-end-line="30" selection-end-column="22" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/sim/.adocco.json"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="45"> + <caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/resources/parallel/docco.jst"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="350"> + <caret line="28" column="11" lean-forward="false" selection-start-line="28" selection-start-column="11" selection-end-line="28" selection-end-column="11" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/write.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="249"> + <caret line="49" column="19" lean-forward="false" selection-start-line="49" selection-start-column="13" selection-end-line="49" selection-end-column="19" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/getDestinationInformation.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="6"> + <caret line="4" column="41" lean-forward="false" selection-start-line="4" selection-start-column="33" selection-end-line="4" selection-end-column="41" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-write.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="118"> + <caret line="43" column="9" lean-forward="false" selection-start-line="43" selection-start-column="9" selection-end-line="43" selection-end-column="9" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/getOthers.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="195"> + <caret line="13" column="21" lean-forward="false" selection-start-line="13" selection-start-column="21" selection-end-line="13" selection-end-column="21" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1215"> + <caret line="81" column="49" lean-forward="false" selection-start-line="81" selection-start-column="48" selection-end-line="81" selection-end-column="49" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/getInformationOnFiles.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="352"> + <caret line="60" column="44" lean-forward="false" selection-start-line="60" selection-start-column="44" selection-end-line="60" selection-end-column="44" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-getOthers.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1425"> + <caret line="95" column="11" lean-forward="false" selection-start-line="95" selection-start-column="11" selection-end-line="95" selection-end-column="11" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/getOthers.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="135"> + <caret line="9" column="4" lean-forward="false" selection-start-line="9" selection-start-column="4" selection-end-line="9" selection-end-column="4" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/package.json"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="705"> + <caret line="47" column="2" lean-forward="false" selection-start-line="47" selection-start-column="2" selection-end-line="47" selection-end-column="2" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/resources/parallel/docco.css"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="2655"> + <caret line="177" column="7" lean-forward="false" selection-start-line="177" selection-start-column="0" selection-end-line="178" selection-end-column="0" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/resources/sidebyside/docco.css"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="2625"> + <caret line="175" column="0" lean-forward="false" selection-start-line="175" selection-start-column="0" selection-end-line="175" selection-end-column="0" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/resources/sidebyside/docco.jst"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="540"> + <caret line="36" column="22" lean-forward="false" selection-start-line="36" selection-start-column="22" selection-end-line="36" selection-end-column="22" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/resources/linear/docco.jst"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="292"> + <caret line="37" column="21" lean-forward="false" selection-start-line="28" selection-start-column="14" selection-end-line="37" selection-end-column="21" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/README.md"> + <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> + <state split_layout="SPLIT"> + <first_editor relative-caret-position="1605"> + <caret line="107" column="23" lean-forward="false" selection-start-line="107" selection-start-column="23" selection-end-line="107" selection-end-column="23" /> + </first_editor> + <second_editor /> + </state> + </provider> + <provider editor-type-id="text-editor"> + <state relative-caret-position="570"> + <caret line="38" column="118" lean-forward="false" selection-start-line="38" selection-start-column="118" selection-end-line="38" selection-end-column="118" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/bin/docco"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="90"> + <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="330"> + <caret line="22" column="0" lean-forward="false" selection-start-line="22" selection-start-column="0" selection-end-line="24" selection-end-column="43" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/sim/README.md"> + <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> + <state split_layout="SPLIT"> + <first_editor relative-caret-position="810"> + <caret line="54" column="19" lean-forward="false" selection-start-line="54" selection-start-column="19" selection-end-line="54" selection-end-column="19" /> + </first_editor> + <second_editor /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/parse.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1155"> + <caret line="77" column="47" lean-forward="false" selection-start-line="77" selection-start-column="47" selection-end-line="77" selection-end-column="47" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/document.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1020"> + <caret line="68" column="45" lean-forward="false" selection-start-line="68" selection-start-column="45" selection-end-line="68" selection-end-column="45" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/parse.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="384"> + <caret line="87" column="43" lean-forward="false" selection-start-line="87" selection-start-column="43" selection-end-line="87" selection-end-column="43" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/resources/languages.json"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="270"> + <caret line="18" column="51" lean-forward="false" selection-start-line="18" selection-start-column="0" selection-end-line="19" selection-end-column="0" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesFlattened.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="360"> + <caret line="24" column="45" lean-forward="false" selection-start-line="24" selection-start-column="45" selection-end-line="24" selection-end-column="45" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/buildMatchers.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="323"> + <caret line="21" column="3" lean-forward="false" selection-start-line="21" selection-start-column="3" selection-end-line="21" selection-end-column="3" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/.docco.json"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="0"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="7" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/sim/.docco.json"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="170"> + <caret line="10" column="1" lean-forward="false" selection-start-line="10" selection-start-column="1" selection-end-line="10" selection-end-column="1" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/sim/docs/README.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-344"> + <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding> + <marker date="1531189046000" expanded="true" signature="8027:8032" ph="..." /> + <marker date="1531189046000" expanded="true" signature="8027:8040" ph="..." /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/format.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="714"> + <caret line="42" column="45" lean-forward="false" selection-start-line="42" selection-start-column="45" selection-end-line="42" selection-end-column="45" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/write.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="731"> + <caret line="43" column="17" lean-forward="false" selection-start-line="43" selection-start-column="17" selection-end-line="43" selection-end-column="17" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/configure.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="578"> + <caret line="34" column="66" lean-forward="false" selection-start-line="34" selection-start-column="66" selection-end-line="34" selection-end-column="66" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/docco.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="236"> + <caret line="161" column="39" lean-forward="false" selection-start-line="161" selection-start-column="39" selection-end-line="161" selection-end-column="39" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-typeIsArray.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="153"> + <caret line="9" column="13" lean-forward="false" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/fakes/fake-config.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="153"> + <caret line="16" column="14" lean-forward="false" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="14" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="153"> + <caret line="9" column="9" lean-forward="false" selection-start-line="9" selection-start-column="9" selection-end-line="9" selection-end-column="9" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-getInformationOnFiles.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="170"> + <caret line="24" column="11" lean-forward="false" selection-start-line="24" selection-start-column="11" selection-end-line="24" selection-end-column="11" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/fakes/informationOnFilesUnFlattened.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="364"> + <caret line="24" column="27" lean-forward="false" selection-start-line="24" selection-start-column="27" selection-end-line="24" selection-end-column="27" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-run.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="158"> + <caret line="60" column="9" lean-forward="false" selection-start-line="60" selection-start-column="9" selection-end-line="60" selection-end-column="9" /> + <folding> + <marker date="1531189548000" expanded="true" signature="1190:2044" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="1638:1864" ph="{"layout": "parallel"...}" /> + <marker date="1531189548000" expanded="true" signature="2100:3322" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2131:2191" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2218:2287" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2336:3148" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2382:3127" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="2397:2464" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2478:2550" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2564:2628" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2642:2715" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2729:2799" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2813:2883" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2897:2967" ph="..." /> + <marker date="1531189548000" expanded="true" signature="2981:3050" ph="..." /> + <marker date="1531189548000" expanded="true" signature="3064:3121" ph="..." /> + <marker date="1531189548000" expanded="true" signature="3174:3239" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="3264:3320" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="3390:3531" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="3440:3476" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-run.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="264"> + <caret line="54" column="29" lean-forward="false" selection-start-line="54" selection-start-column="29" selection-end-line="54" selection-end-column="29" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="271"> + <caret line="20" column="49" lean-forward="false" selection-start-line="20" selection-start-column="49" selection-end-line="20" selection-end-column="49" /> + <folding> + <marker date="1531189548000" expanded="true" signature="272:898" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="324:894" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="438:870" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="625:696" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="718:819" ph="{...}" /> + <marker date="1531189548000" expanded="true" signature="825:864" ph="{...}" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit-tests/unit-test-buildMatchers.litcoffee"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="47" lean-forward="false" selection-start-line="15" selection-start-column="47" selection-end-line="15" selection-end-column="47" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/.gitignore"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="204"> + <caret line="12" column="0" lean-forward="true" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + </component> + <component name="masterDetails"> + <states> + <state key="ScopeChooserConfigurable.UI"> + <settings> + <last-edited>Hide Literate Coffeescript js and map files</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + </states> + </component> +</project> \ No newline at end of file diff --git a/.npmignore b/.npmignore old mode 100644 new mode 100755 diff --git a/.travis.yml b/.travis.yml new file mode 100755 index 00000000..5c036be5 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: node_js + +node_js: + - "7" + +cache: + directories: + - "node_modules" + +install: + - npm install + - npm run build + +test: + - npm test \ No newline at end of file diff --git a/Cakefile b/Cakefile old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README b/README deleted file mode 100644 index c1a5e030..00000000 --- a/README +++ /dev/null @@ -1,31 +0,0 @@ - ____ -/\ _`\ -\ \ \/\ \ ___ ___ ___ ___ - \ \ \ \ \ / __`\ /'___\ /'___\ / __`\ - \ \ \_\ \ /\ \ \ \ /\ \__/ /\ \__/ /\ \ \ \ - \ \____/ \ \____/ \ \____\ \ \____\ \ \____/ - \/___/ \/___/ \/____/ \/____/ \/___/ - - -Docco is a quick-and-dirty, hundred-line-long, literate-programming-style -documentation generator. For more information, see: - -http://jashkenas.github.com/docco/ - -Installation: - - sudo npm install -g docco - -Usage: docco [options] FILES - - Options: - - -h, --help output usage information - -V, --version output the version number - -l, --layout [layout] choose a built-in layouts (parallel, linear) - -c, --css [file] use a custom css file - -o, --output [path] use a custom output path - -t, --template [file] use a custom .jst template - -e, --extension [ext] use the given file extension for all inputs - -L, --languages [file] use a custom languages.json - -m, --marked [file] use custom marked options diff --git a/README.md b/README.md new file mode 100755 index 00000000..713087e8 --- /dev/null +++ b/README.md @@ -0,0 +1,129 @@ +``` + ______ + /\ __ \ + \ \ \/\ \ ___ ___ ___ ___ + \ \ \ \ \ / __`\ /'___\ /'___\ / __`\ + \ \ \_\ \ /\ \ \ \ /\ \__/ /\ \__/ /\ \ \ \ + \ \____/ \ \____/ \ \____\ \ \____\ \ \____/ + \/___/ \/___/ \/____/ \/____/ \/___/ + +``` +Docco is a quick-and-dirty, hundred-line-long, literate-programming-style +documentation generator. For more information, see: + +http://jashkenas.github.com/docco/ + +### Installation: + + sudo npm install -g docco + +### Usage: docco [options] [FILES] + + Options: + + -c, --css [file] use a custom css file + -e, --extension [ext] use the given file extension for all inputs + -f, --flatten flatten the directory hierarchy + -h, --help output usage information + -l, --layout [layout] choose a built-in layouts (parallel, linear) + -L, --languages [file] use a custom languages.json + -m, --marked [file] use custom marked options + -o, --output [path] use a custom output path + -s, --setup [file], use configuration file, normally docco.json + -t, --template [file] use a custom .jst template + -V, --version output the version number + +### Configuring docco (.docco.json) + +Docco a JSON configuration file for use so that command line specification of files is unnecessary. +The default file for this is .docco.json, but you can the command line parameter -s/--setup file to specify a different name. +This file should be in the working directory where the command is run. + +``` +{ + "sources": [ + "docco.litcoffee", + "README.md" + ] + "layout": "linear" +} +``` + +Other values possible are: + +``` + layout: 'parallel' + output: 'doc' + css: 'somefile.css' + marked: null + setup: '.docco.json' + flatten: true +``` + +### Build: + +[](https://travis-ci.org/robblovell/docco) + +``` +npm install +npm run clean +npm run build +``` + +### Release Notes: + +#### Functionality: + + * Added configuration file capabilities with a .docco.json file + * --setup flag to specify a different configuration file + * Images (.png, .jpg, .jpeg and .tiff) can now be copied to the documentation directory + * The source directory structure is kept in the target location by default + * --flatten flag to override keeping the directory structure and flattening it + * For markdown files, referenced images are displayed in the code section + which means that in the parallel theme, images are displayed on the right + * Multiline comments + * Allow images to be removed from the link menu for templates + * New layout: sidebyside + +#### Refactors: + + * Code refactored into smaller chunks + * Unit testing framework added and unit tests written to %85 coverage (more work needed here) + * 'npm build' builds all javascript with gulp + * 'npm test' runs all unit tests + * travis ci build and badge + +#### Breaking Changes: + + * .jst template files have a different set of data available for building links to other files. + The question here is are there other templates that have been created and should a backward compatibility flag be added to proved the old behaviour? + +This: + + `<a class="source" href="<%= path.basename(destination(source)) %>">` + +Can be changed to whatever is needed since links to all other files as well as other options are available: + +``` + <% for (var i=0, l = links.length; i < l; i++) { %> + <li> + <a class="source" href="<%= links[i].link %>"> + <% if (flatten) %> + <%= path.basename(links[i].file) %> + <% else %> + <%= links[i].file %> + </a> + </li> + <% } %> +``` + + * hierarchical directory structure of source is kept by default. + Use --flatten to get the old behaviour + Should this flag be changed to something else with a default behaviour being flatten? + +### TODO: + + * Links to files that are included or required + * publish to github + * index.html documentation update + * All built javascript is ignored in .gitignore (npm packaging is the problem here). diff --git a/docco.js b/docco.js old mode 100644 new mode 100755 index 68c94f17..470cea18 --- a/docco.js +++ b/docco.js @@ -1,267 +1,92 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var Docco, _, buildMatchers, commander, configure, defaults, document, format, fs, getLanguage, highlightjs, languages, marked, parse, path, run, version, write, - slice = [].slice; +var Docco, _, commander, configure, defaults, document, format, fs, getInformationOnFiles, glob, highlightjs, languages, marked, parse, path, run, version; - document = function(options, callback) { - var config; - if (options == null) { - options = {}; - } - config = configure(options); - return fs.mkdirs(config.output, function() { - var complete, copyAsset, files, nextFile; - callback || (callback = function(error) { - if (error) { - throw error; - } - }); - copyAsset = function(file, callback) { - if (!fs.existsSync(file)) { - return callback(); - } - return fs.copy(file, path.join(config.output, path.basename(file)), callback); - }; - complete = function() { - return copyAsset(config.css, function(error) { - if (error) { - return callback(error); - } - if (fs.existsSync(config["public"])) { - return copyAsset(config["public"], callback); - } - return callback(); - }); - }; - files = config.sources.slice(); - nextFile = function() { - var source; - source = files.shift(); - return fs.readFile(source, function(error, buffer) { - var code, sections; - if (error) { - return callback(error); - } - code = buffer.toString(); - sections = parse(source, code, config); - format(source, sections, config); - write(source, sections, config); - if (files.length) { - return nextFile(); - } else { - return complete(); - } - }); - }; - return nextFile(); - }); - }; +document = require('./src/document'); - parse = function(source, code, config) { - var codeText, docsText, hasCode, i, isText, j, k, lang, len, len1, line, lines, match, maybeCode, save, sections; - if (config == null) { - config = {}; - } - lines = code.split('\n'); - sections = []; - lang = getLanguage(source, config); - hasCode = docsText = codeText = ''; - save = function() { - sections.push({ - docsText: docsText, - codeText: codeText - }); - return hasCode = docsText = codeText = ''; - }; - if (lang.literate) { - isText = maybeCode = true; - for (i = j = 0, len = lines.length; j < len; i = ++j) { - line = lines[i]; - lines[i] = maybeCode && (match = /^([ ]{4}|[ ]{0,3}\t)/.exec(line)) ? (isText = false, line.slice(match[0].length)) : (maybeCode = /^\s*$/.test(line)) ? isText ? lang.symbol : '' : (isText = true, lang.symbol + ' ' + line); - } - } - for (k = 0, len1 = lines.length; k < len1; k++) { - line = lines[k]; - if (line.match(lang.commentMatcher) && !line.match(lang.commentFilter)) { - if (hasCode) { - save(); - } - docsText += (line = line.replace(lang.commentMatcher, '')) + '\n'; - if (/^(---+|===+)$/.test(line)) { - save(); - } - } else { - hasCode = true; - codeText += line + '\n'; - } - } - save(); - return sections; - }; +parse = require('./src/parse'); - format = function(source, sections, config) { - var code, i, j, language, len, markedOptions, results, section; - language = getLanguage(source, config); - markedOptions = { - smartypants: true - }; - if (config.marked) { - markedOptions = config.marked; - } - marked.setOptions(markedOptions); - marked.setOptions({ - highlight: function(code, lang) { - lang || (lang = language.name); - if (highlightjs.getLanguage(lang)) { - return highlightjs.highlight(lang, code).value; - } else { - console.warn("docco: couldn't highlight code block with unknown language '" + lang + "' in " + source); - return code; - } - } - }); - results = []; - for (i = j = 0, len = sections.length; j < len; i = ++j) { - section = sections[i]; - code = highlightjs.highlight(language.name, section.codeText).value; - code = code.replace(/\s+$/, ''); - section.codeHtml = "<div class='highlight'><pre>" + code + "</pre></div>"; - results.push(section.docsHtml = marked(section.docsText)); - } - return results; - }; +format = require('./src/format'); - write = function(source, sections, config) { - var destination, first, firstSection, hasTitle, html, title; - destination = function(file) { - return path.join(config.output, path.basename(file, path.extname(file)) + '.html'); - }; - firstSection = _.find(sections, function(section) { - return section.docsText.length > 0; - }); - if (firstSection) { - first = marked.lexer(firstSection.docsText)[0]; - } - hasTitle = first && first.type === 'heading' && first.depth === 1; - title = hasTitle ? first.text : path.basename(source); - html = config.template({ - sources: config.sources, - css: path.basename(config.css), - title: title, - hasTitle: hasTitle, - sections: sections, - path: path, - destination: destination - }); - console.log("docco: " + source + " -> " + (destination(source))); - return fs.writeFileSync(destination(source), html); - }; +configure = require('./src/configure'); - defaults = { - layout: 'parallel', - output: 'docs', - template: null, - css: null, - extension: null, - languages: {}, - marked: null - }; +getInformationOnFiles = require('./src/getInformationOnFiles'); - configure = function(options) { - var config, dir; - config = _.extend({}, defaults, _.pick.apply(_, [options].concat(slice.call(_.keys(defaults))))); - config.languages = buildMatchers(config.languages); - if (options.template) { - if (!options.css) { - console.warn("docco: no stylesheet file specified"); - } - config.layout = null; - } else { - dir = config.layout = path.join(__dirname, 'resources', config.layout); - if (fs.existsSync(path.join(dir, 'public'))) { - config["public"] = path.join(dir, 'public'); - } - config.template = path.join(dir, 'docco.jst'); - config.css = options.css || path.join(dir, 'docco.css'); - } - config.template = _.template(fs.readFileSync(config.template).toString()); - if (options.marked) { - config.marked = JSON.parse(fs.readFileSync(options.marked)); - } - config.sources = options.args.filter(function(source) { - var lang; - lang = getLanguage(source, config); - if (!lang) { - console.warn("docco: skipped unknown type (" + (path.basename(source)) + ")"); - } - return lang; - }).sort(); - return config; - }; +_ = require('underscore'); - _ = require('underscore'); +fs = require('fs-extra'); - fs = require('fs-extra'); +path = require('path'); - path = require('path'); +marked = require('marked'); - marked = require('marked'); +commander = require('commander'); - commander = require('commander'); +highlightjs = require('highlight.js'); - highlightjs = require('highlight.js'); +path = require('path'); - languages = JSON.parse(fs.readFileSync(path.join(__dirname, 'resources', 'languages.json'))); +glob = require('glob'); - buildMatchers = function(languages) { - var ext, l; - for (ext in languages) { - l = languages[ext]; - l.commentMatcher = RegExp("^\\s*" + l.symbol + "\\s?"); - l.commentFilter = /(^#![\/]|^\s*#\{)/; - } - return languages; - }; +languages = JSON.parse(fs.readFileSync(path.join(__dirname, 'resources', 'languages.json'))); - languages = buildMatchers(languages); +version = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'))).version; - getLanguage = function(source, config) { - var codeExt, codeLang, ext, lang, ref; - ext = config.extension || path.extname(source) || path.basename(source); - lang = ((ref = config.languages) != null ? ref[ext] : void 0) || languages[ext]; - if (lang && lang.name === 'markdown') { - codeExt = path.extname(path.basename(source, ext)); - if (codeExt && (codeLang = languages[codeExt])) { - lang = _.extend({}, codeLang, { - literate: true - }); - } - } - return lang; - }; +defaults = { + layout: 'sidebyside', + output: 'docs', + template: null, + css: null, + extension: null, + languages: {}, + marked: null, + setup: '.docco.json', + help: false, + flatten: false +}; - version = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'))).version; - - run = function(args) { - var c; - if (args == null) { - args = process.argv; +run = function(args) { + var config, file, files, globName, i, j, len, len1, ref, setup; + if (args == null) { + args = process.argv; + } + config = defaults; + commander.version(version).usage('[options] [file]').option('-c, --css [file]', 'use a custom css file', config.css).option('-e, --extension [ext]', 'assume a file extension for all inputs', config.extension).option('-f, --flatten', 'flatten the directory hierarchy', config.flatten).option('-g, --languages [file]', 'use a custom languages.json', _.compose(JSON.parse, fs.readFileSync)).option('-l, --layout [name]', 'choose a layout (parallel, linear or classic)', config.layout).option('-m, --marked [file]', 'use custom marked options', config.marked).option('-o, --output [path]', 'output to a given folder', config.output).option('-s, --setup [file]', 'use configuration file, normally docco.json', '.docco.json').option('-t, --template [file]', 'use a custom .jst template', config.template).parse(args).name = "docco"; + config = configure(commander, defaults, languages); + setup = path.resolve(config.setup); + if (fs.existsSync(setup)) { + if (setup) { + config = _.extend(config, JSON.parse(fs.readFileSync(setup))); } - c = defaults; - commander.version(version).usage('[options] files').option('-L, --languages [file]', 'use a custom languages.json', _.compose(JSON.parse, fs.readFileSync)).option('-l, --layout [name]', 'choose a layout (parallel, linear or classic)', c.layout).option('-o, --output [path]', 'output to a given folder', c.output).option('-c, --css [file]', 'use a custom css file', c.css).option('-t, --template [file]', 'use a custom .jst template', c.template).option('-e, --extension [ext]', 'assume a file extension for all inputs', c.extension).option('-m, --marked [file]', 'use custom marked options', c.marked).parse(args).name = "docco"; - if (commander.args.length) { - return document(commander); - } else { - return console.log(commander.helpInformation()); + } + config.root = process.cwd(); + if (config.sources.length !== 0) { + files = []; + ref = config.sources; + for (i = 0, len = ref.length; i < len; i++) { + globName = ref[i]; + files = _.flatten(_.union(files, glob.sync(path.resolve(config.root, globName)))); + if (files.length === 0) { + files.push(globName); + } } - }; - - Docco = module.exports = { - run: run, - document: document, - parse: parse, - format: format, - version: version - }; - -}).call(this); + config.sources = []; + for (j = 0, len1 = files.length; j < len1; j++) { + file = files[j]; + config.sources.push(path.relative(config.root, file)); + } + config.informationOnFiles = getInformationOnFiles(config); + document(config); + } else { + console.log(commander.helpInformation()); + } +}; + +module.exports = Docco = { + run: run, + document: document, + parse: parse, + format: format, + languages: languages, + version: version +}; + +//# sourceMappingURL=docco.js.map diff --git a/docco.js.map b/docco.js.map new file mode 100644 index 00000000..4f7ed1cc --- /dev/null +++ b/docco.js.map @@ -0,0 +1 @@ +{"version":3,"file":"docco.js","sources":["docco.litcoffee"],"names":[],"mappings":"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","sourcesContent":["Docco\n=====\n\n**Docco** is a quick-and-dirty documentation generator, written in\n[Literate CoffeeScript](http://coffeescript.org/#literate).\nIt produces an HTML document that displays your comments intermingled with your\ncode. All prose is passed through\n[Markdown](http://daringfireball.net/projects/markdown/syntax), and code is\npassed through [Highlight.js](http://highlightjs.org/) syntax highlighting.\nThis page is the result of running Docco against its own\n[source file](https://github.com/jashkenas/docco/blob/master/docco.litcoffee).\n\n1. Install Docco with **npm**: `sudo npm install -g docco`\n\n2. Run it against your code: `docco src/*.coffee`\n\nThere is no \"Step 3\". This will generate an HTML page for each of the named\nsource files, with a menu linking to the other pages, saving the whole mess\ninto a `docs` folder (configurable).\n\nThe [Docco source](http://github.com/jashkenas/docco) is available on GitHub,\nand is released under the [MIT license](http://opensource.org/licenses/MIT).\n\nDocco can be used to process code written in any programming language. If it\ndoesn't handle your favorite yet, feel free to\n[add it to the list](https://github.com/jashkenas/docco/blob/master/resources/languages.json).\nFinally, the [\"literate\" style](http://coffeescript.org/#literate) of *any*\nlanguage is also supported — just tack an `.md` extension on the end:\n`.coffee.md`, `.py.md`, and so on.\n\n\nPartners in Crime:\n------------------\n\n* If Node.js doesn't run on your platform, or you'd prefer a more\nconvenient package, get [Ryan Tomayko](http://github.com/rtomayko)'s\n[Rocco](http://rtomayko.github.io/rocco/rocco.html), the **Ruby** port that's\navailable as a gem.\n\n* If you're writing shell scripts, try\n[Shocco](http://rtomayko.github.io/shocco/), a port for the **POSIX shell**,\nalso by Mr. Tomayko.\n\n* If **Python** is more your speed, take a look at\n[Nick Fitzgerald](http://github.com/fitzgen)'s [Pycco](https://pycco-docs.github.io/pycco/).\n\n* For **Clojure** fans, [Fogus](http://blog.fogus.me/)'s\n[Marginalia](http://fogus.me/fun/marginalia/) is a bit of a departure from\n\"quick-and-dirty\", but it'll get the job done.\n\n* There's a **Go** port called [Gocco](http://nikhilm.github.io/gocco/),\nwritten by [Nikhil Marathe](https://github.com/nikhilm).\n\n* For all you **PHP** buffs out there, Fredi Bach's\n[sourceMakeup](http://jquery-jkit.com/sourcemakeup/) (we'll let the faux pas\nwith respect to our naming scheme slide), should do the trick nicely.\n\n* **Lua** enthusiasts can get their fix with\n[Robert Gieseke](https://github.com/rgieseke)'s [Locco](http://rgieseke.github.io/locco/).\n\n* And if you happen to be a **.NET**\naficionado, check out [Don Wilson](https://github.com/dontangg)'s\n[Nocco](http://dontangg.github.io/nocco/).\n\n* Going further afield from the quick-and-dirty, [Groc](http://nevir.github.io/groc/)\nis a **CoffeeScript** fork of Docco that adds a searchable table of contents,\nand aims to gracefully handle large projects with complex hierarchies of code.\n\nNote that not all ports will support all Docco features ... yet.\n\n\nMain Documentation Generation Functions\n---------------------------------------\n\nGenerate the documentation for our configured source file by copying over static\nassets, reading all the source files in, splitting them up into prose+code\nsections, highlighting each file in the appropriate language, and printing them\nout in an HTML template.\n\n document = require './src/document'\n\nGiven a string of source code, **parse** out each block of prose and the code that\nfollows it — by detecting which is which, line by line — and then create an\nindividual **section** for it. Each section is an object with `docsText` and\n`codeText` properties, and eventually `docsHtml` and `codeHtml` as well.\n\n parse = require './src/parse'\n\nTo **format** and highlight the now-parsed sections of code, we use **Highlight.js**\nover stdio, and run the text of their corresponding comments through\n**Markdown**, using [Marked](https://github.com/chjj/marked).\n\n format = require './src/format'\n\nConfiguration\n-------------\n\n**Configure** this particular run of Docco. We might use a passed-in external\ntemplate, or one of the built-in **layouts**. We only attempt to process\nsource files for languages for which we have definitions.\n\n configure = require './src/configure'\n\n getInformationOnFiles = require './src/getInformationOnFiles'\n\nHelpers & Initial Setup\n-----------------------\n\nRequire our external dependencies.\n\n _ = require 'underscore'\n fs = require 'fs-extra'\n path = require 'path'\n marked = require 'marked'\n commander = require 'commander'\n highlightjs = require 'highlight.js'\n path = require 'path'\n glob = require 'glob'\n\nLanguages are stored in JSON in the file `resources/languages.json`.\nEach item maps the file extension to the name of the language and the\n`symbol` that indicates a line comment. To add support for a new programming\nlanguage to Docco, just add it to the file.\n\n languages = JSON.parse fs.readFileSync(path.join(__dirname, 'resources', 'languages.json'))\n\nKeep it DRY. Extract the docco **version** from `package.json`\n\n version = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'))).version\n\nDefault configuration **options**. All of these may be extended by\nuser-specified options.\n\n defaults =\n layout: 'sidebyside'\n output: 'docs'\n template: null\n css: null\n extension: null\n languages: {}\n marked: null\n setup: '.docco.json'\n help: false\n flatten: false\n\nCommand Line Interface\n----------------------\n\nFinally, let's define the interface to run Docco from the command line.\nParse options using [Commander](https://github.com/visionmedia/commander.js).\n\n run = (args = process.argv) ->\n config = defaults\n\n commander.version(version)\n .usage('[options] [file]')\n .option('-c, --css [file]', 'use a custom css file', config.css)\n .option('-e, --extension [ext]', 'assume a file extension for all inputs', config.extension)\n .option('-f, --flatten', 'flatten the directory hierarchy', config.flatten)\n .option('-g, --languages [file]', 'use a custom languages.json', _.compose JSON.parse, fs.readFileSync)\n .option('-l, --layout [name]', 'choose a layout (parallel, linear or classic)', config.layout)\n .option('-m, --marked [file]', 'use custom marked options', config.marked)\n .option('-o, --output [path]', 'output to a given folder', config.output)\n .option('-s, --setup [file]', 'use configuration file, normally docco.json', '.docco.json')\n .option('-t, --template [file]', 'use a custom .jst template', config.template)\n .parse(args)\n .name = \"docco\"\n\n config = configure commander, defaults, languages\n\n setup = path.resolve config.setup\n if fs.existsSync(setup)\n config = _.extend(config, JSON.parse fs.readFileSync setup) if setup\n\n config.root = process.cwd()\n if config.sources.length isnt 0\n files =[]\n for globName in config.sources\n files = _.flatten _.union files, glob.sync path.resolve config.root, globName\n if files.length is 0\n files.push(globName) # not a glob.\n\n config.sources = []\n for file in files\n config.sources.push path.relative(config.root, file)\n\n config.informationOnFiles = getInformationOnFiles config\n\n document config\n else\n console.log commander.helpInformation()\n return\n\nPublic API\n----------\n\n module.exports = Docco = {run, document, parse, format, languages, version}\n"]} \ No newline at end of file diff --git a/docco.litcoffee b/docco.litcoffee old mode 100644 new mode 100755 index cb0a291e..e665226a --- a/docco.litcoffee +++ b/docco.litcoffee @@ -77,193 +77,31 @@ assets, reading all the source files in, splitting them up into prose+code sections, highlighting each file in the appropriate language, and printing them out in an HTML template. - document = (options = {}, callback) -> - config = configure options - - fs.mkdirs config.output, -> - - callback or= (error) -> throw error if error - copyAsset = (file, callback) -> - return callback() unless fs.existsSync file - fs.copy file, path.join(config.output, path.basename(file)), callback - complete = -> - copyAsset config.css, (error) -> - return callback error if error - return copyAsset config.public, callback if fs.existsSync config.public - callback() - - files = config.sources.slice() - - nextFile = -> - source = files.shift() - fs.readFile source, (error, buffer) -> - return callback error if error - - code = buffer.toString() - sections = parse source, code, config - format source, sections, config - write source, sections, config - if files.length then nextFile() else complete() - - nextFile() + document = require './src/document' Given a string of source code, **parse** out each block of prose and the code that follows it — by detecting which is which, line by line — and then create an individual **section** for it. Each section is an object with `docsText` and `codeText` properties, and eventually `docsHtml` and `codeHtml` as well. - parse = (source, code, config = {}) -> - lines = code.split '\n' - sections = [] - lang = getLanguage source, config - hasCode = docsText = codeText = '' - - save = -> - sections.push {docsText, codeText} - hasCode = docsText = codeText = '' - -Our quick-and-dirty implementation of the literate programming style. Simply -invert the prose and code relationship on a per-line basis, and then continue as -normal below. - - if lang.literate - isText = maybeCode = yes - for line, i in lines - lines[i] = if maybeCode and match = /^([ ]{4}|[ ]{0,3}\t)/.exec line - isText = no - line[match[0].length..] - else if maybeCode = /^\s*$/.test line - if isText then lang.symbol else '' - else - isText = yes - lang.symbol + ' ' + line - - for line in lines - if line.match(lang.commentMatcher) and not line.match(lang.commentFilter) - save() if hasCode - docsText += (line = line.replace(lang.commentMatcher, '')) + '\n' - save() if /^(---+|===+)$/.test line - else - hasCode = yes - codeText += line + '\n' - save() - - sections + parse = require './src/parse' To **format** and highlight the now-parsed sections of code, we use **Highlight.js** over stdio, and run the text of their corresponding comments through **Markdown**, using [Marked](https://github.com/chjj/marked). - format = (source, sections, config) -> - language = getLanguage source, config - -Pass any user defined options to Marked if specified via command line option - - markedOptions = - smartypants: true - - if config.marked - markedOptions = config.marked - - marked.setOptions markedOptions - -Tell Marked how to highlight code blocks within comments, treating that code -as either the language specified in the code block or the language of the file -if not specified. - - marked.setOptions { - highlight: (code, lang) -> - lang or= language.name - - if highlightjs.getLanguage(lang) - highlightjs.highlight(lang, code).value - else - console.warn "docco: couldn't highlight code block with unknown language '#{lang}' in #{source}" - code - } - - for section, i in sections - code = highlightjs.highlight(language.name, section.codeText).value - code = code.replace(/\s+$/, '') - section.codeHtml = "<div class='highlight'><pre>#{code}</pre></div>" - section.docsHtml = marked(section.docsText) - -Once all of the code has finished highlighting, we can **write** the resulting -documentation file by passing the completed HTML sections into the template, -and rendering it to the specified output path. - - write = (source, sections, config) -> - - destination = (file) -> - path.join(config.output, path.basename(file, path.extname(file)) + '.html') - -The **title** of the file is either the first heading in the prose, or the -name of the source file. - - firstSection = _.find sections, (section) -> - section.docsText.length > 0 - first = marked.lexer(firstSection.docsText)[0] if firstSection - hasTitle = first and first.type is 'heading' and first.depth is 1 - title = if hasTitle then first.text else path.basename source - - html = config.template {sources: config.sources, css: path.basename(config.css), - title, hasTitle, sections, path, destination,} - - console.log "docco: #{source} -> #{destination source}" - fs.writeFileSync destination(source), html - + format = require './src/format' Configuration ------------- -Default configuration **options**. All of these may be extended by -user-specified options. - - defaults = - layout: 'parallel' - output: 'docs' - template: null - css: null - extension: null - languages: {} - marked: null - **Configure** this particular run of Docco. We might use a passed-in external template, or one of the built-in **layouts**. We only attempt to process source files for languages for which we have definitions. - configure = (options) -> - config = _.extend {}, defaults, _.pick(options, _.keys(defaults)...) - - config.languages = buildMatchers config.languages - -The user is able to override the layout file used with the `--template` parameter. -In this case, it is also neccessary to explicitly specify a stylesheet file. -These custom templates are compiled exactly like the predefined ones, but the `public` folder -is only copied for the latter. - - if options.template - unless options.css - console.warn "docco: no stylesheet file specified" - config.layout = null - else - dir = config.layout = path.join __dirname, 'resources', config.layout - config.public = path.join dir, 'public' if fs.existsSync path.join dir, 'public' - config.template = path.join dir, 'docco.jst' - config.css = options.css or path.join dir, 'docco.css' - config.template = _.template fs.readFileSync(config.template).toString() - - if options.marked - config.marked = JSON.parse fs.readFileSync(options.marked) - - config.sources = options.args.filter((source) -> - lang = getLanguage source, config - console.warn "docco: skipped unknown type (#{path.basename source})" unless lang - lang - ).sort() - - config + configure = require './src/configure' + getInformationOnFiles = require './src/getInformationOnFiles' Helpers & Initial Setup ----------------------- @@ -276,6 +114,8 @@ Require our external dependencies. marked = require 'marked' commander = require 'commander' highlightjs = require 'highlight.js' + path = require 'path' + glob = require 'glob' Languages are stored in JSON in the file `resources/languages.json`. Each item maps the file extension to the name of the language and the @@ -284,37 +124,24 @@ language to Docco, just add it to the file. languages = JSON.parse fs.readFileSync(path.join(__dirname, 'resources', 'languages.json')) -Build out the appropriate matchers and delimiters for each language. - - buildMatchers = (languages) -> - for ext, l of languages - -Does the line begin with a comment? - - l.commentMatcher = ///^\s*#{l.symbol}\s?/// - -Ignore [hashbangs](http://en.wikipedia.org/wiki/Shebang_%28Unix%29) and interpolations... - - l.commentFilter = /(^#![/]|^\s*#\{)/ - languages - languages = buildMatchers languages - -A function to get the current language we're documenting, based on the -file extension. Detect and tag "literate" `.ext.md` variants. - - getLanguage = (source, config) -> - ext = config.extension or path.extname(source) or path.basename(source) - lang = config.languages?[ext] or languages[ext] - if lang and lang.name is 'markdown' - codeExt = path.extname(path.basename(source, ext)) - if codeExt and codeLang = languages[codeExt] - lang = _.extend {}, codeLang, {literate: yes} - lang - Keep it DRY. Extract the docco **version** from `package.json` version = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'))).version +Default configuration **options**. All of these may be extended by +user-specified options. + + defaults = + layout: 'sidebyside' + output: 'docs' + template: null + css: null + extension: null + languages: {} + marked: null + setup: '.docco.json' + help: false + flatten: false Command Line Interface ---------------------- @@ -323,25 +150,48 @@ Finally, let's define the interface to run Docco from the command line. Parse options using [Commander](https://github.com/visionmedia/commander.js). run = (args = process.argv) -> - c = defaults + config = defaults + commander.version(version) - .usage('[options] files') - .option('-L, --languages [file]', 'use a custom languages.json', _.compose JSON.parse, fs.readFileSync) - .option('-l, --layout [name]', 'choose a layout (parallel, linear or classic)', c.layout) - .option('-o, --output [path]', 'output to a given folder', c.output) - .option('-c, --css [file]', 'use a custom css file', c.css) - .option('-t, --template [file]', 'use a custom .jst template', c.template) - .option('-e, --extension [ext]', 'assume a file extension for all inputs', c.extension) - .option('-m, --marked [file]', 'use custom marked options', c.marked) + .usage('[options] [file]') + .option('-c, --css [file]', 'use a custom css file', config.css) + .option('-e, --extension [ext]', 'assume a file extension for all inputs', config.extension) + .option('-f, --flatten', 'flatten the directory hierarchy', config.flatten) + .option('-g, --languages [file]', 'use a custom languages.json', _.compose JSON.parse, fs.readFileSync) + .option('-l, --layout [name]', 'choose a layout (parallel, linear or classic)', config.layout) + .option('-m, --marked [file]', 'use custom marked options', config.marked) + .option('-o, --output [path]', 'output to a given folder', config.output) + .option('-s, --setup [file]', 'use configuration file, normally docco.json', '.docco.json') + .option('-t, --template [file]', 'use a custom .jst template', config.template) .parse(args) .name = "docco" - if commander.args.length - document commander + + config = configure commander, defaults, languages + + setup = path.resolve config.setup + if fs.existsSync(setup) + config = _.extend(config, JSON.parse fs.readFileSync setup) if setup + + config.root = process.cwd() + if config.sources.length isnt 0 + files =[] + for globName in config.sources + files = _.flatten _.union files, glob.sync path.resolve config.root, globName + if files.length is 0 + files.push(globName) # not a glob. + + config.sources = [] + for file in files + config.sources.push path.relative(config.root, file) + + config.informationOnFiles = getInformationOnFiles config + + document config else console.log commander.helpInformation() - + return Public API ---------- - Docco = module.exports = {run, document, parse, format, version} + module.exports = Docco = {run, document, parse, format, languages, version} diff --git a/gulpfile.coffee b/gulpfile.coffee new file mode 100755 index 00000000..7f211d83 --- /dev/null +++ b/gulpfile.coffee @@ -0,0 +1,47 @@ +# Gulp stuff. +gulp = require('gulp') +clean = require('gulp-clean') +gutil = require('gulp-util') +coffee = require('gulp-coffee') +sourcemaps = require('gulp-sourcemaps') +touch = require('touch') +path = require('path') +tap = require('gulp-tap') +parallelize = require("concurrent-transform") + +threads = 100 + +coffeeFiles = ['docco.litcoffee', 'src/**/*.litcoffee', 'test/unit-tests/**/*.litcoffee'] + +javascriptFiles = ['docco.js', 'docco.js.map', 'src/**/*.js', 'src/**/*.js.map', 'test/unit-tests/**/*.js', 'test/unit-tests/**/*.js.map'] + +gulp.task('touch', () -> + gulp.src(coffeeFiles) + .pipe(tap((file, t) -> + touch(file.path) + ) + ) +) + +gulp.task('coffeescripts', () -> + gulp.src(coffeeFiles) + .pipe(sourcemaps.init()) + .pipe(parallelize(coffee({bare: true}).on('error', gutil.log), threads)) + .pipe(parallelize(sourcemaps.write('./'), threads)) + .pipe(parallelize(gulp.dest((file) -> return file.base), threads)) +) + +gulp.task('watch', () -> + gulp.watch(coffeeFiles, ['compile-and-test']) +) + +gulp.task('clean', () -> + return gulp.src(javascriptFiles, {read: false}) + .pipe(clean()) +) + +gulp.task('build', ['coffeescripts']) # ,'jadescripts','stylusscripts']) + +gulp.task('default', ['watch', 'coffeescripts']) + +gulp.task('done', (() -> )) \ No newline at end of file diff --git a/index.html b/index.html old mode 100644 new mode 100755 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..ed7313c9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5194 @@ +{ + "name": "docco", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@gulp-sourcemaps/identity-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz", + "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==", + "dev": true, + "requires": { + "acorn": "^5.0.3", + "css": "^2.2.1", + "normalize-path": "^2.1.1", + "source-map": "^0.6.0", + "through2": "^2.0.3" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "dev": true, + "requires": { + "normalize-path": "^2.0.1", + "through2": "^2.0.3" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", + "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "optional": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "dev": true, + "requires": { + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^3.0.0", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "optional": true + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "commander": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", + "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concurrent-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/concurrent-transform/-/concurrent-transform-1.0.0.tgz", + "integrity": "sha1-eg/eovgJYjlIf9sK3bXtqn9Zb2w=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "css": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.3.tgz", + "integrity": "sha512-0W171WccAjQGGTKLhw4m2nnl0zPHUlTO/I8td4XzJgIB8Hg3ZZx71qT4G4eX8OVsSiaAKiUMy73E3nsbPlg2DQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "source-map": "^0.1.38", + "source-map-resolve": "^0.5.1", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", + "dev": true, + "requires": { + "debug": "3.X", + "memoizee": "0.4.X", + "object-assign": "4.X" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + } + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true, + "requires": { + "once": "~1.3.0" + }, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1" + } + } + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.45", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", + "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flagged-respawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", + "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true, + "requires": { + "globule": "~0.1.0" + } + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "requires": { + "glob": "^4.3.1", + "glob2base": "^0.0.12", + "minimatch": "^2.0.1", + "ordered-read-streams": "^0.1.0", + "through2": "^0.6.1", + "unique-stream": "^1.0.0" + }, + "dependencies": { + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true, + "requires": { + "gaze": "^0.5.1" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "^0.1.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "requires": { + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" + }, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "requires": { + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "requires": { + "archy": "^1.0.0", + "chalk": "^1.0.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^1.0.0", + "liftoff": "^2.1.0", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^1.0.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "gulp-clean": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/gulp-clean/-/gulp-clean-0.3.2.tgz", + "integrity": "sha1-o0fUc6zqQBgvk1WHpFGUFnGSgQI=", + "dev": true, + "requires": { + "gulp-util": "^2.2.14", + "rimraf": "^2.2.8", + "through2": "^0.4.2" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "gulp-util": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", + "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", + "dev": true, + "requires": { + "chalk": "^0.5.0", + "dateformat": "^1.0.7-1.2.3", + "lodash._reinterpolate": "^2.4.1", + "lodash.template": "^2.4.1", + "minimist": "^0.2.0", + "multipipe": "^0.1.0", + "through2": "^0.5.0", + "vinyl": "^0.2.1" + }, + "dependencies": { + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" + } + } + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "lodash._reinterpolate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", + "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=", + "dev": true + }, + "lodash.escape": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", + "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", + "dev": true, + "requires": { + "lodash._escapehtmlchar": "~2.4.1", + "lodash._reunescapedhtml": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.template": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", + "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", + "dev": true, + "requires": { + "lodash._escapestringchar": "~2.4.1", + "lodash._reinterpolate": "~2.4.1", + "lodash.defaults": "~2.4.1", + "lodash.escape": "~2.4.1", + "lodash.keys": "~2.4.1", + "lodash.templatesettings": "~2.4.1", + "lodash.values": "~2.4.1" + } + }, + "lodash.templatesettings": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", + "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~2.4.1", + "lodash.escape": "~2.4.1" + } + }, + "minimist": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", + "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + }, + "dependencies": { + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "vinyl": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", + "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", + "dev": true, + "requires": { + "clone-stats": "~0.0.1" + } + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "gulp-coffee": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/gulp-coffee/-/gulp-coffee-2.3.5.tgz", + "integrity": "sha512-PbgPGZVyYFnBTYtfYkVN6jcK8Qsuh3BxycPzvu8y5lZroCw3/x1m25KeyEDX110KsVLDmJxoULjscR21VEN4wA==", + "dev": true, + "requires": { + "coffeescript": "^1.10.0", + "gulp-util": "^3.0.2", + "merge": "^1.2.0", + "through2": "^2.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" + } + }, + "gulp-sourcemaps": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.4.tgz", + "integrity": "sha1-y7IAhFCxvM5s0jv5gze+dRv24wo=", + "dev": true, + "requires": { + "@gulp-sourcemaps/identity-map": "1.X", + "@gulp-sourcemaps/map-sources": "1.X", + "acorn": "5.X", + "convert-source-map": "1.X", + "css": "2.X", + "debug-fabulous": "1.X", + "detect-newline": "2.X", + "graceful-fs": "4.X", + "source-map": "~0.6.0", + "strip-bom-string": "1.X", + "through2": "2.X" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "gulp-tap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gulp-tap/-/gulp-tap-1.0.1.tgz", + "integrity": "sha1-5nESThJZtM6iGe0cqXt/WFwzRpA=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jenkins-mocha": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/jenkins-mocha/-/jenkins-mocha-4.1.2.tgz", + "integrity": "sha1-3b3rQEpnt8Vuwz9i2/RjD6GxhUQ=", + "dev": true, + "requires": { + "mocha": "^3.0.0", + "npm-which": "^3.0.0", + "nyc": "^10.0.0", + "shell-escape": "^0.2.0", + "shelljs": "^0.7.5", + "spec-xunit-file": "0.0.1-3" + } + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "optional": true + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._escapehtmlchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", + "integrity": "sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0=", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1" + } + }, + "lodash._escapestringchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz", + "integrity": "sha1-7P4iYYoq3lC/7qQ5N+Ud9m8O23I=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._htmlescapes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", + "integrity": "sha1-MtFL8IRLbeb4tioFG09nwii2JMs=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=", + "dev": true + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._reunescapedhtml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", + "integrity": "sha1-dHxPxAED6zu4oJduVx96JlnpO6c=", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.defaults": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", + "integrity": "sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "lodash.values": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", + "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=", + "dev": true, + "requires": { + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "requires": { + "es5-ext": "~0.10.2" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "marked": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz", + "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==" + }, + "memoizee": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.12.tgz", + "integrity": "sha512-sprBu6nwxBWBvBOh5v2jcsGqiGLlL2xr2dLub3vR8dnE8YB17omwtm/0NSHl8jjNbcsJd5GMWJAnTSVe/O0Wfg==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.30", + "es6-weak-map": "^2.0.2", + "event-emitter": "^0.3.5", + "is-promise": "^2.1", + "lru-queue": "0.1", + "next-tick": "1", + "timers-ext": "^0.1.2" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + } + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "mockery": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "natives": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz", + "integrity": "sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "requires": { + "which": "^1.2.10" + } + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true, + "requires": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nyc": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-10.3.2.tgz", + "integrity": "sha1-8n9NkfKp2zbCT1dP9cbv/wIz3kY=", + "dev": true, + "requires": { + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.3.0", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^1.1.2", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.1.0", + "istanbul-lib-hook": "^1.0.6", + "istanbul-lib-instrument": "^1.7.1", + "istanbul-lib-report": "^1.1.0", + "istanbul-lib-source-maps": "^1.2.0", + "istanbul-reports": "^1.1.0", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.0.2", + "micromatch": "^2.3.11", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.5.4", + "signal-exit": "^3.0.1", + "spawn-wrap": "1.2.4", + "test-exclude": "^4.1.0", + "yargs": "^7.1.0", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "bundled": true, + "dev": true, + "requires": { + "chalk": "^1.1.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "babel-generator": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-runtime": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.10.0" + } + }, + "babel-template": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1", + "babylon": "^6.11.0", + "lodash": "^4.2.0" + } + }, + "babel-traverse": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1", + "babylon": "^6.15.0", + "debug": "^2.2.0", + "globals": "^9.0.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" + } + }, + "babel-types": { + "version": "6.24.1", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^1.0.1" + } + }, + "babylon": { + "version": "6.17.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^0.4.1", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "bundled": true, + "dev": true + }, + "core-js": { + "version": "2.4.1", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "2.6.6", + "bundled": true, + "dev": true, + "requires": { + "ms": "0.7.3" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.1", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "globals": { + "version": "9.17.0", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.8", + "bundled": true, + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-dotfile": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.7.1", + "bundled": true, + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.13.0", + "istanbul-lib-coverage": "^1.1.0", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.1.0", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "debug": "^2.6.3", + "istanbul-lib-coverage": "^1.1.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + } + }, + "istanbul-reports": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "js-tokens": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true, + "dev": true + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "js-tokens": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "merge-source-map": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "source-map": "^0.5.3" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "0.7.3", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.3.8", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + }, + "preserve": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "randomatic": { + "version": "1.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^2.0.2", + "kind-of": "^3.0.2" + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.10.5", + "bundled": true, + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3", + "is-primitive": "^2.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "source-map": { + "version": "0.5.6", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "^1.3.3", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.3.3", + "signal-exit": "^2.0.0", + "which": "^1.2.4" + }, + "dependencies": { + "signal-exit": { + "version": "2.1.2", + "bundled": true, + "dev": true + } + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "spdx-license-ids": "^1.0.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "uglify-js": { + "version": "2.8.22", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "which": { + "version": "1.2.14", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "7.1.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "requires": { + "end-of-stream": "~0.1.5", + "sequencify": "~0.0.7", + "stream-consume": "~0.1.0" + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shell-escape": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz", + "integrity": "sha1-aP0CXrBJC09WegJ/C/IkgLX4QTM=", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "spec-xunit-file": { + "version": "0.0.1-3", + "resolved": "https://registry.npmjs.org/spec-xunit-file/-/spec-xunit-file-0.0.1-3.tgz", + "integrity": "sha1-hVpmq4w4LrMWXfkoqB0HSQKdI4Y=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-consume": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", + "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true, + "requires": { + "first-chunk-stream": "^1.0.0", + "is-utf8": "^0.2.0" + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timers-ext": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.5.tgz", + "integrity": "sha512-tsEStd7kmACHENhsUPaxb8Jf8/+GZZxyNFQbZD07HQOyooOa6At1rQqjffgvg7n+dxscQa9cjjMdWhJtsP2sxg==", + "dev": true, + "requires": { + "es5-ext": "~0.10.14", + "next-tick": "1" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "optional": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "requires": { + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true, + "requires": { + "natives": "^1.1.0" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "^0.5.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } +} diff --git a/package.json b/package.json old mode 100644 new mode 100755 index e80f85fa..deff7bb3 --- a/package.json +++ b/package.json @@ -1,26 +1,55 @@ { - "name": "docco", - "description": "The Quick and Dirty Literate Programming Documentation Generator", - "keywords": ["documentation", "docs", "generator", "literate", "coffeescript"], - "author": "Jeremy Ashkenas", - "version": "0.7.0", - "license": "MIT", + "name": "docco", + "description": "The Quick and Dirty Literate Programming Documentation Generator", + "keywords": [ + "documentation", + "docs", + "generator", + "literate", + "coffeescript" + ], + "author": "Jeremy Ashkenas", + "version": "1.0.0", + "license": "MIT", "repository": { "type": "git", "url": "https://github.com/jashkenas/docco.git" }, "engines": { - "node": ">=0.2.0" + "node": ">=0.2.0" }, "dependencies": { - "commander": ">= 0.5.2", - "marked": ">= 0.2.7", - "fs-extra": ">= 0.6.0", - "underscore": ">= 1.0.0", - "highlight.js": ">= 8.0.x" + "commander": ">= 0.5.2", + "fs-extra": "^3.0.1", + "glob": "^7.1.2", + "handlebars": "^4.0.10", + "highlight.js": ">= 8.0.x", + "marked": ">= 0.2.7", + "path": "^0.12.7", + "underscore": ">= 1.0.0" }, - "main" : "./docco", + "main": "./docco", "bin": { - "docco": "./bin/docco" + "docco": "./bin/docco" + }, + "devDependencies": { + "chai": "^4.0.2", + "concurrent-transform": "^1.0.0", + "gulp": "^3.9.1", + "gulp-clean": "^0.3.2", + "gulp-coffee": "^2.3.4", + "gulp-sourcemaps": "^2.6.0", + "gulp-tap": "^1.0.1", + "gulp-util": "^3.0.8", + "jenkins-mocha": "^4.1.2", + "mocha": "^3.4.2", + "mockery": "^2.1.0", + "touch": "^3.1.0" + }, + "scripts": { + "test": "npm run test:unit", + "test:unit": "jenkins-mocha test/unit-tests/*.js; jenkins-mocha --cobertura test/unit-tests/*.js", + "build": "node_modules/gulp/bin/gulp.js build", + "clean": "node_modules/gulp/bin/gulp.js clean" } } diff --git a/resources/classic/docco.css b/resources/classic/docco.css old mode 100644 new mode 100755 diff --git a/resources/classic/docco.jst b/resources/classic/docco.jst old mode 100644 new mode 100755 index bc956dbe..f4a57404 --- a/resources/classic/docco.jst +++ b/resources/classic/docco.jst @@ -19,7 +19,7 @@ <div id="jump_page"> <% for (var i=0, l=sources.length; i<l; i++) { %> <% var source = sources[i]; %> - <a class="source" href="<%= path.basename(destination(source)) %>"> + <a class="source" href="<%= destination(source) %>"> <%= path.basename(source) %> </a> <% } %> diff --git a/resources/classic/public/fonts/aller-bold.eot b/resources/classic/public/fonts/aller-bold.eot old mode 100644 new mode 100755 diff --git a/resources/classic/public/fonts/aller-bold.ttf b/resources/classic/public/fonts/aller-bold.ttf old mode 100644 new mode 100755 diff --git a/resources/classic/public/fonts/aller-bold.woff b/resources/classic/public/fonts/aller-bold.woff old mode 100644 new mode 100755 diff --git a/resources/classic/public/fonts/aller-light.eot b/resources/classic/public/fonts/aller-light.eot old mode 100644 new mode 100755 diff --git a/resources/classic/public/fonts/aller-light.ttf b/resources/classic/public/fonts/aller-light.ttf old mode 100644 new mode 100755 diff --git a/resources/classic/public/fonts/aller-light.woff b/resources/classic/public/fonts/aller-light.woff old mode 100644 new mode 100755 diff --git a/resources/classic/public/fonts/fleurons.eot b/resources/classic/public/fonts/fleurons.eot old mode 100644 new mode 100755 diff --git a/resources/classic/public/fonts/fleurons.ttf b/resources/classic/public/fonts/fleurons.ttf old mode 100644 new mode 100755 diff --git a/resources/classic/public/fonts/fleurons.woff b/resources/classic/public/fonts/fleurons.woff old mode 100644 new mode 100755 diff --git a/resources/classic/public/images/gray.png b/resources/classic/public/images/gray.png old mode 100644 new mode 100755 diff --git a/resources/classic/public/stylesheets/normalize.css b/resources/classic/public/stylesheets/normalize.css old mode 100644 new mode 100755 diff --git a/resources/languages.json b/resources/languages.json old mode 100644 new mode 100755 index c1b6799d..9ad66b13 --- a/resources/languages.json +++ b/resources/languages.json @@ -11,11 +11,12 @@ ".cls": {"name": "tex", "symbol": "%"}, ".cmake": {"name": "cmake", "symbol": "#"}, ".cmd": {"name": "dos", "symbol": "@?rem"}, - ".coffee": {"name": "coffeescript", "symbol": "#"}, + ".coffee": {"name": "coffeescript", "symbol": "#", "multiline": {"start": "###", "stop": "###"}}, ".cpp": {"name": "cpp", "symbol": "//"}, ".cs": {"name": "cs", "symbol": "//"}, ".cson": {"name": "coffeescript", "symbol": "#"}, ".d": {"name": "d", "symbol": "//"}, + "not-supported":{"name": "Not Supported", "symbol": "//"}, ".dtx": {"name": "tex", "symbol": "%"}, ".erl": {"name": "erlang", "symbol": "%"}, ".f": {"name": "fortran", "symbol": "!"}, @@ -29,21 +30,23 @@ ".hs": {"name": "haskell", "symbol": "--"}, ".ini": {"name": "ini", "symbol": ";"}, ".jade": {"name": "jade", "symbol": "//-"}, - ".js": {"name": "javascript", "symbol": "//"}, + ".jpeg": {"name": "image", "copy": true}, + ".jpg": {"name": "image", "copy": true}, + ".js": {"name": "javascript", "symbol": "//", "multiline": {"start": "/*", "stop": "*/"}}, ".jsm": {"name": "javascript", "symbol": "//"}, ".jsx": {"name": "javascript", "symbol": "//"}, - ".java": {"name": "java", "symbol": "//"}, + ".java": {"name": "java", "symbol": "//", "multiline": {"start": "/*", "stop": "*/"}}, ".latex": {"name": "tex", "symbol": "%"}, ".less": {"name": "less", "symbol": "//"}, - ".lisp": {"name": "lisp", "symbol": ";"}, - ".litcoffee": {"name": "coffeescript", "symbol": "#", "literate": true}, + ".lisp": {"name": "lisp", "symbol": ";" }, + ".litcoffee": {"name": "coffeescript", "symbol": "#", "literate": true }, ".ls": {"name": "coffeescript", "symbol": "#"}, ".lua": {"name": "lua", "symbol": "--"}, ".n": {"name": "nemerle", "symbol": "//"}, ".m": {"name": "objectivec", "symbol": "//"}, ".mel": {"name": "mel", "symbol": "//"}, - ".markdown": {"name": "markdown", "symbol": ""}, - ".md": {"name": "markdown", "symbol": ""}, + ".markdown": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true, "code": "```"}, + ".md": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true, "code": "```"}, ".mm": {"name": "objectivec", "symbol": "//"}, ".p": {"name": "delphi", "symbol": "//"}, ".pas": {"name": "delphi", "symbol": "//"}, @@ -51,6 +54,7 @@ ".pl": {"name": "perl", "symbol": "#"}, ".pm": {"name": "perl", "symbol": "#"}, ".pod": {"name": "perl", "symbol": "#"}, + ".png": {"name": "image", "copy": true}, ".pp": {"name": "delphi", "symbol": "//"}, ".py": {"name": "python", "symbol": "#"}, ".rb": {"name": "ruby", "symbol": "#"}, @@ -63,8 +67,10 @@ ".sty": {"name": "tex", "symbol": "%"}, ".styl": {"name": "stylus", "symbol": "//"}, ".stylus": {"name": "stylus", "symbol": "//"}, + ".svg": {"name": "image", "copy": true}, ".swift": {"name": "swift", "symbol": "//"}, ".t": {"name": "perl", "symbol": "#"}, + ".tiff": {"name": "image", "copy": true}, ".ts": {"name": "typescript", "symbol": "//"}, ".v": {"name": "verilog", "symbol": "//"}, ".vala": {"name": "vala", "symbol": "//"}, diff --git a/resources/linear/docco.css b/resources/linear/docco.css old mode 100644 new mode 100755 diff --git a/resources/linear/docco.jst b/resources/linear/docco.jst old mode 100644 new mode 100755 index c536828b..41ae3352 --- a/resources/linear/docco.jst +++ b/resources/linear/docco.jst @@ -26,11 +26,13 @@ <div class="toc"> <h3>Table of Contents</h3> <ol> - <% for (var i=0, l = sources.length; i < l; i++) { %> - <% var source = sources[i]; %> + <% for (var i=0, l = links.length; i < l; i++) { %> <li> - <a class="source" href="<%= path.basename(destination(source)) %>"> - <%= path.basename(source) %> + <a class="source" href="<%= links[i].link %>"> + <% if (flatten) %> + <%= path.basename(links[i].file) %> + <% else %> + <%= links[i].file %> </a> </li> <% } %> diff --git a/resources/linear/public/fonts/aller-bold.eot b/resources/linear/public/fonts/aller-bold.eot old mode 100644 new mode 100755 diff --git a/resources/linear/public/fonts/aller-bold.ttf b/resources/linear/public/fonts/aller-bold.ttf old mode 100644 new mode 100755 diff --git a/resources/linear/public/fonts/aller-bold.woff b/resources/linear/public/fonts/aller-bold.woff old mode 100644 new mode 100755 diff --git a/resources/linear/public/fonts/aller-light.eot b/resources/linear/public/fonts/aller-light.eot old mode 100644 new mode 100755 diff --git a/resources/linear/public/fonts/aller-light.ttf b/resources/linear/public/fonts/aller-light.ttf old mode 100644 new mode 100755 diff --git a/resources/linear/public/fonts/aller-light.woff b/resources/linear/public/fonts/aller-light.woff old mode 100644 new mode 100755 diff --git a/resources/linear/public/fonts/fleurons.eot b/resources/linear/public/fonts/fleurons.eot old mode 100644 new mode 100755 diff --git a/resources/linear/public/fonts/fleurons.ttf b/resources/linear/public/fonts/fleurons.ttf old mode 100644 new mode 100755 diff --git a/resources/linear/public/fonts/fleurons.woff b/resources/linear/public/fonts/fleurons.woff old mode 100644 new mode 100755 diff --git a/resources/linear/public/images/gray.png b/resources/linear/public/images/gray.png old mode 100644 new mode 100755 diff --git a/resources/linear/public/stylesheets/normalize.css b/resources/linear/public/stylesheets/normalize.css old mode 100644 new mode 100755 diff --git a/resources/parallel/docco.css b/resources/parallel/docco.css old mode 100644 new mode 100755 diff --git a/resources/parallel/docco.jst b/resources/parallel/docco.jst old mode 100644 new mode 100755 index 1cea1ab5..22675734 --- a/resources/parallel/docco.jst +++ b/resources/parallel/docco.jst @@ -3,8 +3,8 @@ <html> <head> <title><%= title %></title> - <meta http-equiv="content-type" content="text/html; charset=UTF-8"> - <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"> + <meta http-equiv="content-type" content="text/html,charset=UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <link rel="stylesheet" media="all" href="<%= css %>" /> </head> <body> @@ -18,10 +18,9 @@ <div id="jump_wrapper"> <div id="jump_page_wrapper"> <div id="jump_page"> - <% for (var i=0, l=sources.length; i<l; i++) { %> - <% var source = sources[i]; %> - <a class="source" href="<%= path.basename(destination(source)) %>"> - <%= path.basename(source) %> + <% for (var i=0, l=links.length; i<l; i++) { %> + <a class="source" href="<%= links[i].link %>"> + <%= links[i].file %> </a> <% } %> </div> diff --git a/resources/parallel/public/fonts/aller-bold.eot b/resources/parallel/public/fonts/aller-bold.eot old mode 100644 new mode 100755 diff --git a/resources/parallel/public/fonts/aller-bold.ttf b/resources/parallel/public/fonts/aller-bold.ttf old mode 100644 new mode 100755 diff --git a/resources/parallel/public/fonts/aller-bold.woff b/resources/parallel/public/fonts/aller-bold.woff old mode 100644 new mode 100755 diff --git a/resources/parallel/public/fonts/aller-light.eot b/resources/parallel/public/fonts/aller-light.eot old mode 100644 new mode 100755 diff --git a/resources/parallel/public/fonts/aller-light.ttf b/resources/parallel/public/fonts/aller-light.ttf old mode 100644 new mode 100755 diff --git a/resources/parallel/public/fonts/aller-light.woff b/resources/parallel/public/fonts/aller-light.woff old mode 100644 new mode 100755 diff --git a/resources/parallel/public/stylesheets/normalize.css b/resources/parallel/public/stylesheets/normalize.css old mode 100644 new mode 100755 diff --git a/resources/plain-markdown/README.md b/resources/plain-markdown/README.md old mode 100644 new mode 100755 diff --git a/resources/plain-markdown/docco.jst b/resources/plain-markdown/docco.jst old mode 100644 new mode 100755 diff --git a/resources/sidebyside/docco.css b/resources/sidebyside/docco.css new file mode 100755 index 00000000..b60f6fa3 --- /dev/null +++ b/resources/sidebyside/docco.css @@ -0,0 +1,518 @@ +/*--------------------- Typography ----------------------------*/ + +@font-face { + font-family: 'aller-light'; + src: url('public/fonts/aller-light.eot'); + src: url('public/fonts/aller-light.eot?#iefix') format('embedded-opentype'), + url('public/fonts/aller-light.woff') format('woff'), + url('public/fonts/aller-light.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'aller-bold'; + src: url('public/fonts/aller-bold.eot'); + src: url('public/fonts/aller-bold.eot?#iefix') format('embedded-opentype'), + url('public/fonts/aller-bold.woff') format('woff'), + url('public/fonts/aller-bold.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'roboto-black'; + src: url('public/fonts/roboto-black.eot'); + src: url('public/fonts/roboto-black.eot?#iefix') format('embedded-opentype'), + url('public/fonts/roboto-black.woff') format('woff'), + url('public/fonts/roboto-black.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +/*--------------------- Layout ----------------------------*/ +html { height: 100%; } +body { + font-family: "aller-light"; + font-size: 14px; + line-height: 18px; + color: #30404f; + margin: 0; padding: 0; + height:100%; +} +#container { min-height: 100%; } + +a { + color: #000; +} + +b, strong { + font-weight: normal; + font-family: "aller-bold"; +} + +p { + margin: 15px 0 0px; +} + .annotation ul, .annotation ol { + margin: 25px 0; + } + .annotation ul li, .annotation ol li { + font-size: 14px; + line-height: 18px; + margin: 10px 0; + } + +h1, h2, h3, h4, h5, h6 { + color: #112233; + line-height: 1em; + font-weight: normal; + font-family: "roboto-black"; + text-transform: uppercase; + margin: 30px 0 15px 0; +} + +h1 { + margin-top: 40px; +} +h2 { + font-size: 1.26em; +} + +hr { + border: 0; + background: 1px #ddd; + height: 1px; + margin: 20px 0; +} + +pre, tt, code { + font-size: 12px; line-height: 16px; + font-family: Menlo, Monaco, Consolas, "Lucida Console", monospace; + margin: 0; padding: 0; +} + .annotation pre { + display: block; + margin: 0; + padding: 7px 10px; + background: #fcfcfc; + -moz-box-shadow: inset 0 0 10px rgba(0,0,0,0.1); + -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.1); + box-shadow: inset 0 0 10px rgba(0,0,0,0.1); + overflow-x: auto; + } + .annotation pre code { + border: 0; + padding: 0; + background: transparent; + } + + +blockquote { + border-left: 5px solid #ccc; + margin: 0; + padding: 1px 0 1px 1em; +} + .sections blockquote p { + font-family: Menlo, Consolas, Monaco, monospace; + font-size: 12px; line-height: 16px; + color: #999; + margin: 10px 0 0; + white-space: pre-wrap; + } + +ul.sections { + list-style: none; + padding:0 0 5px 0;; + margin:0; +} + +/* + Force border-box so that % widths fit the parent + container without overlap because of margin/padding. + + More Info : http://www.quirksmode.org/css/box.html +*/ +ul.sections > li > div { + -moz-box-sizing: border-box; /* firefox */ + -ms-box-sizing: border-box; /* ie */ + -webkit-box-sizing: border-box; /* webkit */ + -khtml-box-sizing: border-box; /* konqueror */ + box-sizing: border-box; /* css3 */ +} + + +/*---------------------- Jump Page -----------------------------*/ +#jump_to, #jump_page { + margin: 0; + background: white; + -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777; + -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px; + font: 16px Arial; + cursor: pointer; + text-align: right; + list-style: none; +} + +#jump_to a { + text-decoration: none; +} + +#jump_to a.large { + display: none; +} +#jump_to a.small { + font-size: 22px; + font-weight: bold; + color: #676767; +} + +#jump_to, #jump_wrapper { + position: fixed; + right: 0; top: 0; + padding: 10px 15px; + margin:0; +} + +#jump_wrapper { + display: none; + padding:0; +} + +#jump_to:hover #jump_wrapper { + display: block; +} + +#jump_page_wrapper{ + position: fixed; + right: 0; + top: 0; + bottom: 0; +} + +#jump_page { + padding: 5px 0 3px; + margin: 0 0 25px 25px; + max-height: 100%; + overflow: auto; +} + +#jump_page .source { + display: block; + padding: 15px; + text-decoration: none; + border-top: 1px solid #eee; +} + +#jump_page .source:hover { + background: #f5f5ff; +} + +#jump_page .source:first-child { +} + +/*---------------------- Low resolutions (> 320px) ---------------------*/ +@media only screen and (min-width: 320px) { + .pilwrap { display: none; } + + ul.sections > li > div { + display: block; + padding:5px 10px 0 10px; + } + + ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol { + padding-left: 30px; + } + + ul.sections > li > div.content { + overflow-x:auto; + -webkit-box-shadow: inset 0 0 5px #e5e5ee; + box-shadow: inset 0 0 5px #e5e5ee; + border: 1px solid #dedede; + margin:5px 10px 5px 10px; + padding-bottom: 5px; + } + + ul.sections > li > div.annotation pre { + margin: 7px 0 7px; + padding-left: 15px; + } + + ul.sections > li > div.annotation p tt, .annotation code { + background: #f8f8ff; + border: 1px solid #dedede; + font-size: 12px; + padding: 0 0.2em; + } +} + +/*---------------------- (> 481px) ---------------------*/ +@media only screen and (min-width: 481px) { + #container { + position: relative; + } + body { + background-color: #F5F5FF; + font-size: 15px; + line-height: 21px; + } + pre, tt, code { + line-height: 18px; + } + p, ul, ol { + margin: 0 0 15px; + } + + + #jump_to { + padding: 5px 10px; + } + #jump_wrapper { + padding: 0; + } + #jump_to, #jump_page { + font: 10px Arial; + text-transform: uppercase; + } + #jump_page .source { + padding: 5px 10px; + } + #jump_to a.large { + display: inline-block; + } + #jump_to a.small { + display: none; + } + + + + #background { + position: absolute; + top: 0; bottom: 0; + width: 350px; + background: #fff; + border-right: 1px solid #e5e5ee; + z-index: -1; + } + + ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol { + padding-left: 40px; + } + + ul.sections > li { + white-space: nowrap; + } + + ul.sections > li > div { + display: inline-block; + } + + ul.sections > li > div.annotation { + max-width: 350px; + min-width: 350px; + min-height: 5px; + padding: 13px; + overflow-x: hidden; + white-space: normal; + vertical-align: top; + text-align: left; + } + ul.sections > li > div.annotation pre { + margin: 15px 0 15px; + padding-left: 15px; + } + + ul.sections > li > div.content { + padding: 13px; + vertical-align: top; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + } + + .pilwrap { + position: relative; + display: inline; + } + + .pilcrow { + font: 12px Arial; + text-decoration: none; + color: #454545; + position: absolute; + top: 3px; left: -20px; + padding: 1px 2px; + opacity: 0; + -webkit-transition: opacity 0.2s linear; + } + .for-h1 .pilcrow { + top: 47px; + } + .for-h2 .pilcrow, .for-h3 .pilcrow, .for-h4 .pilcrow { + top: 35px; + } + + ul.sections > li > div.annotation:hover .pilcrow { + opacity: 1; + } +} + +/*---------------------- (> 1025px) ---------------------*/ +@media only screen and (min-width: 1025px) { + + body { + font-size: 16px; + line-height: 24px; + } + + #background { + width: 525px; + } + ul.sections > li > div.annotation { + max-width: 525px; + min-width: 525px; + padding: 10px 25px 1px 50px; + } + ul.sections > li > div.content { + padding: 9px 15px 16px 25px; + } +} + +/*---------------------- Syntax Highlighting -----------------------------*/ + +td.linenos { background-color: #f0f0f0; padding-right: 10px; } +span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; } +/* + +github.com style (c) Vasily Polovnyov <vast@whiteants.net> + +*/ + +pre code { + display: block; padding: 0.5em; + color: #000; + background: #f8f8ff +} + +pre .hljs-comment, +pre .hljs-template_comment, +pre .hljs-diff .hljs-header, +pre .hljs-javadoc { + color: #408080; + font-style: italic +} + +pre .hljs-keyword, +pre .hljs-assignment, +pre .hljs-literal, +pre .hljs-css .hljs-rule .hljs-keyword, +pre .hljs-winutils, +pre .hljs-javascript .hljs-title, +pre .hljs-lisp .hljs-title, +pre .hljs-subst { + color: #954121; + /*font-weight: bold*/ +} + +pre .hljs-number, +pre .hljs-hexcolor { + color: #40a070 +} + +pre .hljs-string, +pre .hljs-tag .hljs-value, +pre .hljs-phpdoc, +pre .hljs-tex .hljs-formula { + color: #219161; +} + +pre .hljs-title, +pre .hljs-id { + color: #19469D; +} +pre .hljs-params { + color: #00F; +} + +pre .hljs-javascript .hljs-title, +pre .hljs-lisp .hljs-title, +pre .hljs-subst { + font-weight: normal +} + +pre .hljs-class .hljs-title, +pre .hljs-haskell .hljs-label, +pre .hljs-tex .hljs-command { + color: #458; + font-weight: bold +} + +pre .hljs-tag, +pre .hljs-tag .hljs-title, +pre .hljs-rules .hljs-property, +pre .hljs-django .hljs-tag .hljs-keyword { + color: #000080; + font-weight: normal +} + +pre .hljs-attribute, +pre .hljs-variable, +pre .hljs-instancevar, +pre .hljs-lisp .hljs-body { + color: #008080 +} + +pre .hljs-regexp { + color: #B68 +} + +pre .hljs-class { + color: #458; + font-weight: bold +} + +pre .hljs-symbol, +pre .hljs-ruby .hljs-symbol .hljs-string, +pre .hljs-ruby .hljs-symbol .hljs-keyword, +pre .hljs-ruby .hljs-symbol .hljs-keymethods, +pre .hljs-lisp .hljs-keyword, +pre .hljs-tex .hljs-special, +pre .hljs-input_number { + color: #990073 +} + +pre .hljs-builtin, +pre .hljs-constructor, +pre .hljs-built_in, +pre .hljs-lisp .hljs-title { + color: #0086b3 +} + +pre .hljs-preprocessor, +pre .hljs-pi, +pre .hljs-doctype, +pre .hljs-shebang, +pre .hljs-cdata { + color: #999; + font-weight: bold +} + +pre .hljs-deletion { + background: #fdd +} + +pre .hljs-addition { + background: #dfd +} + +pre .hljs-diff .hljs-change { + background: #0086b3 +} + +pre .hljs-chunk { + color: #aaa +} + +pre .hljs-tex .hljs-formula { + opacity: 0.5; +} diff --git a/resources/sidebyside/docco.jst b/resources/sidebyside/docco.jst new file mode 100755 index 00000000..79d88a68 --- /dev/null +++ b/resources/sidebyside/docco.jst @@ -0,0 +1,71 @@ +<!DOCTYPE html> + +<html> +<head> + <title><%= title %></title> + <meta http-equiv="content-type" content="text/html,charset=UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" media="all" href="<%= css %>"/> +</head> +<body> +<div id="container"> + <div id="background"></div> + <% if (sources.length > 1) { %> + <ul id="jump_to"> + <li> + <a class="large" href="javascript:void(0);">Jump To …</a> + <a class="small" href="javascript:void(0);">+</a> + <div id="jump_wrapper"> + <div id="jump_page_wrapper"> + <div id="jump_page"> + <% for (var i=0, l=links.length, later='', now=''; i<l; i++) { %> + <% if (!links[i].image) { %></l> + <% now = path.dirname(links[i].file) %> + <% if (now != later) {%> + <p style="text-align: left"> + <%= now %> + <span style="float:right;text-align: right"> + <a class="source" href="<%= links[i].link %>"><%= path.basename(links[i].file) %> + </a> + </span> + </p> + <% } else { %> + <a class="source" href="<%= links[i].link %>"><%= path.basename(links[i].file) %> + </a> + <% } %> + <% later = now %> + <% } }%> + </div> + </div> + </li> + </ul> + <% } %> + <ul class="sections"> + <% if (!hasTitle) { %> + <li id="title"> + <div class="annotation"> + <h1><%= title %></h1> + </div> + </li> + <% } %> + <% for (var i=0, l=sections.length; i + <l + ; i++) { %> + <% var section = sections[i]; %> + <li id="section-<%= i + 1 %>"> + <div class="annotation"> + <% heading = section.docsHtml.match(/^\s*<(h\d)>/) %> + <div class="pilwrap <%= heading ? 'for-' + heading[1] : '' %>"> + <a class="pilcrow" href="#section-<%= i + 1 %>">¶</a> + </div> + <%= section.docsHtml %> + </div> + <% if (section.codeText.replace(/\s/gm, '') != '') { %> + <div class="content"><%= section.codeHtml %></div> + <% } %> + </li> + <% } %> + </ul> +</div> +</body> +</html> diff --git a/resources/sidebyside/public/fonts/aller-bold.eot b/resources/sidebyside/public/fonts/aller-bold.eot new file mode 100755 index 00000000..1b32532a Binary files /dev/null and b/resources/sidebyside/public/fonts/aller-bold.eot differ diff --git a/resources/sidebyside/public/fonts/aller-bold.ttf b/resources/sidebyside/public/fonts/aller-bold.ttf new file mode 100755 index 00000000..dc4cc9c2 Binary files /dev/null and b/resources/sidebyside/public/fonts/aller-bold.ttf differ diff --git a/resources/sidebyside/public/fonts/aller-bold.woff b/resources/sidebyside/public/fonts/aller-bold.woff new file mode 100755 index 00000000..fa16fd0a Binary files /dev/null and b/resources/sidebyside/public/fonts/aller-bold.woff differ diff --git a/resources/sidebyside/public/fonts/aller-light.eot b/resources/sidebyside/public/fonts/aller-light.eot new file mode 100755 index 00000000..40bd654b Binary files /dev/null and b/resources/sidebyside/public/fonts/aller-light.eot differ diff --git a/resources/sidebyside/public/fonts/aller-light.ttf b/resources/sidebyside/public/fonts/aller-light.ttf new file mode 100755 index 00000000..c2c72902 Binary files /dev/null and b/resources/sidebyside/public/fonts/aller-light.ttf differ diff --git a/resources/sidebyside/public/fonts/aller-light.woff b/resources/sidebyside/public/fonts/aller-light.woff new file mode 100755 index 00000000..81a09d18 Binary files /dev/null and b/resources/sidebyside/public/fonts/aller-light.woff differ diff --git a/resources/sidebyside/public/fonts/roboto-black.eot b/resources/sidebyside/public/fonts/roboto-black.eot new file mode 100755 index 00000000..571ed491 Binary files /dev/null and b/resources/sidebyside/public/fonts/roboto-black.eot differ diff --git a/resources/sidebyside/public/fonts/roboto-black.ttf b/resources/sidebyside/public/fonts/roboto-black.ttf new file mode 100755 index 00000000..e0300b3e Binary files /dev/null and b/resources/sidebyside/public/fonts/roboto-black.ttf differ diff --git a/resources/sidebyside/public/fonts/roboto-black.woff b/resources/sidebyside/public/fonts/roboto-black.woff new file mode 100755 index 00000000..642e5b60 Binary files /dev/null and b/resources/sidebyside/public/fonts/roboto-black.woff differ diff --git a/resources/sidebyside/public/stylesheets/normalize.css b/resources/sidebyside/public/stylesheets/normalize.css new file mode 100755 index 00000000..73abb76f --- /dev/null +++ b/resources/sidebyside/public/stylesheets/normalize.css @@ -0,0 +1,375 @@ +/*! normalize.css v2.0.1 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/* + * Corrects `block` display not defined in IE 8/9. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} + +/* + * Corrects `inline-block` display not defined in IE 8/9. + */ + +audio, +canvas, +video { + display: inline-block; +} + +/* + * Prevents modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/* + * Addresses styling for `hidden` attribute not present in IE 8/9. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/* + * 1. Sets default font family to sans-serif. + * 2. Prevents iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/* + * Removes default margin. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/* + * Addresses `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/* + * Improves readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/* + * Addresses `h1` font sizes within `section` and `article` in Firefox 4+, + * Safari 5, and Chrome. + */ + +h1 { + font-size: 2em; +} + +/* + * Addresses styling not present in IE 8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/* + * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/* + * Addresses styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/* + * Addresses styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + + +/* + * Corrects font family set oddly in Safari 5 and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +/* + * Improves readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/* + * Sets consistent quote types. + */ + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +/* + * Addresses inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/* + * Prevents `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/* + * Removes border when inside `a` element in IE 8/9. + */ + +img { + border: 0; +} + +/* + * Corrects overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/* + * Addresses margin not present in IE 8/9 and Safari 5. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/* + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* + * 1. Corrects color not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/* + * 1. Corrects font family not being inherited in all browsers. + * 2. Corrects font size not being inherited in all browsers. + * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome + */ + +button, +input, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 2 */ + margin: 0; /* 3 */ +} + +/* + * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/* + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Corrects inability to style clickable `input` types in iOS. + * 3. Improves usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/* + * Re-set default cursor for disabled elements. + */ + +button[disabled], +input[disabled] { + cursor: default; +} + +/* + * 1. Addresses box sizing set to `content-box` in IE 8/9. + * 2. Removes excess padding in IE 8/9. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/* + * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/* + * Removes inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* + * Removes inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * 1. Removes default vertical scrollbar in IE 8/9. + * 2. Improves readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/* + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/src/buildMatchers.js b/src/buildMatchers.js new file mode 100755 index 00000000..b554446a --- /dev/null +++ b/src/buildMatchers.js @@ -0,0 +1,30 @@ +var buildMatchers; + +module.exports = buildMatchers = function(languages) { + var ext, l, start, stop; + for (ext in languages) { + l = languages[ext]; + l.commentMatcher = RegExp("^\\s*" + l.symbol + "\\s?"); + l.commentFilter = /(^#![\/]|^\s*#\{)/; + if (l.link) { + l.imageMatcher = RegExp("^" + l.link + "\\[(.+)\\]\\((.+)\\)"); + l.linkMatcher = /^\[(.+)\]\((.+)\)/; + } + if (l.section) { + l.sectionMatcher = RegExp("^" + l.section + "\\s?"); + } + if (l.multiline) { + start = l.multiline.start.replace(/(.{1})/g, "\\$1"); + stop = l.multiline.stop.replace(/(.{1})/g, "\\$1"); + l.startMatcher = RegExp("^\\s*" + start); + l.stopMatcher = RegExp("^\\s*" + stop); + } + if (l.code) { + l.code = l.code.replace(/(.{1})/g, "\\$1"); + l.codeMatcher = RegExp("^\\s*" + l.code); + } + } + return languages; +}; + +//# sourceMappingURL=buildMatchers.js.map diff --git a/src/buildMatchers.js.map b/src/buildMatchers.js.map new file mode 100644 index 00000000..f7625b18 --- /dev/null +++ b/src/buildMatchers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"buildMatchers.js","sources":["buildMatchers.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,MAAM,CAAC,OAAP,GAAiB,aAAA,GAAgB,SAAC,SAAD;AAC/B,MAAA;AAAA,OAAA,gBAAA;;IAIE,CAAC,CAAC,cAAF,GAAmB,MAAA,CAAA,OAAA,GAAS,CAAC,CAAC,MAAX,GAAkB,MAAlB;IAInB,CAAC,CAAC,aAAF,GAAkB;IAIlB,IAAG,CAAC,CAAC,IAAL;MACE,CAAC,CAAC,YAAF,GAAiB,MAAA,CAAA,GAAA,GAAM,CAAC,CAAC,IAAR,GAAa,sBAAb;MACjB,CAAC,CAAC,WAAF,GAAgB,oBAFlB;;IAKA,IAAG,CAAC,CAAC,OAAL;MACE,CAAC,CAAC,cAAF,GAAmB,MAAA,CAAA,GAAA,GAAM,CAAC,CAAC,OAAR,GAAgB,MAAhB,EADrB;;IAMA,IAAG,CAAC,CAAC,SAAL;MAEE,KAAA,GAAQ,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,OAAlB,CAA0B,SAA1B,EAAoC,MAApC;MACR,IAAA,GAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAjB,CAAyB,SAAzB,EAAmC,MAAnC;MAEP,CAAC,CAAC,YAAF,GAAiB,MAAA,CAAA,OAAA,GAAS,KAAT;MACjB,CAAC,CAAC,WAAF,GAAgB,MAAA,CAAA,OAAA,GAAS,IAAT,EANlB;;IAQA,IAAG,CAAC,CAAC,IAAL;MACE,CAAC,CAAC,IAAF,GAAS,CAAC,CAAC,IAAI,CAAC,OAAP,CAAe,SAAf,EAAyB,MAAzB;MACT,CAAC,CAAC,WAAF,GAAgB,MAAA,CAAA,OAAA,GAAS,CAAC,CAAC,IAAX,EAFlB;;AA/BF;SAmCA;AApC+B","sourcesContent":["Build out the appropriate matchers and delimiters for each language.\n\n module.exports = buildMatchers = (languages) ->\n for ext, l of languages\n\nDoes the line begin with a comment?\n\n l.commentMatcher = ///^\\s*#{l.symbol}\\s?///\n\nIgnore [hashbangs](http://en.wikipedia.org/wiki/Shebang_%28Unix%29) and interpolations...\n\n l.commentFilter = /(^#![/]|^\\s*#\\{)/\n\nLook for links if necessary.\n\n if l.link\n l.imageMatcher = ///^#{l.link}\\[(.+)\\]\\((.+)\\)///\n l.linkMatcher = ///^\\[(.+)\\]\\((.+)\\)///\nLook for explict section breaks\n\n if l.section\n l.sectionMatcher = ///^#{l.section}\\s?///\n\nLook for multiline comments. The tricky part here is that the characters need to be escaped.\n\n\n if l.multiline\n # use replace to insert a '\\' in front of every character\n start = l.multiline.start.replace(/(.{1})/g,\"\\\\$1\")\n stop = l.multiline.stop.replace(/(.{1})/g,\"\\\\$1\")\n\n l.startMatcher = ///^\\s*#{start}///\n l.stopMatcher = ///^\\s*#{stop}///\n\n if l.code\n l.code = l.code.replace(/(.{1})/g,\"\\\\$1\")\n l.codeMatcher = ///^\\s*#{l.code}///\n\n languages\n"]} \ No newline at end of file diff --git a/src/buildMatchers.litcoffee b/src/buildMatchers.litcoffee new file mode 100755 index 00000000..cee09aa0 --- /dev/null +++ b/src/buildMatchers.litcoffee @@ -0,0 +1,39 @@ +Build out the appropriate matchers and delimiters for each language. + + module.exports = buildMatchers = (languages) -> + for ext, l of languages + +Does the line begin with a comment? + + l.commentMatcher = ///^\s*#{l.symbol}\s?/// + +Ignore [hashbangs](http://en.wikipedia.org/wiki/Shebang_%28Unix%29) and interpolations... + + l.commentFilter = /(^#![/]|^\s*#\{)/ + +Look for links if necessary. + + if l.link + l.imageMatcher = ///^#{l.link}\[(.+)\]\((.+)\)/// + l.linkMatcher = ///^\[(.+)\]\((.+)\)/// +Look for explict section breaks + + if l.section + l.sectionMatcher = ///^#{l.section}\s?/// + +Look for multiline comments. The tricky part here is that the characters need to be escaped. + + + if l.multiline + # use replace to insert a '\' in front of every character + start = l.multiline.start.replace(/(.{1})/g,"\\$1") + stop = l.multiline.stop.replace(/(.{1})/g,"\\$1") + + l.startMatcher = ///^\s*#{start}/// + l.stopMatcher = ///^\s*#{stop}/// + + if l.code + l.code = l.code.replace(/(.{1})/g,"\\$1") + l.codeMatcher = ///^\s*#{l.code}/// + + languages diff --git a/src/configure.js b/src/configure.js new file mode 100755 index 00000000..6b3ce94f --- /dev/null +++ b/src/configure.js @@ -0,0 +1,46 @@ +var _, buildMatchers, configure, fs, getLanguage, path, + slice = [].slice; + +_ = require('underscore'); + +fs = require('fs-extra'); + +path = require('path'); + +getLanguage = require('./getLanguage'); + +buildMatchers = require('./buildMatchers'); + +module.exports = configure = function(options, defaults, languages) { + var config, dir; + config = _.extend({}, defaults, _.pick.apply(_, [options].concat(slice.call(_.keys(defaults))))); + config.languages = buildMatchers(languages); + if (options.template) { + if (!options.css) { + console.warn("docco: no stylesheet file specified"); + } + config.layout = null; + } else { + dir = config.layout = path.join(__dirname, '../resources', config.layout); + if (fs.existsSync(path.join(dir, 'public'))) { + config["public"] = path.join(dir, 'public'); + } + config.template = path.join(dir, 'docco.jst'); + config.css = options.css || path.join(dir, 'docco.css'); + } + config.template = _.template(fs.readFileSync(config.template).toString()); + if (options.marked) { + config.marked = JSON.parse(fs.readFileSync(options.marked)); + } + config.sources = options.args.filter(function(source) { + var lang; + lang = getLanguage(source, languages, config.extension); + if (!lang) { + console.warn("docco: skipped unknown type (" + (path.basename(source)) + ")"); + } + return lang; + }).sort(); + return config; +}; + +//# sourceMappingURL=configure.js.map diff --git a/src/configure.js.map b/src/configure.js.map new file mode 100644 index 00000000..fde4574f --- /dev/null +++ b/src/configure.js.map @@ -0,0 +1 @@ +{"version":3,"file":"configure.js","sources":["configure.litcoffee"],"names":[],"mappings":"AAAI,IAAA,kDAAA;EAAA;;AAAA,CAAA,GAAI,OAAA,CAAQ,YAAR;;AACJ,EAAA,GAAK,OAAA,CAAQ,UAAR;;AACL,IAAA,GAAO,OAAA,CAAQ,MAAR;;AACP,WAAA,GAAc,OAAA,CAAQ,eAAR;;AACd,aAAA,GAAgB,OAAA,CAAQ,iBAAR;;AAMhB,MAAM,CAAC,OAAP,GAAiB,SAAA,GAAY,SAAC,OAAD,EAAU,QAAV,EAAoB,SAApB;AAC3B,MAAA;EAAA,MAAA,GAAS,CAAC,CAAC,MAAF,CAAS,EAAT,EAAa,QAAb,EAAuB,CAAC,CAAC,IAAF,UAAO,CAAA,OAAS,SAAA,WAAA,CAAC,CAAC,IAAF,CAAO,QAAP,CAAA,CAAA,CAAhB,CAAvB;EAIT,MAAM,CAAC,SAAP,GAAmB,aAAA,CAAc,SAAd;EAOnB,IAAG,OAAO,CAAC,QAAX;IACE,IAAA,CAAO,OAAO,CAAC,GAAf;MACE,OAAO,CAAC,IAAR,CAAa,qCAAb,EADF;;IAEA,MAAM,CAAC,MAAP,GAAgB,KAHlB;GAAA,MAAA;IAKE,GAAA,GAAM,MAAM,CAAC,MAAP,GAAgB,IAAI,CAAC,IAAL,CAAU,SAAV,EAAqB,cAArB,EAAqC,MAAM,CAAC,MAA5C;IACtB,IAAiD,EAAE,CAAC,UAAH,CAAc,IAAI,CAAC,IAAL,CAAU,GAAV,EAAe,QAAf,CAAd,CAAjD;MAAA,MAAM,EAAC,MAAD,EAAN,GAAsB,IAAI,CAAC,IAAL,CAAU,GAAV,EAAe,QAAf,EAAtB;;IACA,MAAM,CAAC,QAAP,GAAsB,IAAI,CAAC,IAAL,CAAU,GAAV,EAAe,WAAf;IACtB,MAAM,CAAC,GAAP,GAAsB,OAAO,CAAC,GAAR,IAAe,IAAI,CAAC,IAAL,CAAU,GAAV,EAAe,WAAf,EARvC;;EASA,MAAM,CAAC,QAAP,GAAkB,CAAC,CAAC,QAAF,CAAW,EAAE,CAAC,YAAH,CAAgB,MAAM,CAAC,QAAvB,CAAgC,CAAC,QAAjC,CAAA,CAAX;EAElB,IAAG,OAAO,CAAC,MAAX;IACE,MAAM,CAAC,MAAP,GAAgB,IAAI,CAAC,KAAL,CAAW,EAAE,CAAC,YAAH,CAAgB,OAAO,CAAC,MAAxB,CAAX,EADlB;;EAGA,MAAM,CAAC,OAAP,GAAiB,OAAO,CAAC,IAAI,CAAC,MAAb,CAAoB,SAAC,MAAD;AACnC,QAAA;IAAA,IAAA,GAAO,WAAA,CAAY,MAAZ,EAAoB,SAApB,EAA+B,MAAM,CAAC,SAAtC;IACP,IAAA,CAA4E,IAA5E;MAAA,OAAO,CAAC,IAAR,CAAa,+BAAA,GAA+B,CAAC,IAAI,CAAC,QAAL,CAAc,MAAd,CAAD,CAA/B,GAAqD,GAAlE,EAAA;;WACA;EAHmC,CAApB,CAIhB,CAAC,IAJe,CAAA;SAMjB;AAhC2B","sourcesContent":[" _ = require 'underscore'\n fs = require 'fs-extra'\n path = require 'path'\n getLanguage = require './getLanguage'\n buildMatchers = require './buildMatchers'\n\n**Configure** this particular run of Docco. We might use a passed-in external\ntemplate, or one of the built-in **layouts**. We only attempt to process\nsource files for languages for which we have definitions.\n\n module.exports = configure = (options, defaults, languages) ->\n config = _.extend {}, defaults, _.pick(options, _.keys(defaults)...)\n\nBuild out the appropriate matchers and delimiters for each language.\n\n config.languages = buildMatchers languages\n\nThe user is able to override the layout file used with the `--template` parameter.\nIn this case, it is also neccessary to explicitly specify a stylesheet file.\nThese custom templates are compiled exactly like the predefined ones, but the `public` folder\nis only copied for the latter.\n\n if options.template\n unless options.css\n console.warn \"docco: no stylesheet file specified\"\n config.layout = null\n else\n dir = config.layout = path.join __dirname, '../resources', config.layout\n config.public = path.join dir, 'public' if fs.existsSync path.join dir, 'public'\n config.template = path.join dir, 'docco.jst'\n config.css = options.css or path.join dir, 'docco.css'\n config.template = _.template fs.readFileSync(config.template).toString()\n\n if options.marked\n config.marked = JSON.parse fs.readFileSync(options.marked)\n\n config.sources = options.args.filter((source) ->\n lang = getLanguage source, languages, config.extension\n console.warn \"docco: skipped unknown type (#{path.basename source})\" unless lang\n lang\n ).sort()\n\n config\n"]} \ No newline at end of file diff --git a/src/configure.litcoffee b/src/configure.litcoffee new file mode 100755 index 00000000..92ef6a66 --- /dev/null +++ b/src/configure.litcoffee @@ -0,0 +1,43 @@ + _ = require 'underscore' + fs = require 'fs-extra' + path = require 'path' + getLanguage = require './getLanguage' + buildMatchers = require './buildMatchers' + +**Configure** this particular run of Docco. We might use a passed-in external +template, or one of the built-in **layouts**. We only attempt to process +source files for languages for which we have definitions. + + module.exports = configure = (options, defaults, languages) -> + config = _.extend {}, defaults, _.pick(options, _.keys(defaults)...) + +Build out the appropriate matchers and delimiters for each language. + + config.languages = buildMatchers languages + +The user is able to override the layout file used with the `--template` parameter. +In this case, it is also neccessary to explicitly specify a stylesheet file. +These custom templates are compiled exactly like the predefined ones, but the `public` folder +is only copied for the latter. + + if options.template + unless options.css + console.warn "docco: no stylesheet file specified" + config.layout = null + else + dir = config.layout = path.join __dirname, '../resources', config.layout + config.public = path.join dir, 'public' if fs.existsSync path.join dir, 'public' + config.template = path.join dir, 'docco.jst' + config.css = options.css or path.join dir, 'docco.css' + config.template = _.template fs.readFileSync(config.template).toString() + + if options.marked + config.marked = JSON.parse fs.readFileSync(options.marked) + + config.sources = options.args.filter((source) -> + lang = getLanguage source, languages, config.extension + console.warn "docco: skipped unknown type (#{path.basename source})" unless lang + lang + ).sort() + + config diff --git a/src/document.js b/src/document.js new file mode 100755 index 00000000..c0e40727 --- /dev/null +++ b/src/document.js @@ -0,0 +1,106 @@ +var _, commander, document, format, fs, getLanguage, glob, highlightjs, marked, parse, path, write; + +_ = require('underscore'); + +fs = require('fs-extra'); + +path = require('path'); + +marked = require('marked'); + +commander = require('commander'); + +highlightjs = require('highlight.js'); + +path = require('path'); + +glob = require('glob'); + +getLanguage = require('./getLanguage'); + +parse = require('./parse'); + +format = require('./format'); + +write = require('./write'); + +document = function(config, callback) { + if (config == null) { + config = {}; + } + fs.mkdirs(config.output, function() { + var complete, copyAsset, files, nextFile; + callback || (callback = function(error) { + if (error) { + throw error; + } + }); + copyAsset = function(file, callback) { + if (!fs.existsSync(file)) { + return callback(); + } + return fs.copy(file, path.join(config.output, path.basename(file)), callback); + }; + complete = function() { + return copyAsset(config.css, function(error) { + if (error) { + return callback(error); + } + if (fs.existsSync(config["public"])) { + return copyAsset(config["public"], callback); + } + return callback(); + }); + }; + files = config.sources.slice(); + nextFile = function() { + var language, source, toDirectory, toFile; + source = files.shift(); + language = config.informationOnFiles[source].language; + if (config.flatten && !language.copy) { + toDirectory = config.output; + } else { + toDirectory = config.root + '/' + config.output + '/' + (path.dirname(source)); + } + if (!fs.existsSync(toDirectory)) { + fs.mkdirsSync(toDirectory); + } + if (language.copy) { + toFile = toDirectory + '/' + path.basename(source); + console.log("docco: " + source + " -> " + toFile); + return fs.copy(source, toFile, function(error, result) { + if (error) { + return callback(error); + } + if (files.length) { + return nextFile(); + } else { + return complete(); + } + }); + } else { + return fs.readFile(source, function(error, buffer) { + var code, sections; + if (error) { + return callback(error); + } + code = buffer.toString(); + sections = parse(source, language, code, config); + format(source, language, sections, config); + toFile = toDirectory + '/' + (path.basename(source, path.extname(source))); + write(source, sections, config); + if (files.length) { + return nextFile(); + } else { + return complete(); + } + }); + } + }; + return nextFile(); + }); +}; + +module.exports = document; + +//# sourceMappingURL=document.js.map diff --git a/src/document.js.map b/src/document.js.map new file mode 100644 index 00000000..5d32045d --- /dev/null +++ b/src/document.js.map @@ -0,0 +1 @@ +{"version":3,"file":"document.js","sources":["document.litcoffee"],"names":[],"mappings":"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","sourcesContent":[" _ = require 'underscore'\n fs = require 'fs-extra'\n path = require 'path'\n marked = require 'marked'\n commander = require 'commander'\n highlightjs = require 'highlight.js'\n path = require 'path'\n glob = require 'glob'\n\n getLanguage = require './getLanguage'\n parse = require './parse'\n format = require './format'\n write = require './write'\n\nGenerate the documentation for our configured source file by copying over static\nassets, reading all the source files in, splitting them up into prose+code\nsections, highlighting each file in the appropriate language, and printing them\nout in an HTML template.\n\n document = (config = {}, callback) ->\n\n fs.mkdirs config.output, ->\n\n callback or= (error) -> throw error if error\n copyAsset = (file, callback) ->\n return callback() unless fs.existsSync file\n fs.copy file, path.join(config.output, path.basename(file)), callback\n\n complete = ->\n copyAsset config.css, (error) ->\n return callback error if error\n return copyAsset config.public, callback if fs.existsSync config.public\n callback()\n\n files = config.sources.slice()\n\n nextFile = () ->\n source = files.shift()\n\nIf keeping the directory hierarchy, then insert the file's relative directory in to the path.\n\n language = config.informationOnFiles[source].language\n\n if config.flatten and !language.copy\n toDirectory = config.output\n else\n toDirectory = config.root + '/' + config.output + '/' + (path.dirname source)\n\nMake sure the target directory exits.\n\n # todo: async versions of exits and mkdir.\n if !fs.existsSync(toDirectory)\n fs.mkdirsSync(toDirectory)\n\nImplementation of copying files if specified in the language file\n\n if language.copy\n toFile = toDirectory + '/' + path.basename source\n console.log \"docco: #{source} -> #{toFile}\"\n\n fs.copy source, toFile, (error, result) ->\n return callback(error) if error\n if files.length then nextFile() else complete()\n\nImplementation of spliting comments and code into split view html files.\n\n else\n fs.readFile source, (error, buffer) ->\n return callback(error) if error\n\n code = buffer.toString()\n\n sections = parse source, language, code, config\n format source, language, sections, config\n toFile = toDirectory + '/' + (path.basename source, path.extname source)\n\n write source, sections, config\n if files.length then nextFile() else complete()\n\n nextFile()\n return\n\n module.exports = document\n"]} \ No newline at end of file diff --git a/src/document.litcoffee b/src/document.litcoffee new file mode 100755 index 00000000..8bddbe6c --- /dev/null +++ b/src/document.litcoffee @@ -0,0 +1,83 @@ + _ = require 'underscore' + fs = require 'fs-extra' + path = require 'path' + marked = require 'marked' + commander = require 'commander' + highlightjs = require 'highlight.js' + path = require 'path' + glob = require 'glob' + + getLanguage = require './getLanguage' + parse = require './parse' + format = require './format' + write = require './write' + +Generate the documentation for our configured source file by copying over static +assets, reading all the source files in, splitting them up into prose+code +sections, highlighting each file in the appropriate language, and printing them +out in an HTML template. + + document = (config = {}, callback) -> + + fs.mkdirs config.output, -> + + callback or= (error) -> throw error if error + copyAsset = (file, callback) -> + return callback() unless fs.existsSync file + fs.copy file, path.join(config.output, path.basename(file)), callback + + complete = -> + copyAsset config.css, (error) -> + return callback error if error + return copyAsset config.public, callback if fs.existsSync config.public + callback() + + files = config.sources.slice() + + nextFile = () -> + source = files.shift() + +If keeping the directory hierarchy, then insert the file's relative directory in to the path. + + language = config.informationOnFiles[source].language + + if config.flatten and !language.copy + toDirectory = config.output + else + toDirectory = config.root + '/' + config.output + '/' + (path.dirname source) + +Make sure the target directory exits. + + # todo: async versions of exits and mkdir. + if !fs.existsSync(toDirectory) + fs.mkdirsSync(toDirectory) + +Implementation of copying files if specified in the language file + + if language.copy + toFile = toDirectory + '/' + path.basename source + console.log "docco: #{source} -> #{toFile}" + + fs.copy source, toFile, (error, result) -> + return callback(error) if error + if files.length then nextFile() else complete() + +Implementation of spliting comments and code into split view html files. + + else + fs.readFile source, (error, buffer) -> + return callback(error) if error + + code = buffer.toString() + + sections = parse source, language, code, config + format source, language, sections, config + toFile = toDirectory + '/' + (path.basename source, path.extname source) + + write source, sections, config + if files.length then nextFile() else complete() + + nextFile() + return + + module.exports = document diff --git a/src/format.js b/src/format.js new file mode 100755 index 00000000..8f3c9860 --- /dev/null +++ b/src/format.js @@ -0,0 +1,54 @@ +var _, commander, format, fs, glob, highlightjs, marked, path; + +_ = require('underscore'); + +fs = require('fs-extra'); + +path = require('path'); + +marked = require('marked'); + +commander = require('commander'); + +highlightjs = require('highlight.js'); + +path = require('path'); + +glob = require('glob'); + +module.exports = format = function(source, language, sections, config) { + var code, i, j, len, markedOptions, results, section; + markedOptions = { + smartypants: true + }; + if (config.marked) { + markedOptions = config.marked; + } + marked.setOptions(markedOptions); + marked.setOptions({ + highlight: function(code, lang) { + lang || (lang = language.name); + if (highlightjs.getLanguage(lang)) { + return highlightjs.highlight(lang, code).value; + } else { + console.warn("docco: couldn't highlight code block with unknown language '" + lang + "' in " + source); + return code; + } + } + }); + results = []; + for (i = j = 0, len = sections.length; j < len; i = ++j) { + section = sections[i]; + if (language.html) { + section.codeHtml = section.codeText; + } else { + code = highlightjs.highlight(language.name, section.codeText).value; + code = code.replace(/\s+$/, ''); + section.codeHtml = "<div class='highlight'><pre>" + code + "</pre></div>"; + } + results.push(section.docsHtml = marked(section.docsText)); + } + return results; +}; + +//# sourceMappingURL=format.js.map diff --git a/src/format.js.map b/src/format.js.map new file mode 100644 index 00000000..8dd398f0 --- /dev/null +++ b/src/format.js.map @@ -0,0 +1 @@ +{"version":3,"file":"format.js","sources":["format.litcoffee"],"names":[],"mappings":"AAAI,IAAA;;AAAA,CAAA,GAAc,OAAA,CAAQ,YAAR;;AACd,EAAA,GAAc,OAAA,CAAQ,UAAR;;AACd,IAAA,GAAc,OAAA,CAAQ,MAAR;;AACd,MAAA,GAAc,OAAA,CAAQ,QAAR;;AACd,SAAA,GAAc,OAAA,CAAQ,WAAR;;AACd,WAAA,GAAc,OAAA,CAAQ,cAAR;;AACd,IAAA,GAAc,OAAA,CAAQ,MAAR;;AACd,IAAA,GAAc,OAAA,CAAQ,MAAR;;AAMd,MAAM,CAAC,OAAP,GAAiB,MAAA,GAAS,SAAC,MAAD,EAAS,QAAT,EAAmB,QAAnB,EAA6B,MAA7B;AAIxB,MAAA;EAAA,aAAA,GACE;IAAA,WAAA,EAAa,IAAb;;EAEF,IAAG,MAAM,CAAC,MAAV;IACE,aAAA,GAAgB,MAAM,CAAC,OADzB;;EAGA,MAAM,CAAC,UAAP,CAAkB,aAAlB;EAMA,MAAM,CAAC,UAAP,CAAkB;IAChB,SAAA,EAAW,SAAC,IAAD,EAAO,IAAP;MACT,SAAA,OAAS,QAAQ,CAAC;MAElB,IAAG,WAAW,CAAC,WAAZ,CAAwB,IAAxB,CAAH;eACE,WAAW,CAAC,SAAZ,CAAsB,IAAtB,EAA4B,IAA5B,CAAiC,CAAC,MADpC;OAAA,MAAA;QAGE,OAAO,CAAC,IAAR,CAAa,8DAAA,GAA+D,IAA/D,GAAoE,OAApE,GAA2E,MAAxF;eACA,KAJF;;IAHS,CADK;GAAlB;AAWA;OAAA,kDAAA;;IACE,IAAG,QAAQ,CAAC,IAAZ;MACE,OAAO,CAAC,QAAR,GAAmB,OAAO,CAAC,SAD7B;KAAA,MAAA;MAGE,IAAA,GAAO,WAAW,CAAC,SAAZ,CAAsB,QAAQ,CAAC,IAA/B,EAAqC,OAAO,CAAC,QAA7C,CAAsD,CAAC;MAC9D,IAAA,GAAO,IAAI,CAAC,OAAL,CAAa,MAAb,EAAqB,EAArB;MACP,OAAO,CAAC,QAAR,GAAmB,8BAAA,GAA+B,IAA/B,GAAoC,eALzD;;iBAMA,OAAO,CAAC,QAAR,GAAmB,MAAA,CAAO,OAAO,CAAC,QAAf;AAPrB;;AA3BwB","sourcesContent":[" _ = require 'underscore'\n fs = require 'fs-extra'\n path = require 'path'\n marked = require 'marked'\n commander = require 'commander'\n highlightjs = require 'highlight.js'\n path = require 'path'\n glob = require 'glob'\n\nTo **format** and highlight the now-parsed sections of code, we use **Highlight.js**\nover stdio, and run the text of their corresponding comments through\n**Markdown**, using [Marked](https://github.com/chjj/marked).\n\n module.exports = format = (source, language, sections, config) ->\n\nPass any user defined options to Marked if specified via command line option\n\n markedOptions =\n smartypants: true\n\n if config.marked\n markedOptions = config.marked\n\n marked.setOptions markedOptions\n\nTell Marked how to highlight code blocks within comments, treating that code\nas either the language specified in the code block or the language of the file\nif not specified.\n\n marked.setOptions {\n highlight: (code, lang) ->\n lang or= language.name\n\n if highlightjs.getLanguage(lang)\n highlightjs.highlight(lang, code).value\n else\n console.warn \"docco: couldn't highlight code block with unknown language '#{lang}' in #{source}\"\n code\n }\n\n for section, i in sections\n if language.html\n section.codeHtml = section.codeText\n else\n code = highlightjs.highlight(language.name, section.codeText).value\n code = code.replace(/\\s+$/, '')\n section.codeHtml = \"<div class='highlight'><pre>#{code}</pre></div>\"\n section.docsHtml = marked(section.docsText)\n\n"]} \ No newline at end of file diff --git a/src/format.litcoffee b/src/format.litcoffee new file mode 100755 index 00000000..e49dbab7 --- /dev/null +++ b/src/format.litcoffee @@ -0,0 +1,49 @@ + _ = require 'underscore' + fs = require 'fs-extra' + path = require 'path' + marked = require 'marked' + commander = require 'commander' + highlightjs = require 'highlight.js' + path = require 'path' + glob = require 'glob' + +To **format** and highlight the now-parsed sections of code, we use **Highlight.js** +over stdio, and run the text of their corresponding comments through +**Markdown**, using [Marked](https://github.com/chjj/marked). + + module.exports = format = (source, language, sections, config) -> + +Pass any user defined options to Marked if specified via command line option + + markedOptions = + smartypants: true + + if config.marked + markedOptions = config.marked + + marked.setOptions markedOptions + +Tell Marked how to highlight code blocks within comments, treating that code +as either the language specified in the code block or the language of the file +if not specified. + + marked.setOptions { + highlight: (code, lang) -> + lang or= language.name + + if highlightjs.getLanguage(lang) + highlightjs.highlight(lang, code).value + else + console.warn "docco: couldn't highlight code block with unknown language '#{lang}' in #{source}" + code + } + + for section, i in sections + if language.html + section.codeHtml = section.codeText + else + code = highlightjs.highlight(language.name, section.codeText).value + code = code.replace(/\s+$/, '') + section.codeHtml = "<div class='highlight'><pre>#{code}</pre></div>" + section.docsHtml = marked(section.docsText) + diff --git a/src/getCSSPath.js b/src/getCSSPath.js new file mode 100755 index 00000000..4bf32d61 --- /dev/null +++ b/src/getCSSPath.js @@ -0,0 +1,16 @@ +var getCSSPath, path; + +path = require('path'); + +getCSSPath = function(cssFile, targetDirectory, file) { + var css, cssPath; + css = path.parse(cssFile); + css.file = targetDirectory + '/' + css.base; + cssPath = path.relative(file, css.file); + cssPath = cssPath.slice(3); + return cssPath; +}; + +module.exports = getCSSPath; + +//# sourceMappingURL=getCSSPath.js.map diff --git a/src/getCSSPath.js.map b/src/getCSSPath.js.map new file mode 100644 index 00000000..504d325d --- /dev/null +++ b/src/getCSSPath.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getCSSPath.js","sources":["getCSSPath.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,IAAA,GAAc,OAAA,CAAQ,MAAR;;AAEd,UAAA,GAAa,SAAC,OAAD,EAAU,eAAV,EAA2B,IAA3B;AACX,MAAA;EAAA,GAAA,GAAM,IAAI,CAAC,KAAL,CAAW,OAAX;EACN,GAAG,CAAC,IAAJ,GAAW,eAAA,GAAgB,GAAhB,GAAoB,GAAG,CAAC;EAEnC,OAAA,GAAU,IAAI,CAAC,QAAL,CAAc,IAAd,EAAoB,GAAG,CAAC,IAAxB;EACV,OAAA,GAAU,OAAO,CAAC,KAAR,CAAc,CAAd;SAEV;AAPW;;AASb,MAAM,CAAC,OAAP,GAAiB","sourcesContent":["This function determines the relative path of any html file in the destination folder to the css file.\n\n path = require 'path'\n\n getCSSPath = (cssFile, targetDirectory, file) ->\n css = path.parse(cssFile)\n css.file = targetDirectory+'/'+css.base\n\n cssPath = path.relative(file, css.file)\n cssPath = cssPath.slice(3)\n\n cssPath\n\n module.exports = getCSSPath"]} \ No newline at end of file diff --git a/src/getCSSPath.litcoffee b/src/getCSSPath.litcoffee new file mode 100755 index 00000000..49ad668c --- /dev/null +++ b/src/getCSSPath.litcoffee @@ -0,0 +1,14 @@ +This function determines the relative path of any html file in the destination folder to the css file. + + path = require 'path' + + getCSSPath = (cssFile, targetDirectory, file) -> + css = path.parse(cssFile) + css.file = targetDirectory+'/'+css.base + + cssPath = path.relative(file, css.file) + cssPath = cssPath.slice(3) + + cssPath + + module.exports = getCSSPath \ No newline at end of file diff --git a/src/getDestinationInformation.js b/src/getDestinationInformation.js new file mode 100755 index 00000000..eb2d652a --- /dev/null +++ b/src/getDestinationInformation.js @@ -0,0 +1,34 @@ +var getDestinationInformation, path; + +path = require('path'); + +getDestinationInformation = function(language, source, rootDirectory, targetDirectory, flatten) { + var destination; + destination = {}; + destination.root = rootDirectory; + if (flatten && !language.copy) { + destination.dir = targetDirectory; + } else { + destination.dir = source.dir === '' ? targetDirectory : targetDirectory + "/" + source.dir; + } + if (language.copy) { + destination.ext = source.ext; + } else { + destination.ext = '.html'; + } + destination.base = source.name + destination.ext; + destination.name = source.name; + destination.file = destination.dir + '/' + source.name + destination.ext; + if (flatten && !language.copy) { + destination.relativefile = source.name + destination.ext; + } else { + destination.relativefile = source.dir === '' ? source.name + destination.ext : source.dir + '/' + source.name + destination.ext; + } + destination.path = destination.root + '/' + destination.file; + destination.pathdir = path.dirname(destination.path); + return destination; +}; + +module.exports = getDestinationInformation; + +//# sourceMappingURL=getDestinationInformation.js.map diff --git a/src/getDestinationInformation.js.map b/src/getDestinationInformation.js.map new file mode 100644 index 00000000..19e3034e --- /dev/null +++ b/src/getDestinationInformation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getDestinationInformation.js","sources":["getDestinationInformation.litcoffee"],"names":[],"mappings":"AACI,IAAA;;AAAA,IAAA,GAAc,OAAA,CAAQ,MAAR;;AAGd,yBAAA,GAA4B,SAAC,QAAD,EAAW,MAAX,EAAmB,aAAnB,EAAkC,eAAlC,EAAmD,OAAnD;AAC1B,MAAA;EAAA,WAAA,GAAc;EACd,WAAW,CAAC,IAAZ,GAAmB;EAEnB,IAAG,OAAA,IAAY,CAAC,QAAQ,CAAC,IAAzB;IACE,WAAW,CAAC,GAAZ,GAAkB,gBADpB;GAAA,MAAA;IAGE,WAAW,CAAC,GAAZ,GAAqB,MAAM,CAAC,GAAP,KAAc,EAAjB,GAAyB,eAAzB,GAA8C,eAAA,GAAgB,GAAhB,GAAoB,MAAM,CAAC,IAH7F;;EAKA,IAAG,QAAQ,CAAC,IAAZ;IACE,WAAW,CAAC,GAAZ,GAAkB,MAAM,CAAC,IAD3B;GAAA,MAAA;IAGE,WAAW,CAAC,GAAZ,GAAkB,QAHpB;;EAKA,WAAW,CAAC,IAAZ,GAAmB,MAAM,CAAC,IAAP,GAAc,WAAW,CAAC;EAC7C,WAAW,CAAC,IAAZ,GAAmB,MAAM,CAAC;EAC1B,WAAW,CAAC,IAAZ,GAAmB,WAAW,CAAC,GAAZ,GAAgB,GAAhB,GAAoB,MAAM,CAAC,IAA3B,GAAkC,WAAW,CAAC;EACjE,IAAG,OAAA,IAAY,CAAC,QAAQ,CAAC,IAAzB;IACE,WAAW,CAAC,YAAZ,GAA2B,MAAM,CAAC,IAAP,GAAY,WAAW,CAAC,IADrD;GAAA,MAAA;IAGE,WAAW,CAAC,YAAZ,GAA8B,MAAM,CAAC,GAAP,KAAc,EAAjB,GAAyB,MAAM,CAAC,IAAP,GAAY,WAAW,CAAC,GAAjD,GAA0D,MAAM,CAAC,GAAP,GAAW,GAAX,GAAe,MAAM,CAAC,IAAtB,GAA6B,WAAW,CAAC,IAHhI;;EAKA,WAAW,CAAC,IAAZ,GAAmB,WAAW,CAAC,IAAZ,GAAiB,GAAjB,GAAqB,WAAW,CAAC;EACpD,WAAW,CAAC,OAAZ,GAAsB,IAAI,CAAC,OAAL,CAAa,WAAW,CAAC,IAAzB;SAEtB;AAzB0B;;AA2B5B,MAAM,CAAC,OAAP,GAAiB","sourcesContent":["\n path = require 'path'\n\n\n getDestinationInformation = (language, source, rootDirectory, targetDirectory, flatten) ->\n destination = { }\n destination.root = rootDirectory\n\n if flatten and !language.copy\n destination.dir = targetDirectory\n else\n destination.dir = if source.dir is '' then targetDirectory else targetDirectory+\"/\"+source.dir\n\n if language.copy\n destination.ext = source.ext\n else\n destination.ext = '.html'\n\n destination.base = source.name + destination.ext\n destination.name = source.name\n destination.file = destination.dir+'/'+source.name + destination.ext\n if flatten and !language.copy\n destination.relativefile = source.name+destination.ext\n else\n destination.relativefile = if source.dir is '' then source.name+destination.ext else source.dir+'/'+source.name + destination.ext\n\n destination.path = destination.root+'/'+destination.file\n destination.pathdir = path.dirname destination.path\n\n destination\n\n module.exports = getDestinationInformation"]} \ No newline at end of file diff --git a/src/getDestinationInformation.litcoffee b/src/getDestinationInformation.litcoffee new file mode 100755 index 00000000..70726504 --- /dev/null +++ b/src/getDestinationInformation.litcoffee @@ -0,0 +1,32 @@ + + path = require 'path' + + + getDestinationInformation = (language, source, rootDirectory, targetDirectory, flatten) -> + destination = { } + destination.root = rootDirectory + + if flatten and !language.copy + destination.dir = targetDirectory + else + destination.dir = if source.dir is '' then targetDirectory else targetDirectory+"/"+source.dir + + if language.copy + destination.ext = source.ext + else + destination.ext = '.html' + + destination.base = source.name + destination.ext + destination.name = source.name + destination.file = destination.dir+'/'+source.name + destination.ext + if flatten and !language.copy + destination.relativefile = source.name+destination.ext + else + destination.relativefile = if source.dir is '' then source.name+destination.ext else source.dir+'/'+source.name + destination.ext + + destination.path = destination.root+'/'+destination.file + destination.pathdir = path.dirname destination.path + + destination + + module.exports = getDestinationInformation \ No newline at end of file diff --git a/src/getInformationOnFiles.js b/src/getInformationOnFiles.js new file mode 100755 index 00000000..ce535fb3 --- /dev/null +++ b/src/getInformationOnFiles.js @@ -0,0 +1,62 @@ +var _, commander, fs, getCSSPath, getDestinationInformation, getInformationOnFiles, getLanguage, getOthers, getRelativePath, getSourceInformation, glob, highlightjs, marked, path; + +_ = require('underscore'); + +fs = require('fs-extra'); + +path = require('path'); + +marked = require('marked'); + +commander = require('commander'); + +highlightjs = require('highlight.js'); + +path = require('path'); + +glob = require('glob'); + +getSourceInformation = require('./getSourceInformation'); + +getDestinationInformation = require('./getDestinationInformation'); + +getRelativePath = require('./getRelativePath'); + +getCSSPath = require('./getCSSPath'); + +getOthers = require('./getOthers'); + +getLanguage = require('./getLanguage'); + +module.exports = getInformationOnFiles = function(config) { + var destination, destinations, file, i, informationOnFiles, j, language, len, len1, others, ref, ref1, rootDirectory, source, sourceDirectory, targetDirectory; + targetDirectory = config.output; + sourceDirectory = config.root; + rootDirectory = config.root; + informationOnFiles = {}; + ref = config.sources; + for (i = 0, len = ref.length; i < len; i++) { + file = ref[i]; + language = getLanguage(file, config.languages, config.extension); + if (language == null) { + language = getLanguage('not-supported', config.languages); + } + source = getSourceInformation(file, rootDirectory, config.flatten); + destinations = {}; + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, config.flatten); + destination.css = getCSSPath(config.css, targetDirectory, destination.file); + informationOnFiles[file] = {}; + informationOnFiles[file].destination = destination; + informationOnFiles[file].source = source; + informationOnFiles[file].language = language; + } + ref1 = config.sources; + for (j = 0, len1 = ref1.length; j < len1; j++) { + file = ref1[j]; + others = getOthers(file, informationOnFiles, config); + informationOnFiles[file].others = others; + } + return informationOnFiles; +}; + +//# sourceMappingURL=getInformationOnFiles.js.map diff --git a/src/getInformationOnFiles.js.map b/src/getInformationOnFiles.js.map new file mode 100644 index 00000000..0964cc90 --- /dev/null +++ b/src/getInformationOnFiles.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getInformationOnFiles.js","sources":["getInformationOnFiles.litcoffee"],"names":[],"mappings":"AAAI,IAAA;;AAAA,CAAA,GAAc,OAAA,CAAQ,YAAR;;AACd,EAAA,GAAc,OAAA,CAAQ,UAAR;;AACd,IAAA,GAAc,OAAA,CAAQ,MAAR;;AACd,MAAA,GAAc,OAAA,CAAQ,QAAR;;AACd,SAAA,GAAc,OAAA,CAAQ,WAAR;;AACd,WAAA,GAAc,OAAA,CAAQ,cAAR;;AACd,IAAA,GAAc,OAAA,CAAQ,MAAR;;AACd,IAAA,GAAc,OAAA,CAAQ,MAAR;;AAEd,oBAAA,GAAuB,OAAA,CAAQ,wBAAR;;AAEvB,yBAAA,GAA4B,OAAA,CAAQ,6BAAR;;AAE5B,eAAA,GAAkB,OAAA,CAAQ,mBAAR;;AAElB,UAAA,GAAa,OAAA,CAAQ,cAAR;;AAEb,SAAA,GAAY,OAAA,CAAQ,aAAR;;AAEZ,WAAA,GAAc,OAAA,CAAQ,eAAR;;AAEd,MAAM,CAAC,OAAP,GAAiB,qBAAA,GAAwB,SAAC,MAAD;AACvC,MAAA;EAAA,eAAA,GAAkB,MAAM,CAAC;EACzB,eAAA,GAAkB,MAAM,CAAC;EACzB,aAAA,GAAgB,MAAM,CAAC;EAOvB,kBAAA,GAAqB;AACrB;AAAA,OAAA,qCAAA;;IACE,QAAA,GAAW,WAAA,CAAY,IAAZ,EAAkB,MAAM,CAAC,SAAzB,EAAoC,MAAM,CAAC,SAA3C;IACX,IAAI,gBAAJ;MACE,QAAA,GAAW,WAAA,CAAY,eAAZ,EAA6B,MAAM,CAAC,SAApC,EADb;;IAKA,MAAA,GAAS,oBAAA,CAAqB,IAArB,EAA2B,aAA3B,EAA0C,MAAM,CAAC,OAAjD;IAIT,YAAA,GAAe;IACf,WAAA,GAAc,yBAAA,CAA0B,QAA1B,EAAoC,MAApC,EAA4C,aAA5C,EAA2D,eAA3D,EAA4E,MAAM,CAAC,OAAnF;IAId,WAAW,CAAC,GAAZ,GAAkB,UAAA,CAAW,MAAM,CAAC,GAAlB,EAAuB,eAAvB,EAAwC,WAAW,CAAC,IAApD;IAElB,kBAAmB,CAAA,IAAA,CAAnB,GAA2B;IAC3B,kBAAmB,CAAA,IAAA,CAAK,CAAC,WAAzB,GAAuC;IACvC,kBAAmB,CAAA,IAAA,CAAK,CAAC,MAAzB,GAAkC;IAClC,kBAAmB,CAAA,IAAA,CAAK,CAAC,QAAzB,GAAoC;AArBtC;AAyBA;AAAA,OAAA,wCAAA;;IACE,MAAA,GAAS,SAAA,CAAU,IAAV,EAAgB,kBAAhB,EAAoC,MAApC;IAET,kBAAmB,CAAA,IAAA,CAAK,CAAC,MAAzB,GAAkC;AAHpC;AAKA,SAAO;AAzCgC","sourcesContent":[" _ = require 'underscore'\n fs = require 'fs-extra'\n path = require 'path'\n marked = require 'marked'\n commander = require 'commander'\n highlightjs = require 'highlight.js'\n path = require 'path'\n glob = require 'glob'\n\n getSourceInformation = require './getSourceInformation'\n\n getDestinationInformation = require './getDestinationInformation'\n\n getRelativePath = require './getRelativePath'\n\n getCSSPath = require './getCSSPath'\n\n getOthers = require './getOthers'\n\n getLanguage = require './getLanguage'\n\n module.exports = getInformationOnFiles = (config) ->\n targetDirectory = config.output\n sourceDirectory = config.root\n rootDirectory = config.root\n\nFor each source file, figure out it's relative path to the source directory,\nthe filename without and extension, and the extension. Then figure out the\nrelative path to the targetDirectory. Then figure out the relative path between\nthe two.\n\n informationOnFiles = {}\n for file in config.sources\n language = getLanguage file, config.languages, config.extension\n if !language?\n language = getLanguage 'not-supported', config.languages\n\nFirst the source name:\n\n source = getSourceInformation(file, rootDirectory, config.flatten)\n\nNext the destination:\n\n destinations = {}\n destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, config.flatten)\n\nNow, figure out the relative paths the css:\n\n destination.css = getCSSPath(config.css, targetDirectory, destination.file)\n\n informationOnFiles[file] = {}\n informationOnFiles[file].destination = destination\n informationOnFiles[file].source = source\n informationOnFiles[file].language = language\n\nNow, figure out the relative paths to the other source files:\n\n for file in config.sources\n others = getOthers(file, informationOnFiles, config)\n\n informationOnFiles[file].others = others\n\n return informationOnFiles\n"]} \ No newline at end of file diff --git a/src/getInformationOnFiles.litcoffee b/src/getInformationOnFiles.litcoffee new file mode 100755 index 00000000..f2aa8c0f --- /dev/null +++ b/src/getInformationOnFiles.litcoffee @@ -0,0 +1,63 @@ + _ = require 'underscore' + fs = require 'fs-extra' + path = require 'path' + marked = require 'marked' + commander = require 'commander' + highlightjs = require 'highlight.js' + path = require 'path' + glob = require 'glob' + + getSourceInformation = require './getSourceInformation' + + getDestinationInformation = require './getDestinationInformation' + + getRelativePath = require './getRelativePath' + + getCSSPath = require './getCSSPath' + + getOthers = require './getOthers' + + getLanguage = require './getLanguage' + + module.exports = getInformationOnFiles = (config) -> + targetDirectory = config.output + sourceDirectory = config.root + rootDirectory = config.root + +For each source file, figure out it's relative path to the source directory, +the filename without and extension, and the extension. Then figure out the +relative path to the targetDirectory. Then figure out the relative path between +the two. + + informationOnFiles = {} + for file in config.sources + language = getLanguage file, config.languages, config.extension + if !language? + language = getLanguage 'not-supported', config.languages + +First the source name: + + source = getSourceInformation(file, rootDirectory, config.flatten) + +Next the destination: + + destinations = {} + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, config.flatten) + +Now, figure out the relative paths the css: + + destination.css = getCSSPath(config.css, targetDirectory, destination.file) + + informationOnFiles[file] = {} + informationOnFiles[file].destination = destination + informationOnFiles[file].source = source + informationOnFiles[file].language = language + +Now, figure out the relative paths to the other source files: + + for file in config.sources + others = getOthers(file, informationOnFiles, config) + + informationOnFiles[file].others = others + + return informationOnFiles diff --git a/src/getLanguage.js b/src/getLanguage.js new file mode 100755 index 00000000..58746775 --- /dev/null +++ b/src/getLanguage.js @@ -0,0 +1,22 @@ +var getLanguage, path; + +path = require('path'); + +getLanguage = function(source, languages, extension) { + var codeExt, codeLang, ext, lang; + ext = extension || path.extname(source) || path.basename(source); + lang = languages[ext]; + if (lang && lang.name === 'markdown') { + codeExt = path.extname(path.basename(source, ext)); + if (codeExt && (codeLang = languages[codeExt])) { + lang = _.extend({}, codeLang, { + literate: true + }); + } + } + return lang; +}; + +module.exports = getLanguage; + +//# sourceMappingURL=getLanguage.js.map diff --git a/src/getLanguage.js.map b/src/getLanguage.js.map new file mode 100644 index 00000000..e447e991 --- /dev/null +++ b/src/getLanguage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getLanguage.js","sources":["getLanguage.litcoffee"],"names":[],"mappings":"AACI,IAAA;;AAAA,IAAA,GAAO,OAAA,CAAQ,MAAR;;AAKP,WAAA,GAAc,SAAC,MAAD,EAAS,SAAT,EAAoB,SAApB;AACZ,MAAA;EAAA,GAAA,GAAO,SAAA,IAAa,IAAI,CAAC,OAAL,CAAa,MAAb,CAAb,IAAqC,IAAI,CAAC,QAAL,CAAc,MAAd;EAC5C,IAAA,GAAO,SAAU,CAAA,GAAA;EACjB,IAAG,IAAA,IAAS,IAAI,CAAC,IAAL,KAAa,UAAzB;IACE,OAAA,GAAU,IAAI,CAAC,OAAL,CAAa,IAAI,CAAC,QAAL,CAAc,MAAd,EAAsB,GAAtB,CAAb;IACV,IAAG,OAAA,IAAY,CAAA,QAAA,GAAW,SAAU,CAAA,OAAA,CAArB,CAAf;MACE,IAAA,GAAO,CAAC,CAAC,MAAF,CAAS,EAAT,EAAa,QAAb,EAAuB;QAAC,QAAA,EAAU,IAAX;OAAvB,EADT;KAFF;;SAIA;AAPY;;AASd,MAAM,CAAC,OAAP,GAAiB","sourcesContent":["\n path = require 'path'\n\nA function to get the current language we're documenting, based on the\nfile extension. Detect and tag \"literate\" `.ext.md` variants.\n\n getLanguage = (source, languages, extension) ->\n ext = extension or path.extname(source) or path.basename(source)\n lang = languages[ext]\n if lang and lang.name is 'markdown'\n codeExt = path.extname(path.basename(source, ext))\n if codeExt and codeLang = languages[codeExt]\n lang = _.extend {}, codeLang, {literate: yes}\n lang\n\n module.exports = getLanguage"]} \ No newline at end of file diff --git a/src/getLanguage.litcoffee b/src/getLanguage.litcoffee new file mode 100755 index 00000000..5f416406 --- /dev/null +++ b/src/getLanguage.litcoffee @@ -0,0 +1,16 @@ + + path = require 'path' + +A function to get the current language we're documenting, based on the +file extension. Detect and tag "literate" `.ext.md` variants. + + getLanguage = (source, languages, extension) -> + ext = extension or path.extname(source) or path.basename(source) + lang = languages[ext] + if lang and lang.name is 'markdown' + codeExt = path.extname(path.basename(source, ext)) + if codeExt and codeLang = languages[codeExt] + lang = _.extend {}, codeLang, {literate: yes} + lang + + module.exports = getLanguage \ No newline at end of file diff --git a/src/getOthers.js b/src/getOthers.js new file mode 100755 index 00000000..87f0f59e --- /dev/null +++ b/src/getOthers.js @@ -0,0 +1,27 @@ +var getOthers, getRelativePath; + +getRelativePath = require('./getRelativePath'); + +getOthers = function(file, informationOnFiles, config) { + var destinationFileInformation, i, image, len, other, others, ref, source, sourceFileInformation, target; + sourceFileInformation = informationOnFiles[file]; + source = sourceFileInformation.source; + others = {}; + ref = config.sources; + for (i = 0, len = ref.length; i < len; i++) { + other = ref[i]; + destinationFileInformation = informationOnFiles[other]; + target = destinationFileInformation.destination; + image = destinationFileInformation.language.name === 'image'; + others[target.base] = { + link: getRelativePath(source.relativefile, target.relativefile, target.base), + file: other, + image: image + }; + } + return others; +}; + +module.exports = getOthers; + +//# sourceMappingURL=getOthers.js.map diff --git a/src/getOthers.js.map b/src/getOthers.js.map new file mode 100644 index 00000000..5326014e --- /dev/null +++ b/src/getOthers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getOthers.js","sources":["getOthers.litcoffee"],"names":[],"mappings":"AAAI,IAAA;;AAAA,eAAA,GAAkB,OAAA,CAAQ,mBAAR;;AAElB,SAAA,GAAY,SAAC,IAAD,EAAO,kBAAP,EAA2B,MAA3B;AACV,MAAA;EAAA,qBAAA,GAAwB,kBAAmB,CAAA,IAAA;EAC3C,MAAA,GAAS,qBAAqB,CAAC;EAC/B,MAAA,GAAS;AACT;AAAA,OAAA,qCAAA;;IACE,0BAAA,GAA6B,kBAAmB,CAAA,KAAA;IAChD,MAAA,GAAS,0BAA0B,CAAC;IACpC,KAAA,GAAQ,0BAA0B,CAAC,QAAQ,CAAC,IAApC,KAA4C;IAEpD,MAAO,CAAA,MAAM,CAAC,IAAP,CAAP,GAAsB;MACpB,IAAA,EAAM,eAAA,CAAgB,MAAM,CAAC,YAAvB,EAAqC,MAAM,CAAC,YAA5C,EAA0D,MAAM,CAAC,IAAjE,CADc;MAEpB,IAAA,EAAM,KAFc;MAGpB,KAAA,EAAO,KAHa;;AALxB;SAWA;AAfU;;AAiBZ,MAAM,CAAC,OAAP,GAAiB","sourcesContent":[" getRelativePath = require './getRelativePath'\n\n getOthers = (file, informationOnFiles, config) ->\n sourceFileInformation = informationOnFiles[file]\n source = sourceFileInformation.source\n others = {}\n for other in config.sources\n destinationFileInformation = informationOnFiles[other]\n target = destinationFileInformation.destination\n image = destinationFileInformation.language.name is 'image'\n\n others[target.base] = {\n link: getRelativePath source.relativefile, target.relativefile, target.base\n file: other\n image: image\n }\n\n others\n\n module.exports = getOthers\n"]} \ No newline at end of file diff --git a/src/getOthers.litcoffee b/src/getOthers.litcoffee new file mode 100755 index 00000000..28b4b14d --- /dev/null +++ b/src/getOthers.litcoffee @@ -0,0 +1,20 @@ + getRelativePath = require './getRelativePath' + + getOthers = (file, informationOnFiles, config) -> + sourceFileInformation = informationOnFiles[file] + source = sourceFileInformation.source + others = {} + for other in config.sources + destinationFileInformation = informationOnFiles[other] + target = destinationFileInformation.destination + image = destinationFileInformation.language.name is 'image' + + others[target.base] = { + link: getRelativePath source.relativefile, target.relativefile, target.base + file: other + image: image + } + + others + + module.exports = getOthers diff --git a/src/getRelativePath.js b/src/getRelativePath.js new file mode 100755 index 00000000..e67561f9 --- /dev/null +++ b/src/getRelativePath.js @@ -0,0 +1,18 @@ +var getRelativePath, path; + +path = require('path'); + +getRelativePath = function(fromFile, toFile, base) { + var fromTo; + fromTo = path.relative(fromFile, toFile); + if (fromTo === '' || fromTo === '.' || fromTo === '..' || fromTo === '../') { + fromTo = base; + } else { + fromTo = fromTo.slice(3); + } + return fromTo; +}; + +module.exports = getRelativePath; + +//# sourceMappingURL=getRelativePath.js.map diff --git a/src/getRelativePath.js.map b/src/getRelativePath.js.map new file mode 100644 index 00000000..c4a504e8 --- /dev/null +++ b/src/getRelativePath.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getRelativePath.js","sources":["getRelativePath.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,IAAA,GAAc,OAAA,CAAQ,MAAR;;AAEd,eAAA,GAAkB,SAAC,QAAD,EAAW,MAAX,EAAmB,IAAnB;AAChB,MAAA;EAAA,MAAA,GAAS,IAAI,CAAC,QAAL,CAAc,QAAd,EAAuB,MAAvB;EACT,IAAG,MAAA,KAAU,EAAV,IAAgB,MAAA,KAAU,GAA1B,IAAiC,MAAA,KAAU,IAA3C,IAAmD,MAAA,KAAU,KAAhE;IACE,MAAA,GAAS,KADX;GAAA,MAAA;IAGE,MAAA,GAAS,MAAM,CAAC,KAAP,CAAa,CAAb,EAHX;;SAKA;AAPgB;;AASlB,MAAM,CAAC,OAAP,GAAiB","sourcesContent":["This function determines the relative path of any html file in the destination folder to the css file.\n\n path = require 'path'\n\n getRelativePath = (fromFile, toFile, base) ->\n fromTo = path.relative(fromFile,toFile)\n if fromTo is '' or fromTo is '.' or fromTo is '..' or fromTo is '../'\n fromTo = base\n else\n fromTo = fromTo.slice(3)\n\n fromTo\n \n module.exports = getRelativePath"]} \ No newline at end of file diff --git a/src/getRelativePath.litcoffee b/src/getRelativePath.litcoffee new file mode 100755 index 00000000..ff00a751 --- /dev/null +++ b/src/getRelativePath.litcoffee @@ -0,0 +1,14 @@ +This function determines the relative path of any html file in the destination folder to the css file. + + path = require 'path' + + getRelativePath = (fromFile, toFile, base) -> + fromTo = path.relative(fromFile,toFile) + if fromTo is '' or fromTo is '.' or fromTo is '..' or fromTo is '../' + fromTo = base + else + fromTo = fromTo.slice(3) + + fromTo + + module.exports = getRelativePath \ No newline at end of file diff --git a/src/getSourceInformation.js b/src/getSourceInformation.js new file mode 100755 index 00000000..b7fbce31 --- /dev/null +++ b/src/getSourceInformation.js @@ -0,0 +1,21 @@ +var getSourceInformation, path; + +path = require('path'); + +getSourceInformation = function(file, rootDirectory, flatten) { + var source; + source = path.parse(file); + source.root = rootDirectory; + source.file = file; + source.path = source.root + '/' + source.file; + if (flatten) { + source.relativefile = source.base; + } else { + source.relativefile = source.file; + } + return source; +}; + +module.exports = getSourceInformation; + +//# sourceMappingURL=getSourceInformation.js.map diff --git a/src/getSourceInformation.js.map b/src/getSourceInformation.js.map new file mode 100644 index 00000000..b3f31a0a --- /dev/null +++ b/src/getSourceInformation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"getSourceInformation.js","sources":["getSourceInformation.litcoffee"],"names":[],"mappings":"AAAI,IAAA;;AAAA,IAAA,GAAc,OAAA,CAAQ,MAAR;;AAGd,oBAAA,GAAuB,SAAC,IAAD,EAAO,aAAP,EAAsB,OAAtB;AACrB,MAAA;EAAA,MAAA,GAAS,IAAI,CAAC,KAAL,CAAW,IAAX;EACT,MAAM,CAAC,IAAP,GAAc;EACd,MAAM,CAAC,IAAP,GAAc;EACd,MAAM,CAAC,IAAP,GAAc,MAAM,CAAC,IAAP,GAAY,GAAZ,GAAgB,MAAM,CAAC;EACrC,IAAG,OAAH;IACE,MAAM,CAAC,YAAP,GAAsB,MAAM,CAAC,KAD/B;GAAA,MAAA;IAGE,MAAM,CAAC,YAAP,GAAsB,MAAM,CAAC,KAH/B;;SAIA;AATqB;;AAWvB,MAAM,CAAC,OAAP,GAAiB","sourcesContent":[" path = require 'path'\n\n\n getSourceInformation = (file, rootDirectory, flatten) ->\n source = path.parse file\n source.root = rootDirectory\n source.file = file\n source.path = source.root+'/'+source.file\n if flatten\n source.relativefile = source.base\n else\n source.relativefile = source.file\n source\n\n module.exports = getSourceInformation"]} \ No newline at end of file diff --git a/src/getSourceInformation.litcoffee b/src/getSourceInformation.litcoffee new file mode 100755 index 00000000..9835269f --- /dev/null +++ b/src/getSourceInformation.litcoffee @@ -0,0 +1,15 @@ + path = require 'path' + + + getSourceInformation = (file, rootDirectory, flatten) -> + source = path.parse file + source.root = rootDirectory + source.file = file + source.path = source.root+'/'+source.file + if flatten + source.relativefile = source.base + else + source.relativefile = source.file + source + + module.exports = getSourceInformation \ No newline at end of file diff --git a/src/parse.js b/src/parse.js new file mode 100755 index 00000000..f83a17ae --- /dev/null +++ b/src/parse.js @@ -0,0 +1,151 @@ +var Handlebars, _, commander, fs, glob, highlightjs, hrefLinkTemplate, htmlImageMatcher, imageLinkTemplate, marked, parse, path; + +_ = require('underscore'); + +fs = require('fs-extra'); + +path = require('path'); + +marked = require('marked'); + +commander = require('commander'); + +Handlebars = require('handlebars'); + +highlightjs = require('highlight.js'); + +path = require('path'); + +glob = require('glob'); + +htmlImageMatcher = /^<img .*\/>/; + +imageLinkTemplate = Handlebars.compile('<div><img src="{{link}}" style="{{style}}"></img><p>{{text}}</p></div>\n'); + +hrefLinkTemplate = Handlebars.compile('<div><a href="{{link}}" style="{{style}}">{{text}}</a></div>\n'); + +module.exports = parse = function(source, language, code, config) { + var codeText, docsText, getLinkComponents, hasCode, i, isText, j, k, len, len1, line, lines, makeLink, match, maybeCode, multilineComment, parts, save, sections, text, textToCode; + if (config == null) { + config = {}; + } + lines = code.split('\n'); + sections = []; + hasCode = docsText = codeText = ''; + save = function() { + sections.push({ + docsText: docsText, + codeText: codeText + }); + hasCode = docsText = codeText = ''; + }; + if (language.literate) { + isText = maybeCode = true; + for (i = j = 0, len = lines.length; j < len; i = ++j) { + line = lines[i]; + lines[i] = maybeCode && (match = /^([ ]{4}|[ ]{0,3}\t)/.exec(line)) ? (isText = false, line.slice(match[0].length)) : (maybeCode = /^\s*$/.test(line)) ? isText ? language.symbol : '' : (isText = true, language.symbol + ' ' + line); + } + } + getLinkComponents = function(line, matcher) { + var LINK_REGEX, STYLE_REGEX, TEXT_REGEX, link, links, style, styles, text, texts; + LINK_REGEX = /\((.+?)\)/; + TEXT_REGEX = /\[(.+?)\]/; + STYLE_REGEX = /\{(.+?)\}/; + links = LINK_REGEX.exec(line); + texts = TEXT_REGEX.exec(line); + styles = STYLE_REGEX.exec(line); + if ((links != null) && links.length > 0 && (texts != null) && texts.length > 1) { + link = links[1]; + if (texts && texts.length > 0) { + text = texts[1]; + } else { + text = ''; + } + if (styles && styles.length > 0) { + style = styles[1]; + } else { + style = ''; + } + return { + link: link, + text: text, + style: style + }; + } else { + return null; + } + }; + makeLink = function(line, parts, template) { + return template(parts); + }; + for (k = 0, len1 = lines.length; k < len1; k++) { + line = lines[k]; + if (language.imageMatcher && line.match(language.imageMatcher)) { + parts = getLinkComponents(line, language.imageMatcher); + if (parts != null) { + codeText += imageLinkTemplate(parts); + } + hasCode = true; + } else if (language.linkMatcher && line.match(language.linkMatcher)) { + parts = getLinkComponents(line, language.linkMatcher); + if (parts != null) { + codeText += hrefLinkTemplate(parts); + } + hasCode = true; + } else if (line.match(htmlImageMatcher)) { + codeText += line + '\n'; + hasCode = true; + } else if (multilineComment && (language.stopMatcher && line.match(language.stopMatcher))) { + multilineComment = false; + docsText += (line = line.replace(language.stopMatcher, '')) + '\n'; + hasCode = true; + } else if (multilineComment || (language.startMatcher && line.match(language.startMatcher))) { + multilineComment = true; + if (hasCode) { + save(); + } + docsText += (line = line.replace(language.startMatcher, '')) + '\n'; + } else if (textToCode && (language.codeMatcher && line.match(language.codeMatcher))) { + textToCode = false; + text = (line = line.replace(language.codeMatcher, '')) + '\n'; + if (language.html) { + text += "</pre>"; + } + if (hasCode) { + save(); + } + codeText += text; + } else if (textToCode || (language.codeMatcher && line.match(language.codeMatcher))) { + textToCode = true; + hasCode = true; + if (language.html) { + text = "<pre>"; + } else { + text = ""; + } + text += (line = line.replace(language.codeMatcher, '')) + '\n'; + codeText += text; + } else if (language.sectionMatcher && line.match(language.sectionMatcher)) { + if (hasCode) { + save(); + } + docsText += (line = line.replace(language.commentMatcher, '')) + '\n'; + save(); + } else if (line.match(language.commentMatcher) && !line.match(language.commentFilter)) { + if (hasCode) { + save(); + } + docsText += (line = line.replace(language.commentMatcher, '')) + '\n'; + if (/^(---+|===+)$/.test(line)) { + save(); + } + } else { + hasCode = true; + codeText += line + '\n'; + } + } + save(); + return sections; +}; + +//# sourceMappingURL=parse.js.map diff --git a/src/parse.js.map b/src/parse.js.map new file mode 100644 index 00000000..a5db11b2 --- /dev/null +++ b/src/parse.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parse.js","sources":["parse.litcoffee"],"names":[],"mappings":"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","sourcesContent":[" _ = require 'underscore'\n fs = require 'fs-extra'\n path = require 'path'\n marked = require 'marked'\n commander = require 'commander'\n Handlebars = require 'handlebars'\n highlightjs = require 'highlight.js'\n path = require 'path'\n glob = require 'glob'\n htmlImageMatcher = /^<img .*\\/>/\n\n imageLinkTemplate = Handlebars.compile('<div><img src=\"{{link}}\" style=\"{{style}}\"></img><p>{{text}}</p></div>\\n')\n hrefLinkTemplate = Handlebars.compile('<div><a href=\"{{link}}\" style=\"{{style}}\">{{text}}</a></div>\\n')\n\nGiven a string of source code, **parse** out each block of prose and the code that\nfollows it — by detecting which is which, line by line — and then create an\nindividual **section** for it. Each section is an object with `docsText` and\n`codeText` properties, and eventually `docsHtml` and `codeHtml` as well.\n\n module.exports = parse = (source, language, code, config = {}) ->\n lines = code.split '\\n'\n sections = []\n\n hasCode = docsText = codeText = ''\n\n save = ->\n sections.push {docsText, codeText}\n hasCode = docsText = codeText = ''\n return\n\nOur quick-and-dirty implementation of the literate programming style. Simply\ninvert the prose and code relationship on a per-line basis, and then continue as\nnormal below.\n\n if language.literate\n isText = maybeCode = yes\n for line, i in lines\n lines[i] = if maybeCode and match = /^([ ]{4}|[ ]{0,3}\\t)/.exec line\n isText = no\n line[match[0].length..]\n else if maybeCode = /^\\s*$/.test line\n if isText then language.symbol else ''\n else\n isText = yes\n language.symbol + ' ' + line\n\n getLinkComponents = (line, matcher) ->\n # todo: use the matcher with groups!\n LINK_REGEX = /\\((.+?)\\)/\n TEXT_REGEX = /\\[(.+?)\\]/\n STYLE_REGEX = /\\{(.+?)\\}/\n links = LINK_REGEX.exec(line)\n texts = TEXT_REGEX.exec(line)\n styles = STYLE_REGEX.exec(line)\n if links? and links.length > 0 and texts? and texts.length > 1\n link = links[1] # grab the first group.\n if texts and texts.length > 0 then text = texts[1] else text = ''\n if styles and styles.length > 0 then style = styles[1] else style = ''\n return { link, text, style }\n else\n return null\n\n makeLink = (line, parts, template) ->\n return template(parts)\n\n for line in lines\n if language.imageMatcher and line.match language.imageMatcher\n parts = getLinkComponents line, language.imageMatcher\n codeText += imageLinkTemplate(parts) if parts?\n hasCode = yes\n\n else if language.linkMatcher and line.match language.linkMatcher\n parts = getLinkComponents line, language.linkMatcher\n codeText += hrefLinkTemplate(parts) if parts?\n hasCode = yes\n\n else if line.match(htmlImageMatcher) # only one per line!\n codeText += line + '\\n'\n hasCode = yes\n\n else if multilineComment and # stop\n (language.stopMatcher and line.match(language.stopMatcher))\n multilineComment = false\n docsText += (line = line.replace(language.stopMatcher, '')) + '\\n'\n hasCode = yes\n\n else if multilineComment or # start\n (language.startMatcher and line.match(language.startMatcher))\n multilineComment = true\n save() if hasCode\n docsText += (line = line.replace(language.startMatcher, '')) + '\\n'\n\n else if textToCode and # start\n (language.codeMatcher and line.match(language.codeMatcher))\n textToCode = false\n text = (line = line.replace(language.codeMatcher, '')) + '\\n'\n text += \"</pre>\" if language.html\n save() if hasCode\n codeText += text\n else if textToCode or # stop\n (language.codeMatcher and line.match(language.codeMatcher))\n textToCode = true\n hasCode = yes\n if language.html then text = \"<pre>\" else text = \"\"\n text += (line = line.replace(language.codeMatcher, '')) + '\\n'\n codeText += text\n else if language.sectionMatcher and line.match(language.sectionMatcher)\n save() if hasCode\n docsText += (line = line.replace(language.commentMatcher, '')) + '\\n'\n save()\n else if line.match(language.commentMatcher) and not line.match(language.commentFilter)\n save() if hasCode\n docsText += (line = line.replace(language.commentMatcher, '')) + '\\n'\n save() if /^(---+|===+)$/.test line\n else\n hasCode = yes\n codeText += line + '\\n'\n save()\n\n sections\n\n"]} \ No newline at end of file diff --git a/src/parse.litcoffee b/src/parse.litcoffee new file mode 100755 index 00000000..aad40487 --- /dev/null +++ b/src/parse.litcoffee @@ -0,0 +1,121 @@ + _ = require 'underscore' + fs = require 'fs-extra' + path = require 'path' + marked = require 'marked' + commander = require 'commander' + Handlebars = require 'handlebars' + highlightjs = require 'highlight.js' + path = require 'path' + glob = require 'glob' + htmlImageMatcher = /^<img .*\/>/ + + imageLinkTemplate = Handlebars.compile('<div><img src="{{link}}" style="{{style}}"></img><p>{{text}}</p></div>\n') + hrefLinkTemplate = Handlebars.compile('<div><a href="{{link}}" style="{{style}}">{{text}}</a></div>\n') + +Given a string of source code, **parse** out each block of prose and the code that +follows it — by detecting which is which, line by line — and then create an +individual **section** for it. Each section is an object with `docsText` and +`codeText` properties, and eventually `docsHtml` and `codeHtml` as well. + + module.exports = parse = (source, language, code, config = {}) -> + lines = code.split '\n' + sections = [] + + hasCode = docsText = codeText = '' + + save = -> + sections.push {docsText, codeText} + hasCode = docsText = codeText = '' + return + +Our quick-and-dirty implementation of the literate programming style. Simply +invert the prose and code relationship on a per-line basis, and then continue as +normal below. + + if language.literate + isText = maybeCode = yes + for line, i in lines + lines[i] = if maybeCode and match = /^([ ]{4}|[ ]{0,3}\t)/.exec line + isText = no + line[match[0].length..] + else if maybeCode = /^\s*$/.test line + if isText then language.symbol else '' + else + isText = yes + language.symbol + ' ' + line + + getLinkComponents = (line, matcher) -> + # todo: use the matcher with groups! + LINK_REGEX = /\((.+?)\)/ + TEXT_REGEX = /\[(.+?)\]/ + STYLE_REGEX = /\{(.+?)\}/ + links = LINK_REGEX.exec(line) + texts = TEXT_REGEX.exec(line) + styles = STYLE_REGEX.exec(line) + if links? and links.length > 0 and texts? and texts.length > 1 + link = links[1] # grab the first group. + if texts and texts.length > 0 then text = texts[1] else text = '' + if styles and styles.length > 0 then style = styles[1] else style = '' + return { link, text, style } + else + return null + + makeLink = (line, parts, template) -> + return template(parts) + + for line in lines + if language.imageMatcher and line.match language.imageMatcher + parts = getLinkComponents line, language.imageMatcher + codeText += imageLinkTemplate(parts) if parts? + hasCode = yes + + else if language.linkMatcher and line.match language.linkMatcher + parts = getLinkComponents line, language.linkMatcher + codeText += hrefLinkTemplate(parts) if parts? + hasCode = yes + + else if line.match(htmlImageMatcher) # only one per line! + codeText += line + '\n' + hasCode = yes + + else if multilineComment and # stop + (language.stopMatcher and line.match(language.stopMatcher)) + multilineComment = false + docsText += (line = line.replace(language.stopMatcher, '')) + '\n' + hasCode = yes + + else if multilineComment or # start + (language.startMatcher and line.match(language.startMatcher)) + multilineComment = true + save() if hasCode + docsText += (line = line.replace(language.startMatcher, '')) + '\n' + + else if textToCode and # start + (language.codeMatcher and line.match(language.codeMatcher)) + textToCode = false + text = (line = line.replace(language.codeMatcher, '')) + '\n' + text += "</pre>" if language.html + save() if hasCode + codeText += text + else if textToCode or # stop + (language.codeMatcher and line.match(language.codeMatcher)) + textToCode = true + hasCode = yes + if language.html then text = "<pre>" else text = "" + text += (line = line.replace(language.codeMatcher, '')) + '\n' + codeText += text + else if language.sectionMatcher and line.match(language.sectionMatcher) + save() if hasCode + docsText += (line = line.replace(language.commentMatcher, '')) + '\n' + save() + else if line.match(language.commentMatcher) and not line.match(language.commentFilter) + save() if hasCode + docsText += (line = line.replace(language.commentMatcher, '')) + '\n' + save() if /^(---+|===+)$/.test line + else + hasCode = yes + codeText += line + '\n' + save() + + sections + diff --git a/src/write.js b/src/write.js new file mode 100755 index 00000000..5800b641 --- /dev/null +++ b/src/write.js @@ -0,0 +1,61 @@ +var _, commander, fs, glob, highlightjs, marked, path, write; + +_ = require('underscore'); + +fs = require('fs-extra'); + +path = require('path'); + +marked = require('marked'); + +commander = require('commander'); + +highlightjs = require('highlight.js'); + +path = require('path'); + +glob = require('glob'); + +module.exports = write = function(source, sections, config) { + var destination, fileInfo, files, first, firstSection, hasTitle, html, links, objectValues, others, title; + destination = function(file) { + return file; + }; + objectValues = function(obj) { + return Object.keys(obj).map(function(key) { + return obj[key]; + }); + }; + firstSection = _.find(sections, function(section) { + return section.docsText.length > 0; + }); + if (firstSection) { + first = marked.lexer(firstSection.docsText)[0]; + } + hasTitle = first && first.type === 'heading' && first.depth === 1; + title = hasTitle ? first.text : path.basename(source); + fileInfo = config.informationOnFiles[source]; + others = objectValues(fileInfo.others); + links = others.map(function(o) { + return o.link; + }); + files = others.map(function(o) { + return o.file; + }); + html = config.template({ + sources: links, + files: files, + links: others, + css: fileInfo.destination.css, + title: title, + hasTitle: hasTitle, + sections: sections, + path: path, + destination: destination, + flatten: config.flatten + }); + console.log("docco: " + source + " -> " + (destination(fileInfo.destination.path))); + fs.writeFileSync(destination(fileInfo.destination.path), html); +}; + +//# sourceMappingURL=write.js.map diff --git a/src/write.js.map b/src/write.js.map new file mode 100644 index 00000000..417c5ee5 --- /dev/null +++ b/src/write.js.map @@ -0,0 +1 @@ +{"version":3,"file":"write.js","sources":["write.litcoffee"],"names":[],"mappings":"AAAI,IAAA;;AAAA,CAAA,GAAc,OAAA,CAAQ,YAAR;;AACd,EAAA,GAAc,OAAA,CAAQ,UAAR;;AACd,IAAA,GAAc,OAAA,CAAQ,MAAR;;AACd,MAAA,GAAc,OAAA,CAAQ,QAAR;;AACd,SAAA,GAAc,OAAA,CAAQ,WAAR;;AACd,WAAA,GAAc,OAAA,CAAQ,cAAR;;AACd,IAAA,GAAc,OAAA,CAAQ,MAAR;;AACd,IAAA,GAAc,OAAA,CAAQ,MAAR;;AAOd,MAAM,CAAC,OAAP,GAAiB,KAAA,GAAQ,SAAC,MAAD,EAAS,QAAT,EAAmB,MAAnB;AAIvB,MAAA;EAAA,WAAA,GAAc,SAAC,IAAD;WACZ;EADY;EAGd,YAAA,GAAe,SAAC,GAAD;WACb,MAAM,CAAC,IAAP,CAAY,GAAZ,CAAgB,CAAC,GAAjB,CAAqB,SAAC,GAAD;aACnB,GAAI,CAAA,GAAA;IADe,CAArB;EADa;EAKf,YAAA,GAAe,CAAC,CAAC,IAAF,CAAO,QAAP,EAAiB,SAAC,OAAD;WAC9B,OAAO,CAAC,QAAQ,CAAC,MAAjB,GAA0B;EADI,CAAjB;EAEf,IAAkD,YAAlD;IAAA,KAAA,GAAQ,MAAM,CAAC,KAAP,CAAa,YAAY,CAAC,QAA1B,CAAoC,CAAA,CAAA,EAA5C;;EACA,QAAA,GAAW,KAAA,IAAU,KAAK,CAAC,IAAN,KAAc,SAAxB,IAAsC,KAAK,CAAC,KAAN,KAAe;EAChE,KAAA,GAAW,QAAH,GAAiB,KAAK,CAAC,IAAvB,GAAiC,IAAI,CAAC,QAAL,CAAc,MAAd;EAEzC,QAAA,GAAW,MAAM,CAAC,kBAAmB,CAAA,MAAA;EACrC,MAAA,GAAS,YAAA,CAAa,QAAQ,CAAC,MAAtB;EACT,KAAA,GAAQ,MAAM,CAAC,GAAP,CAAW,SAAC,CAAD;AAAM,WAAO,CAAC,CAAC;EAAf,CAAX;EACR,KAAA,GAAQ,MAAM,CAAC,GAAP,CAAW,SAAC,CAAD;AAAM,WAAO,CAAC,CAAC;EAAf,CAAX;EACR,IAAA,GAAO,MAAM,CAAC,QAAP,CAAgB;IACrB,OAAA,EAAS,KADY;IAErB,KAAA,EAAO,KAFc;IAGrB,KAAA,EAAO,MAHc;IAIrB,GAAA,EAAK,QAAQ,CAAC,WAAW,CAAC,GAJL;IAKrB,OAAA,KALqB;IAMrB,UAAA,QANqB;IAOrB,UAAA,QAPqB;IAQrB,MAAA,IARqB;IASrB,aAAA,WATqB;IAUrB,OAAA,EAAS,MAAM,CAAC,OAVK;GAAhB;EAaP,OAAO,CAAC,GAAR,CAAY,SAAA,GAAU,MAAV,GAAiB,MAAjB,GAAsB,CAAC,WAAA,CAAY,QAAQ,CAAC,WAAW,CAAC,IAAjC,CAAD,CAAlC;EACA,EAAE,CAAC,aAAH,CAAiB,WAAA,CAAY,QAAQ,CAAC,WAAW,CAAC,IAAjC,CAAjB,EAAyD,IAAzD;AApCuB","sourcesContent":[" _ = require 'underscore'\n fs = require 'fs-extra'\n path = require 'path'\n marked = require 'marked'\n commander = require 'commander'\n highlightjs = require 'highlight.js'\n path = require 'path'\n glob = require 'glob'\n\n\nOnce all of the code has finished highlighting, we can **write** the resulting\ndocumentation file by passing the completed HTML sections into the template,\nand rendering it to the specified output path.\n\n module.exports = write = (source, sections, config) ->\n\n # todo: figure out how to remove the breaking change here. normally this should return file+'.html'\n\n destination = (file) ->\n file\n\n objectValues = (obj) ->\n Object.keys(obj).map((key) ->\n obj[key]\n )\n\n firstSection = _.find sections, (section) ->\n section.docsText.length > 0\n first = marked.lexer(firstSection.docsText)[0] if firstSection\n hasTitle = first and first.type is 'heading' and first.depth is 1\n title = if hasTitle then first.text else path.basename source\n\n fileInfo = config.informationOnFiles[source]\n others = objectValues(fileInfo.others)\n links = others.map((o)-> return o.link)\n files = others.map((o)-> return o.file)\n html = config.template {\n sources: links,\n files: files,\n links: others,\n css: fileInfo.destination.css,\n title,\n hasTitle,\n sections,\n path,\n destination,\n flatten: config.flatten\n }\n\n console.log \"docco: #{source} -> #{destination fileInfo.destination.path}\"\n fs.writeFileSync destination(fileInfo.destination.path), html\n return\n"]} \ No newline at end of file diff --git a/src/write.litcoffee b/src/write.litcoffee new file mode 100755 index 00000000..0e6e25ab --- /dev/null +++ b/src/write.litcoffee @@ -0,0 +1,52 @@ + _ = require 'underscore' + fs = require 'fs-extra' + path = require 'path' + marked = require 'marked' + commander = require 'commander' + highlightjs = require 'highlight.js' + path = require 'path' + glob = require 'glob' + + +Once all of the code has finished highlighting, we can **write** the resulting +documentation file by passing the completed HTML sections into the template, +and rendering it to the specified output path. + + module.exports = write = (source, sections, config) -> + + # todo: figure out how to remove the breaking change here. normally this should return file+'.html' + + destination = (file) -> + file + + objectValues = (obj) -> + Object.keys(obj).map((key) -> + obj[key] + ) + + firstSection = _.find sections, (section) -> + section.docsText.length > 0 + first = marked.lexer(firstSection.docsText)[0] if firstSection + hasTitle = first and first.type is 'heading' and first.depth is 1 + title = if hasTitle then first.text else path.basename source + + fileInfo = config.informationOnFiles[source] + others = objectValues(fileInfo.others) + links = others.map((o)-> return o.link) + files = others.map((o)-> return o.file) + html = config.template { + sources: links, + files: files, + links: others, + css: fileInfo.destination.css, + title, + hasTitle, + sections, + path, + destination, + flatten: config.flatten + } + + console.log "docco: #{source} -> #{destination fileInfo.destination.path}" + fs.writeFileSync destination(fileInfo.destination.path), html + return diff --git a/test/sim/.docco.json b/test/sim/.docco.json new file mode 100755 index 00000000..2fc3bd98 --- /dev/null +++ b/test/sim/.docco.json @@ -0,0 +1,11 @@ +{ + "sources": [ + "README.md", + "src/**/*.js", + "src/**/*.coffee", + "src/**/*.litcoffee", + "src/**/*.java", + "images/**/*.jpg" + ], + "layout": "linear" +} diff --git a/test/sim/.groc.json b/test/sim/.groc.json new file mode 100755 index 00000000..cc7d19f6 --- /dev/null +++ b/test/sim/.groc.json @@ -0,0 +1,11 @@ +{ + "glob": [ + "src/**/*.js", + "src/**/*.coffee", + "src/**/*.litcoffee", + "README.md", + "images/*.jpg" + ], + "github": false, + "repository-url": "https://github.com/nevir/groc" +} diff --git a/test/sim/README.md b/test/sim/README.md new file mode 100755 index 00000000..bc7db6d5 --- /dev/null +++ b/test/sim/README.md @@ -0,0 +1,73 @@ +# Test Readme + +With Fluffy Bunnies! + +## The Happy Bunny - Poem by Robb Lovell + +<pre> +I am a happy bunny. +I hop high and low, +I laugh, and I squeak and I +Squeak, Squeak, Go! +My little bunny nose +Squinches to and fro. +</pre> + + + +### Stanza 2 + +<pre> +I am the happy bunny. +I hop high and low, +I am very happy, and full of glee, +When I go hopping on my little tree! +I Hop, Hop, Hop, and you see me go! +My little bunny legs +Leap to and fro. +<//pre> +<img src="images/fluffybunny2.jpg" alt="Drawing" style="width:50%;"/> + +``` + # here is some code. + { + "context": { + "name": "promotion10" + }, + "fact": { + "product": {}, + "cart": {"total": 500} + } + } +``` + + +### Stanza 3 + + +<pre> +I am a happy bunny. +I hop high and low, +I see my friends, as they look at my home +They smiles and they laugh when I wiggle my ears! +Wiggle, Wiggle, Wiggle, I hear the show! +My little bunny ears +Wriggle to and fro. +</pre> + + + + +### Stanza 4 + +<pre> +I love them, they love me, +that makes me the most happy +bunny I can be. +</pre> + +## Author + +Robb Lovell + +(modified from Christopher Howie) \ No newline at end of file diff --git a/test/sim/images/fluffybunny1.jpg b/test/sim/images/fluffybunny1.jpg new file mode 100755 index 00000000..ddacde89 Binary files /dev/null and b/test/sim/images/fluffybunny1.jpg differ diff --git a/test/sim/images/fluffybunny2.jpg b/test/sim/images/fluffybunny2.jpg new file mode 100755 index 00000000..56e6329d Binary files /dev/null and b/test/sim/images/fluffybunny2.jpg differ diff --git a/test/sim/images/fluffybunny3.jpg b/test/sim/images/fluffybunny3.jpg new file mode 100755 index 00000000..4d8367ea Binary files /dev/null and b/test/sim/images/fluffybunny3.jpg differ diff --git a/test/sim/src/fake_coffee.coffee b/test/sim/src/fake_coffee.coffee new file mode 100755 index 00000000..8c8eb5ca --- /dev/null +++ b/test/sim/src/fake_coffee.coffee @@ -0,0 +1,32 @@ +### + CoffeeScript. +### + +# Assignment: +number = 42 +opposite = true + +# Conditions: +number = -42 if opposite + +# Functions: +square = (x) -> x * x + +# Arrays: +list = [1, 2, 3, 4, 5] + +# Objects: +math = + root: Math.sqrt + square: square + cube: (x) -> x * square x + +# Splats: +race = (winner, runners...) -> + print winner, runners + +# Existence: +alert "I knew it!" if elvis? + +# Array comprehensions: +cubes = (math.cube num for num in list) \ No newline at end of file diff --git a/test/sim/src/fake_coffee2.coffee b/test/sim/src/fake_coffee2.coffee new file mode 100755 index 00000000..94503db5 --- /dev/null +++ b/test/sim/src/fake_coffee2.coffee @@ -0,0 +1,39 @@ +#! /usr/bin/env coffee +### + fizzbuzz.litcoffee + + This is the fizzbuzz test in literate CoffeeScript. + +# What should FizzBuzz do? + + The FizzBuzz test should print: + + - 'fizz' for every number divisible by 3, + - 'buzz' for every number divisible by 5, + - 'fizzbuzz' if the number is divisible by 3 and 5 + - else: just print the number. + +# Fun Facts + + FizzBuzz is commonly used to interview programmers and test their coding skills. + Once the author [@rmetzler](http://github.com/rmetzler) was asked on a job interview + to write a "coding test". He answered by asking if the meant test was FizzBuzz. The interviewer + said yes and made a statement to not test the interviewee. The author later learned he didn't + get the job, was sad and decided on writing FizzBuzz as a learning tool. + + +# FizzBuzz in CoffeeScript + + FizzBuzz in CoffeeScript could look like this: + +### +fizzbuzz = (number) -> + return 'fizzbuzz' if 0 == number % 15 + return 'buzz' if 0 == number % 5 + return 'fizz' if 0 == number % 3 + number.toString() + + for x in [1..100] + +# pretty print + console.log "#{x}\t->\t#{fizzbuzz x}" diff --git a/test/sim/src/fake_java.java b/test/sim/src/fake_java.java new file mode 100755 index 00000000..3136546b --- /dev/null +++ b/test/sim/src/fake_java.java @@ -0,0 +1,42 @@ +/** + A class to measure time elapsed. +*/ + +public class Stopwatch +{ + private long startTime; + private long stopTime; + + public static final double NANOS_PER_SEC = 1000000000.0; + + // + // start the stop watch. + // + public void start(){ + startTime = System.nanoTime(); + } + + /** + stop the stop watch. + */ + public void stop() + { stopTime = System.nanoTime(); } + + /** + elapsed time in seconds. + @return the time recorded on the stopwatch in seconds + */ + public double time() + { return (stopTime - startTime) / NANOS_PER_SEC; } + + public String toString(){ + return "elapsed time: " + time() + " seconds."; + } + + /** + elapsed time in nanoseconds. + @return the time recorded on the stopwatch in nanoseconds + */ + public long timeInNanoseconds() + { return (stopTime - startTime); } +} diff --git a/test/sim/src/fake_javascript.js b/test/sim/src/fake_javascript.js new file mode 100755 index 00000000..ecc5c475 --- /dev/null +++ b/test/sim/src/fake_javascript.js @@ -0,0 +1,27 @@ +/* + Fizzbuzz interview question. + */ + +var fizzbuzz; + +fizzbuzz = function(number) { + var i, results, x; + // print out numbers divisible by 15, 5, and 3 + if (0 === number % 15) { + return 'fizzbuzz'; + } + if (0 === number % 5) { + return 'buzz'; + } + if (0 === number % 3) { + return 'fizz'; + } + number.toString(); + results = []; + for (x = i = 1; i <= 100; x = ++i) { + results.push(console.log(x + "\t->\t" + (fizzbuzz(x)))); + } + return results; +}; + +//# sourceMappingURL=fake_litcoffee.js.map diff --git a/test/sim/src/fake_litcoffee.litcoffee b/test/sim/src/fake_litcoffee.litcoffee new file mode 100755 index 00000000..fc02ee9c --- /dev/null +++ b/test/sim/src/fake_litcoffee.litcoffee @@ -0,0 +1,36 @@ +#! /usr/bin/env coffee +# fizzbuzz.litcoffee + +This is the fizzbuzz test in literate CoffeeScript. + +## What should FizzBuzz do? + +The FizzBuzz test should print: + +- 'fizz' for every number divisible by 3, +- 'buzz' for every number divisible by 5, +- 'fizzbuzz' if the number is divisible by 3 and 5 +- else: just print the number. + +## Fun Facts + +FizzBuzz is commonly used to interview programmers and test their coding skills. +Once the author [@rmetzler](http://github.com/rmetzler) was asked on a job interview +to write a "coding test". He answered by asking if the meant test was FizzBuzz. The interviewer +said yes and made a statement to not test the interviewee. The author later learned he didn't +get the job, was sad and decided on writing FizzBuzz as a learning tool. + +## FizzBuzz in CoffeeScript +--- +# FizzBuzz in CoffeeScript could look like this: + + fizzbuzz = (number) -> + return 'fizzbuzz' if 0 == number % 15 + return 'buzz' if 0 == number % 5 + return 'fizz' if 0 == number % 3 + number.toString() + + for x in [1..100] + + # pretty print + console.log "#{x}\t->\t#{fizzbuzz x}" diff --git a/test/unit-tests/fakes/fake-config.js b/test/unit-tests/fakes/fake-config.js new file mode 100755 index 00000000..c1b0e719 --- /dev/null +++ b/test/unit-tests/fakes/fake-config.js @@ -0,0 +1,77 @@ +module.exports = { + "css": "docco.css", + "extension": ".md", + "flatten": false, + "help": false, + "informationOnFiles": { + "README.md": { + "destination": { + "base": "README.html", + "css": "docco.css", + "dir": "docs", + "ext": ".html", + "file": "docs/README.html", + "name": "README", + "path": "force matched", + "pathdir": "force matched", + "relativefile": "README.html", + "root": "force matched" + }, + "language": { + "html": true, + "link": "!", + "name": "markdown", + "section": "#", + "symbol": "" + }, + "others": { + "README.html": { + "file": "README.md", + "image": false, + "link": "README.html" + } + }, + "source": { + "base": "README.md", + "dir": "", + "ext": ".md", + "file": "README.md", + "name": "README", + "path": "force matched", + "relativefile": "README.md", + "root": "force matched" + } + } + }, + "languages": { + ".markdown": { + "html": true, + "link": "!", + "name": "markdown", + "section": "#", + "symbol": "" + }, + ".md": { + "html": true, + "link": "!", + "name": "markdown", + "section": "#", + "symbol": "" + }, + "coffeescript": { + "name": "coffeescript", + "symbol": "#" + } + }, + "layout": "sidebyside", + "marked": {}, + "output": "docs", + "root": "force matched", + "setup": ".docco.json", + "sources": { + "0": "README.md" + }, + "template": {} +}; + +//# sourceMappingURL=fake-config.js.map diff --git a/test/unit-tests/fakes/fake-config.js.map b/test/unit-tests/fakes/fake-config.js.map new file mode 100644 index 00000000..f7fe6e1c --- /dev/null +++ b/test/unit-tests/fakes/fake-config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fake-config.js","sources":["fakes/fake-config.litcoffee"],"names":[],"mappings":"AAEI,MAAM,CAAC,OAAP,GAAiB;EACf,KAAA,EAAO,WADQ;EAEf,WAAA,EAAa,KAFE;EAGf,SAAA,EAAW,KAHI;EAIf,MAAA,EAAQ,KAJO;EAKf,oBAAA,EAAsB;IACpB,WAAA,EAAa;MACX,aAAA,EAAe;QACb,MAAA,EAAQ,aADK;QAEb,KAAA,EAAO,WAFM;QAGb,KAAA,EAAO,MAHM;QAIb,KAAA,EAAO,OAJM;QAKb,MAAA,EAAQ,kBALK;QAMb,MAAA,EAAQ,QANK;QAOb,MAAA,EAAQ,eAPK;QAQb,SAAA,EAAW,eARE;QASb,cAAA,EAAgB,aATH;QAUb,MAAA,EAAQ,eAVK;OADJ;MAaX,UAAA,EAAY;QACV,MAAA,EAAQ,IADE;QAEV,MAAA,EAAQ,GAFE;QAGV,MAAA,EAAQ,UAHE;QAIV,SAAA,EAAW,GAJD;QAKV,QAAA,EAAU,EALA;OAbD;MAoBX,QAAA,EAAU;QACR,aAAA,EAAe;UACb,MAAA,EAAQ,WADK;UAEb,OAAA,EAAS,KAFI;UAGb,MAAA,EAAQ,aAHK;SADP;OApBC;MA2BX,QAAA,EAAU;QACR,MAAA,EAAQ,WADA;QAER,KAAA,EAAO,EAFC;QAGR,KAAA,EAAO,KAHC;QAIR,MAAA,EAAQ,WAJA;QAKR,MAAA,EAAQ,QALA;QAMR,MAAA,EAAQ,eANA;QAOR,cAAA,EAAgB,WAPR;QAQR,MAAA,EAAQ,eARA;OA3BC;KADO;GALP;EA6Cf,WAAA,EAAa;IACX,WAAA,EAAa;MACX,MAAA,EAAQ,IADG;MAEX,MAAA,EAAQ,GAFG;MAGX,MAAA,EAAQ,UAHG;MAIX,SAAA,EAAW,GAJA;MAKX,QAAA,EAAU,EALC;KADF;IAQX,KAAA,EAAO;MACL,MAAA,EAAQ,IADH;MAEL,MAAA,EAAQ,GAFH;MAGL,MAAA,EAAQ,UAHH;MAIL,SAAA,EAAW,GAJN;MAKL,QAAA,EAAU,EALL;KARI;IAeX,cAAA,EAAgB;MACd,MAAA,EAAQ,cADM;MAEd,QAAA,EAAU,GAFI;KAfL;GA7CE;EAiEf,QAAA,EAAU,YAjEK;EAkEf,QAAA,EAAU,EAlEK;EAmEf,QAAA,EAAU,MAnEK;EAoEf,MAAA,EAAQ,eApEO;EAqEf,OAAA,EAAS,aArEM;EAsEf,SAAA,EAAW;IACT,GAAA,EAAK,WADI;GAtEI;EAyEf,UAAA,EAAY,EAzEG","sourcesContent":["#\n\n module.exports = {\n \"css\": \"docco.css\"\n \"extension\": \".md\"\n \"flatten\": false\n \"help\": false\n \"informationOnFiles\": {\n \"README.md\": {\n \"destination\": {\n \"base\": \"README.html\"\n \"css\": \"docco.css\"\n \"dir\": \"docs\"\n \"ext\": \".html\"\n \"file\": \"docs/README.html\"\n \"name\": \"README\"\n \"path\": \"force matched\"\n \"pathdir\": \"force matched\"\n \"relativefile\": \"README.html\"\n \"root\": \"force matched\"\n }\n \"language\": {\n \"html\": true\n \"link\": \"!\"\n \"name\": \"markdown\"\n \"section\": \"#\"\n \"symbol\": \"\"\n }\n \"others\": {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"README.html\"\n }\n }\n \"source\": {\n \"base\": \"README.md\"\n \"dir\": \"\"\n \"ext\": \".md\"\n \"file\": \"README.md\"\n \"name\": \"README\"\n \"path\": \"force matched\"\n \"relativefile\": \"README.md\"\n \"root\": \"force matched\"\n }\n }\n }\n \"languages\": {\n \".markdown\": {\n \"html\": true\n \"link\": \"!\"\n \"name\": \"markdown\"\n \"section\": \"#\"\n \"symbol\": \"\"\n }\n \".md\": {\n \"html\": true\n \"link\": \"!\"\n \"name\": \"markdown\"\n \"section\": \"#\"\n \"symbol\": \"\"\n }\n \"coffeescript\": {\n \"name\": \"coffeescript\"\n \"symbol\": \"#\"\n }\n }\n \"layout\": \"sidebyside\"\n \"marked\": {}\n \"output\": \"docs\"\n \"root\": \"force matched\"\n \"setup\": \".docco.json\"\n \"sources\": {\n \"0\": \"README.md\"\n }\n \"template\": {}\n }"]} \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-config.litcoffee b/test/unit-tests/fakes/fake-config.litcoffee new file mode 100755 index 00000000..82999944 --- /dev/null +++ b/test/unit-tests/fakes/fake-config.litcoffee @@ -0,0 +1,77 @@ +# + + module.exports = { + "css": "docco.css" + "extension": ".md" + "flatten": false + "help": false + "informationOnFiles": { + "README.md": { + "destination": { + "base": "README.html" + "css": "docco.css" + "dir": "docs" + "ext": ".html" + "file": "docs/README.html" + "name": "README" + "path": "force matched" + "pathdir": "force matched" + "relativefile": "README.html" + "root": "force matched" + } + "language": { + "html": true + "link": "!" + "name": "markdown" + "section": "#" + "symbol": "" + } + "others": { + "README.html": { + "file": "README.md" + "image": false + "link": "README.html" + } + } + "source": { + "base": "README.md" + "dir": "" + "ext": ".md" + "file": "README.md" + "name": "README" + "path": "force matched" + "relativefile": "README.md" + "root": "force matched" + } + } + } + "languages": { + ".markdown": { + "html": true + "link": "!" + "name": "markdown" + "section": "#" + "symbol": "" + } + ".md": { + "html": true + "link": "!" + "name": "markdown" + "section": "#" + "symbol": "" + } + "coffeescript": { + "name": "coffeescript" + "symbol": "#" + } + } + "layout": "sidebyside" + "marked": {} + "output": "docs" + "root": "force matched" + "setup": ".docco.json" + "sources": { + "0": "README.md" + } + "template": {} + } \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-jst-result.js b/test/unit-tests/fakes/fake-jst-result.js new file mode 100755 index 00000000..b75fec9f --- /dev/null +++ b/test/unit-tests/fakes/fake-jst-result.js @@ -0,0 +1,3 @@ +module.exports = '<!DOCTYPE html> <html> <head> <title>fake_coffee.coffee</title> ' + '<meta http-equiv="content-type" content="text/html; charset=UTF-8"> ' + '<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> ' + '<link rel="stylesheet" media="all" href="../docco.css" /> ' + '</head> ' + '<body> ' + '<div id="container"> ' + '<div id="background"></div> ' + '<ul id="jump_to"> ' + '<li> ' + '<a class="large" href="javascript:void(0);">Jump To …</a> ' + '<a class="small" href="javascript:void(0);">+</a> ' + '<div id="jump_wrapper"> ' + '<div id="jump_page"> ' + '<a class="source" href="./../../../../../../../../Project/docs/src/fake_coffee.html"> fake_coffee.html </a> ' + '<a class="source" href="./../../../../../../../../Project/docs/README.html"> README.html </a> ' + '</div> ' + '</li> ' + '</ul> ' + '<ul class="sections"> ' + '<li id="title"> ' + '<div class="annotation"> ' + '<h1>fake_coffee.coffee</h1> ' + '</div> ' + '</li> ' + '<li id="section-1"> ' + '<div class="annotation"> ' + '<div class="pilwrap "> ' + '<a class="pilcrow" href="#section-1">¶</a> ' + '</div> ' + '</div> ' + '<div class="content">' + '<div class=\'highlight\'>' + '<pre>code=here;</pre>' + '</div>' + '</div> ' + '</li> ' + '</ul> ' + '</div> ' + '</body> ' + '</html>'; + +//# sourceMappingURL=fake-jst-result.js.map diff --git a/test/unit-tests/fakes/fake-jst-result.js.map b/test/unit-tests/fakes/fake-jst-result.js.map new file mode 100644 index 00000000..c736eeeb --- /dev/null +++ b/test/unit-tests/fakes/fake-jst-result.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fake-jst-result.js","sources":["fakes/fake-jst-result.litcoffee"],"names":[],"mappings":"AAAI,MAAM,CAAC,OAAP,GAAiB,kEAAA,GACb,sEADa,GAEb,uIAFa,GAGb,4DAHa,GAIb,UAJa,GAKb,SALa,GAMb,uBANa,GAOb,+BAPa,GAQb,oBARa,GASb,OATa,GAUb,mEAVa,GAWb,oDAXa,GAYb,0BAZa,GAab,yBAba,GAcb,gHAda,GAeb,iGAfa,GAgBb,SAhBa,GAiBb,QAjBa,GAkBb,SAlBa,GAmBb,yBAnBa,GAoBb,kBApBa,GAqBb,2BArBa,GAsBb,8BAtBa,GAuBb,SAvBa,GAwBb,WAxBa,GAyBb,sBAzBa,GA0Bb,4BA1Ba,GA2Bb,yBA3Ba,GA4Bb,kDA5Ba,GA6Bb,UA7Ba,GA8Bb,UA9Ba,GA+Bb,uBA/Ba,GAgCb,2BAhCa,GAiCb,uBAjCa,GAkCb,QAlCa,GAmCb,UAnCa,GAoCb,SApCa,GAqCb,QArCa,GAsCb,SAtCa,GAuCb,UAvCa,GAwCb","sourcesContent":[" module.exports = '<!DOCTYPE html> <html> <head> <title>fake_coffee.coffee</title> ' +\n '<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"> ' +\n '<meta name=\"viewport\" content=\"width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\"> ' +\n '<link rel=\"stylesheet\" media=\"all\" href=\"../docco.css\" /> ' +\n '</head> ' +\n '<body> ' +\n '<div id=\"container\"> ' +\n '<div id=\"background\"></div> ' +\n '<ul id=\"jump_to\"> ' +\n '<li> ' +\n '<a class=\"large\" href=\"javascript:void(0);\">Jump To …</a> ' +\n '<a class=\"small\" href=\"javascript:void(0);\">+</a> ' +\n '<div id=\"jump_wrapper\"> ' +\n '<div id=\"jump_page\"> ' +\n '<a class=\"source\" href=\"./../../../../../../../../Project/docs/src/fake_coffee.html\"> fake_coffee.html </a> ' +\n '<a class=\"source\" href=\"./../../../../../../../../Project/docs/README.html\"> README.html </a> ' +\n '</div> ' +\n '</li> ' +\n '</ul> ' +\n '<ul class=\"sections\"> ' +\n '<li id=\"title\"> ' +\n '<div class=\"annotation\"> ' +\n '<h1>fake_coffee.coffee</h1> ' +\n '</div> ' +\n '</li> ' +\n '<li id=\"section-1\"> ' +\n '<div class=\"annotation\"> ' +\n '<div class=\"pilwrap \"> ' +\n '<a class=\"pilcrow\" href=\"#section-1\">¶</a> ' +\n '</div> ' +\n '</div> ' +\n '<div class=\"content\">' +\n '<div class=\\'highlight\\'>' +\n '<pre>code=here;</pre>' +\n '</div>' +\n '</div> ' +\n '</li> ' +\n '</ul> ' +\n '</div> ' +\n '</body> ' +\n '</html>'"]} \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-jst-result.litcoffee b/test/unit-tests/fakes/fake-jst-result.litcoffee new file mode 100755 index 00000000..cf3e667f --- /dev/null +++ b/test/unit-tests/fakes/fake-jst-result.litcoffee @@ -0,0 +1,41 @@ + module.exports = '<!DOCTYPE html> <html> <head> <title>fake_coffee.coffee</title> ' + + '<meta http-equiv="content-type" content="text/html; charset=UTF-8"> ' + + '<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> ' + + '<link rel="stylesheet" media="all" href="../docco.css" /> ' + + '</head> ' + + '<body> ' + + '<div id="container"> ' + + '<div id="background"></div> ' + + '<ul id="jump_to"> ' + + '<li> ' + + '<a class="large" href="javascript:void(0);">Jump To …</a> ' + + '<a class="small" href="javascript:void(0);">+</a> ' + + '<div id="jump_wrapper"> ' + + '<div id="jump_page"> ' + + '<a class="source" href="./../../../../../../../../Project/docs/src/fake_coffee.html"> fake_coffee.html </a> ' + + '<a class="source" href="./../../../../../../../../Project/docs/README.html"> README.html </a> ' + + '</div> ' + + '</li> ' + + '</ul> ' + + '<ul class="sections"> ' + + '<li id="title"> ' + + '<div class="annotation"> ' + + '<h1>fake_coffee.coffee</h1> ' + + '</div> ' + + '</li> ' + + '<li id="section-1"> ' + + '<div class="annotation"> ' + + '<div class="pilwrap "> ' + + '<a class="pilcrow" href="#section-1">¶</a> ' + + '</div> ' + + '</div> ' + + '<div class="content">' + + '<div class=\'highlight\'>' + + '<pre>code=here;</pre>' + + '</div>' + + '</div> ' + + '</li> ' + + '</ul> ' + + '</div> ' + + '</body> ' + + '</html>' \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-jst.js b/test/unit-tests/fakes/fake-jst.js new file mode 100755 index 00000000..00cee6aa --- /dev/null +++ b/test/unit-tests/fakes/fake-jst.js @@ -0,0 +1,3 @@ +module.exports = '<!DOCTYPE html> <html> <head> <title><%= title %></title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <link rel="stylesheet" media="all" href="<%= css %>" /> </head> <body> <div id="container"> <div id="background"></div> <% if (sources.length > 1) { %> <ul id="jump_to"> <li> <a class="large" href="javascript:void(0);">Jump To …</a> <a class="small" href="javascript:void(0);">+</a> <div id="jump_wrapper"> <div id="jump_page"> <% for (var i=0, l=sources.length; i<l; i++) { %> <% var source = sources[i]; %> <a class="source" href="<%= destination(source) %>"> <%= path.basename(source) %> </a> <% } %> </div> </li> </ul> <% } %> <ul class="sections"> <% if (!hasTitle) { %> <li id="title"> <div class="annotation"> <h1><%= title %></h1> </div> </li> <% } %> <% for (var i=0, l=sections.length; i<l; i++) { %> <% var section = sections[i]; %> <li id="section-<%= i + 1 %>"> <div class="annotation"> <% heading = section.docsHtml.match(/^\s*<(h\d)>/) %> <div class="pilwrap <%= heading ? \'for-\' + heading[1] : \'\' %>"> <a class="pilcrow" href="#section-<%= i + 1 %>">¶</a> </div> <%= section.docsHtml %> </div> <% if (section.codeText.replace(/\s/gm, \'\') != \'\') { %> <div class="content"><%= section.codeHtml %></div> <% } %> </li> <% } %> </ul> </div> </body> </html>'; + +//# sourceMappingURL=fake-jst.js.map diff --git a/test/unit-tests/fakes/fake-jst.js.map b/test/unit-tests/fakes/fake-jst.js.map new file mode 100644 index 00000000..7d06f8b2 --- /dev/null +++ b/test/unit-tests/fakes/fake-jst.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fake-jst.js","sources":["fakes/fake-jst.litcoffee"],"names":[],"mappings":"AAAI,MAAM,CAAC,OAAP,GAAiB","sourcesContent":[" module.exports = '<!DOCTYPE html>\n <html>\n <head>\n <title><%= title %></title>\n <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n <link rel=\"stylesheet\" media=\"all\" href=\"<%= css %>\" />\n </head>\n <body>\n <div id=\"container\">\n <div id=\"background\"></div>\n <% if (sources.length > 1) { %>\n <ul id=\"jump_to\">\n <li>\n <a class=\"large\" href=\"javascript:void(0);\">Jump To …</a>\n <a class=\"small\" href=\"javascript:void(0);\">+</a>\n <div id=\"jump_wrapper\">\n <div id=\"jump_page\">\n <% for (var i=0, l=sources.length; i<l; i++) { %>\n <% var source = sources[i]; %>\n <a class=\"source\" href=\"<%= destination(source) %>\">\n <%= path.basename(source) %>\n </a>\n <% } %>\n </div>\n </li>\n </ul>\n <% } %>\n <ul class=\"sections\">\n <% if (!hasTitle) { %>\n <li id=\"title\">\n <div class=\"annotation\">\n <h1><%= title %></h1>\n </div>\n </li>\n <% } %>\n <% for (var i=0, l=sections.length; i<l; i++) { %>\n <% var section = sections[i]; %>\n <li id=\"section-<%= i + 1 %>\">\n <div class=\"annotation\">\n <% heading = section.docsHtml.match(/^\\s*<(h\\d)>/) %>\n <div class=\"pilwrap <%= heading ? \\'for-\\' + heading[1] : \\'\\' %>\">\n <a class=\"pilcrow\" href=\"#section-<%= i + 1 %>\">¶</a>\n </div>\n <%= section.docsHtml %>\n </div>\n <% if (section.codeText.replace(/\\s/gm, \\'\\') != \\'\\') { %>\n <div class=\"content\"><%= section.codeHtml %></div>\n <% } %>\n </li>\n <% } %>\n </ul>\n </div>\n </body>\n </html>'"]} \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-jst.litcoffee b/test/unit-tests/fakes/fake-jst.litcoffee new file mode 100755 index 00000000..da360870 --- /dev/null +++ b/test/unit-tests/fakes/fake-jst.litcoffee @@ -0,0 +1,55 @@ + module.exports = '<!DOCTYPE html> + <html> + <head> + <title><%= title %></title> + <meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" media="all" href="<%= css %>" /> + </head> + <body> + <div id="container"> + <div id="background"></div> + <% if (sources.length > 1) { %> + <ul id="jump_to"> + <li> + <a class="large" href="javascript:void(0);">Jump To …</a> + <a class="small" href="javascript:void(0);">+</a> + <div id="jump_wrapper"> + <div id="jump_page"> + <% for (var i=0, l=sources.length; i<l; i++) { %> + <% var source = sources[i]; %> + <a class="source" href="<%= destination(source) %>"> + <%= path.basename(source) %> + </a> + <% } %> + </div> + </li> + </ul> + <% } %> + <ul class="sections"> + <% if (!hasTitle) { %> + <li id="title"> + <div class="annotation"> + <h1><%= title %></h1> + </div> + </li> + <% } %> + <% for (var i=0, l=sections.length; i<l; i++) { %> + <% var section = sections[i]; %> + <li id="section-<%= i + 1 %>"> + <div class="annotation"> + <% heading = section.docsHtml.match(/^\s*<(h\d)>/) %> + <div class="pilwrap <%= heading ? \'for-\' + heading[1] : \'\' %>"> + <a class="pilcrow" href="#section-<%= i + 1 %>">¶</a> + </div> + <%= section.docsHtml %> + </div> + <% if (section.codeText.replace(/\s/gm, \'\') != \'\') { %> + <div class="content"><%= section.codeHtml %></div> + <% } %> + </li> + <% } %> + </ul> + </div> + </body> + </html>' \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-linear-jst-flattened-result.js b/test/unit-tests/fakes/fake-linear-jst-flattened-result.js new file mode 100755 index 00000000..b2c9cb86 --- /dev/null +++ b/test/unit-tests/fakes/fake-linear-jst-flattened-result.js @@ -0,0 +1,3 @@ +module.exports = '<!DOCTYPE html> <html> <head> <title>fake_coffee.coffee</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" /> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div class="container"> <div class="page"> <div class="header"> <h1>fake_coffee.coffee</h1> <div class="toc"> <h3>Table of Contents</h3> <ol> <li> <a class="source" href="README.html"> README.html </a> </li> <li> <a class="source" href="fake_coffee.html"> fake_coffee.html </a> </li> <li> <a class="source" href="fake_litcoffee.html"> fake_litcoffee.html </a> </li> <li> <a class="source" href="images/fluffybunny1.jpg"> fluffybunny1.jpg </a> </li> </ol> </div> </div> <div class=\'highlight\'><pre>code=here;</pre></div> <div class="fleur">h</div> </div> </div> </body> </html>'; + +//# sourceMappingURL=fake-linear-jst-flattened-result.js.map diff --git a/test/unit-tests/fakes/fake-linear-jst-flattened-result.js.map b/test/unit-tests/fakes/fake-linear-jst-flattened-result.js.map new file mode 100644 index 00000000..0a97d744 --- /dev/null +++ b/test/unit-tests/fakes/fake-linear-jst-flattened-result.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fake-linear-jst-flattened-result.js","sources":["fakes/fake-linear-jst-flattened-result.litcoffee"],"names":[],"mappings":"AAAI,MAAM,CAAC,OAAP,GAAiB","sourcesContent":[" module.exports = '<!DOCTYPE html> <html> <head> <title>fake_coffee.coffee</title> <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"> <link rel=\"stylesheet\" media=\"all\" href=\"public/stylesheets/normalize.css\" /> <link rel=\"stylesheet\" media=\"all\" href=\"docco.css\" /> </head> <body> <div class=\"container\"> <div class=\"page\"> <div class=\"header\"> <h1>fake_coffee.coffee</h1> <div class=\"toc\"> <h3>Table of Contents</h3> <ol> <li> <a class=\"source\" href=\"README.html\"> README.html </a> </li> <li> <a class=\"source\" href=\"fake_coffee.html\"> fake_coffee.html </a> </li> <li> <a class=\"source\" href=\"fake_litcoffee.html\"> fake_litcoffee.html </a> </li> <li> <a class=\"source\" href=\"images/fluffybunny1.jpg\"> fluffybunny1.jpg </a> </li> </ol> </div> </div> <div class=\\'highlight\\'><pre>code=here;</pre></div> <div class=\"fleur\">h</div> </div> </div> </body> </html>'"]} \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-linear-jst-flattened-result.litcoffee b/test/unit-tests/fakes/fake-linear-jst-flattened-result.litcoffee new file mode 100755 index 00000000..c2d5bbea --- /dev/null +++ b/test/unit-tests/fakes/fake-linear-jst-flattened-result.litcoffee @@ -0,0 +1 @@ + module.exports = '<!DOCTYPE html> <html> <head> <title>fake_coffee.coffee</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" /> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div class="container"> <div class="page"> <div class="header"> <h1>fake_coffee.coffee</h1> <div class="toc"> <h3>Table of Contents</h3> <ol> <li> <a class="source" href="README.html"> README.html </a> </li> <li> <a class="source" href="fake_coffee.html"> fake_coffee.html </a> </li> <li> <a class="source" href="fake_litcoffee.html"> fake_litcoffee.html </a> </li> <li> <a class="source" href="images/fluffybunny1.jpg"> fluffybunny1.jpg </a> </li> </ol> </div> </div> <div class=\'highlight\'><pre>code=here;</pre></div> <div class="fleur">h</div> </div> </div> </body> </html>' \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js b/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js new file mode 100755 index 00000000..8ca014a7 --- /dev/null +++ b/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js @@ -0,0 +1,3 @@ +module.exports = '<!DOCTYPE html> <html> <head> ' + '<title>fake_coffee.coffee</title> ' + '<meta http-equiv="content-type" content="text/html; charset=UTF-8"> ' + '<link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" /> ' + '<link rel="stylesheet" media="all" href="../docco.css" /> ' + '</head> <body> <div class="container"> <div class="page"> ' + '<div class="header"> <h1>fake_coffee.coffee</h1> ' + '<div class="toc"> <h3>Table of Contents</h3> <ol> ' + '<li> <a class="source" href="../README.html"> README.html </a> </li> ' + '<li> <a class="source" href="fake_coffee.html"> fake_coffee.html </a> </li> ' + '<li> <a class="source" href="lib/fake_litcoffee.html"> fake_litcoffee.html </a> </li> ' + '<li> <a class="source" href="../images/fluffybunny1.jpg"> fluffybunny1.jpg </a> </li> ' + '</ol> </div> </div> ' + '<div class=\'highlight\'><pre>code=here;</pre></div> ' + '<div class="fleur">h</div> </div> </div> </body> </html>'; + +//# sourceMappingURL=fake-linear-jst-unflattened-result.js.map diff --git a/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js.map b/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js.map new file mode 100644 index 00000000..ec30ee4f --- /dev/null +++ b/test/unit-tests/fakes/fake-linear-jst-unflattened-result.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fake-linear-jst-unflattened-result.js","sources":["fakes/fake-linear-jst-unflattened-result.litcoffee"],"names":[],"mappings":"AAAI,MAAM,CAAC,OAAP,GAAiB,gCAAA,GACb,oCADa,GAEb,sEAFa,GAGb,gFAHa,GAIb,4DAJa,GAKb,4DALa,GAMb,sDANa,GAOb,sDAPa,GAQb,yEARa,GASb,gFATa,GAUb,0FAVa,GAWb,yFAXa,GAYb,2BAZa,GAab,yDAba,GAcb","sourcesContent":[" module.exports = '<!DOCTYPE html> <html> <head> ' +\n '<title>fake_coffee.coffee</title> ' +\n '<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"> ' +\n '<link rel=\"stylesheet\" media=\"all\" href=\"public/stylesheets/normalize.css\" /> ' +\n '<link rel=\"stylesheet\" media=\"all\" href=\"../docco.css\" /> ' +\n '</head> <body> <div class=\"container\"> <div class=\"page\"> ' +\n '<div class=\"header\"> <h1>fake_coffee.coffee</h1> ' +\n '<div class=\"toc\"> <h3>Table of Contents</h3> <ol> ' +\n '<li> <a class=\"source\" href=\"../README.html\"> README.html </a> </li> ' +\n '<li> <a class=\"source\" href=\"fake_coffee.html\"> fake_coffee.html </a> </li> ' +\n '<li> <a class=\"source\" href=\"lib/fake_litcoffee.html\"> fake_litcoffee.html </a> </li> ' +\n '<li> <a class=\"source\" href=\"../images/fluffybunny1.jpg\"> fluffybunny1.jpg </a> </li> ' +\n '</ol> </div> </div> ' +\n '<div class=\\'highlight\\'><pre>code=here;</pre></div> ' +\n '<div class=\"fleur\">h</div> </div> </div> </body> </html>'"]} \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-linear-jst-unflattened-result.litcoffee b/test/unit-tests/fakes/fake-linear-jst-unflattened-result.litcoffee new file mode 100755 index 00000000..55899bf5 --- /dev/null +++ b/test/unit-tests/fakes/fake-linear-jst-unflattened-result.litcoffee @@ -0,0 +1,15 @@ + module.exports = '<!DOCTYPE html> <html> <head> ' + + '<title>fake_coffee.coffee</title> ' + + '<meta http-equiv="content-type" content="text/html; charset=UTF-8"> ' + + '<link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" /> ' + + '<link rel="stylesheet" media="all" href="../docco.css" /> ' + + '</head> <body> <div class="container"> <div class="page"> ' + + '<div class="header"> <h1>fake_coffee.coffee</h1> ' + + '<div class="toc"> <h3>Table of Contents</h3> <ol> ' + + '<li> <a class="source" href="../README.html"> README.html </a> </li> ' + + '<li> <a class="source" href="fake_coffee.html"> fake_coffee.html </a> </li> ' + + '<li> <a class="source" href="lib/fake_litcoffee.html"> fake_litcoffee.html </a> </li> ' + + '<li> <a class="source" href="../images/fluffybunny1.jpg"> fluffybunny1.jpg </a> </li> ' + + '</ol> </div> </div> ' + + '<div class=\'highlight\'><pre>code=here;</pre></div> ' + + '<div class="fleur">h</div> </div> </div> </body> </html>' \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-linear-jst.js b/test/unit-tests/fakes/fake-linear-jst.js new file mode 100755 index 00000000..8c4e2de9 --- /dev/null +++ b/test/unit-tests/fakes/fake-linear-jst.js @@ -0,0 +1,3 @@ +module.exports = '<!DOCTYPE html> <html> <head> <title><%= title %></title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" /> <link rel="stylesheet" media="all" href="<%= css %>" /> </head> <body> <div class="container"> <div class="page"> <div class="header"> <% if (hasTitle) { %> <% var section = sections.shift(); %> <%= section.docsHtml %> <% if (!(/^\s*$/).test(section.codeText)) { %> <%= section.codeHtml %> <% } %> <% } else { %> <h1><%= title %></h1> <% } %> <% if (sources.length > 1) { %> <div class="toc"> <h3>Table of Contents</h3> <ol> <% for (var i=0, l = sources.length; i < l; i++) { %> <% var source = sources[i]; %> <li> <a class="source" href="<%= destination(source) %>"> <%= path.basename(source) %> </a> </li> <% } %> </ol> </div> <% } %> </div> <% for (var i = 0, l = sections.length; i<l; i++) { %> <% var section = sections[i]; %> <%= section.docsHtml %> <% if (!(/^\s*$/).test(section.codeText)) { %> <%= section.codeHtml %> <% } %> <% } %> <div class="fleur">h</div> </div> </div> </body> </html>'; + +//# sourceMappingURL=fake-linear-jst.js.map diff --git a/test/unit-tests/fakes/fake-linear-jst.js.map b/test/unit-tests/fakes/fake-linear-jst.js.map new file mode 100644 index 00000000..5cc5d223 --- /dev/null +++ b/test/unit-tests/fakes/fake-linear-jst.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fake-linear-jst.js","sources":["fakes/fake-linear-jst.litcoffee"],"names":[],"mappings":"AAAI,MAAM,CAAC,OAAP,GAAiB","sourcesContent":[" module.exports = '<!DOCTYPE html>\n <html>\n <head>\n <title><%= title %></title>\n <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n <link rel=\"stylesheet\" media=\"all\" href=\"public/stylesheets/normalize.css\" />\n <link rel=\"stylesheet\" media=\"all\" href=\"<%= css %>\" />\n </head>\n <body>\n <div class=\"container\">\n <div class=\"page\">\n\n <div class=\"header\">\n <% if (hasTitle) { %>\n <% var section = sections.shift(); %>\n <%= section.docsHtml %>\n <% if (!(/^\\s*$/).test(section.codeText)) { %>\n <%= section.codeHtml %>\n <% } %>\n <% } else { %>\n <h1><%= title %></h1>\n <% } %>\n\n <% if (sources.length > 1) { %>\n <div class=\"toc\">\n <h3>Table of Contents</h3>\n <ol>\n <% for (var i=0, l = sources.length; i < l; i++) { %>\n <% var source = sources[i]; %>\n <li>\n <a class=\"source\" href=\"<%= destination(source) %>\">\n <%= path.basename(source) %>\n </a>\n </li>\n <% } %>\n </ol>\n </div>\n <% } %>\n </div>\n\n <% for (var i = 0, l = sections.length; i<l; i++) { %>\n <% var section = sections[i]; %>\n <%= section.docsHtml %>\n <% if (!(/^\\s*$/).test(section.codeText)) { %>\n <%= section.codeHtml %>\n <% } %>\n <% } %>\n <div class=\"fleur\">h</div>\n </div>\n </div>\n </body>\n </html>'"]} \ No newline at end of file diff --git a/test/unit-tests/fakes/fake-linear-jst.litcoffee b/test/unit-tests/fakes/fake-linear-jst.litcoffee new file mode 100755 index 00000000..4699c72b --- /dev/null +++ b/test/unit-tests/fakes/fake-linear-jst.litcoffee @@ -0,0 +1,52 @@ + module.exports = '<!DOCTYPE html> + <html> + <head> + <title><%= title %></title> + <meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" /> + <link rel="stylesheet" media="all" href="<%= css %>" /> + </head> + <body> + <div class="container"> + <div class="page"> + + <div class="header"> + <% if (hasTitle) { %> + <% var section = sections.shift(); %> + <%= section.docsHtml %> + <% if (!(/^\s*$/).test(section.codeText)) { %> + <%= section.codeHtml %> + <% } %> + <% } else { %> + <h1><%= title %></h1> + <% } %> + + <% if (sources.length > 1) { %> + <div class="toc"> + <h3>Table of Contents</h3> + <ol> + <% for (var i=0, l = sources.length; i < l; i++) { %> + <% var source = sources[i]; %> + <li> + <a class="source" href="<%= destination(source) %>"> + <%= path.basename(source) %> + </a> + </li> + <% } %> + </ol> + </div> + <% } %> + </div> + + <% for (var i = 0, l = sections.length; i<l; i++) { %> + <% var section = sections[i]; %> + <%= section.docsHtml %> + <% if (!(/^\s*$/).test(section.codeText)) { %> + <%= section.codeHtml %> + <% } %> + <% } %> + <div class="fleur">h</div> + </div> + </div> + </body> + </html>' \ No newline at end of file diff --git a/test/unit-tests/fakes/fake_coffee.coffee b/test/unit-tests/fakes/fake_coffee.coffee new file mode 100755 index 00000000..8c304b6c --- /dev/null +++ b/test/unit-tests/fakes/fake_coffee.coffee @@ -0,0 +1,9 @@ +# Assignment: +number = 42 +opposite = true + +# Conditions: +number = -42 if opposite + +# Functions: +square = (x) -> x * x diff --git a/test/unit-tests/fakes/informationOnFilesFlattened.js b/test/unit-tests/fakes/informationOnFilesFlattened.js new file mode 100755 index 00000000..bb83c7f6 --- /dev/null +++ b/test/unit-tests/fakes/informationOnFilesFlattened.js @@ -0,0 +1,227 @@ +module.exports = { + "README.md": { + "destination": { + "base": "README.html", + "css": "docco.css", + "dir": "docs", + "ext": ".html", + "file": "docs/README.html", + "name": "README", + "path": "/Project/docs/README.html", + "pathdir": "/Project/docs", + "relativefile": "README.html", + "root": "/Project" + }, + "language": { + "code": "\\`\\`\\`", + "codeMatcher": /^\s*\`\`\`/, + "commentFilter": /(^#![\/]|^\s*#\{)/, + "commentMatcher": /^\s*\s?/, + "html": true, + "imageMatcher": /^!\[(.+)\]\((.+)\)/, + "link": "!", + "linkMatcher": /^\[(.+)\]\((.+)\)/, + "name": "markdown", + "section": "#", + "sectionMatcher": /^#\s?/, + "symbol": "" + }, + "others": { + "README.html": { + "file": "README.md", + "image": false, + "link": "README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "fake_coffee.html" + }, + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee", + "image": false, + "link": "fake_litcoffee.html" + }, + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg", + "image": true, + "link": "images/fluffybunny1.jpg" + } + }, + "source": { + "base": "README.md", + "dir": "", + "ext": ".md", + "file": "README.md", + "name": "README", + "path": "/Project/README.md", + "relativefile": "README.md", + "root": "/Project" + } + }, + "images/fluffybunny1.jpg": { + "destination": { + "base": "fluffybunny1.jpg", + "css": "../docco.css", + "dir": "docs/images", + "ext": ".jpg", + "file": "docs/images/fluffybunny1.jpg", + "name": "fluffybunny1", + "path": "/Project/docs/images/fluffybunny1.jpg", + "pathdir": "/Project/docs/images", + "relativefile": "images/fluffybunny1.jpg", + "root": "/Project" + }, + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/, + "commentMatcher": /^\s*undefined\s?/, + "copy": true, + "name": "image" + }, + "others": { + "README.html": { + "file": "README.md", + "image": false, + "link": "README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "fake_coffee.html" + }, + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee", + "image": false, + "link": "fake_litcoffee.html" + }, + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg", + "image": true, + "link": "images/fluffybunny1.jpg" + } + }, + "source": { + "base": "fluffybunny1.jpg", + "dir": "images", + "ext": ".jpg", + "file": "images/fluffybunny1.jpg", + "name": "fluffybunny1", + "path": "/Project/images/fluffybunny1.jpg", + "relativefile": "fluffybunny1.jpg", + "root": "/Project" + } + }, + "src/fake_coffee.coffee": { + "destination": { + "base": "fake_coffee.html", + "css": "docco.css", + "dir": "docs", + "ext": ".html", + "file": "docs/fake_coffee.html", + "name": "fake_coffee", + "path": "/Project/docs/fake_coffee.html", + "pathdir": "/Project/docs", + "relativefile": "fake_coffee.html", + "root": "/Project" + }, + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/, + "commentMatcher": /^\s*#\s?/, + "multiline": { + "start": "###", + "stop": "###" + }, + "name": "coffeescript", + "startMatcher": /^\s*\#\#\#/, + "stopMatcher": /^\s*\#\#\#/, + "symbol": "#" + }, + "others": { + "README.html": { + "file": "README.md", + "image": false, + "link": "README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "fake_coffee.html" + }, + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee", + "image": false, + "link": "fake_litcoffee.html" + }, + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg", + "image": true, + "link": "images/fluffybunny1.jpg" + } + }, + "source": { + "base": "fake_coffee.coffee", + "dir": "src", + "ext": ".coffee", + "file": "src/fake_coffee.coffee", + "name": "fake_coffee", + "path": "/Project/src/fake_coffee.coffee", + "relativefile": "fake_coffee.coffee", + "root": "/Project" + } + }, + "src/lib/fake_litcoffee.litcoffee": { + "destination": { + "base": "fake_litcoffee.html", + "css": "docco.css", + "dir": "docs", + "ext": ".html", + "file": "docs/fake_litcoffee.html", + "name": "fake_litcoffee", + "path": "/Project/docs/fake_litcoffee.html", + "pathdir": "/Project/docs", + "relativefile": "fake_litcoffee.html", + "root": "/Project" + }, + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/, + "commentMatcher": /^\s*#\s?/, + "literate": true, + "name": "coffeescript", + "symbol": "#" + }, + "others": { + "README.html": { + "file": "README.md", + "image": false, + "link": "README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "fake_coffee.html" + }, + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee", + "image": false, + "link": "fake_litcoffee.html" + }, + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg", + "image": true, + "link": "images/fluffybunny1.jpg" + } + }, + "source": { + "base": "fake_litcoffee.litcoffee", + "dir": "src/lib", + "ext": ".litcoffee", + "file": "src/lib/fake_litcoffee.litcoffee", + "name": "fake_litcoffee", + "path": "/Project/src/lib/fake_litcoffee.litcoffee", + "relativefile": "fake_litcoffee.litcoffee", + "root": "/Project" + } + } +}; + +//# sourceMappingURL=informationOnFilesFlattened.js.map diff --git a/test/unit-tests/fakes/informationOnFilesFlattened.js.map b/test/unit-tests/fakes/informationOnFilesFlattened.js.map new file mode 100644 index 00000000..dd5852c6 --- /dev/null +++ b/test/unit-tests/fakes/informationOnFilesFlattened.js.map @@ -0,0 +1 @@ +{"version":3,"file":"informationOnFilesFlattened.js","sources":["fakes/informationOnFilesFlattened.litcoffee"],"names":[],"mappings":"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","sourcesContent":["A fake for the flattended getInformationOnFiles test.\n\n module.exports = {\n \"README.md\": {\n \"destination\": {\n \"base\": \"README.html\"\n \"css\": \"docco.css\"\n \"dir\": \"docs\"\n \"ext\": \".html\"\n \"file\": \"docs/README.html\"\n \"name\": \"README\"\n \"path\": \"/Project/docs/README.html\"\n \"pathdir\": \"/Project/docs\"\n \"relativefile\": \"README.html\"\n \"root\": \"/Project\"\n }\n \"language\": {\n \"code\": \"\\\\`\\\\`\\\\`\"\n \"codeMatcher\": /^\\s*\\`\\`\\`/\n \"commentFilter\": /(^#![\\/]|^\\s*#\\{)/\n \"commentMatcher\": /^\\s*\\s?/\n \"html\": true\n \"imageMatcher\": /^!\\[(.+)\\]\\((.+)\\)/,\n \"link\": \"!\",\n \"linkMatcher\": /^\\[(.+)\\]\\((.+)\\)/,\n \"name\": \"markdown\"\n \"section\": \"#\"\n \"sectionMatcher\": /^#\\s?/\n \"symbol\": \"\"\n }\n \"others\": {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"fake_coffee.html\"\n }\n \"fake_litcoffee.html\": {\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"image\": false\n \"link\": \"fake_litcoffee.html\"\n }\n \"fluffybunny1.jpg\": {\n \"file\": \"images/fluffybunny1.jpg\"\n \"image\": true\n \"link\": \"images/fluffybunny1.jpg\"\n }\n }\n \"source\": {\n \"base\": \"README.md\"\n \"dir\": \"\"\n \"ext\": \".md\"\n \"file\": \"README.md\"\n \"name\": \"README\"\n \"path\": \"/Project/README.md\"\n \"relativefile\": \"README.md\"\n \"root\": \"/Project\"\n }\n }\n \"images/fluffybunny1.jpg\": {\n \"destination\": {\n \"base\": \"fluffybunny1.jpg\"\n \"css\": \"../docco.css\"\n \"dir\": \"docs/images\"\n \"ext\": \".jpg\"\n \"file\": \"docs/images/fluffybunny1.jpg\"\n \"name\": \"fluffybunny1\"\n \"path\": \"/Project/docs/images/fluffybunny1.jpg\"\n \"pathdir\": \"/Project/docs/images\"\n \"relativefile\": \"images/fluffybunny1.jpg\"\n \"root\": \"/Project\"\n }\n \"language\": {\n \"commentFilter\": /(^#![\\/]|^\\s*#\\{)/\n \"commentMatcher\": /^\\s*undefined\\s?/\n \"copy\": true\n \"name\": \"image\"\n }\n \"others\": {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"fake_coffee.html\"\n }\n \"fake_litcoffee.html\": {\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"image\": false\n \"link\": \"fake_litcoffee.html\"\n }\n \"fluffybunny1.jpg\": {\n \"file\": \"images/fluffybunny1.jpg\"\n \"image\": true\n \"link\": \"images/fluffybunny1.jpg\"\n }\n }\n \"source\": {\n \"base\": \"fluffybunny1.jpg\"\n \"dir\": \"images\"\n \"ext\": \".jpg\"\n \"file\": \"images/fluffybunny1.jpg\"\n \"name\": \"fluffybunny1\"\n \"path\": \"/Project/images/fluffybunny1.jpg\"\n \"relativefile\": \"fluffybunny1.jpg\"\n \"root\": \"/Project\"\n }\n }\n \"src/fake_coffee.coffee\": {\n \"destination\": {\n \"base\": \"fake_coffee.html\"\n \"css\": \"docco.css\"\n \"dir\": \"docs\"\n \"ext\": \".html\"\n \"file\": \"docs/fake_coffee.html\"\n \"name\": \"fake_coffee\"\n \"path\": \"/Project/docs/fake_coffee.html\"\n \"pathdir\": \"/Project/docs\"\n \"relativefile\": \"fake_coffee.html\"\n \"root\": \"/Project\"\n }\n \"language\": {\n \"commentFilter\": /(^#![\\/]|^\\s*#\\{)/\n \"commentMatcher\": /^\\s*#\\s?/\n \"multiline\": {\n \"start\": \"###\"\n \"stop\": \"###\"\n }\n \"name\": \"coffeescript\"\n \"startMatcher\": /^\\s*\\#\\#\\#/\n \"stopMatcher\": /^\\s*\\#\\#\\#/\n \"symbol\": \"#\"\n }\n \"others\": {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"fake_coffee.html\"\n }\n \"fake_litcoffee.html\": {\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"image\": false\n \"link\": \"fake_litcoffee.html\"\n }\n \"fluffybunny1.jpg\": {\n \"file\": \"images/fluffybunny1.jpg\"\n \"image\": true\n \"link\": \"images/fluffybunny1.jpg\"\n }\n }\n \"source\": {\n \"base\": \"fake_coffee.coffee\"\n \"dir\": \"src\"\n \"ext\": \".coffee\"\n \"file\": \"src/fake_coffee.coffee\"\n \"name\": \"fake_coffee\"\n \"path\": \"/Project/src/fake_coffee.coffee\"\n \"relativefile\": \"fake_coffee.coffee\"\n \"root\": \"/Project\"\n }\n }\n \"src/lib/fake_litcoffee.litcoffee\": {\n \"destination\": {\n \"base\": \"fake_litcoffee.html\"\n \"css\": \"docco.css\"\n \"dir\": \"docs\"\n \"ext\": \".html\"\n \"file\": \"docs/fake_litcoffee.html\"\n \"name\": \"fake_litcoffee\"\n \"path\": \"/Project/docs/fake_litcoffee.html\"\n \"pathdir\": \"/Project/docs\"\n \"relativefile\": \"fake_litcoffee.html\"\n \"root\": \"/Project\"\n }\n \"language\": {\n \"commentFilter\": /(^#![\\/]|^\\s*#\\{)/\n \"commentMatcher\": /^\\s*#\\s?/\n \"literate\": true\n \"name\": \"coffeescript\"\n \"symbol\": \"#\"\n }\n \"others\": {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"fake_coffee.html\"\n }\n \"fake_litcoffee.html\": {\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"image\": false\n \"link\": \"fake_litcoffee.html\"\n }\n \"fluffybunny1.jpg\": {\n \"file\": \"images/fluffybunny1.jpg\"\n \"image\": true\n \"link\": \"images/fluffybunny1.jpg\"\n }\n }\n \"source\": {\n \"base\": \"fake_litcoffee.litcoffee\"\n \"dir\": \"src/lib\"\n \"ext\": \".litcoffee\"\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"name\": \"fake_litcoffee\"\n \"path\": \"/Project/src/lib/fake_litcoffee.litcoffee\"\n \"relativefile\": \"fake_litcoffee.litcoffee\"\n \"root\": \"/Project\"\n }\n }\n }"]} \ No newline at end of file diff --git a/test/unit-tests/fakes/informationOnFilesFlattened.litcoffee b/test/unit-tests/fakes/informationOnFilesFlattened.litcoffee new file mode 100755 index 00000000..8b5f1623 --- /dev/null +++ b/test/unit-tests/fakes/informationOnFilesFlattened.litcoffee @@ -0,0 +1,227 @@ +A fake for the flattended getInformationOnFiles test. + + module.exports = { + "README.md": { + "destination": { + "base": "README.html" + "css": "docco.css" + "dir": "docs" + "ext": ".html" + "file": "docs/README.html" + "name": "README" + "path": "/Project/docs/README.html" + "pathdir": "/Project/docs" + "relativefile": "README.html" + "root": "/Project" + } + "language": { + "code": "\\`\\`\\`" + "codeMatcher": /^\s*\`\`\`/ + "commentFilter": /(^#![\/]|^\s*#\{)/ + "commentMatcher": /^\s*\s?/ + "html": true + "imageMatcher": /^!\[(.+)\]\((.+)\)/, + "link": "!", + "linkMatcher": /^\[(.+)\]\((.+)\)/, + "name": "markdown" + "section": "#" + "sectionMatcher": /^#\s?/ + "symbol": "" + } + "others": { + "README.html": { + "file": "README.md" + "image": false + "link": "README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "fake_coffee.html" + } + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee" + "image": false + "link": "fake_litcoffee.html" + } + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg" + "image": true + "link": "images/fluffybunny1.jpg" + } + } + "source": { + "base": "README.md" + "dir": "" + "ext": ".md" + "file": "README.md" + "name": "README" + "path": "/Project/README.md" + "relativefile": "README.md" + "root": "/Project" + } + } + "images/fluffybunny1.jpg": { + "destination": { + "base": "fluffybunny1.jpg" + "css": "../docco.css" + "dir": "docs/images" + "ext": ".jpg" + "file": "docs/images/fluffybunny1.jpg" + "name": "fluffybunny1" + "path": "/Project/docs/images/fluffybunny1.jpg" + "pathdir": "/Project/docs/images" + "relativefile": "images/fluffybunny1.jpg" + "root": "/Project" + } + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/ + "commentMatcher": /^\s*undefined\s?/ + "copy": true + "name": "image" + } + "others": { + "README.html": { + "file": "README.md" + "image": false + "link": "README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "fake_coffee.html" + } + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee" + "image": false + "link": "fake_litcoffee.html" + } + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg" + "image": true + "link": "images/fluffybunny1.jpg" + } + } + "source": { + "base": "fluffybunny1.jpg" + "dir": "images" + "ext": ".jpg" + "file": "images/fluffybunny1.jpg" + "name": "fluffybunny1" + "path": "/Project/images/fluffybunny1.jpg" + "relativefile": "fluffybunny1.jpg" + "root": "/Project" + } + } + "src/fake_coffee.coffee": { + "destination": { + "base": "fake_coffee.html" + "css": "docco.css" + "dir": "docs" + "ext": ".html" + "file": "docs/fake_coffee.html" + "name": "fake_coffee" + "path": "/Project/docs/fake_coffee.html" + "pathdir": "/Project/docs" + "relativefile": "fake_coffee.html" + "root": "/Project" + } + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/ + "commentMatcher": /^\s*#\s?/ + "multiline": { + "start": "###" + "stop": "###" + } + "name": "coffeescript" + "startMatcher": /^\s*\#\#\#/ + "stopMatcher": /^\s*\#\#\#/ + "symbol": "#" + } + "others": { + "README.html": { + "file": "README.md" + "image": false + "link": "README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "fake_coffee.html" + } + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee" + "image": false + "link": "fake_litcoffee.html" + } + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg" + "image": true + "link": "images/fluffybunny1.jpg" + } + } + "source": { + "base": "fake_coffee.coffee" + "dir": "src" + "ext": ".coffee" + "file": "src/fake_coffee.coffee" + "name": "fake_coffee" + "path": "/Project/src/fake_coffee.coffee" + "relativefile": "fake_coffee.coffee" + "root": "/Project" + } + } + "src/lib/fake_litcoffee.litcoffee": { + "destination": { + "base": "fake_litcoffee.html" + "css": "docco.css" + "dir": "docs" + "ext": ".html" + "file": "docs/fake_litcoffee.html" + "name": "fake_litcoffee" + "path": "/Project/docs/fake_litcoffee.html" + "pathdir": "/Project/docs" + "relativefile": "fake_litcoffee.html" + "root": "/Project" + } + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/ + "commentMatcher": /^\s*#\s?/ + "literate": true + "name": "coffeescript" + "symbol": "#" + } + "others": { + "README.html": { + "file": "README.md" + "image": false + "link": "README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "fake_coffee.html" + } + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee" + "image": false + "link": "fake_litcoffee.html" + } + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg" + "image": true + "link": "images/fluffybunny1.jpg" + } + } + "source": { + "base": "fake_litcoffee.litcoffee" + "dir": "src/lib" + "ext": ".litcoffee" + "file": "src/lib/fake_litcoffee.litcoffee" + "name": "fake_litcoffee" + "path": "/Project/src/lib/fake_litcoffee.litcoffee" + "relativefile": "fake_litcoffee.litcoffee" + "root": "/Project" + } + } + } \ No newline at end of file diff --git a/test/unit-tests/fakes/informationOnFilesUnFlattened.js b/test/unit-tests/fakes/informationOnFilesUnFlattened.js new file mode 100755 index 00000000..2c3e35e0 --- /dev/null +++ b/test/unit-tests/fakes/informationOnFilesUnFlattened.js @@ -0,0 +1,227 @@ +module.exports = { + "README.md": { + "destination": { + "base": "README.html", + "css": "docco.css", + "dir": "docs", + "ext": ".html", + "file": "docs/README.html", + "name": "README", + "path": "/Project/docs/README.html", + "pathdir": "/Project/docs", + "relativefile": "README.html", + "root": "/Project" + }, + "language": { + "code": "\\`\\`\\`", + "codeMatcher": /^\s*\`\`\`/, + "commentFilter": /(^#![\/]|^\s*#\{)/, + "commentMatcher": /^\s*\s?/, + "html": true, + "imageMatcher": /^!\[(.+)\]\((.+)\)/, + "link": "!", + "linkMatcher": /^\[(.+)\]\((.+)\)/, + "name": "markdown", + "section": "#", + "sectionMatcher": /^#\s?/, + "symbol": "" + }, + "others": { + "README.html": { + "file": "README.md", + "image": false, + "link": "README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "src/fake_coffee.html" + }, + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee", + "image": false, + "link": "src/lib/fake_litcoffee.html" + }, + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg", + "image": true, + "link": "images/fluffybunny1.jpg" + } + }, + "source": { + "base": "README.md", + "dir": "", + "ext": ".md", + "file": "README.md", + "name": "README", + "path": "/Project/README.md", + "relativefile": "README.md", + "root": "/Project" + } + }, + "images/fluffybunny1.jpg": { + "destination": { + "base": "fluffybunny1.jpg", + "css": "../docco.css", + "dir": "docs/images", + "ext": ".jpg", + "file": "docs/images/fluffybunny1.jpg", + "name": "fluffybunny1", + "path": "/Project/docs/images/fluffybunny1.jpg", + "pathdir": "/Project/docs/images", + "relativefile": "images/fluffybunny1.jpg", + "root": "/Project" + }, + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/, + "commentMatcher": /^\s*undefined\s?/, + "copy": true, + "name": "image" + }, + "others": { + "README.html": { + "file": "README.md", + "image": false, + "link": "../README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "../src/fake_coffee.html" + }, + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee", + "image": false, + "link": "../src/lib/fake_litcoffee.html" + }, + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg", + "image": true, + "link": "fluffybunny1.jpg" + } + }, + "source": { + "base": "fluffybunny1.jpg", + "dir": "images", + "ext": ".jpg", + "file": "images/fluffybunny1.jpg", + "name": "fluffybunny1", + "path": "/Project/images/fluffybunny1.jpg", + "relativefile": "images/fluffybunny1.jpg", + "root": "/Project" + } + }, + "src/fake_coffee.coffee": { + "destination": { + "base": "fake_coffee.html", + "css": "../docco.css", + "dir": "docs/src", + "ext": ".html", + "file": "docs/src/fake_coffee.html", + "name": "fake_coffee", + "path": "/Project/docs/src/fake_coffee.html", + "pathdir": "/Project/docs/src", + "relativefile": "src/fake_coffee.html", + "root": "/Project" + }, + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/, + "commentMatcher": /^\s*#\s?/, + "multiline": { + "start": "###", + "stop": "###" + }, + "name": "coffeescript", + "startMatcher": /^\s*\#\#\#/, + "stopMatcher": /^\s*\#\#\#/, + "symbol": "#" + }, + "others": { + "README.html": { + "file": "README.md", + "image": false, + "link": "../README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "fake_coffee.html" + }, + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee", + "image": false, + "link": "lib/fake_litcoffee.html" + }, + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg", + "image": true, + "link": "../images/fluffybunny1.jpg" + } + }, + "source": { + "base": "fake_coffee.coffee", + "dir": "src", + "ext": ".coffee", + "file": "src/fake_coffee.coffee", + "name": "fake_coffee", + "path": "/Project/src/fake_coffee.coffee", + "relativefile": "src/fake_coffee.coffee", + "root": "/Project" + } + }, + "src/lib/fake_litcoffee.litcoffee": { + "destination": { + "base": "fake_litcoffee.html", + "css": "../../docco.css", + "dir": "docs/src/lib", + "ext": ".html", + "file": "docs/src/lib/fake_litcoffee.html", + "name": "fake_litcoffee", + "path": "/Project/docs/src/lib/fake_litcoffee.html", + "pathdir": "/Project/docs/src/lib", + "relativefile": "src/lib/fake_litcoffee.html", + "root": "/Project" + }, + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/, + "commentMatcher": /^\s*#\s?/, + "literate": true, + "name": "coffeescript", + "symbol": "#" + }, + "others": { + "README.html": { + "file": "README.md", + "image": false, + "link": "../../README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "../fake_coffee.html" + }, + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee", + "image": false, + "link": "fake_litcoffee.html" + }, + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg", + "image": true, + "link": "../../images/fluffybunny1.jpg" + } + }, + "source": { + "base": "fake_litcoffee.litcoffee", + "dir": "src/lib", + "ext": ".litcoffee", + "file": "src/lib/fake_litcoffee.litcoffee", + "name": "fake_litcoffee", + "path": "/Project/src/lib/fake_litcoffee.litcoffee", + "relativefile": "src/lib/fake_litcoffee.litcoffee", + "root": "/Project" + } + } +}; + +//# sourceMappingURL=informationOnFilesUnFlattened.js.map diff --git a/test/unit-tests/fakes/informationOnFilesUnFlattened.js.map b/test/unit-tests/fakes/informationOnFilesUnFlattened.js.map new file mode 100644 index 00000000..15c88f66 --- /dev/null +++ b/test/unit-tests/fakes/informationOnFilesUnFlattened.js.map @@ -0,0 +1 @@ +{"version":3,"file":"informationOnFilesUnFlattened.js","sources":["fakes/informationOnFilesUnFlattened.litcoffee"],"names":[],"mappings":"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","sourcesContent":["A fake for the unflattended getInformationOnFiles test.\n\n module.exports = {\n \"README.md\": {\n \"destination\": {\n \"base\": \"README.html\"\n \"css\": \"docco.css\"\n \"dir\": \"docs\"\n \"ext\": \".html\"\n \"file\": \"docs/README.html\"\n \"name\": \"README\"\n \"path\": \"/Project/docs/README.html\"\n \"pathdir\": \"/Project/docs\"\n \"relativefile\": \"README.html\"\n \"root\": \"/Project\"\n }\n \"language\": {\n \"code\": \"\\\\`\\\\`\\\\`\"\n \"codeMatcher\": /^\\s*\\`\\`\\`/\n \"commentFilter\": /(^#![\\/]|^\\s*#\\{)/\n \"commentMatcher\": /^\\s*\\s?/\n \"html\": true\n \"imageMatcher\": /^!\\[(.+)\\]\\((.+)\\)/\n \"link\": \"!\"\n \"linkMatcher\": /^\\[(.+)\\]\\((.+)\\)/\n \"name\": \"markdown\"\n \"section\": \"#\"\n \"sectionMatcher\": /^#\\s?/\n \"symbol\": \"\"\n }\n \"others\": {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"src/fake_coffee.html\"\n }\n \"fake_litcoffee.html\": {\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"image\": false\n \"link\": \"src/lib/fake_litcoffee.html\"\n }\n \"fluffybunny1.jpg\": {\n \"file\": \"images/fluffybunny1.jpg\"\n \"image\": true\n \"link\": \"images/fluffybunny1.jpg\"\n }\n }\n \"source\": {\n \"base\": \"README.md\"\n \"dir\": \"\"\n \"ext\": \".md\"\n \"file\": \"README.md\"\n \"name\": \"README\"\n \"path\": \"/Project/README.md\"\n \"relativefile\": \"README.md\"\n \"root\": \"/Project\"\n }\n }\n \"images/fluffybunny1.jpg\": {\n \"destination\": {\n \"base\": \"fluffybunny1.jpg\"\n \"css\": \"../docco.css\"\n \"dir\": \"docs/images\"\n \"ext\": \".jpg\"\n \"file\": \"docs/images/fluffybunny1.jpg\"\n \"name\": \"fluffybunny1\"\n \"path\": \"/Project/docs/images/fluffybunny1.jpg\"\n \"pathdir\": \"/Project/docs/images\"\n \"relativefile\": \"images/fluffybunny1.jpg\"\n \"root\": \"/Project\"\n }\n \"language\": {\n \"commentFilter\": /(^#![\\/]|^\\s*#\\{)/\n \"commentMatcher\": /^\\s*undefined\\s?/\n \"copy\": true\n \"name\": \"image\"\n }\n \"others\": {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"../README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"../src/fake_coffee.html\"\n }\n \"fake_litcoffee.html\": {\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"image\": false\n \"link\": \"../src/lib/fake_litcoffee.html\"\n }\n \"fluffybunny1.jpg\": {\n \"file\": \"images/fluffybunny1.jpg\"\n \"image\": true\n \"link\": \"fluffybunny1.jpg\"\n }\n }\n \"source\": {\n \"base\": \"fluffybunny1.jpg\"\n \"dir\": \"images\"\n \"ext\": \".jpg\"\n \"file\": \"images/fluffybunny1.jpg\"\n \"name\": \"fluffybunny1\"\n \"path\": \"/Project/images/fluffybunny1.jpg\"\n \"relativefile\": \"images/fluffybunny1.jpg\"\n \"root\": \"/Project\"\n }\n }\n \"src/fake_coffee.coffee\": {\n \"destination\": {\n \"base\": \"fake_coffee.html\"\n \"css\": \"../docco.css\"\n \"dir\": \"docs/src\"\n \"ext\": \".html\"\n \"file\": \"docs/src/fake_coffee.html\"\n \"name\": \"fake_coffee\"\n \"path\": \"/Project/docs/src/fake_coffee.html\"\n \"pathdir\": \"/Project/docs/src\"\n \"relativefile\": \"src/fake_coffee.html\"\n \"root\": \"/Project\"\n }\n \"language\": {\n \"commentFilter\": /(^#![\\/]|^\\s*#\\{)/\n \"commentMatcher\": /^\\s*#\\s?/\n \"multiline\": {\n \"start\": \"###\"\n \"stop\": \"###\"\n }\n \"name\": \"coffeescript\"\n \"startMatcher\": /^\\s*\\#\\#\\#/\n \"stopMatcher\": /^\\s*\\#\\#\\#/\n \"symbol\": \"#\"\n }\n \"others\": {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"../README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"fake_coffee.html\"\n }\n \"fake_litcoffee.html\": {\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"image\": false\n \"link\": \"lib/fake_litcoffee.html\"\n }\n \"fluffybunny1.jpg\": {\n \"file\": \"images/fluffybunny1.jpg\"\n \"image\": true\n \"link\": \"../images/fluffybunny1.jpg\"\n }\n }\n \"source\": {\n \"base\": \"fake_coffee.coffee\"\n \"dir\": \"src\"\n \"ext\": \".coffee\"\n \"file\": \"src/fake_coffee.coffee\"\n \"name\": \"fake_coffee\"\n \"path\": \"/Project/src/fake_coffee.coffee\"\n \"relativefile\": \"src/fake_coffee.coffee\"\n \"root\": \"/Project\"\n }\n }\n \"src/lib/fake_litcoffee.litcoffee\": {\n \"destination\": {\n \"base\": \"fake_litcoffee.html\"\n \"css\": \"../../docco.css\"\n \"dir\": \"docs/src/lib\"\n \"ext\": \".html\"\n \"file\": \"docs/src/lib/fake_litcoffee.html\"\n \"name\": \"fake_litcoffee\"\n \"path\": \"/Project/docs/src/lib/fake_litcoffee.html\"\n \"pathdir\": \"/Project/docs/src/lib\"\n \"relativefile\": \"src/lib/fake_litcoffee.html\"\n \"root\": \"/Project\"\n }\n \"language\": {\n \"commentFilter\": /(^#![\\/]|^\\s*#\\{)/\n \"commentMatcher\": /^\\s*#\\s?/\n \"literate\": true\n \"name\": \"coffeescript\"\n \"symbol\": \"#\"\n }\n \"others\": {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"../../README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"../fake_coffee.html\"\n }\n \"fake_litcoffee.html\": {\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"image\": false\n \"link\": \"fake_litcoffee.html\"\n }\n \"fluffybunny1.jpg\": {\n \"file\": \"images/fluffybunny1.jpg\"\n \"image\": true\n \"link\": \"../../images/fluffybunny1.jpg\"\n }\n }\n \"source\": {\n \"base\": \"fake_litcoffee.litcoffee\"\n \"dir\": \"src/lib\"\n \"ext\": \".litcoffee\"\n \"file\": \"src/lib/fake_litcoffee.litcoffee\"\n \"name\": \"fake_litcoffee\"\n \"path\": \"/Project/src/lib/fake_litcoffee.litcoffee\"\n \"relativefile\": \"src/lib/fake_litcoffee.litcoffee\"\n \"root\": \"/Project\"\n }\n }\n }"]} \ No newline at end of file diff --git a/test/unit-tests/fakes/informationOnFilesUnFlattened.litcoffee b/test/unit-tests/fakes/informationOnFilesUnFlattened.litcoffee new file mode 100755 index 00000000..32e13efb --- /dev/null +++ b/test/unit-tests/fakes/informationOnFilesUnFlattened.litcoffee @@ -0,0 +1,227 @@ +A fake for the unflattended getInformationOnFiles test. + + module.exports = { + "README.md": { + "destination": { + "base": "README.html" + "css": "docco.css" + "dir": "docs" + "ext": ".html" + "file": "docs/README.html" + "name": "README" + "path": "/Project/docs/README.html" + "pathdir": "/Project/docs" + "relativefile": "README.html" + "root": "/Project" + } + "language": { + "code": "\\`\\`\\`" + "codeMatcher": /^\s*\`\`\`/ + "commentFilter": /(^#![\/]|^\s*#\{)/ + "commentMatcher": /^\s*\s?/ + "html": true + "imageMatcher": /^!\[(.+)\]\((.+)\)/ + "link": "!" + "linkMatcher": /^\[(.+)\]\((.+)\)/ + "name": "markdown" + "section": "#" + "sectionMatcher": /^#\s?/ + "symbol": "" + } + "others": { + "README.html": { + "file": "README.md" + "image": false + "link": "README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "src/fake_coffee.html" + } + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee" + "image": false + "link": "src/lib/fake_litcoffee.html" + } + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg" + "image": true + "link": "images/fluffybunny1.jpg" + } + } + "source": { + "base": "README.md" + "dir": "" + "ext": ".md" + "file": "README.md" + "name": "README" + "path": "/Project/README.md" + "relativefile": "README.md" + "root": "/Project" + } + } + "images/fluffybunny1.jpg": { + "destination": { + "base": "fluffybunny1.jpg" + "css": "../docco.css" + "dir": "docs/images" + "ext": ".jpg" + "file": "docs/images/fluffybunny1.jpg" + "name": "fluffybunny1" + "path": "/Project/docs/images/fluffybunny1.jpg" + "pathdir": "/Project/docs/images" + "relativefile": "images/fluffybunny1.jpg" + "root": "/Project" + } + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/ + "commentMatcher": /^\s*undefined\s?/ + "copy": true + "name": "image" + } + "others": { + "README.html": { + "file": "README.md" + "image": false + "link": "../README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "../src/fake_coffee.html" + } + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee" + "image": false + "link": "../src/lib/fake_litcoffee.html" + } + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg" + "image": true + "link": "fluffybunny1.jpg" + } + } + "source": { + "base": "fluffybunny1.jpg" + "dir": "images" + "ext": ".jpg" + "file": "images/fluffybunny1.jpg" + "name": "fluffybunny1" + "path": "/Project/images/fluffybunny1.jpg" + "relativefile": "images/fluffybunny1.jpg" + "root": "/Project" + } + } + "src/fake_coffee.coffee": { + "destination": { + "base": "fake_coffee.html" + "css": "../docco.css" + "dir": "docs/src" + "ext": ".html" + "file": "docs/src/fake_coffee.html" + "name": "fake_coffee" + "path": "/Project/docs/src/fake_coffee.html" + "pathdir": "/Project/docs/src" + "relativefile": "src/fake_coffee.html" + "root": "/Project" + } + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/ + "commentMatcher": /^\s*#\s?/ + "multiline": { + "start": "###" + "stop": "###" + } + "name": "coffeescript" + "startMatcher": /^\s*\#\#\#/ + "stopMatcher": /^\s*\#\#\#/ + "symbol": "#" + } + "others": { + "README.html": { + "file": "README.md" + "image": false + "link": "../README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "fake_coffee.html" + } + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee" + "image": false + "link": "lib/fake_litcoffee.html" + } + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg" + "image": true + "link": "../images/fluffybunny1.jpg" + } + } + "source": { + "base": "fake_coffee.coffee" + "dir": "src" + "ext": ".coffee" + "file": "src/fake_coffee.coffee" + "name": "fake_coffee" + "path": "/Project/src/fake_coffee.coffee" + "relativefile": "src/fake_coffee.coffee" + "root": "/Project" + } + } + "src/lib/fake_litcoffee.litcoffee": { + "destination": { + "base": "fake_litcoffee.html" + "css": "../../docco.css" + "dir": "docs/src/lib" + "ext": ".html" + "file": "docs/src/lib/fake_litcoffee.html" + "name": "fake_litcoffee" + "path": "/Project/docs/src/lib/fake_litcoffee.html" + "pathdir": "/Project/docs/src/lib" + "relativefile": "src/lib/fake_litcoffee.html" + "root": "/Project" + } + "language": { + "commentFilter": /(^#![\/]|^\s*#\{)/ + "commentMatcher": /^\s*#\s?/ + "literate": true + "name": "coffeescript" + "symbol": "#" + } + "others": { + "README.html": { + "file": "README.md" + "image": false + "link": "../../README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "../fake_coffee.html" + } + "fake_litcoffee.html": { + "file": "src/lib/fake_litcoffee.litcoffee" + "image": false + "link": "fake_litcoffee.html" + } + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg" + "image": true + "link": "../../images/fluffybunny1.jpg" + } + } + "source": { + "base": "fake_litcoffee.litcoffee" + "dir": "src/lib" + "ext": ".litcoffee" + "file": "src/lib/fake_litcoffee.litcoffee" + "name": "fake_litcoffee" + "path": "/Project/src/lib/fake_litcoffee.litcoffee" + "relativefile": "src/lib/fake_litcoffee.litcoffee" + "root": "/Project" + } + } + } \ No newline at end of file diff --git a/test/unit-tests/unit-test-buildMatchers.js b/test/unit-tests/unit-test-buildMatchers.js new file mode 100755 index 00000000..f09421b0 --- /dev/null +++ b/test/unit-tests/unit-test-buildMatchers.js @@ -0,0 +1,35 @@ +var assert, buildMatchers, languages, ref, should; + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +buildMatchers = require('../../src/buildMatchers'); + +languages = require('../../docco').languages; + +describe('docco buildMatchers', function() { + it('buildMatchers some source code', function() { + var ext, l, results; + languages = buildMatchers(languages); + results = []; + for (ext in languages) { + l = languages[ext]; + assert.deepEqual(l.commentMatcher, RegExp("^\\s*" + l.symbol + "\\s?")); + assert.deepEqual(l.commentFilter, /(^#![\/]|^\s*#\{)/); + if (l.link) { + assert.deepEqual(l.linkMatcher, /^\[(.+)\]\((.+)\)/); + } + if (l.section) { + results.push(assert.deepEqual(l.sectionMatcher, RegExp("^" + l.section + "\\s?"))); + } else { + results.push(void 0); + } + } + return results; + }); +}); + +return; + +//# sourceMappingURL=unit-test-buildMatchers.js.map diff --git a/test/unit-tests/unit-test-buildMatchers.js.map b/test/unit-tests/unit-test-buildMatchers.js.map new file mode 100644 index 00000000..8e60acd9 --- /dev/null +++ b/test/unit-tests/unit-test-buildMatchers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-buildMatchers.js","sources":["unit-test-buildMatchers.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,MAAqB,OAAA,CAAQ,MAAR,CAArB,EAAE,mBAAF,EAAU;;AAA4B,MAAA,CAAA;;AACtC,aAAA,GAAgB,OAAA,CAAQ,yBAAR;;AACf,YAAa,OAAA,CAAQ,aAAR;;AAEd,QAAA,CAAS,qBAAT,EAAgC,SAAA;EAE9B,EAAA,CAAG,gCAAH,EAAqC,SAAA;AAEnC,QAAA;IAAA,SAAA,GAAY,aAAA,CAAc,SAAd;AACZ;SAAA,gBAAA;;MACE,MAAM,CAAC,SAAP,CAAiB,CAAC,CAAC,cAAnB,EAAkC,MAAA,CAAA,OAAA,GAAS,CAAC,CAAC,MAAX,GAAkB,MAAlB,CAAlC;MACA,MAAM,CAAC,SAAP,CAAiB,CAAC,CAAC,aAAnB,EAAiC,mBAAjC;MACA,IAAG,CAAC,CAAC,IAAL;QACE,MAAM,CAAC,SAAP,CAAiB,CAAC,CAAC,WAAnB,EAA+B,mBAA/B,EADF;;MAEA,IAAG,CAAC,CAAC,OAAL;qBACE,MAAM,CAAC,SAAP,CAAiB,CAAC,CAAC,cAAnB,EAAkC,MAAA,CAAA,GAAA,GAAM,CAAC,CAAC,OAAR,GAAgB,MAAhB,CAAlC,GADF;OAAA,MAAA;6BAAA;;AALF;;EAHmC,CAArC;AAF8B,CAAhC;;AAaA","sourcesContent":["# This tests if buildMatchers is working correctly.\n\n { assert, should } = require('chai'); should()\n buildMatchers = require '../../src/buildMatchers'\n {languages} = require('../../docco')\n\n describe 'docco buildMatchers', () ->\n\n it 'buildMatchers some source code', () ->\n\n languages = buildMatchers(languages)\n for ext, l of languages\n assert.deepEqual(l.commentMatcher,///^\\s*#{l.symbol}\\s?///)\n assert.deepEqual(l.commentFilter,/(^#![/]|^\\s*#\\{)/)\n if l.link\n assert.deepEqual(l.linkMatcher,///^\\[(.+)\\]\\((.+)\\)///)\n if l.section\n assert.deepEqual(l.sectionMatcher,///^#{l.section}\\s?///)\n return\n return"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-buildMatchers.litcoffee b/test/unit-tests/unit-test-buildMatchers.litcoffee new file mode 100755 index 00000000..2a91d1fb --- /dev/null +++ b/test/unit-tests/unit-test-buildMatchers.litcoffee @@ -0,0 +1,20 @@ +# This tests if buildMatchers is working correctly. + + { assert, should } = require('chai'); should() + buildMatchers = require '../../src/buildMatchers' + {languages} = require('../../docco') + + describe 'docco buildMatchers', () -> + + it 'buildMatchers some source code', () -> + + languages = buildMatchers(languages) + for ext, l of languages + assert.deepEqual(l.commentMatcher,///^\s*#{l.symbol}\s?///) + assert.deepEqual(l.commentFilter,/(^#![/]|^\s*#\{)/) + if l.link + assert.deepEqual(l.linkMatcher,///^\[(.+)\]\((.+)\)///) + if l.section + assert.deepEqual(l.sectionMatcher,///^#{l.section}\s?///) + return + return \ No newline at end of file diff --git a/test/unit-tests/unit-test-configure.js b/test/unit-tests/unit-test-configure.js new file mode 100755 index 00000000..01313034 --- /dev/null +++ b/test/unit-tests/unit-test-configure.js @@ -0,0 +1,60 @@ +var _, assert, commander, configure, fs, ref, should, version; + +_ = require('underscore'); + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +commander = require('commander'); + +configure = require('../../src/configure'); + +version = "0.0.0"; + +fs = { + readFileSync: function() {} +}; + +describe('docco configure', function() { + it('configure docco', function() { + var args, config, defaults; + config = { + layout: 'parallel', + output: 'docs', + template: null, + css: null, + extension: null, + languages: {}, + marked: null, + setup: '.docco.json', + help: false, + flatten: false + }; + args = ["bin/node", "bin/docco", "--setup=.adocco.json"]; + defaults = { + layout: 'parallel', + output: 'docs', + template: null, + css: null, + extension: null, + languages: {}, + marked: null, + setup: '.docco.json', + help: false, + flatten: false + }; + commander.version(version).usage('[options] [file]').option('-c, --css [file]', 'use a custom css file', config.css).option('-e, --extension [ext]', 'assume a file extension for all inputs', config.extension).option('-f, --flatten', 'flatten the directory hierarchy', config.flatten).option('-L, --languages [file]', 'use a custom languages.json', _.compose(JSON.parse, fs.readFileSync)).option('-l, --layout [name]', 'choose a layout (parallel, linear or classic)', config.layout).option('-m, --marked [file]', 'use custom marked options', config.marked).option('-o, --output [path]', 'output to a given folder', config.output).option('-s, --setup [file]', 'use configuration file, normally docco.json', '.docco.json').option('-t, --template [file]', 'use a custom .jst template', config.template).parse(args).name = "docco"; + config = configure(commander, defaults); + config.css.should.contain("resources/parallel/docco.css"); + config.flatten.should.be.equal(false); + config.layout.should.contain("resources/parallel"); + config.output.should.be.equal("docs"); + config["public"].should.contain("resources/parallel/public"); + config.setup.should.be.equal(".adocco.json"); + config.sources.length.should.be.equal(0); + config.template.should.be.ok; + }); +}); + +//# sourceMappingURL=unit-test-configure.js.map diff --git a/test/unit-tests/unit-test-configure.js.map b/test/unit-tests/unit-test-configure.js.map new file mode 100644 index 00000000..6c281dff --- /dev/null +++ b/test/unit-tests/unit-test-configure.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-configure.js","sources":["unit-test-configure.litcoffee"],"names":[],"mappings":"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","sourcesContent":["# This tests if parse is working correctly.\n\n _ = require 'underscore'\n { assert, should } = require('chai'); should()\n commander = require 'commander'\n configure = require '../../src/configure'\n version = \"0.0.0\"\n fs = {\n readFileSync: () ->\n return\n }\n\n describe 'docco configure', () ->\n\n it 'configure docco', () ->\n\n config =\n layout: 'parallel'\n output: 'docs'\n template: null\n css: null\n extension: null\n languages: {}\n marked: null\n setup: '.docco.json'\n help: false\n flatten: false\n args = [\n \"bin/node\",\n \"bin/docco\",\n \"--setup=.adocco.json\"\n ]\n defaults =\n layout: 'parallel'\n output: 'docs'\n template: null\n css: null\n extension: null\n languages: {}\n marked: null\n setup: '.docco.json'\n help: false\n flatten: false\n\n commander.version(version)\n .usage('[options] [file]')\n .option('-c, --css [file]', 'use a custom css file', config.css)\n .option('-e, --extension [ext]', 'assume a file extension for all inputs', config.extension)\n .option('-f, --flatten', 'flatten the directory hierarchy', config.flatten)\n .option('-L, --languages [file]', 'use a custom languages.json', _.compose JSON.parse, fs.readFileSync)\n .option('-l, --layout [name]', 'choose a layout (parallel, linear or classic)', config.layout)\n .option('-m, --marked [file]', 'use custom marked options', config.marked)\n .option('-o, --output [path]', 'output to a given folder', config.output)\n .option('-s, --setup [file]', 'use configuration file, normally docco.json', '.docco.json')\n .option('-t, --template [file]', 'use a custom .jst template', config.template)\n .parse(args)\n .name = \"docco\"\n\n config = configure commander, defaults\n\n config.css.should.contain(\"resources/parallel/docco.css\")\n config.flatten.should.be.equal(false)\n config.layout.should.contain(\"resources/parallel\")\n config.output.should.be.equal(\"docs\")\n config.public.should.contain(\"resources/parallel/public\")\n config.setup.should.be.equal(\".adocco.json\")\n config.sources.length.should.be.equal(0)\n config.template.should.be.ok\n\n return\n return\n"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-configure.litcoffee b/test/unit-tests/unit-test-configure.litcoffee new file mode 100755 index 00000000..08df2769 --- /dev/null +++ b/test/unit-tests/unit-test-configure.litcoffee @@ -0,0 +1,71 @@ +# This tests if parse is working correctly. + + _ = require 'underscore' + { assert, should } = require('chai'); should() + commander = require 'commander' + configure = require '../../src/configure' + version = "0.0.0" + fs = { + readFileSync: () -> + return + } + + describe 'docco configure', () -> + + it 'configure docco', () -> + + config = + layout: 'parallel' + output: 'docs' + template: null + css: null + extension: null + languages: {} + marked: null + setup: '.docco.json' + help: false + flatten: false + args = [ + "bin/node", + "bin/docco", + "--setup=.adocco.json" + ] + defaults = + layout: 'parallel' + output: 'docs' + template: null + css: null + extension: null + languages: {} + marked: null + setup: '.docco.json' + help: false + flatten: false + + commander.version(version) + .usage('[options] [file]') + .option('-c, --css [file]', 'use a custom css file', config.css) + .option('-e, --extension [ext]', 'assume a file extension for all inputs', config.extension) + .option('-f, --flatten', 'flatten the directory hierarchy', config.flatten) + .option('-L, --languages [file]', 'use a custom languages.json', _.compose JSON.parse, fs.readFileSync) + .option('-l, --layout [name]', 'choose a layout (parallel, linear or classic)', config.layout) + .option('-m, --marked [file]', 'use custom marked options', config.marked) + .option('-o, --output [path]', 'output to a given folder', config.output) + .option('-s, --setup [file]', 'use configuration file, normally docco.json', '.docco.json') + .option('-t, --template [file]', 'use a custom .jst template', config.template) + .parse(args) + .name = "docco" + + config = configure commander, defaults + + config.css.should.contain("resources/parallel/docco.css") + config.flatten.should.be.equal(false) + config.layout.should.contain("resources/parallel") + config.output.should.be.equal("docs") + config.public.should.contain("resources/parallel/public") + config.setup.should.be.equal(".adocco.json") + config.sources.length.should.be.equal(0) + config.template.should.be.ok + + return + return diff --git a/test/unit-tests/unit-test-document.js b/test/unit-tests/unit-test-document.js new file mode 100755 index 00000000..f30989d0 --- /dev/null +++ b/test/unit-tests/unit-test-document.js @@ -0,0 +1,104 @@ +var assert, document, informationOnFiles, mockery, ref, should, times; + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +mockery = require('mockery'); + +mockery.enable({ + useCleanCache: true, + warnOnReplace: false, + warnOnUnregistered: false +}); + +times = 0; + +mockery.registerMock('fs-extra', { + mkdirs: function(dir, callback) { + dir.should.be.equal('docs'); + callback(); + }, + mkdirsSync: function(dir) { + if (times === 0) { + dir.should.be.equal(__dirname + '/docs/.'); + } else { + dir.should.be.equal(__dirname + '/docs/images'); + } + times++; + }, + copy: function(fromFile, toFile) { + fromFile.should.be.equal("images/fluffybunny1.jpg"); + toFile.should.be.equal(__dirname + "/docs/images/fluffybunny1.jpg"); + }, + existsSync: function(dir) { + if (times === 0) { + dir.should.be.equal(__dirname + '/docs/.'); + } else { + dir.should.be.equal(__dirname + '/docs/images'); + } + }, + readFile: function(file, callback) { + file.should.be.equal('README.md'); + callback(null, "x=3"); + }, + readFileSync: function() { + return '{ ".coffee": {"name": "coffeescript", "symbol": "#"}, ".litcoffee": {"name": "coffeescript", "symbol": "#", "literate": true}, ".md": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true} }'; + }, + writeFileSync: function(destination, html) { + if (flattened) { + destination.should.be.equal("/Project/docs/fake_coffee.html"); + assert.equal(html, resultOfTemplateFlattened); + } else { + destination.should.be.equal("/Project/docs/src/fake_coffee.html"); + assert.equal(html, resultOfTemplateUnFlattened); + } + } +}); + +mockery.registerMock('parse', function(source, language, code, config) { + if (config == null) { + config = {}; + } +}); + +mockery.registerMock('format', function(source, language, sections, config) {}); + +mockery.registerMock('./write', function(source, sections, config) { + source.should.be.equal("README.md"); + return assert.deepEqual(sections, [ + { + "docsText": "x=3\n", + "codeText": "", + "codeHtml": "", + "docsHtml": "<p>x=3</p>\n" + } + ]); +}); + +informationOnFiles = require('./fakes/informationOnFilesUnFlattened'); + +document = require('../../src/document'); + +describe('docco document', function() { + it('document docco', function() { + var config; + config = { + output: 'docs', + sources: ["README.md", "images/fluffybunny1.jpg"], + root: __dirname, + informationOnFiles: informationOnFiles + }; + document(config); + }); +}); + +mockery.deregisterMock('./parse'); + +mockery.deregisterMock('./format'); + +mockery.deregisterMock('./write'); + +mockery.deregisterMock('fs-extra'); + +//# sourceMappingURL=unit-test-document.js.map diff --git a/test/unit-tests/unit-test-document.js.map b/test/unit-tests/unit-test-document.js.map new file mode 100644 index 00000000..a25848ff --- /dev/null +++ b/test/unit-tests/unit-test-document.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-document.js","sources":["unit-test-document.litcoffee"],"names":[],"mappings":"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","sourcesContent":["# This tests if document is working correctly.\n\n { assert, should } = require('chai'); should()\n mockery = require('mockery')\n mockery.enable({\n useCleanCache: true,\n warnOnReplace: false,\n warnOnUnregistered: false\n })\n times = 0\n mockery.registerMock('fs-extra', {\n mkdirs: (dir, callback) ->\n dir.should.be.equal('docs')\n callback()\n return\n mkdirsSync: (dir) ->\n if times is 0\n dir.should.be.equal(__dirname+'/docs/.')\n else\n dir.should.be.equal(__dirname+'/docs/images')\n\n times++\n return\n copy: (fromFile, toFile) ->\n fromFile.should.be.equal(\"images/fluffybunny1.jpg\")\n toFile.should.be.equal(__dirname+\"/docs/images/fluffybunny1.jpg\")\n return\n existsSync: (dir) ->\n if times is 0\n dir.should.be.equal(__dirname+'/docs/.')\n else\n dir.should.be.equal(__dirname+'/docs/images')\n return\n readFile: (file, callback) ->\n file.should.be.equal('README.md')\n callback(null, \"x=3\")\n return\n readFileSync: () ->\n return '{\n \".coffee\": {\"name\": \"coffeescript\", \"symbol\": \"#\"},\n \".litcoffee\": {\"name\": \"coffeescript\", \"symbol\": \"#\", \"literate\": true},\n \".md\": {\"name\": \"markdown\", \"symbol\": \"\", \"section\": \"#\", \"link\": \"!\", \"html\": true}\n }'\n writeFileSync: (destination, html) ->\n if flattened\n destination.should.be.equal(\"/Project/docs/fake_coffee.html\")\n assert.equal(html,resultOfTemplateFlattened)\n else\n destination.should.be.equal(\"/Project/docs/src/fake_coffee.html\")\n assert.equal(html,resultOfTemplateUnFlattened)\n return\n })\n\n mockery.registerMock('parse', (source, language, code, config = {}) ->\n )\n mockery.registerMock('format', (source, language, sections, config) ->\n )\n mockery.registerMock('./write', (source, sections, config) ->\n source.should.be.equal(\"README.md\")\n assert.deepEqual(sections, [\n {\n \"docsText\": \"x=3\\n\",\n \"codeText\": \"\",\n \"codeHtml\": \"\",\n \"docsHtml\": \"<p>x=3</p>\\n\"\n }\n ])\n )\n informationOnFiles = require('./fakes/informationOnFilesUnFlattened')\n\n document = require '../../src/document'\n\n describe 'docco document', () ->\n\n it 'document docco', () ->\n config =\n output: 'docs'\n sources: [\n \"README.md\",\n \"images/fluffybunny1.jpg\"\n ]\n root: __dirname\n informationOnFiles: informationOnFiles\n\n document(config)\n return\n return\n\n mockery.deregisterMock('./parse')\n mockery.deregisterMock('./format')\n mockery.deregisterMock('./write')\n mockery.deregisterMock('fs-extra')"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-document.litcoffee b/test/unit-tests/unit-test-document.litcoffee new file mode 100755 index 00000000..99163cd6 --- /dev/null +++ b/test/unit-tests/unit-test-document.litcoffee @@ -0,0 +1,92 @@ +# This tests if document is working correctly. + + { assert, should } = require('chai'); should() + mockery = require('mockery') + mockery.enable({ + useCleanCache: true, + warnOnReplace: false, + warnOnUnregistered: false + }) + times = 0 + mockery.registerMock('fs-extra', { + mkdirs: (dir, callback) -> + dir.should.be.equal('docs') + callback() + return + mkdirsSync: (dir) -> + if times is 0 + dir.should.be.equal(__dirname+'/docs/.') + else + dir.should.be.equal(__dirname+'/docs/images') + + times++ + return + copy: (fromFile, toFile) -> + fromFile.should.be.equal("images/fluffybunny1.jpg") + toFile.should.be.equal(__dirname+"/docs/images/fluffybunny1.jpg") + return + existsSync: (dir) -> + if times is 0 + dir.should.be.equal(__dirname+'/docs/.') + else + dir.should.be.equal(__dirname+'/docs/images') + return + readFile: (file, callback) -> + file.should.be.equal('README.md') + callback(null, "x=3") + return + readFileSync: () -> + return '{ + ".coffee": {"name": "coffeescript", "symbol": "#"}, + ".litcoffee": {"name": "coffeescript", "symbol": "#", "literate": true}, + ".md": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true} + }' + writeFileSync: (destination, html) -> + if flattened + destination.should.be.equal("/Project/docs/fake_coffee.html") + assert.equal(html,resultOfTemplateFlattened) + else + destination.should.be.equal("/Project/docs/src/fake_coffee.html") + assert.equal(html,resultOfTemplateUnFlattened) + return + }) + + mockery.registerMock('parse', (source, language, code, config = {}) -> + ) + mockery.registerMock('format', (source, language, sections, config) -> + ) + mockery.registerMock('./write', (source, sections, config) -> + source.should.be.equal("README.md") + assert.deepEqual(sections, [ + { + "docsText": "x=3\n", + "codeText": "", + "codeHtml": "", + "docsHtml": "<p>x=3</p>\n" + } + ]) + ) + informationOnFiles = require('./fakes/informationOnFilesUnFlattened') + + document = require '../../src/document' + + describe 'docco document', () -> + + it 'document docco', () -> + config = + output: 'docs' + sources: [ + "README.md", + "images/fluffybunny1.jpg" + ] + root: __dirname + informationOnFiles: informationOnFiles + + document(config) + return + return + + mockery.deregisterMock('./parse') + mockery.deregisterMock('./format') + mockery.deregisterMock('./write') + mockery.deregisterMock('fs-extra') \ No newline at end of file diff --git a/test/unit-tests/unit-test-fixForMatch.js b/test/unit-tests/unit-test-fixForMatch.js new file mode 100755 index 00000000..4b99c1e5 --- /dev/null +++ b/test/unit-tests/unit-test-fixForMatch.js @@ -0,0 +1,47 @@ +var assert, chai, expect, fixForMatch, should; + +chai = require('chai'); + +expect = chai.expect; + +should = chai.should(); + +assert = chai.assert; + +fixForMatch = require('./utils/fixForMatch'); + +describe('fix for match', function() { + var replacement; + replacement = "force matched"; + return it('zeros out particular fields..', function() { + var object, result; + object = { + thingId: "1234", + thing1: { + thingId: "1234" + }, + thing2: [ + { + tin: { + id: 1 + } + }, { + tin: { + id: 2 + } + } + ], + leadTime: 3, + transitTime: 3 + }; + result = fixForMatch(object, ['thingId', 'leadTime', 'transitTime', 'id']); + result.thingId.should.be.equal(replacement); + result.leadTime.should.be.equal(replacement); + result.transitTime.should.be.equal(replacement); + result.thing1.thingId.should.be.equal(replacement); + result.thing2[0].tin.id.should.be.equal(replacement); + result.thing2[1].tin.id.should.be.equal(replacement); + }); +}); + +//# sourceMappingURL=unit-test-fixForMatch.js.map diff --git a/test/unit-tests/unit-test-fixForMatch.js.map b/test/unit-tests/unit-test-fixForMatch.js.map new file mode 100644 index 00000000..d858825a --- /dev/null +++ b/test/unit-tests/unit-test-fixForMatch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-fixForMatch.js","sources":["unit-test-fixForMatch.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,IAAA,GAAO,OAAA,CAAQ,MAAR;;AACP,MAAA,GAAS,IAAI,CAAC;;AACd,MAAA,GAAS,IAAI,CAAC,MAAL,CAAA;;AACT,MAAA,GAAS,IAAI,CAAC;;AAEd,WAAA,GAAc,OAAA,CAAQ,qBAAR;;AAEd,QAAA,CAAS,eAAT,EAA0B,SAAA;AAExB,MAAA;EAAA,WAAA,GAAc;SACd,EAAA,CAAG,+BAAH,EAAoC,SAAA;AAClC,QAAA;IAAA,MAAA,GAAS;MACP,OAAA,EAAS,MADF;MAEP,MAAA,EAAQ;QACN,OAAA,EAAS,MADH;OAFD;MAMP,MAAA,EAAQ;QAAC;UAAE,GAAA,EAAK;YAAC,EAAA,EAAI,CAAL;WAAP;SAAD,EAAiB;UAAE,GAAA,EAAK;YAAC,EAAA,EAAI,CAAL;WAAP;SAAjB;OAND;MAOP,QAAA,EAAU,CAPH;MAQP,WAAA,EAAa,CARN;;IAUT,MAAA,GAAS,WAAA,CAAY,MAAZ,EAAmB,CAAC,SAAD,EAAY,UAAZ,EAAwB,aAAxB,EAAuC,IAAvC,CAAnB;IACT,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAzB,CAA+B,WAA/B;IACA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA1B,CAAgC,WAAhC;IACA,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAA7B,CAAmC,WAAnC;IACA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAhC,CAAsC,WAAtC;IACA,MAAM,CAAC,MAAO,CAAA,CAAA,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlC,CAAwC,WAAxC;IACA,MAAM,CAAC,MAAO,CAAA,CAAA,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlC,CAAwC,WAAxC;EAjBkC,CAApC;AAHwB,CAA1B","sourcesContent":["#\n\n chai = require('chai')\n expect = chai.expect\n should = chai.should()\n assert = chai.assert\n\n fixForMatch = require('./utils/fixForMatch')\n\n describe 'fix for match', () ->\n\n replacement = \"force matched\"\n it 'zeros out particular fields..', () ->\n object = {\n thingId: \"1234\"\n thing1: {\n thingId: \"1234\"\n\n }\n thing2: [{ tin: {id: 1}},{ tin: {id: 2}}]\n leadTime: 3\n transitTime: 3\n }\n result = fixForMatch(object,['thingId', 'leadTime', 'transitTime', 'id'])\n result.thingId.should.be.equal(replacement)\n result.leadTime.should.be.equal(replacement)\n result.transitTime.should.be.equal(replacement)\n result.thing1.thingId.should.be.equal(replacement)\n result.thing2[0].tin.id.should.be.equal(replacement)\n result.thing2[1].tin.id.should.be.equal(replacement)\n\n return\n"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-fixForMatch.litcoffee b/test/unit-tests/unit-test-fixForMatch.litcoffee new file mode 100755 index 00000000..f52b39d0 --- /dev/null +++ b/test/unit-tests/unit-test-fixForMatch.litcoffee @@ -0,0 +1,32 @@ +# + + chai = require('chai') + expect = chai.expect + should = chai.should() + assert = chai.assert + + fixForMatch = require('./utils/fixForMatch') + + describe 'fix for match', () -> + + replacement = "force matched" + it 'zeros out particular fields..', () -> + object = { + thingId: "1234" + thing1: { + thingId: "1234" + + } + thing2: [{ tin: {id: 1}},{ tin: {id: 2}}] + leadTime: 3 + transitTime: 3 + } + result = fixForMatch(object,['thingId', 'leadTime', 'transitTime', 'id']) + result.thingId.should.be.equal(replacement) + result.leadTime.should.be.equal(replacement) + result.transitTime.should.be.equal(replacement) + result.thing1.thingId.should.be.equal(replacement) + result.thing2[0].tin.id.should.be.equal(replacement) + result.thing2[1].tin.id.should.be.equal(replacement) + + return diff --git a/test/unit-tests/unit-test-format.js b/test/unit-tests/unit-test-format.js new file mode 100755 index 00000000..c59ae541 --- /dev/null +++ b/test/unit-tests/unit-test-format.js @@ -0,0 +1,64 @@ +var assert, buildMatchers, format, ref, should; + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +format = require('../../src/format'); + +buildMatchers = require('../../src/buildMatchers'); + +describe('docco format', function() { + it('format docco', function() { + var config, languages, sections, source; + source = 'fakes/fake_coffee.coffee'; + config = { + layout: 'parallel', + output: 'docs', + template: null, + css: null, + extension: null, + languages: {}, + marked: null, + setup: '.docco.json', + help: false, + flatten: false + }; + languages = [ + { + "name": "coffeescript", + "symbol": "#", + "commentMatcher": {}, + "commentFilter": {} + } + ]; + languages = buildMatchers(languages); + sections = [ + { + "docsText": "Assignment:\n", + "codeText": "number = 42\nopposite = true\n\n" + }, { + "docsText": "Conditions:\n", + "codeText": "number = -42 if opposite\n\n" + }, { + "docsText": "Functions:\n", + "codeText": "square = (x) -> x * x\n\n" + } + ]; + format(source, languages[0], sections, config); + sections[0].docsText.should.be.equal("Assignment:\n"); + sections[0].codeText.should.be.equal("number = 42\nopposite = true\n\n"); + sections[0].codeHtml.should.be.equal("<div class='highlight'><pre>number = <span class=\"hljs-number\">42</span>\nopposite = <span class=\"hljs-literal\">true</span></pre></div>"); + sections[0].docsHtml.should.be.equal("<p>Assignment:</p>\n"); + sections[1].docsText.should.be.equal("Conditions:\n"); + sections[1].codeText.should.be.equal("number = -42 if opposite\n\n"); + sections[1].codeHtml.should.be.equal("<div class='highlight'><pre>number = <span class=\"hljs-number\">-42</span> <span class=\"hljs-keyword\">if</span> opposite</pre></div>"); + sections[1].docsHtml.should.be.equal("<p>Conditions:</p>\n"); + sections[2].docsText.should.be.equal("Functions:\n"); + sections[2].codeText.should.be.equal("square = (x) -> x * x\n\n"); + sections[2].codeHtml.should.be.equal("<div class='highlight'><pre><span class=\"hljs-function\"><span class=\"hljs-title\">square</span> = <span class=\"hljs-params\">(x)</span> -></span> x * x</pre></div>"); + sections[2].docsHtml.should.be.equal("<p>Functions:</p>\n"); + }); +}); + +//# sourceMappingURL=unit-test-format.js.map diff --git a/test/unit-tests/unit-test-format.js.map b/test/unit-tests/unit-test-format.js.map new file mode 100644 index 00000000..74d65fb0 --- /dev/null +++ b/test/unit-tests/unit-test-format.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-format.js","sources":["unit-test-format.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,MAAqB,OAAA,CAAQ,MAAR,CAArB,EAAE,mBAAF,EAAU;;AAA4B,MAAA,CAAA;;AACtC,MAAA,GAAS,OAAA,CAAQ,kBAAR;;AACT,aAAA,GAAgB,OAAA,CAAQ,yBAAR;;AAEhB,QAAA,CAAS,cAAT,EAAyB,SAAA;EAEvB,EAAA,CAAG,cAAH,EAAmB,SAAA;AAEjB,QAAA;IAAA,MAAA,GAAS;IACT,MAAA,GACE;MAAA,MAAA,EAAY,UAAZ;MACA,MAAA,EAAY,MADZ;MAEA,QAAA,EAAY,IAFZ;MAGA,GAAA,EAAY,IAHZ;MAIA,SAAA,EAAY,IAJZ;MAKA,SAAA,EAAY,EALZ;MAMA,MAAA,EAAY,IANZ;MAOA,KAAA,EAAY,aAPZ;MAQA,IAAA,EAAW,KARX;MASA,OAAA,EAAS,KATT;;IAUF,SAAA,GAAY;MAAC;QAAC,MAAA,EAAO,cAAR;QAAuB,QAAA,EAAS,GAAhC;QAAoC,gBAAA,EAAiB,EAArD;QAAwD,eAAA,EAAgB,EAAxE;OAAD;;IACZ,SAAA,GAAY,aAAA,CAAc,SAAd;IAEZ,QAAA,GAAW;MACT;QACE,UAAA,EAAY,eADd;QAEE,UAAA,EAAY,oCAFd;OADS,EAKT;QACE,UAAA,EAAY,eADd;QAEE,UAAA,EAAY,8BAFd;OALS,EAST;QACE,UAAA,EAAY,cADd;QAEE,UAAA,EAAY,2BAFd;OATS;;IAcX,MAAA,CAAO,MAAP,EAAe,SAAU,CAAA,CAAA,CAAzB,EAA6B,QAA7B,EAAuC,MAAvC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,eAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,oCAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,+IAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,sBAArC;IAEA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,eAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,8BAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,yIAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,sBAArC;IAEA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,cAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,2BAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,4KAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,qBAArC;EA7CiB,CAAnB;AAFuB,CAAzB","sourcesContent":["# This tests if parse is working correctly.\n\n { assert, should } = require('chai'); should()\n format = require '../../src/format'\n buildMatchers = require '../../src/buildMatchers'\n\n describe 'docco format', () ->\n\n it 'format docco', () ->\n\n source = 'fakes/fake_coffee.coffee'\n config =\n layout: 'parallel'\n output: 'docs'\n template: null\n css: null\n extension: null\n languages: {}\n marked: null\n setup: '.docco.json'\n help: false\n flatten: false\n languages = [{\"name\":\"coffeescript\",\"symbol\":\"#\",\"commentMatcher\":{},\"commentFilter\":{}}]\n languages = buildMatchers languages\n\n sections = [\n {\n \"docsText\": \"Assignment:\\n\",\n \"codeText\": \"number = 42\\nopposite = true\\n\\n\"\n },\n {\n \"docsText\": \"Conditions:\\n\",\n \"codeText\": \"number = -42 if opposite\\n\\n\"\n },\n {\n \"docsText\": \"Functions:\\n\",\n \"codeText\": \"square = (x) -> x * x\\n\\n\"\n }\n ]\n format(source, languages[0], sections, config)\n sections[0].docsText.should.be.equal(\"Assignment:\\n\")\n sections[0].codeText.should.be.equal(\"number = 42\\nopposite = true\\n\\n\")\n sections[0].codeHtml.should.be.equal(\"<div class='highlight'><pre>number = <span class=\\\"hljs-number\\\">42</span>\\nopposite = <span class=\\\"hljs-literal\\\">true</span></pre></div>\")\n sections[0].docsHtml.should.be.equal(\"<p>Assignment:</p>\\n\")\n\n sections[1].docsText.should.be.equal(\"Conditions:\\n\")\n sections[1].codeText.should.be.equal(\"number = -42 if opposite\\n\\n\")\n sections[1].codeHtml.should.be.equal(\"<div class='highlight'><pre>number = <span class=\\\"hljs-number\\\">-42</span> <span class=\\\"hljs-keyword\\\">if</span> opposite</pre></div>\")\n sections[1].docsHtml.should.be.equal(\"<p>Conditions:</p>\\n\")\n\n sections[2].docsText.should.be.equal(\"Functions:\\n\")\n sections[2].codeText.should.be.equal(\"square = (x) -> x * x\\n\\n\")\n sections[2].codeHtml.should.be.equal(\"<div class='highlight'><pre><span class=\\\"hljs-function\\\"><span class=\\\"hljs-title\\\">square</span> = <span class=\\\"hljs-params\\\">(x)</span> -></span> x * x</pre></div>\")\n sections[2].docsHtml.should.be.equal(\"<p>Functions:</p>\\n\")\n\n return\n return\n\n"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-format.litcoffee b/test/unit-tests/unit-test-format.litcoffee new file mode 100755 index 00000000..72af3b33 --- /dev/null +++ b/test/unit-tests/unit-test-format.litcoffee @@ -0,0 +1,58 @@ +# This tests if parse is working correctly. + + { assert, should } = require('chai'); should() + format = require '../../src/format' + buildMatchers = require '../../src/buildMatchers' + + describe 'docco format', () -> + + it 'format docco', () -> + + source = 'fakes/fake_coffee.coffee' + config = + layout: 'parallel' + output: 'docs' + template: null + css: null + extension: null + languages: {} + marked: null + setup: '.docco.json' + help: false + flatten: false + languages = [{"name":"coffeescript","symbol":"#","commentMatcher":{},"commentFilter":{}}] + languages = buildMatchers languages + + sections = [ + { + "docsText": "Assignment:\n", + "codeText": "number = 42\nopposite = true\n\n" + }, + { + "docsText": "Conditions:\n", + "codeText": "number = -42 if opposite\n\n" + }, + { + "docsText": "Functions:\n", + "codeText": "square = (x) -> x * x\n\n" + } + ] + format(source, languages[0], sections, config) + sections[0].docsText.should.be.equal("Assignment:\n") + sections[0].codeText.should.be.equal("number = 42\nopposite = true\n\n") + sections[0].codeHtml.should.be.equal("<div class='highlight'><pre>number = <span class=\"hljs-number\">42</span>\nopposite = <span class=\"hljs-literal\">true</span></pre></div>") + sections[0].docsHtml.should.be.equal("<p>Assignment:</p>\n") + + sections[1].docsText.should.be.equal("Conditions:\n") + sections[1].codeText.should.be.equal("number = -42 if opposite\n\n") + sections[1].codeHtml.should.be.equal("<div class='highlight'><pre>number = <span class=\"hljs-number\">-42</span> <span class=\"hljs-keyword\">if</span> opposite</pre></div>") + sections[1].docsHtml.should.be.equal("<p>Conditions:</p>\n") + + sections[2].docsText.should.be.equal("Functions:\n") + sections[2].codeText.should.be.equal("square = (x) -> x * x\n\n") + sections[2].codeHtml.should.be.equal("<div class='highlight'><pre><span class=\"hljs-function\"><span class=\"hljs-title\">square</span> = <span class=\"hljs-params\">(x)</span> -></span> x * x</pre></div>") + sections[2].docsHtml.should.be.equal("<p>Functions:</p>\n") + + return + return + diff --git a/test/unit-tests/unit-test-getCSSPath.js b/test/unit-tests/unit-test-getCSSPath.js new file mode 100755 index 00000000..af0d4863 --- /dev/null +++ b/test/unit-tests/unit-test-getCSSPath.js @@ -0,0 +1,32 @@ +var getCSSPath, should; + +should = require('chai').should; + +should(); + +getCSSPath = require('../../src/getCSSPath'); + +describe('docco getCSSPath', function() { + it('gets the path to the css in the same directory.', function() { + var cssPath; + cssPath = getCSSPath('file.css', 'docs', 'docs/file.html'); + cssPath.should.be.equal('file.css'); + }); + it('gets the path to the css in directory above.', function() { + var cssPath; + cssPath = getCSSPath('file.css', 'docs', 'docs/src/file.html'); + cssPath.should.be.equal('../file.css'); + }); + it('gets the path to the css in two directories above.', function() { + var cssPath; + cssPath = getCSSPath('file.css', 'docs', 'docs/src/lib/file.html'); + cssPath.should.be.equal('../../file.css'); + }); + it('gets the path to the css in in parallel directory.', function() { + var cssPath; + cssPath = getCSSPath('docs/file.css', 'docs', 'src/file.html'); + cssPath.should.be.equal('../docs/file.css'); + }); +}); + +//# sourceMappingURL=unit-test-getCSSPath.js.map diff --git a/test/unit-tests/unit-test-getCSSPath.js.map b/test/unit-tests/unit-test-getCSSPath.js.map new file mode 100644 index 00000000..59d495e8 --- /dev/null +++ b/test/unit-tests/unit-test-getCSSPath.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-getCSSPath.js","sources":["unit-test-getCSSPath.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAE,SAAW,OAAA,CAAQ,MAAR;;AAAiB,MAAA,CAAA;;AAC9B,UAAA,GAAa,OAAA,CAAQ,sBAAR;;AAEb,QAAA,CAAS,kBAAT,EAA6B,SAAA;EAG3B,EAAA,CAAG,iDAAH,EAAsD,SAAA;AACpD,QAAA;IAAA,OAAA,GAAU,UAAA,CAAW,UAAX,EAAuB,MAAvB,EAA+B,gBAA/B;IACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlB,CAAwB,UAAxB;EAFoD,CAAtD;EAKA,EAAA,CAAG,8CAAH,EAAmD,SAAA;AACjD,QAAA;IAAA,OAAA,GAAU,UAAA,CAAW,UAAX,EAAuB,MAAvB,EAA+B,oBAA/B;IACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlB,CAAwB,aAAxB;EAFiD,CAAnD;EAKA,EAAA,CAAG,oDAAH,EAAyD,SAAA;AACvD,QAAA;IAAA,OAAA,GAAU,UAAA,CAAW,UAAX,EAAuB,MAAvB,EAA+B,wBAA/B;IACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlB,CAAwB,gBAAxB;EAFuD,CAAzD;EAKA,EAAA,CAAG,oDAAH,EAAyD,SAAA;AACvD,QAAA;IAAA,OAAA,GAAU,UAAA,CAAW,eAAX,EAA4B,MAA5B,EAAoC,eAApC;IACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlB,CAAwB,kBAAxB;EAFuD,CAAzD;AAlB2B,CAA7B","sourcesContent":["# This tests if getCSSPath is working correctly\n\n { should } = require('chai'); should()\n getCSSPath = require('../../src/getCSSPath')\n\n describe 'docco getCSSPath', () ->\n\n\n it 'gets the path to the css in the same directory.', () ->\n cssPath = getCSSPath('file.css', 'docs', 'docs/file.html' )\n cssPath.should.be.equal('file.css')\n return\n\n it 'gets the path to the css in directory above.', () ->\n cssPath = getCSSPath('file.css', 'docs', 'docs/src/file.html' )\n cssPath.should.be.equal('../file.css')\n return\n\n it 'gets the path to the css in two directories above.', () ->\n cssPath = getCSSPath('file.css', 'docs', 'docs/src/lib/file.html' )\n cssPath.should.be.equal('../../file.css')\n return\n\n it 'gets the path to the css in in parallel directory.', () ->\n cssPath = getCSSPath('docs/file.css', 'docs', 'src/file.html' )\n cssPath.should.be.equal('../docs/file.css')\n return\n return\n"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-getCSSPath.litcoffee b/test/unit-tests/unit-test-getCSSPath.litcoffee new file mode 100755 index 00000000..405a6abb --- /dev/null +++ b/test/unit-tests/unit-test-getCSSPath.litcoffee @@ -0,0 +1,28 @@ +# This tests if getCSSPath is working correctly + + { should } = require('chai'); should() + getCSSPath = require('../../src/getCSSPath') + + describe 'docco getCSSPath', () -> + + + it 'gets the path to the css in the same directory.', () -> + cssPath = getCSSPath('file.css', 'docs', 'docs/file.html' ) + cssPath.should.be.equal('file.css') + return + + it 'gets the path to the css in directory above.', () -> + cssPath = getCSSPath('file.css', 'docs', 'docs/src/file.html' ) + cssPath.should.be.equal('../file.css') + return + + it 'gets the path to the css in two directories above.', () -> + cssPath = getCSSPath('file.css', 'docs', 'docs/src/lib/file.html' ) + cssPath.should.be.equal('../../file.css') + return + + it 'gets the path to the css in in parallel directory.', () -> + cssPath = getCSSPath('docs/file.css', 'docs', 'src/file.html' ) + cssPath.should.be.equal('../docs/file.css') + return + return diff --git a/test/unit-tests/unit-test-getDestinationInformation.js b/test/unit-tests/unit-test-getDestinationInformation.js new file mode 100755 index 00000000..d4d14c9c --- /dev/null +++ b/test/unit-tests/unit-test-getDestinationInformation.js @@ -0,0 +1,150 @@ +var assert, getDestinationInformation, getLanguage, languages, ref, should; + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +languages = require('../../docco').languages; + +getDestinationInformation = require('../../src/getDestinationInformation'); + +getLanguage = require('../../src/getLanguage'); + +describe('docco getDestinationInformation', function() { + it('unflattened: gets destinationInformation for one source', function() { + var config, destination, file, flatten, language, result, rootDirectory, source, targetDirectory; + file = "src/fake_coffee.coffee"; + config = { + languages: languages + }; + language = getLanguage(file, languages); + source = { + "root": "/Project", + "dir": "src", + "base": "fake_coffee.coffee", + "ext": ".coffee", + "name": "fake_coffee", + "file": "src/fake_coffee.coffee", + "path": "/Project/src/fake_coffee.coffee" + }; + rootDirectory = '/Project'; + targetDirectory = 'docs'; + flatten = false; + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten); + result = { + "root": "/Project", + "dir": "docs/src", + "ext": ".html", + "base": "fake_coffee.html", + "name": "fake_coffee", + "file": "docs/src/fake_coffee.html", + "path": "/Project/docs/src/fake_coffee.html", + "pathdir": "/Project/docs/src", + "relativefile": "src/fake_coffee.html" + }; + assert.deepEqual(destination, result); + }); + it('flattened: gets destinationInformation for one source', function() { + var config, destination, file, flatten, language, result, rootDirectory, source, targetDirectory; + file = "src/fake_coffee.coffee"; + config = { + languages: languages + }; + language = getLanguage(file, languages); + source = { + "root": "/Project", + "dir": "src", + "base": "fake_coffee.coffee", + "ext": ".coffee", + "name": "fake_coffee", + "file": "src/fake_coffee.coffee", + "path": "/Project/src/fake_coffee.coffee" + }; + rootDirectory = '/Project'; + targetDirectory = 'docs'; + flatten = true; + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten); + result = { + "base": "fake_coffee.html", + "dir": "docs", + "ext": ".html", + "file": "docs/fake_coffee.html", + "name": "fake_coffee", + "path": "/Project/docs/fake_coffee.html", + "pathdir": "/Project/docs", + "root": "/Project", + "relativefile": "fake_coffee.html" + }; + assert.deepEqual(destination, result); + }); + it('unflattened: gets destinationInformation for one copy source', function() { + var config, destination, file, flatten, language, result, rootDirectory, source, targetDirectory; + file = "images/fluffybunny1.jpg"; + config = { + languages: languages + }; + language = getLanguage(file, languages); + language.copy.should.be["true"]; + source = { + "root": "/Project", + "dir": "images", + "base": "fluffybunny1.jpg", + "ext": ".jpg", + "name": "fluffybunny1", + "file": "images/fluffybunny1.jpg", + "path": "/Project/images/fluffybunny1.jpg" + }; + rootDirectory = '/Project'; + targetDirectory = 'docs'; + flatten = false; + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten); + result = { + "root": "/Project", + "dir": "docs/images", + "base": "fluffybunny1.jpg", + "ext": ".jpg", + "name": "fluffybunny1", + "file": "docs/images/fluffybunny1.jpg", + "path": "/Project/docs/images/fluffybunny1.jpg", + "pathdir": "/Project/docs/images", + "relativefile": "images/fluffybunny1.jpg" + }; + assert.deepEqual(destination, result); + }); + it('flattened: gets destinationInformation for one copy source', function() { + var config, destination, file, flatten, language, result, rootDirectory, source, targetDirectory; + file = "images/fluffybunny1.jpg"; + config = { + languages: languages + }; + language = getLanguage(file, languages); + language.copy.should.be["true"]; + source = { + "root": "/Project", + "dir": "images", + "base": "fluffybunny1.jpg", + "ext": ".jpg", + "name": "fluffybunny1", + "file": "images/fluffybunny1.jpg", + "path": "/Project/images/fluffybunny1.jpg" + }; + rootDirectory = '/Project'; + targetDirectory = 'docs'; + flatten = true; + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten); + result = { + "root": "/Project", + "dir": "docs/images", + "base": "fluffybunny1.jpg", + "ext": ".jpg", + "name": "fluffybunny1", + "file": "docs/images/fluffybunny1.jpg", + "path": "/Project/docs/images/fluffybunny1.jpg", + "pathdir": "/Project/docs/images", + "relativefile": "images/fluffybunny1.jpg" + }; + assert.deepEqual(destination, result); + }); +}); + +//# sourceMappingURL=unit-test-getDestinationInformation.js.map diff --git a/test/unit-tests/unit-test-getDestinationInformation.js.map b/test/unit-tests/unit-test-getDestinationInformation.js.map new file mode 100644 index 00000000..aac1a59c --- /dev/null +++ b/test/unit-tests/unit-test-getDestinationInformation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-getDestinationInformation.js","sources":["unit-test-getDestinationInformation.litcoffee"],"names":[],"mappings":"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","sourcesContent":["# This tests if getLanguage is working correctly.\n\n { assert, should } = require('chai'); should()\n { languages } = require('../../docco')\n getDestinationInformation = require '../../src/getDestinationInformation'\n getLanguage = require '../../src/getLanguage'\n\n describe 'docco getDestinationInformation', () ->\n\n it 'unflattened: gets destinationInformation for one source', () ->\n file = \"src/fake_coffee.coffee\"\n config = { languages:languages }\n language = getLanguage file, languages\n source = {\n \"root\":\"/Project\",\n \"dir\":\"src\",\n \"base\":\"fake_coffee.coffee\",\n \"ext\":\".coffee\",\n \"name\":\"fake_coffee\",\n \"file\":\"src/fake_coffee.coffee\",\n \"path\":\"/Project/src/fake_coffee.coffee\"\n }\n rootDirectory = '/Project'\n targetDirectory = 'docs'\n flatten = false\n destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten)\n result = {\n \"root\": \"/Project\",\n \"dir\": \"docs/src\",\n \"ext\": \".html\",\n \"base\": \"fake_coffee.html\",\n \"name\": \"fake_coffee\",\n \"file\": \"docs/src/fake_coffee.html\",\n \"path\": \"/Project/docs/src/fake_coffee.html\",\n \"pathdir\": \"/Project/docs/src\",\n \"relativefile\": \"src/fake_coffee.html\"\n }\n assert.deepEqual(destination, result)\n return\n\n it 'flattened: gets destinationInformation for one source', () ->\n file = \"src/fake_coffee.coffee\"\n config = { languages:languages }\n language = getLanguage file, languages\n source = {\n \"root\":\"/Project\",\n \"dir\":\"src\",\n \"base\":\"fake_coffee.coffee\",\n \"ext\":\".coffee\",\n \"name\":\"fake_coffee\",\n \"file\":\"src/fake_coffee.coffee\",\n \"path\":\"/Project/src/fake_coffee.coffee\"\n }\n rootDirectory = '/Project'\n targetDirectory = 'docs'\n flatten = true\n destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten)\n result = {\n \"base\": \"fake_coffee.html\"\n \"dir\": \"docs\"\n \"ext\": \".html\"\n \"file\": \"docs/fake_coffee.html\"\n \"name\": \"fake_coffee\"\n \"path\": \"/Project/docs/fake_coffee.html\"\n \"pathdir\": \"/Project/docs\"\n \"root\": \"/Project\"\n \"relativefile\": \"fake_coffee.html\"\n }\n assert.deepEqual(destination, result)\n return\n\n it 'unflattened: gets destinationInformation for one copy source', () ->\n file = \"images/fluffybunny1.jpg\"\n config = { languages:languages }\n language = getLanguage file, languages\n language.copy.should.be.true\n\n source = {\n \"root\":\"/Project\",\n \"dir\":\"images\",\n \"base\":\"fluffybunny1.jpg\",\n \"ext\":\".jpg\",\n \"name\":\"fluffybunny1\",\n \"file\":\"images/fluffybunny1.jpg\",\n \"path\":\"/Project/images/fluffybunny1.jpg\"\n }\n rootDirectory = '/Project'\n targetDirectory = 'docs'\n flatten = false\n destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten)\n result = {\n \"root\": \"/Project\",\n \"dir\": \"docs/images\",\n \"base\": \"fluffybunny1.jpg\",\n \"ext\": \".jpg\",\n \"name\": \"fluffybunny1\",\n \"file\": \"docs/images/fluffybunny1.jpg\",\n \"path\": \"/Project/docs/images/fluffybunny1.jpg\",\n \"pathdir\": \"/Project/docs/images\",\n \"relativefile\": \"images/fluffybunny1.jpg\"\n }\n assert.deepEqual(destination, result)\n return\n\n it 'flattened: gets destinationInformation for one copy source', () ->\n file = \"images/fluffybunny1.jpg\"\n config = { languages:languages }\n language = getLanguage file, languages\n language.copy.should.be.true\n source = {\n \"root\":\"/Project\",\n \"dir\":\"images\",\n \"base\":\"fluffybunny1.jpg\",\n \"ext\":\".jpg\",\n \"name\":\"fluffybunny1\",\n \"file\":\"images/fluffybunny1.jpg\",\n \"path\":\"/Project/images/fluffybunny1.jpg\"\n }\n rootDirectory = '/Project'\n targetDirectory = 'docs'\n flatten = true\n destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten)\n result = {\n \"root\": \"/Project\"\n \"dir\": \"docs/images\"\n \"base\": \"fluffybunny1.jpg\"\n \"ext\": \".jpg\"\n \"name\": \"fluffybunny1\"\n \"file\": \"docs/images/fluffybunny1.jpg\"\n \"path\": \"/Project/docs/images/fluffybunny1.jpg\"\n \"pathdir\": \"/Project/docs/images\"\n \"relativefile\": \"images/fluffybunny1.jpg\"\n }\n assert.deepEqual(destination, result)\n return\n return"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-getDestinationInformation.litcoffee b/test/unit-tests/unit-test-getDestinationInformation.litcoffee new file mode 100755 index 00000000..136b9732 --- /dev/null +++ b/test/unit-tests/unit-test-getDestinationInformation.litcoffee @@ -0,0 +1,136 @@ +# This tests if getLanguage is working correctly. + + { assert, should } = require('chai'); should() + { languages } = require('../../docco') + getDestinationInformation = require '../../src/getDestinationInformation' + getLanguage = require '../../src/getLanguage' + + describe 'docco getDestinationInformation', () -> + + it 'unflattened: gets destinationInformation for one source', () -> + file = "src/fake_coffee.coffee" + config = { languages:languages } + language = getLanguage file, languages + source = { + "root":"/Project", + "dir":"src", + "base":"fake_coffee.coffee", + "ext":".coffee", + "name":"fake_coffee", + "file":"src/fake_coffee.coffee", + "path":"/Project/src/fake_coffee.coffee" + } + rootDirectory = '/Project' + targetDirectory = 'docs' + flatten = false + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten) + result = { + "root": "/Project", + "dir": "docs/src", + "ext": ".html", + "base": "fake_coffee.html", + "name": "fake_coffee", + "file": "docs/src/fake_coffee.html", + "path": "/Project/docs/src/fake_coffee.html", + "pathdir": "/Project/docs/src", + "relativefile": "src/fake_coffee.html" + } + assert.deepEqual(destination, result) + return + + it 'flattened: gets destinationInformation for one source', () -> + file = "src/fake_coffee.coffee" + config = { languages:languages } + language = getLanguage file, languages + source = { + "root":"/Project", + "dir":"src", + "base":"fake_coffee.coffee", + "ext":".coffee", + "name":"fake_coffee", + "file":"src/fake_coffee.coffee", + "path":"/Project/src/fake_coffee.coffee" + } + rootDirectory = '/Project' + targetDirectory = 'docs' + flatten = true + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten) + result = { + "base": "fake_coffee.html" + "dir": "docs" + "ext": ".html" + "file": "docs/fake_coffee.html" + "name": "fake_coffee" + "path": "/Project/docs/fake_coffee.html" + "pathdir": "/Project/docs" + "root": "/Project" + "relativefile": "fake_coffee.html" + } + assert.deepEqual(destination, result) + return + + it 'unflattened: gets destinationInformation for one copy source', () -> + file = "images/fluffybunny1.jpg" + config = { languages:languages } + language = getLanguage file, languages + language.copy.should.be.true + + source = { + "root":"/Project", + "dir":"images", + "base":"fluffybunny1.jpg", + "ext":".jpg", + "name":"fluffybunny1", + "file":"images/fluffybunny1.jpg", + "path":"/Project/images/fluffybunny1.jpg" + } + rootDirectory = '/Project' + targetDirectory = 'docs' + flatten = false + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten) + result = { + "root": "/Project", + "dir": "docs/images", + "base": "fluffybunny1.jpg", + "ext": ".jpg", + "name": "fluffybunny1", + "file": "docs/images/fluffybunny1.jpg", + "path": "/Project/docs/images/fluffybunny1.jpg", + "pathdir": "/Project/docs/images", + "relativefile": "images/fluffybunny1.jpg" + } + assert.deepEqual(destination, result) + return + + it 'flattened: gets destinationInformation for one copy source', () -> + file = "images/fluffybunny1.jpg" + config = { languages:languages } + language = getLanguage file, languages + language.copy.should.be.true + source = { + "root":"/Project", + "dir":"images", + "base":"fluffybunny1.jpg", + "ext":".jpg", + "name":"fluffybunny1", + "file":"images/fluffybunny1.jpg", + "path":"/Project/images/fluffybunny1.jpg" + } + rootDirectory = '/Project' + targetDirectory = 'docs' + flatten = true + destination = getDestinationInformation(language, source, rootDirectory, targetDirectory, flatten) + result = { + "root": "/Project" + "dir": "docs/images" + "base": "fluffybunny1.jpg" + "ext": ".jpg" + "name": "fluffybunny1" + "file": "docs/images/fluffybunny1.jpg" + "path": "/Project/docs/images/fluffybunny1.jpg" + "pathdir": "/Project/docs/images" + "relativefile": "images/fluffybunny1.jpg" + } + assert.deepEqual(destination, result) + return + return \ No newline at end of file diff --git a/test/unit-tests/unit-test-getInformationOnFiles.js b/test/unit-tests/unit-test-getInformationOnFiles.js new file mode 100755 index 00000000..905b1c68 --- /dev/null +++ b/test/unit-tests/unit-test-getInformationOnFiles.js @@ -0,0 +1,45 @@ +var assert, buildMatchers, ref, should; + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +buildMatchers = require('../../src/buildMatchers'); + +describe('docco getInformationOnFiles', function() { + var getInformationOnFiles, languages; + languages = require('../../docco').languages; + getInformationOnFiles = require('../../src/getInformationOnFiles'); + it('calculates file information with unflattened request', function() { + var config, informationOnFiles, informationOnFilesFake, source; + informationOnFilesFake = require('./fakes/informationOnFilesUnFlattened'); + source = "src/fake_coffee.coffee"; + config = { + output: 'docs', + root: '/Project', + css: 'docco.css', + sources: ["src/fake_coffee.coffee", "README.md", "images/fluffybunny1.jpg", "src/lib/fake_litcoffee.litcoffee"] + }; + config.languages = buildMatchers(languages); + informationOnFiles = getInformationOnFiles(config); + assert.deepEqual(informationOnFiles, informationOnFilesFake); + }); + it('calculates file information with flattened request', function() { + var config, informationOnFiles, informationOnFilesFake, source; + informationOnFilesFake = require('./fakes/informationOnFilesFlattened'); + source = "src/fake_coffee.coffee"; + config = { + flatten: true, + languages: languages, + output: 'docs', + root: '/Project', + css: 'docco.css', + sources: ["src/fake_coffee.coffee", "README.md", "images/fluffybunny1.jpg", "src/lib/fake_litcoffee.litcoffee"], + flatten: true + }; + informationOnFiles = getInformationOnFiles(config); + assert.deepEqual(informationOnFiles, informationOnFilesFake); + }); +}); + +//# sourceMappingURL=unit-test-getInformationOnFiles.js.map diff --git a/test/unit-tests/unit-test-getInformationOnFiles.js.map b/test/unit-tests/unit-test-getInformationOnFiles.js.map new file mode 100644 index 00000000..3baf0813 --- /dev/null +++ b/test/unit-tests/unit-test-getInformationOnFiles.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-getInformationOnFiles.js","sources":["unit-test-getInformationOnFiles.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,MAAqB,OAAA,CAAQ,MAAR,CAArB,EAAE,mBAAF,EAAU;;AAA4B,MAAA,CAAA;;AACtC,aAAA,GAAgB,OAAA,CAAQ,yBAAR;;AAEhB,QAAA,CAAS,6BAAT,EAAwC,SAAA;AACtC,MAAA;EAAE,YAAc,OAAA,CAAQ,aAAR;EAChB,qBAAA,GAAwB,OAAA,CAAQ,iCAAR;EAExB,EAAA,CAAG,sDAAH,EAA2D,SAAA;AACzD,QAAA;IAAA,sBAAA,GAAyB,OAAA,CAAQ,uCAAR;IACzB,MAAA,GAAS;IACT,MAAA,GACE;MAAA,MAAA,EAAQ,MAAR;MACA,IAAA,EAAM,UADN;MAEA,GAAA,EAAK,WAFL;MAGA,OAAA,EAAS,CACP,wBADO,EAEP,WAFO,EAGP,yBAHO,EAIP,kCAJO,CAHT;;IASF,MAAM,CAAC,SAAP,GAAmB,aAAA,CAAc,SAAd;IAEnB,kBAAA,GAAqB,qBAAA,CAAsB,MAAtB;IACrB,MAAM,CAAC,SAAP,CAAiB,kBAAjB,EAAqC,sBAArC;EAhByD,CAA3D;EAmBA,EAAA,CAAG,oDAAH,EAAyD,SAAA;AACvD,QAAA;IAAA,sBAAA,GAAyB,OAAA,CAAQ,qCAAR;IACzB,MAAA,GAAS;IACT,MAAA,GACE;MAAA,OAAA,EAAS,IAAT;MACA,SAAA,EAAU,SADV;MAEA,MAAA,EAAQ,MAFR;MAGA,IAAA,EAAM,UAHN;MAIA,GAAA,EAAK,WAJL;MAKA,OAAA,EAAS,CACP,wBADO,EAEP,WAFO,EAGP,yBAHO,EAIP,kCAJO,CALT;MAWA,OAAA,EAAS,IAXT;;IAYF,kBAAA,GAAqB,qBAAA,CAAsB,MAAtB;IACrB,MAAM,CAAC,SAAP,CAAiB,kBAAjB,EAAqC,sBAArC;EAjBuD,CAAzD;AAvBsC,CAAxC","sourcesContent":["# This tests if getDestinations is working correctly.\n\n { assert, should } = require('chai'); should()\n buildMatchers = require '../../src/buildMatchers'\n\n describe 'docco getInformationOnFiles', () ->\n { languages } = require('../../docco')\n getInformationOnFiles = require('../../src/getInformationOnFiles')\n\n it 'calculates file information with unflattened request', () ->\n informationOnFilesFake = require './fakes/informationOnFilesUnFlattened'\n source = \"src/fake_coffee.coffee\"\n config =\n output: 'docs'\n root: '/Project'\n css: 'docco.css'\n sources: [\n \"src/fake_coffee.coffee\"\n \"README.md\"\n \"images/fluffybunny1.jpg\"\n \"src/lib/fake_litcoffee.litcoffee\"\n ]\n config.languages = buildMatchers languages\n\n informationOnFiles = getInformationOnFiles(config)\n assert.deepEqual(informationOnFiles, informationOnFilesFake)\n return\n\n it 'calculates file information with flattened request', () ->\n informationOnFilesFake = require './fakes/informationOnFilesFlattened'\n source = \"src/fake_coffee.coffee\"\n config =\n flatten: true\n languages:languages\n output: 'docs'\n root: '/Project'\n css: 'docco.css'\n sources: [\n \"src/fake_coffee.coffee\"\n \"README.md\"\n \"images/fluffybunny1.jpg\"\n \"src/lib/fake_litcoffee.litcoffee\"\n ]\n flatten: true\n informationOnFiles = getInformationOnFiles(config)\n assert.deepEqual(informationOnFiles, informationOnFilesFake)\n return\n return"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-getInformationOnFiles.litcoffee b/test/unit-tests/unit-test-getInformationOnFiles.litcoffee new file mode 100755 index 00000000..8310b14f --- /dev/null +++ b/test/unit-tests/unit-test-getInformationOnFiles.litcoffee @@ -0,0 +1,48 @@ +# This tests if getDestinations is working correctly. + + { assert, should } = require('chai'); should() + buildMatchers = require '../../src/buildMatchers' + + describe 'docco getInformationOnFiles', () -> + { languages } = require('../../docco') + getInformationOnFiles = require('../../src/getInformationOnFiles') + + it 'calculates file information with unflattened request', () -> + informationOnFilesFake = require './fakes/informationOnFilesUnFlattened' + source = "src/fake_coffee.coffee" + config = + output: 'docs' + root: '/Project' + css: 'docco.css' + sources: [ + "src/fake_coffee.coffee" + "README.md" + "images/fluffybunny1.jpg" + "src/lib/fake_litcoffee.litcoffee" + ] + config.languages = buildMatchers languages + + informationOnFiles = getInformationOnFiles(config) + assert.deepEqual(informationOnFiles, informationOnFilesFake) + return + + it 'calculates file information with flattened request', () -> + informationOnFilesFake = require './fakes/informationOnFilesFlattened' + source = "src/fake_coffee.coffee" + config = + flatten: true + languages:languages + output: 'docs' + root: '/Project' + css: 'docco.css' + sources: [ + "src/fake_coffee.coffee" + "README.md" + "images/fluffybunny1.jpg" + "src/lib/fake_litcoffee.litcoffee" + ] + flatten: true + informationOnFiles = getInformationOnFiles(config) + assert.deepEqual(informationOnFiles, informationOnFilesFake) + return + return \ No newline at end of file diff --git a/test/unit-tests/unit-test-getLanguage.js b/test/unit-tests/unit-test-getLanguage.js new file mode 100755 index 00000000..10587fb9 --- /dev/null +++ b/test/unit-tests/unit-test-getLanguage.js @@ -0,0 +1,47 @@ +var getLanguage, languages, should; + +should = require('chai').should; + +should(); + +getLanguage = require('../../src/getLanguage'); + +languages = require('../../docco').languages; + +describe('docco getLanguage', function() { + it('gets the right language for the given a coffescript file.', function() { + var config, language, source; + source = "src/fake_coffee.coffee"; + config = { + languages: languages + }; + language = getLanguage(source, languages); + language.name.should.be.equal("coffeescript"); + language.symbol.should.be.equal("#"); + }); + it('gets the right language for the given a markdown file.', function() { + var config, language, source; + source = "README.md"; + config = { + languages: languages + }; + language = getLanguage(source, languages); + language.name.should.be.equal("markdown"); + language.symbol.should.be.equal(""); + language.section.should.be.equal("#"); + language.link.should.be.equal("!"); + language.html.should.be["true"]; + }); + it('gets the right language for the given an image file.', function() { + var config, language, source; + source = "images/fluffybunny.jpg"; + config = { + languages: languages + }; + language = getLanguage(source, languages); + language.name.should.be.equal("image"); + language.copy.should.be["true"]; + }); +}); + +//# sourceMappingURL=unit-test-getLanguage.js.map diff --git a/test/unit-tests/unit-test-getLanguage.js.map b/test/unit-tests/unit-test-getLanguage.js.map new file mode 100644 index 00000000..7f158742 --- /dev/null +++ b/test/unit-tests/unit-test-getLanguage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-getLanguage.js","sources":["unit-test-getLanguage.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAE,SAAW,OAAA,CAAQ,MAAR;;AAAiB,MAAA,CAAA;;AAC9B,WAAA,GAAc,OAAA,CAAQ,uBAAR;;AACb,YAAa,OAAA,CAAQ,aAAR;;AAEd,QAAA,CAAS,mBAAT,EAA8B,SAAA;EAE5B,EAAA,CAAG,2DAAH,EAAgE,SAAA;AAC9D,QAAA;IAAA,MAAA,GAAS;IACT,MAAA,GAAS;MAAE,SAAA,EAAU,SAAZ;;IACT,QAAA,GAAW,WAAA,CAAY,MAAZ,EAAoB,SAApB;IACX,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAxB,CAA8B,cAA9B;IACA,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAA1B,CAAgC,GAAhC;EAL8D,CAAhE;EAQA,EAAA,CAAG,wDAAH,EAA6D,SAAA;AAC3D,QAAA;IAAA,MAAA,GAAS;IACT,MAAA,GAAS;MAAE,SAAA,EAAU,SAAZ;;IACT,QAAA,GAAW,WAAA,CAAY,MAAZ,EAAoB,SAApB;IACX,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAxB,CAA8B,UAA9B;IACA,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAA1B,CAAgC,EAAhC;IACA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAA3B,CAAiC,GAAjC;IACA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAxB,CAA8B,GAA9B;IACA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAC,IAAD;EARoC,CAA7D;EAWA,EAAA,CAAG,sDAAH,EAA2D,SAAA;AACzD,QAAA;IAAA,MAAA,GAAS;IACT,MAAA,GAAS;MAAE,SAAA,EAAU,SAAZ;;IACT,QAAA,GAAW,WAAA,CAAY,MAAZ,EAAoB,SAApB;IACX,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAxB,CAA8B,OAA9B;IACA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAC,IAAD;EALkC,CAA3D;AArB4B,CAA9B","sourcesContent":["# This tests if getLanguage is working correctly.\n\n { should } = require('chai'); should()\n getLanguage = require('../../src/getLanguage')\n {languages} = require('../../docco')\n\n describe 'docco getLanguage', () ->\n\n it 'gets the right language for the given a coffescript file.', () ->\n source = \"src/fake_coffee.coffee\"\n config = { languages:languages }\n language = getLanguage source, languages\n language.name.should.be.equal(\"coffeescript\")\n language.symbol.should.be.equal(\"#\")\n return\n\n it 'gets the right language for the given a markdown file.', () ->\n source = \"README.md\"\n config = { languages:languages }\n language = getLanguage source, languages\n language.name.should.be.equal(\"markdown\")\n language.symbol.should.be.equal(\"\")\n language.section.should.be.equal(\"#\")\n language.link.should.be.equal(\"!\")\n language.html.should.be.true\n return\n\n it 'gets the right language for the given an image file.', () ->\n source = \"images/fluffybunny.jpg\"\n config = { languages:languages }\n language = getLanguage source, languages\n language.name.should.be.equal(\"image\")\n language.copy.should.be.true\n return\n return"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-getLanguage.litcoffee b/test/unit-tests/unit-test-getLanguage.litcoffee new file mode 100755 index 00000000..6af4d4cc --- /dev/null +++ b/test/unit-tests/unit-test-getLanguage.litcoffee @@ -0,0 +1,35 @@ +# This tests if getLanguage is working correctly. + + { should } = require('chai'); should() + getLanguage = require('../../src/getLanguage') + {languages} = require('../../docco') + + describe 'docco getLanguage', () -> + + it 'gets the right language for the given a coffescript file.', () -> + source = "src/fake_coffee.coffee" + config = { languages:languages } + language = getLanguage source, languages + language.name.should.be.equal("coffeescript") + language.symbol.should.be.equal("#") + return + + it 'gets the right language for the given a markdown file.', () -> + source = "README.md" + config = { languages:languages } + language = getLanguage source, languages + language.name.should.be.equal("markdown") + language.symbol.should.be.equal("") + language.section.should.be.equal("#") + language.link.should.be.equal("!") + language.html.should.be.true + return + + it 'gets the right language for the given an image file.', () -> + source = "images/fluffybunny.jpg" + config = { languages:languages } + language = getLanguage source, languages + language.name.should.be.equal("image") + language.copy.should.be.true + return + return \ No newline at end of file diff --git a/test/unit-tests/unit-test-getOthers.js b/test/unit-tests/unit-test-getOthers.js new file mode 100755 index 00000000..9f724357 --- /dev/null +++ b/test/unit-tests/unit-test-getOthers.js @@ -0,0 +1,96 @@ +var assert, getOthers, ref, should; + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +getOthers = require('../../src/getOthers'); + +describe('docco getOthers', function() { + it('gets paths to other destination files: top level, unflattened.', function() { + var config, informationOnFiles, others; + informationOnFiles = require('./fakes/informationOnFilesUnFlattened'); + config = { + sources: ['README.md', 'src/fake_coffee.coffee'], + flatten: false + }; + others = getOthers('README.md', informationOnFiles, config); + assert.deepEqual(others, { + "README.html": { + "file": "README.md", + "image": false, + "link": "README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "src/fake_coffee.html" + } + }); + }); + it('gets paths to other destination files: 1 level down, unflattened.', function() { + var config, informationOnFiles, others; + informationOnFiles = require('./fakes/informationOnFilesUnFlattened'); + config = { + sources: ['README.md', 'src/fake_coffee.coffee'], + flatten: false + }; + others = getOthers('src/fake_coffee.coffee', informationOnFiles, config); + assert.deepEqual(others, { + "README.html": { + "file": "README.md", + "image": false, + "link": "../README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "fake_coffee.html" + } + }); + }); + it('gets paths to other destination files: top level, flattened.', function() { + var config, informationOnFiles, others; + informationOnFiles = require('./fakes/informationOnFilesFlattened'); + config = { + sources: ['README.md', 'src/fake_coffee.coffee'], + flatten: true + }; + others = getOthers('README.md', informationOnFiles, config); + assert.deepEqual(others, { + "README.html": { + "file": "README.md", + "image": false, + "link": "README.html" + }, + "fake_coffee.html": { + "file": "src/fake_coffee.coffee", + "image": false, + "link": "fake_coffee.html" + } + }); + }); + it('gets paths to other destination files: 1 level down, flattened.', function() { + var config, informationOnFiles, others; + informationOnFiles = require('./fakes/informationOnFilesFlattened'); + config = { + sources: ['README.md', 'images/fluffybunny1.jpg'], + flatten: true + }; + others = getOthers('images/fluffybunny1.jpg', informationOnFiles, config); + assert.deepEqual(others, { + "README.html": { + "file": "README.md", + "image": false, + "link": "README.html" + }, + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg", + "image": true, + "link": "images/fluffybunny1.jpg" + } + }); + }); +}); + +//# sourceMappingURL=unit-test-getOthers.js.map diff --git a/test/unit-tests/unit-test-getOthers.js.map b/test/unit-tests/unit-test-getOthers.js.map new file mode 100644 index 00000000..885d5ec0 --- /dev/null +++ b/test/unit-tests/unit-test-getOthers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-getOthers.js","sources":["unit-test-getOthers.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,MAAqB,OAAA,CAAQ,MAAR,CAArB,EAAE,mBAAF,EAAU;;AAA4B,MAAA,CAAA;;AAEtC,SAAA,GAAY,OAAA,CAAQ,qBAAR;;AAEZ,QAAA,CAAS,iBAAT,EAA4B,SAAA;EAE1B,EAAA,CAAG,gEAAH,EAAqE,SAAA;AACnE,QAAA;IAAA,kBAAA,GAAqB,OAAA,CAAQ,uCAAR;IACrB,MAAA,GAAS;MACP,OAAA,EAAS,CACP,WADO,EAEP,wBAFO,CADF;MAKP,OAAA,EAAS,KALF;;IAOT,MAAA,GAAS,SAAA,CAAU,WAAV,EAAuB,kBAAvB,EAA2C,MAA3C;IACT,MAAM,CAAC,SAAP,CAAiB,MAAjB,EAAyB;MACvB,aAAA,EAAe;QACb,MAAA,EAAQ,WADK;QAEb,OAAA,EAAS,KAFI;QAGb,MAAA,EAAQ,aAHK;OADQ;MAMvB,kBAAA,EAAoB;QAClB,MAAA,EAAQ,wBADU;QAElB,OAAA,EAAS,KAFS;QAGlB,MAAA,EAAQ,sBAHU;OANG;KAAzB;EAVmE,CAArE;EAwBA,EAAA,CAAG,mEAAH,EAAwE,SAAA;AACtE,QAAA;IAAA,kBAAA,GAAqB,OAAA,CAAQ,uCAAR;IACrB,MAAA,GAAS;MACP,OAAA,EAAS,CACP,WADO,EAEP,wBAFO,CADF;MAKP,OAAA,EAAS,KALF;;IAOT,MAAA,GAAS,SAAA,CAAU,wBAAV,EAAoC,kBAApC,EAAwD,MAAxD;IACT,MAAM,CAAC,SAAP,CAAiB,MAAjB,EAAyB;MACvB,aAAA,EAAe;QACb,MAAA,EAAQ,WADK;QAEb,OAAA,EAAS,KAFI;QAGb,MAAA,EAAQ,gBAHK;OADQ;MAMvB,kBAAA,EAAoB;QAClB,MAAA,EAAQ,wBADU;QAElB,OAAA,EAAS,KAFS;QAGlB,MAAA,EAAQ,kBAHU;OANG;KAAzB;EAVsE,CAAxE;EAwBA,EAAA,CAAG,8DAAH,EAAmE,SAAA;AACjE,QAAA;IAAA,kBAAA,GAAqB,OAAA,CAAQ,qCAAR;IACrB,MAAA,GAAS;MACP,OAAA,EAAS,CACP,WADO,EAEP,wBAFO,CADF;MAKP,OAAA,EAAS,IALF;;IAOT,MAAA,GAAS,SAAA,CAAU,WAAV,EAAuB,kBAAvB,EAA2C,MAA3C;IACT,MAAM,CAAC,SAAP,CAAiB,MAAjB,EAAyB;MACvB,aAAA,EAAe;QACb,MAAA,EAAQ,WADK;QAEb,OAAA,EAAS,KAFI;QAGb,MAAA,EAAQ,aAHK;OADQ;MAMvB,kBAAA,EAAoB;QAClB,MAAA,EAAQ,wBADU;QAElB,OAAA,EAAS,KAFS;QAGlB,MAAA,EAAQ,kBAHU;OANG;KAAzB;EAViE,CAAnE;EAwBA,EAAA,CAAG,iEAAH,EAAsE,SAAA;AACpE,QAAA;IAAA,kBAAA,GAAqB,OAAA,CAAQ,qCAAR;IACrB,MAAA,GAAS;MACP,OAAA,EAAS,CACP,WADO,EAEP,yBAFO,CADF;MAKP,OAAA,EAAS,IALF;;IAOT,MAAA,GAAS,SAAA,CAAU,yBAAV,EAAqC,kBAArC,EAAyD,MAAzD;IACT,MAAM,CAAC,SAAP,CAAiB,MAAjB,EAAyB;MACvB,aAAA,EAAe;QACb,MAAA,EAAQ,WADK;QAEb,OAAA,EAAS,KAFI;QAGb,MAAA,EAAQ,aAHK;OADQ;MAMvB,kBAAA,EAAoB;QAClB,MAAA,EAAQ,yBADU;QAElB,OAAA,EAAS,IAFS;QAGlB,MAAA,EAAQ,yBAHU;OANG;KAAzB;EAVoE,CAAtE;AA1E0B,CAA5B","sourcesContent":["# This tests if getLanguage is working correctly.\n\n { assert, should } = require('chai'); should()\n\n getOthers = require '../../src/getOthers'\n\n describe 'docco getOthers', () ->\n\n it 'gets paths to other destination files: top level, unflattened.', () ->\n informationOnFiles = require './fakes/informationOnFilesUnFlattened'\n config = {\n sources: [\n 'README.md'\n 'src/fake_coffee.coffee'\n ]\n flatten: false\n }\n others = getOthers('README.md', informationOnFiles, config)\n assert.deepEqual(others, {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"src/fake_coffee.html\"\n }\n })\n return\n\n it 'gets paths to other destination files: 1 level down, unflattened.', () ->\n informationOnFiles = require './fakes/informationOnFilesUnFlattened'\n config = {\n sources: [\n 'README.md'\n 'src/fake_coffee.coffee'\n ]\n flatten: false\n }\n others = getOthers('src/fake_coffee.coffee', informationOnFiles, config)\n assert.deepEqual(others, {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"../README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"fake_coffee.html\"\n }\n })\n return\n\n it 'gets paths to other destination files: top level, flattened.', () ->\n informationOnFiles = require './fakes/informationOnFilesFlattened'\n config = {\n sources: [\n 'README.md'\n 'src/fake_coffee.coffee'\n ]\n flatten: true\n }\n others = getOthers('README.md', informationOnFiles, config)\n assert.deepEqual(others, {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"README.html\"\n }\n \"fake_coffee.html\": {\n \"file\": \"src/fake_coffee.coffee\"\n \"image\": false\n \"link\": \"fake_coffee.html\"\n }\n })\n return\n\n it 'gets paths to other destination files: 1 level down, flattened.', () ->\n informationOnFiles = require './fakes/informationOnFilesFlattened'\n config = {\n sources: [\n 'README.md'\n 'images/fluffybunny1.jpg'\n ]\n flatten: true\n }\n others = getOthers('images/fluffybunny1.jpg', informationOnFiles, config)\n assert.deepEqual(others, {\n \"README.html\": {\n \"file\": \"README.md\"\n \"image\": false\n \"link\": \"README.html\"\n }\n \"fluffybunny1.jpg\": {\n \"file\": \"images/fluffybunny1.jpg\"\n \"image\": true\n \"link\": \"images/fluffybunny1.jpg\"\n }\n })\n return\n return"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-getOthers.litcoffee b/test/unit-tests/unit-test-getOthers.litcoffee new file mode 100755 index 00000000..ad598358 --- /dev/null +++ b/test/unit-tests/unit-test-getOthers.litcoffee @@ -0,0 +1,104 @@ +# This tests if getLanguage is working correctly. + + { assert, should } = require('chai'); should() + + getOthers = require '../../src/getOthers' + + describe 'docco getOthers', () -> + + it 'gets paths to other destination files: top level, unflattened.', () -> + informationOnFiles = require './fakes/informationOnFilesUnFlattened' + config = { + sources: [ + 'README.md' + 'src/fake_coffee.coffee' + ] + flatten: false + } + others = getOthers('README.md', informationOnFiles, config) + assert.deepEqual(others, { + "README.html": { + "file": "README.md" + "image": false + "link": "README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "src/fake_coffee.html" + } + }) + return + + it 'gets paths to other destination files: 1 level down, unflattened.', () -> + informationOnFiles = require './fakes/informationOnFilesUnFlattened' + config = { + sources: [ + 'README.md' + 'src/fake_coffee.coffee' + ] + flatten: false + } + others = getOthers('src/fake_coffee.coffee', informationOnFiles, config) + assert.deepEqual(others, { + "README.html": { + "file": "README.md" + "image": false + "link": "../README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "fake_coffee.html" + } + }) + return + + it 'gets paths to other destination files: top level, flattened.', () -> + informationOnFiles = require './fakes/informationOnFilesFlattened' + config = { + sources: [ + 'README.md' + 'src/fake_coffee.coffee' + ] + flatten: true + } + others = getOthers('README.md', informationOnFiles, config) + assert.deepEqual(others, { + "README.html": { + "file": "README.md" + "image": false + "link": "README.html" + } + "fake_coffee.html": { + "file": "src/fake_coffee.coffee" + "image": false + "link": "fake_coffee.html" + } + }) + return + + it 'gets paths to other destination files: 1 level down, flattened.', () -> + informationOnFiles = require './fakes/informationOnFilesFlattened' + config = { + sources: [ + 'README.md' + 'images/fluffybunny1.jpg' + ] + flatten: true + } + others = getOthers('images/fluffybunny1.jpg', informationOnFiles, config) + assert.deepEqual(others, { + "README.html": { + "file": "README.md" + "image": false + "link": "README.html" + } + "fluffybunny1.jpg": { + "file": "images/fluffybunny1.jpg" + "image": true + "link": "images/fluffybunny1.jpg" + } + }) + return + return \ No newline at end of file diff --git a/test/unit-tests/unit-test-getRelativePath.js b/test/unit-tests/unit-test-getRelativePath.js new file mode 100755 index 00000000..9f79940b --- /dev/null +++ b/test/unit-tests/unit-test-getRelativePath.js @@ -0,0 +1,37 @@ +var getRelativePath, should; + +should = require('chai').should; + +should(); + +getRelativePath = require('../../src/getRelativePath'); + +describe('docco getRelativePath', function() { + it('gets the path to a file in the same directory.', function() { + var cssPath; + cssPath = getRelativePath('./file.css', './file.html', 'file.html'); + cssPath.should.be.equal('file.html'); + }); + it('gets the path to a file in directory above.', function() { + var cssPath; + cssPath = getRelativePath('file.css', 'docs/file.html', 'file.html'); + cssPath.should.be.equal('docs/file.html'); + }); + it('gets the path to a file in two directories above.', function() { + var cssPath; + cssPath = getRelativePath('file.css', 'docs/src/lib/file.html', 'file.html'); + cssPath.should.be.equal('docs/src/lib/file.html'); + }); + it('gets the path to a file in parallel directory.', function() { + var cssPath; + cssPath = getRelativePath('docs/file.css', 'src/file.html', 'file.html'); + cssPath.should.be.equal('../src/file.html'); + }); + it('gets the path to the same file.', function() { + var cssPath; + cssPath = getRelativePath('docs/file.html', 'docs/file.html', 'file.html'); + cssPath.should.be.equal('file.html'); + }); +}); + +//# sourceMappingURL=unit-test-getRelativePath.js.map diff --git a/test/unit-tests/unit-test-getRelativePath.js.map b/test/unit-tests/unit-test-getRelativePath.js.map new file mode 100644 index 00000000..38892bfd --- /dev/null +++ b/test/unit-tests/unit-test-getRelativePath.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-getRelativePath.js","sources":["unit-test-getRelativePath.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAE,SAAW,OAAA,CAAQ,MAAR;;AAAiB,MAAA,CAAA;;AAC9B,eAAA,GAAkB,OAAA,CAAQ,2BAAR;;AAElB,QAAA,CAAS,uBAAT,EAAkC,SAAA;EAEhC,EAAA,CAAG,gDAAH,EAAqD,SAAA;AACnD,QAAA;IAAA,OAAA,GAAU,eAAA,CAAgB,YAAhB,EAA8B,aAA9B,EAA6C,WAA7C;IACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlB,CAAwB,WAAxB;EAFmD,CAArD;EAKA,EAAA,CAAG,6CAAH,EAAkD,SAAA;AAChD,QAAA;IAAA,OAAA,GAAU,eAAA,CAAgB,UAAhB,EAA4B,gBAA5B,EAA8C,WAA9C;IACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlB,CAAwB,gBAAxB;EAFgD,CAAlD;EAKA,EAAA,CAAG,mDAAH,EAAwD,SAAA;AACtD,QAAA;IAAA,OAAA,GAAU,eAAA,CAAgB,UAAhB,EAA4B,wBAA5B,EAAsD,WAAtD;IACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlB,CAAwB,wBAAxB;EAFsD,CAAxD;EAKA,EAAA,CAAG,gDAAH,EAAqD,SAAA;AACnD,QAAA;IAAA,OAAA,GAAU,eAAA,CAAgB,eAAhB,EAAiC,eAAjC,EAAkD,WAAlD;IACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlB,CAAwB,kBAAxB;EAFmD,CAArD;EAKA,EAAA,CAAG,iCAAH,EAAsC,SAAA;AACpC,QAAA;IAAA,OAAA,GAAU,eAAA,CAAgB,gBAAhB,EAAkC,gBAAlC,EAAoD,WAApD;IACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAlB,CAAwB,WAAxB;EAFoC,CAAtC;AAtBgC,CAAlC","sourcesContent":["# This tests if getLanguage is working correctly.\n\n { should } = require('chai'); should()\n getRelativePath = require('../../src/getRelativePath')\n\n describe 'docco getRelativePath', () ->\n\n it 'gets the path to a file in the same directory.', () ->\n cssPath = getRelativePath('./file.css', './file.html', 'file.html' )\n cssPath.should.be.equal('file.html')\n return\n\n it 'gets the path to a file in directory above.', () ->\n cssPath = getRelativePath('file.css', 'docs/file.html', 'file.html' )\n cssPath.should.be.equal('docs/file.html')\n return\n\n it 'gets the path to a file in two directories above.', () ->\n cssPath = getRelativePath('file.css', 'docs/src/lib/file.html', 'file.html')\n cssPath.should.be.equal('docs/src/lib/file.html')\n return\n\n it 'gets the path to a file in parallel directory.', () ->\n cssPath = getRelativePath('docs/file.css', 'src/file.html' ,'file.html')\n cssPath.should.be.equal('../src/file.html')\n return\n\n it 'gets the path to the same file.', () ->\n cssPath = getRelativePath('docs/file.html', 'docs/file.html', 'file.html')\n cssPath.should.be.equal('file.html')\n return\n return\n"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-getRelativePath.litcoffee b/test/unit-tests/unit-test-getRelativePath.litcoffee new file mode 100755 index 00000000..d2fd31da --- /dev/null +++ b/test/unit-tests/unit-test-getRelativePath.litcoffee @@ -0,0 +1,32 @@ +# This tests if getLanguage is working correctly. + + { should } = require('chai'); should() + getRelativePath = require('../../src/getRelativePath') + + describe 'docco getRelativePath', () -> + + it 'gets the path to a file in the same directory.', () -> + cssPath = getRelativePath('./file.css', './file.html', 'file.html' ) + cssPath.should.be.equal('file.html') + return + + it 'gets the path to a file in directory above.', () -> + cssPath = getRelativePath('file.css', 'docs/file.html', 'file.html' ) + cssPath.should.be.equal('docs/file.html') + return + + it 'gets the path to a file in two directories above.', () -> + cssPath = getRelativePath('file.css', 'docs/src/lib/file.html', 'file.html') + cssPath.should.be.equal('docs/src/lib/file.html') + return + + it 'gets the path to a file in parallel directory.', () -> + cssPath = getRelativePath('docs/file.css', 'src/file.html' ,'file.html') + cssPath.should.be.equal('../src/file.html') + return + + it 'gets the path to the same file.', () -> + cssPath = getRelativePath('docs/file.html', 'docs/file.html', 'file.html') + cssPath.should.be.equal('file.html') + return + return diff --git a/test/unit-tests/unit-test-parse.js b/test/unit-tests/unit-test-parse.js new file mode 100755 index 00000000..8324c4dd --- /dev/null +++ b/test/unit-tests/unit-test-parse.js @@ -0,0 +1,49 @@ +var assert, buildMatchers, fs, parse, ref, should; + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +fs = require('fs-extra'); + +parse = require('../../src/parse'); + +buildMatchers = require('../../src/buildMatchers'); + +describe('docco parse', function() { + it('parse a file into sections of code and text', function() { + var code, config, languages, sections, source; + code = fs.readFileSync(__dirname + '/fakes/fake_coffee.coffee').toString(); + source = 'fakes/fake_coffee.coffee'; + config = { + layout: 'parallel', + output: 'docs', + template: null, + css: null, + extension: null, + languages: {}, + marked: null, + setup: '.docco.json', + help: false, + flatten: false + }; + languages = [ + { + "name": "coffeescript", + "symbol": "#", + "commentMatcher": {}, + "commentFilter": {} + } + ]; + languages = buildMatchers(languages); + sections = parse(source, languages[0], code, config); + sections[0].docsText.should.be.equal("Assignment:\n"); + sections[0].codeText.should.be.equal("number = 42\nopposite = true\n\n"); + sections[1].docsText.should.be.equal("Conditions:\n"); + sections[1].codeText.should.be.equal("number = -42 if opposite\n\n"); + sections[2].docsText.should.be.equal("Functions:\n"); + sections[2].codeText.should.be.equal("square = (x) -> x * x\n\n"); + }); +}); + +//# sourceMappingURL=unit-test-parse.js.map diff --git a/test/unit-tests/unit-test-parse.js.map b/test/unit-tests/unit-test-parse.js.map new file mode 100644 index 00000000..5b691976 --- /dev/null +++ b/test/unit-tests/unit-test-parse.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-parse.js","sources":["unit-test-parse.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,MAAqB,OAAA,CAAQ,MAAR,CAArB,EAAE,mBAAF,EAAU;;AAA4B,MAAA,CAAA;;AACtC,EAAA,GAAK,OAAA,CAAQ,UAAR;;AACL,KAAA,GAAQ,OAAA,CAAQ,iBAAR;;AACR,aAAA,GAAgB,OAAA,CAAQ,yBAAR;;AAEhB,QAAA,CAAS,aAAT,EAAwB,SAAA;EAEtB,EAAA,CAAG,6CAAH,EAAkD,SAAA;AAEhD,QAAA;IAAA,IAAA,GAAO,EAAE,CAAC,YAAH,CAAgB,SAAA,GAAU,2BAA1B,CAAsD,CAAC,QAAvD,CAAA;IACP,MAAA,GAAS;IACT,MAAA,GACE;MAAA,MAAA,EAAY,UAAZ;MACA,MAAA,EAAY,MADZ;MAEA,QAAA,EAAY,IAFZ;MAGA,GAAA,EAAY,IAHZ;MAIA,SAAA,EAAY,IAJZ;MAKA,SAAA,EAAY,EALZ;MAMA,MAAA,EAAY,IANZ;MAOA,KAAA,EAAY,aAPZ;MAQA,IAAA,EAAW,KARX;MASA,OAAA,EAAS,KATT;;IAUF,SAAA,GAAY;MAAC;QAAC,MAAA,EAAO,cAAR;QAAuB,QAAA,EAAS,GAAhC;QAAoC,gBAAA,EAAiB,EAArD;QAAwD,eAAA,EAAgB,EAAxE;OAAD;;IACZ,SAAA,GAAY,aAAA,CAAc,SAAd;IAEZ,QAAA,GAAW,KAAA,CAAM,MAAN,EAAc,SAAU,CAAA,CAAA,CAAxB,EAA4B,IAA5B,EAAkC,MAAlC;IAEX,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,eAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,oCAArC;IAEA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,eAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,8BAArC;IAEA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,cAArC;IACA,QAAS,CAAA,CAAA,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAA/B,CAAqC,2BAArC;EA3BgD,CAAlD;AAFsB,CAAxB","sourcesContent":["# This tests if parse is working correctly.\n\n { assert, should } = require('chai'); should()\n fs = require 'fs-extra'\n parse = require '../../src/parse'\n buildMatchers = require '../../src/buildMatchers'\n\n describe 'docco parse', () ->\n\n it 'parse a file into sections of code and text', () ->\n\n code = fs.readFileSync(__dirname+'/fakes/fake_coffee.coffee').toString()\n source = 'fakes/fake_coffee.coffee'\n config =\n layout: 'parallel'\n output: 'docs'\n template: null\n css: null\n extension: null\n languages: {}\n marked: null\n setup: '.docco.json'\n help: false\n flatten: false\n languages = [{\"name\":\"coffeescript\",\"symbol\":\"#\",\"commentMatcher\":{},\"commentFilter\":{}}]\n languages = buildMatchers languages\n\n sections = parse(source, languages[0], code, config)\n\n sections[0].docsText.should.be.equal(\"Assignment:\\n\")\n sections[0].codeText.should.be.equal(\"number = 42\\nopposite = true\\n\\n\")\n\n sections[1].docsText.should.be.equal(\"Conditions:\\n\")\n sections[1].codeText.should.be.equal(\"number = -42 if opposite\\n\\n\")\n\n sections[2].docsText.should.be.equal(\"Functions:\\n\")\n sections[2].codeText.should.be.equal(\"square = (x) -> x * x\\n\\n\")\n return\n return"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-parse.litcoffee b/test/unit-tests/unit-test-parse.litcoffee new file mode 100755 index 00000000..4c61b1d3 --- /dev/null +++ b/test/unit-tests/unit-test-parse.litcoffee @@ -0,0 +1,39 @@ +# This tests if parse is working correctly. + + { assert, should } = require('chai'); should() + fs = require 'fs-extra' + parse = require '../../src/parse' + buildMatchers = require '../../src/buildMatchers' + + describe 'docco parse', () -> + + it 'parse a file into sections of code and text', () -> + + code = fs.readFileSync(__dirname+'/fakes/fake_coffee.coffee').toString() + source = 'fakes/fake_coffee.coffee' + config = + layout: 'parallel' + output: 'docs' + template: null + css: null + extension: null + languages: {} + marked: null + setup: '.docco.json' + help: false + flatten: false + languages = [{"name":"coffeescript","symbol":"#","commentMatcher":{},"commentFilter":{}}] + languages = buildMatchers languages + + sections = parse(source, languages[0], code, config) + + sections[0].docsText.should.be.equal("Assignment:\n") + sections[0].codeText.should.be.equal("number = 42\nopposite = true\n\n") + + sections[1].docsText.should.be.equal("Conditions:\n") + sections[1].codeText.should.be.equal("number = -42 if opposite\n\n") + + sections[2].docsText.should.be.equal("Functions:\n") + sections[2].codeText.should.be.equal("square = (x) -> x * x\n\n") + return + return \ No newline at end of file diff --git a/test/unit-tests/unit-test-run.js b/test/unit-tests/unit-test-run.js new file mode 100755 index 00000000..1fc25337 --- /dev/null +++ b/test/unit-tests/unit-test-run.js @@ -0,0 +1,142 @@ +var assert, fixForMatch, mockery, optionTimes, ref, run, should, times; + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +fixForMatch = require('./utils/fixForMatch'); + +mockery = require('mockery'); + +mockery.enable({ + useCleanCache: true, + warnOnReplace: false, + warnOnUnregistered: false +}); + +times = 0; + +mockery.registerMock('fs-extra', { + existsSync: function(file) {}, + readFileSync: function(file) { + if (times === 0) { + times++; + return '{ "coffeescript": {"name":"coffeescript","symbol":"#"},' + ' ".markdown": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true},' + ' ".md": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true}}'; + } else { + return '{ "version": "1.0.0" }'; + } + } +}); + +mockery.registerMock('./src/document', function(config) { + var fakeConfig; + fakeConfig = require('./fakes/fake-config'); + fakeConfig = fixForMatch(fakeConfig, ['path', 'pathdir', 'root']); + config = fixForMatch(config, ['path', 'pathdir', 'root']); + return assert.deepEqual(config, fakeConfig); +}); + +mockery.registerMock('./src/configure', function(commander, defaults, languages) { + commander.name.should.be.equal('docco'); + assert.deepEqual(languages, { + ".markdown": { + "html": true, + "link": "!", + "name": "markdown", + "section": "#", + "symbol": "" + }, + ".md": { + "html": true, + "link": "!", + "name": "markdown", + "section": "#", + "symbol": "" + }, + "coffeescript": { + "name": "coffeescript", + "symbol": "#" + } + }); + assert.deepEqual(defaults, { + "layout": "sidebyside", + "output": "docs", + "template": null, + "css": null, + "extension": null, + "languages": {}, + "marked": null, + "setup": ".docco.json", + "help": false, + "flatten": false + }); + defaults.sources = ["README.md", "images/fluffybunny1.jpg"]; + defaults.languages = languages; + defaults.css = 'docco.css'; + defaults.extension = '.md'; + return defaults; +}); + +optionTimes = 0; + +mockery.registerMock('commander', { + version: function(version) { + version.should.be.equal('1.0.0'); + return this; + }, + usage: function(usage) { + usage.should.be.equal('[options] [file]'); + return this; + }, + option: function(option, description, value) { + optionTimes++; + switch (optionTimes) { + case 1: + option.should.be.equal('-c, --css [file]'); + break; + case 2: + option.should.be.equal('-e, --extension [ext]'); + break; + case 3: + option.should.be.equal('-f, --flatten'); + break; + case 4: + option.should.be.equal('-g, --languages [file]'); + break; + case 5: + option.should.be.equal('-l, --layout [name]'); + break; + case 6: + option.should.be.equal('-m, --marked [file]'); + break; + case 7: + option.should.be.equal('-o, --output [path]'); + break; + case 8: + option.should.be.equal('-s, --setup [file]'); + break; + case 9: + option.should.be.equal('-t, --template [file]'); + } + return this; + }, + parse: function(args) { + assert.deepEqual(args, ["--flatten"]); + return this; + }, + name: function(name) { + name.should.be.equal('name'); + return this; + } +}); + +run = require('../../docco').run; + +describe('docco', function() { + it('handles parameters correctly', function() { + return run(["--flatten"]); + }); + return mockery.deregisterMock('./src/document'); +}); + +//# sourceMappingURL=unit-test-run.js.map diff --git a/test/unit-tests/unit-test-run.js.map b/test/unit-tests/unit-test-run.js.map new file mode 100644 index 00000000..3eed380e --- /dev/null +++ b/test/unit-tests/unit-test-run.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-run.js","sources":["unit-test-run.litcoffee"],"names":[],"mappings":"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","sourcesContent":["# This tests if run is working correctly.\n\n { assert, should } = require('chai'); should()\n fixForMatch = require './utils/fixForMatch'\n mockery = require('mockery')\n mockery.enable({\n useCleanCache: true,\n warnOnReplace: false,\n warnOnUnregistered: false\n })\n times = 0\n mockery.registerMock('fs-extra', {\n existsSync: (file) ->\n\n readFileSync: (file) ->\n if times is 0\n times++\n return '{ \"coffeescript\": {\"name\":\"coffeescript\",\"symbol\":\"#\"},' +\n ' \".markdown\": {\"name\": \"markdown\", \"symbol\": \"\", \"section\": \"#\", \"link\": \"!\", \"html\": true},' +\n ' \".md\": {\"name\": \"markdown\", \"symbol\": \"\", \"section\": \"#\", \"link\": \"!\", \"html\": true}}'\n else\n return '{ \"version\": \"1.0.0\" }'\n\n })\n mockery.registerMock('./src/document', (config) ->\n fakeConfig = require './fakes/fake-config'\n fakeConfig = fixForMatch(fakeConfig, ['path', 'pathdir','root'])\n config = fixForMatch(config, ['path', 'pathdir','root'])\n\n assert.deepEqual(config, fakeConfig)\n )\n mockery.registerMock('./src/configure', (commander, defaults, languages) ->\n commander.name.should.be.equal('docco')\n assert.deepEqual(languages, {\n \".markdown\": {\n \"html\": true\n \"link\": \"!\"\n \"name\": \"markdown\"\n \"section\": \"#\"\n \"symbol\": \"\"\n }\n \".md\": {\n \"html\": true\n \"link\": \"!\"\n \"name\": \"markdown\"\n \"section\": \"#\"\n \"symbol\": \"\"\n }\n \"coffeescript\": {\n \"name\": \"coffeescript\"\n \"symbol\": \"#\"\n }\n })\n assert.deepEqual(defaults, {\n \"layout\": \"sidebyside\",\n \"output\": \"docs\",\n \"template\": null,\n \"css\": null,\n \"extension\": null,\n \"languages\": {},\n \"marked\": null,\n \"setup\": \".docco.json\",\n \"help\": false,\n \"flatten\": false\n })\n defaults.sources = [\n \"README.md\",\n \"images/fluffybunny1.jpg\"\n ]\n defaults.languages = languages\n defaults.css = 'docco.css'\n defaults.extension = '.md'\n return defaults\n )\n optionTimes = 0\n mockery.registerMock('commander', {\n version: (version) ->\n version.should.be.equal('1.0.0')\n return @\n usage: (usage) ->\n usage.should.be.equal('[options] [file]')\n return @\n option: (option, description, value) ->\n optionTimes++\n switch optionTimes\n when 1 then option.should.be.equal('-c, --css [file]')\n when 2 then option.should.be.equal('-e, --extension [ext]')\n when 3 then option.should.be.equal('-f, --flatten')\n when 4 then option.should.be.equal('-g, --languages [file]')\n when 5 then option.should.be.equal('-l, --layout [name]')\n when 6 then option.should.be.equal('-m, --marked [file]')\n when 7 then option.should.be.equal('-o, --output [path]')\n when 8 then option.should.be.equal('-s, --setup [file]')\n when 9 then option.should.be.equal('-t, --template [file]')\n return @\n parse: (args) ->\n assert.deepEqual(args, [\"--flatten\"])\n return @\n name: (name) ->\n name.should.be.equal('name')\n return @\n })\n { run } = require '../../docco'\n\n describe 'docco', () ->\n it 'handles parameters correctly', () ->\n run([\"--flatten\"])\n\n mockery.deregisterMock('./src/document')\n"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-run.litcoffee b/test/unit-tests/unit-test-run.litcoffee new file mode 100755 index 00000000..3584d273 --- /dev/null +++ b/test/unit-tests/unit-test-run.litcoffee @@ -0,0 +1,109 @@ +# This tests if run is working correctly. + + { assert, should } = require('chai'); should() + fixForMatch = require './utils/fixForMatch' + mockery = require('mockery') + mockery.enable({ + useCleanCache: true, + warnOnReplace: false, + warnOnUnregistered: false + }) + times = 0 + mockery.registerMock('fs-extra', { + existsSync: (file) -> + + readFileSync: (file) -> + if times is 0 + times++ + return '{ "coffeescript": {"name":"coffeescript","symbol":"#"},' + + ' ".markdown": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true},' + + ' ".md": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true}}' + else + return '{ "version": "1.0.0" }' + + }) + mockery.registerMock('./src/document', (config) -> + fakeConfig = require './fakes/fake-config' + fakeConfig = fixForMatch(fakeConfig, ['path', 'pathdir','root']) + config = fixForMatch(config, ['path', 'pathdir','root']) + + assert.deepEqual(config, fakeConfig) + ) + mockery.registerMock('./src/configure', (commander, defaults, languages) -> + commander.name.should.be.equal('docco') + assert.deepEqual(languages, { + ".markdown": { + "html": true + "link": "!" + "name": "markdown" + "section": "#" + "symbol": "" + } + ".md": { + "html": true + "link": "!" + "name": "markdown" + "section": "#" + "symbol": "" + } + "coffeescript": { + "name": "coffeescript" + "symbol": "#" + } + }) + assert.deepEqual(defaults, { + "layout": "sidebyside", + "output": "docs", + "template": null, + "css": null, + "extension": null, + "languages": {}, + "marked": null, + "setup": ".docco.json", + "help": false, + "flatten": false + }) + defaults.sources = [ + "README.md", + "images/fluffybunny1.jpg" + ] + defaults.languages = languages + defaults.css = 'docco.css' + defaults.extension = '.md' + return defaults + ) + optionTimes = 0 + mockery.registerMock('commander', { + version: (version) -> + version.should.be.equal('1.0.0') + return @ + usage: (usage) -> + usage.should.be.equal('[options] [file]') + return @ + option: (option, description, value) -> + optionTimes++ + switch optionTimes + when 1 then option.should.be.equal('-c, --css [file]') + when 2 then option.should.be.equal('-e, --extension [ext]') + when 3 then option.should.be.equal('-f, --flatten') + when 4 then option.should.be.equal('-g, --languages [file]') + when 5 then option.should.be.equal('-l, --layout [name]') + when 6 then option.should.be.equal('-m, --marked [file]') + when 7 then option.should.be.equal('-o, --output [path]') + when 8 then option.should.be.equal('-s, --setup [file]') + when 9 then option.should.be.equal('-t, --template [file]') + return @ + parse: (args) -> + assert.deepEqual(args, ["--flatten"]) + return @ + name: (name) -> + name.should.be.equal('name') + return @ + }) + { run } = require '../../docco' + + describe 'docco', () -> + it 'handles parameters correctly', () -> + run(["--flatten"]) + + mockery.deregisterMock('./src/document') diff --git a/test/unit-tests/unit-test-typeIsArray.js b/test/unit-tests/unit-test-typeIsArray.js new file mode 100755 index 00000000..ab32ba05 --- /dev/null +++ b/test/unit-tests/unit-test-typeIsArray.js @@ -0,0 +1,54 @@ +var assert, chai, expect, should, typeIsArray; + +chai = require('chai'); + +expect = chai.expect; + +should = chai.should(); + +assert = chai.assert; + +typeIsArray = require('./utils/typeIsArray'); + +describe('test typeIsArray', function() { + it('given array, says it is an array', function() { + var x; + x = [1, 2, '3']; + return typeIsArray(x).should.be.equal(true); + }); + it('given object, says it is NOT an array', function() { + var x; + x = { + a: 1, + b: 2, + c: 3 + }; + return typeIsArray(x).should.be.equal(false); + }); + it('given object with array field, says it is NOT an array', function() { + var x; + x = { + a: [1], + b: [2], + c: [3] + }; + return typeIsArray(x).should.be.equal(false); + }); + it('given string, says it is NOT an array', function() { + var x; + x = "hi"; + return typeIsArray(x).should.be.equal(false); + }); + it('given number, says it is NOT an array', function() { + var x; + x = 1; + return typeIsArray(x).should.be.equal(false); + }); + return it('given boolean, says it is NOT an array', function() { + var x; + x = true; + return typeIsArray(x).should.be.equal(false); + }); +}); + +//# sourceMappingURL=unit-test-typeIsArray.js.map diff --git a/test/unit-tests/unit-test-typeIsArray.js.map b/test/unit-tests/unit-test-typeIsArray.js.map new file mode 100644 index 00000000..afc8a1cb --- /dev/null +++ b/test/unit-tests/unit-test-typeIsArray.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-typeIsArray.js","sources":["unit-test-typeIsArray.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,IAAA,GAAO,OAAA,CAAQ,MAAR;;AACP,MAAA,GAAS,IAAI,CAAC;;AACd,MAAA,GAAS,IAAI,CAAC,MAAL,CAAA;;AACT,MAAA,GAAS,IAAI,CAAC;;AAEd,WAAA,GAAc,OAAA,CAAQ,qBAAR;;AAEd,QAAA,CAAS,kBAAT,EAA6B,SAAA;EAE3B,EAAA,CAAG,kCAAH,EAAuC,SAAA;AACrC,QAAA;IAAA,CAAA,GAAE,CAAC,CAAD,EAAG,CAAH,EAAK,GAAL;WACF,WAAA,CAAY,CAAZ,CAAc,CAAC,MAAM,CAAC,EAAE,CAAC,KAAzB,CAA+B,IAA/B;EAFqC,CAAvC;EAIA,EAAA,CAAG,uCAAH,EAA4C,SAAA;AAC1C,QAAA;IAAA,CAAA,GAAE;MAAC,CAAA,EAAE,CAAH;MAAK,CAAA,EAAE,CAAP;MAAS,CAAA,EAAE,CAAX;;WACF,WAAA,CAAY,CAAZ,CAAc,CAAC,MAAM,CAAC,EAAE,CAAC,KAAzB,CAA+B,KAA/B;EAF0C,CAA5C;EAIA,EAAA,CAAG,wDAAH,EAA6D,SAAA;AAC3D,QAAA;IAAA,CAAA,GAAE;MAAC,CAAA,EAAE,CAAC,CAAD,CAAH;MAAO,CAAA,EAAE,CAAC,CAAD,CAAT;MAAa,CAAA,EAAE,CAAC,CAAD,CAAf;;WACF,WAAA,CAAY,CAAZ,CAAc,CAAC,MAAM,CAAC,EAAE,CAAC,KAAzB,CAA+B,KAA/B;EAF2D,CAA7D;EAIA,EAAA,CAAG,uCAAH,EAA4C,SAAA;AAC1C,QAAA;IAAA,CAAA,GAAE;WACF,WAAA,CAAY,CAAZ,CAAc,CAAC,MAAM,CAAC,EAAE,CAAC,KAAzB,CAA+B,KAA/B;EAF0C,CAA5C;EAIA,EAAA,CAAG,uCAAH,EAA4C,SAAA;AAC1C,QAAA;IAAA,CAAA,GAAE;WACF,WAAA,CAAY,CAAZ,CAAc,CAAC,MAAM,CAAC,EAAE,CAAC,KAAzB,CAA+B,KAA/B;EAF0C,CAA5C;SAIA,EAAA,CAAG,wCAAH,EAA6C,SAAA;AAC3C,QAAA;IAAA,CAAA,GAAE;WACF,WAAA,CAAY,CAAZ,CAAc,CAAC,MAAM,CAAC,EAAE,CAAC,KAAzB,CAA+B,KAA/B;EAF2C,CAA7C;AAtB2B,CAA7B","sourcesContent":["#\n\n chai = require('chai')\n expect = chai.expect\n should = chai.should()\n assert = chai.assert\n\n typeIsArray = require('./utils/typeIsArray')\n\n describe 'test typeIsArray', () ->\n\n it 'given array, says it is an array', () ->\n x=[1,2,'3']\n typeIsArray(x).should.be.equal(true)\n\n it 'given object, says it is NOT an array', () ->\n x={a:1,b:2,c:3}\n typeIsArray(x).should.be.equal(false)\n\n it 'given object with array field, says it is NOT an array', () ->\n x={a:[1],b:[2],c:[3]}\n typeIsArray(x).should.be.equal(false)\n\n it 'given string, says it is NOT an array', () ->\n x=\"hi\"\n typeIsArray(x).should.be.equal(false)\n\n it 'given number, says it is NOT an array', () ->\n x=1\n typeIsArray(x).should.be.equal(false)\n\n it 'given boolean, says it is NOT an array', () ->\n x=true\n typeIsArray(x).should.be.equal(false)\n\n"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-typeIsArray.litcoffee b/test/unit-tests/unit-test-typeIsArray.litcoffee new file mode 100755 index 00000000..258861a6 --- /dev/null +++ b/test/unit-tests/unit-test-typeIsArray.litcoffee @@ -0,0 +1,35 @@ +# + + chai = require('chai') + expect = chai.expect + should = chai.should() + assert = chai.assert + + typeIsArray = require('./utils/typeIsArray') + + describe 'test typeIsArray', () -> + + it 'given array, says it is an array', () -> + x=[1,2,'3'] + typeIsArray(x).should.be.equal(true) + + it 'given object, says it is NOT an array', () -> + x={a:1,b:2,c:3} + typeIsArray(x).should.be.equal(false) + + it 'given object with array field, says it is NOT an array', () -> + x={a:[1],b:[2],c:[3]} + typeIsArray(x).should.be.equal(false) + + it 'given string, says it is NOT an array', () -> + x="hi" + typeIsArray(x).should.be.equal(false) + + it 'given number, says it is NOT an array', () -> + x=1 + typeIsArray(x).should.be.equal(false) + + it 'given boolean, says it is NOT an array', () -> + x=true + typeIsArray(x).should.be.equal(false) + diff --git a/test/unit-tests/unit-test-write.js b/test/unit-tests/unit-test-write.js new file mode 100755 index 00000000..3d0d3ded --- /dev/null +++ b/test/unit-tests/unit-test-write.js @@ -0,0 +1,104 @@ +var _, assert, flattened, informationOnFilesFlattened, informationOnFilesUnFlattened, languages, mockery, path, ref, resultOfTemplateFlattened, resultOfTemplateUnFlattened, should, template, write; + +ref = require('chai'), assert = ref.assert, should = ref.should; + +should(); + +mockery = require('mockery'); + +mockery.enable({ + useCleanCache: true, + warnOnReplace: false, + warnOnUnregistered: false +}); + +path = require('path'); + +_ = require('underscore'); + +resultOfTemplateFlattened = require('./fakes/fake-linear-jst-flattened-result'); + +resultOfTemplateUnFlattened = require('./fakes/fake-linear-jst-unflattened-result'); + +flattened = true; + +mockery.registerMock('fs-extra', { + readFileSync: function() { + return '{ ".coffee": {"name": "coffeescript", "symbol": "#"}, ".litcoffee": {"name": "coffeescript", "symbol": "#", "literate": true}, ".md": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true} }'; + }, + writeFileSync: function(destination, html) { + if (flattened) { + destination.should.be.equal("/Project/docs/fake_coffee.html"); + return assert.equal(html, resultOfTemplateFlattened); + } else { + destination.should.be.equal("/Project/docs/src/fake_coffee.html"); + return assert.equal(html, resultOfTemplateUnFlattened); + } + } +}); + +write = require('../../src/write'); + +languages = require('../../docco').languages; + +template = require('./fakes/fake-linear-jst'); + +informationOnFilesFlattened = require('./fakes/informationOnFilesFlattened'); + +informationOnFilesUnFlattened = require('./fakes/informationOnFilesUnFlattened'); + +describe('docco write', function() { + it('writes to the correct flattened destination', function() { + var config, result, sections, source; + flattened = true; + source = "src/fake_coffee.coffee"; + config = { + css: "/Project/resources/linear/docco.css", + languages: languages, + output: 'docs', + root: '/Project', + css: 'docco.css', + sources: ["src/fake_coffee.coffee", "README.md"], + root: __dirname, + informationOnFiles: informationOnFilesFlattened + }; + config.template = _.template(template); + sections = [ + { + "docsText": "Some Doc Text", + "codeText": "Some code Text", + "codeHtml": "<div class='highlight'><pre>code=here;</pre></div>", + "docsHtml": "" + } + ]; + result = write(source, sections, config); + }); + it('writes to the correct unflattened destination', function() { + var config, result, sections, source; + flattened = false; + source = "src/fake_coffee.coffee"; + config = { + css: "/Project/resources/linear/docco.css", + languages: languages, + output: 'docs', + root: '/Project', + css: 'docco.css', + sources: ["src/fake_coffee.coffee", "README.md"], + root: __dirname, + informationOnFiles: informationOnFilesUnFlattened + }; + config.template = _.template(template); + sections = [ + { + "docsText": "Some Doc Text", + "codeText": "Some code Text", + "codeHtml": "<div class='highlight'><pre>code=here;</pre></div>", + "docsHtml": "" + } + ]; + result = write(source, sections, config); + mockery.deregisterMock('fs-extra'); + }); +}); + +//# sourceMappingURL=unit-test-write.js.map diff --git a/test/unit-tests/unit-test-write.js.map b/test/unit-tests/unit-test-write.js.map new file mode 100644 index 00000000..309ca3ad --- /dev/null +++ b/test/unit-tests/unit-test-write.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unit-test-write.js","sources":["unit-test-write.litcoffee"],"names":[],"mappings":"AAEI,IAAA;;AAAA,MAAqB,OAAA,CAAQ,MAAR,CAArB,EAAE,mBAAF,EAAU;;AAA4B,MAAA,CAAA;;AAEtC,OAAA,GAAU,OAAA,CAAQ,SAAR;;AACV,OAAO,CAAC,MAAR,CAAe;EACb,aAAA,EAAe,IADF;EAEb,aAAA,EAAe,KAFF;EAGb,kBAAA,EAAoB,KAHP;CAAf;;AAMA,IAAA,GAAO,OAAA,CAAQ,MAAR;;AACP,CAAA,GAAI,OAAA,CAAQ,YAAR;;AAGJ,yBAAA,GAA4B,OAAA,CAAQ,0CAAR;;AAC5B,2BAAA,GAA8B,OAAA,CAAQ,4CAAR;;AAC9B,SAAA,GAAY;;AACZ,OAAO,CAAC,YAAR,CAAqB,UAArB,EAAiC;EAC/B,YAAA,EAAc,SAAA;AACZ,WAAO;EADK,CADiB;EAO/B,aAAA,EAAe,SAAC,WAAD,EAAc,IAAd;IACb,IAAG,SAAH;MACE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAAtB,CAA4B,gCAA5B;aACA,MAAM,CAAC,KAAP,CAAa,IAAb,EAAkB,yBAAlB,EAFF;KAAA,MAAA;MAIE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAAtB,CAA4B,oCAA5B;aACA,MAAM,CAAC,KAAP,CAAa,IAAb,EAAkB,2BAAlB,EALF;;EADa,CAPgB;CAAjC;;AAgBA,KAAA,GAAQ,OAAA,CAAQ,iBAAR;;AACN,YAAc,OAAA,CAAQ,aAAR;;AAEhB,QAAA,GAAW,OAAA,CAAQ,yBAAR;;AACX,2BAAA,GAA8B,OAAA,CAAQ,qCAAR;;AAC9B,6BAAA,GAAgC,OAAA,CAAQ,uCAAR;;AAEhC,QAAA,CAAS,aAAT,EAAwB,SAAA;EAEtB,EAAA,CAAG,6CAAH,EAAkD,SAAA;AAChD,QAAA;IAAA,SAAA,GAAY;IAEZ,MAAA,GAAS;IACT,MAAA,GACE;MAAA,GAAA,EAAK,qCAAL;MACA,SAAA,EAAU,SADV;MAEA,MAAA,EAAQ,MAFR;MAGA,IAAA,EAAM,UAHN;MAIA,GAAA,EAAK,WAJL;MAKA,OAAA,EAAS,CACP,wBADO,EAEP,WAFO,CALT;MASA,IAAA,EAAM,SATN;MAUA,kBAAA,EAAoB,2BAVpB;;IAYF,MAAM,CAAC,QAAP,GAAkB,CAAC,CAAC,QAAF,CAAW,QAAX;IAElB,QAAA,GAAW;MAAC;QACV,UAAA,EAAW,eADD;QAEV,UAAA,EAAW,gBAFD;QAGV,UAAA,EAAW,oDAHD;QAIV,UAAA,EAAW,EAJD;OAAD;;IAKX,MAAA,GAAS,KAAA,CAAM,MAAN,EAAc,QAAd,EAAwB,MAAxB;EAxBuC,CAAlD;EA2BA,EAAA,CAAG,+CAAH,EAAoD,SAAA;AAClD,QAAA;IAAA,SAAA,GAAY;IAEZ,MAAA,GAAS;IACT,MAAA,GACE;MAAA,GAAA,EAAK,qCAAL;MACA,SAAA,EAAU,SADV;MAEA,MAAA,EAAQ,MAFR;MAGA,IAAA,EAAM,UAHN;MAIA,GAAA,EAAK,WAJL;MAKA,OAAA,EAAS,CACP,wBADO,EAEP,WAFO,CALT;MASA,IAAA,EAAM,SATN;MAUA,kBAAA,EAAoB,6BAVpB;;IAYF,MAAM,CAAC,QAAP,GAAkB,CAAC,CAAC,QAAF,CAAW,QAAX;IAElB,QAAA,GAAW;MAAC;QACV,UAAA,EAAW,eADD;QAEV,UAAA,EAAW,gBAFD;QAGV,UAAA,EAAW,oDAHD;QAIV,UAAA,EAAW,EAJD;OAAD;;IAKX,MAAA,GAAS,KAAA,CAAM,MAAN,EAAc,QAAd,EAAwB,MAAxB;IACT,OAAO,CAAC,cAAR,CAAuB,UAAvB;EAzBkD,CAApD;AA7BsB,CAAxB","sourcesContent":["# This tests if write is working correctly.\n\n { assert, should } = require('chai'); should()\n\n mockery = require('mockery')\n mockery.enable({\n useCleanCache: true,\n warnOnReplace: false,\n warnOnUnregistered: false\n })\n\n path = require('path')\n _ = require 'underscore'\n\n\n resultOfTemplateFlattened = require './fakes/fake-linear-jst-flattened-result'\n resultOfTemplateUnFlattened = require './fakes/fake-linear-jst-unflattened-result'\n flattened = true\n mockery.registerMock('fs-extra', {\n readFileSync: () ->\n return '{\n \".coffee\": {\"name\": \"coffeescript\", \"symbol\": \"#\"},\n \".litcoffee\": {\"name\": \"coffeescript\", \"symbol\": \"#\", \"literate\": true},\n \".md\": {\"name\": \"markdown\", \"symbol\": \"\", \"section\": \"#\", \"link\": \"!\", \"html\": true}\n }'\n writeFileSync: (destination, html) ->\n if flattened\n destination.should.be.equal(\"/Project/docs/fake_coffee.html\")\n assert.equal(html,resultOfTemplateFlattened)\n else\n destination.should.be.equal(\"/Project/docs/src/fake_coffee.html\")\n assert.equal(html,resultOfTemplateUnFlattened)\n })\n\n write = require '../../src/write'\n { languages } = require('../../docco')\n\n template = require './fakes/fake-linear-jst'\n informationOnFilesFlattened = require './fakes/informationOnFilesFlattened'\n informationOnFilesUnFlattened = require './fakes/informationOnFilesUnFlattened'\n\n describe 'docco write', () ->\n\n it 'writes to the correct flattened destination', () ->\n flattened = true\n\n source = \"src/fake_coffee.coffee\"\n config =\n css: \"/Project/resources/linear/docco.css\"\n languages:languages\n output: 'docs'\n root: '/Project'\n css: 'docco.css'\n sources: [\n \"src/fake_coffee.coffee\"\n \"README.md\"\n ]\n root: __dirname\n informationOnFiles: informationOnFilesFlattened\n\n config.template = _.template template\n\n sections = [{\n \"docsText\":\"Some Doc Text\",\n \"codeText\":\"Some code Text\",\n \"codeHtml\":\"<div class='highlight'><pre>code=here;</pre></div>\",\n \"docsHtml\":\"\"}]\n result = write(source, sections, config)\n return\n\n it 'writes to the correct unflattened destination', () ->\n flattened = false\n\n source = \"src/fake_coffee.coffee\"\n config =\n css: \"/Project/resources/linear/docco.css\"\n languages:languages\n output: 'docs'\n root: '/Project'\n css: 'docco.css'\n sources: [\n \"src/fake_coffee.coffee\"\n \"README.md\"\n ]\n root: __dirname\n informationOnFiles: informationOnFilesUnFlattened\n\n config.template = _.template template\n\n sections = [{\n \"docsText\":\"Some Doc Text\",\n \"codeText\":\"Some code Text\",\n \"codeHtml\":\"<div class='highlight'><pre>code=here;</pre></div>\",\n \"docsHtml\":\"\"}]\n result = write(source, sections, config)\n mockery.deregisterMock('fs-extra')\n return\n return"]} \ No newline at end of file diff --git a/test/unit-tests/unit-test-write.litcoffee b/test/unit-tests/unit-test-write.litcoffee new file mode 100755 index 00000000..2005a4a7 --- /dev/null +++ b/test/unit-tests/unit-test-write.litcoffee @@ -0,0 +1,98 @@ +# This tests if write is working correctly. + + { assert, should } = require('chai'); should() + + mockery = require('mockery') + mockery.enable({ + useCleanCache: true, + warnOnReplace: false, + warnOnUnregistered: false + }) + + path = require('path') + _ = require 'underscore' + + + resultOfTemplateFlattened = require './fakes/fake-linear-jst-flattened-result' + resultOfTemplateUnFlattened = require './fakes/fake-linear-jst-unflattened-result' + flattened = true + mockery.registerMock('fs-extra', { + readFileSync: () -> + return '{ + ".coffee": {"name": "coffeescript", "symbol": "#"}, + ".litcoffee": {"name": "coffeescript", "symbol": "#", "literate": true}, + ".md": {"name": "markdown", "symbol": "", "section": "#", "link": "!", "html": true} + }' + writeFileSync: (destination, html) -> + if flattened + destination.should.be.equal("/Project/docs/fake_coffee.html") + assert.equal(html,resultOfTemplateFlattened) + else + destination.should.be.equal("/Project/docs/src/fake_coffee.html") + assert.equal(html,resultOfTemplateUnFlattened) + }) + + write = require '../../src/write' + { languages } = require('../../docco') + + template = require './fakes/fake-linear-jst' + informationOnFilesFlattened = require './fakes/informationOnFilesFlattened' + informationOnFilesUnFlattened = require './fakes/informationOnFilesUnFlattened' + + describe 'docco write', () -> + + it 'writes to the correct flattened destination', () -> + flattened = true + + source = "src/fake_coffee.coffee" + config = + css: "/Project/resources/linear/docco.css" + languages:languages + output: 'docs' + root: '/Project' + css: 'docco.css' + sources: [ + "src/fake_coffee.coffee" + "README.md" + ] + root: __dirname + informationOnFiles: informationOnFilesFlattened + + config.template = _.template template + + sections = [{ + "docsText":"Some Doc Text", + "codeText":"Some code Text", + "codeHtml":"<div class='highlight'><pre>code=here;</pre></div>", + "docsHtml":""}] + result = write(source, sections, config) + return + + it 'writes to the correct unflattened destination', () -> + flattened = false + + source = "src/fake_coffee.coffee" + config = + css: "/Project/resources/linear/docco.css" + languages:languages + output: 'docs' + root: '/Project' + css: 'docco.css' + sources: [ + "src/fake_coffee.coffee" + "README.md" + ] + root: __dirname + informationOnFiles: informationOnFilesUnFlattened + + config.template = _.template template + + sections = [{ + "docsText":"Some Doc Text", + "codeText":"Some code Text", + "codeHtml":"<div class='highlight'><pre>code=here;</pre></div>", + "docsHtml":""}] + result = write(source, sections, config) + mockery.deregisterMock('fs-extra') + return + return \ No newline at end of file diff --git a/test/unit-tests/utils/fixForMatch.js b/test/unit-tests/utils/fixForMatch.js new file mode 100755 index 00000000..9fabcc82 --- /dev/null +++ b/test/unit-tests/utils/fixForMatch.js @@ -0,0 +1,32 @@ +var fixForDeepEqual, typeIsArray, typeIsObject, + indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; + +typeIsArray = require('./typeIsArray'); + +typeIsObject = require('./typeIsObject'); + +fixForDeepEqual = function(response, valuesToFake) { + var i, j, k, l, len, result, v; + result = {}; + for (k in response) { + v = response[k]; + if (indexOf.call(valuesToFake, k) >= 0) { + result[k] = "force matched"; + } else if (typeIsObject(v)) { + result[k] = fixForDeepEqual(v, valuesToFake); + } else if (typeIsArray(v)) { + for (l = j = 0, len = v.length; j < len; l = ++j) { + i = v[l]; + v[i] = fixForDeepEqual(l, valuesToFake); + } + result[k] = v; + } else { + result[k] = v; + } + } + return result; +}; + +module.exports = fixForDeepEqual; + +//# sourceMappingURL=fixForMatch.js.map diff --git a/test/unit-tests/utils/fixForMatch.js.map b/test/unit-tests/utils/fixForMatch.js.map new file mode 100644 index 00000000..f0ab6c94 --- /dev/null +++ b/test/unit-tests/utils/fixForMatch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fixForMatch.js","sources":["utils/fixForMatch.litcoffee"],"names":[],"mappings":"AAII,IAAA,0CAAA;EAAA;;AAAA,WAAA,GAAc,OAAA,CAAQ,eAAR;;AACd,YAAA,GAAe,OAAA,CAAQ,gBAAR;;AACf,eAAA,GAAkB,SAAC,QAAD,EAAW,YAAX;AAChB,MAAA;EAAA,MAAA,GAAS;AACT,OAAA,aAAA;;IACE,IAAG,aAAK,YAAL,EAAA,CAAA,MAAH;MACE,MAAO,CAAA,CAAA,CAAP,GAAY,gBADd;KAAA,MAEK,IAAG,YAAA,CAAa,CAAb,CAAH;MACH,MAAO,CAAA,CAAA,CAAP,GAAY,eAAA,CAAgB,CAAhB,EAAmB,YAAnB,EADT;KAAA,MAEA,IAAG,WAAA,CAAY,CAAZ,CAAH;AACH,WAAA,2CAAA;;QACE,CAAE,CAAA,CAAA,CAAF,GAAO,eAAA,CAAgB,CAAhB,EAAmB,YAAnB;AADT;MAEA,MAAO,CAAA,CAAA,CAAP,GAAY,EAHT;KAAA,MAAA;MAKH,MAAO,CAAA,CAAA,CAAP,GAAY,EALT;;AALP;AAWA,SAAO;AAbS;;AAelB,MAAM,CAAC,OAAP,GAAiB","sourcesContent":["# For fakes, certain fields change depending on the root directory the\n# test is run within. For those fields it is useful to \"zero\" them out\n# to the same value so that the other fields can be tested for equality.\n\n typeIsArray = require('./typeIsArray')\n typeIsObject = require('./typeIsObject')\n fixForDeepEqual = (response, valuesToFake) ->\n result = {}\n for k,v of response\n if k in valuesToFake\n result[k] = \"force matched\"\n else if typeIsObject(v)\n result[k] = fixForDeepEqual(v, valuesToFake)\n else if typeIsArray(v)\n for i,l in v\n v[i] = fixForDeepEqual(l, valuesToFake)\n result[k] = v\n else\n result[k] = v\n return result\n\n module.exports = fixForDeepEqual"]} \ No newline at end of file diff --git a/test/unit-tests/utils/fixForMatch.litcoffee b/test/unit-tests/utils/fixForMatch.litcoffee new file mode 100755 index 00000000..4fc993f9 --- /dev/null +++ b/test/unit-tests/utils/fixForMatch.litcoffee @@ -0,0 +1,22 @@ +# For fakes, certain fields change depending on the root directory the +# test is run within. For those fields it is useful to "zero" them out +# to the same value so that the other fields can be tested for equality. + + typeIsArray = require('./typeIsArray') + typeIsObject = require('./typeIsObject') + fixForDeepEqual = (response, valuesToFake) -> + result = {} + for k,v of response + if k in valuesToFake + result[k] = "force matched" + else if typeIsObject(v) + result[k] = fixForDeepEqual(v, valuesToFake) + else if typeIsArray(v) + for i,l in v + v[i] = fixForDeepEqual(l, valuesToFake) + result[k] = v + else + result[k] = v + return result + + module.exports = fixForDeepEqual \ No newline at end of file diff --git a/test/unit-tests/utils/typeIsArray.js b/test/unit-tests/utils/typeIsArray.js new file mode 100755 index 00000000..488a23c2 --- /dev/null +++ b/test/unit-tests/utils/typeIsArray.js @@ -0,0 +1,9 @@ +var typeIsArray; + +typeIsArray = Array.isArray || function(value) { + return {}.toString.call(value) === '[object Array]'; +}; + +module.exports = typeIsArray; + +//# sourceMappingURL=typeIsArray.js.map diff --git a/test/unit-tests/utils/typeIsArray.js.map b/test/unit-tests/utils/typeIsArray.js.map new file mode 100644 index 00000000..b9239dfb --- /dev/null +++ b/test/unit-tests/utils/typeIsArray.js.map @@ -0,0 +1 @@ +{"version":3,"file":"typeIsArray.js","sources":["utils/typeIsArray.litcoffee"],"names":[],"mappings":"AAAI,IAAA;;AAAA,WAAA,GAAc,KAAK,CAAC,OAAN,IAAiB,SAAE,KAAF;AAAa,SAAO,EAAE,CAAC,QAAQ,CAAC,IAAZ,CAAkB,KAAlB,CAAA,KAA6B;AAAjD;;AAC/B,MAAM,CAAC,OAAP,GAAiB","sourcesContent":[" typeIsArray = Array.isArray || ( value ) -> return {}.toString.call( value ) is '[object Array]'\n module.exports = typeIsArray"]} \ No newline at end of file diff --git a/test/unit-tests/utils/typeIsArray.litcoffee b/test/unit-tests/utils/typeIsArray.litcoffee new file mode 100755 index 00000000..146916b1 --- /dev/null +++ b/test/unit-tests/utils/typeIsArray.litcoffee @@ -0,0 +1,2 @@ + typeIsArray = Array.isArray || ( value ) -> return {}.toString.call( value ) is '[object Array]' + module.exports = typeIsArray \ No newline at end of file diff --git a/test/unit-tests/utils/typeIsObject.js b/test/unit-tests/utils/typeIsObject.js new file mode 100755 index 00000000..1c23c57f --- /dev/null +++ b/test/unit-tests/utils/typeIsObject.js @@ -0,0 +1,5 @@ +module.exports = function(value) { + return typeof value === "object"; +}; + +//# sourceMappingURL=typeIsObject.js.map diff --git a/test/unit-tests/utils/typeIsObject.js.map b/test/unit-tests/utils/typeIsObject.js.map new file mode 100644 index 00000000..128f087f --- /dev/null +++ b/test/unit-tests/utils/typeIsObject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"typeIsObject.js","sources":["utils/typeIsObject.litcoffee"],"names":[],"mappings":"AAAI,MAAM,CAAC,OAAP,GAAiB,SAAC,KAAD;AAAW,SAAO,OAAO,KAAP,KAAgB;AAAlC","sourcesContent":[" module.exports = (value) -> return typeof value is \"object\""]} \ No newline at end of file diff --git a/test/unit-tests/utils/typeIsObject.litcoffee b/test/unit-tests/utils/typeIsObject.litcoffee new file mode 100755 index 00000000..999a1744 --- /dev/null +++ b/test/unit-tests/utils/typeIsObject.litcoffee @@ -0,0 +1 @@ + module.exports = (value) -> return typeof value is "object" \ No newline at end of file