sancho 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/docs/index.html ADDED
@@ -0,0 +1,159 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="generator" content="pandoc" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
7
+ <meta name="keywords" content="ruby, github-pages-generator" />
8
+ <title>Sancho Readme</title>
9
+ <style>
10
+ code{white-space: pre-wrap;}
11
+ span.smallcaps{font-variant: small-caps;}
12
+ div.columns{display: flex; gap: min(4vw, 1.5em);}
13
+ div.column{flex: auto; overflow-x: auto;}
14
+ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
15
+ ul.task-list{list-style: none;}
16
+ ul.task-list li input[type="checkbox"] {
17
+ width: 0.8em;
18
+ margin: 0 0.8em 0.2em -1.6em;
19
+ vertical-align: middle;
20
+ }
21
+ .display.math{display: block; text-align: center; margin: 0.5rem auto;}
22
+ /* CSS for syntax highlighting */
23
+ pre > code.sourceCode { white-space: pre; position: relative; }
24
+ pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
25
+ pre > code.sourceCode > span:empty { height: 1.2em; }
26
+ .sourceCode { overflow: visible; }
27
+ code.sourceCode > span { color: inherit; text-decoration: inherit; }
28
+ div.sourceCode { margin: 1em 0; }
29
+ pre.sourceCode { margin: 0; }
30
+ @media screen {
31
+ div.sourceCode { overflow: auto; }
32
+ }
33
+ @media print {
34
+ pre > code.sourceCode { white-space: pre-wrap; }
35
+ pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
36
+ }
37
+ pre.numberSource code
38
+ { counter-reset: source-line 0; }
39
+ pre.numberSource code > span
40
+ { position: relative; left: -4em; counter-increment: source-line; }
41
+ pre.numberSource code > span > a:first-child::before
42
+ { content: counter(source-line);
43
+ position: relative; left: -1em; text-align: right; vertical-align: baseline;
44
+ border: none; display: inline-block;
45
+ -webkit-touch-callout: none; -webkit-user-select: none;
46
+ -khtml-user-select: none; -moz-user-select: none;
47
+ -ms-user-select: none; user-select: none;
48
+ padding: 0 4px; width: 4em;
49
+ color: #aaaaaa;
50
+ }
51
+ pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
52
+ div.sourceCode
53
+ { }
54
+ @media screen {
55
+ pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
56
+ }
57
+ code span.al { color: #ff0000; font-weight: bold; } /* Alert */
58
+ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
59
+ code span.at { color: #7d9029; } /* Attribute */
60
+ code span.bn { color: #40a070; } /* BaseN */
61
+ code span.bu { color: #008000; } /* BuiltIn */
62
+ code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
63
+ code span.ch { color: #4070a0; } /* Char */
64
+ code span.cn { color: #880000; } /* Constant */
65
+ code span.co { color: #60a0b0; font-style: italic; } /* Comment */
66
+ code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
67
+ code span.do { color: #ba2121; font-style: italic; } /* Documentation */
68
+ code span.dt { color: #902000; } /* DataType */
69
+ code span.dv { color: #40a070; } /* DecVal */
70
+ code span.er { color: #ff0000; font-weight: bold; } /* Error */
71
+ code span.ex { } /* Extension */
72
+ code span.fl { color: #40a070; } /* Float */
73
+ code span.fu { color: #06287e; } /* Function */
74
+ code span.im { color: #008000; font-weight: bold; } /* Import */
75
+ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
76
+ code span.kw { color: #007020; font-weight: bold; } /* Keyword */
77
+ code span.op { color: #666666; } /* Operator */
78
+ code span.ot { color: #007020; } /* Other */
79
+ code span.pp { color: #bc7a00; } /* Preprocessor */
80
+ code span.sc { color: #4070a0; } /* SpecialChar */
81
+ code span.ss { color: #bb6688; } /* SpecialString */
82
+ code span.st { color: #4070a0; } /* String */
83
+ code span.va { color: #19177c; } /* Variable */
84
+ code span.vs { color: #4070a0; } /* VerbatimString */
85
+ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
86
+ </style>
87
+ <link rel="stylesheet" href="css/styles.css" />
88
+ <!--[if lt IE 9]>
89
+ <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
90
+ <![endif]-->
91
+ </head>
92
+ <body>
93
+ <p class="navbar">
94
+ <span class="smallcaps">= <strong>“Sancho” Pages Puncher</strong> = <a
95
+ href="readme.html">Readme</a> ~ <a href="changelog.html">Changelog</a> ~
96
+ <a href="story.html">Story</a> ~ <a
97
+ href="https://github.com/nvoynov/sancho">Github</a></span>
98
+ </p>
99
+ <header id="title-block-header">
100
+ <h1 class="title">Sancho Readme</h1>
101
+ </header>
102
+ <nav id="TOC" role="doc-toc">
103
+ <ul>
104
+ <li><a href="#overview" id="toc-overview">Overview</a></li>
105
+ <li><a href="#installation" id="toc-installation">Installation</a></li>
106
+ <li><a href="#usage" id="toc-usage">Usage</a></li>
107
+ <li><a href="#links" id="toc-links">Links</a></li>
108
+ </ul>
109
+ </nav>
110
+ <h2 id="overview">Overview</h2>
111
+ <p><code>Sancho</code> is static site generator for <a
112
+ href="https://pages.github.com/">Github Pages</a> that proposes placing
113
+ your site content under <code>docs</code> directory in a separate git
114
+ branch branch.</p>
115
+ <p>For rendering HTML <code>Sancho</code> utilizes <a
116
+ href="https://pandoc.org">Pandoc</a>, and it is supposed that your site
117
+ pages will be written in Markdown or <a
118
+ href="https://pandoc.org/MANUAL.html#pandocs-markdown">Pandoc
119
+ Markdown</a>.</p>
120
+ <h2 id="installation">Installation</h2>
121
+ <p>Run</p>
122
+ <pre><code>bundle add sancho --git https://github.com/nvoynov/sancho.git</code></pre>
123
+ <p>Require Sancho in Rakefile</p>
124
+ <div class="sourceCode" id="cb2"><pre
125
+ class="sourceCode ruby"><code class="sourceCode ruby"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">require</span> <span class="st">&quot;sancho&quot;</span></span>
126
+ <span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>source, folders <span class="kw">=</span> <span class="dt">Sancho</span><span class="at">.tasks</span></span>
127
+ <span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a><span class="dt">Rake</span><span class="at">.application.rake_require</span> source, folders</span></code></pre></div>
128
+ <p>Install <a href="https://pandoc.org/installing.html">pandoc</a></p>
129
+ <h2 id="usage">Usage</h2>
130
+ <p><u>Basic flow</u></p>
131
+ <ol type="1">
132
+ <li>Commit your repo changes!</li>
133
+ <li>Run <code>$ git checkout docs</code></li>
134
+ <li>Run <code>$ rake sancho:init</code></li>
135
+ <li>Customize <code>sancho.yml</code> for pages and
136
+ <code>_layouts/header.md</code> for navbar</li>
137
+ <li>Run <code>$ rake sancho:generate</code> to create your site</li>
138
+ <li>Run <code>$ rake sancho:serve</code> to run the site locally</li>
139
+ <li>Run <code>$ git push -u origin docs</code></li>
140
+ </ol>
141
+ <p><u>Template</u></p>
142
+ <p>You can provide your own HTML template by placing
143
+ <code>_layouts/template.html</code> file. Read <a
144
+ href="https://pandoc.org/MANUAL.html#templates">Pandoc Templates</a>
145
+ section for details.</p>
146
+ <h2 id="links">Links</h2>
147
+ <ul>
148
+ <li><a href="https://www.zenspider.com/projects/zenweb.html">Zenweb,
149
+ stupid fast static website generation</a></li>
150
+ <li><a
151
+ href="https://devcenter.heroku.com/articles/static-sites-ruby">Creating
152
+ Static Sites in Ruby with Rack</a></li>
153
+ </ul>
154
+ <div id="footer">
155
+ <hr />
156
+ <p>© 2022-2023 <a href="http://nvoynov.github.io/">nvoynov</a></p>
157
+ </div>
158
+ </body>
159
+ </html>
data/docs/readme.html ADDED
@@ -0,0 +1,159 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="generator" content="pandoc" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
7
+ <meta name="keywords" content="ruby, github-pages-generator" />
8
+ <title>Sancho Readme</title>
9
+ <style>
10
+ code{white-space: pre-wrap;}
11
+ span.smallcaps{font-variant: small-caps;}
12
+ div.columns{display: flex; gap: min(4vw, 1.5em);}
13
+ div.column{flex: auto; overflow-x: auto;}
14
+ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
15
+ ul.task-list{list-style: none;}
16
+ ul.task-list li input[type="checkbox"] {
17
+ width: 0.8em;
18
+ margin: 0 0.8em 0.2em -1.6em;
19
+ vertical-align: middle;
20
+ }
21
+ .display.math{display: block; text-align: center; margin: 0.5rem auto;}
22
+ /* CSS for syntax highlighting */
23
+ pre > code.sourceCode { white-space: pre; position: relative; }
24
+ pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
25
+ pre > code.sourceCode > span:empty { height: 1.2em; }
26
+ .sourceCode { overflow: visible; }
27
+ code.sourceCode > span { color: inherit; text-decoration: inherit; }
28
+ div.sourceCode { margin: 1em 0; }
29
+ pre.sourceCode { margin: 0; }
30
+ @media screen {
31
+ div.sourceCode { overflow: auto; }
32
+ }
33
+ @media print {
34
+ pre > code.sourceCode { white-space: pre-wrap; }
35
+ pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
36
+ }
37
+ pre.numberSource code
38
+ { counter-reset: source-line 0; }
39
+ pre.numberSource code > span
40
+ { position: relative; left: -4em; counter-increment: source-line; }
41
+ pre.numberSource code > span > a:first-child::before
42
+ { content: counter(source-line);
43
+ position: relative; left: -1em; text-align: right; vertical-align: baseline;
44
+ border: none; display: inline-block;
45
+ -webkit-touch-callout: none; -webkit-user-select: none;
46
+ -khtml-user-select: none; -moz-user-select: none;
47
+ -ms-user-select: none; user-select: none;
48
+ padding: 0 4px; width: 4em;
49
+ color: #aaaaaa;
50
+ }
51
+ pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
52
+ div.sourceCode
53
+ { }
54
+ @media screen {
55
+ pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
56
+ }
57
+ code span.al { color: #ff0000; font-weight: bold; } /* Alert */
58
+ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
59
+ code span.at { color: #7d9029; } /* Attribute */
60
+ code span.bn { color: #40a070; } /* BaseN */
61
+ code span.bu { color: #008000; } /* BuiltIn */
62
+ code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
63
+ code span.ch { color: #4070a0; } /* Char */
64
+ code span.cn { color: #880000; } /* Constant */
65
+ code span.co { color: #60a0b0; font-style: italic; } /* Comment */
66
+ code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
67
+ code span.do { color: #ba2121; font-style: italic; } /* Documentation */
68
+ code span.dt { color: #902000; } /* DataType */
69
+ code span.dv { color: #40a070; } /* DecVal */
70
+ code span.er { color: #ff0000; font-weight: bold; } /* Error */
71
+ code span.ex { } /* Extension */
72
+ code span.fl { color: #40a070; } /* Float */
73
+ code span.fu { color: #06287e; } /* Function */
74
+ code span.im { color: #008000; font-weight: bold; } /* Import */
75
+ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
76
+ code span.kw { color: #007020; font-weight: bold; } /* Keyword */
77
+ code span.op { color: #666666; } /* Operator */
78
+ code span.ot { color: #007020; } /* Other */
79
+ code span.pp { color: #bc7a00; } /* Preprocessor */
80
+ code span.sc { color: #4070a0; } /* SpecialChar */
81
+ code span.ss { color: #bb6688; } /* SpecialString */
82
+ code span.st { color: #4070a0; } /* String */
83
+ code span.va { color: #19177c; } /* Variable */
84
+ code span.vs { color: #4070a0; } /* VerbatimString */
85
+ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
86
+ </style>
87
+ <link rel="stylesheet" href="css/styles.css" />
88
+ <!--[if lt IE 9]>
89
+ <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
90
+ <![endif]-->
91
+ </head>
92
+ <body>
93
+ <p class="navbar">
94
+ <span class="smallcaps">= <strong>“Sancho” Pages Puncher</strong> = <a
95
+ href="readme.html">Readme</a> ~ <a href="changelog.html">Changelog</a> ~
96
+ <a href="story.html">Story</a> ~ <a
97
+ href="https://github.com/nvoynov/sancho">Github</a></span>
98
+ </p>
99
+ <header id="title-block-header">
100
+ <h1 class="title">Sancho Readme</h1>
101
+ </header>
102
+ <nav id="TOC" role="doc-toc">
103
+ <ul>
104
+ <li><a href="#overview" id="toc-overview">Overview</a></li>
105
+ <li><a href="#installation" id="toc-installation">Installation</a></li>
106
+ <li><a href="#usage" id="toc-usage">Usage</a></li>
107
+ <li><a href="#links" id="toc-links">Links</a></li>
108
+ </ul>
109
+ </nav>
110
+ <h2 id="overview">Overview</h2>
111
+ <p><code>Sancho</code> is static site generator for <a
112
+ href="https://pages.github.com/">Github Pages</a> that proposes placing
113
+ your site content under <code>docs</code> directory in a separate git
114
+ branch branch.</p>
115
+ <p>For rendering HTML <code>Sancho</code> utilizes <a
116
+ href="https://pandoc.org">Pandoc</a>, and it is supposed that your site
117
+ pages will be written in Markdown or <a
118
+ href="https://pandoc.org/MANUAL.html#pandocs-markdown">Pandoc
119
+ Markdown</a>.</p>
120
+ <h2 id="installation">Installation</h2>
121
+ <p>Run</p>
122
+ <pre><code>bundle add sancho --git https://github.com/nvoynov/sancho.git</code></pre>
123
+ <p>Require Sancho in Rakefile</p>
124
+ <div class="sourceCode" id="cb2"><pre
125
+ class="sourceCode ruby"><code class="sourceCode ruby"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">require</span> <span class="st">&quot;sancho&quot;</span></span>
126
+ <span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>source, folders <span class="kw">=</span> <span class="dt">Sancho</span><span class="at">.tasks</span></span>
127
+ <span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a><span class="dt">Rake</span><span class="at">.application.rake_require</span> source, folders</span></code></pre></div>
128
+ <p>Install <a href="https://pandoc.org/installing.html">pandoc</a></p>
129
+ <h2 id="usage">Usage</h2>
130
+ <p><u>Basic flow</u></p>
131
+ <ol type="1">
132
+ <li>Commit your repo changes!</li>
133
+ <li>Run <code>$ git checkout docs</code></li>
134
+ <li>Run <code>$ rake sancho:init</code></li>
135
+ <li>Customize <code>sancho.yml</code> for pages and
136
+ <code>_layouts/header.md</code> for navbar</li>
137
+ <li>Run <code>$ rake sancho:generate</code> to create your site</li>
138
+ <li>Run <code>$ rake sancho:serve</code> to run the site locally</li>
139
+ <li>Run <code>$ git push -u origin docs</code></li>
140
+ </ol>
141
+ <p><u>Template</u></p>
142
+ <p>You can provide your own HTML template by placing
143
+ <code>_layouts/template.html</code> file. Read <a
144
+ href="https://pandoc.org/MANUAL.html#templates">Pandoc Templates</a>
145
+ section for details.</p>
146
+ <h2 id="links">Links</h2>
147
+ <ul>
148
+ <li><a href="https://www.zenspider.com/projects/zenweb.html">Zenweb,
149
+ stupid fast static website generation</a></li>
150
+ <li><a
151
+ href="https://devcenter.heroku.com/articles/static-sites-ruby">Creating
152
+ Static Sites in Ruby with Rack</a></li>
153
+ </ul>
154
+ <div id="footer">
155
+ <hr />
156
+ <p>© 2022-2023 <a href="http://nvoynov.github.io/">nvoynov</a></p>
157
+ </div>
158
+ </body>
159
+ </html>
data/docs/robots.txt ADDED
@@ -0,0 +1,4 @@
1
+ User-agent: *
2
+ Allow: /
3
+
4
+ Sitemap: https://noynov.github.io/sancho/sitemap.xml
data/docs/sitemap.xml ADDED
@@ -0,0 +1,30 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
4
+ xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
5
+
6
+ <url>
7
+ <loc>noynov.github.io/sancho/</loc>
8
+ <lastmod>2024-03-08</lastmod>
9
+ <changefreq>weekly</changefreq>
10
+ <priority>1.0</priority>
11
+ </url>
12
+ <url>
13
+ <loc>noynov.github.io/sancho/readme.html</loc>
14
+ <lastmod>2024-03-08</lastmod>
15
+ <changefreq>weekly</changefreq>
16
+ <priority>0.8</priority>
17
+ </url>
18
+ <url>
19
+ <loc>noynov.github.io/sancho/changelog.html</loc>
20
+ <lastmod>2024-03-08</lastmod>
21
+ <changefreq>weekly</changefreq>
22
+ <priority>0.8</priority>
23
+ </url>
24
+ <url>
25
+ <loc>noynov.github.io/sancho/story.html</loc>
26
+ <lastmod>2024-03-08</lastmod>
27
+ <changefreq>weekly</changefreq>
28
+ <priority>0.8</priority>
29
+ </url>
30
+ </urlset>
data/docs/story.html ADDED
@@ -0,0 +1,57 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="generator" content="pandoc" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
7
+ <meta name="dcterms.date" content="2023-01-28" />
8
+ <meta name="keywords" content="ruby, github-pages-generator" />
9
+ <title>Sancho Story</title>
10
+ <style>
11
+ code{white-space: pre-wrap;}
12
+ span.smallcaps{font-variant: small-caps;}
13
+ div.columns{display: flex; gap: min(4vw, 1.5em);}
14
+ div.column{flex: auto; overflow-x: auto;}
15
+ div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
16
+ ul.task-list{list-style: none;}
17
+ ul.task-list li input[type="checkbox"] {
18
+ width: 0.8em;
19
+ margin: 0 0.8em 0.2em -1.6em;
20
+ vertical-align: middle;
21
+ }
22
+ .display.math{display: block; text-align: center; margin: 0.5rem auto;}
23
+ </style>
24
+ <link rel="stylesheet" href="css/styles.css" />
25
+ <!--[if lt IE 9]>
26
+ <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
27
+ <![endif]-->
28
+ </head>
29
+ <body>
30
+ <p class="navbar">
31
+ <span class="smallcaps">= <strong>“Sancho” Pages Puncher</strong> = <a
32
+ href="readme.html">Readme</a> ~ <a href="changelog.html">Changelog</a> ~
33
+ <a href="story.html">Story</a> ~ <a
34
+ href="https://github.com/nvoynov/sancho">Github</a></span>
35
+ </p>
36
+ <header id="title-block-header">
37
+ <h1 class="title">Sancho Story</h1>
38
+ <p class="date">2023-01-28</p>
39
+ </header>
40
+ <p>Exercising with <a href="https://github.com/nvoynov/punch">Punch</a>
41
+ and inspired by the result I decided to propose my private “clean domain
42
+ development” services. Having written some content drafts, my first
43
+ thought was to just use Jekyll as it is on nvoynov.github.io, but have
44
+ searched a bit through the Internet I bumped into <a
45
+ href="https://github.com/seattlerb/zenweb">zenweb</a> and decided to
46
+ give it a try.</p>
47
+ <p>Fortunately, something went wrong :) and a few of my content pages,
48
+ despite all my dancing with a tambourine, just failed to translate into
49
+ HTML. Being looking through <code>zenweb</code> code I realized that
50
+ it’s actually easy to design on my own.</p>
51
+ <p>So meet the Sancho :)</p>
52
+ <div id="footer">
53
+ <hr />
54
+ <p>© 2022-2023 <a href="http://nvoynov.github.io/">nvoynov</a></p>
55
+ </div>
56
+ </body>
57
+ </html>
data/docs/styles.css ADDED
@@ -0,0 +1,90 @@
1
+ body {
2
+ margin: auto;
3
+ padding-right: 1em;
4
+ padding-left: 1em;
5
+ max-width: 44em;
6
+ color: black;
7
+ font-family: Verdana, sans-serif;
8
+ font-size: 100%;
9
+ line-height: 140%;
10
+ color: #333;
11
+ }
12
+
13
+ pre {
14
+ border: 1px dotted gray;
15
+ background-color: #ececec;
16
+ color: #1111111;
17
+ padding: 0.5em;
18
+ }
19
+
20
+ code {
21
+ font-family: monospace;
22
+ }
23
+
24
+ h1 a, h2 a, h3 a, h4 a, h5 a {
25
+ text-decoration: none;
26
+ color: #7a5ada;
27
+ }
28
+
29
+ h1, h2, h3, h4, h5 {
30
+ font-family: verdana;
31
+ font-weight: bold;
32
+ border-bottom: 1px dotted black;
33
+ color: #7a5ada;
34
+ }
35
+
36
+ h1 {
37
+ font-size: 130%;
38
+ }
39
+
40
+ h2 {
41
+ font-size: 110%;
42
+ }
43
+
44
+ h3 {
45
+ font-size: 95%;
46
+ }
47
+
48
+ h4 {
49
+ font-size: 90%;
50
+ font-style: italic;
51
+ }
52
+
53
+ h5 {
54
+ font-size: 90%;
55
+ font-style: italic;
56
+ }
57
+
58
+ h1.title {
59
+ font-size: 200%;
60
+ font-weight: bold;
61
+ padding-top: 0.2em;
62
+ padding-bottom: 0.2em;
63
+ text-align: left;
64
+ border: none;
65
+ }
66
+
67
+ dt code {
68
+ font-weight: bold;
69
+ }
70
+
71
+ dd p {
72
+ margin-top: 0;
73
+ }
74
+
75
+ #footer {
76
+ padding-top: 1em;
77
+ font-size: 70%;
78
+ color: gray;
79
+ text-align: center;
80
+ }
81
+
82
+ .navbar {
83
+ background: #fff;
84
+ border-bottom: 1px solid #000;
85
+ margin: 0 0 1em;
86
+ padding: 1em 0;
87
+ position: sticky;
88
+ top: 0;
89
+ z-index: 100;
90
+ }
data/lib/config.ru ADDED
@@ -0,0 +1,21 @@
1
+ # https://devcenter.heroku.com/articles/static-sites-ruby
2
+ require 'rack/static'
3
+ require 'sancho'
4
+
5
+ use Rack::Static,
6
+ :urls => ["/images", "/js", "/css"],
7
+ :root => "docs"
8
+
9
+ text_plain = { 'content-type' => 'text/plain' }
10
+ text_html = {
11
+ 'content-type' => 'text/html',
12
+ 'cache-control' => 'public, max-age=86400'
13
+ }
14
+
15
+ run lambda {|env|
16
+ target = env['REQUEST_PATH'][1..-1]
17
+ source = File.join(Sancho::DOCS, target)
18
+ return [404, text_plain, ['not found']] \
19
+ unless File.exist?(source)
20
+ [200, text_html, File.open(source, File::RDONLY)]
21
+ }
@@ -0,0 +1,21 @@
1
+ require 'psych'
2
+
3
+ module Sancho
4
+ class Conf < Data.define(:domain, :title, :pages)
5
+ def self.read
6
+ return new(**Psych.load(File.read(CONF)).transform_keys(&:to_sym)) \
7
+ if File.exist?(CONF)
8
+
9
+ new.tap{|o| File.write(CONF, Psych.dump(o.to_h.transform_keys(&:to_s))) }
10
+ rescue => e
11
+ puts 'Sancho: reading config error', e.full_message
12
+ new
13
+ end
14
+
15
+ def initialize(domain: 'domain', title: 'title', pages: %w[README.md CHANGELOG.md])
16
+ super
17
+ end
18
+
19
+ CONF = 'sancho.yml'
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ module Sancho
2
+
3
+ class Page < Data.define(:source, :url, :date)
4
+ def initialize(source:, url: '')
5
+ url = File.basename(source, '.md').downcase + '.html' if url.empty?
6
+ date = File.mtime(source).to_date
7
+ super(source: source, url: url, date: date)
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'page'
2
+ require 'forwardable'
3
+
4
+ module Sancho
5
+
6
+ class Site < Data.define(:domain, :title, :pages)
7
+ extend Forwardable
8
+ def_delegator :pages, :each, :each_page
9
+
10
+ def initialize(domain:, title:, pages:)
11
+ pages = pages.map{|e| Page.new(e) }
12
+ super
13
+ end
14
+
15
+ def pages_by_date
16
+ pages.sort{|a, b| b.date <=> a.date}
17
+ end
18
+
19
+ def <<(page)
20
+ with(pages: pages.unshift(page))
21
+ end
22
+ end
23
+
24
+ end
data/lib/sancho.rb ADDED
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+ require 'date'
3
+ require_relative 'sancho/conf'
4
+ require_relative 'sancho/page'
5
+ require_relative 'sancho/site'
6
+
7
+ # Github Pages site generator
8
+ module Sancho
9
+ extend self
10
+
11
+ VERSION = "0.6.2"
12
+
13
+ DOCS = 'docs'.freeze
14
+
15
+ def root
16
+ dir = File.dirname(__dir__)
17
+ File.expand_path(dir)
18
+ end
19
+
20
+ def assets
21
+ File.join(root, '_layouts')
22
+ end
23
+
24
+ def docs
25
+ Site.new(**Conf.read.to_h)
26
+ end
27
+
28
+ def lib
29
+ File.join(root, 'lib')
30
+ end
31
+
32
+ # Rake.application.rake_require "tasks", [sancho]
33
+ def tasks
34
+ ['tasks', [lib]]
35
+ end
36
+
37
+ end