Skip to content

Commit

Permalink
Merge pull request gethyas#180 from h-enk/syntax-highlighting
Browse files Browse the repository at this point in the history
Add highlight.js as an option
  • Loading branch information
h-enk committed Mar 16, 2021
2 parents a99133c + 90e2cfd commit ee14bc9
Show file tree
Hide file tree
Showing 16 changed files with 251 additions and 30 deletions.
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 -}}

0 comments on commit ee14bc9

Please sign in to comment.