Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add highlight.js as an option #180

Merged
merged 4 commits into from
Mar 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
24 changes: 24 additions & 0 deletions assets/js/highlight.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import hljs from 'highlight.js/lib/core';

import javascript from 'highlight.js/lib/languages/javascript';
import json from 'highlight.js/lib/languages/json';
import bash from 'highlight.js/lib/languages/bash';
import htmlbars from 'highlight.js/lib/languages/htmlbars';
import ini from 'highlight.js/lib/languages/ini';
import yaml from 'highlight.js/lib/languages/yaml';
import markdown from 'highlight.js/lib/languages/markdown';

hljs.registerLanguage('javascript', javascript);
hljs.registerLanguage('json', json);
hljs.registerLanguage('bash', bash);
hljs.registerLanguage('html', htmlbars);
hljs.registerLanguage('ini', ini);
hljs.registerLanguage('toml', ini);
hljs.registerLanguage('yaml', yaml);
hljs.registerLanguage('md', markdown);

document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('pre code').forEach((block) => {
hljs.highlightBlock(block);
});
});
8 changes: 6 additions & 2 deletions assets/scss/app.scss
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,18 @@
/** Import Bootstrap */
@import "bootstrap/scss/bootstrap";

/** Import highlight.js */
// @import "highlight.js/scss/dracula";

/** Import theme styles */
@import "common/fonts";
@import "common/global";
@import "common/dark";
@import "components/doks";
// @import "components/syntax";
@import "components/code";
@import "components/alerts";
@import "components/buttons";
@import "components/code";
// @import "components/syntax";
@import "components/comments";
@import "components/forms";
@import "components/images";
Expand Down
17 changes: 11 additions & 6 deletions assets/scss/common/_dark.scss
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,16 @@ body.dark .btn-primary {
color: $body-bg-dark !important;
}

body.dark .btn-outline-primary {
@include button-outline-variant($button-color-dark, $button-color-dark);

color: $link-color-dark;
}

body.dark .btn-outline-primary:hover {
color: $body-bg-dark;
}

body.dark .navbar {
background: $body-bg-dark;
opacity: 0.975;
Expand Down Expand Up @@ -178,12 +188,7 @@ body.dark ::selection {
background: $selection-color-dark;
}

body.dark pre {
background: $body-overlay-dark;
color: $body-color-dark;
}

body.dark code {
body.dark code:not(.hljs) {
background: $body-overlay-dark;
color: $body-color-dark;
}
Expand Down
12 changes: 11 additions & 1 deletion assets/scss/components/_buttons.scss
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,19 @@ body.dark .toggle-dark {
}

@include media-breakpoint-up(md) {
.doks-clipboard {
position: relative;
float: right;
}

.btn-clipboard {
position: absolute;
top: 1rem;
right: 0.25rem;
z-index: 10;
display: block;
margin: 2.0625rem 0.25rem -4rem auto;
padding: 0.25rem 0.5rem;
font-size: $font-size-sm;
}
}

Expand Down
34 changes: 17 additions & 17 deletions assets/scss/components/_code.scss
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,37 @@ samp {
border-radius: $border-radius;
}

pre {
background: $beige;
color: $black;
line-height: $line-height-base;
margin: 2rem 0;
overflow: auto;
padding: 1.25rem 1.5rem;
tab-size: 4;
}

code {
background: $beige;
color: $black;
padding: 0.25rem 0.5rem;
}

pre {
margin: 2rem 0;
}

pre code {
background: none;
font-size: inherit;
padding: 0;
display: block;
overflow-x: auto;
line-height: $line-height-base;
padding: 1.25rem 1.5rem;
tab-size: 4;
}

@include media-breakpoint-down(sm) {
pre {
margin: 2rem -1.5rem;
}
.hljs {
padding: 1.25rem 1.5rem;
}

@include media-breakpoint-down(sm) {
pre,
code,
kbd,
samp {
border-radius: 0;
}

pre {
margin: 2rem -1.5rem;
}
}
50 changes: 50 additions & 0 deletions assets/scss/components/_doks.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*

Doks — based on Ascetic by (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>

*/

.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: $beige;
color: $black;
}

body.dark .hljs {
background: $body-overlay-dark;
color: $body-color-dark;
}

.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-symbol,
.hljs-bullet,
.hljs-section,
.hljs-addition,
.hljs-attribute,
.hljs-link {
color: #888;
}

.hljs-comment,
.hljs-quote,
.hljs-meta,
.hljs-deletion {
color: #ccc;
}

.hljs-keyword,
.hljs-selector-tag,
.hljs-section,
.hljs-name,
.hljs-type,
.hljs-strong {
font-weight: bold;
}

.hljs-emphasis {
font-style: italic;
}
2 changes: 1 addition & 1 deletion config/_default/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ rel = "sitemap"
[markup.goldmark.renderer]
unsafe = true
[markup.highlight]
codeFences = true
codeFences = false
guessSyntax = false
hl_Lines = ""
lineNoStart = 1
Expand Down
6 changes: 6 additions & 0 deletions config/_default/menus.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
identifier = "prologue"
url = "/docs/prologue/"

[[docs]]
name = "Examples"
weight = 20
identifier = "examples"
url = "/docs/examples/"

[[docs]]
name = "Help"
weight = 60
Expand Down
3 changes: 2 additions & 1 deletion config/_default/params.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,10 @@ editPage = false

[options]
lazySizes = true
clipBoard = true
clipBoard = false
instantPage = true
flexSearch = true
darkMode = true
bootStrapJs = false
breadCrumb = false
highLight = true
1 change: 1 addition & 0 deletions config/postcss.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ module.exports = {
'th',
'td',
...whitelister([
'./assets/scss/components/_doks.scss',
'./assets/scss/components/_code.scss',
'./assets/scss/components/_search.scss',
'./assets/scss/common/_dark.scss',
Expand Down
9 changes: 9 additions & 0 deletions content/docs/examples/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: "Examples"
description: "Examples"
lead: ""
date: 2021-03-16T08:43:03+01:00
lastmod: 2021-03-16T08:43:03+01:00
draft: false
images: []
---
79 changes: 79 additions & 0 deletions content/docs/examples/code.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
title: "Code"
description: "Code highlighting examples"
lead: "Code highlighting examples"
date: 2021-03-16T08:43:34+01:00
lastmod: 2021-03-16T08:43:34+01:00
draft: false
images: []
menu:
docs:
parent: "examples"
weight: 200
toc: true
---

## JavaScript

```js
function $initHighlight(block, cls) {
try {
if (cls.search(/\bno\-highlight\b/) != -1)
return process(block, true, 0x0F) +
` class="${cls}"`;
} catch (e) {
/* handle exception */
}
for (var i = 0 / 2; i < classes.length; i++) {
if (checkCondition(classes[i]) === undefined)
console.log('undefined');
}

return (
<div>
<web-component>{block}</web-component>
</div>
)
}

export $initHighlight;
```

## JSON

```json
[
{
"title": "apples",
"count": [12000, 20000],
"description": {"text": "...", "sensitive": false}
},
{
"title": "oranges",
"count": [17500, null],
"description": {"text": "...", "sensitive": false}
}
]
```

## Bash

```bash
#!/bin/bash

###### CONFIG
ACCEPTED_HOSTS="/root/.hag_accepted.conf"
BE_VERBOSE=false

if [ "$UID" -ne 0 ]
then
echo "Superuser rights required"
exit 2
fi

genApacheConf(){
echo -e "# Host ${HOME_DIR}$1/$2 :"
}

echo '"quoted"' | tr -d \" > text.txt
```
12 changes: 11 additions & 1 deletion layouts/partials/footer/script-footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
{{ $bs := resources.Get "js/bootstrap.js" -}}
{{ $bs := $bs | js.Build -}}

{{ $highlight := resources.Get "js/highlight.js" -}}
{{ $highlight := $highlight | js.Build -}}

{{ $app := resources.Get "js/app.js" -}}

{{ $slice := slice $app -}}
Expand Down Expand Up @@ -44,17 +47,24 @@
<script src="{{ $bs.Permalink }}" defer></script>
{{ end -}}
<script src="{{ $js.Permalink }}" defer></script>
{{ if .Site.Params.options.highLight -}}
<script src="{{ $highlight.Permalink }}" defer></script>
{{ end -}}
{{ if .Site.Params.options.flexSearch -}}
<script src="{{ $index.Permalink }}" defer></script>
{{ end -}}
{{ else -}}
{{ $js := $js | minify | fingerprint "sha512" -}}
{{ $index := $index | minify | fingerprint "sha512" -}}
{{ $bs := $bs | minify | fingerprint "sha512" -}}
{{ $highlight := $highlight | minify | fingerprint "sha512" -}}
{{ if .Site.Params.options.bootStrapJs -}}
<script src="{{ $bs.Permalink }}" integrity="{{ $bs.Data.Integrity }}" crossorigin="anonymous" defer></script>
<script src="{{ $bs.Permalink }}" integrity="{{ $bs.Data.Integrity }}" crossorigin="anonymous" defer></script>
{{ end -}}
<script src="{{ $js.Permalink }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous" defer></script>
{{ if .Site.Params.options.highLight -}}
<script src="{{ $highlight.Permalink }}" defer></script>
{{ end -}}
{{ if .Site.Params.options.flexSearch -}}
<script src="{{ $index.Permalink }}" integrity="{{ $index.Data.Integrity }}" crossorigin="anonymous" defer></script>
{{ end -}}
Expand Down
6 changes: 5 additions & 1 deletion layouts/shortcodes/btn-copy.html
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
<button class="btn-clipboard btn btn-sm btn-link" data-clipboard-text="{{ .Get "text" | safeHTML }}"><span class="copy-status"></span></button>
{{ if .Site.Params.options.clipBoard -}}
<div class="doks-clipboard">
<button class="btn-clipboard btn btn-link" data-clipboard-text="{{ .Get "text" | safeHTML }}"><span class="copy-status"></span></button>
</div>
{{ end -}}