docsite (#19)
* change documentation theme and structure * add config files * fix links * add build doc command Co-authored-by: Ruidy <rnemausat@newstore.com>
1
.gitignore
vendored
|
|
@ -57,3 +57,4 @@ Icon
|
||||||
Network Trash Folder
|
Network Trash Folder
|
||||||
Temporary Items
|
Temporary Items
|
||||||
.apdisk
|
.apdisk
|
||||||
|
docs/public
|
||||||
|
|
|
||||||
5
Makefile
|
|
@ -6,5 +6,8 @@ build:
|
||||||
test: build
|
test: build
|
||||||
docker run --name underscore --rm -i -t underscore sh -c $(TEST)
|
docker run --name underscore --rm -i -t underscore sh -c $(TEST)
|
||||||
|
|
||||||
doc:
|
docs:
|
||||||
cd docs && hugo server -D
|
cd docs && hugo server -D
|
||||||
|
|
||||||
|
build-docs:
|
||||||
|
cd docs && hugo --gc --minify
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
html
|
|
||||||
--color-mode: "light"
|
|
||||||
--light: #fff
|
|
||||||
--dark: rgb(28,28,30)
|
|
||||||
--haze: #f2f5f7
|
|
||||||
--bubble: rgb(36,36,38)
|
|
||||||
--accent: var(--haze)
|
|
||||||
--bg: var(--light)
|
|
||||||
--code-bg: var(--accent)
|
|
||||||
--overlay: var(--light)
|
|
||||||
--text: #111
|
|
||||||
--font: 'Metropolis', sans-serif
|
|
||||||
--border-color: #eee
|
|
||||||
--inline-color: darkgoldenrod
|
|
||||||
--theme: #209CEE
|
|
||||||
--ease: ease
|
|
||||||
|
|
||||||
@mixin darkmode
|
|
||||||
--color-mode: "dark"
|
|
||||||
--theme: #209CEE
|
|
||||||
--bg: var(--dark)
|
|
||||||
--text: #eee
|
|
||||||
--accent: var(--bubble)
|
|
||||||
--overlay: var(--bubble)
|
|
||||||
--border-color: transparent
|
|
||||||
*
|
|
||||||
box-shadow: none !important
|
|
||||||
|
|
||||||
&[data-mode="dark"]
|
|
||||||
@include darkmode
|
|
||||||
.color
|
|
||||||
&_choice
|
|
||||||
&::after
|
|
||||||
background-image: url(../icons/moon.svg)
|
|
||||||
|
|
||||||
&.dark:not([data-mode="light"])
|
|
||||||
@media (prefers-color-scheme: dark)
|
|
||||||
@include darkmode
|
|
||||||
|
|
||||||
%narrow
|
|
||||||
max-width: 750px
|
|
||||||
margin: 0 auto
|
|
||||||
|
|
||||||
blockquote
|
|
||||||
+ .highlight_wrap
|
|
||||||
margin-top: 2.25rem
|
|
||||||
|
|
@ -1,12 +1,25 @@
|
||||||
baseURL = 'http://example.org/'
|
baseURL = "http://localhost"
|
||||||
languageCode = 'en-us'
|
title = "underscore"
|
||||||
title = 'Underscore'
|
theme = "hugo-geekdoc"
|
||||||
theme = "compose" # edit this if you'ld rather use a fork of this repo
|
|
||||||
|
pluralizeListTitles = false
|
||||||
|
|
||||||
|
# Geekdoc required configuration
|
||||||
|
pygmentsUseClasses = true
|
||||||
|
pygmentsCodeFences = true
|
||||||
|
disablePathToLower = true
|
||||||
|
|
||||||
|
# Required if you want to render robots.txt template
|
||||||
enableRobotsTXT = true
|
enableRobotsTXT = true
|
||||||
[outputs]
|
|
||||||
home = ["HTML", "RSS","JSON"]
|
# Needed for mermaid shortcodes
|
||||||
[params]
|
[markup]
|
||||||
logo.lightMode = "logo.png"
|
[markup.goldmark.renderer]
|
||||||
logo.darkMode = "logo.png"
|
# Needed for mermaid shortcode
|
||||||
author.name = "Ruidy"
|
unsafe = true
|
||||||
author.url = "https://github.com/rjNemo"
|
[markup.tableOfContents]
|
||||||
|
startLevel = 1
|
||||||
|
endLevel = 9
|
||||||
|
|
||||||
|
[taxonomies]
|
||||||
|
tag = "tags"
|
||||||
44
docs/content/_index.md
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
---
|
||||||
|
title: underscore
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
`underscore` is a `Go` library providing useful functional programming helpers without extending any built-in objects.
|
||||||
|
|
||||||
|
It is mostly a port from the `underscore.js` library based on generics brought by `go1.18`.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
Install the library using
|
||||||
|
|
||||||
|
```shell
|
||||||
|
go get github.com/rjNemo/underscore
|
||||||
|
```
|
||||||
|
|
||||||
|
Please check out the [examples](https://github.com/rjNemo/underscore/tree/main/examples) to see how to use the library.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
|
||||||
|
// filter even numbers from the slice
|
||||||
|
evens := u.Filter(numbers, func(n int) bool { return n%2 == 0 })
|
||||||
|
// square every number in the slice
|
||||||
|
squares := u.Map(evens, func(n int) int { return n * n })
|
||||||
|
// reduce to the sum
|
||||||
|
res := u.Reduce(squares, func(n, acc int) int { return n + acc }, 0)
|
||||||
|
|
||||||
|
fmt.Println(res) // 120
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
---
|
---
|
||||||
title: "Chaining"
|
title: "Of"
|
||||||
date: 2021-12-31T13:11:41-04:00
|
date: 2021-12-31T13:11:41-04:00
|
||||||
---
|
---
|
||||||
|
|
||||||
## Of
|
|
||||||
|
|
||||||
Calling `Of` will cause all future method calls to return wrapped objects. When you've finished the computation,
|
Calling `Of` will cause all future method calls to return wrapped objects. When you've finished the computation,
|
||||||
call `Value` to retrieve the final value.
|
call `Value` to retrieve the final value.
|
||||||
23
docs/content/collections/all.md
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
title: "All"
|
||||||
|
date: 2021-12-30T13:24:39-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
`All` returns true if all the values in the slice pass the predicate truth test.\
|
||||||
|
Short-circuits and stops traversing the slice if a false element is found.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{1, 3, 5, 7, 9}
|
||||||
|
isOdd := func(n int) bool { return n%2 != 0 }
|
||||||
|
fmt.Println(u.All(nums, isOdd)) // true
|
||||||
|
}
|
||||||
|
```
|
||||||
22
docs/content/collections/any.md
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
title: "Any"
|
||||||
|
date: 2022-03-21T13:26:01-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Any` returns true if any of the values in the slice pass the predicate truth test. Short-circuits and stops traversing
|
||||||
|
the slice if a true element is found.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{1, 2, 4, 6, 8}
|
||||||
|
isEven := func(n int) bool { return n%2 == 0 }
|
||||||
|
fmt.Println(u.Any(nums, isEven)) // true
|
||||||
|
}
|
||||||
|
```
|
||||||
21
docs/content/collections/contains.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
title: "Contains"
|
||||||
|
date: 2022-03-21T13:30:29-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Contains` returns true if the value is present in the slice.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{1, 3, 5, 7, 9}
|
||||||
|
|
||||||
|
fmt.Println(u.Contains(nums, 5)) // true
|
||||||
|
}
|
||||||
|
```
|
||||||
22
docs/content/collections/drop.md
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
title: "Drop"
|
||||||
|
date: 2022-03-21T13:48:21-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Drop` returns the rest of the elements in a slice. Pass an index to return the values of the slice from that index
|
||||||
|
onward.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{1, 9, 2, 8, 3, 7, 4, 6, 5}
|
||||||
|
|
||||||
|
fmt.Println(u.Drop(nums, 3)) // {1, 9, 2, 3, 7, 4, 6, 5}
|
||||||
|
}
|
||||||
|
```
|
||||||
25
docs/content/collections/each.md
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
---
|
||||||
|
title: "Each"
|
||||||
|
date: 2022-03-21T13:30:59-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Each` iterates over a slice of elements, yielding each in turn to an action function.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
names := []string{"Alice", "Bob", "Charles"}
|
||||||
|
res := make([]string, 0)
|
||||||
|
|
||||||
|
u.Each(names, func(n string) {
|
||||||
|
res = append(res, fmt.Sprintf("Hi %s", n))
|
||||||
|
})
|
||||||
|
fmt.Println(res) // {"Hi Alice", "Hi Bob", "Hi Charles"}
|
||||||
|
}
|
||||||
|
```
|
||||||
21
docs/content/collections/filter.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
title: "Filter"
|
||||||
|
date: 2022-03-21T13:31:21-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Filter` looks through each value in the slice, returning a slice of all the values that pass a truth test (predicate).
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
|
||||||
|
isEven := func(n int) bool { return n%2 == 0 }
|
||||||
|
fmt.Println(u.Filter(nums, isEven)) // {0, 2, 4, 6, 8}
|
||||||
|
}
|
||||||
|
```
|
||||||
26
docs/content/collections/find.md
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
---
|
||||||
|
title: "Find"
|
||||||
|
date: 2022-03-21T13:31:40-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
Find looks through each value in the slice, returning the first one that passes a truth test (predicate), or the default
|
||||||
|
value for the type and an error if no value passes the test. The function returns as soon as it finds an acceptable
|
||||||
|
element, and doesn't traverse the entire slice.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{2, 4, 5, 6, 8, 0}
|
||||||
|
isOdd := func(n int) bool { return n%2 != 0 }
|
||||||
|
|
||||||
|
n, err := u.Find(nums, isOdd)
|
||||||
|
fmt.Println(n) // 5
|
||||||
|
fmt.Println(err) // nil
|
||||||
|
}
|
||||||
|
```
|
||||||
21
docs/content/collections/last.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
title: "Last"
|
||||||
|
date: 2022-03-21T13:46:24-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Last` returns the last element of the slice.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{1, 9, 2, 8, 3, 7, 4, 6, 5}
|
||||||
|
|
||||||
|
fmt.Println(u.Last(nums)) // 5
|
||||||
|
}
|
||||||
|
```
|
||||||
23
docs/content/collections/map.md
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
title: "Map"
|
||||||
|
date: 2022-03-21T13:32:10-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Map` produces a new slice of values by mapping each value in the slice through a transform function.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{1, 2, 3}
|
||||||
|
toSquare := func(n int) int {
|
||||||
|
return n * n
|
||||||
|
}
|
||||||
|
fmt.Println(u.Map(nums, toSquare)) // {1, 4, 9}
|
||||||
|
}
|
||||||
|
```
|
||||||
21
docs/content/collections/max.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
title: "Max"
|
||||||
|
date: 2022-03-21T13:32:43-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Max` returns the maximum value in the slice. This function can currently only compare numbers reliably. This function
|
||||||
|
uses operator `<`.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{1, 9, 2, 8, 3, 7, 4, 6, 5}
|
||||||
|
fmt.Println(u.Max(nums)) // 9
|
||||||
|
}
|
||||||
|
```
|
||||||
21
docs/content/collections/min.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
title: "Min"
|
||||||
|
date: 2022-03-21T13:33:03-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Min` returns the minimum value in the slice. This function can currently only compare numbers reliably. This function
|
||||||
|
uses operator `<`.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{1, 9, 2, 8, 3, 7, 4, 6, 5}
|
||||||
|
fmt.Println(u.Min(nums)) // 1
|
||||||
|
}
|
||||||
|
```
|
||||||
25
docs/content/collections/partition.md
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
---
|
||||||
|
title: "Partition"
|
||||||
|
date: 2022-03-21T13:33:23-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Partition` splits the slice into two slices: one whose elements all satisfy predicate and one whose elements all do not
|
||||||
|
satisfy predicate.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
|
||||||
|
isEven := func(n int) bool { return n%2 == 0 }
|
||||||
|
|
||||||
|
evens, odds := u.Partition(nums, isEven)
|
||||||
|
fmt.Println(evens) // {0, 2, 4, 6, 8}
|
||||||
|
fmt.Println(odds) // {1, 3, 5, 7, 9}
|
||||||
|
}
|
||||||
|
```
|
||||||
22
docs/content/collections/reduce.md
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
title: "Reduce"
|
||||||
|
date: 2022-03-21T13:33:52-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Reduce` combine a list of values into a single value. `acc` is the initial state, and each successive step of it should
|
||||||
|
be returned by the reduction function.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
|
||||||
|
sum := func(n, acc int) int { return n + acc }
|
||||||
|
fmt.Println(u.Reduce(nums, sum, 0)) // 45
|
||||||
|
}
|
||||||
|
```
|
||||||
21
docs/content/collections/sum.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
title: "Sum"
|
||||||
|
date: 2022-03-21T13:50:29-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
`Sum` adds elements of the slice.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
|
||||||
|
|
||||||
|
fmt.Println(u.Sum(nums)) // 45
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
+++ title = "Underscore"
|
|
||||||
[data]
|
|
||||||
baseChartOn = 3
|
|
||||||
colors = ["#627c62", "#11819b", "#ef7f1a", "#4e1154"]
|
|
||||||
columnTitles = ["Section", "Status", "Author"]
|
|
||||||
+++
|
|
||||||
|
|
||||||
{{< column >}}
|
|
||||||
|
|
||||||
`underscore` is a `Go` library providing useful functional programming helpers without extending any built-in objects.
|
|
||||||
|
|
||||||
It is mostly a port from the `underscore.js` library based on generics brought by `go1.18`.
|
|
||||||
|
|
@ -1,231 +0,0 @@
|
||||||
---
|
|
||||||
title: "Collections"
|
|
||||||
date: 2021-12-30T13:24:39-04:00
|
|
||||||
---
|
|
||||||
|
|
||||||
## All
|
|
||||||
|
|
||||||
`All` returns true if all the values in the slice pass the predicate truth test.\
|
|
||||||
Short-circuits and stops traversing the slice if a false element is found.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{1, 3, 5, 7, 9}
|
|
||||||
isOdd := func(n int) bool { return n%2 != 0 }
|
|
||||||
fmt.Println(u.All(nums, isOdd)) // true
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Any
|
|
||||||
|
|
||||||
`Any` returns true if any of the values in the slice pass the predicate truth test. Short-circuits and stops traversing
|
|
||||||
the slice if a true element is found.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{1, 2, 4, 6, 8}
|
|
||||||
isEven := func(n int) bool { return n%2 == 0 }
|
|
||||||
fmt.Println(u.Any(nums, isEven)) // true
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Contains
|
|
||||||
|
|
||||||
`Contains` returns true if the value is present in the slice.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{1, 3, 5, 7, 9}
|
|
||||||
|
|
||||||
fmt.Println(u.Contains(nums, 5)) // true
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Each
|
|
||||||
|
|
||||||
`Each` iterates over a slice of elements, yielding each in turn to an action function.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
names := []string{"Alice", "Bob", "Charles"}
|
|
||||||
res := make([]string, 0)
|
|
||||||
|
|
||||||
u.Each(names, func(n string) {
|
|
||||||
res = append(res, fmt.Sprintf("Hi %s", n))
|
|
||||||
})
|
|
||||||
fmt.Println(res) // {"Hi Alice", "Hi Bob", "Hi Charles"}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Filter
|
|
||||||
|
|
||||||
`Filter` looks through each value in the slice, returning a slice of all the values that pass a truth test (predicate).
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
|
|
||||||
isEven := func(n int) bool { return n%2 == 0 }
|
|
||||||
fmt.Println(u.Filter(nums, isEven)) // {0, 2, 4, 6, 8}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Find
|
|
||||||
|
|
||||||
Find looks through each value in the slice, returning the first one that passes a truth test (predicate), or the default
|
|
||||||
value for the type and an error if no value passes the test. The function returns as soon as it finds an acceptable
|
|
||||||
element, and doesn't traverse the entire slice.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{2, 4, 5, 6, 8, 0}
|
|
||||||
isOdd := func(n int) bool { return n%2 != 0 }
|
|
||||||
|
|
||||||
n, err := u.Find(nums, isOdd)
|
|
||||||
fmt.Println(n) // 5
|
|
||||||
fmt.Println(err) // nil
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Map
|
|
||||||
|
|
||||||
`Map` produces a new slice of values by mapping each value in the slice through a transform function.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{1, 2, 3}
|
|
||||||
toSquare := func(n int) int {
|
|
||||||
return n * n
|
|
||||||
}
|
|
||||||
fmt.Println(u.Map(nums, toSquare)) // {1, 4, 9}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Max
|
|
||||||
|
|
||||||
`Max` returns the maximum value in the slice. This function can currently only compare numbers reliably. This function
|
|
||||||
uses operator `<`.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{1, 9, 2, 8, 3, 7, 4, 6, 5}
|
|
||||||
fmt.Println(u.Max(nums)) // 9
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Min
|
|
||||||
|
|
||||||
`Min` returns the minimum value in the slice. This function can currently only compare numbers reliably. This function
|
|
||||||
uses operator `<`.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{1, 9, 2, 8, 3, 7, 4, 6, 5}
|
|
||||||
fmt.Println(u.Min(nums)) // 1
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Partition
|
|
||||||
|
|
||||||
`Partition` splits the slice into two slices: one whose elements all satisfy predicate and one whose elements all do not
|
|
||||||
satisfy predicate.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
|
|
||||||
isEven := func(n int) bool { return n%2 == 0 }
|
|
||||||
|
|
||||||
evens, odds := u.Partition(nums, isEven)
|
|
||||||
fmt.Println(evens) // {0, 2, 4, 6, 8}
|
|
||||||
fmt.Println(odds) // {1, 3, 5, 7, 9}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Reduce
|
|
||||||
|
|
||||||
`Reduce` combine a list of values into a single value. `acc` is the initial state, and each successive step of it should
|
|
||||||
be returned by the reduction function.
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
u "github.com/rjNemo/underscore"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
|
|
||||||
sum := func(n, acc int) int { return n + acc }
|
|
||||||
fmt.Println(u.Reduce(nums, sum, 0)) // 45
|
|
||||||
}
|
|
||||||
```
|
|
||||||
75
docs/content/usage/start.md
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
---
|
||||||
|
title: "Getting Started"
|
||||||
|
date: 2022-03-21T14:09:01-04:00
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
Install the library using
|
||||||
|
|
||||||
|
```shell
|
||||||
|
go get github.com/rjNemo/underscore
|
||||||
|
```
|
||||||
|
|
||||||
|
Please check out the [examples](https://github.com/rjNemo/underscore/tree/main/examples) to see how to use the library.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
u "github.com/rjNemo/underscore"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
|
||||||
|
// filter even numbers from the slice
|
||||||
|
evens := u.Filter(numbers, func(n int) bool { return n%2 == 0 })
|
||||||
|
// square every number in the slice
|
||||||
|
squares := u.Map(evens, func(n int) int { return n * n })
|
||||||
|
// reduce to the sum
|
||||||
|
res := u.Reduce(squares, func(n, acc int) int { return n + acc }, 0)
|
||||||
|
|
||||||
|
fmt.Println(res) // 120
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
These instructions will get you a copy of the project up and running on your local machine for development and testing
|
||||||
|
purposes.
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
You need at least `go1.18` for development. The project is shipped with
|
||||||
|
a [Dockerfile](https://github.com/rjNemo/underscore/tree/main/Dockerfile) based on `go1.18`. If you prefer local
|
||||||
|
development, at the moment the easiest way to do it:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
go install golang.org/dl/go1.18beta1@latest
|
||||||
|
go1.18beta1 download
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installing
|
||||||
|
|
||||||
|
First clone the repository
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git clone https://github.com/rjNemo/underscore.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Install dependencies
|
||||||
|
|
||||||
|
```shell
|
||||||
|
go mod download
|
||||||
|
```
|
||||||
|
|
||||||
|
And that's it.
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
|
||||||
|
To run the unit tests, you can simply run:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make test
|
||||||
|
```
|
||||||
6
docs/data/menu/extra.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
header:
|
||||||
|
- name: GitHub
|
||||||
|
ref: https://github.com/rjNemo/underscore
|
||||||
|
icon: gdoc_github
|
||||||
|
external: true
|
||||||
13
docs/data/menu/more.yaml
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
more:
|
||||||
|
- name: News
|
||||||
|
ref: "/#"
|
||||||
|
icon: "gdoc_notification"
|
||||||
|
- name: Releases
|
||||||
|
ref: "https://github.com/rjNemo/underscore/releases"
|
||||||
|
external: true
|
||||||
|
icon: "gdoc_download"
|
||||||
|
- name: "View Source"
|
||||||
|
ref: "https://github.com/rjNemo/underscore"
|
||||||
|
external: true
|
||||||
|
icon: "gdoc_github"
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"Target":"css/styles.35cccf4dc83860130d466a273c4bd3f1342dc22b167106c704a21ae7307d2d98f4701138b92f3fe17054f928a248863a30ad7863fe6b3816582123ff58f21da6.css","MediaType":"text/css","Data":{"Integrity":"sha512-NczPTcg4YBMNRmonPEvT8TQtwisWcQbHBKIa5zB9LZj0cBE4uS8/4XBU+SiiSIY6MK14Y/5rOBZYISP/WPIdpg=="}}
|
|
||||||
BIN
docs/static/logo.png
vendored
|
Before Width: | Height: | Size: 3.4 KiB |
1
docs/themes/compose
vendored
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 94194f5630e67d3fdbc5d4ae39ac027b0455d29a
|
|
||||||
21
docs/themes/hugo-geekdoc/LICENSE
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 Robert Kaussow <mail@thegeeklab.de>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished
|
||||||
|
to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice (including the next
|
||||||
|
paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||||
|
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||||
|
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
44
docs/themes/hugo-geekdoc/README.md
vendored
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
# Geekdoc
|
||||||
|
|
||||||
|
[](https://drone.thegeeklab.de/thegeeklab/hugo-geekdoc)
|
||||||
|
[](https://gohugo.io)
|
||||||
|
[](https://github.com/thegeeklab/hugo-geekdoc/releases/latest)
|
||||||
|
[](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors)
|
||||||
|
[](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE)
|
||||||
|
|
||||||
|
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of good alternatives out there. You can find a demo and the full documentation at [https://geekdocs.de](https://geekdocs.de).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Build and release process
|
||||||
|
|
||||||
|
This theme is subject to a CI driven build and release process common for software development. During the release build, all necessary assets are automatically built by [webpack](https://webpack.js.org/) and bundled in a release tarball. You can download the latest release from the GitHub [release page](https://github.com/thegeeklab/hugo-geekdoc/releases).
|
||||||
|
|
||||||
|
Due to the fact that `webpack` and `npm scripts` are used as pre-processors, the theme cannot be used from the main branch by default. If you want to use the theme from a cloned branch instead of a release tarball you'll need to install `webpack` locally and run the build script once to create all required assets.
|
||||||
|
|
||||||
|
```Shell
|
||||||
|
# install required packages from package.json
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# run the build script to build required assets
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [Getting Started Guide](https://geekdocs.de/usage/getting-started/) for details about the different setup options.
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
Special thanks goes to all [contributors](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors). If you would like to contribute,
|
||||||
|
please see the [instructions](https://github.com/thegeeklab/hugo-geekdoc/blob/main/CONTRIBUTING.md).
|
||||||
|
|
||||||
|
Geekdoc is inspired and partially based on the [hugo-book](https://github.com/alex-shpak/hugo-book) theme, thanks [Alex Shpak](https://github.com/alex-shpak/) for your work.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the MIT License - see the [LICENSE](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE) file for details.
|
||||||
|
|
||||||
|
The used SVG icons and generated icon fonts are licensed under the license of the respective icon pack:
|
||||||
|
|
||||||
|
- Font Awesome: [CC BY 4.0 License](https://github.com/FortAwesome/Font-Awesome#license)
|
||||||
|
- IcoMoon Free Pack: [GPL/CC BY 4.0](https://icomoon.io/#icons-icomoon)
|
||||||
|
- Material Icons: [Apache License 2.0](https://github.com/google/material-design-icons/blob/main/LICENSE)
|
||||||
1
docs/themes/hugo-geekdoc/VERSION
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
v0.27.5
|
||||||
7
docs/themes/hugo-geekdoc/archetypes/docs.md
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
title: "{{ .Name | humanize | title }}"
|
||||||
|
weight: 1
|
||||||
|
# geekdocFlatSection: false
|
||||||
|
# geekdocToc: 6
|
||||||
|
# geekdocHidden: false
|
||||||
|
---
|
||||||
4
docs/themes/hugo-geekdoc/archetypes/posts.md
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
date: {{ .Date }}
|
||||||
|
---
|
||||||
7
docs/themes/hugo-geekdoc/assets/search/config.json
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{{- $searchDataFile := printf "search/%s.data.json" .Language.Lang -}}
|
||||||
|
{{- $searchData := resources.Get "search/data.json" | resources.ExecuteAsTemplate $searchDataFile . | resources.Minify -}}
|
||||||
|
{
|
||||||
|
"dataFile": {{ $searchData.RelPermalink | jsonify }},
|
||||||
|
"indexConfig": {{ .Site.Params.GeekdocSearchConfig | jsonify }},
|
||||||
|
"showParent": {{ if .Site.Params.GeekdocSearchShowParent }}true{{ else }}false{{ end }}
|
||||||
|
}
|
||||||
12
docs/themes/hugo-geekdoc/assets/search/data.json
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
[
|
||||||
|
{{ range $index, $page := (where .Site.Pages "Params.GeekdocProtected" "ne" true) }}
|
||||||
|
{{ if ne $index 0 }},{{ end }}
|
||||||
|
{
|
||||||
|
"id": {{ $index }},
|
||||||
|
"href": "{{ $page.RelPermalink }}",
|
||||||
|
"title": {{ (partial "utils/title" $page) | jsonify }},
|
||||||
|
"parent": {{ with $page.Parent }}{{ (partial "utils/title" .) | jsonify }}{{ else }}""{{ end }},
|
||||||
|
"content": {{ $page.Plain | jsonify }}
|
||||||
|
}
|
||||||
|
{{ end }}
|
||||||
|
]
|
||||||
1
docs/themes/hugo-geekdoc/assets/sprites/geekdoc.svg
vendored
Normal file
|
After Width: | Height: | Size: 14 KiB |
498
docs/themes/hugo-geekdoc/data/assets.json
vendored
Normal file
|
|
@ -0,0 +1,498 @@
|
||||||
|
{
|
||||||
|
"main.js": {
|
||||||
|
"src": "js/main-16c4e2c7.bundle.min.js",
|
||||||
|
"integrity": "sha512-bl5BOPf5WY/7pmXqUsQyvFycRJFfeZGgTzHV9XxKmZMxNxJgaqb7wy+G8iYQplX1UhLN3HS3dKKJiQHVnuxq9Q=="
|
||||||
|
},
|
||||||
|
"mermaid.js": {
|
||||||
|
"src": "js/mermaid-7da67bd0.bundle.min.js",
|
||||||
|
"integrity": "sha512-pZFKbl/sNohDgJ9NTRxpF9x065WAywo1wxK9SEgzi0FwIpHS/V3Uc/uko4PR3/q5LGKOcJSIeMKuR/FT1VCx/w=="
|
||||||
|
},
|
||||||
|
"katex.js": {
|
||||||
|
"src": "js/katex-0ad34d3f.bundle.min.js",
|
||||||
|
"integrity": "sha512-UGv62QBVmXuhby0d13uDRPPcnbT0SOI5uo0IsPUlW3+1/Q/v5K/IxyRD2XSDVa56y7WOWQokf3JVHdiXmLBHOg=="
|
||||||
|
},
|
||||||
|
"search.js": {
|
||||||
|
"src": "js/search-1c4cfb2d.bundle.min.js",
|
||||||
|
"integrity": "sha512-wK0vKlf8b3uje5GnRC4RN0aL7HzWDu7slqHlbfqCmCbHW30ede6D5H4rc/VqrpOx/Pf1ZfTV5L4Tx4pka1TwXQ=="
|
||||||
|
},
|
||||||
|
"js/273-3d271af5.chunk.min.js": {
|
||||||
|
"src": "js/273-3d271af5.chunk.min.js",
|
||||||
|
"integrity": "sha512-Pc+5FgoiesOdrtnJsehp3vIAqM8ePmAaRfYUsUnhh5Kf2wWxeKc+0MsqxB7yW7K42/BJBiM6xlKH/Gd6ftQrOQ=="
|
||||||
|
},
|
||||||
|
"js/116-d8286ca2.chunk.min.js": {
|
||||||
|
"src": "js/116-d8286ca2.chunk.min.js",
|
||||||
|
"integrity": "sha512-H5/JS5Ohg/a01zLV9GZ+AM6NgxzY5svTSCaF7VKp+cDlyiop2b6kgJ45tpBRJPQTuMILX2f65IxZRY9/ogY+BQ=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationSans-Italic.woff": {
|
||||||
|
"src": "fonts/LiberationSans-Italic.woff",
|
||||||
|
"integrity": "sha512-3rg7qqlEgAeip3NcoxqNNKeVrPvkXCxHbybcidDz8/aKmNhtp9LG45K20dOaOxvWrB+XbjM6bBPnRuzJj8Pltw=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationSans-BoldItalic.woff": {
|
||||||
|
"src": "fonts/LiberationSans-BoldItalic.woff",
|
||||||
|
"integrity": "sha512-l+QH9jdBUO/jvAiX27bbZvr5vCiPwBt1IJqfTy3545wRaqGOP2qeFNvolbaj7kIS7d0rc841Lgf7NACrcMFCmQ=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationSans-Bold.woff": {
|
||||||
|
"src": "fonts/LiberationSans-Bold.woff",
|
||||||
|
"integrity": "sha512-dcvCYm+u+bCFKnERGNyS94DBqaNaaXr7TdD6cNXNvCwNV1jk7mOnRXub3rjX2hoIEcyMSBbeIny9nP5QCBij2g=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationSans.woff": {
|
||||||
|
"src": "fonts/LiberationSans.woff",
|
||||||
|
"integrity": "sha512-X8iWtp7gsJFHLyWhQzM8IZMH97LUsxhB5Hzv9smPHsqmRrDhl/S5xClHq3lUEtupVjCxcthMXl2qQvXcM3XVkA=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-2732x2048.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-2732x2048.png",
|
||||||
|
"integrity": "sha512-520ICJWMPSzTibQuHKpyYHgznwGlf3T95MTLoETOEpTzuxSYelNYNJhcYIhyv6I0r+PtLXNDfxMaIGAJewU2Dw=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-2048x2732.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-2048x2732.png",
|
||||||
|
"integrity": "sha512-zSQs1F7Hz5qUzsyvq/kOycugg2k1t42QxIPAQIHXC87EwzjPPPewWinVDkqi+GIuGSa1xqzHv3srOCpKmgE0QA=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationMono.woff": {
|
||||||
|
"src": "fonts/LiberationMono.woff",
|
||||||
|
"integrity": "sha512-fP8icFlpIzR+72w2iaQLQAImsyFi7T1hjZhT4102/kw2k0EJ8Q4iufSfjxhlKyeh7EAzF8OaEsOKeOmA7MfHVA=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-2224x1668.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-2224x1668.png",
|
||||||
|
"integrity": "sha512-WXbw/s6qbt56l3Id4IFpLFhVx+otXWyFN/EwpJ5TU+hY5JGA8Ro3f+vOFYXP04Mwdubg5kEqzw/4HzD6uZRMVw=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1668x2224.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1668x2224.png",
|
||||||
|
"integrity": "sha512-WCqMLLCyfHzTprEAoaPFaeHwJYEsusnb12rdoLXXbMbXA6v6KKUYDfziu2Z4HQ/34MpGSf7wvxfZss76rrHivg=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-2388x1668.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-2388x1668.png",
|
||||||
|
"integrity": "sha512-xrkXrwGMnitt+kmv275t0MBE6S6+zxBZIYo87N3JdEVoq1HdG3PpO1gJZ4FaDWDWBH/1OF6/pYVmtF4QoTActQ=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-2160x1620.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-2160x1620.png",
|
||||||
|
"integrity": "sha512-MMXrqQtIn50RcyBDPW/a9lTQ55/ad0cz6x5Ilv3Fv5JRZDgzGwlzJnD6YcNyvod2PCsKgoCAF+KqHa/odyJccQ=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1668x2388.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1668x2388.png",
|
||||||
|
"integrity": "sha512-iZGmjl4HG8f2LKnAIsJpoplLTPbwbpydO+2V/3mI73rSY5haG5JhcdU5ZGzqeuGjSdm11MK5j7w4IZ9VRpyyhQ=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1620x2160.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1620x2160.png",
|
||||||
|
"integrity": "sha512-D2Ad9ZPnEd1Ld5t6u5ljx3mdRy/VOyR11Qeee4rk1QVTThehfgx2slFfH86o36B6CBHaDZYMrWlMyXS6H8DI0A=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationSans-Italic.woff2": {
|
||||||
|
"src": "fonts/LiberationSans-Italic.woff2",
|
||||||
|
"integrity": "sha512-boZm4ZsUNEmYS85TJvhuBiOUS18gpj0+9WbFgBpAQbCWdU5yde32bVS6rP0YvNvZMuS/R92y+e/bKbcgbMGDtg=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationSans-BoldItalic.woff2": {
|
||||||
|
"src": "fonts/LiberationSans-BoldItalic.woff2",
|
||||||
|
"integrity": "sha512-5MVxBiZI9GlXK/F6eeZnwsLBYOMzoQ+ncAmSIoBa+kkrYnMfWaEHJaJO9tA6ml44ety3gt4e9tNmYZULvO86ug=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationSans-Bold.woff2": {
|
||||||
|
"src": "fonts/LiberationSans-Bold.woff2",
|
||||||
|
"integrity": "sha512-msH61PCwMuCScUPTyVOjuQgZBhYICioAyJxifpioqircJqe1voESkLNzFz6NBmhewRZvfwJHKzwAne1cxg7mpQ=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-2048x1536.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-2048x1536.png",
|
||||||
|
"integrity": "sha512-JL85dQr6+4HH6oukUWxPs1rbTKe2ZZE+t148UJBE6B4BGy8JYdtDZ8RMnks6vfzDNP7mk58GF1K6vEPZD/O/CQ=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationSans.woff2": {
|
||||||
|
"src": "fonts/LiberationSans.woff2",
|
||||||
|
"integrity": "sha512-/se1p5pF9DbDIpOqEIdjqpr1J3v84dQAHPFdMsK1ZiojTlOWQJuqCH4jZ+oZh2K7TtOJa8lyY14RIHTvGh3+SQ=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1536x2048.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1536x2048.png",
|
||||||
|
"integrity": "sha512-zd8Wn/2cJh9AFShTRz9iMIPIuCHnxOyabursGmH17EbbyEsL66xYP/F2FggCD6vc4/KOk73NQc8UFXLd6ZFx3A=="
|
||||||
|
},
|
||||||
|
"fonts/LiberationMono.woff2": {
|
||||||
|
"src": "fonts/LiberationMono.woff2",
|
||||||
|
"integrity": "sha512-p5oGo6T78XQ6SECsAez1Sc9HBw0SvLJlhndS+pJ0KyauzBdilh7/8/M/V8ivTjbJKU+rJHtIjHtMUVhPQjXq+g=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-2208x1242.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-2208x1242.png",
|
||||||
|
"integrity": "sha512-Oei3vVNEzEvSajRyWJV0ZzFPwULEdbGklMa9s59PtFwCEfBU87HCzQfNxGEG7lze2TKftuLZqIqj0N15ZZ8JcA=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1242x2208.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1242x2208.png",
|
||||||
|
"integrity": "sha512-rX1o6UJqKhO11hs6wQWOVNns6aafDqcVlPxuLx6TCCgIN4+evdu0M1X/7ZZalxaH4HHcDb3F72OjMw0JrzC8DA=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-2688x1242.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-2688x1242.png",
|
||||||
|
"integrity": "sha512-M0IjR8gLlbqqql5/qjIhYyfm/poMOz70jRQIQyL1wYQBCquD4N7G3lm9Mqc3bJP0yvmBGgrflV9fg8sikxjWdw=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1242x2688.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1242x2688.png",
|
||||||
|
"integrity": "sha512-xigXQLupadhWPZNsRFDri8f/Cm4J20shvo/wIM3P+qHIxAcj/kqgRfON/UHr2Lrn6eA11uEGrg8CkngM+F8zbw=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-2436x1125.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-2436x1125.png",
|
||||||
|
"integrity": "sha512-Q6kqiD5/zHEEM/XYaSf+VjpBw++Jg3KSSqycIBiVFj2UGwArcxxesmzuCvfbtUmOoKAtso+Bjh38sXrEcrYD/A=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1125x2436.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1125x2436.png",
|
||||||
|
"integrity": "sha512-uDKdJPnbrR3sjbZxVTnhUwWFgc02uUgG/Oj4G0sb0jJtcyVShsPBCefDdV1EalLkhZiVrHnSkiiM1hOIQ9aJjg=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1792x828.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1792x828.png",
|
||||||
|
"integrity": "sha512-SclwE8AAOyR81/CdPU5XjiybQ9sQhmPht+Sz4/d7PR7gZhpoLEKBj0ovrWNV4xsiVKPhJCsdmkl17UIHftlWHg=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-828x1792.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-828x1792.png",
|
||||||
|
"integrity": "sha512-UkZGpIoAUN4QBxO8q2qv/dsmyexeOmatgoz5W0sYrcwMyANSXdh/AzkUCATEur+2nDNa7FpycVZ+H7ox9teiww=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-750x1334.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-750x1334.png",
|
||||||
|
"integrity": "sha512-fXVcGmV8nj/H4wZRG24ZgUOPO3qjMNMtMPGArIjsdtFC7MugmT2oZlmlZJTN1v6JIOoQPfDEmRBC2OY+83aOFg=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1334x750.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1334x750.png",
|
||||||
|
"integrity": "sha512-8XSFf8v/KZW7sETjasY2xo7QOjF4rIAyKVlMg0ln3f6ltia/PgMmT2uyZtpfEmVjxhKzCE5sBprWWQMPgCnB5A=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-640x1136.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-640x1136.png",
|
||||||
|
"integrity": "sha512-XXoL6TF7XiLsGSozR/i/rHSLxq4+EYSuJy1yVXkuYD1Z5pKLE79mEixZtIAlFAUH4vp5/jDnqUeLZEF0WKj3Fg=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-1024x1024.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-1024x1024.png",
|
||||||
|
"integrity": "sha512-24xfiS1TIVCTRTPPBBFqdDquj1YjC5Uv4/27/X6rXavl3EFm8jvyKHJoNNBZnADuPDnNUp3fZ3w8YjFjh/72eg=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-startup-image-1136x640.png": {
|
||||||
|
"src": "favicon/apple-touch-startup-image-1136x640.png",
|
||||||
|
"integrity": "sha512-sCGiDX6KSnVLTN3SxgxU3idna/C4kSpxEg1e0LDd5Va9GKGU9Pwxsxbfztovdoa4dCzUQor7bNkP9AV31ZUhHw=="
|
||||||
|
},
|
||||||
|
"main.scss": {
|
||||||
|
"src": "main-daf4fc22.min.css",
|
||||||
|
"integrity": "sha512-ICTDnZuVeCwwq6BHUYs+d23U+hlJunNMSSmaXKpEe3q61n95owNKjclyNCtq0f4xafM9st+bT7XL+xZ/bt/Wkw=="
|
||||||
|
},
|
||||||
|
"favicon/android-chrome-512x512.png": {
|
||||||
|
"src": "favicon/android-chrome-512x512.png",
|
||||||
|
"integrity": "sha512-4LwQNKmVInikOHD2/rQlGO+YsQ20ty8OPlvY1ZkCTW6z79PzYu7sxBKChoRWZz29Qu+5pswP4gcnlFJM8h16Ig=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_AMS-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_AMS-Regular.woff",
|
||||||
|
"integrity": "sha512-9OTmXDiUyTZC10JExwbsf9iq5LBx+9l7D9C4/6i+l0df+q4VmoRuBkqtOGsQJq6Ak3lnikurNrXbfpooemNRWw=="
|
||||||
|
},
|
||||||
|
"favicon/favicon.ico": {
|
||||||
|
"src": "favicon/favicon.ico",
|
||||||
|
"integrity": "sha512-eiPeWA9BpWCHB8RTkHgjSniPpdfHwX28K4PwZRbsFvw/iSg643dh0kzSxoP9PM7TP7HOTtsTjhjkivaLucn8fg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Main-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_Main-Regular.woff",
|
||||||
|
"integrity": "sha512-e/R6E/kxpe/ZJOoelEE/Up1luI+TGgnZk7sqD5WEgZni3mT7SuJIXeg+Tds6aQVW3EU5OdrzkQgy7SKvgmlwNw=="
|
||||||
|
},
|
||||||
|
"favicon/android-chrome-384x384.png": {
|
||||||
|
"src": "favicon/android-chrome-384x384.png",
|
||||||
|
"integrity": "sha512-z6jq3E8UfsKnmAvAqe3f/6zU3G4J64Si2leW1zd+aOXeEmOit/TLX+95PP+nt8RccwNZLSdcvxSSbnO3QOvgiA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Main-Bold.woff": {
|
||||||
|
"src": "fonts/KaTeX_Main-Bold.woff",
|
||||||
|
"integrity": "sha512-+UGGXn4fqiTI5j9vbHK7pGg1ArRyP1KjM10tTyRjdEXUXl8VYS8VFuKcZm7TYzSAUbKCyMROpMarzCPNdhwUYA=="
|
||||||
|
},
|
||||||
|
"favicon/firefox_app_512x512.png": {
|
||||||
|
"src": "favicon/firefox_app_512x512.png",
|
||||||
|
"integrity": "sha512-t7wJcQ8LAHmPf6wFzun/zUzG9Ul3VDyzIibk26esgRzt9YAxXQ4QURKjKbdSX+Chozn+hHgbGdwGHUhZCDeIkw=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_AMS-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_AMS-Regular.woff2",
|
||||||
|
"integrity": "sha512-gAE8LJexY6Fb4a8zluSx/+2E4uy09m2cU4S2aUbdJVMhYine4XXka/ehaMYIPso+KvEjy22Nu9LicCgefbF/gg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Main-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Main-Regular.woff2",
|
||||||
|
"integrity": "sha512-G/qfHSw59EYNIAQD8uKjJ9K5ZLpOANYUlemDOCbMgEFEt1NoYHBPdBaUk12AWMo1BYb5fMsxnlfRRyMQD0iGIA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Main-Bold.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Main-Bold.woff2",
|
||||||
|
"integrity": "sha512-H+N2wqGFzd+GKbPWL2b/P2EMC2x9xHwWWkv2qsb56vSMQZA+sxRpebHebFddNq3kSXdlE7bhofyupEO+H7oPlg=="
|
||||||
|
},
|
||||||
|
"favicon/mstile-310x310.png": {
|
||||||
|
"src": "favicon/mstile-310x310.png",
|
||||||
|
"integrity": "sha512-QMpRgeWeAmOnY+5kV7ko2T90q5Ssf/BdkDlils8RA/os/00+s85+LqCv75LA6x0mURQBRslXAYTvlExXQc8nnQ=="
|
||||||
|
},
|
||||||
|
"katex.css": {
|
||||||
|
"src": "katex-e264b2b5.min.css",
|
||||||
|
"integrity": "sha512-0PbhgeD1jHmOFaX8COKUmrYjQ9kzoDbEi4fLK2AlpNfWy80qeQqrxV77SDoqkSisg58hon2BOe8NS/uNPA9qFQ=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Main-Italic.woff": {
|
||||||
|
"src": "fonts/KaTeX_Main-Italic.woff",
|
||||||
|
"integrity": "sha512-OjmWMTSIDlTf1ZGhOQiZsZAQ1cySo4EizhqshTvbuqZkgbUtV0291hC/QN+o4+VFc7OBxaKWYaJgjFRszpQnuA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Main-BoldItalic.woff": {
|
||||||
|
"src": "fonts/KaTeX_Main-BoldItalic.woff",
|
||||||
|
"integrity": "sha512-AXQBZ7CFEPmUhTEmD290away1CMsXG+6B1M2c0kKewQFg5ynwIe/FryXq4dNvcTh6Cjt4PqMMss8oi95k0itSw=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Math-Italic.woff": {
|
||||||
|
"src": "fonts/KaTeX_Math-Italic.woff",
|
||||||
|
"integrity": "sha512-TUy17s9hPgsK0he3aJxEtpu4tdrXIgAwSR0wJnkr4b0BNKSEAap1orh7MA2QgT/KOV5ob6ZOWO7HqbwwQ9GVcg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Math-BoldItalic.woff": {
|
||||||
|
"src": "fonts/KaTeX_Math-BoldItalic.woff",
|
||||||
|
"integrity": "sha512-vOUuWrtWrswqo6byaXpdKXUyJVAQjZdovxjXMqt2d6077hOXP4buD9+CEGzgiJdFOLXgVyt663Qg24V6tq7q0g=="
|
||||||
|
},
|
||||||
|
"favicon/android-chrome-256x256.png": {
|
||||||
|
"src": "favicon/android-chrome-256x256.png",
|
||||||
|
"integrity": "sha512-hrtqFFkYWcGSiynPdzkSpODgNSTLfpzDvmYou56Qzi8t3HhZ3jyMDE9g0JcWJ1I6SbaWSfZdkAHXDj2v56x1Og=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Main-Italic.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Main-Italic.woff2",
|
||||||
|
"integrity": "sha512-SNdgxBdi/h31Ew67zOq7HpN4HMSa4vcCObb4qEywoA1tsMO8V+FQjZMrzVggok/ZIOK54mYOZBwNHPxiJLwhlw=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Main-BoldItalic.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Main-BoldItalic.woff2",
|
||||||
|
"integrity": "sha512-R8cMx8fydyMLYJCaCwtZOVO5dDNFXr7+HQ4k3anhEEwt1D/apo8SHVx6P9z+0b1WiCB3HayQkQmWWgW39rKstQ=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Math-Italic.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Math-Italic.woff2",
|
||||||
|
"integrity": "sha512-LRyb4qX7MDVXzDJUxajFm8w3ycI/0r+z6F4qY8c/YbZUYFx246I2HiNeQfpsTCa6nsCtrF4Uah6G0rzJhZR+uA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Math-BoldItalic.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Math-BoldItalic.woff2",
|
||||||
|
"integrity": "sha512-sR3fQuYKVLlf6OGCMP7Fk/S8itLYLDZY/yN9YADDDPEbY0Ii3XaOAR0ytOTUgL8nehwjBdaCw+iMXMwT0rtKqQ=="
|
||||||
|
},
|
||||||
|
"fonts/Metropolis.woff": {
|
||||||
|
"src": "fonts/Metropolis.woff",
|
||||||
|
"integrity": "sha512-fqZj5Y6hMExrGIb+OuLPY4hnQ+/ILiPON6MpAc77iKhzTWNn7KvSdfwS2NY5hmAYGfggxl55cYRUgT6F/W/RjQ=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Typewriter-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_Typewriter-Regular.woff",
|
||||||
|
"integrity": "sha512-B1qvhsqVeoK6poFsOdVkSoAG3RcVLila6oTE8GeRxtrRsGTF2eWKwdY3C6Td1Cijbh6UvjkunBI/2pWW6mCaXg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_SansSerif-Bold.woff": {
|
||||||
|
"src": "fonts/KaTeX_SansSerif-Bold.woff",
|
||||||
|
"integrity": "sha512-x8XDvU1FWtV3VSVxwu9zpioBXeiCPU5ePRJintoxp1HuPg3LBF0XC0X9fOnObO6VHEtQtKwzKfevNLhrQWzi9w=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_SansSerif-Italic.woff": {
|
||||||
|
"src": "fonts/KaTeX_SansSerif-Italic.woff",
|
||||||
|
"integrity": "sha512-WNH/1HTzqy+zZJp9UuT4yMSK/ynD0f2Wd4aY3w0mKUezWJtXn9uUaa3tAdw5rE7finAD2STy24CzwVku+lc5xg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Typewriter-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Typewriter-Regular.woff2",
|
||||||
|
"integrity": "sha512-S0dhh+bWsw9RVuG+u7wuf+MKUhB6FozZMooTc172VAUU+g1jjXAki8d+/7ecphrmo2/4uumB2bbMdWbvU5u/oA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Fraktur-Bold.woff": {
|
||||||
|
"src": "fonts/KaTeX_Fraktur-Bold.woff",
|
||||||
|
"integrity": "sha512-bbDj1QAzneCTF9//oni1rIQ3wKjtMX2kGbSrYaVNJOCOPOHWD+Mn8ZCACQAKzsVnWX9IB8X1Uwazyjz95kmPAg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Fraktur-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_Fraktur-Regular.woff",
|
||||||
|
"integrity": "sha512-bphDtaXYbimBkkS8AIyw0aBbDWoMVkeEIwAnz+Ra1LrcrZxPCaqiV615P3g8zRvWCUifq1fNBAqvHYLqkhd1TA=="
|
||||||
|
},
|
||||||
|
"favicon/android-chrome-192x192.png": {
|
||||||
|
"src": "favicon/android-chrome-192x192.png",
|
||||||
|
"integrity": "sha512-Tb4H9uC/7OYYBQxRJMO1SIDOvlBS6jHMENnsoKROAUCCjbsptwwMTR0xisgwkJdDkgEH88s9yLj/sy55OJqwtA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_SansSerif-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_SansSerif-Regular.woff",
|
||||||
|
"integrity": "sha512-O4mHHzWemAibL1YVBTG0lPZWRdcNQ/Qbn2/SvQ5gz9CREHr3pWQgrLI7VuqScudj74azd1v0S4YUiNuoFjwfoA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_SansSerif-Bold.woff2": {
|
||||||
|
"src": "fonts/KaTeX_SansSerif-Bold.woff2",
|
||||||
|
"integrity": "sha512-VWDeiG3/j21h8nr6IlK3IcD9ST9gTGHTAaDC0hFMIqCqWztrzO6H7bVJ2GWOlp9seqrFCQvkrcoEKULdYBxSEg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_SansSerif-Italic.woff2": {
|
||||||
|
"src": "fonts/KaTeX_SansSerif-Italic.woff2",
|
||||||
|
"integrity": "sha512-hZ3bBm8cZVRGJ8lu3C9HAvGbBBWc3a5gK7PZj5BcUPmP0zHxCnUQwAjw5M90j26Nu49DmGHd6BpUC3tGRdgSVw=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-180x180.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-180x180.png",
|
||||||
|
"integrity": "sha512-G/pMzRUISFGsqqFUi+3GgVi2TXN2PmPbpCiYXo9YSi+Rn1dtPmeGDY5GAz4rRzf6kIAlXThmSKTS/rpbKgObuA=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-precomposed.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-precomposed.png",
|
||||||
|
"integrity": "sha512-G/pMzRUISFGsqqFUi+3GgVi2TXN2PmPbpCiYXo9YSi+Rn1dtPmeGDY5GAz4rRzf6kIAlXThmSKTS/rpbKgObuA=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon.png": {
|
||||||
|
"src": "favicon/apple-touch-icon.png",
|
||||||
|
"integrity": "sha512-G/pMzRUISFGsqqFUi+3GgVi2TXN2PmPbpCiYXo9YSi+Rn1dtPmeGDY5GAz4rRzf6kIAlXThmSKTS/rpbKgObuA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Fraktur-Bold.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Fraktur-Bold.woff2",
|
||||||
|
"integrity": "sha512-y7piX+9FWnsdHdn+ZeIbANy0v3KeCMwb0Ygq8IKnZq9tCtyFyEk9NSmqSc+thy0MSyQUhHYhdPCkjSHijHbJgA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Fraktur-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Fraktur-Regular.woff2",
|
||||||
|
"integrity": "sha512-scyZ311eKDPdtO9dnq+j8r21ahTaiygTrpRE14e7YxUs/7tjMv61mCA+cpLAz0+lzrDaZoyMuCr8yTvqgsSX5Q=="
|
||||||
|
},
|
||||||
|
"fonts/Metropolis.woff2": {
|
||||||
|
"src": "fonts/Metropolis.woff2",
|
||||||
|
"integrity": "sha512-oS5Y/tXC8/vG4f7KiHpDicy0yE4zs1TMps9Mzfk3M8O7/QNeC9Q7ZcsjnncuGo0vQB5RXU8g460XpSUB5Luc4Q=="
|
||||||
|
},
|
||||||
|
"favicon/firefox_app_128x128.png": {
|
||||||
|
"src": "favicon/firefox_app_128x128.png",
|
||||||
|
"integrity": "sha512-NV/H3Ya562iH3lsTWu3+nE1RZ+wxKKYEMxkYPCH4JLqaesUQfefWavIN0PUzB4TQ0ONmmp4fwkAtXmMh4hplHQ=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Script-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_Script-Regular.woff",
|
||||||
|
"integrity": "sha512-GnZ6z38QaaRNmfOLaikoe5x0HgxQ0qhfi5eGO6QzdHTXdGiTWxV+RjYPrvoW/vc9Bk/BdVH9vBcIODhXtwsYZg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_SansSerif-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_SansSerif-Regular.woff2",
|
||||||
|
"integrity": "sha512-E9Kz6Ra6gXiS2dEGdOw6t9bDwwqYaLGplO0sYwtsh9aveV9xu/j0kwSkr0VZJ+otqrSPzox6sJKTvzlVjQtQsQ=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-167x167.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-167x167.png",
|
||||||
|
"integrity": "sha512-03qCnveVmQRddor+JMS5JGMGqdkcbCc+rUuXqQGhB34lanb92p2Ipigqa1FINeyYc64DJRrQkzRkWorEqPom6A=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Script-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Script-Regular.woff2",
|
||||||
|
"integrity": "sha512-/jhfsi53uEpLeJpQXaN1nzNSIuRztZkiF6tZ16/KKJ631DD61mQBX80CEnFaQ6+t7t2cuqTUH2xR/WoY8xvvOw=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-152x152.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-152x152.png",
|
||||||
|
"integrity": "sha512-AZqdsbtWe2Kccqa1Q8gE/dUCTGo2ZlkdG0rGiamZ3XdynYBL5GnEguQDJjiMWnkblEmlQ8CWE5pxoOQ1TVnQqA=="
|
||||||
|
},
|
||||||
|
"favicon/mstile-150x150.png": {
|
||||||
|
"src": "favicon/mstile-150x150.png",
|
||||||
|
"integrity": "sha512-JJCSnHo3cpid9GAXaJz3/PMXcjlWzVYgmKlUwTC7+NJ4vUXdQ6bjHtomGhZMcHOHKy6bT6bwxBip3ngVoAlzNw=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-144x144.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-144x144.png",
|
||||||
|
"integrity": "sha512-sxApsYMBq0EyzbVYkxKtKTau+noTtKH65s9UEm5LVbeFjMlR5XDTxsEbYNesz/p/DHEg/oeNXAOG1QvCdV+8yw=="
|
||||||
|
},
|
||||||
|
"favicon/android-chrome-144x144.png": {
|
||||||
|
"src": "favicon/android-chrome-144x144.png",
|
||||||
|
"integrity": "sha512-GHmf/LdyneSuxyqoiRP4en4ZDfyU/vJOd5mLK1cW95Hk5Pi+3rvk/R3Cqtkdd4E6tyIwZGHNh+WHL+D6eoOxiA=="
|
||||||
|
},
|
||||||
|
"favicon/mstile-144x144.png": {
|
||||||
|
"src": "favicon/mstile-144x144.png",
|
||||||
|
"integrity": "sha512-GHmf/LdyneSuxyqoiRP4en4ZDfyU/vJOd5mLK1cW95Hk5Pi+3rvk/R3Cqtkdd4E6tyIwZGHNh+WHL+D6eoOxiA=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Caligraphic-Bold.woff": {
|
||||||
|
"src": "fonts/KaTeX_Caligraphic-Bold.woff",
|
||||||
|
"integrity": "sha512-dfUme9QtfyLoXukghFSnTuTlLsQ/8O6YC0QnfbcJermS4BcnS4yWkZT1MEkDPL7/OUnVHcBSuLlvPbQQviJLGw=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Caligraphic-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_Caligraphic-Regular.woff",
|
||||||
|
"integrity": "sha512-31Lt1ryrvtQyFxwrABw2xZiojGGAxgDf1ojQFVy11mzmlJfn38QVSwxISnudZVBrslsHyahoDuZK6wBrayJ/LA=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-120x120.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-120x120.png",
|
||||||
|
"integrity": "sha512-SxZdzj6QHtW/aA1qzqxFt+7ukVK1bzTsileyHR8xhVyk7U10DhLH+lkX7/04jctPFQ16p1/aW1XYfus0Az7mxw=="
|
||||||
|
},
|
||||||
|
"favicon/mstile-310x150.png": {
|
||||||
|
"src": "favicon/mstile-310x150.png",
|
||||||
|
"integrity": "sha512-iby/HgTBJo85KRrZdnhz7cb7ilVeD5sFCeKcCoTf/HAcVqJACSWyRi8zjYVp8QrtjCL2yi9yZ0sUsKfzsKIJdQ=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Caligraphic-Bold.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Caligraphic-Bold.woff2",
|
||||||
|
"integrity": "sha512-Ljf53JaOUtVkASUsf8k9tpv6UeNL81MK9LR5Zco6qeIZ7l7oL3heh4SgT5mljccYcPeQ3+qB0JG8GLOiyXcNAg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Caligraphic-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Caligraphic-Regular.woff2",
|
||||||
|
"integrity": "sha512-lxXHdk259ffCje8TkPwi9v0jtJzlnd2O4FKYgzmdPOGHFdEzdM+7FiAumS0ClHPuqU90I2hTSmpDcpmIT/P8yQ=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-114x114.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-114x114.png",
|
||||||
|
"integrity": "sha512-LGiIXYDx+ERXCQDJCktzcb03hmvkGZdRBh2X9SX9esa/A9GXQyWIwN4+6KxKD+Wtvy4YxzaJK98HZs3538CDGg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Size1-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_Size1-Regular.woff",
|
||||||
|
"integrity": "sha512-XkOjZvm8Ok63zQ6QfZMMFYV0/WG59qxy8+n8Iu6Vqzbo9S+HhvsUpoQDEKLOS/BlLmvWQxjKoDJRdwuht5XP7A=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Size2-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_Size2-Regular.woff",
|
||||||
|
"integrity": "sha512-8lcSsq+0OUHQ1txGOO+hbXlRT9HjF0XmcVXU1trgKtDJx+fq2ejI00wJX/Jd+qw7e70BsOIuhvhY/9Og5wGxiw=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Size4-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_Size4-Regular.woff",
|
||||||
|
"integrity": "sha512-Yn3rCn0/wh7IJxqTkxIMQmE2R1WuooBx1NXlsrmmodUYljKoXDiY5V/ENfqav4ZaVoHfuahfqQyvwQ8GyMgtLQ=="
|
||||||
|
},
|
||||||
|
"favicon/android-chrome-96x96.png": {
|
||||||
|
"src": "favicon/android-chrome-96x96.png",
|
||||||
|
"integrity": "sha512-Yf4VS4jjOTKPur035TkNhAybS3p2x+jrNli0lyHZJRbfNy2Csi0a7ilwhsVCUl4LFp/JxwFmXFxprI7WwW8o4Q=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Size1-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Size1-Regular.woff2",
|
||||||
|
"integrity": "sha512-LWpGCcgzMsmdUrmsBIN5OaYPFpbpYpEn+YmrnLfiCbdq8s7aNTtNqdyUxmExvdZ2Vo2Bz87pfzjvN+xtL4+JTg=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Size2-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Size2-Regular.woff2",
|
||||||
|
"integrity": "sha512-BHXH2ZEkl2rojultow0zLPFK6z4CAw4f7zYtMCTNhaXYnmELwHufinI8V3Mc45cLgD+IPwsA9hoinugMQimuwQ=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Size4-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Size4-Regular.woff2",
|
||||||
|
"integrity": "sha512-F6rlkx62QlxNW+vGsxhQWgaktNw+Gzb6fmNF9fEzx5O/FWE+6L7711Q5jKjzMQVeegEdiSeSqvncYFE3j81Dzw=="
|
||||||
|
},
|
||||||
|
"fonts/GeekdocIcons.woff": {
|
||||||
|
"src": "fonts/GeekdocIcons.woff",
|
||||||
|
"integrity": "sha512-gLi2npju9RoGz3vjD8f/1/BcETm7HAWEjaI+2zeNnpEfq+FPOZ1FU7GadIiCYL3kHkS13ioojftzI8TZmGlS8A=="
|
||||||
|
},
|
||||||
|
"favicon/firefox_app_60x60.png": {
|
||||||
|
"src": "favicon/firefox_app_60x60.png",
|
||||||
|
"integrity": "sha512-YrL6darERXRvnGbTP7MWZFaIqiXEurdbwsg6HeWl+0wlZPC6Wy9DHUcTfjtixv+1+DAVal8YLoIqXTAyYcN+lw=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Size3-Regular.woff": {
|
||||||
|
"src": "fonts/KaTeX_Size3-Regular.woff",
|
||||||
|
"integrity": "sha512-Eo35y+ZReFpmRgZv0N2dKAc5ggcXGE3wnrCf28qnu5G1+Ikvew0IFkdCYN1I6FnHsPDTnQzjJZU7+F7oBYvHKQ=="
|
||||||
|
},
|
||||||
|
"favicon/android-chrome-72x72.png": {
|
||||||
|
"src": "favicon/android-chrome-72x72.png",
|
||||||
|
"integrity": "sha512-PFMzr2iXImbdQDiZVNugaYzoQAUvLCsNrnm0pV0zLxIuczytBfu1nGKjfJZwyOfMzKQpQfYi4z0cdgit9bJ5IQ=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-76x76.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-76x76.png",
|
||||||
|
"integrity": "sha512-klHJxEbcTgx7V1TBM/gByA6vzXK5MUkaiQ1gTybEp6g0sMzpIdO9XTIrsDeelKGI1aHtSBEWPLqF1rYp5T1Oiw=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-72x72.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-72x72.png",
|
||||||
|
"integrity": "sha512-UHXFta5GyLLQ5IoVQBJGP4yzOVwkRG6m6YTrhw/ABwjgsKX4P3u6h2VnbKpGyRgf5hdORwUFyYrJBgQpIzpNWQ=="
|
||||||
|
},
|
||||||
|
"favicon/mstile-70x70.png": {
|
||||||
|
"src": "favicon/mstile-70x70.png",
|
||||||
|
"integrity": "sha512-Wj4a4NiSy1axSDENK/8G13PQPQuaEaFPxOBCj+iVmZ0ifk2UMPbtZDo2fdpCTtwS7BWiHCyv97Kvg4sqAZbRjA=="
|
||||||
|
},
|
||||||
|
"fonts/GeekdocIcons.woff2": {
|
||||||
|
"src": "fonts/GeekdocIcons.woff2",
|
||||||
|
"integrity": "sha512-Hqii30nEsUIwZYZWg+hjz5sLoPU+EJuwmf//aQo7IOVHDiGEST3RwEt8OBNgKQr9mUv4vE5uhhtcOqANKvqEcQ=="
|
||||||
|
},
|
||||||
|
"fonts/KaTeX_Size3-Regular.woff2": {
|
||||||
|
"src": "fonts/KaTeX_Size3-Regular.woff2",
|
||||||
|
"integrity": "sha512-avq+5YU1Cd9KtJ0U6hujFkh4fMNVZC59Y/HPlqUXkxeUlWca4Fmqn1YA8WK1188GG59qRHBtoZzvRgC9k9fGZA=="
|
||||||
|
},
|
||||||
|
"favicon/favicon-48x48.png": {
|
||||||
|
"src": "favicon/favicon-48x48.png",
|
||||||
|
"integrity": "sha512-rs5vrXU7NuGuRCv1RimyERFr1DzyQBviAoYmJxD8uHjl0y57SAleg14A0piuXkRUDL1FE0ZyVA/INPz+8GQjpg=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-60x60.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-60x60.png",
|
||||||
|
"integrity": "sha512-YTKtyy5p2t+jz9cFS1c9kFm0LMH95s37ZRuL5AS0Lhpkf8B+xSokR/v+3xxYskT3QRSx5vcyHai8ia44X6xT5Q=="
|
||||||
|
},
|
||||||
|
"favicon/apple-touch-icon-57x57.png": {
|
||||||
|
"src": "favicon/apple-touch-icon-57x57.png",
|
||||||
|
"integrity": "sha512-2yW78pw4eDZ7hEUoWvNaEEeXOf30rUaKXoZwSvrilX8xBvqij/opEMPF0OHHU2lQziDIGGN9YsUnASQbhd95bw=="
|
||||||
|
},
|
||||||
|
"favicon/android-chrome-48x48.png": {
|
||||||
|
"src": "favicon/android-chrome-48x48.png",
|
||||||
|
"integrity": "sha512-UTXsN/aHnuTWAyYmp+/Ov0H1ML3HnIfUvYuwPyeWTwRs/8bZETHUYsj4scx48YkAJ+fhRnobXYqwr0swY7cXeQ=="
|
||||||
|
},
|
||||||
|
"favicon/favicon-32x32.png": {
|
||||||
|
"src": "favicon/favicon-32x32.png",
|
||||||
|
"integrity": "sha512-cT9VQkceXZYw+3yDSljXGTmfHdp6Gh+ncc7mdtKoB3AK4a6MgMR1YTeGpC0IOm5EmMQoPICXwvMPWskD9YSUAA=="
|
||||||
|
},
|
||||||
|
"favicon/android-chrome-36x36.png": {
|
||||||
|
"src": "favicon/android-chrome-36x36.png",
|
||||||
|
"integrity": "sha512-uIOaCXbCeY2tIMUPros0wfBdDIh842crzDQ/4NjTeEqzFhwrK3HlTsdFXYNcqg9OOuO+aATZKwIGYbgaA8vQbA=="
|
||||||
|
},
|
||||||
|
"favicon/manifest.json": {
|
||||||
|
"src": "favicon/manifest.json",
|
||||||
|
"integrity": "sha512-UncSB3MQSXZlaaxiclpQvvZDDYew4CITJ7JTlLcb8kZpyB3YgbqdHBIechH3HIQ1uJsYhgQyItxG3VMxOLfzKw=="
|
||||||
|
},
|
||||||
|
"mobile.scss": {
|
||||||
|
"src": "mobile-1d04b92f.min.css",
|
||||||
|
"integrity": "sha512-KvfM8WyFGmpvx5di6Mf6XMOxOF3PWH9H7qmrD/SSt7TT971j2vUyppZabtUcCCXme6MUDBRQApwIwCRTpTBbOQ=="
|
||||||
|
},
|
||||||
|
"favicon/favicon-16x16.png": {
|
||||||
|
"src": "favicon/favicon-16x16.png",
|
||||||
|
"integrity": "sha512-lQ+H0RYy3ZlksL5zUaV2WcH2PQdG6imd5hr1KfQOK4o1LXm7JAHvyjOSN3E+HC+AN1pCuoaITo6UI3SpW+CHNA=="
|
||||||
|
},
|
||||||
|
"print.scss": {
|
||||||
|
"src": "print-19966b38.min.css",
|
||||||
|
"integrity": "sha512-xpNQeJp9e4SbqEv+pFoGrOehV+RABxosG+toy6+HJ6SGFLxJNgG4+/RwPYdg3BxBvRXfkTmwf+iArAT3/a3+3g=="
|
||||||
|
},
|
||||||
|
"favicon/browserconfig.xml": {
|
||||||
|
"src": "favicon/browserconfig.xml",
|
||||||
|
"integrity": "sha512-RDr7E4dJmkJdQMyNa4dtxx3iYnrSnFHlifwV1LriUChccTz+aB0gNe0CRL94GXHGd1DiUU+QgEXXNC2Mupn9aw=="
|
||||||
|
},
|
||||||
|
"favicon/manifest.webapp": {
|
||||||
|
"src": "favicon/manifest.webapp",
|
||||||
|
"integrity": "sha512-XPr/eyO6YOVNkn3FS0wAMxe2FPIQmzn5YvV0E2kJ+feOQG4pzZVL09aa35gSUjLR18BVenKZTTtJy4Yh+reRTQ=="
|
||||||
|
},
|
||||||
|
"custom.css": {
|
||||||
|
"src": "custom.css",
|
||||||
|
"integrity": "sha512-1kALo+zc1L2u1rvyxPIew+ZDPWhnIA1Ei2rib3eHHbskQW+EMxfI9Ayyva4aV+YRrHvH0zFxvPSFIuZ3mfsbRA=="
|
||||||
|
}
|
||||||
|
}
|
||||||
45
docs/themes/hugo-geekdoc/i18n/de.yaml
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
---
|
||||||
|
edit_page: Seite bearbeiten
|
||||||
|
|
||||||
|
nav_navigation: Navigation
|
||||||
|
nav_tags: Tags
|
||||||
|
nav_more: Weitere
|
||||||
|
nav_top: Nach oben
|
||||||
|
|
||||||
|
form_placeholder_search: Suchen
|
||||||
|
|
||||||
|
error_page_title: Verlaufen? Keine Sorge
|
||||||
|
error_message_title: Verlaufen?
|
||||||
|
error_message_code: Fehler 404
|
||||||
|
error_message_text: >
|
||||||
|
Wir können die Seite nach der Du gesucht hast leider nicht finden. Keine Sorge,
|
||||||
|
wir bringen Dich zurück zur <a class="gdoc-error__link" href="{{ . }}">Startseite</a>.
|
||||||
|
|
||||||
|
button_toggle_dark: Wechsel zwischen Dunkel/Hell/Auto Modus
|
||||||
|
button_nav_open: Navigation öffnen
|
||||||
|
button_nav_close: Navigation schließen
|
||||||
|
button_menu_open: Menüband öffnen
|
||||||
|
button_menu_close: Menüband schließen
|
||||||
|
button_homepage: Zurück zur Startseite
|
||||||
|
|
||||||
|
title_anchor_prefix: "Link zu:"
|
||||||
|
|
||||||
|
posts_read_more: Ganzen Artikel lesen
|
||||||
|
posts_read_time:
|
||||||
|
one: "Eine Minute Lesedauer"
|
||||||
|
other: "{{ . }} Minuten Lesedauer"
|
||||||
|
posts_update_prefix: Aktualisiert am
|
||||||
|
posts_count:
|
||||||
|
one: "Ein Artikel"
|
||||||
|
other: "{{ . }} Artikel"
|
||||||
|
posts_tagged_with: Alle Artikel mit dem Tag '{{ . }}'
|
||||||
|
|
||||||
|
footer_build_with: >
|
||||||
|
Entwickelt mit <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> und
|
||||||
|
<svg class="icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
|
||||||
|
footer_legal_notice: Impressum
|
||||||
|
footer_privacy_policy: Datenschutzerklärung
|
||||||
|
footer_content_license_prefix: >
|
||||||
|
Inhalt lizensiert unter
|
||||||
|
|
||||||
|
language_switch_no_tranlation_prefix: "Seite nicht übersetzt:"
|
||||||
45
docs/themes/hugo-geekdoc/i18n/en.yaml
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
---
|
||||||
|
edit_page: Edit page
|
||||||
|
|
||||||
|
nav_navigation: Navigation
|
||||||
|
nav_tags: Tags
|
||||||
|
nav_more: More
|
||||||
|
nav_top: Back to top
|
||||||
|
|
||||||
|
form_placeholder_search: Search
|
||||||
|
|
||||||
|
error_page_title: Lost? Don't worry
|
||||||
|
error_message_title: Lost?
|
||||||
|
error_message_code: Error 404
|
||||||
|
error_message_text: >
|
||||||
|
Seems like what you are looking for can't be found. Don't worry, we can
|
||||||
|
bring you back to the <a class="gdoc-error__link" href="{{ . }}">homepage</a>.
|
||||||
|
|
||||||
|
button_toggle_dark: Toggle Dark/Light/Auto mode
|
||||||
|
button_nav_open: Open Navigation
|
||||||
|
button_nav_close: Close Navigation
|
||||||
|
button_menu_open: Open Menu Bar
|
||||||
|
button_menu_close: Close Menu Bar
|
||||||
|
button_homepage: Back to homepage
|
||||||
|
|
||||||
|
title_anchor_prefix: "Anchor to:"
|
||||||
|
|
||||||
|
posts_read_more: Read full post
|
||||||
|
posts_read_time:
|
||||||
|
one: "One minute to read"
|
||||||
|
other: "{{ . }} minutes to read"
|
||||||
|
posts_update_prefix: Updated on
|
||||||
|
posts_count:
|
||||||
|
one: "One post"
|
||||||
|
other: "{{ . }} posts"
|
||||||
|
posts_tagged_with: All posts tagged with '{{ . }}'
|
||||||
|
|
||||||
|
footer_build_with: >
|
||||||
|
Built with <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> and
|
||||||
|
<svg class="icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
|
||||||
|
footer_legal_notice: Legal Notice
|
||||||
|
footer_privacy_policy: Privacy Policy
|
||||||
|
footer_content_license_prefix: >
|
||||||
|
Content licensed under
|
||||||
|
|
||||||
|
language_switch_no_tranlation_prefix: "Page not translated:"
|
||||||
BIN
docs/themes/hugo-geekdoc/images/readme.png
vendored
Normal file
|
After Width: | Height: | Size: 225 KiB |
BIN
docs/themes/hugo-geekdoc/images/screenshot.png
vendored
Normal file
|
After Width: | Height: | Size: 508 KiB |
BIN
docs/themes/hugo-geekdoc/images/tn.png
vendored
Normal file
|
After Width: | Height: | Size: 130 KiB |
40
docs/themes/hugo-geekdoc/layouts/404.html
vendored
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ .Site.Language.Lang }}">
|
||||||
|
<head>
|
||||||
|
{{ partial "head/meta" . }}
|
||||||
|
<title>{{ i18n "error_page_title" }}</title>
|
||||||
|
|
||||||
|
{{ partial "head/favicons" . }}
|
||||||
|
{{ partial "head/others" . }}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{{ partial "svg-icon-symbols" . }}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="wrapper">
|
||||||
|
<input type="checkbox" class="hidden" id="menu-header-control" />
|
||||||
|
|
||||||
|
{{ partial "site-header" (dict "Root" . "MenuEnabled" false) }}
|
||||||
|
|
||||||
|
|
||||||
|
<main class="gdoc-error flex-even">
|
||||||
|
<div class="flex align-center justify-center">
|
||||||
|
<div class="gdoc-error__icon">
|
||||||
|
<svg class="icon gdoc_cloud_off"><use xlink:href="#gdoc_cloud_off"></use></svg>
|
||||||
|
</div>
|
||||||
|
<div class="gdoc-error__message">
|
||||||
|
<div class="gdoc-error__line gdoc-error__title">{{ i18n "error_message_title" }}</div>
|
||||||
|
<div class="gdoc-error__line gdoc-error__code">{{ i18n "error_message_code" }}</div>
|
||||||
|
<div class="gdoc-error__line gdoc-error__help">
|
||||||
|
{{ i18n "error_message_text" .Site.BaseURL | safeHTML }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{{ partial "site-footer" . }}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
21
docs/themes/hugo-geekdoc/layouts/_default/_markup/render-heading.html
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{{- $showAnchor := (and (default true .Page.Params.GeekdocAnchor) (default true .Page.Site.Params.GeekdocAnchor)) -}}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
{{- if $showAnchor -}}
|
||||||
|
<div class="gdoc-page__anchorwrap">
|
||||||
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}">
|
||||||
|
{{ .Text | safeHTML }}
|
||||||
|
<a data-clipboard-text="{{ .Page.Permalink }}#{{ .Anchor | safeURL }}" class="gdoc-page__anchor gdoc-page__anchor--right clip" title="{{ i18n "title_anchor_prefix" }} {{ .Text | safeHTML }}" aria-label="{{ i18n "title_anchor_prefix" }} {{ .Text | safeHTML }}" href="#{{ .Anchor | safeURL }}">
|
||||||
|
<svg class="icon gdoc_link"><use xlink:href="#gdoc_link"></use></svg>
|
||||||
|
</a>
|
||||||
|
</h{{ .Level }}>
|
||||||
|
</div>
|
||||||
|
{{- else -}}
|
||||||
|
<div class="gdoc-page__anchorwrap">
|
||||||
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}">
|
||||||
|
{{ .Text | safeHTML }}
|
||||||
|
</h{{ .Level }}>
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
6
docs/themes/hugo-geekdoc/layouts/_default/_markup/render-image.html
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<img
|
||||||
|
src="{{ .Destination | safeURL }}"
|
||||||
|
alt="{{ .Text }}"
|
||||||
|
{{ with .Title }}title="{{ . }}"{{ end }}
|
||||||
|
/>
|
||||||
|
{{- /* Drop trailing newlines */ -}}
|
||||||
14
docs/themes/hugo-geekdoc/layouts/_default/_markup/render-link.html
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{{- $raw := or (hasPrefix .Text "<img") (hasPrefix .Text "<figure") -}}
|
||||||
|
{{- $code := hasPrefix .Text "<code" -}}
|
||||||
|
<a
|
||||||
|
class="gdoc-markdown__link{{ if $raw -}}
|
||||||
|
--raw
|
||||||
|
{{- else if $code -}}
|
||||||
|
--code
|
||||||
|
{{- end }}"
|
||||||
|
href="{{ .Destination | safeURL }}"
|
||||||
|
{{ with .Title }}title="{{ . }}"{{ end }}
|
||||||
|
>
|
||||||
|
{{- .Text | safeHTML -}}
|
||||||
|
</a>
|
||||||
|
{{- /* Drop trailing newlines */ -}}
|
||||||
56
docs/themes/hugo-geekdoc/layouts/_default/baseof.html
vendored
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ .Site.Language.Lang }}" class="color-toggle-hidden">
|
||||||
|
<head>
|
||||||
|
{{ partial "head/meta" . }}
|
||||||
|
<title>
|
||||||
|
{{- if eq .Kind "home" -}}
|
||||||
|
{{ .Site.Title }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ printf "%s | %s" (partial "utils/title" .) .Site.Title }}
|
||||||
|
{{- end -}}
|
||||||
|
</title>
|
||||||
|
|
||||||
|
{{ partial "head/favicons" . }}
|
||||||
|
{{ partial "head/rel-me" . }}
|
||||||
|
{{ partial "head/microformats" . }}
|
||||||
|
{{ partial "head/others" . }}
|
||||||
|
{{ partial "head/custom" . }}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body itemscope itemtype="https://schema.org/WebPage">
|
||||||
|
{{ partial "svg-icon-symbols" . }}
|
||||||
|
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="wrapper {{ if default false .Site.Params.GeekdocDarkModeDim }}dark-mode-dim{{ end }}"
|
||||||
|
>
|
||||||
|
<input type="checkbox" class="hidden" id="menu-control" />
|
||||||
|
<input type="checkbox" class="hidden" id="menu-header-control" />
|
||||||
|
{{ $navEnabled := default true .Page.Params.GeekdocNav }}
|
||||||
|
{{ partial "site-header" (dict "Root" . "MenuEnabled" $navEnabled) }}
|
||||||
|
|
||||||
|
|
||||||
|
<main class="container flex flex-even">
|
||||||
|
{{ if $navEnabled }}
|
||||||
|
<aside class="gdoc-nav">
|
||||||
|
{{ partial "menu" . }}
|
||||||
|
</aside>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="gdoc-page">
|
||||||
|
{{ template "main" . }}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="gdoc-page__footer flex flex-wrap justify-between">
|
||||||
|
{{ partial "menu-nextprev" . }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{{ partial "site-footer" . }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ partial "foot" . }}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
11
docs/themes/hugo-geekdoc/layouts/_default/list.html
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
{{ partial "page-header" . }}
|
||||||
|
|
||||||
|
|
||||||
|
<article
|
||||||
|
class="gdoc-markdown gdoc-markdown__align--{{ default "left" (.Page.Params.GeekdocAlign | lower) }}"
|
||||||
|
>
|
||||||
|
<h1>{{ partial "utils/title" . }}</h1>
|
||||||
|
{{ partial "utils/content" . }}
|
||||||
|
</article>
|
||||||
|
{{ end }}
|
||||||
11
docs/themes/hugo-geekdoc/layouts/_default/single.html
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
{{ partial "page-header" . }}
|
||||||
|
|
||||||
|
|
||||||
|
<article
|
||||||
|
class="gdoc-markdown gdoc-markdown__align--{{ default "left" (.Page.Params.GeekdocAlign | lower) }}"
|
||||||
|
>
|
||||||
|
<h1>{{ partial "utils/title" . }}</h1>
|
||||||
|
{{ partial "utils/content" . }}
|
||||||
|
</article>
|
||||||
|
{{ end }}
|
||||||
48
docs/themes/hugo-geekdoc/layouts/_default/taxonomy.html
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
{{ range .Paginator.Pages }}
|
||||||
|
<article class="gdoc-post">
|
||||||
|
<header class="gdoc-post__header">
|
||||||
|
<h1 class="gdoc-post__title">
|
||||||
|
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="gdoc-markdown">
|
||||||
|
{{ .Summary }}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="gdoc-post__readmore">
|
||||||
|
{{ if .Truncated }}
|
||||||
|
<a
|
||||||
|
class="flex-inline align-center fake-link"
|
||||||
|
title="{{ i18n "posts_read_more" }}"
|
||||||
|
href="{{ .RelPermalink }}"
|
||||||
|
>
|
||||||
|
{{ i18n "posts_read_more" }}
|
||||||
|
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="gdoc-post__footer">
|
||||||
|
<div class="flex flex-wrap align-center gdoc-post__meta">
|
||||||
|
{{ partial "posts/metadata.html" . }}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "post-tag" }}
|
||||||
|
<span class="gdoc-post__tag">
|
||||||
|
<span class="gdoc-button">
|
||||||
|
<a
|
||||||
|
class="gdoc-button__link"
|
||||||
|
href="{{ .page.RelPermalink }}"
|
||||||
|
title="{{ i18n "posts_tagged_with" .name }}"
|
||||||
|
>
|
||||||
|
{{ .name }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
31
docs/themes/hugo-geekdoc/layouts/_default/terms.html
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
{{ range .Paginator.Pages.ByTitle }}
|
||||||
|
<article class="gdoc-post">
|
||||||
|
<header class="gdoc-post__header">
|
||||||
|
<h1 class="gdoc-post__title">
|
||||||
|
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<footer class="gdoc-post__meta flex align-center">
|
||||||
|
<span class="flex align-center no-wrap">
|
||||||
|
{{ $pageCount := len .Pages }}
|
||||||
|
<svg class="icon gdoc_tag"><use xlink:href="#gdoc_tag"></use></svg>
|
||||||
|
<span class="gdoc-post__tag">
|
||||||
|
{{ i18n "posts_count" $pageCount }}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span class="flex align-center no-wrap">
|
||||||
|
<svg class="icon gdoc_star"><use xlink:href="#gdoc_star"></use></svg>
|
||||||
|
<span>
|
||||||
|
{{ $latet := index .Pages.ByDate 0 }}
|
||||||
|
{{ with $latet }}
|
||||||
|
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
|
||||||
|
{{ end }}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
6
docs/themes/hugo-geekdoc/layouts/partials/foot.html
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{{ if default true .Site.Params.GeekdocSearch }}
|
||||||
|
<script defer src="{{ index (index .Site.Data.assets "search.js") "src" | relURL }}"></script>
|
||||||
|
{{- $searchConfigFile := printf "search/%s.config.json" .Language.Lang -}}
|
||||||
|
{{- $searchConfig := resources.Get "search/config.json" | resources.ExecuteAsTemplate $searchConfigFile . | resources.Minify -}}
|
||||||
|
{{- $searchConfig.Publish -}}
|
||||||
|
{{ end }}
|
||||||
1
docs/themes/hugo-geekdoc/layouts/partials/head/custom.html
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<!-- You can add custom elements to the page header here. -->
|
||||||
13
docs/themes/hugo-geekdoc/layouts/partials/head/favicons.html
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<link rel="icon" type="image/svg+xml" href="{{ "favicon/favicon.svg" | relURL }}" />
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="{{ "favicon/favicon-32x32.png" | relURL }}"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="{{ "favicon/favicon-16x16.png" | relURL }}"
|
||||||
|
/>
|
||||||
14
docs/themes/hugo-geekdoc/layouts/partials/head/meta.html
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="referrer" content="no-referrer" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta name="color-scheme" content="light dark" />
|
||||||
|
{{ hugo.Generator }}
|
||||||
|
|
||||||
|
{{ $keywords := default .Site.Params.Keywords .Keywords }}
|
||||||
|
|
||||||
|
{{- with partial "utils/description" . }}
|
||||||
|
<meta name="description" content="{{ trim (. | plainify) "\n" | safeHTML }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- with $keywords }}
|
||||||
|
<meta name="keywords" content="{{ delimit . "," }}" />
|
||||||
|
{{- end }}
|
||||||
3
docs/themes/hugo-geekdoc/layouts/partials/head/microformats.html
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{{ partial "microformats/opengraph.html" . }}
|
||||||
|
{{ partial "microformats/twitter_cards.html" . }}
|
||||||
|
{{ partial "microformats/schema" . }}
|
||||||
70
docs/themes/hugo-geekdoc/layouts/partials/head/others.html
vendored
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
<script src="{{ index (index .Site.Data.assets "main.js") "src" | relURL }}"></script>
|
||||||
|
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
as="font"
|
||||||
|
href="{{ "fonts/Metropolis.woff2" | relURL }}"
|
||||||
|
type="font/woff2"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
as="font"
|
||||||
|
href="{{ "fonts/LiberationSans.woff2" | relURL }}"
|
||||||
|
type="font/woff2"
|
||||||
|
crossorigin="anonymous"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
href="{{ index (index .Site.Data.assets "main.scss") "src" | relURL }}"
|
||||||
|
as="style"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ index (index .Site.Data.assets "main.scss") "src" | relURL }}"
|
||||||
|
media="all"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
href="{{ index (index .Site.Data.assets "mobile.scss") "src" | relURL }}"
|
||||||
|
as="style"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ index (index .Site.Data.assets "mobile.scss") "src" | relURL }}"
|
||||||
|
media="screen and (max-width: 45rem)"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
href="{{ index (index .Site.Data.assets "print.scss") "src" | relURL }}"
|
||||||
|
as="style"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ index (index .Site.Data.assets "print.scss") "src" | relURL }}"
|
||||||
|
media="print"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
href="{{ index (index .Site.Data.assets "custom.css") "src" | relURL }}"
|
||||||
|
as="style"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ index (index .Site.Data.assets "custom.css") "src" | relURL }}"
|
||||||
|
media="all"
|
||||||
|
/>
|
||||||
|
|
||||||
|
{{- with .OutputFormats.Get "html" }}
|
||||||
|
{{ printf `<link href=%q rel=%q type=%q />` .Permalink .Rel .MediaType.Type | safeHTML }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if (default false $.Site.Params.GeekdocOverwriteHTMLBase) }}
|
||||||
|
<base href="{{ .Site.BaseURL }}" />
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{ printf "<!-- %s -->" "Made with Geekdoc theme https://github.com/thegeeklab/hugo-geekdoc" | safeHTML }}
|
||||||
1
docs/themes/hugo-geekdoc/layouts/partials/head/rel-me.html
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<!-- place to set your rel-me links https://microformats.org/wiki/rel-me -->
|
||||||
51
docs/themes/hugo-geekdoc/layouts/partials/language.html
vendored
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
{{ if .Site.IsMultiLingual }}
|
||||||
|
<span class="gdoc-language">
|
||||||
|
<ul class="gdoc-language__selector" role="button" aria-pressed="false" tabindex="0">
|
||||||
|
<li>
|
||||||
|
{{ range .Site.Languages }}
|
||||||
|
{{ if eq . $.Site.Language }}
|
||||||
|
<span class="flex align-center">
|
||||||
|
<svg class="icon gdoc_language"><use xlink:href="#gdoc_language"></use></svg>
|
||||||
|
<span>{{ .Lang | upper }}</span>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<ul class="gdoc-language__list">
|
||||||
|
{{ if $.Translations }}
|
||||||
|
{{ range $.Translations }}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class="flex gdoc-language__entry"
|
||||||
|
title="{{ .Language.LanguageName }}"
|
||||||
|
href="{{ .RelPermalink }}"
|
||||||
|
hreflang="{{ .Lang }}"
|
||||||
|
lang="{{ .Lang }}"
|
||||||
|
>
|
||||||
|
{{ .Language.LanguageName }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ range .Site.Languages -}}
|
||||||
|
{{ if ne $.Site.Language.Lang .Lang }}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class="flex gdoc-language__entry"
|
||||||
|
title="{{ i18n "language_switch_no_tranlation_prefix" }} {{ .LanguageName }}"
|
||||||
|
href="{{ .Lang | relLangURL }}"
|
||||||
|
hreflang="{{ .Lang }}"
|
||||||
|
lang="{{ .Lang }}"
|
||||||
|
>
|
||||||
|
{{ .LanguageName }}*
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end -}}
|
||||||
|
{{ end -}}
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
81
docs/themes/hugo-geekdoc/layouts/partials/menu-bundle.html
vendored
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
{{ $current := .current }}
|
||||||
|
{{ template "menu-file" dict "sect" .source "current" $current "site" $current.Site }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- template -->
|
||||||
|
{{ define "menu-file" }}
|
||||||
|
{{ $current := .current }}
|
||||||
|
{{ $site := .site }}
|
||||||
|
|
||||||
|
|
||||||
|
<ul class="gdoc-nav__list">
|
||||||
|
{{ range sort (default (seq 0) .sect) "weight" }}
|
||||||
|
{{ $name := .name }}
|
||||||
|
{{ if reflect.IsMap .name }}
|
||||||
|
{{ $name = (index .name $site.Language.Lang) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<li>
|
||||||
|
{{ $ref := default false .ref }}
|
||||||
|
{{ if $ref }}
|
||||||
|
{{ $this := $site.GetPage .ref }}
|
||||||
|
{{ $icon := default false .icon }}
|
||||||
|
{{ $numberOfPages := (add (len $this.Pages) (len $this.Sections)) }}
|
||||||
|
{{ $isCurrent := eq $current $this }}
|
||||||
|
{{ $isAncestor := $this.IsAncestor $current }}
|
||||||
|
{{ $id := substr (sha1 $this.Permalink) 0 8 }}
|
||||||
|
{{ $doCollapse := and (isset . "sub") (or $this.Params.GeekdocCollapseSection (default false .Site.Params.GeekdocCollapseAllSections)) }}
|
||||||
|
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
{{ if $doCollapse }}
|
||||||
|
class="gdoc-nav__toggle" id="{{ printf "navtree-%s" $id }}"
|
||||||
|
{{ if or $isCurrent $isAncestor }}checked{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
class="hidden"
|
||||||
|
{{ end }}
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
{{ if $doCollapse }}
|
||||||
|
for="{{ printf "navtree-%s" $id }}" class="flex justify-between"
|
||||||
|
{{ end }}
|
||||||
|
>
|
||||||
|
<span class="flex">
|
||||||
|
{{ if $icon }}
|
||||||
|
<svg class="icon {{ .icon }}"><use xlink:href="#{{ .icon }}"></use></svg>
|
||||||
|
{{ end }}
|
||||||
|
<a
|
||||||
|
href="{{ if .external }}
|
||||||
|
{{ .ref }}
|
||||||
|
{{ else }}
|
||||||
|
{{ relref $current .ref }}
|
||||||
|
{{ end }}"
|
||||||
|
class="gdoc-nav__entry{{- if not .external }}
|
||||||
|
{{- if $isCurrent }}{{ printf " is-active" }}{{ end }}
|
||||||
|
{{- end }}"
|
||||||
|
>
|
||||||
|
{{ $name }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{{ if $doCollapse }}
|
||||||
|
<svg class="icon toggle gdoc_keyboard_arrow_left">
|
||||||
|
<use xlink:href="#gdoc_keyboard_arrow_left"></use>
|
||||||
|
</svg>
|
||||||
|
<svg class="icon toggle gdoc_keyboard_arrow_down hidden">
|
||||||
|
<use xlink:href="#gdoc_keyboard_arrow_down"></use>
|
||||||
|
</svg>
|
||||||
|
{{ end }}
|
||||||
|
</label>
|
||||||
|
{{ else }}
|
||||||
|
<span class="flex">{{ $name }}</span>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ with .sub }}
|
||||||
|
{{ template "menu-file" dict "sect" . "current" $current "site" $site }}
|
||||||
|
{{ end }}
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ end }}
|
||||||
46
docs/themes/hugo-geekdoc/layouts/partials/menu-extra.html
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
{{ $current := .current }}
|
||||||
|
{{ template "menu-extra" dict "sect" .source "current" $current "site" $current.Site "target" .target }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- template -->
|
||||||
|
{{ define "menu-extra" }}
|
||||||
|
{{ $current := .current }}
|
||||||
|
{{ $site := .site }}
|
||||||
|
{{ $target := .target }}
|
||||||
|
{{ $sect := .sect }}
|
||||||
|
|
||||||
|
{{ range sort (default (seq 0) $sect) "weight" }}
|
||||||
|
{{ if isset . "ref" }}
|
||||||
|
{{ $this := $site.GetPage .ref }}
|
||||||
|
{{ $isCurrent := eq $current $this }}
|
||||||
|
{{ $icon := default false .icon }}
|
||||||
|
|
||||||
|
{{ $name := .name }}
|
||||||
|
{{ if reflect.IsMap .name }}
|
||||||
|
{{ $name = (index .name $site.Language.Lang) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not .icon }}
|
||||||
|
{{ errorf "Missing 'icon' attribute in data file for '%s' menu item '%s'" $target $name }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if eq $target "header" }}
|
||||||
|
<span>
|
||||||
|
<a
|
||||||
|
href="{{ if .external }}
|
||||||
|
{{ .ref }}
|
||||||
|
{{ else }}
|
||||||
|
{{ relref $current .ref }}
|
||||||
|
{{ end }}"
|
||||||
|
class="gdoc-header__link"
|
||||||
|
>
|
||||||
|
<svg class="icon {{ .icon }}">
|
||||||
|
<title>{{ $name }}</title>
|
||||||
|
<use xlink:href="#{{ .icon }}"></use>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
99
docs/themes/hugo-geekdoc/layouts/partials/menu-filetree.html
vendored
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
{{ $current := . }}
|
||||||
|
{{ template "tree-nav" dict "sect" .Site.Home.Sections "current" $current }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- templates -->
|
||||||
|
{{ define "tree-nav" }}
|
||||||
|
{{ $current := .current }}
|
||||||
|
|
||||||
|
|
||||||
|
<ul class="gdoc-nav__list">
|
||||||
|
{{ $sortBy := (default "title" .current.Site.Params.GeekdocFileTreeSortBy | lower) }}
|
||||||
|
{{ range .sect.GroupBy "Weight" }}
|
||||||
|
{{ $rangeBy := .ByTitle }}
|
||||||
|
|
||||||
|
{{ if eq $sortBy "title" }}
|
||||||
|
{{ $rangeBy = .ByTitle }}
|
||||||
|
{{ else if eq $sortBy "linktitle" }}
|
||||||
|
{{ $rangeBy = .ByLinkTitle }}
|
||||||
|
{{ else if eq $sortBy "date" }}
|
||||||
|
{{ $rangeBy = .ByDate }}
|
||||||
|
{{ else if eq $sortBy "publishdate" }}
|
||||||
|
{{ $rangeBy = .ByPublishDate }}
|
||||||
|
{{ else if eq $sortBy "expirydate" }}
|
||||||
|
{{ $rangeBy = .ByExpiryDate }}
|
||||||
|
{{ else if eq $sortBy "lastmod" }}
|
||||||
|
{{ $rangeBy = .ByLastmod }}
|
||||||
|
{{ else if eq $sortBy "title_reverse" }}
|
||||||
|
{{ $rangeBy = .ByTitle.Reverse }}
|
||||||
|
{{ else if eq $sortBy "linktitle_reverse" }}
|
||||||
|
{{ $rangeBy = .ByLinkTitle.Reverse }}
|
||||||
|
{{ else if eq $sortBy "date_reverse" }}
|
||||||
|
{{ $rangeBy = .ByDate.Reverse }}
|
||||||
|
{{ else if eq $sortBy "publishdate_reverse" }}
|
||||||
|
{{ $rangeBy = .ByPublishDate.Reverse }}
|
||||||
|
{{ else if eq $sortBy "expirydate_reverse" }}
|
||||||
|
{{ $rangeBy = .ByExpiryDate.Reverse }}
|
||||||
|
{{ else if eq $sortBy "lastmod_reverse" }}
|
||||||
|
{{ $rangeBy = .ByLastmod.Reverse }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ range $rangeBy }}
|
||||||
|
{{ if not .Params.GeekdocHidden }}
|
||||||
|
|
||||||
|
{{ $numberOfPages := (add (len .Pages) (len .Sections)) }}
|
||||||
|
{{ $isParent := and (ne $numberOfPages 0) (not .Params.GeekdocFlatSection) }}
|
||||||
|
{{ $isCurrent := eq $current . }}
|
||||||
|
{{ $isAncestor := .IsAncestor $current }}
|
||||||
|
{{ $id := substr (sha1 .Permalink) 0 8 }}
|
||||||
|
{{ $doCollapse := and $isParent (or .Params.GeekdocCollapseSection (default false .Site.Params.GeekdocCollapseAllSections)) }}
|
||||||
|
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
{{ if $doCollapse }}
|
||||||
|
class="gdoc-nav__toggle" id="{{ printf "navtree-%s" $id }}"
|
||||||
|
{{ if or $isCurrent $isAncestor }}checked{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
class="hidden"
|
||||||
|
{{ end }}
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
{{ if $doCollapse }}
|
||||||
|
for="{{ printf "navtree-%s" $id }}" class="flex justify-between"
|
||||||
|
{{ end }}
|
||||||
|
>
|
||||||
|
{{ if or .Content .Params.GeekdocFlatSection }}
|
||||||
|
<span class="flex">
|
||||||
|
<a
|
||||||
|
href="{{ .RelPermalink }}"
|
||||||
|
class="gdoc-nav__entry{{- if eq $current . }}
|
||||||
|
{{- printf " is-active" }}
|
||||||
|
{{- end }}"
|
||||||
|
>
|
||||||
|
{{ partial "utils/title" . }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{{ else }}
|
||||||
|
<span class="flex">{{ partial "utils/title" . }}</span>
|
||||||
|
{{ end }}
|
||||||
|
{{ if $doCollapse }}
|
||||||
|
<svg class="icon toggle gdoc_keyboard_arrow_left">
|
||||||
|
<use xlink:href="#gdoc_keyboard_arrow_left"></use>
|
||||||
|
</svg>
|
||||||
|
<svg class="icon toggle gdoc_keyboard_arrow_down">
|
||||||
|
<use xlink:href="#gdoc_keyboard_arrow_down"></use>
|
||||||
|
</svg>
|
||||||
|
{{ end }}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
{{ if $isParent }}
|
||||||
|
{{ template "tree-nav" dict "sect" .Pages "current" $current }}
|
||||||
|
{{ end }}
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ end }}
|
||||||
78
docs/themes/hugo-geekdoc/layouts/partials/menu-nextprev.html
vendored
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
{{ $current := . }}
|
||||||
|
{{ $site := .Site }}
|
||||||
|
{{ $current.Scratch.Set "prev" false }}
|
||||||
|
{{ $current.Scratch.Set "getNext" false }}
|
||||||
|
|
||||||
|
{{ $current.Scratch.Set "nextPage" false }}
|
||||||
|
{{ $current.Scratch.Set "prevPage" false }}
|
||||||
|
|
||||||
|
{{ template "menu_nextprev" dict "sect" $.Site.Data.menu.main.main "current" $current "site" $site }}
|
||||||
|
|
||||||
|
{{ define "menu_nextprev" }}
|
||||||
|
{{ $current := .current }}
|
||||||
|
{{ $site := .site }}
|
||||||
|
|
||||||
|
{{ range sort (default (seq 0) .sect) "weight" }}
|
||||||
|
{{ $current.Scratch.Set "current" $current }}
|
||||||
|
{{ $current.Scratch.Set "site" $site }}
|
||||||
|
|
||||||
|
{{ $ref := default false .ref }}
|
||||||
|
{{ if $ref }}
|
||||||
|
{{ $site := $current.Scratch.Get "site" }}
|
||||||
|
{{ $this := $site.GetPage .ref }}
|
||||||
|
{{ $current := $current.Scratch.Get "current" }}
|
||||||
|
|
||||||
|
{{ if reflect.IsMap .name }}
|
||||||
|
{{ $current.Scratch.Set "refName" (index .name $site.Language.Lang) }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $current.Scratch.Set "refName" .name }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $name := $current.Scratch.Get "refName" }}
|
||||||
|
|
||||||
|
{{ if $current.Scratch.Get "getNext" }}
|
||||||
|
{{ $current.Scratch.Set "nextPage" (dict "name" $name "this" $this) }}
|
||||||
|
{{ $current.Scratch.Set "getNext" false }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if eq $current $this }}
|
||||||
|
{{ $current.Scratch.Set "prevPage" ($current.Scratch.Get "prev") }}
|
||||||
|
{{ $current.Scratch.Set "getNext" true }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $current.Scratch.Set "prev" (dict "name" $name "this" $this) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $sub := default false .sub }}
|
||||||
|
{{ if $sub }}
|
||||||
|
{{ template "menu_nextprev" dict "sect" $sub "current" ($current.Scratch.Get "current") "site" ($current.Scratch.Get "site") }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $showPrevNext := (and (default true .Site.Params.GeekdocNextPrev) .Site.Params.GeekdocMenuBundle) }}
|
||||||
|
{{ if $showPrevNext }}
|
||||||
|
<span class="gdoc-page__nav">
|
||||||
|
{{ with ($current.Scratch.Get "prevPage") }}
|
||||||
|
<a
|
||||||
|
class="gdoc-page__nav--prev flex align-center"
|
||||||
|
href="{{ .this.RelPermalink }}"
|
||||||
|
title="{{ .name }}"
|
||||||
|
>
|
||||||
|
<i class="gdoc-icon">gdoc_arrow_left_alt</i>
|
||||||
|
{{ .name }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</span>
|
||||||
|
<span class="gdoc-page__nav">
|
||||||
|
{{ with ($current.Scratch.Get "nextPage") }}
|
||||||
|
<a
|
||||||
|
class="gdoc-page__nav--next flex align-center"
|
||||||
|
href="{{ .this.RelPermalink }}"
|
||||||
|
title="{{ .name }}"
|
||||||
|
>
|
||||||
|
{{ .name }}
|
||||||
|
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
44
docs/themes/hugo-geekdoc/layouts/partials/menu.html
vendored
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
<nav>
|
||||||
|
{{ partial "search" . }}
|
||||||
|
|
||||||
|
|
||||||
|
<section class="gdoc-nav--main">
|
||||||
|
<h2>{{ i18n "nav_navigation" }}</h2>
|
||||||
|
{{ if .Site.Params.GeekdocMenuBundle }}
|
||||||
|
{{ partial "menu-bundle" (dict "current" . "source" .Site.Data.menu.main.main) }}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "menu-filetree" . }}
|
||||||
|
{{ end }}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{ if and (in (slice "posts" "tags") .Section) (default false .Site.Params.GeekdocTagsToMenu) }}
|
||||||
|
<section class="gdoc-nav--tags">
|
||||||
|
<h2>{{ i18n "nav_tags" }}</h2>
|
||||||
|
<ul class="gdoc-nav__list">
|
||||||
|
{{ $currentPage := .RelPermalink }}
|
||||||
|
{{ range $name, $taxonomy := .Site.Taxonomies.tags }}
|
||||||
|
{{ with $.Site.GetPage (printf "/tags/%s" $name) }}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class="gdoc-nav__entry{{- if eq $currentPage .RelPermalink }}
|
||||||
|
{{- printf " is-active" }}
|
||||||
|
{{- end }}"
|
||||||
|
href="{{ .RelPermalink }}"
|
||||||
|
>
|
||||||
|
{{ partial "utils/title" . }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<section class="gdoc-nav--more">
|
||||||
|
{{ if .Site.Data.menu.more.more }}
|
||||||
|
<h2>{{ i18n "nav_more" }}</h2>
|
||||||
|
{{ partial "menu-bundle" (dict "current" . "source" .Site.Data.menu.more.more) }}
|
||||||
|
{{ end }}
|
||||||
|
</section>
|
||||||
|
</nav>
|
||||||
68
docs/themes/hugo-geekdoc/layouts/partials/microformats/opengraph.html
vendored
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
|
||||||
|
|
||||||
|
{{- if ne .Kind "home" }}
|
||||||
|
<meta
|
||||||
|
property="og:title"
|
||||||
|
{{ partial "utils/title" . | printf "content=%q" | safeHTMLAttr }}
|
||||||
|
/>
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Site.Title }}
|
||||||
|
<meta property="og:site_name" {{ . | printf "content=%q" | safeHTMLAttr }} />
|
||||||
|
{{- end }}
|
||||||
|
{{- with partial "utils/featured" . }}
|
||||||
|
<meta property="og:image" content="{{ . }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- with partial "utils/description" . }}
|
||||||
|
<meta property="og:description" content="{{ . | plainify | htmlUnescape | chomp }}" />
|
||||||
|
{{- end }}
|
||||||
|
<meta property="og:type" content="{{ if $isPage }}article{{ else }}website{{ end }}" />
|
||||||
|
<meta property="og:url" content="{{ .Permalink }}" />
|
||||||
|
{{- with .Params.audio }}
|
||||||
|
<meta property="og:audio" content="{{ . }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Params.locale }}
|
||||||
|
<meta property="og:locale" content="{{ . }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Params.videos }}
|
||||||
|
{{- range . }}
|
||||||
|
<meta property="og:video" content="{{ . | absURL }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* If it is part of a series, link to related articles */}}
|
||||||
|
{{- if .Site.Taxonomies.series }}
|
||||||
|
{{- $permalink := .Permalink -}}
|
||||||
|
{{- $siteSeries := .Site.Taxonomies.series -}}
|
||||||
|
{{- with .Params.series }}
|
||||||
|
{{- range $name := . }}
|
||||||
|
{{- $series := index $siteSeries ($name | urlize) }}
|
||||||
|
{{- range $page := first 6 $series.Pages }}
|
||||||
|
{{- if ne $page.Permalink $permalink }}
|
||||||
|
<meta property="og:see_also" content="{{ $page.Permalink }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{ if $isPage -}}
|
||||||
|
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
|
||||||
|
<meta property="article:section" content="{{ .Section | humanize | title }}" />
|
||||||
|
{{- with .PublishDate }}
|
||||||
|
<meta
|
||||||
|
property="article:published_time"
|
||||||
|
{{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }}
|
||||||
|
/>
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Lastmod }}
|
||||||
|
<meta
|
||||||
|
property="article:modified_time"
|
||||||
|
{{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }}
|
||||||
|
/>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Facebook Page Admin ID for Domain Insights */}}
|
||||||
|
{{- with .Site.Social.facebook_admin }}
|
||||||
|
<meta property="fb:admins" content="{{ . }}" />
|
||||||
|
{{- end }}
|
||||||
70
docs/themes/hugo-geekdoc/layouts/partials/microformats/schema.html
vendored
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
|
||||||
|
{{- if eq .Kind "home" }}
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "http://schema.org",
|
||||||
|
"@type": "WebSite",
|
||||||
|
"name": {{ .Site.Title }},
|
||||||
|
"url": {{ .Site.BaseURL }},
|
||||||
|
{{- with partial "utils/description" . }}
|
||||||
|
"description": "{{ . | plainify | htmlUnescape | chomp }}",
|
||||||
|
{{- end }}
|
||||||
|
{{- with partial "utils/featured" . }}
|
||||||
|
"thumbnailUrl": {{ . }},
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Site.Params.GeekdocContentLicense }}
|
||||||
|
"license": "{{ .name }}",
|
||||||
|
{{- end }}
|
||||||
|
"inLanguage": {{ .Lang }}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{{- else if $isPage }}
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "http://schema.org",
|
||||||
|
"@type": "TechArticle",
|
||||||
|
"articleSection": "{{ .Section | humanize | title }}",
|
||||||
|
"name": {{ partial "utils/title" . }},
|
||||||
|
"url" : {{ .Permalink }},
|
||||||
|
"headline": {{ partial "utils/title" . }},
|
||||||
|
{{- with .Params.lead }}
|
||||||
|
"alternativeHeadline": {{ . }},
|
||||||
|
{{- end }}
|
||||||
|
{{- with partial "utils/description" . }}
|
||||||
|
"description": "{{ . | plainify | htmlUnescape | chomp }}",
|
||||||
|
{{- end }}
|
||||||
|
{{- with partial "utils/featured" . }}
|
||||||
|
"thumbnailUrl": {{ . }},
|
||||||
|
{{- end }}
|
||||||
|
"wordCount" : "{{ .WordCount }}",
|
||||||
|
{{- with .Site.Params.GeekdocContentLicense }}
|
||||||
|
"license": "{{ .name }}",
|
||||||
|
{{- end }}
|
||||||
|
"inLanguage": {{ .Lang }},
|
||||||
|
"isFamilyFriendly": "true",
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": {{ .Permalink }}
|
||||||
|
},
|
||||||
|
{{- with $tags := .Params.tags }}
|
||||||
|
"keywords" : [ {{ range $i, $tag := $tags }}{{ if $i }}, {{ end }}"{{ $tag }}" {{ end }}],
|
||||||
|
{{- end }}
|
||||||
|
"copyrightHolder" : "{{ .Site.Title }}",
|
||||||
|
"copyrightYear" : "{{ .Date.Format "2006" }}",
|
||||||
|
"dateCreated": "{{ .Date.Format "2006-01-02T15:04:05.00Z" | safeJS }}",
|
||||||
|
"datePublished": "{{ .PublishDate.Format "2006-01-02T15:04:05.00Z" | safeJS }}",
|
||||||
|
"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05.00Z" | safeJS }}",
|
||||||
|
"publisher":{
|
||||||
|
"@type":"Organization",
|
||||||
|
"name": {{ .Site.Title }},
|
||||||
|
"url": {{ .Site.BaseURL }},
|
||||||
|
"logo": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": {{ (default "brand.svg" .Site.Params.logo) | absURL }},
|
||||||
|
"width":"32",
|
||||||
|
"height":"32"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{{- end }}
|
||||||
15
docs/themes/hugo-geekdoc/layouts/partials/microformats/twitter_cards.html
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{{- with partial "utils/featured" . }}
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
{{- else }}
|
||||||
|
<meta name="twitter:card" content="summary" />
|
||||||
|
{{- end }}
|
||||||
|
<meta name="twitter:title" {{ partial "utils/title" . | printf "content=%q" | safeHTMLAttr }} />
|
||||||
|
{{- with partial "utils/featured" . }}
|
||||||
|
<meta property="twitter:image" content="{{ . }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- with partial "utils/description" . }}
|
||||||
|
<meta name="twitter:description" content="{{ . | plainify | htmlUnescape | chomp }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Site.Social.twitter -}}
|
||||||
|
<meta name="twitter:site" content="@{{ . }}" />
|
||||||
|
{{- end }}
|
||||||
57
docs/themes/hugo-geekdoc/layouts/partials/page-header.html
vendored
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
{{ $geekdocRepo := default (default false .Site.Params.GeekdocRepo) .Page.Params.GeekdocRepo }}
|
||||||
|
{{ $geekdocEditPath := default (default false .Site.Params.GeekdocEditPath) .Page.Params.GeekdocEditPath }}
|
||||||
|
{{ if .File }}
|
||||||
|
{{ $.Scratch.Set "geekdocFilePath" (default (path.Join (default "content" .Site.Params.contentDir) .File.Path) .Page.Params.GeekdocFilePath) }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $.Scratch.Set "geekdocFilePath" false }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "breadcrumb" }}
|
||||||
|
{{ $parent := .page.Parent }}
|
||||||
|
{{ if $parent }}
|
||||||
|
{{ $name := (partial "utils/title" $parent) }}
|
||||||
|
{{ $position := (sub .position 1) }}
|
||||||
|
{{ $value := (printf "<li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><a itemscope itemtype='https://schema.org/WebPage' itemprop='item' itemid='%s' href='%s'><span itemprop='name'>%s</span></a><meta itemprop='position' content='%d' /></li><li> / </li>%s" $parent.RelPermalink $parent.RelPermalink $name $position .value) }}
|
||||||
|
{{ template "breadcrumb" dict "page" $parent "value" $value "position" $position }}
|
||||||
|
{{ else }}
|
||||||
|
{{ .value | safeHTML }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $showBreadcrumb := (and (default true .Page.Params.GeekdocBreadcrumb) (default true .Site.Params.GeekdocBreadcrumb)) }}
|
||||||
|
{{ $showEdit := (and ($.Scratch.Get "geekdocFilePath") $geekdocRepo $geekdocEditPath) }}
|
||||||
|
<div
|
||||||
|
class="gdoc-page__header flex flex-wrap
|
||||||
|
{{ if $showBreadcrumb }}
|
||||||
|
justify-between
|
||||||
|
{{ else }}
|
||||||
|
justify-end
|
||||||
|
{{ end }}
|
||||||
|
{{ if not $showEdit }}hidden-mobile{{ end }}
|
||||||
|
{{ if (and (not $showBreadcrumb) (not $showEdit)) }}hidden{{ end }}"
|
||||||
|
itemprop="breadcrumb"
|
||||||
|
>
|
||||||
|
{{ if $showBreadcrumb }}
|
||||||
|
<div>
|
||||||
|
<svg class="icon gdoc_path hidden-mobile"><use xlink:href="#gdoc_path"></use></svg>
|
||||||
|
<ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||||
|
{{ $position := sub (len (split .RelPermalink "/")) 1 }}
|
||||||
|
{{ $name := (partial "utils/title" .) }}
|
||||||
|
{{ $value := (printf "<li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><span itemprop='name'>%s</span><meta itemprop='position' content='%d' /></li>" $name $position ) }}
|
||||||
|
{{ template "breadcrumb" dict "page" . "value" $value "position" $position }}
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
{{ if $showEdit }}
|
||||||
|
<div>
|
||||||
|
<span class="editpage">
|
||||||
|
<svg class="icon gdoc_code"><use xlink:href="#gdoc_code"></use></svg>
|
||||||
|
<a
|
||||||
|
href="{{ $geekdocRepo }}/{{ path.Join $geekdocEditPath ($.Scratch.Get "geekdocFilePath") }}"
|
||||||
|
>
|
||||||
|
{{ i18n "edit_page" }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
48
docs/themes/hugo-geekdoc/layouts/partials/posts/metadata.html
vendored
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
<span class="flex align-center no-wrap">
|
||||||
|
<svg class="icon gdoc_date"><use xlink:href="#gdoc_date"></use></svg>
|
||||||
|
<span class="gdoc-post__tag">
|
||||||
|
<time datetime="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
|
||||||
|
{{ if .Lastmod.After (.Date.AddDate 0 0 1) }}
|
||||||
|
{{ i18n "posts_update_prefix" }}
|
||||||
|
{{ end }}
|
||||||
|
{{ .Lastmod.Format "Jan 2, 2006" }}
|
||||||
|
</time>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span class="flex align-center no-wrap">
|
||||||
|
<svg class="icon gdoc_timer"><use xlink:href="#gdoc_timer"></use></svg>
|
||||||
|
<span class="gdoc-post__tag">{{ i18n "posts_read_time" .ReadingTime }}</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{{ $tc := 0 }}
|
||||||
|
{{ with .Params.tags }}
|
||||||
|
{{ range sort . }}
|
||||||
|
{{ $name := . }}
|
||||||
|
{{ with $.Site.GetPage (printf "/tags/%s" $name | urlize) }}
|
||||||
|
{{ if eq $tc 0 }}
|
||||||
|
<span class="flex align-center no-wrap">
|
||||||
|
<svg class="icon gdoc_bookmark"><use xlink:href="#gdoc_bookmark"></use></svg>
|
||||||
|
{{ template "post-tag" dict "name" $name "page" . }}
|
||||||
|
</span>
|
||||||
|
{{ else }}
|
||||||
|
<span class="flex align-center">
|
||||||
|
{{ template "post-tag" dict "name" $name "page" . }}
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $tc = (add $tc 1) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "post-tag" }}
|
||||||
|
<span class="gdoc-post__tag gdoc-button gdoc-button--regular">
|
||||||
|
<a
|
||||||
|
class="gdoc-button__link"
|
||||||
|
href="{{ .page.RelPermalink }}"
|
||||||
|
title="{{ i18n "posts_tagged_with" .name }}"
|
||||||
|
>
|
||||||
|
{{ .name }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
17
docs/themes/hugo-geekdoc/layouts/partials/search.html
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{{ if default true .Site.Params.GeekdocSearch }}
|
||||||
|
<div class="gdoc-search">
|
||||||
|
<svg class="icon gdoc_search"><use xlink:href="#gdoc_search"></use></svg>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
id="gdoc-search-input"
|
||||||
|
class="gdoc-search__input"
|
||||||
|
placeholder="{{ i18n "form_placeholder_search" }}"
|
||||||
|
aria-label="{{ i18n "form_placeholder_search" }}"
|
||||||
|
maxlength="64"
|
||||||
|
data-site-base-url="{{ .Site.BaseURL }}"
|
||||||
|
data-site-lang="{{ .Site.Language.Lang }}"
|
||||||
|
/>
|
||||||
|
<div class="gdoc-search__spinner spinner hidden"></div>
|
||||||
|
<ul id="gdoc-search-results" class="gdoc-search__list"></ul>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
45
docs/themes/hugo-geekdoc/layouts/partials/site-footer.html
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
<footer class="gdoc-footer">
|
||||||
|
<nav class="container flex">
|
||||||
|
<div>
|
||||||
|
<section class="flex flex-wrap align-center">
|
||||||
|
<span class="gdoc-footer__item gdoc-footer__item--row">
|
||||||
|
{{ i18n "footer_build_with" | safeHTML }}
|
||||||
|
</span>
|
||||||
|
{{ with .Site.Params.GeekdocLegalNotice }}
|
||||||
|
<span class="gdoc-footer__item gdoc-footer__item--row">
|
||||||
|
<a href="{{ . | relURL }}" class="gdoc-footer__link">
|
||||||
|
{{ i18n "footer_legal_notice" }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Site.Params.GeekdocPrivacyPolicy }}
|
||||||
|
<span class="gdoc-footer__item gdoc-footer__item--row">
|
||||||
|
<a href="{{ . | relURL }}" class="gdoc-footer__link">
|
||||||
|
{{ i18n "footer_privacy_policy" }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
|
</section>
|
||||||
|
{{ with .Site.Params.GeekdocContentLicense }}
|
||||||
|
<section class="flex flex-wrap align-center">
|
||||||
|
<span class="gdoc-footer__item">
|
||||||
|
{{ i18n "footer_content_license_prefix" }}
|
||||||
|
<a href="{{ .link }}" class="gdoc-footer__link no-wrap">{{ .name }}</a>
|
||||||
|
</span>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ if (default true .Site.Params.GeekdocBackToTop) }}
|
||||||
|
<div class="flex flex-25 justify-end">
|
||||||
|
<span class="gdoc-footer__item text-right">
|
||||||
|
<a class="gdoc-footer__link fake-link" href="#" aria-label="{{ i18n "nav_top" }}">
|
||||||
|
<svg class="icon gdoc_keyboard_arrow_up">
|
||||||
|
<use xlink:href="#gdoc_keyboard_arrow_up"></use>
|
||||||
|
</svg>
|
||||||
|
<span class="hidden-mobile">{{ i18n "nav_top" }}</span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</nav>
|
||||||
|
</footer>
|
||||||
78
docs/themes/hugo-geekdoc/layouts/partials/site-header.html
vendored
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
<header class="gdoc-header">
|
||||||
|
<div class="container flex align-center justify-between">
|
||||||
|
{{ if .MenuEnabled }}
|
||||||
|
<label for="menu-control" class="gdoc-nav__control" tabindex="0">
|
||||||
|
<svg class="icon gdoc_menu">
|
||||||
|
<title>{{ i18n "button_nav_open" }}</title>
|
||||||
|
<use xlink:href="#gdoc_menu"></use>
|
||||||
|
</svg>
|
||||||
|
<svg class="icon gdoc_arrow_back">
|
||||||
|
<title>{{ i18n "button_nav_close" }}</title>
|
||||||
|
<use xlink:href="#gdoc_arrow_back"></use>
|
||||||
|
</svg>
|
||||||
|
</label>
|
||||||
|
{{ end }}
|
||||||
|
<div>
|
||||||
|
<a class="gdoc-brand gdoc-header__link" href="{{ .Root.Site.BaseURL }}">
|
||||||
|
<span class="flex align-center">
|
||||||
|
<img
|
||||||
|
class="gdoc-brand__img"
|
||||||
|
src="{{ (default "brand.svg" .Root.Site.Params.GeekdocLogo) | relURL }}"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
<span class="gdoc-brand__title">{{ .Root.Site.Title }}</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="gdoc-menu-header">
|
||||||
|
<span class="gdoc-menu-header__items">
|
||||||
|
{{ if .Root.Site.Data.menu.extra.header }}
|
||||||
|
{{ partial "menu-extra" (dict "current" .Root "source" .Root.Site.Data.menu.extra.header "target" "header") }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<span id="gdoc-dark-mode">
|
||||||
|
<svg class="icon gdoc_brightness_dark">
|
||||||
|
<title>{{ i18n "button_toggle_dark" }}</title>
|
||||||
|
<use xlink:href="#gdoc_brightness_dark"></use>
|
||||||
|
</svg>
|
||||||
|
<svg class="icon gdoc_brightness_light">
|
||||||
|
<title>{{ i18n "button_toggle_dark" }}</title>
|
||||||
|
<use xlink:href="#gdoc_brightness_light"></use>
|
||||||
|
</svg>
|
||||||
|
<svg class="icon gdoc_brightness_auto">
|
||||||
|
<title>{{ i18n "button_toggle_dark" }}</title>
|
||||||
|
<use xlink:href="#gdoc_brightness_auto"></use>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span class="gdoc-menu-header__home">
|
||||||
|
<a href="{{ .Root.Site.BaseURL }}" class="gdoc-header__link">
|
||||||
|
<svg class="icon gdoc_home">
|
||||||
|
<title>{{ i18n "button_homepage" }}</title>
|
||||||
|
<use xlink:href="#gdoc_home"></use>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{{ partial "language" .Root }}
|
||||||
|
|
||||||
|
|
||||||
|
<span class="gdoc-menu-header__control">
|
||||||
|
<label for="menu-header-control">
|
||||||
|
<svg class="icon gdoc_keyboard_arrow_right">
|
||||||
|
<use xlink:href="#gdoc_keyboard_arrow_right"></use>
|
||||||
|
<title>{{ i18n "button_menu_close" }}</title>
|
||||||
|
</svg>
|
||||||
|
</label>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<label for="menu-header-control" class="gdoc-menu-header__control">
|
||||||
|
<svg class="icon gdoc_keyboard_arrow_left">
|
||||||
|
<use xlink:href="#gdoc_keyboard_arrow_left"></use>
|
||||||
|
<title>{{ i18n "button_menu_open" }}</title>
|
||||||
|
</svg>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
4
docs/themes/hugo-geekdoc/layouts/partials/svg-icon-symbols.html
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{{ range resources.Match "sprites/*.svg" }}
|
||||||
|
{{ printf "<!-- geekdoc include: %s -->" . | safeHTML }}
|
||||||
|
{{ .Content | safeHTML }}
|
||||||
|
{{ end }}
|
||||||
6
docs/themes/hugo-geekdoc/layouts/partials/utils/content.html
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{{ $content := .Content }}
|
||||||
|
|
||||||
|
{{ $content = $content | replaceRE `<nav id="TableOfContents">\s*<ul>\s*<li>\s*<ul>` `<nav id="TableOfContents"><ul>` | replaceRE `</ul>\s*</li>\s*</ul>\s*</nav>` `</ul></nav>` | safeHTML }}
|
||||||
|
{{ $content = $content | replaceRE `(<table>(?:.|\n)+?</table>)` `<div class=table-wrap> ${1} </div>` | safeHTML }}
|
||||||
|
|
||||||
|
{{ return $content }}
|
||||||
14
docs/themes/hugo-geekdoc/layouts/partials/utils/description.html
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
|
||||||
|
{{ $description := "" }}
|
||||||
|
|
||||||
|
{{ if .Description }}
|
||||||
|
{{ $description = .Description }}
|
||||||
|
{{ else }}
|
||||||
|
{{ if $isPage }}
|
||||||
|
{{ $description = .Summary }}
|
||||||
|
{{ else if .Site.Params.description }}
|
||||||
|
{{ $description = .Site.Params.description }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ return $description }}
|
||||||
12
docs/themes/hugo-geekdoc/layouts/partials/utils/featured.html
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{{ $img := "" }}
|
||||||
|
|
||||||
|
{{ with $source := ($.Resources.ByType "image").GetMatch "{*feature*,*cover*,*thumbnail*}" }}
|
||||||
|
{{ $featured := .Fill (printf "1200x630 %s" (default "Smart" .Params.anchor)) }}
|
||||||
|
{{ $img = $featured.Permalink }}
|
||||||
|
{{ else }}
|
||||||
|
{{ with default $.Site.Params.images $.Params.images }}
|
||||||
|
{{ $img = index . 0 | absURL }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ return $img }}
|
||||||
11
docs/themes/hugo-geekdoc/layouts/partials/utils/title.html
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{{ $title := "" }}
|
||||||
|
|
||||||
|
{{ if .Title }}
|
||||||
|
{{ $title = .Title }}
|
||||||
|
{{ else if and .IsSection .File }}
|
||||||
|
{{ $title = path.Base .File.Dir | humanize | title }}
|
||||||
|
{{ else if and .IsPage .File }}
|
||||||
|
{{ $title = .File.BaseFileName | humanize | title }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ return $title }}
|
||||||
46
docs/themes/hugo-geekdoc/layouts/posts/list.html
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
{{ range .Paginator.Pages }}
|
||||||
|
<article class="gdoc-markdown gdoc-post">
|
||||||
|
<header class="gdoc-post__header">
|
||||||
|
<h1 class="gdoc-post__title">
|
||||||
|
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
<section>
|
||||||
|
{{ .Summary }}
|
||||||
|
</section>
|
||||||
|
<div class="gdoc-post__readmore">
|
||||||
|
{{ if .Truncated }}
|
||||||
|
<a
|
||||||
|
class="flex-inline align-center fake-link"
|
||||||
|
title="{{ i18n "posts_read_more" }}"
|
||||||
|
href="{{ .RelPermalink }}"
|
||||||
|
>
|
||||||
|
{{ i18n "posts_read_more" }}
|
||||||
|
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="gdoc-post__footer">
|
||||||
|
<div class="flex flex-wrap align-center gdoc-post__meta">
|
||||||
|
{{ partial "posts/metadata.html" . }}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "post-tag" }}
|
||||||
|
<span class="gdoc-post__tag">
|
||||||
|
<span class="gdoc-button">
|
||||||
|
<a
|
||||||
|
class="gdoc-button__link"
|
||||||
|
href="{{ .page.RelPermalink }}"
|
||||||
|
title="{{ i18n "posts_tagged_with" .name }}"
|
||||||
|
>
|
||||||
|
{{ .name }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
13
docs/themes/hugo-geekdoc/layouts/posts/single.html
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{{ define "main" }}
|
||||||
|
<article class="gdoc-post">
|
||||||
|
<header class="gdoc-post__header">
|
||||||
|
<h1 class="gdoc-post__title">{{ partial "utils/title" . }}</h1>
|
||||||
|
<div class="flex flex-wrap align-center gdoc-post__meta gdoc-post__meta--head">
|
||||||
|
{{ partial "posts/metadata.html" . }}
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<section class="gdoc-markdown">
|
||||||
|
{{ partial "utils/content" . }}
|
||||||
|
</section>
|
||||||
|
</article>
|
||||||
|
{{ end }}
|
||||||
4
docs/themes/hugo-geekdoc/layouts/robots.txt
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
User-agent: *
|
||||||
|
Disallow: /tags/*
|
||||||
|
|
||||||
|
Sitemap: {{ "sitemap.xml" | absURL }}
|
||||||
27
docs/themes/hugo-geekdoc/layouts/shortcodes/button.html
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{{ $ref := "" }}
|
||||||
|
{{ $target := "" }}
|
||||||
|
{{ $size := default "regular" (.Get "size" | lower) }}
|
||||||
|
|
||||||
|
{{ if not (in (slice "regular" "large") $size) }}
|
||||||
|
{{ $size = "regular" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ with .Get "href" }}
|
||||||
|
{{ $ref = . }}
|
||||||
|
{{ $target = "_blank" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ with .Get "relref" }}
|
||||||
|
{{ $ref = relref $ . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<span class="gdoc-button gdoc-button--{{ $size }}{{ with .Get "class" }}{{ . }}{{ end }}">
|
||||||
|
<a
|
||||||
|
{{ with $ref }}href="{{ . }}"{{ end }}
|
||||||
|
{{ with $target }}target="{{ . }}"{{ end }}
|
||||||
|
class="gdoc-button__link"
|
||||||
|
>
|
||||||
|
{{ $.Inner }}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
7
docs/themes/hugo-geekdoc/layouts/shortcodes/columns.html
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<div class="gdoc-columns flex flex-wrap flex-mobile-column">
|
||||||
|
{{ range split .Inner "<--->" }}
|
||||||
|
<div class="gdoc-columns__content gdoc-markdown--nested flex-even">
|
||||||
|
{{ . | $.Page.RenderString }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
11
docs/themes/hugo-geekdoc/layouts/shortcodes/expand.html
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{{ $id := substr (sha1 .Inner) 0 8 }}
|
||||||
|
<div class="gdoc-expand">
|
||||||
|
<label class="gdoc-expand__head flex justify-between" for="{{ $id }}-{{ .Ordinal }}">
|
||||||
|
<span>{{ default "Expand" (.Get 0) }}</span>
|
||||||
|
<span>{{ default "↕" (.Get 1) }}</span>
|
||||||
|
</label>
|
||||||
|
<input id="{{ $id }}-{{ .Ordinal }}" type="checkbox" class="gdoc-expand__control hidden" />
|
||||||
|
<div class="gdoc-markdown--nested gdoc-expand__content">
|
||||||
|
{{ .Inner | $.Page.RenderString }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
3
docs/themes/hugo-geekdoc/layouts/shortcodes/hint.html
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
<blockquote class="gdoc-hint {{ .Get 0 }}">
|
||||||
|
{{ .Inner | $.Page.RenderString }}
|
||||||
|
</blockquote>
|
||||||
5
docs/themes/hugo-geekdoc/layouts/shortcodes/icon.html
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{{ $id := .Get 0 }}
|
||||||
|
|
||||||
|
{{- with $id -}}
|
||||||
|
<svg class="icon {{ . }}"><use xlink:href="#{{ . }}"></use></svg>
|
||||||
|
{{- end -}}
|
||||||
44
docs/themes/hugo-geekdoc/layouts/shortcodes/img.html
vendored
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
{{ $source := ($.Page.Resources.ByType "image").GetMatch (printf "%s" (.Get "name")) }}
|
||||||
|
{{ $customAlt := .Get "alt" }}
|
||||||
|
{{ $customSize := .Get "size" }}
|
||||||
|
{{ $lazyLoad := default (default true $.Site.Params.GeekdocImageLazyLoading) (.Get "lazy") }}
|
||||||
|
|
||||||
|
{{ with $source }}
|
||||||
|
{{ $caption := default .Title $customAlt }}
|
||||||
|
|
||||||
|
{{ $tiny := (.Resize "320x").Permalink }}
|
||||||
|
{{ $small := (.Resize "600x").Permalink }}
|
||||||
|
{{ $medium := (.Resize "1200x").Permalink }}
|
||||||
|
{{ $large := (.Resize "1800x").Permalink }}
|
||||||
|
|
||||||
|
{{ $size := dict "tiny" $tiny "small" $small "medium" $medium "large" $large }}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="flex justify-center">
|
||||||
|
<figure class="gdoc-markdown__figure">
|
||||||
|
<a class="gdoc-markdown__link--raw" href="{{ .Permalink }}">
|
||||||
|
<picture>
|
||||||
|
<source
|
||||||
|
{{ with $customSize }}
|
||||||
|
srcset="{{ index $size $customSize }}"
|
||||||
|
{{ else }}
|
||||||
|
srcset="{{ $size.small }} 600w, {{ $size.medium }} 1200w" sizes="100vw"
|
||||||
|
{{ end }}
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
{{ if $lazyLoad }}
|
||||||
|
loading="lazy"
|
||||||
|
{{ end }}
|
||||||
|
src="{{ $size.large }}"
|
||||||
|
alt="{{ $caption }}"
|
||||||
|
/>
|
||||||
|
</picture>
|
||||||
|
</a>
|
||||||
|
{{ with $caption -}}
|
||||||
|
<figcaption>
|
||||||
|
{{ . }}{{ with $source.Params.credits }}({{ . | $.Page.RenderString }}){{ end }}
|
||||||
|
</figcaption>
|
||||||
|
{{- end }}
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
18
docs/themes/hugo-geekdoc/layouts/shortcodes/include.html
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{{ $file := .Get "file" }}
|
||||||
|
{{ $page := .Site.GetPage $file }}
|
||||||
|
{{ $type := .Get "type" }}
|
||||||
|
{{ $language := .Get "language" }}
|
||||||
|
{{ $options :=.Get "options" }}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="gdoc-include">
|
||||||
|
{{- if (.Get "language") -}}
|
||||||
|
{{- highlight ($file | readFile) $language (default "linenos=table" $options) -}}
|
||||||
|
{{- else if eq $type "html" -}}
|
||||||
|
{{- $file | readFile | safeHTML -}}
|
||||||
|
{{- else if eq $type "page" -}}
|
||||||
|
{{- with $page }}{{ .Content }}{{ end -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $file | readFile | $.Page.RenderString -}}
|
||||||
|
{{- end -}}
|
||||||
|
</div>
|
||||||
17
docs/themes/hugo-geekdoc/layouts/shortcodes/katex.html
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
{{ if not (.Page.Scratch.Get "katex") }}
|
||||||
|
<!-- Include katex only first time -->
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ index (index .Site.Data.assets "katex.css") "src" | relURL }}"
|
||||||
|
/>
|
||||||
|
<script defer src="{{ index (index .Site.Data.assets "katex.js") "src" | relURL }}"></script>
|
||||||
|
{{ .Page.Scratch.Set "katex" true }}
|
||||||
|
{{ end }}
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
|
||||||
|
<span class="gdoc-katex {{ with .Get "class" }}{{ . }}{{ end }}">
|
||||||
|
{{ cond (in .Params "display") "\\[" "\\(" -}}
|
||||||
|
{{- trim .Inner "\n" -}}
|
||||||
|
{{- cond (in .Params "display") "\\]" "\\)" }}
|
||||||
|
</span>
|
||||||
11
docs/themes/hugo-geekdoc/layouts/shortcodes/mermaid.html
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
{{ if not (.Page.Scratch.Get "mermaid") }}
|
||||||
|
<!-- Include mermaid only first time -->
|
||||||
|
<script defer src="{{ index (index .Site.Data.assets "mermaid.js") "src" | relURL }}"></script>
|
||||||
|
{{ .Page.Scratch.Set "mermaid" true }}
|
||||||
|
{{ end }}
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
|
||||||
|
<pre class="gdoc-mermaid mermaid{{ with .Get "class" }}{{ printf " %s" . }}{{ end }}">
|
||||||
|
{{- .Inner -}}
|
||||||
|
</pre>
|
||||||
12
docs/themes/hugo-geekdoc/layouts/shortcodes/tab.html
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{{ if .Parent }}
|
||||||
|
{{ $name := .Get 0 }}
|
||||||
|
{{ $group := printf "tabs-%s" (.Parent.Get 0) }}
|
||||||
|
|
||||||
|
{{ if not (.Parent.Scratch.Get $group) }}
|
||||||
|
{{ .Parent.Scratch.Set $group slice }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ .Parent.Scratch.Add $group (dict "Name" $name "Content" .Inner) }}
|
||||||
|
{{ else }}
|
||||||
|
{{ errorf "%q: 'tab' shortcode must be inside 'tabs' shortcode" .Page.Path }}
|
||||||
|
{{ end }}
|
||||||
22
docs/themes/hugo-geekdoc/layouts/shortcodes/tabs.html
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
{{ if .Inner }}{{ end }}
|
||||||
|
{{ $id := .Get 0 }}
|
||||||
|
{{ $group := printf "tabs-%s" $id }}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="gdoc-tabs">
|
||||||
|
{{ range $index, $tab := .Scratch.Get $group }}
|
||||||
|
<input
|
||||||
|
type="radio"
|
||||||
|
class="gdoc-tabs__control hidden"
|
||||||
|
name="{{ $group }}"
|
||||||
|
id="{{ printf "%s-%d" $group $index }}"
|
||||||
|
{{ if not $index }}checked="checked"{{ end }}
|
||||||
|
/>
|
||||||
|
<label for="{{ printf "%s-%d" $group $index }}" class="gdoc-tabs__label">
|
||||||
|
{{ $tab.Name }}
|
||||||
|
</label>
|
||||||
|
<div class="gdoc-markdown--nested gdoc-tabs__content">
|
||||||
|
{{ .Content | $.Page.RenderString }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
41
docs/themes/hugo-geekdoc/layouts/shortcodes/toc-tree.html
vendored
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
{{ $tocLevels := default (default 6 .Site.Params.GeekdocToC) .Page.Params.GeekdocToC }}
|
||||||
|
|
||||||
|
{{ if $tocLevels }}
|
||||||
|
<div class="gdoc-toc gdoc-toc__level--{{ $tocLevels }}">
|
||||||
|
{{ template "toc-tree" dict "sect" .Page.Pages }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<!-- templates -->
|
||||||
|
{{ define "toc-tree" }}
|
||||||
|
<ul>
|
||||||
|
{{ range .sect.GroupBy "Weight" }}
|
||||||
|
{{ range .ByTitle }}
|
||||||
|
{{ if or (not .Params.GeekdocHidden) (not (default true .Params.GeekdocHiddenTocTree)) }}
|
||||||
|
<li>
|
||||||
|
{{ if or .Content .Params.GeekdocFlatSection }}
|
||||||
|
<span>
|
||||||
|
<a href="{{ .RelPermalink }}" class="gdoc-toc__entry">
|
||||||
|
{{ partial "utils/title" . }}{{ with .Params.GeekdocDescription }}:{{ end }}
|
||||||
|
</a>
|
||||||
|
{{ with .Params.GeekdocDescription }}{{ . }}{{ end }}
|
||||||
|
</span>
|
||||||
|
{{ else }}
|
||||||
|
<span>
|
||||||
|
{{ partial "utils/title" . }}{{ with .Params.GeekdocDescription }}
|
||||||
|
: {{ . }}
|
||||||
|
{{ end }}
|
||||||
|
</span>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $numberOfPages := (add (len .Pages) (len .Sections)) }}
|
||||||
|
{{ if and (ne $numberOfPages 0) (not .Params.GeekdocFlatSection) }}
|
||||||
|
{{ template "toc-tree" dict "sect" .Pages }}
|
||||||
|
{{ end }}
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ end }}
|
||||||
8
docs/themes/hugo-geekdoc/layouts/shortcodes/toc.html
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{{ $tocLevels := default (default 6 .Site.Params.GeekdocToC) .Page.Params.GeekdocToC }}
|
||||||
|
|
||||||
|
{{ if and $tocLevels .Page.TableOfContents }}
|
||||||
|
<div class="gdoc-toc gdoc-toc__level--{{ $tocLevels }}">
|
||||||
|
{{ .Page.TableOfContents }}
|
||||||
|
<hr />
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
88
docs/themes/hugo-geekdoc/static/brand.svg
vendored
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="128.54926mm"
|
||||||
|
height="128.54977mm"
|
||||||
|
viewBox="0 0 128.54926 128.54977"
|
||||||
|
version="1.1"
|
||||||
|
id="svg4543"
|
||||||
|
inkscape:export-filename="/home/rknet/rkau2905/Bilder/favicon-32.png"
|
||||||
|
inkscape:export-xdpi="6.3228416"
|
||||||
|
inkscape:export-ydpi="6.3228416"
|
||||||
|
inkscape:version="0.92.4 (unknown)"
|
||||||
|
sodipodi:docname="geekdoc_invert.svg">
|
||||||
|
<defs
|
||||||
|
id="defs4537" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.1503906"
|
||||||
|
inkscape:cx="159.02327"
|
||||||
|
inkscape:cy="275.63348"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="g5186"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1600"
|
||||||
|
inkscape:window-height="844"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="28"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata4540">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-39.442039,-40.637613)">
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
style="display:none">
|
||||||
|
<rect
|
||||||
|
style="fill:#666666;fill-opacity:1;stroke-width:0.27813107"
|
||||||
|
id="rect831"
|
||||||
|
width="142.59648"
|
||||||
|
height="143.05647"
|
||||||
|
x="36.912102"
|
||||||
|
y="37.170635" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g5186"
|
||||||
|
transform="translate(1.0583346,1.851866)">
|
||||||
|
<path
|
||||||
|
id="path5105"
|
||||||
|
d="M 388,146.5918 A 242.92773,242.92871 0 0 0 145.07227,389.51953 242.92773,242.92871 0 0 0 388,632.44922 242.92773,242.92871 0 0 0 630.92773,389.51953 242.92773,242.92871 0 0 0 388,146.5918 Z m 0,10 A 232.92773,232.92871 0 0 1 620.92773,389.51953 232.92773,232.92871 0 0 1 388,622.44922 232.92773,232.92871 0 0 1 155.07227,389.51953 232.92773,232.92871 0 0 1 388,156.5918 Z"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke-width:1.12989867"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="scale(0.26458333)" />
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke-width:0.29306456"
|
||||||
|
d="m 102.65833,40.051097 a 63.008755,63.00902 0 0 0 -63.008753,63.009283 63.008755,63.00902 0 0 0 63.008753,63.00876 63.008755,63.00902 0 0 0 63.00876,-63.00876 63.008755,63.00902 0 0 0 -63.00876,-63.009283 z m -39.513148,32.79431 h 79.026298 a 4.3907643,6.0435574 0 1 1 0,12.086202 H 63.145182 a 4.3907643,6.0435574 0 1 1 0,-12.086202 z m 0,24.171874 h 79.026298 a 4.3907643,6.0435574 0 1 1 0,12.086199 H 63.145182 a 4.3907643,6.0435574 0 1 1 0,-12.086199 z m -0.594905,24.171869 h 53.247233 a 3.8037628,6.0435574 0 1 1 0,12.08621 H 62.550277 a 3.8037628,6.0435574 0 1 1 0,-12.08621 z"
|
||||||
|
id="ellipse5130"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.5 KiB |
1
docs/themes/hugo-geekdoc/static/custom.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
/* You can add custom styles here. */
|
||||||
BIN
docs/themes/hugo-geekdoc/static/favicon/android-chrome-144x144.png
vendored
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
docs/themes/hugo-geekdoc/static/favicon/android-chrome-192x192.png
vendored
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/themes/hugo-geekdoc/static/favicon/android-chrome-256x256.png
vendored
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/themes/hugo-geekdoc/static/favicon/android-chrome-36x36.png
vendored
Normal file
|
After Width: | Height: | Size: 1.7 KiB |