123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- //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)
|