diff options
| -rwxr-xr-x | css/fonts.css | 4 | ||||
| -rwxr-xr-x | css/main.css | 248 | ||||
| -rwxr-xr-x | css/notebook.css | 48 | ||||
| -rwxr-xr-x | css/style.css | 456 | ||||
| -rwxr-xr-x | css/syntax.css | 60 | ||||
| -rw-r--r-- | images/haskell-logo.png | bin | 0 -> 5674 bytes | |||
| -rw-r--r-- | index.html | 16 | ||||
| -rw-r--r-- | log/2015-08-12-spqr.markdown | 59 | ||||
| -rw-r--r-- | log/2015-10-07-rosa-rosa-rosam.markdown | 46 | ||||
| -rw-r--r-- | log/2015-11-28-carpe-diem.markdown | 50 | ||||
| -rw-r--r-- | log/2015-12-07-tu-quoque.markdown | 58 | ||||
| -rw-r--r-- | mysite.cabal | 11 | ||||
| -rw-r--r-- | site.hs | 71 | ||||
| -rw-r--r-- | stack.yaml | 65 | ||||
| -rw-r--r-- | templates/archive.html | 1 | ||||
| -rw-r--r-- | templates/default.html | 33 | ||||
| -rw-r--r-- | templates/post-list.html | 8 | ||||
| -rw-r--r-- | templates/post.html | 41 |
18 files changed, 1275 insertions, 0 deletions
diff --git a/css/fonts.css b/css/fonts.css new file mode 100755 index 0000000..eddce04 --- /dev/null +++ b/css/fonts.css @@ -0,0 +1,4 @@ +@font-face { + font-family: 'EB Garamond'; + src: url('fonts/EBGaramond.otf'); +} diff --git a/css/main.css b/css/main.css new file mode 100755 index 0000000..84647e4 --- /dev/null +++ b/css/main.css @@ -0,0 +1,248 @@ +*, *:after, *:before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + font-family: "EB Garamond", Garamond, Baskerville, "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif; + margin: 0px; + font-size: 16px; + text-rendering: optimizeLegibility; + font-feature-settings: "kern"; + -webkit-font-feature-settings: "kern"; + -moz-font-feature-settings: "kern"; + -moz-font-feature-settings: "kern=1"; +} + +h1 { + font-size: 25px; + padding-bottom: 0px; + margin: 0 0 0px 0; + font-weight: normal; +} + +h2 { + padding-top: 9px; + border-top: 1px solid #bbb; + font-size: 20px; + margin-top: 0; + margin-bottom: 0; + padding-bottom: 3px; + font-weight: normal; +} + +h3 { + border-top: 1px solid #bbb; + padding-top: 10px; + font-size: 18px; + margin: 0 0 2px 0; + font-weight: normal; +} + +p { + margin-top: 0; +} + +.about { + margin-top: 17px; +} + +a { color: black; text-decoration:underline; } +a:visited { } +a:hover { text-decoration: none; } + +h1 a { color: black; text-decoration: none; } + +h3 a { text-decoration:none; } +h3 a:hover { text-decoration:underline; } + +ul { list-style: none; margin: -2px 0 0 0; padding: 0; } +li { padding: 2px 0 2px 0; color: #888; } + +li a { text-decoration: none; } +li a:visited { text-decoration: none; } +li a:hover { text-decoration: underline; } + +.project { + margin-top: 0; + padding-top: 0; + width: 320px; + position: relative; + margin-bottom: 0; +} + +.project p { + margin-bottom: 0; +} + +.project h2 { + margin-bottom: 0; +} + +.divider { + margin-left: auto; + margin-right: auto; + width: 20px; +} + +.project .links { + padding-bottom: 5px; +} + +.content { + padding: 5px; +} + +[class*='col-'] { + float: left; + padding-right: 20px; +} + +[class*='col-']:last-of-type { + padding-right: 0px; +} + +.grid { + max-width: 940px; + min-width: 940px; + margin: 0 auto; + overflow: hidden; +} + +.grid:after { + content: ""; + display: table; + clear: both; +} + +.grid-pad { + padding: 10px 0 0px 20px; +} + +.grid-pad > [class*='col-']:last-of-type { + padding-right: 20px; +} + +.push-right { + float: right; +} + +/* Content Columns */ + +.col-1-1 { + width: 100%; +} +.col-2-3, .col-8-12 { + width: 66.66%; +} + +.col-1-2, .col-6-12 { + width: 50%; +} + +.col-1-3, .col-4-12 { + width: 33.33%; +} + +.col-4point5-12 { + width: 37.5%; +} + +.col-1-4, .col-3-12 { + width: 25%; +} + +.col-1-5 { + width: 20%; +} + +.col-1-6, .col-2-12 { + width: 16.667%; +} + +.col-1-7 { + width: 14.28%; +} + +.col-1-8 { + width: 12.5%; +} + +.col-1-9 { + width: 11.1%; +} + +.col-1-10 { + width: 10%; +} + +.col-1-11 { + width: 9.09%; +} + +.col-1-12 { + width: 8.33% +} + +/* Layout Columns */ + +.col-11-12 { + width: 91.66% +} + +.col-10-12 { + width: 83.333%; +} + +.col-9-12 { + width: 75%; +} + +.col-5-12 { + width: 41.66%; +} + +.col-7-12 { + width: 58.33% +} + +@media handheld, only screen and (max-width: 767px) { + body { + font-size: 17px; + } + + .grid { + min-width: 320px; + max-width: 320px; + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + } + + .col-3-12.left-shunt { + width: 0; + height: 0; + padding: 0; + margin: 0; + } + + h1 { + margin-bottom: 0; + } + + .project { + height: auto; + width: 310px; + } + + [class*='col-'] { + width: auto; + float: none; + margin-left: 0px; + margin-right: 0px; + padding-left: 5px; + padding-right: 5px; + } +} diff --git a/css/notebook.css b/css/notebook.css new file mode 100755 index 0000000..5816446 --- /dev/null +++ b/css/notebook.css @@ -0,0 +1,48 @@ +body { + max-width: 60em; + margin:0 auto; +} + +pre.example { + text-align:left; + border: 1pt solid #A0A0A0; + background-color: #F0F0F0; + padding: 1ch; + display: block; + clear: right; +} + +div.note { + border: 1pt solid #A0A0A0; + padding: 1ch; + display: block; +} + +p { + margin-left: auto; + margin-right: auto; +} + +pre { + border: 1pt solid #AEBDCC; + background-color: #F3F5F7; + padding: 5pt; + font-family: monospace; + font-size: small; + overflow:auto; +} + +h1 { + font-size: x-large; +} + +h2 { + font-size: large; +} + +html { font-family: serif; +} + +a:link, a:visited { + color: navy; +}
\ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100755 index 0000000..6ce4527 --- /dev/null +++ b/css/style.css @@ -0,0 +1,456 @@ +/* +Theme Name: Journalist +Theme URI: http://lucianmarin.com/ +Description: Journalist is a smart, minimal theme designed for professional journalists. +Version: 1.9 +Author: <a href="http://lucianmarin.com/">Lucian E. Marin</a> +Tags: white, two columns, fixed width, light, minimal +For the WordPress community (GPL), enjoy it guys. +by Lucian E. Marin - lucianmarin.com +*/ + +hr { color:#aaa; background-color:#aaa; height:1px; border:0; } + +body { + font-family: "EB Garamond", Garamond, Baskerville, "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif; + font-size: 1em; + color:#333; + margin:0 5px 0 5px; + text-rendering: optimizeLegibility; + font-feature-settings: "kern"; + -webkit-font-feature-settings: "kern"; + -moz-font-feature-settings: "kern"; + -moz-font-feature-settings: "kern=1"; + font-kerning: normal; +} + +code { + font-family: "Droid Sans Mono"; + font-size: 0.9em; + background-color: #F3F5F7 + +} + +.about-link { + float: right; + margin-top: 30px; +} + +pre { + + border-top:1px solid #ddd; + border-bottom:1px solid #ddd; + padding-top:15px; + padding-left:-50px; + margin-bottom:15px; + padding: 1em 0; + font-family: "Droid Sans Mono"; + font-size: .8em; +} + +blockquote { font-family: "Droid Sans Mono"; } + +.prettyprint { + font-family: "Droid Sans Mono"; + line-height: 1.2em; + font-size: 0.85em; +} + +sup { + line-height:0; + font-size:9px; +} + + + +.post-separator { + text-align:center; + margin-bottom:5px; + font-weight:bold; +} + +* { +padding:0; +margin:0; +text-align:left; +} + +a { +color:#444; +} + +a:hover { +color:#444; +text-decoration:none; +border-bottom: none; +} + +#container { +width:600px; +margin:0 auto; +position:relative; +padding: 0 10px 0 10px; +} + +#container h1 { +font-size:1.9em; +font-weight:normal; +letter-spacing:0px; +float: left; +margin:0 0 10px 0; +padding:15px 0 1px 0; +} + +#container h1 a { + text-decoration:none; + border:none; +} + +#container h1 a:hover { + +} + +#bubble { +top:66px; +position:absolute; +display:block; +height:28px; +} + +#content { +float:left; +width:600px; +} + +#content h2 { +font-weight:normal; +font-size:1.6em; +line-height:34px; +margin:0px 0px 10px -1000px; +padding:5px 5px 5px 1000px; +border-bottom:1px solid #888; +} + +#content .edit_link { + font-size:9px; +} + +#content h2 a { +color:#333; +text-decoration:none; +border-bottom: none; + +} + +#content h2 a:hover { + +} + +#content h2.archive { +font-weight:normal; +color:#1c1c1c; +padding:0; +margin:5px 0 20px 0; +border:none; +text-align:left; +} + +.navigation { +padding:5px 10px 0 1000px; +margin:0 0 20px -1000px; +border-top:#888 1px solid; +} + +.navigation a { +color:#555; +text-decoration:none; +} + +.navigation a:hover { +color:#555; +text-decoration:none; +} + +.main h3 { +font-size:1.4em; +font-weight:normal; +margin:0 0 15px 0; +} + +.main h4 { +font-size:1.2em; +font-weight:normal; +margin:0 0 15px 0; +} + +.main a img { +padding:2px; +border:#0085b5 2px solid; +} + +.main a:hover img { +padding:2px; +border:#ca0002 2px solid; +} + +.main p { +margin:0 0 15px 0; +text-align:justify; +} + +.main ol { +line-height:18px; +margin:0 0 15px 30px; +} + +.main ul { +line-height:18px; +margin:0 0 15px 30px; +} + +.main li { +margin:0 0 5px 0; +} + +.signature { +float:left; +padding:0 15px 0 0; +border-right:#bbb 1px solid; +width:220px; +} + +.about { padding: 39px 0 16.5px 0; } + +#author h3 { +margin:5px 0 5px 0; +} + +#searchform { +margin:15px 0 0 0; +} + +#searchform input { +background:#222; +font-size:11px; +margin:2px 0; +padding:1px 4px 2px 4px; +border:#888 1px solid; +color:#eee; +} + +#searchform input:hover { +background:#333; +border:#999 1px solid; +color:#fff; +cursor:pointer; +} + +#searchform #s { +background:#f6f6f6; +font-size:11px; +margin:2px 0; +padding:2px 4px; +border:#aaa 1px solid; +color:#000; +} + +#searchform #s:hover { +cursor:text; +} + +input.searchfield { +background:#f6f6f6; +font-size:11px; +display:inline; +margin:5px 0 8px 0; +padding:2px 4px; +border:#aaa 1px solid; +color:#000; +size:20; +} + +input.searchfield:hover { +background:#eee; +color:#000; +} + +input.submit { +background:#222; +font-size:11px; +margin:0 0 10px 0; +padding:1px 4px 2px 4px; +border:#888 1px solid; +color:#eee; +} + +input.submit:hover { +background:#333; +cursor:pointer; +border:#999 1px solid; +color:#fff; +} + +input.subcom { +background:#eee; +font-size:11px; +margin:0 0 10px 0; +padding:1px 4px 2px 4px; +border:#888 1px solid; +color:#000; +} + +input.subcom:hover { +background:#222; +cursor:pointer; +border:#888 1px solid; +color:#eee; +} + +textarea { +background:#f6f6f6; +font-size:13px; +width:400px; +padding:2px 4px; +border:#aaa 1px solid; +color:#000; +} + +.postinput small { +font-size:11px; +margin:0 0 0 5px; +} + +p.logged { +font-size:13px; +} + +h3.reply { +font-size:15px; +margin:0 0 10px 0; +} + +.nocomments { +margin:0 0 30px 0; +} + +blockquote { +background:url(images/quote.gif) no-repeat top left; +padding:0 0 0 60px; +min-height:50px; +} + +#footer { +background:#eee; +font-size:11px; +color:#555; +margin:0 auto; +padding:10px 0 10px 10px; +text-align:center; +position:relative; +border-top:#bbb 1px solid; +border-bottom:#222 6px solid; +} + +#footer a { +color:#555; +font-weight:bold; +text-decoration:none; +} + +#footer a:hover { +color:#333; +text-decoration:none; +} + +.clear { +clear:both; +} + +.warning p { +background:url(images/warning.gif) no-repeat left; +height:160px; +padding:20px 0 0 90px; +font-size:20px; +margin:0 0 0 10px; +} + +input:focus, textarea:focus{ +background-color:#ffc; +} + +abbr { +border:none; +} + +.aligncenter { +display: block; +margin-left: auto; +margin-right: auto; +} + +.alignleft { +float:left; +} + +.alignright { +float:right; +} + +/* self-clear floats */ + +.group:after { +content: "."; +display: block; +height: 0; +clear: both; +visibility: hidden; +} + +/* IE Hacks */ + +*html #bubble { +display:none; +} + +*html #bubble p { +display:none; +} + +* html .group, +* html #nav ul li a { +height: 1%; +} + +*:first-child+html .group { +min-height: 1px; +} + +* html #nav ul li a { +display: inline; +} + +/* resize videos to screen size */ +.video-container { + position: relative; + padding-bottom: 56.25%; + padding-top: 30px; height: 0; overflow: hidden; +} +.video-container iframe, +.video-container object, +.video-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +@media handheld, only screen and (max-width: 767px) { + #container { + width:350px; + } + + #content { + width:350px; + } +} diff --git a/css/syntax.css b/css/syntax.css new file mode 100755 index 0000000..2774b76 --- /dev/null +++ b/css/syntax.css @@ -0,0 +1,60 @@ +.highlight { background: #ffffff; } +.highlight .c { color: #999988; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .k { font-weight: bold } /* Keyword */ +.highlight .o { font-weight: bold } /* Operator */ +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gh { color: #999999 } /* Generic.Heading */ +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #aaaaaa } /* Generic.Subheading */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { font-weight: bold } /* Keyword.Constant */ +.highlight .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #d14 } /* Literal.String */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086B3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ +.highlight .ni { color: #800080 } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight .nn { color: #555555 } /* Name.Namespace */ +.highlight .nt { color: #000080 } /* Name.Tag */ +.highlight .nv { color: #008080 } /* Name.Variable */ +.highlight .ow { font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sb { color: #d14 } /* Literal.String.Backtick */ +.highlight .sc { color: #d14 } /* Literal.String.Char */ +.highlight .sd { color: #d14 } /* Literal.String.Doc */ +.highlight .s2 { color: #d14 } /* Literal.String.Double */ +.highlight .se { color: #d14 } /* Literal.String.Escape */ +.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ +.highlight .si { color: #d14 } /* Literal.String.Interpol */ +.highlight .sx { color: #d14 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #d14 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #008080 } /* Name.Variable.Class */ +.highlight .vg { color: #008080 } /* Name.Variable.Global */ +.highlight .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ diff --git a/images/haskell-logo.png b/images/haskell-logo.png Binary files differnew file mode 100644 index 0000000..97c0937 --- /dev/null +++ b/images/haskell-logo.png diff --git a/index.html b/index.html new file mode 100644 index 0000000..c5d4d4b --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ +--- +title: Home +--- + +<h2>Welcome</h2> + +<img src="/images/haskell-logo.png" style="float: right; margin: 10px;" /> + +<p>Welcome to my blog!</p> + +<p>I've reproduced a list of recent posts here for your reading pleasure:</p> + +<h2>Posts</h2> +$partial("templates/post-list.html")$ + +<p>…or you can find more in the <a href="/log">archives</a>.</p> diff --git a/log/2015-08-12-spqr.markdown b/log/2015-08-12-spqr.markdown new file mode 100644 index 0000000..3704aa5 --- /dev/null +++ b/log/2015-08-12-spqr.markdown @@ -0,0 +1,59 @@ +--- +title: S.P.Q.R. +--- + +Mauris in lorem nisl. Maecenas tempus facilisis ante, eget viverra nisl +tincidunt et. Donec turpis lectus, mattis ac malesuada a, accumsan eu libero. +Morbi condimentum, tortor et tincidunt ullamcorper, sem quam pretium nulla, id +convallis lectus libero nec turpis. Proin dapibus nisi id est sodales nec +ultrices tortor pellentesque. Vivamus vel nisi ac lacus sollicitudin vulputate +ac ut ligula. Nullam feugiat risus eget eros gravida in molestie sapien euismod. +Nunc sed hendrerit orci. Nulla mollis consequat lorem ac blandit. Ut et turpis +mauris. Nulla est odio, posuere id ullamcorper sit amet, tincidunt vel justo. +Curabitur placerat tincidunt varius. Nulla vulputate, ipsum eu consectetur +mollis, dui nibh aliquam neque, at ultricies leo ligula et arcu. Proin et mi +eget tellus sodales lobortis. Sed tempor, urna vel pulvinar faucibus, lectus +urna vehicula ante, at facilisis dolor odio at lorem. Morbi vehicula euismod +urna, et imperdiet urna ornare vitae. + +Sed tincidunt sollicitudin ultrices. In hac habitasse platea dictumst. Morbi +ligula lectus, egestas at ultricies nec, fringilla et tellus. Duis urna lorem, +bibendum a ornare sed, euismod sed nunc. Aliquam tempor massa at velit fringilla +fringilla. Praesent sit amet tempor felis. Maecenas id felis ac velit aliquam +tempor a sit amet orci. Nunc placerat nulla pellentesque sem commodo cursus. +Praesent quis sapien orci, quis ultricies augue. Nam vestibulum sem non augue +semper tincidunt pellentesque ipsum volutpat. Duis congue, nunc a aliquam +luctus, quam ante convallis nisi, ac pellentesque lacus orci vel turpis. Cum +sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus +mus. Suspendisse hendrerit nisl eu felis sagittis faucibus. Nunc eu congue +lorem. Quisque non nibh nisi, et ultrices massa. Sed vitae erat vitae nulla +pellentesque fermentum. + +Ut diam nunc, consectetur ut ultrices eu, iaculis sed felis. Sed lacinia, odio +et accumsan luctus, arcu ipsum accumsan erat, sit amet malesuada libero lacus et +velit. Donec accumsan tristique tristique. Proin a metus magna, vitae mattis +nisl. Integer a libero ipsum. Mauris faucibus eleifend metus id sodales. Morbi +ornare, nibh nec facilisis imperdiet, turpis sem commodo lorem, id commodo +mauris metus vitae justo. Etiam at pellentesque tortor. Proin mollis accumsan +ligula, nec tempus augue auctor quis. Nulla lacinia, mi quis lobortis auctor, +nisi diam posuere dui, pulvinar feugiat dui libero eget quam. Fusce eu risus +nunc, a consectetur orci. Class aptent taciti sociosqu ad litora torquent per +conubia nostra, per inceptos himenaeos. Maecenas venenatis aliquet orci, a +ultricies sem facilisis eu. Donec dolor purus, porta condimentum convallis nec, +dignissim nec libero. + +Etiam rutrum ultricies dui, et interdum metus elementum et. Nulla sapien nunc, +interdum tristique porttitor in, laoreet vitae mi. Ut vehicula auctor mauris sit +amet bibendum. Phasellus adipiscing mattis libero, eget adipiscing erat +dignissim at. Vivamus convallis malesuada metus nec cursus. Ut cursus, lorem +eleifend sollicitudin condimentum, felis tortor sodales augue, ac tempus lacus +ipsum vitae quam. Vestibulum vitae lacus non tortor vehicula iaculis faucibus +quis massa. + +Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus +mus. Duis malesuada neque nec ante porttitor accumsan. Suspendisse potenti. +Aliquam in lacus magna, imperdiet laoreet lectus. Praesent id diam nec ante +commodo rhoncus nec vel augue. Pellentesque tortor massa, dignissim ut sagittis +sed, hendrerit vitae nunc. Nam gravida, urna vitae hendrerit rutrum, felis augue +vulputate tortor, ut varius velit libero nec lectus. In adipiscing massa in est +scelerisque ullamcorper. Vivamus in nisi metus. diff --git a/log/2015-10-07-rosa-rosa-rosam.markdown b/log/2015-10-07-rosa-rosa-rosam.markdown new file mode 100644 index 0000000..bbda8fd --- /dev/null +++ b/log/2015-10-07-rosa-rosa-rosam.markdown @@ -0,0 +1,46 @@ +--- +title: Rosa Rosa Rosam +author: Ovidius +--- + +Suspendisse pharetra ullamcorper sem et auctor. Suspendisse vitae tellus eu +turpis dignissim gravida ut ut tortor. Cum sociis natoque penatibus et magnis +dis parturient montes, nascetur ridiculus mus. Morbi aliquam sapien quis nisl +sodales non aliquet nisl iaculis. Curabitur fermentum orci vel sapien +pellentesque id condimentum metus vehicula. Curabitur turpis purus, scelerisque +at interdum quis, placerat sit amet tortor. Aliquam erat volutpat. + +Integer posuere felis non arcu suscipit ullamcorper. Nam tempus risus venenatis +orci sagittis eu aliquam ante tincidunt. Aenean vehicula ipsum id sapien +tincidunt commodo. Aliquam erat volutpat. Curabitur vehicula libero ac turpis +cursus consectetur. Praesent posuere egestas purus et dapibus. Mauris egestas, +lectus vitae scelerisque ultricies, metus lorem tempor nisi, sed vehicula tortor +mauris nec urna. Quisque urna tellus, facilisis at mollis eget, adipiscing in +nisl. Proin quam arcu, euismod et imperdiet sed, ultricies sed orci. + +Nulla malesuada sem eget lectus scelerisque nec rhoncus metus interdum. In dui +felis, rhoncus id scelerisque eget, vulputate id sem. Nulla facilisi. Vestibulum +eleifend, metus dignissim lacinia ornare, magna nulla vehicula nisi, sed +molestie mauris ipsum vel turpis. Class aptent taciti sociosqu ad litora +torquent per conubia nostra, per inceptos himenaeos. Nulla urna leo, vehicula +eget dignissim a, hendrerit ut risus. Fusce ultricies elementum placerat. Nam at +dolor sed nisi mollis sollicitudin vitae at urna. Vestibulum iaculis adipiscing +eros et mollis. + +Phasellus ultricies elit eu risus sagittis eu dictum ante ultrices. Nulla +congue, augue ac placerat tempor, orci mi luctus nisi, at varius ipsum sem sed +eros. Vivamus eget velit eget felis posuere ornare. In sed metus non est iaculis +facilisis dapibus sit amet enim. Aliquam viverra tortor eget neque volutpat in +auctor urna rutrum. Aliquam ligula augue, congue sit amet rutrum in, semper vel +nulla. Sed tempus porttitor faucibus. Donec cursus sodales nulla, quis lacinia +mi vehicula vel. Sed nec purus orci. Nam leo sapien, rutrum a ultrices quis, +placerat vel ligula. Donec massa quam, pellentesque et molestie nec, hendrerit +id mauris. In hac habitasse platea dictumst. Cras quis quam sem. Curabitur in +arcu diam, in interdum mauris. + +Proin lorem sapien, iaculis et faucibus nec, dictum sed nunc. Pellentesque in +purus justo. Vestibulum facilisis rutrum nisi, a egestas nunc suscipit sed. Ut +quis tortor a arcu bibendum placerat non sed ante. Praesent orci sem, posuere +sit amet cursus molestie, volutpat ut purus. Curabitur aliquam, purus in +pharetra viverra, lorem leo aliquam tellus, vel consequat felis neque et mauris. +Aliquam erat volutpat. diff --git a/log/2015-11-28-carpe-diem.markdown b/log/2015-11-28-carpe-diem.markdown new file mode 100644 index 0000000..bd115da --- /dev/null +++ b/log/2015-11-28-carpe-diem.markdown @@ -0,0 +1,50 @@ +--- +title: Carpe Diem +--- + +Fusce tortor quam, egestas in posuere quis, porttitor vel turpis. Donec +vulputate porttitor augue at rhoncus. Proin iaculis consectetur sagittis. +Curabitur venenatis turpis sit amet purus tristique nec posuere risus laoreet. +Nullam nisi sem, dapibus id semper id, egestas vel arcu. Morbi porttitor ipsum +placerat erat consequat sed consequat purus feugiat. Donec auctor elit ut risus +mattis facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +Proin vulputate sapien facilisis leo ornare pulvinar. Fusce tempus massa a risus +semper iaculis. Suspendisse sollicitudin posuere nunc, sit amet rutrum leo +facilisis mattis. Sed ornare auctor dui, vitae rutrum neque auctor sit amet. +Proin ac dui magna. Mauris vehicula interdum augue, nec ultrices libero egestas +quis. Nunc convallis euismod ipsum, id sollicitudin orci consequat ac. Fusce +bibendum congue libero, in rutrum nulla congue non. Cras sit amet risus tortor, +eu pellentesque dui. Phasellus euismod enim non nibh sodales quis consectetur +lorem laoreet. Vivamus a egestas quam. Curabitur in tortor augue, vitae varius +tellus. Integer varius, elit ac gravida suscipit, eros erat pellentesque nisi, +et tristique augue odio id nulla. Aliquam sit amet nunc vel tellus hendrerit +tempus ac vel sem. + +Aenean tincidunt sollicitudin sapien ut porttitor. Curabitur molestie adipiscing +lorem vel scelerisque. Donec vitae interdum est. Proin rutrum vulputate +faucibus. Suspendisse sit amet felis odio, non volutpat ante. Sed eu lectus +quam. Curabitur tristique rhoncus est, vel commodo tortor suscipit semper. +Maecenas feugiat vestibulum nisi id facilisis. Nulla non tincidunt libero. +Praesent ultrices interdum commodo. Sed euismod nisl auctor leo ultrices rutrum. +Aliquam nibh felis, congue molestie blandit at, bibendum at eros. Aenean +tincidunt, tortor iaculis placerat sollicitudin, lorem justo tempor diam, et +posuere sapien leo et magna. Quisque vel aliquam mauris. + +Proin varius tempus fermentum. Cum sociis natoque penatibus et magnis dis +parturient montes, nascetur ridiculus mus. Sed tincidunt nunc id magna +adipiscing non sollicitudin turpis tempor. Etiam vel elit ipsum, quis euismod +velit. Quisque elementum magna vitae quam venenatis lacinia. Sed at arcu ipsum. +Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos +himenaeos. Donec ut lorem ac sapien cursus lacinia sit amet mollis dolor. +Vivamus tempus odio nec magna faucibus sed hendrerit lorem tempor. + +Vestibulum eu nisi arcu. Curabitur nisi risus, fermentum ut lacinia ut, interdum +nec magna. Nunc aliquet gravida massa, eu aliquam lorem faucibus at. Sed +sollicitudin volutpat velit id tempor. In nibh justo, pharetra et pretium +dignissim, tempus in turpis. Phasellus eget lobortis nisl. Phasellus sed +fermentum diam. Nam tempus pharetra odio, quis congue eros imperdiet eu. Aliquam +dui eros, hendrerit et vulputate vel, porta eu eros. Nullam nisi dui, commodo +eget pharetra ut, ornare sit amet nunc. Fusce vel neque urna. Maecenas nulla +ante, egestas at consequat quis, fermentum a enim. Aliquam id tristique urna. +Integer augue justo, scelerisque et consectetur id, rhoncus eget enim. diff --git a/log/2015-12-07-tu-quoque.markdown b/log/2015-12-07-tu-quoque.markdown new file mode 100644 index 0000000..bdf2ea4 --- /dev/null +++ b/log/2015-12-07-tu-quoque.markdown @@ -0,0 +1,58 @@ +--- +title: Tu Quoque +author: Julius +--- + +Vestibulum leo turpis, dignissim quis ultrices sit amet, iaculis ac ligula. +Pellentesque tristique, velit eget scelerisque scelerisque, est dolor ultrices +arcu, quis ullamcorper justo arcu luctus mauris. Integer congue molestie nisi id +posuere. Fusce pellentesque gravida tempus. Integer viverra tortor nec eros +mollis quis convallis sem laoreet. Nulla id libero ac erat varius laoreet. Proin +sed est est. Curabitur lacinia fermentum lorem, elementum malesuada ipsum +malesuada ut. Donec suscipit elit id leo vehicula mattis non sed leo. Morbi +varius eleifend varius. Nulla vestibulum, neque vitae aliquam eleifend, nisi +tellus placerat nunc, quis suscipit elit turpis eu tortor. Etiam euismod +convallis lectus quis venenatis. Phasellus laoreet magna in nibh cursus eu +egestas nulla convallis. Aliquam vel ullamcorper risus. Fusce dictum, massa id +consequat viverra, nulla ante tristique est, a faucibus nisi enim nec dui. Donec +metus ligula, condimentum at porttitor eget, lobortis at quam. + +Aenean vel libero in magna ultricies congue in a odio. Donec faucibus rutrum +ornare. Fusce dictum eleifend fermentum. Vestibulum vel nibh a metus porttitor +rhoncus. Pellentesque id quam neque, eget molestie arcu. Integer in elit vel +neque viverra ultricies in eget massa. Nam ut convallis est. Pellentesque eros +eros, sodales non vehicula et, tincidunt ut odio. Cras suscipit ultrices metus +sit amet molestie. Fusce enim leo, vehicula sed sodales quis, adipiscing at +ipsum. + +Nunc tempor dignissim enim, sed tincidunt eros bibendum quis. Curabitur et dolor +augue, id laoreet mi. Nulla cursus felis id dui vehicula vitae ornare lorem +blandit. Cras eget dui nec odio volutpat pharetra. Fusce hendrerit justo justo, +vel imperdiet enim. Vivamus elit risus, interdum ultrices accumsan eleifend, +vestibulum vitae sapien. Integer bibendum ullamcorper tristique. Nulla quis odio +lectus, quis eleifend augue. Integer a ligula mauris. Aenean et tempus tortor. +Quisque at tortor mi. Vivamus accumsan feugiat est a blandit. Sed vitae enim ut +dolor semper sodales. Duis tristique, ante et placerat elementum, nulla tellus +pellentesque sapien, quis posuere velit mi eget nulla. Sed vestibulum nunc non +est porttitor ut rutrum nibh semper. Pellentesque habitant morbi tristique +senectus et netus et malesuada fames ac turpis egestas. + +Nulla adipiscing ultricies lobortis. Vivamus iaculis nisl vitae tellus laoreet +vitae aliquet lacus mollis. Phasellus ut lacus urna, sed sagittis ante. Etiam +consectetur pretium nisl sed dignissim. Pellentesque convallis, nisl eget +commodo mollis, sem magna consequat arcu, sed pretium ipsum arcu sit amet neque. +Aliquam erat volutpat. Morbi sed mi sed urna vestibulum placerat vitae vel +metus. Fusce ac ante at justo pharetra vehicula. Vivamus vel tortor eget augue +aliquet aliquet at vel odio. Nunc venenatis, magna quis facilisis fringilla, +augue tellus varius neque, in vulputate est eros ut tortor. Duis lorem neque, +aliquam congue posuere id, condimentum non dui. Phasellus ut dui massa, +porttitor suscipit augue. Praesent quis tellus quam, vel volutpat metus. Vivamus +enim est, aliquam in imperdiet et, sagittis eu ligula. Vestibulum hendrerit +placerat orci et aliquet. Cras pharetra, dolor placerat lobortis tempor, metus +odio cursus ligula, et posuere lacus ligula quis dui. + +Donec a lectus eu nibh malesuada aliquam. Proin at metus quam, et tincidunt leo. +Quisque lacus justo, scelerisque sodales pulvinar sed, dignissim ut sapien. +Vivamus diam felis, adipiscing sollicitudin ultricies id, accumsan ac felis. In +eu posuere ligula. Suspendisse potenti. Donec porttitor dictum dui id vehicula. +Integer ante velit, congue id dictum et, adipiscing a tortor. diff --git a/mysite.cabal b/mysite.cabal new file mode 100644 index 0000000..3899aae --- /dev/null +++ b/mysite.cabal @@ -0,0 +1,11 @@ +name: mysite +version: 0.1.0.0 +build-type: Simple +cabal-version: >= 1.10 + +executable site + main-is: site.hs + build-depends: base == 4.* + , hakyll == 4.9.* + ghc-options: -threaded + default-language: Haskell2010 @@ -0,0 +1,71 @@ +-------------------------------------------------------------------------------- +{-# LANGUAGE OverloadedStrings #-} +import Data.Monoid (mappend) +import Hakyll + + +-------------------------------------------------------------------------------- +main :: IO () +main = hakyll $ do + match "images/*" $ do + route idRoute + compile copyFileCompiler + + match "css/*" $ do + route idRoute + compile compressCssCompiler + + match (fromList ["about.rst", "contact.markdown"]) $ do + route $ setExtension "html" + compile $ pandocCompiler + >>= loadAndApplyTemplate "templates/default.html" defaultContext + >>= relativizeUrls + + match "log/*.markdown" $ do + route $ setExtension "html" + compile $ pandocCompiler + >>= loadAndApplyTemplate "templates/post.html" postCtx + >>= relativizeUrls + + create ["log/index.html"] $ do + route idRoute + compile $ do + posts <- recentFirst =<< loadAll "log/*.markdown" + let archiveCtx = + listField "posts" postForArchiveCtx (return posts) `mappend` + constField "title" "archive of log posts" `mappend` + defaultContext + + makeItem "" + >>= loadAndApplyTemplate "templates/archive.html" archiveCtx + >>= loadAndApplyTemplate "templates/post.html" archiveCtx + >>= relativizeUrls + + + match "index.html" $ do + route idRoute + compile $ do + posts <- recentFirst =<< loadAll "posts/*" + let indexCtx = + listField "posts" postCtx (return posts) `mappend` + constField "title" "Home" `mappend` + defaultContext + + getResourceBody + >>= applyAsTemplate indexCtx + >>= loadAndApplyTemplate "templates/default.html" indexCtx + >>= relativizeUrls + + match "templates/*" $ compile templateBodyCompiler + + +-------------------------------------------------------------------------------- +postCtx :: Context String +postCtx = + dateField "date" "%B %e, %Y" `mappend` + defaultContext + +postForArchiveCtx :: Context String +postForArchiveCtx = + dateField "date" "%d %b %Y" `mappend` + defaultContext diff --git a/stack.yaml b/stack.yaml new file mode 100644 index 0000000..cb7f27b --- /dev/null +++ b/stack.yaml @@ -0,0 +1,65 @@ +# This file was automatically generated by 'stack init' +# +# Some commonly used options have been documented as comments in this file. +# For advanced use and comprehensive documentation of the format, please see: +# https://docs.haskellstack.org/en/stable/yaml_configuration/ + +# Resolver to choose a 'specific' stackage snapshot or a compiler version. +# A snapshot resolver dictates the compiler version and the set of packages +# to be used for project dependencies. For example: +# +# resolver: lts-3.5 +# resolver: nightly-2015-09-21 +# resolver: ghc-7.10.2 +# resolver: ghcjs-0.1.0_ghc-7.10.2 +# +# The location of a snapshot can be provided as a file or url. Stack assumes +# a snapshot provided as a file might change, whereas a url resource does not. +# +# resolver: ./custom-snapshot.yaml +# resolver: https://example.com/snapshots/2018-01-01.yaml +resolver: lts-9.21 + +# User packages to be built. +# Various formats can be used as shown in the example below. +# +# packages: +# - some-directory +# - https://example.com/foo/bar/baz-0.0.2.tar.gz +# - location: +# git: https://github.com/commercialhaskell/stack.git +# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# subdirs: +# - auto-update +# - wai +packages: +- . +# Dependency packages to be pulled from upstream that are not in the resolver +# using the same syntax as the packages field. +# (e.g., acme-missiles-0.3) +# extra-deps: [] + +# Override default flag values for local packages and extra-deps +# flags: {} + +# Extra package databases containing global packages +# extra-package-dbs: [] + +# Control whether we use the GHC we find on the path +# system-ghc: true +# +# Require a specific version of stack, using version ranges +# require-stack-version: -any # Default +# require-stack-version: ">=1.7" +# +# Override the architecture used by stack, especially useful on Windows +# arch: i386 +# arch: x86_64 +# +# Extra directories used by stack for building +# extra-include-dirs: [/path/to/dir] +# extra-lib-dirs: [/path/to/dir] +# +# Allow a newer minor version of GHC than the snapshot specifies +# compiler-check: newer-minor
\ No newline at end of file diff --git a/templates/archive.html b/templates/archive.html new file mode 100644 index 0000000..58ec89e --- /dev/null +++ b/templates/archive.html @@ -0,0 +1 @@ +$partial("templates/post-list.html")$ diff --git a/templates/default.html b/templates/default.html new file mode 100644 index 0000000..c3dd400 --- /dev/null +++ b/templates/default.html @@ -0,0 +1,33 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta http-equiv="x-ua-compatible" content="ie=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>My Hakyll Blog - $title$</title> + <link rel="stylesheet" href="/css/default.css" /> + </head> + <body> + <div id="header"> + <div id="logo"> + <a href="/">My Hakyll Blog</a> + </div> + <div id="navigation"> + <a href="/">Home</a> + <a href="/about.html">About</a> + <a href="/contact.html">Contact</a> + <a href="/archive.html">Archive</a> + </div> + </div> + + <div id="content"> + <h1>$title$</h1> + $body$ + </div> + + <div id="footer"> + Site proudly generated by + <a href="http://jaspervdj.be/hakyll">Hakyll</a> + </div> + </body> +</html> diff --git a/templates/post-list.html b/templates/post-list.html new file mode 100644 index 0000000..32a8d3f --- /dev/null +++ b/templates/post-list.html @@ -0,0 +1,8 @@ +<table> + $for(posts)$ + <tr class="archive"> + <th><strong>$date$</strong></th> + <td><a href="$url$">$title$</a></td> + </tr> + $endfor$ +</table> diff --git a/templates/post.html b/templates/post.html new file mode 100644 index 0000000..72cbcb0 --- /dev/null +++ b/templates/post.html @@ -0,0 +1,41 @@ +<!doctype html> +<html lang="en"> +<head> +<title>$title$ in gnusosa</title> +<meta name="viewport" content="width = device-width"> +<meta charset="utf-8"> +<meta name="keywords" content="gnusosa, Carlos Ivan Sosa, log.gnusosa.net, gnusosa.net, Carlos Sosa"> +<meta name="author" content="Carlos Ivan Sosa"> +<meta name="robots" content="index,follow"> +<meta name="generator" content="Hakyll 4.9.2.0-1/Org-mode 8.2.7b"> +<link rel="stylesheet" type="text/css" href="/fonts/stylesheet.css" /> +<link href="/css/style.css" media="screen, print" rel="stylesheet" type="text/css"> +<link href="/css/syntax.css" media="screen" rel="stylesheet" type="text/css"> +<link href="/feed" rel="alternate" title="gnusosa.net RSS Feed" type="application/rss+xml"> +<link href="http://gnusosa.net" rel="index" title="gnusosa.net"> +</head> +<body> +<div id="container" class="group"> +<h1> + <a href="http://gnusosa.net/log/">Carlos Sosa</a> +</h1> + +<div class="about-link"> + <a href="http://gnusosa.net/">About</a> <a href="http://gnusosa.net/feed">rss</a> +</div> + +<div id="content" class="group"> + + <h2 id="post-442"> + <a href="$url$" rel="bookmark">$title$</a> + </h2> + +<div class="main"> + $body$ +</div> +<br> +<div class="navigation group"> </div> +</div> +</div> +</body> +</html> |
