syntax highlight via bfchroma
This commit is contained in:
parent
5409a62021
commit
1187291938
130
README.md
130
README.md
@ -4,132 +4,8 @@ mark2web ist ein Website-Generator, der als Eingabe Markdown-Dateien, Templates
|
||||
|
||||
Die vorgesehene Arbeitsweise ist die Pflege der Inhalte über eine Versionsverwaltung (z.B. git) und anschließende CI/CD-Pipeline, welche den Generator aufruft und die fertige Website publiziert.
|
||||
|
||||
## Verzeichnisstruktur der Quellen
|
||||
## Dokumentation
|
||||
|
||||
```plain
|
||||
DIR content
|
||||
FIL config.yml (Pfad-Konfiguration)
|
||||
DIR de (Sprache)
|
||||
DIR main (Navigationsbaum)
|
||||
DIR 01_Home (1. Ebene)
|
||||
FIL config.yml
|
||||
FIL README.md
|
||||
DIR 02_Download
|
||||
FIL README.md
|
||||
FIL bild.jpg
|
||||
FIL presse.zip
|
||||
DIR 03_Kontakt
|
||||
FIL README.md
|
||||
DIR 01_Adresse
|
||||
FIL README.md
|
||||
DIR 02_Anfahrt
|
||||
FIL README.md
|
||||
DIR 04_Impressum
|
||||
FIL README.md
|
||||
service
|
||||
DIR 01_Datenschutz
|
||||
FIL README.md
|
||||
DIR 02_AGB
|
||||
FIL README.md
|
||||
DIR 03_Impressum
|
||||
FIL README.md
|
||||
Die Dokumentation ist auf der [mark2web-Website](https://www.mark2web.de/) zu finden. Außerdem ist die Dokumentation im Verzeichnis `website/content` dieses Repositories, da dies das Ausgangsmaterial der Projekt-Website ist.
|
||||
|
||||
DIR assets
|
||||
DIR js
|
||||
DIR img
|
||||
DIR css
|
||||
|
||||
DIR templates
|
||||
FIL home.html
|
||||
FIL site.html
|
||||
DIR partials
|
||||
FIL meta.html
|
||||
FIL header.html
|
||||
FIL footer.html
|
||||
|
||||
FIL config.yml (globale Konfiguration, enthält andere Anweisungen als individuelle Pfad-Konfig, siehe Beispiel)
|
||||
```
|
||||
|
||||
### `content`
|
||||
|
||||
- enthält die Markdown-Dateien und Konfigurationen für die Navigationsstruktur und Einzelseiten
|
||||
- voranestellte Nummer mit Unterstrich wie z.B. `01_` dienen nur der Sortierung und gehen nicht in den eigentlichen Navigationspfad mit ein
|
||||
- zur Bildung des Navigationspfades werden die Verzeichnisnamen in Kleinschreibung konvertiert
|
||||
- Navigationsnamen für die Website werden aus dem Pfad gebildet, wobei `_`(Unterstriche) in Leerzeichen umgewandelt werden
|
||||
- Navigationsnamen können durch die `config.yml` überschrieben werden
|
||||
|
||||
### Medien und Downloads
|
||||
|
||||
- Mediendateien werden neben den Inhalten in `content` abgelegt und müssen dementsprechend relativ verlinkt werden
|
||||
|
||||
### `assets`
|
||||
|
||||
- Bilder/CSS/JS die im Templates benötigt werden liegen in `assets`
|
||||
|
||||
### `templates`
|
||||
|
||||
- Template-Dateien für die Generierung der Website liegen hier
|
||||
- Handlebar-Partials liegen in `templates/partials` und werden von mark2web global eingelesen und in Templates unter dem Dateinamen zur Verfügung gestellt
|
||||
|
||||
## Einzelseiten
|
||||
|
||||
Jede Seite ist innerhalb der Ordnerstruktur (Navigation) standardmäßig als `README.md` gespeichert. Die Datei ist eine normale Markdown-Datei mit einem optionalen Header:
|
||||
|
||||
```markdown
|
||||
---
|
||||
Meta:
|
||||
Title: Seitentitel für die Meta-Angaben
|
||||
Keywords: Meta-Keywords
|
||||
Description: Meta-Description
|
||||
|
||||
Data: # Vererbung spielt hier keine Rolle, da Markdown-Datei letzte Ebene in der Generierung ist
|
||||
image: bild.jpg
|
||||
|
||||
---
|
||||
|
||||
# Seitentitel
|
||||
|
||||
Seiteninhalt, lorem ipsum...
|
||||
|
||||
## Überschrift 2
|
||||
|
||||
Weiterer Absatz, usw...
|
||||
```
|
||||
|
||||
## zusätzliche Konfiguration
|
||||
|
||||
In jedem Ordner kann sich eine `config.yml` befinden.
|
||||
|
||||
- z.B. Verküpfung eines Eintrags eines Navigations-Baums zu einem anderen
|
||||
|
||||
```yml
|
||||
This:
|
||||
GoTo: /de/main/service/impressum
|
||||
Navname: Impressum
|
||||
|
||||
Data: # wird nicht vererbt: {{ NavSlice.[0].This.Data.slogan }}
|
||||
slogan: Rechtliches und mehr
|
||||
|
||||
Data: # wird an alle Unterpunkte vererbt: {{ NavSlice.[0].Data.slogan }}
|
||||
image: imprint.png
|
||||
```
|
||||
|
||||
- außerdem kann sich im Header der Markdown-Datei die Konfig im YAML-Format befinden
|
||||
- die Konfig in der Markdown-Datei überschreibt die Konfig aus der config.yml
|
||||
|
||||
## Haupt-Konfiguration im `content`-Verzeichnis
|
||||
|
||||
```yml
|
||||
Meta:
|
||||
Title: meine Website
|
||||
Description: Standard-Meta-Beschreibung, die verwendet wird, wenn keine pro Seite definiert ist
|
||||
Keywords: Standard-Keywords, welche in den einzelnen Seiten überschrieben werden kann
|
||||
```
|
||||
|
||||
## Templates
|
||||
|
||||
Die Template-Sprache ist Handlebars.
|
||||
|
||||
### Helper
|
||||
|
||||
Weitere Handlebars-Helper sind:
|
||||
Die öffentliche Website ist mit **mark2web** generiert.
|
17
main.go
17
main.go
@ -11,6 +11,7 @@ import (
|
||||
|
||||
"github.com/imdario/mergo"
|
||||
|
||||
"github.com/Depado/bfchroma"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
"github.com/flosch/pongo2"
|
||||
"github.com/gosimple/slug"
|
||||
@ -94,6 +95,10 @@ type PathConfig struct {
|
||||
OutputExtension *string `yaml:"OutputExtension"`
|
||||
} `yaml:"Filename"`
|
||||
|
||||
Markdown struct {
|
||||
SyntaxHighlight *bool `yaml:"SyntaxHighlight"`
|
||||
} `yaml:"Markdown"`
|
||||
|
||||
Data interface{} `yaml:"Data"`
|
||||
}
|
||||
|
||||
@ -430,15 +435,21 @@ RewriteRule ^$ %{REQUEST_URI}`+goToFixed+`/ [R,L]
|
||||
outFile := conf.OutputPath + "/" + outputFilename
|
||||
log.Debugf("using '%s' as output file", outFile)
|
||||
|
||||
//html := blackfriday.Run(input, blackfriday.WithRenderer(bfchroma.NewRenderer()))
|
||||
html := blackfriday.Run(input)
|
||||
var option blackfriday.Option
|
||||
|
||||
synH := conf.Config.Markdown.SyntaxHighlight
|
||||
if synH != nil && *synH {
|
||||
option = blackfriday.WithRenderer(bfchroma.NewRenderer())
|
||||
}
|
||||
|
||||
html := blackfriday.Run(input, option)
|
||||
|
||||
// use --- for splitting document in markdown parts
|
||||
regex := regexp.MustCompile("\\r?\\n\\r?---\\r?\\n\\r?")
|
||||
inputParts := regex.Split(string(input), -1)
|
||||
htmlParts := make([]*pongo2.Value, 0)
|
||||
for _, iPart := range inputParts {
|
||||
htmlParts = append(htmlParts, pongo2.AsSafeValue(string(blackfriday.Run([]byte(iPart)))))
|
||||
htmlParts = append(htmlParts, pongo2.AsSafeValue(string(blackfriday.Run([]byte(iPart), option))))
|
||||
}
|
||||
|
||||
log.Debugf("rendering template '%s' for '%s'", *newConfig.Template, outFile)
|
||||
|
Loading…
Reference in New Issue
Block a user