+
文章发布于 {{ postTime }},在 {{ postType }} 分类下。{{#if isBlogAdmin}} + 编辑此页。 + {{/if}}
+From 8b9801cb922000f8e265ba89f44da915a258e2c8 Mon Sep 17 00:00:00 2001 From: tiger2005 <41613797+tiger2005@users.noreply.github.com> Date: Thu, 2 Mar 2023 23:11:05 +0800 Subject: [PATCH] Add new theme: OI Press --- src/templates/oipress/article.js | 292 +++++++++++++++ src/templates/oipress/article_list.js | 18 + src/templates/oipress/common.js | 1 + src/templates/oipress/components/loader.vue | 43 +++ .../oipress/components/pagination.vue | 61 +++ src/templates/oipress/example-config.json | 1 + .../oipress/handlebars/article/content.hbs | 32 ++ .../oipress/handlebars/article/scripts.hbs | 8 + .../oipress/handlebars/article/styles.hbs | 1 + .../handlebars/article_list/content.hbs | 11 + .../handlebars/article_list/scripts.hbs | 1 + .../handlebars/article_list/styles.hbs | 1 + src/templates/oipress/handlebars/template.hbs | 54 +++ src/templates/oipress/layouts/admonition.vue | 147 ++++++++ .../oipress/layouts/article_comments.vue | 122 ++++++ .../oipress/layouts/article_list.vue | 152 ++++++++ .../oipress/layouts/article_list_nav.vue | 162 ++++++++ src/templates/oipress/layouts/article_nav.vue | 162 ++++++++ .../oipress/layouts/article_vote.vue | 35 ++ src/templates/oipress/layouts/toc.vue | 154 ++++++++ src/templates/oipress/styles/article.css | 264 +++++++++++++ src/templates/oipress/styles/article_list.css | 1 + src/templates/oipress/styles/github.css | 11 + src/templates/oipress/styles/github_dark.css | 11 + src/templates/oipress/styles/style.css | 349 ++++++++++++++++++ 25 files changed, 2094 insertions(+) create mode 100644 src/templates/oipress/article.js create mode 100644 src/templates/oipress/article_list.js create mode 100644 src/templates/oipress/common.js create mode 100644 src/templates/oipress/components/loader.vue create mode 100644 src/templates/oipress/components/pagination.vue create mode 100644 src/templates/oipress/example-config.json create mode 100644 src/templates/oipress/handlebars/article/content.hbs create mode 100644 src/templates/oipress/handlebars/article/scripts.hbs create mode 100644 src/templates/oipress/handlebars/article/styles.hbs create mode 100644 src/templates/oipress/handlebars/article_list/content.hbs create mode 100644 src/templates/oipress/handlebars/article_list/scripts.hbs create mode 100644 src/templates/oipress/handlebars/article_list/styles.hbs create mode 100644 src/templates/oipress/handlebars/template.hbs create mode 100644 src/templates/oipress/layouts/admonition.vue create mode 100644 src/templates/oipress/layouts/article_comments.vue create mode 100644 src/templates/oipress/layouts/article_list.vue create mode 100644 src/templates/oipress/layouts/article_list_nav.vue create mode 100644 src/templates/oipress/layouts/article_nav.vue create mode 100644 src/templates/oipress/layouts/article_vote.vue create mode 100644 src/templates/oipress/layouts/toc.vue create mode 100644 src/templates/oipress/styles/article.css create mode 100644 src/templates/oipress/styles/article_list.css create mode 100644 src/templates/oipress/styles/github.css create mode 100644 src/templates/oipress/styles/github_dark.css create mode 100644 src/templates/oipress/styles/style.css diff --git a/src/templates/oipress/article.js b/src/templates/oipress/article.js new file mode 100644 index 0000000..3610d8b --- /dev/null +++ b/src/templates/oipress/article.js @@ -0,0 +1,292 @@ +import Vue from 'vue' +import './common' +import { + initKatex, + initHighlight +} from 'scripts/article' +import ArticleVote from './layouts/article_vote.vue' +import ArticleComments from './layouts/article_comments.vue' +import $ from 'jquery' +import ArticleNav from './layouts/article_nav.vue' +import TOC from './layouts/toc.vue' +import Admonition from './layouts/admonition.vue' +import './styles/github.css' +import './styles/github_dark.css' +import './styles/article.css' + +BlogGlobals.luoguAddress = 'https://www.luogu.com.cn' +BlogGlobals.picAddress = 'https://cdn.luogu.com.cn' + +window.navBar = new Vue({ + el: '#nav-bar', + render: h => h(ArticleNav) +}) + +async function initHljs () { + // Function + $('pre code').each((_, block) => { + const classes = $(block)[0].className.split(' ') + let isHljs = false + for (let i = 0; i < classes.length; i++) { + const name = classes[i] + if (name === 'hljs') { + isHljs = true + } + const matchLang = name.match(/^language-(\w+)(\{[\d\-,]+\})?(\*?)$/) + if (!matchLang) { + continue + } + isHljs = true + classes[i] = 'language-' + matchLang[1] + if (matchLang[2] !== undefined) { + const res = matchLang[2].match(/\d+-\d+|\d+/g) + for (let i = 0; i < res.length; i++) { + const ps = res[i].split('-') + if (ps.length === 1) { + ps.push(ps[0]) + } + res[i] = ps + // add highlights here + } + $(block).parent().attr('line-highlights', JSON.stringify(res)) + } + if (matchLang[3] === '*') { + $(block).parent().attr('line-numbers', true) + } + } + if (isHljs) { + $(block).parent().attr('is-hljs', true) + } + $(block).attr('class', classes.join(' ')) + }) + await initHighlight() + $('pre').each((_, block) => { + if ($(block).attr('is-hljs') === undefined) { + return + } + const code = $(block).find('code') + const u = $('
') + $(block).append(u) + u.append(code) + const len = code.text().split('').reduce((prev, curr) => prev + (curr === '\n'), 0) + 1 + if ($(block).attr('line-numbers') !== undefined) { + u.prepend('文章发布于 {{ postTime }},在 {{ postType }} 分类下。{{#if isBlogAdmin}} + 编辑此页。 + {{/if}}
+{{ post.contentDescription }}
+