fixed merge of ptr
All checks were successful
the build was successful

This commit is contained in:
Sebastian Frank
2019-02-19 18:18:40 +01:00
parent 5b5b5d8c3a
commit 12dbfd43bb
5 changed files with 300 additions and 187 deletions

View File

@@ -7,4 +7,5 @@ Meta:
Keywords: mark2web, Website, HTML, markdown, Generator, CMS, Content-Management-System
Markdown:
SyntaxHighlight: True
ChromaRenderer: True
ChromaStyle: monokai

View File

@@ -1,7 +1,41 @@
---
Markdown:
ChromaRenderer: False
---
# mark2web
mark2web ist ein Generator, der aus Markdown- und Konfig-Dateien in einer Ordnerstruktur eine statische Website unter Zuhilfenahme von Templates generiert.
```mermaid
graph TD
C(Konfiguration)
M(Markdown)
A(Assets)
D(Templates)
2(mark2web)
W(Website)
C==>2
M==>2
A==>2
D==>2
2==>W
style 2 fill:#b5c50f,stroke:#000
classDef in fill:#464645,color:#fff,stroke:#000
classDef out stroke-width:5px,stroke:#b5c50f,fill:#ccc
class M,C,D,A in
class W out
```
<script defer>
window.onload = function() {
mermaid.init(undefined,$("code.language-mermaid"));
};
</script>
---
Der Generator selbst wurde in [Go](https://golang.org/) geschrieben. Es wurden dabei eine Vielzahl existierender Packages verwendet. Unter Anderem:

View File

@@ -11,86 +11,102 @@ Nachfolgend ist ein Beispiel eines Templates:
```django
<html>
<meta>
<meta charset="UTF-8">
<meta>
<meta charset="UTF-8">
<title>{{ Meta.Title }}</title>
<meta name="description" content="{{ Meta.Description }}" />
<meta name="keywords" content="{{ Meta.Keywords }}" />
<link rel="stylesheet" type="text/css" href="../assets/css/main.css">
</meta>
<title>{{ Meta.Title }}</title>
<meta name="description" content="{{ Meta.Description }}" />
<meta name="keywords" content="{{ Meta.Keywords }}" />
<link rel="stylesheet" type="text/css" href="../assets/css/main.css">
</meta>
<body>
{% block header %}
<header>
<div class="langSelect">
{% for nav in NavSlice %}
<a href="{{ nav.GoTo }}" {% if nav.Active %}class="active"{% endif %}><img src="../assets/img/{{ nav.Navname }}.png" alt="{{ nav.Navname }}" style="height: 20px;"></a>
<body>
{% block header %}
<header>
<div class="langSelect">
{% for nav in NavSlice %}
<a href="{{ nav.GoTo }}" {% if nav.Active %}class="active"{% endif %}>
<img src="../assets/img/{{ nav.Navname }}.png" alt="{{ nav.Navname }}" style="height: 20px;">
</a>
{% endfor %}
</div>
<div id="logoDiv"><img src="../assets/img/logo.png"></div>
<div id="mainNavDiv" class="nav">
<table border="0" style="width: 100%">
<tr>
<td>
<div><b>main Level 1 ...</b></div>
<ul>
{% for nav in NavActive.0.SubMap.main.SubSlice %}
<li {% if nav.Active %}class="active"{% endif %}>
<a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">
{{ nav.Navname }}
</a>
{% if nav.SubSlice %}
<ul>
{% for nav2 in nav.SubSlice %}
<li {% if nav2.Active %}class="active"{% endif %}>
<a href="{{ nav2.GoTo }}" title="{{ nav2.This.Data.hoverText }}">
{{ nav2.Navname }}
</a>
</li>
{% endfor %}
</ul
{% endif %}
</li>
{% endfor %}
</div>
<div id="logoDiv"><img src="../assets/img/logo.png"></div>
<div id="mainNavDiv" class="nav">
<table border="0" style="width: 100%">
<tr>
<td>
<div><b>main Level 1 ...</b></div>
<ul>
{% for nav in NavActive.0.SubMap.main.SubSlice %}
<li {% if nav.Active %}class="active"{% endif %}><a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">{{ nav.Navname }}</a>
{% if nav.SubSlice %}
<ul>
{% for nav2 in nav.SubSlice %}
<li {% if nav2.Active %}class="active"{% endif %}><a href="{{ nav2.GoTo }}" title="{{ nav2.This.Data.hoverText }}">{{ nav2.Navname }}</a>
</li>
{% endfor %}
</ul
{% endif %}
</li>
{% endfor %}
</ul>
</td>
<td>
<div><b>main/service Level 2</b></div>
<ul>
{% for nav in NavActive.2.SubSlice %}
<li {% if nav.Active %}class="active"{% endif %}><a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">{{ nav.Navname }}</a>
</li>
{% endfor %}
</ul>
</td>
</tr>
</table>
</div>
</header>
{% endblock %}
{% block breadcrumb %}
<div id="breadcrumb">
{% for nav in NavActive %}
<a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">{{ nav.Navname }}</a>
{% endfor %}
</div>
{% endblock %}
{% block content %}
<div id="content">
{{ Body }}
</div>
{% endblock %}
{% block footer %}
<footer class="nav">
<div><b>service Level 1</b></div>
<ul>
{% for nav in NavActive.0.SubMap.service.SubSlice %}
<li {% if nav.Active %}class="active"{% endif %}><a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">{{ nav.Navname }}</a></li>
</ul>
</td>
<td>
<div><b>main/service Level 2</b></div>
<ul>
{% for nav in NavActive.2.SubSlice %}
<li {% if nav.Active %}class="active"{% endif %}>
<a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">
{{ nav.Navname }}
</a>
</li>
{% endfor %}
</ul>
</footer>
{% endblock %}
</ul>
</td>
</tr>
</table>
</div>
</header>
{% endblock %}
</body>
{% block breadcrumb %}
<div id="breadcrumb">
{% for nav in NavActive %}
<a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">
{{ nav.Navname }}
</a>
{% endfor %}
</div>
{% endblock %}
{% block content %}
<div id="content">
{{ Body }}
</div>
{% endblock %}
{% block footer %}
<footer class="nav">
<div><b>service Level 1</b></div>
<ul>
{% for nav in NavActive.0.SubMap.service.SubSlice %}
<li {% if nav.Active %}class="active"{% endif %}>
<a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">
{{ nav.Navname }}</a>
</li>
{% endfor %}
</ul>
</footer>
{% endblock %}
</body>
</html>
```
@@ -111,7 +127,7 @@ Blockanweisungen dagegen verwenden zum Beispiel folgende Platzhalter:
```django
{% if Variable %}
...
...
{% endif %}
```
@@ -164,13 +180,13 @@ wird für `{{ Body }}` folgendes HTML:
```django
<table>
<tr>
{% for part in BodyParts %}
<td>
{{ part }}
</td>
{% endfor %}
</tr>
<tr>
{% for part in BodyParts %}
<td>
{{ part }}
</td>
{% endfor %}
</tr>
</table>
```
@@ -178,16 +194,16 @@ Aus dem Template wird nach dem Rendern mit obiger Markdown-Datei also folgendes
```html
<table>
<tr>
<td>
<h1>Titel 1</h1>
<p>Text 1</p>
</td>
<td>
<h2>Titel 2</h2>
<p>Text 2</p>
</td>
</tr>
<tr>
<td>
<h1>Titel 1</h1>
<p>Text 1</p>
</td>
<td>
<h2>Titel 2</h2>
<p>Text 2</p>
</td>
</tr>
</table>
```
@@ -199,16 +215,16 @@ Jedes Navigationselement steht intern in folgender go-Struktur zur Verfügung:
```go
type navElement struct {
Navname string
GoTo string
Active bool
Navname string
GoTo string
Active bool
Data interface{}
Data interface{}
This ThisPathConfig
This ThisPathConfig
SubMap *map[string]*navElement
SubSlice *[]*navElement
SubMap *map[string]*navElement
SubSlice *[]*navElement
}
```
@@ -220,24 +236,24 @@ Wird z.B. folgende Navigation als Zielverzeichnis-Struktur angenommen:
```plain
de
main
home
leistungen
referenzen
service
impressum
main
home
leistungen
referenzen
service
impressum
en
main
home
...
main
home
...
```
Der Teasertext aus folgender `config.yml` im `content`-Verzeichnis `de/main/02_Leistungen`
```yaml
This:
Data:
teaser: Teasertext
Data:
teaser: Teasertext
```
welcher zum Navigationspunkt im Zielpfad *de/main/leistungen* gehört, ist über folgende Template-Variablen erreichbar:
@@ -258,11 +274,11 @@ Natürlich wird diese Variable in der Form so nie verwendet, sondern soll nur de
```django
<ul>
{% for lang in NavMap %}
<li {% if lang.Active %}class="active"{% endif %}>
<a href="{{ lang.GoTo }}">{{ lang.Navname }}</a>
</li>
{% endfor %}
{% for lang in NavMap %}
<li {% if lang.Active %}class="active"{% endif %}>
<a href="{{ lang.GoTo }}">{{ lang.Navname }}</a>
</li>
{% endfor %}
</ul>
```
@@ -291,9 +307,9 @@ Somit lassen sich leicht Pfade anzeigen, bzw. Breadcrumbs in die Website einbind
```django
aktiver Pfad:
{% for nav in NavActive %}
<a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">{{ nav.Navname }}</a>
{% endfor %}
{% for nav in NavActive %}
<a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">{{ nav.Navname }}</a>
{% endfor %}
```
Ebenso lässt sich bei mehrsprachigen Seite immer die richte Hauptnavigation zur aktuelle Sprache laden:
@@ -301,24 +317,24 @@ Ebenso lässt sich bei mehrsprachigen Seite immer die richte Hauptnavigation zur
```django
<h3>Hauptnavigation</h3>
<ul>
{% for nav in NavActive.0.SubMap.main.SubSlice %}
<li {% if nav.Active %}class="active"{% endif %}>
<a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">
{{ nav.Navname }}
{% for nav in NavActive.0.SubMap.main.SubSlice %}
<li {% if nav.Active %}class="active"{% endif %}>
<a href="{{ nav.GoTo }}" title="{{ nav.This.Data.hoverText }}">
{{ nav.Navname }}
</a>
{% if nav.SubSlice %}
<ul>
{% for nav2 in nav.SubSlice %}
<li {% if nav2.Active %}class="active"{% endif %}>
<a href="{{ nav2.GoTo }}" title="{{ nav2.This.Data.hoverText }}">
{{ nav2.Navname }}
</a>
{% if nav.SubSlice %}
<ul>
{% for nav2 in nav.SubSlice %}
<li {% if nav2.Active %}class="active"{% endif %}>
<a href="{{ nav2.GoTo }}" title="{{ nav2.This.Data.hoverText }}">
{{ nav2.Navname }}
</a>
</li>
{% endfor %}
</ul
{% endif %}
</li>
{% endfor %}
</li>
{% endfor %}
</ul
{% endif %}
</li>
{% endfor %}
</ul>
```