From 5824548b4002ab50b1402c6046676b176f7c66a6 Mon Sep 17 00:00:00 2001 From: Eyre_S Date: Mon, 27 Mar 2023 19:13:09 +0800 Subject: [PATCH] change code highlight to Prismjs --- ...read-card-markdown-compat-highlight-js.css | 18 ------------- assets/bread-card-markdown.css | 20 +++++++++++++- src/Data/PageMeta.php | 26 +++---------------- src/Data/SiteConfig/ConfigName.php | 5 ++-- src/Data/SiteMeta.php | 22 +++++----------- template/footer.php | 8 +++--- 6 files changed, 35 insertions(+), 64 deletions(-) delete mode 100644 assets/bread-card-markdown-compat-highlight-js.css diff --git a/assets/bread-card-markdown-compat-highlight-js.css b/assets/bread-card-markdown-compat-highlight-js.css deleted file mode 100644 index 9c61062..0000000 --- a/assets/bread-card-markdown-compat-highlight-js.css +++ /dev/null @@ -1,18 +0,0 @@ -/****************************************************************************** - ############################################################################## - ##### ##### - ##### Markdown StyleSheet of ui design BreadCard ##### - ##### compatibility layer ##### - ##### for highlight.js ##### - ##### ##### - ##### @author: Sukazyo Workshop ##### - ##### @version: 1.0 ##### - ##### ##### - ############################################################################## - ******************************************************************************/ - -.hljs, -code.hljs, -pre code.hljs { - padding: 0.2rem 1.2rem 0.6rem; -} diff --git a/assets/bread-card-markdown.css b/assets/bread-card-markdown.css index 0ac011e..82066ab 100644 --- a/assets/bread-card-markdown.css +++ b/assets/bread-card-markdown.css @@ -223,6 +223,13 @@ code { font-size: 0.85rem; } +:not(pre)>code[class*=language-] { + padding: 0.2rem; + border-radius: 0.3rem; + background: var(--bcm-color-code-inline-background); + font-size: 0.85rem; +} + pre { margin-left: 1.4rem; margin-right: 1.4rem; @@ -235,13 +242,24 @@ pre { font-size: 14px; } +pre[class*=language-] { + margin-left: 1.4rem; + margin-right: 1.4rem; + padding: 0.7rem 0; + font-size: 14px; +} + pre code { display: block; background: var(--bcm-color-codeblock-background); overflow-x: scroll; padding: 0.2rem 1.2rem 0.6rem; line-height: 1.4; - font-size: inherit; + font-size: 14px; +} + +pre[class*=language-] code[class*=language-] { + font-size: 14px; } pre code::-webkit-scrollbar { diff --git a/src/Data/PageMeta.php b/src/Data/PageMeta.php index a311b7b..de81d2e 100644 --- a/src/Data/PageMeta.php +++ b/src/Data/PageMeta.php @@ -88,32 +88,12 @@ class PageMeta { return $value; } - public static function highlightJsTheme (): string { - $theme = trim(self::getConfigurationLevelPage(ConfigName::highlightjs_theme)); - if (empty($theme)) return "atom-one-dark"; + public static function prismTheme (): string { + $theme = trim(self::getConfigurationLevelPage(ConfigName::prism_theme)); + if (empty($theme)) return "prism-material-light"; return $theme; } - /** - * @return string[] - */ - public static function highlightJsLanguages (): array { - $langDef = ""; - { - $langDefList = array(); - $langDefList[] = SiteMeta::getConfigurationLevelShelf(ConfigName::highlightjs_lang); - $langDefList[] = PageMeta::getConfigurationLevelBook(ConfigName::highlightjs_lang); - $langDefList[] = PageMeta::getConfigurationLevelPage(ConfigName::highlightjs_lang); - foreach ($langDefList as $langDefNode) $langDef .= $langDefNode . ";"; - } - $lang = array(); - foreach (explode(";", $langDef) as $i) { - $i = trim($i); - if ($i != "") $lang[] =$i; - } - return array_unique($lang); - } - public static function getPagePath (?string $extension = null): string { return "./data/" . self::$bookId . "/" . self::$page_id . ($extension == null ? "" : ".".$extension); } diff --git a/src/Data/SiteConfig/ConfigName.php b/src/Data/SiteConfig/ConfigName.php index d1b6354..ef30eb7 100644 --- a/src/Data/SiteConfig/ConfigName.php +++ b/src/Data/SiteConfig/ConfigName.php @@ -6,9 +6,8 @@ class ConfigName { public const robots_txt = "site.robots"; - public const highlightjs = "highlightjs"; - public const highlightjs_theme = "highlightjs.theme"; - public const highlightjs_lang = "highlightjs.languages"; + public const prism = "prism"; + public const prism_theme = "prism.theme"; public const codeblock_bg = "codeblock.bg-color"; public const codeblock_fg = "codeblock.fg-color"; diff --git a/src/Data/SiteMeta.php b/src/Data/SiteMeta.php index d598844..3fcdf0e 100644 --- a/src/Data/SiteMeta.php +++ b/src/Data/SiteMeta.php @@ -40,8 +40,8 @@ class SiteMeta { // "/assets/gitbook/gitbook-plugin-fontsettings/website.css", // "/assets/gitbook-fix.css", // "/assets/ref.css", - (PageMeta::getConfigurationLevelPage(ConfigName::highlightjs)=="false"? - null:"//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/".PageMeta::highlightJsTheme().".min.css"), + (PageMeta::getConfigurationLevelPage(ConfigName::prism)=="false"? + null:"https://cdn.jsdelivr.net/gh/PrismJS/prism-themes@master/themes/".PageMeta::prismTheme().".min.css"), (PageMeta::getConfigurationLevelPage(ConfigName::regex_highlight)=="false")? null:"//cdn.jsdelivr.net/gh/suk-ws/regex-colorizer@master/regex-colorizer-default.min.css", "/assets/bread-card-markdown.css?ver=2", @@ -50,7 +50,6 @@ class SiteMeta { "/assets/bread-card-markdown-heading-permalink.css?ver=1", (PageMeta::getConfigurationLevelPage(ConfigName::ext_listing_rainbow)=="true"? "/assets/bread-card-markdown-enhanced-listing-rainbow.css?ver=1":null), - "/assets/bread-card-markdown-compat-highlight-js.css?ver=2", "/assets/main.css?ver=1", ); } @@ -61,8 +60,10 @@ class SiteMeta { // "/assets/gitbook-fix.js", // "https://cdn.jsdelivr.net/npm/marked/marked.min.js", // "/assets/ref.js", - (PageMeta::getConfigurationLevelPage(ConfigName::highlightjs)=="false"? - null:"//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"), + (PageMeta::getConfigurationLevelPage(ConfigName::prism)=="false"? + null:"//cdn.jsdelivr.net/npm/prismjs@v1.x/components/prism-core.min.js"), + (PageMeta::getConfigurationLevelPage(ConfigName::prism)=="false"? + null:"//cdn.jsdelivr.net/npm/prismjs@v1.x/plugins/autoloader/prism-autoloader.min.js"), (PageMeta::getConfigurationLevelPage(ConfigName::regex_highlight)=="false"? null:"//cdn.jsdelivr.net/gh/suk-ws/regex-colorizer@master/regex-colorizer.min.js"), (PageMeta::getConfigurationLevelPage(ConfigName::ext_rolling_title)=="true"? @@ -71,8 +72,7 @@ class SiteMeta { "/assets/bread-card-markdown-heading-permalink-highlight.js?ver=1":null), "/assets/utils-touchscreen-event.js?ver=1", "/assets/main.js?ver=1", - ), - self::getHighlightLanguagesJs(PageMeta::highlightJsLanguages()) + ) ); } @@ -106,12 +106,4 @@ class SiteMeta { }; } - public static function getHighlightLanguagesJs (array $languages): array { - $links = array(); - foreach ($languages as $lang) { - $links[] = "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/languages/$lang.min.js"; - } - return $links; - } - } diff --git a/template/footer.php b/template/footer.php index 7e6913d..50325fe 100644 --- a/template/footer.php +++ b/template/footer.php @@ -14,10 +14,10 @@