You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.8 KiB
61 lines
1.8 KiB
3 years ago
|
//default values
|
||
|
var defaultOptions = {
|
||
|
countable: true,
|
||
|
position: "top",
|
||
|
margin: "10px",
|
||
|
float: "right",
|
||
|
fontsize: "0.9em",
|
||
|
color: "rgb(90,90,90)",
|
||
|
language: "english",
|
||
|
isExpected: true,
|
||
|
}
|
||
|
|
||
|
// Docsify plugin functions
|
||
|
function plugin(hook, vm) {
|
||
|
if (!defaultOptions.countable) {
|
||
|
return
|
||
|
}
|
||
|
let wordsCount
|
||
|
hook.beforeEach(function (content) {
|
||
|
// Match regex every time you start parsing .md
|
||
|
wordsCount = content.match(/([\u4e00-\u9fa5]+?|[a-zA-Z0-9]+)/g).length
|
||
|
return content
|
||
|
})
|
||
|
hook.afterEach(function (html, next) {
|
||
|
let str = wordsCount + " words"
|
||
|
let readTime = Math.ceil(wordsCount / 400) + " min"
|
||
|
//Determine whether to use the Chinese style according to the attribute "language"
|
||
|
if (defaultOptions.language === "chinese") {
|
||
|
str = wordsCount + " 字"
|
||
|
readTime = Math.ceil(wordsCount / 400) + " 分钟"
|
||
|
}
|
||
|
|
||
|
//add html string
|
||
|
next(
|
||
|
`
|
||
|
${defaultOptions.position === "bottom" ? html : ""}
|
||
|
<div style="margin-${defaultOptions.position ? "bottom" : "top"}: ${
|
||
|
defaultOptions.margin
|
||
|
};">
|
||
|
<span style="
|
||
|
float: ${defaultOptions.float === "right" ? "right" : "left"};
|
||
|
font-size: ${defaultOptions.fontsize};
|
||
|
color:${defaultOptions.color};">
|
||
|
${str}
|
||
|
${defaultOptions.isExpected ? ` | ${readTime}` : ""}
|
||
|
</span>
|
||
|
<div style="clear: both"></div>
|
||
|
</div>
|
||
|
${defaultOptions.position !== "bottom" ? html : ""}
|
||
|
`
|
||
|
)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// Docsify plugin options
|
||
|
window.$docsify["count"] = Object.assign(
|
||
|
defaultOptions,
|
||
|
window.$docsify["count"]
|
||
|
)
|
||
|
window.$docsify.plugins = [].concat(plugin, window.$docsify.plugins)
|