sancho 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
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