mirror of
https://github.com/wahyd4/docsify.git
synced 2026-08-09 13:26:34 +10:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6365a476e0 |
@@ -0,0 +1,2 @@
|
||||
<!-- Love docsify? Please consider supporting our collective:
|
||||
👉 https://opencollective.com/docsify/donate -->
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
|
||||
---
|
||||
<!-- Please don't delete this template or we'll close your issue -->
|
||||
<!-- Please use English language -->
|
||||
<!-- Before creating an issue please make sure you are using the latest version of Docsify. -->
|
||||
<!-- Please ask questions on StackOverflow: https://stackoverflow.com/questions/ask?tags=docsify -->
|
||||
|
||||
## Bug Report
|
||||
|
||||
#### Steps to reproduce
|
||||
|
||||
|
||||
|
||||
#### What is current behaviour
|
||||
|
||||
|
||||
|
||||
#### What is the expected behaviour
|
||||
|
||||
|
||||
|
||||
#### Other relevant information
|
||||
|
||||
<!-- (Update "[ ]" to "[x]" to check a box) -->
|
||||
- [ ] Bug does still occur when all/other plugins are disabled?
|
||||
|
||||
- Your OS:
|
||||
- Node.js version:
|
||||
- npm/yarn version:
|
||||
- Browser version:
|
||||
- Docsify version:
|
||||
- Docsify plugins:
|
||||
|
||||
<!-- Love docsify? Please consider supporting our collective:
|
||||
👉 https://opencollective.com/docsify/donate -->
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
|
||||
---
|
||||
<!-- Please don't delete this template or we'll close your issue -->
|
||||
<!-- Please use English language -->
|
||||
<!-- Before creating an issue please make sure you are using the latest version of Docsify. -->
|
||||
<!-- Please ask questions on StackOverflow 👉 https://stackoverflow.com/questions/ask?tags=docsify -->
|
||||
|
||||
## Feature request
|
||||
|
||||
#### What problem does this feature solve?
|
||||
|
||||
|
||||
|
||||
#### What does the proposed API look like?
|
||||
|
||||
|
||||
|
||||
#### How should this be implemented in your opinion?
|
||||
|
||||
|
||||
|
||||
#### Are you willing to work on this yourself?
|
||||
@@ -1,54 +1,5 @@
|
||||
<!-- Please use English language -->
|
||||
<!-- Please don't delete this template -->
|
||||
|
||||
<!-- PULL REQUEST TEMPLATE -->
|
||||
<!-- (Update "[ ]" to "[x]" to check a box) -->
|
||||
|
||||
**Summary**
|
||||
|
||||
**What kind of change does this PR introduce?** (check at least one)
|
||||
|
||||
- [ ] Bugfix
|
||||
- [ ] Feature
|
||||
- [ ] Code style update
|
||||
- [ ] Refactor
|
||||
- [ ] Docs
|
||||
- [ ] Build-related changes
|
||||
- [ ] Other, please describe:
|
||||
|
||||
If changing the UI of default theme, please provide the **before/after** screenshot:
|
||||
|
||||
**Does this PR introduce a breaking change?** (check one)
|
||||
|
||||
- [ ] Yes
|
||||
- [ ] No
|
||||
|
||||
If yes, please describe the impact and migration path for existing applications:
|
||||
|
||||
**The PR fulfills these requirements:**
|
||||
|
||||
- [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. `fix #xxx[,#xxx]`, where "xxx" is the issue number)
|
||||
|
||||
You have tested in the following browsers: (Providing a detailed version will be better.)
|
||||
|
||||
- [ ] Chrome
|
||||
- [ ] Firefox
|
||||
- [ ] Safari
|
||||
- [ ] Edge
|
||||
- [ ] IE
|
||||
|
||||
If adding a **new feature**, the PR's description includes:
|
||||
|
||||
- [ ] A convincing reason for adding this feature
|
||||
- [ ] Related documents have been updated
|
||||
- [ ] Related tests have been updated
|
||||
|
||||
To avoid wasting your time, it's best to open a **feature request issue** first and wait for approval before working on it.
|
||||
|
||||
|
||||
**Other information:**
|
||||
|
||||
---
|
||||
Please makes sure these boxes are checked before submitting your PR, thank you!
|
||||
|
||||
* [ ] Make sure you are merging your commits to `master` branch.
|
||||
* [ ] Add some descriptions and refer relative issues for you PR.
|
||||
* [ ] DO NOT include files inside `lib` directory.
|
||||
|
||||
|
||||
@@ -1,18 +1,3 @@
|
||||
<a name="4.9.2"></a>
|
||||
## [4.9.2](https://github.com/docsifyjs/docsify/compare/v4.9.1...v4.9.2) (2019-04-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* re-render gitalk when router changed ([11ea1f8](https://github.com/docsifyjs/docsify/commit/11ea1f8))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* allows relative path, fixed [#590](https://github.com/docsifyjs/docsify/issues/590) ([31654f1](https://github.com/docsifyjs/docsify/commit/31654f1))
|
||||
|
||||
|
||||
|
||||
<a name="4.9.1"></a>
|
||||
## [4.9.1](https://github.com/docsifyjs/docsify/compare/v4.9.0...v4.9.1) (2019-02-21)
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
|
||||
## Links
|
||||
|
||||
- [`develop` branch preview](https://docsifyjs.netlify.com/)
|
||||
- [Documentation](https://docsify.js.org)
|
||||
- [CLI](https://github.com/docsifyjs/docsify-cli)
|
||||
- CDN: [UNPKG](https://unpkg.com/docsify/) | [jsDelivr](https://cdn.jsdelivr.net/npm/docsify/) | [cdnjs](https://cdnjs.com/libraries/docsify)
|
||||
@@ -41,7 +40,7 @@
|
||||
- Smart full-text search plugin
|
||||
- Multiple themes
|
||||
- Useful plugin API
|
||||
- Compatible with IE11
|
||||
- Compatible with IE10+
|
||||
- Support SSR ([example](https://github.com/docsifyjs/docsify-ssr-demo))
|
||||
- Support embedded files
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
const fs = require('fs')
|
||||
|
||||
const data = fs.readFileSync('/dev/stdin', 'utf-8')
|
||||
const emoji = JSON.parse(data)
|
||||
|
||||
const AllGithubEmoji = []
|
||||
for (let i = 0; i < emoji.length; i++) {
|
||||
let o = emoji[i]
|
||||
if (o.aliases) {
|
||||
AllGithubEmoji.push(...o.aliases)
|
||||
}
|
||||
}
|
||||
|
||||
const str = `// DO NOT EDIT THIS FILE, IT'S GENERATED
|
||||
// All from github official gemoji repo
|
||||
// see https://github.com/github/gemoji/blob/master/db/emoji.json
|
||||
export default ${JSON.stringify(AllGithubEmoji)}
|
||||
`
|
||||
|
||||
fs.writeFileSync(__dirname + '/../src/plugins/emoji-aliases.js', str)
|
||||
Executable → Regular
+1
-1
@@ -16,7 +16,7 @@ See the [Quick start](quickstart.md) guide for more details.
|
||||
- Multiple themes
|
||||
- Useful plugin API
|
||||
- Emoji support
|
||||
- Compatible with IE11
|
||||
- Compatible with IE10+
|
||||
- Support server-side rendering ([example](https://github.com/docsifyjs/docsify-ssr-demo))
|
||||
|
||||
## Examples
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||

|
||||
|
||||
# docsify <small>4.9.2</small>
|
||||
# docsify <small>4.9.1</small>
|
||||
|
||||
> A magical documentation site generator.
|
||||
|
||||
|
||||
@@ -150,46 +150,6 @@ window.$docsify = {
|
||||
};
|
||||
```
|
||||
|
||||
## relativePath
|
||||
|
||||
- Type: `Boolean`
|
||||
- Default: `false`
|
||||
|
||||
If **true** links are relative to the current context.
|
||||
|
||||
For example, the directory structure is as follows:
|
||||
|
||||
```text
|
||||
.
|
||||
└── docs
|
||||
├── README.md
|
||||
├── guide.md
|
||||
└── zh-cn
|
||||
├── README.md
|
||||
├── guide.md
|
||||
└── config
|
||||
└── example.md
|
||||
```
|
||||
|
||||
With relative path **enabled** and current URL `http://domain.com/zh-cn/README`, given links will resolve to:
|
||||
|
||||
```text
|
||||
guide.md => http://domain.com/zh-cn/guide
|
||||
config/example.md => http://domain.com/zh-cn/config/example
|
||||
../README.md => http://domain.com/README
|
||||
/README.md => http://domain.com/README
|
||||
```
|
||||
|
||||
```js
|
||||
window.$docsify = {
|
||||
// Relative path enabled
|
||||
relativePath: true,
|
||||
|
||||
// Relative path disabled (default value)
|
||||
relativePath: false
|
||||
};
|
||||
```
|
||||
|
||||
## coverpage
|
||||
|
||||
- Type: `Boolean|String|String[]|Object`
|
||||
|
||||
@@ -87,45 +87,3 @@ When using the HTML5 router, you need to set up redirect rules that redirect all
|
||||
```sh
|
||||
/* /index.html 200
|
||||
```
|
||||
|
||||
## AWS Amplify
|
||||
|
||||
1. Set the routerMode in the Docsify project `index.html` to *history* mode.
|
||||
|
||||
```html
|
||||
<script>
|
||||
window.$docsify = {
|
||||
loadSidebar: true,
|
||||
routerMode: 'history'
|
||||
}
|
||||
</script>
|
||||
```
|
||||
|
||||
2. Login to your [AWS Console](https://aws.amazon.com).
|
||||
3. Go to the [AWS Amplify Dashboard](https://aws.amazon.com/amplify).
|
||||
4. Choose the **Deploy** route to setup your project.
|
||||
5. When prompted, keep the build settings empty if you're serving your docs within the root directory. If you're serving your docs from a different directory, customise your amplify.yml
|
||||
|
||||
```yml
|
||||
version: 0.1
|
||||
frontend:
|
||||
phases:
|
||||
build:
|
||||
commands:
|
||||
- echo "Nothing to build"
|
||||
artifacts:
|
||||
baseDirectory: /docs
|
||||
files:
|
||||
- '**/*'
|
||||
cache:
|
||||
paths: []
|
||||
|
||||
```
|
||||
|
||||
6. Add the following Redirect rules in their displayed order.
|
||||
|
||||
| Source address | Target address | Type |
|
||||
|----------------|----------------|---------------|
|
||||
| /<*>.md | /<*>.md | 200 (Rewrite) |
|
||||
| /<*> | /index.html | 200 (Rewrite) |
|
||||
|
||||
|
||||
@@ -44,10 +44,6 @@
|
||||
maxLevel: 4,
|
||||
subMaxLevel: 2,
|
||||
ga: 'UA-106147152-1',
|
||||
matomo: {
|
||||
host: '//matomo.thunderwave.de',
|
||||
id: 6
|
||||
},
|
||||
name: 'docsify',
|
||||
search: {
|
||||
noData: {
|
||||
@@ -88,7 +84,6 @@
|
||||
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
|
||||
<script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
|
||||
<script src="//unpkg.com/docsify/lib/plugins/ga.min.js"></script>
|
||||
<script src="//unpkg.com/docsify/lib/plugins/matomo.min.js"></script>
|
||||
<script src="//unpkg.com/prismjs/components/prism-bash.min.js"></script>
|
||||
<script src="//unpkg.com/prismjs/components/prism-markdown.min.js"></script>
|
||||
<script src="//unpkg.com/prismjs/components/prism-nginx.min.js"></script>
|
||||
|
||||
@@ -72,16 +72,6 @@ You can specify `alias` to avoid unnecessary fallback.
|
||||
|
||||
!> You can create a `README.md` file in a subdirectory to use it as the landing page for the route.
|
||||
|
||||
## Set Page Titles from Sidebar Selection
|
||||
|
||||
A page's `title` tag is generated from the _selected_ sidebar item name. For better SEO, you can customize the title by specifying a string after the filename.
|
||||
|
||||
```markdown
|
||||
<!-- docs/_sidebar.md -->
|
||||
* [Home](/)
|
||||
* [Guide](guide.md "The greatest guide in the world")
|
||||
```
|
||||
|
||||
## Table of Contents
|
||||
|
||||
Once you've created `_sidebar.md`, the sidebar content is automatically generated based on the headers in the markdown files.
|
||||
|
||||
@@ -79,7 +79,7 @@ window.$docsify = {
|
||||
function(hook, vm) {
|
||||
hook.beforeEach(function(html) {
|
||||
var url =
|
||||
'https://github.com/docsifyjs/docsify/blob/master/docs/' +
|
||||
'https://github.com/docsifyjs/docsify/blob/master/docs' +
|
||||
vm.route.file;
|
||||
var editHtml = '[📝 EDIT DOCUMENT](' + url + ')\n';
|
||||
|
||||
|
||||
+11
-27
@@ -21,64 +21,48 @@
|
||||
<script>
|
||||
window.$docsify = {
|
||||
alias: {
|
||||
'.*?/awesome': 'https://raw.githubusercontent.com/docsifyjs/awesome-docsify/master/README.md',
|
||||
'.*?/changelog': 'https://raw.githubusercontent.com/docsifyjs/docsify/master/CHANGELOG.md',
|
||||
'.*?/changelog': 'https://raw.githubusercontent.com/docsifyjs/docsify/master/CHANGELOG',
|
||||
'/.*/_navbar.md': '/_navbar.md',
|
||||
'/zh-cn/(.*)': 'https://raw.githubusercontent.com/docsifyjs/docs-zh/master/$1',
|
||||
'/de-de/(.*)': 'https://raw.githubusercontent.com/docsifyjs/docs-de/master/$1',
|
||||
'/ru/(.*)': 'https://raw.githubusercontent.com/docsifyjs/docs-ru/master/$1',
|
||||
'/es/(.*)': 'https://raw.githubusercontent.com/docsifyjs/docs-es/master/$1'
|
||||
},
|
||||
notFoundPage: '_404.html',
|
||||
auto2top: true,
|
||||
basePath: '/docs/',
|
||||
coverpage: true,
|
||||
executeScript: true,
|
||||
loadSidebar: true,
|
||||
loadNavbar: true,
|
||||
mergeNavbar: true,
|
||||
maxLevel: 4,
|
||||
subMaxLevel: 2,
|
||||
loadSidebar: true,
|
||||
coverpage: true,
|
||||
name: 'docsify',
|
||||
search: {
|
||||
noData: {
|
||||
'/de-de/': 'Keine Ergebnisse!',
|
||||
'/zh-cn/': '没有结果!',
|
||||
'/': 'No results!'
|
||||
},
|
||||
paths: 'auto',
|
||||
placeholder: {
|
||||
'/de-de/': 'Suche',
|
||||
'/zh-cn/': '搜索',
|
||||
'/': 'Search'
|
||||
}
|
||||
},
|
||||
subMaxLevel: 2,
|
||||
mergeNavbar: true,
|
||||
formatUpdated: '{MM}/{DD} {HH}:{mm}',
|
||||
plugins: [
|
||||
function (hook, vm) {
|
||||
hook.beforeEach(function (html) {
|
||||
var url
|
||||
if (/githubusercontent\.com/.test(vm.route.file)) {
|
||||
url = vm.route.file
|
||||
.replace('raw.githubusercontent.com', 'github.com')
|
||||
.replace(/\/master/, '/blob/master')
|
||||
} else {
|
||||
url = 'https://github.com/docsifyjs/docsify/blob/master/docs/' + vm.route.file
|
||||
url = 'https://github.com/docsifyjs/docsify/blob/master/' + vm.route.file
|
||||
}
|
||||
var editHtml = '[:memo: Edit Document](' + url + ')\n'
|
||||
|
||||
return editHtml
|
||||
+ html
|
||||
+ '\n\n----\n\n'
|
||||
+ '<a href="https://docsify.js.org" target="_blank" style="color: inherit; font-weight: normal; text-decoration: none;">Powered by docsify</a>'
|
||||
+ 'Last modified {docsify-updated} '
|
||||
+ editHtml
|
||||
})
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
<script src="/lib/docsify.js"></script>
|
||||
<script src="/lib/plugins/search.js"></script>
|
||||
<script src="//unpkg.com/prismjs/components/prism-bash.min.js"></script>
|
||||
<script src="//unpkg.com/prismjs/components/prism-markdown.min.js"></script>
|
||||
<script src="//unpkg.com/prismjs/components/prism-nginx.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
+3
-23
@@ -85,8 +85,7 @@ function config () {
|
||||
formatUpdated: '',
|
||||
externalLinkTarget: '_blank',
|
||||
routerMode: 'hash',
|
||||
noCompileLinks: [],
|
||||
relativePath: false
|
||||
noCompileLinks: []
|
||||
},
|
||||
window.$docsify
|
||||
);
|
||||
@@ -3223,20 +3222,6 @@ var cleanPath = cached(function (path) {
|
||||
return path.replace(/^\/+/, '/').replace(/([^:])\/{2,}/g, '$1/')
|
||||
});
|
||||
|
||||
var resolvePath = cached(function (path) {
|
||||
var segments = path.replace(/^\//, '').split('/');
|
||||
var resolved = [];
|
||||
for (var i = 0, len = segments.length; i < len; i++) {
|
||||
var segment = segments[i];
|
||||
if (segment === '..') {
|
||||
resolved.pop();
|
||||
} else if (segment !== '.') {
|
||||
resolved.push(segment);
|
||||
}
|
||||
}
|
||||
return '/' + resolved.join('/')
|
||||
});
|
||||
|
||||
function getPath() {
|
||||
var args = [], len = arguments.length;
|
||||
while ( len-- ) args[ len ] = arguments[ len ];
|
||||
@@ -4532,13 +4517,9 @@ History.prototype.toURL = function toURL (path, params, currentRoute) {
|
||||
if (local) {
|
||||
var idIndex = currentRoute.indexOf('?');
|
||||
path =
|
||||
(idIndex > 0 ? currentRoute.substring(0, idIndex) : currentRoute) + path;
|
||||
(idIndex > 0 ? currentRoute.substr(0, idIndex) : currentRoute) + path;
|
||||
}
|
||||
|
||||
if (this.config.relativePath && path.indexOf('/') !== 0) {
|
||||
var currentDir = currentRoute.substring(0, currentRoute.lastIndexOf('/') + 1);
|
||||
return cleanPath(resolvePath(currentDir + path))
|
||||
}
|
||||
return cleanPath('/' + path)
|
||||
};
|
||||
|
||||
@@ -5055,7 +5036,6 @@ var util = Object.freeze({
|
||||
isAbsolutePath: isAbsolutePath,
|
||||
getParentPath: getParentPath,
|
||||
cleanPath: cleanPath,
|
||||
resolvePath: resolvePath,
|
||||
getPath: getPath,
|
||||
replaceSlug: replaceSlug
|
||||
});
|
||||
@@ -5066,7 +5046,7 @@ function initGlobalAPI () {
|
||||
dom: dom,
|
||||
get: get,
|
||||
slugify: slugify,
|
||||
version: '4.9.2'
|
||||
version: '4.9.1'
|
||||
};
|
||||
window.DocsifyCompiler = Compiler;
|
||||
window.marked = marked;
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+4
-10
@@ -8,16 +8,10 @@ function install(hook) {
|
||||
var main = dom.getNode('#main');
|
||||
div.style = "width: " + (main.clientWidth) + "px; margin: 0 auto 20px;";
|
||||
dom.appendTo(dom.find('.content'), div);
|
||||
});
|
||||
|
||||
hook.doneEach(function (_) {
|
||||
var el = document.getElementById('gitalk-container');
|
||||
while (el.hasChildNodes()) {
|
||||
el.removeChild(el.firstChild);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line
|
||||
gitalk.render('gitalk-container');
|
||||
var script = dom.create('script');
|
||||
var content = "gitalk.render('gitalk-container')";
|
||||
script.textContent = content;
|
||||
dom.appendTo(dom.body, script);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
$docsify.plugins=[].concat(function(i){var e=Docsify.dom;i.mounted(function(i){var n=e.create("div");n.id="gitalk-container";var t=e.getNode("#main");n.style="width: "+t.clientWidth+"px; margin: 0 auto 20px;",e.appendTo(e.find(".content"),n)}),i.doneEach(function(i){for(var n=document.getElementById("gitalk-container");n.hasChildNodes();)n.removeChild(n.firstChild);gitalk.render("gitalk-container")})},$docsify.plugins);
|
||||
$docsify.plugins=[].concat(function(t){var a=Docsify.dom;t.mounted(function(t){var n=a.create("div");n.id="gitalk-container";var i=a.getNode("#main");n.style="width: "+i.clientWidth+"px; margin: 0 auto 20px;",a.appendTo(a.find(".content"),n);var e=a.create("script");e.textContent="gitalk.render('gitalk-container')",a.appendTo(a.body,e)})},$docsify.plugins);
|
||||
|
||||
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Generated
+7
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "docsify",
|
||||
"version": "4.9.2",
|
||||
"version": "4.9.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -8791,6 +8791,12 @@
|
||||
"async-limiter": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"xhr2": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz",
|
||||
"integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=",
|
||||
"dev": true
|
||||
},
|
||||
"xml-name-validator": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
||||
|
||||
+7
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "docsify",
|
||||
"version": "4.9.2",
|
||||
"version": "4.9.1",
|
||||
"description": "A magical documentation generator.",
|
||||
"author": {
|
||||
"name": "qingwei-li",
|
||||
@@ -27,16 +27,17 @@
|
||||
"dev": "run-p serve watch:*",
|
||||
"dev:ssr": "run-p serve:ssr watch:*",
|
||||
"lint": "eslint {src,packages} --fix",
|
||||
"test": "mocha test/*/**",
|
||||
"test": "mocha",
|
||||
"css": "stylus src/themes/*.styl -u autoprefixer-stylus",
|
||||
"watch:css": "run-p 'css -- -o themes -w'",
|
||||
"watch:js": "node build/build.js",
|
||||
"build:css:min": "mkdir lib/themes && run-p 'css -- -o lib/themes' && node build/mincss.js",
|
||||
"build:css": "mkdir -p themes && run-p 'css -- -o themes'",
|
||||
"build:css": "mkdir themes && run-p 'css -- -o themes'",
|
||||
"build:js": "cross-env NODE_ENV=production node build/build.js",
|
||||
"build:ssr": "node build/ssr.js",
|
||||
"build:cover": "node build/cover.js",
|
||||
"build": "rimraf lib themes/* && run-s build:js build:css build:css:min build:ssr build:cover",
|
||||
"build:emoji-aliases": "wget https://raw.githubusercontent.com/github/gemoji/master/db/emoji.json -O - | node build/emoji-aliases.js",
|
||||
"build": "rimraf lib themes && run-s build:emoji-aliases build:js build:css build:css:min build:ssr build:cover",
|
||||
"pub:next": "cross-env RELEASE_TAG=next sh build/release.sh",
|
||||
"pub": "sh build/release.sh",
|
||||
"postinstall": "opencollective postinstall"
|
||||
@@ -72,7 +73,8 @@
|
||||
"rollup-plugin-node-resolve": "^3.0.0",
|
||||
"rollup-plugin-replace": "^2.0.0",
|
||||
"rollup-plugin-uglify": "^2.0.1",
|
||||
"stylus": "^0.54.5"
|
||||
"stylus": "^0.54.5",
|
||||
"xhr2": "^0.1.4"
|
||||
},
|
||||
"keywords": [
|
||||
"doc",
|
||||
|
||||
+1
-1
@@ -37,5 +37,5 @@
|
||||
"integrity": "sha1-6DWIAbhrg7F1YNTjw4LXrvIQCUQ="
|
||||
}
|
||||
},
|
||||
"version": "4.9.2"
|
||||
"version": "4.9.1"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "docsify-server-renderer",
|
||||
"version": "4.9.2",
|
||||
"version": "4.9.1",
|
||||
"description": "docsify server renderer",
|
||||
"author": {
|
||||
"name": "qingwei-li",
|
||||
|
||||
+1
-2
@@ -25,8 +25,7 @@ export default function () {
|
||||
formatUpdated: '',
|
||||
externalLinkTarget: '_blank',
|
||||
routerMode: 'hash',
|
||||
noCompileLinks: [],
|
||||
relativePath: false
|
||||
noCompileLinks: []
|
||||
},
|
||||
window.$docsify
|
||||
)
|
||||
|
||||
@@ -3,8 +3,7 @@ import {
|
||||
isAbsolutePath,
|
||||
stringifyQuery,
|
||||
cleanPath,
|
||||
replaceSlug,
|
||||
resolvePath
|
||||
replaceSlug
|
||||
} from '../util'
|
||||
import {noop, merge} from '../../util/core'
|
||||
|
||||
@@ -74,13 +73,9 @@ export class History {
|
||||
if (local) {
|
||||
const idIndex = currentRoute.indexOf('?')
|
||||
path =
|
||||
(idIndex > 0 ? currentRoute.substring(0, idIndex) : currentRoute) + path
|
||||
(idIndex > 0 ? currentRoute.substr(0, idIndex) : currentRoute) + path
|
||||
}
|
||||
|
||||
if (this.config.relativePath && path.indexOf('/') !== 0) {
|
||||
const currentDir = currentRoute.substring(0, currentRoute.lastIndexOf('/') + 1)
|
||||
return cleanPath(resolvePath(currentDir + path))
|
||||
}
|
||||
return cleanPath('/' + path)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,20 +53,6 @@ export const cleanPath = cached(path => {
|
||||
return path.replace(/^\/+/, '/').replace(/([^:])\/{2,}/g, '$1/')
|
||||
})
|
||||
|
||||
export const resolvePath = cached(path => {
|
||||
const segments = path.replace(/^\//, '').split('/')
|
||||
let resolved = []
|
||||
for (let i = 0, len = segments.length; i < len; i++) {
|
||||
const segment = segments[i]
|
||||
if (segment === '..') {
|
||||
resolved.pop()
|
||||
} else if (segment !== '.') {
|
||||
resolved.push(segment)
|
||||
}
|
||||
}
|
||||
return '/' + resolved.join('/')
|
||||
})
|
||||
|
||||
export function getPath(...args) {
|
||||
return cleanPath(args.join('/'))
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
+1
-890
@@ -1,894 +1,5 @@
|
||||
const AllGithubEmoji = [
|
||||
'+1',
|
||||
'100',
|
||||
'1234',
|
||||
'8ball',
|
||||
'a',
|
||||
'ab',
|
||||
'abc',
|
||||
'abcd',
|
||||
'accept',
|
||||
'aerial_tramway',
|
||||
'airplane',
|
||||
'alarm_clock',
|
||||
'alien',
|
||||
'ambulance',
|
||||
'anchor',
|
||||
'angel',
|
||||
'anger',
|
||||
'angry',
|
||||
'anguished',
|
||||
'ant',
|
||||
'apple',
|
||||
'aquarius',
|
||||
'aries',
|
||||
'arrow_backward',
|
||||
'arrow_double_down',
|
||||
'arrow_double_up',
|
||||
'arrow_down',
|
||||
'arrow_down_small',
|
||||
'arrow_forward',
|
||||
'arrow_heading_down',
|
||||
'arrow_heading_up',
|
||||
'arrow_left',
|
||||
'arrow_lower_left',
|
||||
'arrow_lower_right',
|
||||
'arrow_right',
|
||||
'arrow_right_hook',
|
||||
'arrow_up',
|
||||
'arrow_up_down',
|
||||
'arrow_up_small',
|
||||
'arrow_upper_left',
|
||||
'arrow_upper_right',
|
||||
'arrows_clockwise',
|
||||
'arrows_counterclockwise',
|
||||
'art',
|
||||
'articulated_lorry',
|
||||
'astonished',
|
||||
'athletic_shoe',
|
||||
'atm',
|
||||
'b',
|
||||
'baby',
|
||||
'baby_bottle',
|
||||
'baby_chick',
|
||||
'baby_symbol',
|
||||
'back',
|
||||
'baggage_claim',
|
||||
'balloon',
|
||||
'ballot_box_with_check',
|
||||
'bamboo',
|
||||
'banana',
|
||||
'bangbang',
|
||||
'bank',
|
||||
'bar_chart',
|
||||
'barber',
|
||||
'baseball',
|
||||
'basketball',
|
||||
'bath',
|
||||
'bathtub',
|
||||
'battery',
|
||||
'bear',
|
||||
'bee',
|
||||
'beer',
|
||||
'beers',
|
||||
'beetle',
|
||||
'beginner',
|
||||
'bell',
|
||||
'bento',
|
||||
'bicyclist',
|
||||
'bike',
|
||||
'bikini',
|
||||
'bird',
|
||||
'birthday',
|
||||
'black_circle',
|
||||
'black_joker',
|
||||
'black_large_square',
|
||||
'black_medium_small_square',
|
||||
'black_medium_square',
|
||||
'black_nib',
|
||||
'black_small_square',
|
||||
'black_square_button',
|
||||
'blossom',
|
||||
'blowfish',
|
||||
'blue_book',
|
||||
'blue_car',
|
||||
'blue_heart',
|
||||
'blush',
|
||||
'boar',
|
||||
'boat',
|
||||
'bomb',
|
||||
'book',
|
||||
'bookmark',
|
||||
'bookmark_tabs',
|
||||
'books',
|
||||
'boom',
|
||||
'boot',
|
||||
'bouquet',
|
||||
'bow',
|
||||
'bowling',
|
||||
'bowtie',
|
||||
'boy',
|
||||
'bread',
|
||||
'bride_with_veil',
|
||||
'bridge_at_night',
|
||||
'briefcase',
|
||||
'broken_heart',
|
||||
'bug',
|
||||
'bulb',
|
||||
'bullettrain_front',
|
||||
'bullettrain_side',
|
||||
'bus',
|
||||
'busstop',
|
||||
'bust_in_silhouette',
|
||||
'busts_in_silhouette',
|
||||
'cactus',
|
||||
'cake',
|
||||
'calendar',
|
||||
'calling',
|
||||
'camel',
|
||||
'camera',
|
||||
'cancer',
|
||||
'candy',
|
||||
'capital_abcd',
|
||||
'capricorn',
|
||||
'car',
|
||||
'card_index',
|
||||
'carousel_horse',
|
||||
'cat',
|
||||
'cat2',
|
||||
'cd',
|
||||
'chart',
|
||||
'chart_with_downwards_trend',
|
||||
'chart_with_upwards_trend',
|
||||
'checkered_flag',
|
||||
'cherries',
|
||||
'cherry_blossom',
|
||||
'chestnut',
|
||||
'chicken',
|
||||
'children_crossing',
|
||||
'chocolate_bar',
|
||||
'christmas_tree',
|
||||
'church',
|
||||
'cinema',
|
||||
'circus_tent',
|
||||
'city_sunrise',
|
||||
'city_sunset',
|
||||
'cl',
|
||||
'clap',
|
||||
'clapper',
|
||||
'clipboard',
|
||||
'clock1',
|
||||
'clock10',
|
||||
'clock1030',
|
||||
'clock11',
|
||||
'clock1130',
|
||||
'clock12',
|
||||
'clock1230',
|
||||
'clock130',
|
||||
'clock2',
|
||||
'clock230',
|
||||
'clock3',
|
||||
'clock330',
|
||||
'clock4',
|
||||
'clock430',
|
||||
'clock5',
|
||||
'clock530',
|
||||
'clock6',
|
||||
'clock630',
|
||||
'clock7',
|
||||
'clock730',
|
||||
'clock8',
|
||||
'clock830',
|
||||
'clock9',
|
||||
'clock930',
|
||||
'closed_book',
|
||||
'closed_lock_with_key',
|
||||
'closed_umbrella',
|
||||
'cloud',
|
||||
'clubs',
|
||||
'cn',
|
||||
'cocktail',
|
||||
'coffee',
|
||||
'cold_sweat',
|
||||
'collision',
|
||||
'computer',
|
||||
'confetti_ball',
|
||||
'confounded',
|
||||
'confused',
|
||||
'congratulations',
|
||||
'construction',
|
||||
'construction_worker',
|
||||
'convenience_store',
|
||||
'cookie',
|
||||
'cool',
|
||||
'cop',
|
||||
'copyright',
|
||||
'corn',
|
||||
'couple',
|
||||
'couple_with_heart',
|
||||
'couplekiss',
|
||||
'cow',
|
||||
'cow2',
|
||||
'credit_card',
|
||||
'crescent_moon',
|
||||
'crocodile',
|
||||
'crossed_flags',
|
||||
'crown',
|
||||
'cry',
|
||||
'crying_cat_face',
|
||||
'crystal_ball',
|
||||
'cupid',
|
||||
'curly_loop',
|
||||
'currency_exchange',
|
||||
'curry',
|
||||
'custard',
|
||||
'customs',
|
||||
'cyclone',
|
||||
'dancer',
|
||||
'dancers',
|
||||
'dango',
|
||||
'dart',
|
||||
'dash',
|
||||
'date',
|
||||
'de',
|
||||
'deciduous_tree',
|
||||
'department_store',
|
||||
'diamond_shape_with_a_dot_inside',
|
||||
'diamonds',
|
||||
'disappointed',
|
||||
'disappointed_relieved',
|
||||
'dizzy',
|
||||
'dizzy_face',
|
||||
'do_not_litter',
|
||||
'dog',
|
||||
'dog2',
|
||||
'dollar',
|
||||
'dolls',
|
||||
'dolphin',
|
||||
'door',
|
||||
'doughnut',
|
||||
'dragon',
|
||||
'dragon_face',
|
||||
'dress',
|
||||
'dromedary_camel',
|
||||
'droplet',
|
||||
'dvd',
|
||||
'e-mail',
|
||||
'ear',
|
||||
'ear_of_rice',
|
||||
'earth_africa',
|
||||
'earth_americas',
|
||||
'earth_asia',
|
||||
'egg',
|
||||
'eggplant',
|
||||
'eight',
|
||||
'eight_pointed_black_star',
|
||||
'eight_spoked_asterisk',
|
||||
'electric_plug',
|
||||
'elephant',
|
||||
'email',
|
||||
'end',
|
||||
'envelope',
|
||||
'envelope_with_arrow',
|
||||
'es',
|
||||
'euro',
|
||||
'european_castle',
|
||||
'european_post_office',
|
||||
'evergreen_tree',
|
||||
'exclamation',
|
||||
'expressionless',
|
||||
'eyeglasses',
|
||||
'eyes',
|
||||
'facepunch',
|
||||
'factory',
|
||||
'fallen_leaf',
|
||||
'family',
|
||||
'fast_forward',
|
||||
'fax',
|
||||
'fearful',
|
||||
'feelsgood',
|
||||
'feet',
|
||||
'ferris_wheel',
|
||||
'file_folder',
|
||||
'finnadie',
|
||||
'fire',
|
||||
'fire_engine',
|
||||
'fireworks',
|
||||
'first_quarter_moon',
|
||||
'first_quarter_moon_with_face',
|
||||
'fish',
|
||||
'fish_cake',
|
||||
'fishing_pole_and_fish',
|
||||
'fist',
|
||||
'five',
|
||||
'flags',
|
||||
'flashlight',
|
||||
'flipper',
|
||||
'floppy_disk',
|
||||
'flower_playing_cards',
|
||||
'flushed',
|
||||
'foggy',
|
||||
'football',
|
||||
'footprints',
|
||||
'fork_and_knife',
|
||||
'fountain',
|
||||
'four',
|
||||
'four_leaf_clover',
|
||||
'fr',
|
||||
'free',
|
||||
'fried_shrimp',
|
||||
'fries',
|
||||
'frog',
|
||||
'frowning',
|
||||
'fu',
|
||||
'fuelpump',
|
||||
'full_moon',
|
||||
'full_moon_with_face',
|
||||
'game_die',
|
||||
'gb',
|
||||
'gem',
|
||||
'gemini',
|
||||
'ghost',
|
||||
'gift',
|
||||
'gift_heart',
|
||||
'girl',
|
||||
'globe_with_meridians',
|
||||
'goat',
|
||||
'goberserk',
|
||||
'godmode',
|
||||
'golf',
|
||||
'grapes',
|
||||
'green_apple',
|
||||
'green_book',
|
||||
'green_heart',
|
||||
'grey_exclamation',
|
||||
'grey_question',
|
||||
'grimacing',
|
||||
'grin',
|
||||
'grinning',
|
||||
'guardsman',
|
||||
'guitar',
|
||||
'gun',
|
||||
'haircut',
|
||||
'hamburger',
|
||||
'hammer',
|
||||
'hamster',
|
||||
'hand',
|
||||
'handbag',
|
||||
'hankey',
|
||||
'hash',
|
||||
'hatched_chick',
|
||||
'hatching_chick',
|
||||
'headphones',
|
||||
'hear_no_evil',
|
||||
'heart',
|
||||
'heart_decoration',
|
||||
'heart_eyes',
|
||||
'heart_eyes_cat',
|
||||
'heartbeat',
|
||||
'heartpulse',
|
||||
'hearts',
|
||||
'heavy_check_mark',
|
||||
'heavy_division_sign',
|
||||
'heavy_dollar_sign',
|
||||
'heavy_exclamation_mark',
|
||||
'heavy_minus_sign',
|
||||
'heavy_multiplication_x',
|
||||
'heavy_plus_sign',
|
||||
'helicopter',
|
||||
'herb',
|
||||
'hibiscus',
|
||||
'high_brightness',
|
||||
'high_heel',
|
||||
'hocho',
|
||||
'honey_pot',
|
||||
'honeybee',
|
||||
'horse',
|
||||
'horse_racing',
|
||||
'hospital',
|
||||
'hotel',
|
||||
'hotsprings',
|
||||
'hourglass',
|
||||
'hourglass_flowing_sand',
|
||||
'house',
|
||||
'house_with_garden',
|
||||
'hurtrealbad',
|
||||
'hushed',
|
||||
'ice_cream',
|
||||
'icecream',
|
||||
'id',
|
||||
'ideograph_advantage',
|
||||
'imp',
|
||||
'inbox_tray',
|
||||
'incoming_envelope',
|
||||
'information_desk_person',
|
||||
'information_source',
|
||||
'innocent',
|
||||
'interrobang',
|
||||
'iphone',
|
||||
'it',
|
||||
'izakaya_lantern',
|
||||
'jack_o_lantern',
|
||||
'japan',
|
||||
'japanese_castle',
|
||||
'japanese_goblin',
|
||||
'japanese_ogre',
|
||||
'jeans',
|
||||
'joy',
|
||||
'joy_cat',
|
||||
'jp',
|
||||
'key',
|
||||
'keycap_ten',
|
||||
'kimono',
|
||||
'kiss',
|
||||
'kissing',
|
||||
'kissing_cat',
|
||||
'kissing_closed_eyes',
|
||||
'kissing_heart',
|
||||
'kissing_smiling_eyes',
|
||||
'koala',
|
||||
'koko',
|
||||
'kr',
|
||||
'lantern',
|
||||
'large_blue_circle',
|
||||
'large_blue_diamond',
|
||||
'large_orange_diamond',
|
||||
'last_quarter_moon',
|
||||
'last_quarter_moon_with_face',
|
||||
'laughing',
|
||||
'leaves',
|
||||
'ledger',
|
||||
'left_luggage',
|
||||
'left_right_arrow',
|
||||
'leftwards_arrow_with_hook',
|
||||
'lemon',
|
||||
'leo',
|
||||
'leopard',
|
||||
'libra',
|
||||
'light_rail',
|
||||
'link',
|
||||
'lips',
|
||||
'lipstick',
|
||||
'lock',
|
||||
'lock_with_ink_pen',
|
||||
'lollipop',
|
||||
'loop',
|
||||
'loud_sound',
|
||||
'loudspeaker',
|
||||
'love_hotel',
|
||||
'love_letter',
|
||||
'low_brightness',
|
||||
'm',
|
||||
'mag',
|
||||
'mag_right',
|
||||
'mahjong',
|
||||
'mailbox',
|
||||
'mailbox_closed',
|
||||
'mailbox_with_mail',
|
||||
'mailbox_with_no_mail',
|
||||
'man',
|
||||
'man_with_gua_pi_mao',
|
||||
'man_with_turban',
|
||||
'mans_shoe',
|
||||
'maple_leaf',
|
||||
'mask',
|
||||
'massage',
|
||||
'meat_on_bone',
|
||||
'mega',
|
||||
'melon',
|
||||
'memo',
|
||||
'mens',
|
||||
'metal',
|
||||
'metro',
|
||||
'microphone',
|
||||
'microscope',
|
||||
'milky_way',
|
||||
'minibus',
|
||||
'minidisc',
|
||||
'mobile_phone_off',
|
||||
'money_with_wings',
|
||||
'moneybag',
|
||||
'monkey',
|
||||
'monkey_face',
|
||||
'monorail',
|
||||
'moon',
|
||||
'mortar_board',
|
||||
'mount_fuji',
|
||||
'mountain_bicyclist',
|
||||
'mountain_cableway',
|
||||
'mountain_railway',
|
||||
'mouse',
|
||||
'mouse2',
|
||||
'movie_camera',
|
||||
'moyai',
|
||||
'muscle',
|
||||
'mushroom',
|
||||
'musical_keyboard',
|
||||
'musical_note',
|
||||
'musical_score',
|
||||
'mute',
|
||||
'nail_care',
|
||||
'name_badge',
|
||||
'neckbeard',
|
||||
'necktie',
|
||||
'negative_squared_cross_mark',
|
||||
'neutral_face',
|
||||
'new',
|
||||
'new_moon',
|
||||
'new_moon_with_face',
|
||||
'newspaper',
|
||||
'ng',
|
||||
'night_with_stars',
|
||||
'nine',
|
||||
'no_bell',
|
||||
'no_bicycles',
|
||||
'no_entry',
|
||||
'no_entry_sign',
|
||||
'no_good',
|
||||
'no_mobile_phones',
|
||||
'no_mouth',
|
||||
'no_pedestrians',
|
||||
'no_smoking',
|
||||
'non-potable_water',
|
||||
'nose',
|
||||
'notebook',
|
||||
'notebook_with_decorative_cover',
|
||||
'notes',
|
||||
'nut_and_bolt',
|
||||
'o',
|
||||
'o2',
|
||||
'ocean',
|
||||
'octocat',
|
||||
'octopus',
|
||||
'oden',
|
||||
'office',
|
||||
'ok',
|
||||
'ok_hand',
|
||||
'ok_woman',
|
||||
'older_man',
|
||||
'older_woman',
|
||||
'on',
|
||||
'oncoming_automobile',
|
||||
'oncoming_bus',
|
||||
'oncoming_police_car',
|
||||
'oncoming_taxi',
|
||||
'one',
|
||||
'open_book',
|
||||
'open_file_folder',
|
||||
'open_hands',
|
||||
'open_mouth',
|
||||
'ophiuchus',
|
||||
'orange_book',
|
||||
'outbox_tray',
|
||||
'ox',
|
||||
'package',
|
||||
'page_facing_up',
|
||||
'page_with_curl',
|
||||
'pager',
|
||||
'palm_tree',
|
||||
'panda_face',
|
||||
'paperclip',
|
||||
'parking',
|
||||
'part_alternation_mark',
|
||||
'partly_sunny',
|
||||
'passport_control',
|
||||
'paw_prints',
|
||||
'peach',
|
||||
'pear',
|
||||
'pencil',
|
||||
'pencil2',
|
||||
'penguin',
|
||||
'pensive',
|
||||
'performing_arts',
|
||||
'persevere',
|
||||
'person_frowning',
|
||||
'person_with_blond_hair',
|
||||
'person_with_pouting_face',
|
||||
'phone',
|
||||
'pig',
|
||||
'pig2',
|
||||
'pig_nose',
|
||||
'pill',
|
||||
'pineapple',
|
||||
'pisces',
|
||||
'pizza',
|
||||
'point_down',
|
||||
'point_left',
|
||||
'point_right',
|
||||
'point_up',
|
||||
'point_up_2',
|
||||
'police_car',
|
||||
'poodle',
|
||||
'poop',
|
||||
'post_office',
|
||||
'postal_horn',
|
||||
'postbox',
|
||||
'potable_water',
|
||||
'pouch',
|
||||
'poultry_leg',
|
||||
'pound',
|
||||
'pouting_cat',
|
||||
'pray',
|
||||
'princess',
|
||||
'punch',
|
||||
'purple_heart',
|
||||
'purse',
|
||||
'pushpin',
|
||||
'put_litter_in_its_place',
|
||||
'question',
|
||||
'rabbit',
|
||||
'rabbit2',
|
||||
'racehorse',
|
||||
'radio',
|
||||
'radio_button',
|
||||
'rage',
|
||||
'rage1',
|
||||
'rage2',
|
||||
'rage3',
|
||||
'rage4',
|
||||
'railway_car',
|
||||
'rainbow',
|
||||
'raised_hand',
|
||||
'raised_hands',
|
||||
'raising_hand',
|
||||
'ram',
|
||||
'ramen',
|
||||
'rat',
|
||||
'recycle',
|
||||
'red_car',
|
||||
'red_circle',
|
||||
'registered',
|
||||
'relaxed',
|
||||
'relieved',
|
||||
'repeat',
|
||||
'repeat_one',
|
||||
'restroom',
|
||||
'revolving_hearts',
|
||||
'rewind',
|
||||
'ribbon',
|
||||
'rice',
|
||||
'rice_ball',
|
||||
'rice_cracker',
|
||||
'rice_scene',
|
||||
'ring',
|
||||
'rocket',
|
||||
'roller_coaster',
|
||||
'rooster',
|
||||
'rose',
|
||||
'rotating_light',
|
||||
'round_pushpin',
|
||||
'rowboat',
|
||||
'ru',
|
||||
'rugby_football',
|
||||
'runner',
|
||||
'running',
|
||||
'running_shirt_with_sash',
|
||||
'sa',
|
||||
'sagittarius',
|
||||
'sailboat',
|
||||
'sake',
|
||||
'sandal',
|
||||
'santa',
|
||||
'satellite',
|
||||
'satisfied',
|
||||
'saxophone',
|
||||
'school',
|
||||
'school_satchel',
|
||||
'scissors',
|
||||
'scorpius',
|
||||
'scream',
|
||||
'scream_cat',
|
||||
'scroll',
|
||||
'seat',
|
||||
'secret',
|
||||
'see_no_evil',
|
||||
'seedling',
|
||||
'seven',
|
||||
'shaved_ice',
|
||||
'sheep',
|
||||
'shell',
|
||||
'ship',
|
||||
'shipit',
|
||||
'shirt',
|
||||
'shit',
|
||||
'shoe',
|
||||
'shower',
|
||||
'signal_strength',
|
||||
'six',
|
||||
'six_pointed_star',
|
||||
'ski',
|
||||
'skull',
|
||||
'sleeping',
|
||||
'sleepy',
|
||||
'slot_machine',
|
||||
'small_blue_diamond',
|
||||
'small_orange_diamond',
|
||||
'small_red_triangle',
|
||||
'small_red_triangle_down',
|
||||
'smile',
|
||||
'smile_cat',
|
||||
'smiley',
|
||||
'smiley_cat',
|
||||
'smiling_imp',
|
||||
'smirk',
|
||||
'smirk_cat',
|
||||
'smoking',
|
||||
'snail',
|
||||
'snake',
|
||||
'snowboarder',
|
||||
'snowflake',
|
||||
'snowman',
|
||||
'sob',
|
||||
'soccer',
|
||||
'soon',
|
||||
'sos',
|
||||
'sound',
|
||||
'space_invader',
|
||||
'spades',
|
||||
'spaghetti',
|
||||
'sparkle',
|
||||
'sparkler',
|
||||
'sparkles',
|
||||
'sparkling_heart',
|
||||
'speak_no_evil',
|
||||
'speaker',
|
||||
'speech_balloon',
|
||||
'speedboat',
|
||||
'squirrel',
|
||||
'star',
|
||||
'star2',
|
||||
'stars',
|
||||
'station',
|
||||
'statue_of_liberty',
|
||||
'steam_locomotive',
|
||||
'stew',
|
||||
'straight_ruler',
|
||||
'strawberry',
|
||||
'stuck_out_tongue',
|
||||
'stuck_out_tongue_closed_eyes',
|
||||
'stuck_out_tongue_winking_eye',
|
||||
'sun_with_face',
|
||||
'sunflower',
|
||||
'sunglasses',
|
||||
'sunny',
|
||||
'sunrise',
|
||||
'sunrise_over_mountains',
|
||||
'surfer',
|
||||
'sushi',
|
||||
'suspect',
|
||||
'suspension_railway',
|
||||
'sweat',
|
||||
'sweat_drops',
|
||||
'sweat_smile',
|
||||
'sweet_potato',
|
||||
'swimmer',
|
||||
'symbols',
|
||||
'syringe',
|
||||
'tada',
|
||||
'tanabata_tree',
|
||||
'tangerine',
|
||||
'taurus',
|
||||
'taxi',
|
||||
'tea',
|
||||
'telephone',
|
||||
'telephone_receiver',
|
||||
'telescope',
|
||||
'tennis',
|
||||
'tent',
|
||||
'thought_balloon',
|
||||
'three',
|
||||
'thumbsdown',
|
||||
'thumbsup',
|
||||
'ticket',
|
||||
'tiger',
|
||||
'tiger2',
|
||||
'tired_face',
|
||||
'tm',
|
||||
'toilet',
|
||||
'tokyo_tower',
|
||||
'tomato',
|
||||
'tongue',
|
||||
'top',
|
||||
'tophat',
|
||||
'tractor',
|
||||
'traffic_light',
|
||||
'train',
|
||||
'train2',
|
||||
'tram',
|
||||
'triangular_flag_on_post',
|
||||
'triangular_ruler',
|
||||
'trident',
|
||||
'triumph',
|
||||
'trolleybus',
|
||||
'trollface',
|
||||
'trophy',
|
||||
'tropical_drink',
|
||||
'tropical_fish',
|
||||
'truck',
|
||||
'trumpet',
|
||||
'tshirt',
|
||||
'tulip',
|
||||
'turtle',
|
||||
'tv',
|
||||
'twisted_rightwards_arrows',
|
||||
'two',
|
||||
'two_hearts',
|
||||
'two_men_holding_hands',
|
||||
'two_women_holding_hands',
|
||||
'u5272',
|
||||
'u5408',
|
||||
'u55b6',
|
||||
'u6307',
|
||||
'u6708',
|
||||
'u6709',
|
||||
'u6e80',
|
||||
'u7121',
|
||||
'u7533',
|
||||
'u7981',
|
||||
'u7a7a',
|
||||
'uk',
|
||||
'umbrella',
|
||||
'unamused',
|
||||
'underage',
|
||||
'unlock',
|
||||
'up',
|
||||
'us',
|
||||
'v',
|
||||
'vertical_traffic_light',
|
||||
'vhs',
|
||||
'vibration_mode',
|
||||
'video_camera',
|
||||
'video_game',
|
||||
'violin',
|
||||
'virgo',
|
||||
'volcano',
|
||||
'vs',
|
||||
'walking',
|
||||
'waning_crescent_moon',
|
||||
'waning_gibbous_moon',
|
||||
'warning',
|
||||
'watch',
|
||||
'water_buffalo',
|
||||
'watermelon',
|
||||
'wave',
|
||||
'wavy_dash',
|
||||
'waxing_crescent_moon',
|
||||
'waxing_gibbous_moon',
|
||||
'wc',
|
||||
'weary',
|
||||
'wedding',
|
||||
'whale',
|
||||
'whale2',
|
||||
'wheelchair',
|
||||
'white_check_mark',
|
||||
'white_circle',
|
||||
'white_flower',
|
||||
'white_large_square',
|
||||
'white_medium_small_square',
|
||||
'white_medium_square',
|
||||
'white_small_square',
|
||||
'white_square_button',
|
||||
'wind_chime',
|
||||
'wine_glass',
|
||||
'wink',
|
||||
'wolf',
|
||||
'woman',
|
||||
'womans_clothes',
|
||||
'womans_hat',
|
||||
'womens',
|
||||
'worried',
|
||||
'wrench',
|
||||
'x',
|
||||
'yellow_heart',
|
||||
'yen',
|
||||
'yum',
|
||||
'zap',
|
||||
'zero',
|
||||
'zzz'
|
||||
]
|
||||
import AllGithubEmoji from './emoji-aliases.js'
|
||||
|
||||
// Emoji from All-Github-Emoji-Icons
|
||||
// https://github.com/scotch-io/All-Github-Emoji-Icons
|
||||
window.emojify = function (match, $1) {
|
||||
return AllGithubEmoji.indexOf($1) === -1 ?
|
||||
match :
|
||||
|
||||
+4
-10
@@ -7,16 +7,10 @@ function install(hook) {
|
||||
const main = dom.getNode('#main')
|
||||
div.style = `width: ${main.clientWidth}px; margin: 0 auto 20px;`
|
||||
dom.appendTo(dom.find('.content'), div)
|
||||
})
|
||||
|
||||
hook.doneEach(_ => {
|
||||
const el = document.getElementById('gitalk-container')
|
||||
while (el.hasChildNodes()) {
|
||||
el.removeChild(el.firstChild)
|
||||
}
|
||||
|
||||
// eslint-disable-next-line
|
||||
gitalk.render('gitalk-container')
|
||||
const script = dom.create('script')
|
||||
const content = `gitalk.render('gitalk-container')`
|
||||
script.textContent = content
|
||||
dom.appendTo(dom.body, script)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
function appendScript(options) {
|
||||
const script = document.createElement('script')
|
||||
script.async = true
|
||||
script.src = options.host + '/matomo.js'
|
||||
document.body.appendChild(script)
|
||||
}
|
||||
|
||||
function init(options) {
|
||||
window._paq = window._paq || []
|
||||
window._paq.push(['trackPageView'])
|
||||
window._paq.push(['enableLinkTracking'])
|
||||
setTimeout(function() {
|
||||
appendScript(options)
|
||||
window._paq.push(['setTrackerUrl', options.host + '/matomo.php'])
|
||||
window._paq.push(['setSiteId', options.id + ''])
|
||||
}, 0)
|
||||
}
|
||||
|
||||
function collect() {
|
||||
if (!window._paq) {
|
||||
init($docsify.matomo)
|
||||
}
|
||||
window._paq.push(['setCustomUrl', window.location.hash.substr(1)])
|
||||
window._paq.push(['setDocumentTitle', document.title])
|
||||
window._paq.push(['trackPageView'])
|
||||
}
|
||||
|
||||
const install = function (hook) {
|
||||
if (!$docsify.matomo) {
|
||||
console.error('[Docsify] matomo is required.')
|
||||
return
|
||||
}
|
||||
|
||||
hook.beforeEach(collect)
|
||||
}
|
||||
|
||||
$docsify.plugins = [].concat(install, $docsify.plugins)
|
||||
@@ -323,9 +323,6 @@ body.sticky
|
||||
|
||||
.markdown-section iframe
|
||||
border 1px solid #eee
|
||||
/* fix horizontal overflow on iOS Safari */
|
||||
width 1px
|
||||
min-width 100%
|
||||
|
||||
.markdown-section table
|
||||
border-collapse collapse
|
||||
|
||||
+45
-58
@@ -1,10 +1,45 @@
|
||||
// load ES6 modules in Node.js on the fly
|
||||
require = require('esm')(module/*, options*/)
|
||||
|
||||
const path = require('path')
|
||||
const {expect} = require('chai')
|
||||
|
||||
const {JSDOM} = require('jsdom')
|
||||
const XMLHttpRequest = require('xhr2') // JSDOM doesn't support XMLHttpRequest
|
||||
// TODO: try to fix tests when using `<div id="app"></div>` in body
|
||||
const markup = `<!DOCTYPE html>
|
||||
<html>
|
||||
<head></head>
|
||||
<body></body>
|
||||
</html>`
|
||||
// TODO: this may not work if tests are mutate the DOM, instead a new instance needs to be created
|
||||
// for every test case but that will slow down the tests
|
||||
const dom = new JSDOM(markup)
|
||||
|
||||
global.window = dom.window
|
||||
global.document = dom.window.document
|
||||
global.navigator = dom.window.navigator
|
||||
global.location = dom.window.location
|
||||
global.XMLHttpRequest = XMLHttpRequest
|
||||
|
||||
const {initMixin} = require('../src/core/init')
|
||||
const {routerMixin} = require('../src/core//router')
|
||||
const {renderMixin} = require('../src/core//render')
|
||||
const {fetchMixin} = require('../src/core/fetch')
|
||||
const {eventMixin} = require('../src/core//event')
|
||||
|
||||
// mimic src/core/index.js but for Node.js
|
||||
|
||||
function Docsify() {
|
||||
this._init()
|
||||
}
|
||||
|
||||
const proto = Docsify.prototype
|
||||
|
||||
initMixin(proto)
|
||||
routerMixin(proto)
|
||||
renderMixin(proto)
|
||||
fetchMixin(proto)
|
||||
eventMixin(proto)
|
||||
|
||||
function ready(callback) {
|
||||
const state = document.readyState
|
||||
@@ -15,64 +50,16 @@ function ready(callback) {
|
||||
|
||||
document.addEventListener('DOMContentLoaded', callback)
|
||||
}
|
||||
module.exports.init = function(fixture = 'default', config = {}, markup) {
|
||||
if (markup == null) {
|
||||
markup = `<!DOCTYPE html>
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script>
|
||||
window.$docsify = ${JSON.stringify(config, null, 2)}
|
||||
</script>
|
||||
</body>
|
||||
</html>`
|
||||
}
|
||||
const rootPath = path.join(__dirname, 'fixtures', fixture)
|
||||
|
||||
const dom = new JSDOM(markup)
|
||||
dom.reconfigure({ url: 'file:///' + rootPath })
|
||||
|
||||
global.window = dom.window
|
||||
global.document = dom.window.document
|
||||
global.navigator = dom.window.navigator
|
||||
global.location = dom.window.location
|
||||
global.XMLHttpRequest = dom.window.XMLHttpRequest
|
||||
|
||||
// mimic src/core/index.js but for Node.js
|
||||
function Docsify() {
|
||||
this._init()
|
||||
}
|
||||
|
||||
const proto = Docsify.prototype
|
||||
|
||||
const {initMixin} = require('../src/core/init')
|
||||
const {routerMixin} = require('../src/core//router')
|
||||
const {renderMixin} = require('../src/core//render')
|
||||
const {fetchMixin} = require('../src/core/fetch')
|
||||
const {eventMixin} = require('../src/core//event')
|
||||
|
||||
initMixin(proto)
|
||||
routerMixin(proto)
|
||||
renderMixin(proto)
|
||||
fetchMixin(proto)
|
||||
eventMixin(proto)
|
||||
|
||||
const NOT_INIT_PATTERN = '<!--main-->'
|
||||
|
||||
let docsify = null
|
||||
module.exports.init = function(callback) {
|
||||
return new Promise((resolve, reject) => {
|
||||
ready(() => {
|
||||
const docsify = new Docsify()
|
||||
// NOTE: I was not able to get it working with a callback, but polling works usually at the first time
|
||||
const id = setInterval(() => {
|
||||
if (dom.window.document.body.innerHTML.indexOf(NOT_INIT_PATTERN) == -1) {
|
||||
clearInterval(id)
|
||||
return resolve({
|
||||
docsify: docsify,
|
||||
dom: dom
|
||||
})
|
||||
}
|
||||
}, 10)
|
||||
// return cached version / TODO: see above: this might not scale, new instance of JSDOM is reqiured
|
||||
if (docsify != null) {
|
||||
return resolve(docsify)
|
||||
}
|
||||
ready(_ => {
|
||||
docsify = new Docsify()
|
||||
return resolve(docsify)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
Vendored
-6
@@ -1,6 +0,0 @@
|
||||
<!--
|
||||
|
||||
create your own fixture directory
|
||||
if you need a custom README.md or sidebar
|
||||
|
||||
-->
|
||||
Vendored
-18
@@ -1,18 +0,0 @@
|
||||
# Heading
|
||||
|
||||
[another page](other.md)
|
||||
|
||||
## II 1
|
||||
|
||||
### III 1
|
||||
|
||||
#### IV 1
|
||||
|
||||
##### V 1
|
||||
|
||||
|
||||
## II 2
|
||||
|
||||
### III 2
|
||||
|
||||
#### IV 2
|
||||
Vendored
-16
@@ -1,16 +0,0 @@
|
||||
# Other
|
||||
|
||||
## two 1
|
||||
|
||||
### three 1
|
||||
|
||||
#### four 1
|
||||
|
||||
##### five 1
|
||||
|
||||
|
||||
## two 2
|
||||
|
||||
### three 2
|
||||
|
||||
#### four 2
|
||||
@@ -1,14 +0,0 @@
|
||||
const path = require('path')
|
||||
|
||||
const {expect} = require('chai')
|
||||
|
||||
const {init, expectSameDom} = require('../_helper')
|
||||
|
||||
describe('full docsify initialization', function() {
|
||||
it('TODO: check generated markup', async function() {
|
||||
const {docsify, dom} = await init('simple', {loadSidebar: true})
|
||||
console.log(dom.window.document.body.innerHTML)
|
||||
// TODO: add some expectations
|
||||
})
|
||||
|
||||
})
|
||||
@@ -1,14 +0,0 @@
|
||||
const path = require('path')
|
||||
|
||||
const {expect} = require('chai')
|
||||
|
||||
const {init, expectSameDom} = require('../_helper')
|
||||
|
||||
describe('router', function() {
|
||||
it('TODO: trigger to load another page', async function() {
|
||||
const {docsify} = await init()
|
||||
window.location = '/?foo=bar'
|
||||
// TODO: add some expectations
|
||||
})
|
||||
|
||||
})
|
||||
@@ -2,18 +2,18 @@ const path = require('path')
|
||||
|
||||
const {expect} = require('chai')
|
||||
|
||||
const {init, expectSameDom} = require('../_helper')
|
||||
const {init, expectSameDom} = require('./_helper')
|
||||
|
||||
describe('render', function() {
|
||||
it('important content (tips)', async function() {
|
||||
const {docsify, dom} = await init()
|
||||
docsify = await init()
|
||||
const output = docsify.compiler.compile('!> **Time** is money, my friend!')
|
||||
expect(output).equal('<p class="tip"><strong>Time</strong> is money, my friend!</p>')
|
||||
})
|
||||
|
||||
describe('lists', function() {
|
||||
it('as unordered task list', async function() {
|
||||
const {docsify, dom} = await init()
|
||||
docsify = await init()
|
||||
const output = docsify.compiler.compile(`
|
||||
- [x] Task 1
|
||||
- [ ] Task 2
|
||||
@@ -26,7 +26,7 @@ describe('render', function() {
|
||||
})
|
||||
|
||||
it('as ordered task list', async function() {
|
||||
const {docsify, dom} = await init()
|
||||
docsify = await init()
|
||||
const output = docsify.compiler.compile(`
|
||||
1. [ ] Task 1
|
||||
2. [x] Task 2`)
|
||||
@@ -37,7 +37,7 @@ describe('render', function() {
|
||||
})
|
||||
|
||||
it('normal unordered', async function() {
|
||||
const {docsify, dom} = await init()
|
||||
docsify = await init()
|
||||
const output = docsify.compiler.compile(`
|
||||
- [linktext](link)
|
||||
- just text`)
|
||||
@@ -48,7 +48,7 @@ describe('render', function() {
|
||||
})
|
||||
|
||||
it('unordered with custom start', async function() {
|
||||
const {docsify, dom} = await init()
|
||||
docsify = await init()
|
||||
const output = docsify.compiler.compile(`
|
||||
1. first
|
||||
2. second
|
||||
@@ -67,7 +67,7 @@ text
|
||||
})
|
||||
|
||||
it('nested', async function() {
|
||||
const {docsify, dom} = await init()
|
||||
docsify = await init()
|
||||
const output = docsify.compiler.compile(`
|
||||
- 1
|
||||
- 2
|
||||
@@ -1,62 +0,0 @@
|
||||
/* eslint-env node, chai, mocha */
|
||||
require = require('esm')(module/*, options*/)
|
||||
const {expect} = require('chai')
|
||||
const {History} = require('../../src/core/router/history/base')
|
||||
|
||||
class MockHistory extends History {
|
||||
parse(path) {
|
||||
return {path}
|
||||
}
|
||||
}
|
||||
|
||||
describe('router/history/base', function () {
|
||||
describe('relativePath true', function () {
|
||||
var history
|
||||
|
||||
beforeEach(function () {
|
||||
history = new MockHistory({relativePath: true})
|
||||
})
|
||||
|
||||
it('toURL', function () {
|
||||
// WHEN
|
||||
const url = history.toURL('guide.md', {}, '/zh-ch/')
|
||||
|
||||
// THEN
|
||||
expect(url).equal('/zh-ch/guide')
|
||||
})
|
||||
|
||||
it('toURL with double dot', function () {
|
||||
// WHEN
|
||||
const url = history.toURL('../README.md', {}, '/zh-ch/')
|
||||
|
||||
// THEN
|
||||
expect(url).equal('/README')
|
||||
})
|
||||
|
||||
it('toURL child path', function () {
|
||||
// WHEN
|
||||
const url = history.toURL('config/example.md', {}, '/zh-ch/')
|
||||
|
||||
// THEN
|
||||
expect(url).equal('/zh-ch/config/example')
|
||||
})
|
||||
|
||||
it('toURL absolute path', function () {
|
||||
// WHEN
|
||||
const url = history.toURL('/README', {}, '/zh-ch/')
|
||||
|
||||
// THEN
|
||||
expect(url).equal('/README')
|
||||
})
|
||||
})
|
||||
|
||||
it('toURL without relative path', function () {
|
||||
const history = new MockHistory({relativePath: false})
|
||||
|
||||
// WHEN
|
||||
const url = history.toURL('README', {}, '/zh-ch/')
|
||||
|
||||
// THEN
|
||||
expect(url).equal('/README')
|
||||
})
|
||||
})
|
||||
@@ -1,30 +0,0 @@
|
||||
/* eslint-env node, chai, mocha */
|
||||
require = require('esm')(module/*, options*/)
|
||||
const {expect} = require('chai')
|
||||
const {resolvePath} = require('../../src/core/router/util')
|
||||
|
||||
describe('router/util', function () {
|
||||
it('resolvePath', async function () {
|
||||
// WHEN
|
||||
const result = resolvePath('hello.md')
|
||||
|
||||
// THEN
|
||||
expect(result).equal('/hello.md')
|
||||
})
|
||||
|
||||
it('resolvePath with dot', async function () {
|
||||
// WHEN
|
||||
const result = resolvePath('./hello.md')
|
||||
|
||||
// THEN
|
||||
expect(result).equal('/hello.md')
|
||||
})
|
||||
|
||||
it('resolvePath with two dots', async function () {
|
||||
// WHEN
|
||||
const result = resolvePath('test/../hello.md')
|
||||
|
||||
// THEN
|
||||
expect(result).equal('/hello.md')
|
||||
})
|
||||
})
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
Reference in New Issue
Block a user