about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorCase Duckworth2015-03-14 11:33:14 -0700
committerCase Duckworth2015-03-14 11:33:14 -0700
commit4fe237fa977eb7fca100aac29960a21c09107217 (patch)
tree32d87372b7c258ebb5aac53c2ee2bdb8358b7554
parentChange link underline style (diff)
downloadautocento-4fe237fa977eb7fca100aac29960a21c09107217.tar.gz
autocento-4fe237fa977eb7fca100aac29960a21c09107217.zip
Move test suite into its own folder
-rw-r--r--test/.template.html123
-rw-r--r--test/compile.lua102
-rw-r--r--test/css/common.css63
-rw-r--r--test/ipsumlorem.html71
-rw-r--r--test/js/hylo.js21
-rw-r--r--test/js/lozenge.js29
-rw-r--r--test/loremipsum.html71
-rw-r--r--test/lua/river.lua226
-rw-r--r--test/river/ipsumlorem.river343
-rw-r--r--test/river/loremipsum.river343
-rw-r--r--test/src/ipsumlorem.txt74
-rw-r--r--test/src/loremipsum.txt74
12 files changed, 1540 insertions, 0 deletions
diff --git a/test/.template.html b/test/.template.html new file mode 100644 index 0000000..47c7dd9 --- /dev/null +++ b/test/.template.html
@@ -0,0 +1,123 @@
1<!DOCTYPE html>
2<!-- AUTOCENTO OF THE BREAKFAST TABLE -->
3<!-- vim: fdm=indent
4-->
5<html lang="en">
6<head>
7 <meta charset="utf-8">
8 <meta name="generator" content="pandoc">
9 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
10 <meta name="author" content="Case Duckworth">
11
12 <title>$title$ | Autocento of the breakfast table</title>
13 <link rel="icon" type="image/png" href="img/favico.png" />
14
15 <link rel="stylesheet" type="text/css" href="./css/common.css">
16 <script src="./js/lozenge.js" type="text/javascript"> </script>
17 <script src="./js/hylo.js" type="text/javascript"> </script>
18
19 $if(genre)$
20 <link rel="stylesheet" type="text/css" href="./css/$genre$.css">
21 <script src="./js/$genre$.js" type="text/javascript"> </script>
22 $endif$
23 $if(project.css)$
24 <link rel="stylesheet" type="text/css" href="./css/$project.css$.css">
25 <script src="./js/$project.css$.js" type="text/javascript"> </script>
26 $endif$
27 <!--[if lt IE 9]>
28 <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"> </script>
29 <![endif]-->
30 <!-- <script src="js/external.js"> </script> -->
31 $for(header-includes)$
32 $headerincludes$
33 $endfor$
34</head>
35<body>
36 $for(include-before)$ $include-before$ $endfor$
37
38 <article id="container">
39 <header>
40 <!-- title -->
41 $if(title)$<h1 class="title">$title$</h1>$endif$
42 $if(subtitle)$<h1 class="subtitle">$subtitle$</h1>$endif$
43
44 <div id="dedepi">
45 $if(dedication)$
46 <!-- dedication -->
47 <div class="dedication">$dedication$</div>
48 $endif$
49
50 $if(epigraph.content)$
51 <!-- epigraph -->
52 <div class="epigraph">
53 $if(epigraph.link)$
54 <a href="$epigraph.link$">$epigraph.content$</a>
55 $else$
56 $epigraph.content$
57 $endif$
58
59 $if(epigraph.attrib)$
60 <div class="attrib">$epigraph.attrib$</div>
61 $endif$
62 </div>
63 $endif$
64 </div>
65 </header>
66
67 $if(ekphrastic.image)$
68 <div class="ekphrastic">
69 $if(ekphrastic.link)$
70 <a href="$ekphrastic.link$">
71 <img src="img/$ekphrastic.image$"
72 $if(ekphrastic.title)$
73 title="$ekphrastic.title$"
74 $endif$
75 $if(ekphrastic.alt)$
76 alt="$ekphrastic.alt$"
77 $else$
78 alt="$ekphrastic.title$"
79 $endif$
80 $if(ekphrastic.class)$
81 class="$ekphrastic.class$"
82 $endif$
83 />
84 </a>
85 $else$
86 <img src="img/$ekphrastic.image$"
87 $if(ekphrastic.title)$
88 title="$ekphrastic.title$"
89 $endif$
90 $if(ekphrastic.alt)$
91 alt="$ekphrastic.alt$"
92 $else$
93 alt="$ekphrastic.title$"
94 $endif$
95 $if(ekphrastic.class)$
96 class="$ekphrastic.class$"
97 $endif$
98 />
99 $endif$
100 </div>
101 $endif$
102
103 <section class="content $genre$">$body$</section>
104 </article>
105 <nav>
106 $for(project.prev)$
107 <a class="prevlink" href="$project.prev.link$.html"
108 title="Previous article$if(project.title)$ in $project.title$$endif$">
109 $project.prev.title$
110 </a>
111 $endfor$
112 <a href="#" id="lozenge" title="Random page"> &loz; </a>
113 $for(project.next)$
114 <a class="nextlink" href="$project.next.link$.html"
115 title="Next article$if(project.title)$ in $project.title$$endif$">
116 $project.next.title$
117 </a>
118 $endfor$
119 </nav>
120
121 $for(include-after)$ $include-after$ $endfor$
122</body>
123</html>
diff --git a/test/compile.lua b/test/compile.lua new file mode 100644 index 0000000..765f348 --- /dev/null +++ b/test/compile.lua
@@ -0,0 +1,102 @@
1#!/usr/bin/env lua
2-- A compiler for Autocento of the breakfast table
3-- written in Lua (because we can, and because
4-- it's good practice for Functional Programming)
5-- ((OR WHATEVER YOU CALL IT, GAHD))
6-- vim: fdm=indent
7
8dir = "/d/Copy/writing/autocento/"
9
10function filterout (list, filter)
11 local output = {}
12 for _,v in ipairs(list) do
13 if not string.match(v, filter) then
14 -- table.insert Y U NO WORK?
15 output[#output + 1] = v
16 end
17 end
18 return output
19end
20function intable (table, item)
21 for k,v in pairs(table) do
22 if v == item then return k end
23 end
24 return false
25end
26function tabsub (table, pattern, replace)
27 local output = {}
28 for k,v in pairs(table) do
29 output[k] = v:gsub(pattern, replace)
30 end
31 return output
32end
33
34function compile (files, output_fmt, extension, template, args)
35 local errors = {}
36 if template then table.insert(args, 'template="'..template..'"') end
37 for _, file in pairs(files) do
38 local pandoc_run = {
39 'pandoc',
40 '-f markdown',
41 '-t '..output_fmt,
42 table.concat(tabsub(args, "^", "--"), ' '),
43 '-o '..file:gsub('^.*/(.-)%.%a+', '%1.'..extension),
44 file
45 }
46 print("Compiling "..file.." to ".. extension)
47 -- print(table.concat(pandoc_run, ' '))
48 os.execute(table.concat(pandoc_run, ' '))
49 end
50end
51
52function move (files, new_dir)
53 local exe = {}
54 for _,file in pairs(files) do
55 print("Moving "..file.." to "..new_dir.."/ ..")
56 table.insert(exe, 'mv '..file..' '..new_dir..'/')
57 end
58 os.execute(table.concat(exe, ' && '))
59 -- print(table.concat(exe, '; '))
60end
61
62function lozenge (files)
63 local output = 'var files=['
64 for _,file in pairs(files) do
65 output = output .. file:gsub('.*', '"%0",')
66 end
67 output = output:gsub(',$', ']')
68 return output
69end
70
71local files = filterout(arg, '^%-')
72if not files or #files == 0 then
73 print("> No file list. WUT?")
74 os.exit(1)
75end
76local args = filterout(arg, '^[^%-]')
77if not args or #args == 0 or args == {'-all'} then
78 args = {
79 '-html',
80 '-river',
81 '-lozenge',
82 }
83end
84
85if intable(args, '-html') then
86 print("Compiling HTML ... ")
87 compile(files, "html5", "html", ".template.html", {
88 "smart",
89 "mathml",
90 "section-divs",
91 })
92 -- move(tabsub(files,'^.*/(.*)%.txt','%1.html'), ".")
93end
94if intable(args, '-river') then
95 print("Compiling RIVER ... ")
96 compile(files, "lua/river.lua", "river", nil, {})
97 move(tabsub(files,'^.*/(.*)%.txt','%1.river'), "river")
98end
99if intable(args, '-lozenge') then
100 print("Updating lozenge.js with file list ... ")
101 -- TODO
102end
diff --git a/test/css/common.css b/test/css/common.css new file mode 100644 index 0000000..3f704b1 --- /dev/null +++ b/test/css/common.css
@@ -0,0 +1,63 @@
1/* Colors {{{ */
2#container {
3 border: 1px dashed black;
4}
5header {
6 background-color: black;
7 border-bottom: 5px dotted maroon;
8}
9.title {
10 background-color: blue;
11 color: white;
12 border: 1px solid black;
13}
14.subtitle {
15 background-color: red;
16 color: white;
17 border: 1px solid black;
18}
19.dedication {
20 background-color: yellow;
21 color: black;
22 border: 1px solid black;
23}
24.epigraph {
25 background-color: yellow;
26 color: blue;
27}
28.content {
29 background-color: purple;
30 color: white;
31 border: 1px solid black;
32}
33nav {
34 border: 1px solid black;
35}
36/* }}} */
37header {
38 position: relative;
39 max-width: 39em;
40 margin: auto;
41}
42.dedication {
43 text-align: left;
44}
45.epigraph {
46 border: 1px solid black;
47 text-align: right;
48}
49#dedepi { text-align: right; }
50.dedication,.epigraph {
51 vertical-align: bottom;
52 display: inline-block;
53 margin: 0 1%;
54 width: 47%;
55}
56.epigraph p { margin: 0; padding: 0; }
57header::after {
58 content: " ";
59 display: inline-block;
60 clear: both;
61 height: 0px;
62 width: 100%;
63}
diff --git a/test/ipsumlorem.html b/test/ipsumlorem.html new file mode 100644 index 0000000..cd1648b --- /dev/null +++ b/test/ipsumlorem.html
@@ -0,0 +1,71 @@
1<!DOCTYPE html>
2<!-- AUTOCENTO OF THE BREAKFAST TABLE -->
3<!-- vim: fdm=indent
4-->
5<html lang="en">
6<head>
7 <meta charset="utf-8">
8 <meta name="generator" content="pandoc">
9 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
10 <meta name="author" content="Case Duckworth">
11
12 <title>Ipsum lorem | Autocento of the breakfast table</title>
13 <link rel="icon" type="image/png" href="img/favico.png" />
14
15 <link rel="stylesheet" type="text/css" href="./css/common.css">
16 <script src="./js/lozenge.js" type="text/javascript"> </script>
17 <script src="./js/hylo.js" type="text/javascript"> </script>
18
19 <link rel="stylesheet" type="text/css" href="./css/verse.css">
20 <script src="./js/verse.js" type="text/javascript"> </script>
21 <link rel="stylesheet" type="text/css" href="./css/autocento.css">
22 <script src="./js/autocento.js" type="text/javascript"> </script>
23 <!--[if lt IE 9]>
24 <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"> </script>
25 <![endif]-->
26 <!-- <script src="js/external.js"> </script> -->
27 </head>
28<body>
29
30
31 <article id="container">
32 <header>
33 <!-- title -->
34 <h1 class="title">Ipsum lorem</h1>
35 <h1 class="subtitle">a test suite for the gods</h1>
36
37 <div id="dedepi">
38 <!-- dedication -->
39 <div class="dedication">you, dear Reader</div>
40
41 <!-- epigraph -->
42 <div class="epigraph">
43 <a href="http://lipsum.com/"><p>Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit.</p></a>
44
45 <div class="attrib">Cicero</div>
46 </div>
47 </div>
48 </header>
49
50
51 <section class="content verse"><p><a href=".loremipsum.html">Lorem ipsum dolor sit amet</a>, consectetur adipiscing elit.<br />Vivamus at vulputate ligula, ac ullamcorper magna.<br />In in porta metus.<br />Curabitur iaculis faucibus posuere.<br />Nunc elementum libero vitae sapien auctor mollis.<br />Aenean eget tellus ac urna tincidunt vestibulum.<br />Vivamus eget orci nec purus mollis efficitur.<br />Pellentesque eu pharetra justo.</p>
52<p>Duis tincidunt convallis vulputate.<br />Etiam non magna mi.<br />Proin porttitor vel quam ac dignissim.<br />Pellentesque tempus orci orci, quis tincidunt enim tincidunt in.<br />Vestibulum posuere leo ut lacus imperdiet, nec rutrum turpis pellentesque.<br />Pellentesque dictum finibus posuere.<br />Mauris vehicula lacus lorem, a euismod purus cursus eu.<br />Vivamus magna mauris, vehicula et libero at, commodo consectetur purus.</p>
53<p>Sed laoreet posuere consectetur.<br />Proin sed rutrum ligula, id scelerisque eros.<br />Duis rhoncus magna eu magna scelerisque, non volutpat libero volutpat.<br />Mauris gravida et tellus non ornare.<br />Integer nibh nulla, commodo aliquam imperdiet a, condimentum pulvinar magna.<br />Praesent commodo eros eu nisi sagittis pulvinar.<br />Cras id lectus vel eros porta faucibus eu eu quam.<br />Morbi et nisi id nunc elementum facilisis.<br />Maecenas ultrices eu purus nec auctor.<br />Cras quis sagittis nunc, in accumsan lacus.</p>
54<p>Sed sem arcu, eleifend imperdiet ligula consectetur, tempus efficitur massa.<br />Donec commodo convallis cursus.<br />Donec id magna at arcu malesuada vulputate.<br />Nam cursus leo eros, vel volutpat diam tincidunt eu.<br />Morbi eleifend accumsan mollis.<br />Sed dui lacus, tincidunt eu elit eu, venenatis ultrices erat.<br />Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.<br />Fusce sit amet imperdiet sapien, ut finibus ex.<br />Quisque tincidunt, est vitae iaculis bibendum, augue odio pharetra libero, nec ornare erat risus ac quam.<br />Nam varius mauris sit amet purus cursus, eget molestie ex tempus.</p>
55<p>Proin augue ligula, interdum quis fermentum eu, suscipit eget tortor.<br />Suspendisse nec egestas odio, vitae vestibulum turpis.<br />Proin ipsum ligula, maximus vitae mauris ut, imperdiet ultricies eros.<br />Integer mi orci, vestibulum ut porttitor quis, dictum eu lacus.<br />Ut placerat lectus metus, vel molestie felis luctus ac.<br />Quisque facilisis lectus id magna hendrerit, auctor ornare nisl rutrum.<br />Pellentesque vehicula purus vitae dui auctor, in accumsan risus efficitur.</p></section>
56 </article>
57 <nav>
58 <a class="prevlink" href=".loremipsum.html"
59 title="Previous article in Autocento of the breakfast table">
60 Lorem ipsum
61 </a>
62 <a href="#" id="lozenge" title="Random page"> &loz; </a>
63 <a class="nextlink" href=".loremipsum.html"
64 title="Next article in Autocento of the breakfast table">
65 Lorem ipsum
66 </a>
67 </nav>
68
69
70</body>
71</html>
diff --git a/test/js/hylo.js b/test/js/hylo.js new file mode 100644 index 0000000..5a39427 --- /dev/null +++ b/test/js/hylo.js
@@ -0,0 +1,21 @@
1/*
2 * Hyphenator_Loader 1.1.0 - client side hyphenation for webbrowsers
3 * Copyright (C) 2014 Mathias Nater, Zürich (mathias at mnn dot ch)
4 * Project and Source hosted on http://code.google.com/p/hyphenator/
5 *
6 * This JavaScript code is free software: you can redistribute
7 * it and/or modify it under the terms of the GNU Lesser
8 * General Public License (GNU LGPL) as published by the Free Software
9 * Foundation, either version 3 of the License, or (at your option)
10 * any later version. The code is distributed WITHOUT ANY WARRANTY;
11 * without even the implied warranty of MERCHANTABILITY or FITNESS
12 * FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
13 *
14 * As additional permission under GNU GPL version 3 section 7, you
15 * may distribute non-source (e.g., minimized or compacted) forms of
16 * that code without the copy of the GNU GPL normally required by
17 * section 4, provided you include this license notice and a URL
18 * through which recipients can access the Corresponding Source.
19 */
20
21var Hyphenator_Loader=(function(window){'use strict';var languages,config,path,createElem=function(tagname){var r;if(window.document.createElementNS){r=window.document.createElementNS('http://www.w3.org/1999/xhtml',tagname);}else if(window.document.createElement){r=window.document.createElement(tagname);}return r;},checkLangSupport=function(lang,longword){var shadow,computedHeight,bdy=window.document.getElementsByTagName('body')[0];shadow=createElem('div');shadow.style.width='5em';shadow.style.MozHyphens='auto';shadow.style['-webkit-hyphens']='auto';shadow.style['-ms-hyphens']='auto';shadow.style.hyphens='auto';shadow.style.fontSize='12px';shadow.style.lineHeight='12px';shadow.style.visibility='hidden';shadow.lang=lang;shadow.style['-webkit-locale']="'"+lang+"'";shadow.innerHTML=longword;bdy.appendChild(shadow);computedHeight=shadow.offsetHeight;bdy.removeChild(shadow);return(computedHeight>12)?true:false;},loadNrunHyphenator=function(config){var head,script,interval;head=window.document.getElementsByTagName('head').item(0);script=createElem('script');script.src=path;script.type='text/javascript';head.appendChild(script);interval=window.setInterval(function(){if(window.Hyphenator!==undefined){window.clearInterval(interval);Hyphenator.config(config);Hyphenator.run();}},10);},runner=function(){var loadHyphenator=false,r,results={},lang;for(lang in languages){if(languages.hasOwnProperty(lang)){r=checkLangSupport(lang,languages[lang]);results[lang]=r;loadHyphenator=loadHyphenator||!r;}}if(loadHyphenator){loadNrunHyphenator(config);}},runOnContentLoaded=function(window,f){var toplevel,hyphRunForThis={},doFrames=false,contextWindow,documentLoaded,add=window.document.addEventListener?'addEventListener':'attachEvent',rem=window.document.addEventListener?'removeEventListener':'detachEvent',pre=window.document.addEventListener?'':'on',init=function(context){contextWindow=context||window;if(!hyphRunForThis[contextWindow.location.href]&&(!documentLoaded||!!contextWindow.frameElement)){documentLoaded=true;f();hyphRunForThis[contextWindow.location.href]=true;}},doScrollCheck=function(){try{window.document.documentElement.doScroll("left");}catch(error){window.setTimeout(doScrollCheck,1);return;}init(window);},doOnLoad=function(){var i,haveAccess,fl=window.frames.length;if(doFrames&&fl>0){for(i=0;i<fl;i+=1){haveAccess=undefined;try{haveAccess=window.frames[i].document.toString();}catch(e){haveAccess=undefined;}if(!!haveAccess){if(window.frames[i].location.href!=='about:blank'){init(window.frames[i]);}}}contextWindow=window;f();hyphRunForThis[window.location.href]=true;}else{init(window);}},DOMContentLoaded=function(e){if(e.type==='readystatechange'&&window.document.readyState!=='complete'){return;}window.document[rem](pre+e.type,DOMContentLoaded,false);if(!doFrames&&window.frames.length===0){init(window);}};if(window.document.readyState==="complete"||window.document.readyState==="interactive"){window.setTimeout(doOnLoad,1);}else{window.document[add](pre+"DOMContentLoaded",DOMContentLoaded,false);window.document[add](pre+'readystatechange',DOMContentLoaded,false);window[add](pre+'load',doOnLoad,false);toplevel=false;try{toplevel=!window.frameElement;}catch(ignore){}if(window.document.documentElement.doScroll&&toplevel){doScrollCheck();}}};return{init:function(langs,p,configs){languages=langs;path=p;config=configs||{};runOnContentLoaded(window,runner);}};}(window));Hyphenator_Loader.init({"en":"hyphenationalgorithm",},"./Hyphenator.js",{classname:'prose',defaultlanguage:'en',displaytogglebox:true,togglebox:function(){var bdy,myTextNode,text=(Hyphenator.doHyphenation?'-':'~'),myBox=contextWindow.document.getElementById('HyphenatorToggleBox');if(!!myBox){myBox.firstChild.data=text;}else{bdy=contextWindow.document.getElementsByTagName('body')[0];myBox=createElem('div',contextWindow);myBox.setAttribute('id','HyphenatorToggleBox');myBox.setAttribute('class',dontHyphenateClass);myTextNode=contextWindow.document.createTextNode(text);myBox.appendChild(myTextNode);myBox.onclick=Hyphenator.toggleHyphenation;myBox.style.position='absolute';myBox.style.top='0px';myBox.style.right='0px';myBox.style.margin='0';myBox.style.backgroundColor=rgba(0,0,0,255);myBox.style.color=rgba(255,255,255,100);myBox.style.font='6pt Arial';myBox.style.letterSpacing='0.2em';myBox.style.padding='3px';myBox.style.cursor='pointer';myBox.style.WebkitBorderBottomLeftRadius='4px';myBox.style.MozBorderRadiusBottomleft='4px';myBox.style.borderBottomLeftRadius='4px';bdy.appendChild(myBox);}},useCSS3hyphenation:true});
diff --git a/test/js/lozenge.js b/test/js/lozenge.js new file mode 100644 index 0000000..d600d24 --- /dev/null +++ b/test/js/lozenge.js
@@ -0,0 +1,29 @@
1/* Lozenge.js for Autocento of the breakfast table
2 * Cause a#lozenge to link to random file in array
3 * vim: fdm=marker
4 */
5
6function _lozenge() {
7 var lozenge = document.getElementById('lozenge');
8 // array with all files {{{
9 var files=["100-lines.html", "about-the-author.html", "amber-alert.html", "and.html", "angeltoabraham.html", "apollo11.html", "arspoetica.html", "art.html", "axe.html", "big-dipper.html", "boar.html", "boy_bus.html", "building.html", "call-me-aural-pleasure.html", "cereal.html", "cold-wind.html", "creation-myth.html", "deadman.html", "death-zone.html", "deathstrumpet.html", "dream.html", "early.html", "elegyforanalternateself.html", "epigraph.html", "ex-machina.html", "exasperated.html", "father.html", "feedingtheraven.html", "finding-the-lion.html", "fire.html", "found-typewriter-poem.html", "hands.html", "hard-game.html", "hardware.html", "howithappened.html", "howtoread.html", "hymnal.html", "i-am.html", "i-think-its-you.html", "i-wanted-to-tell-you-something.html", "in-bed.html", "index.html", "initial-conditions.html", "january.html", "joke.html", "lappel-du-vide.html", "largest-asteroid.html", "last-bastion.html", "last-passenger.html", "leaf.html", "leg.html", "likingthings.html", "listen.html", "love-as-god.html", "lovesong.html", "man.html", "moon-drowning.html", "moongone.html", "mountain.html", "movingsideways.html", "music-433.html", "no-nothing.html", "notes.html", "nothing-is-ever-over.html", "onformalpoetry.html", "options.html", "ouroboros_memory.html", "paul.html", "philosophy.html", "phone.html", "planks.html", "plant.html", "poetry-time.html", "prelude.html", "problems.html", "proverbs.html", "punch.html", "purpose-dogs.html", "question.html", "real-writer.html", "reports.html", "riptide_memory.html", "ronaldmcdonald.html", "roughgloves.html", "sapling.html", "seasonal-affective-disorder.html", "sense-of-it.html", "serengeti.html", "shed.html", "shipwright.html", "sixteenth-chapel.html", "snow.html", "something-simple.html", "spittle.html", "squirrel.html", "stagnant.html", "statements-frag.html", "stayed-on-the-bus.html", "stump.html", "swansong-alt.html", "swansong.html", "swear.html", "table_contents.html", "tapestry.html", "telemarketer.html", "the-night-we-met.html", "the-sea_the-beach.html", "theoceanoverflowswithcamels.html", "time-looks-up-to-the-sky.html", "todaniel.html", "toilet.html", "toothpaste.html", "treatise.html", "underwear.html", "wallpaper.html", "weplayedthosegamestoo.html", "when-im-sorry-i.html", "window.html", "words-meaning.html", "worse-looking-over.html", "writing.html", "x-ray.html", "yellow.html"]
10 // }}}
11
12 var index = Math.floor(Math.random() * files.length);
13
14 var url = window.location.pathname;
15 var current = url.substring(url.lastIndexOf('/')+1);
16
17 if (current != files[index]) {
18 lozenge.setAttribute("href", files[index]);
19 lozenge.setAttribute("title", "Random article");
20 } else {
21 _lozenge()
22 }
23}
24
25window.onload = function () {
26 _lozenge()
27};
28
29
diff --git a/test/loremipsum.html b/test/loremipsum.html new file mode 100644 index 0000000..7947176 --- /dev/null +++ b/test/loremipsum.html
@@ -0,0 +1,71 @@
1<!DOCTYPE html>
2<!-- AUTOCENTO OF THE BREAKFAST TABLE -->
3<!-- vim: fdm=indent
4-->
5<html lang="en">
6<head>
7 <meta charset="utf-8">
8 <meta name="generator" content="pandoc">
9 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
10 <meta name="author" content="Case Duckworth">
11
12 <title>Lorem ipsum | Autocento of the breakfast table</title>
13 <link rel="icon" type="image/png" href="img/favico.png" />
14
15 <link rel="stylesheet" type="text/css" href="./css/common.css">
16 <script src="./js/lozenge.js" type="text/javascript"> </script>
17 <script src="./js/hylo.js" type="text/javascript"> </script>
18
19 <link rel="stylesheet" type="text/css" href="./css/prose.css">
20 <script src="./js/prose.js" type="text/javascript"> </script>
21 <link rel="stylesheet" type="text/css" href="./css/autocento.css">
22 <script src="./js/autocento.js" type="text/javascript"> </script>
23 <!--[if lt IE 9]>
24 <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"> </script>
25 <![endif]-->
26 <!-- <script src="js/external.js"> </script> -->
27 </head>
28<body>
29
30
31 <article id="container">
32 <header>
33 <!-- title -->
34 <h1 class="title">Lorem ipsum</h1>
35 <h1 class="subtitle">a test suite for the gods</h1>
36
37 <div id="dedepi">
38 <!-- dedication -->
39 <div class="dedication">you, dear Reader</div>
40
41 <!-- epigraph -->
42 <div class="epigraph">
43 <a href="http://lipsum.com/"><p>Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit.</p></a>
44
45 <div class="attrib">Cicero</div>
46 </div>
47 </div>
48 </header>
49
50
51 <section class="content prose"><p><a href=".ipsumlorem.html">Lorem ipsum dolor sit amet</a>, consectetur adipiscing elit. Vivamus at vulputate ligula, ac ullamcorper magna. In in porta metus. Curabitur iaculis faucibus posuere. Nunc elementum libero vitae sapien auctor mollis. Aenean eget tellus ac urna tincidunt vestibulum. Vivamus eget orci nec purus mollis efficitur. Pellentesque eu pharetra justo.</p>
52<p>Duis tincidunt convallis vulputate. Etiam non magna mi. Proin porttitor vel quam ac dignissim. Pellentesque tempus orci orci, quis tincidunt enim tincidunt in. Vestibulum posuere leo ut lacus imperdiet, nec rutrum turpis pellentesque. Pellentesque dictum finibus posuere. Mauris vehicula lacus lorem, a euismod purus cursus eu. Vivamus magna mauris, vehicula et libero at, commodo consectetur purus.</p>
53<p>Sed laoreet posuere consectetur. Proin sed rutrum ligula, id scelerisque eros. Duis rhoncus magna eu magna scelerisque, non volutpat libero volutpat. Mauris gravida et tellus non ornare. Integer nibh nulla, commodo aliquam imperdiet a, condimentum pulvinar magna. Praesent commodo eros eu nisi sagittis pulvinar. Cras id lectus vel eros porta faucibus eu eu quam. Morbi et nisi id nunc elementum facilisis. Maecenas ultrices eu purus nec auctor. Cras quis sagittis nunc, in accumsan lacus.</p>
54<p>Sed sem arcu, eleifend imperdiet ligula consectetur, tempus efficitur massa. Donec commodo convallis cursus. Donec id magna at arcu malesuada vulputate. Nam cursus leo eros, vel volutpat diam tincidunt eu. Morbi eleifend accumsan mollis. Sed dui lacus, tincidunt eu elit eu, venenatis ultrices erat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce sit amet imperdiet sapien, ut finibus ex. Quisque tincidunt, est vitae iaculis bibendum, augue odio pharetra libero, nec ornare erat risus ac quam. Nam varius mauris sit amet purus cursus, eget molestie ex tempus.</p>
55<p>Proin augue ligula, interdum quis fermentum eu, suscipit eget tortor. Suspendisse nec egestas odio, vitae vestibulum turpis. Proin ipsum ligula, maximus vitae mauris ut, imperdiet ultricies eros. Integer mi orci, vestibulum ut porttitor quis, dictum eu lacus. Ut placerat lectus metus, vel molestie felis luctus ac. Quisque facilisis lectus id magna hendrerit, auctor ornare nisl rutrum. Pellentesque vehicula purus vitae dui auctor, in accumsan risus efficitur.</p></section>
56 </article>
57 <nav>
58 <a class="prevlink" href=".ipsumlorem.html"
59 title="Previous article in Autocento of the breakfast table">
60 Ipsum lorem
61 </a>
62 <a href="#" id="lozenge" title="Random page"> &loz; </a>
63 <a class="nextlink" href=".ipsumlorem.html"
64 title="Next article in Autocento of the breakfast table">
65 Ipsum lorem
66 </a>
67 </nav>
68
69
70</body>
71</html>
diff --git a/test/lua/river.lua b/test/lua/river.lua new file mode 100644 index 0000000..d060ba9 --- /dev/null +++ b/test/lua/river.lua
@@ -0,0 +1,226 @@
1-- Pandoc River writer
2-- it takes out all formatting, leaving only a river of text
3-- running down the page: one word per line
4-- vim: fdm=marker
5-- invoke with: pandoc -t river.lua
6
7local function flow(s)
8 return s:gsub("%s+", "\n")
9end
10
11local function nude(s)
12 -- Expand contractions
13 s = s:gsub("'%a+%s", function (x)
14 if x == "'ll" then
15 return " will "
16 elseif x == "'ve" then
17 return " have "
18 elseif x == "'re" then
19 return " are "
20 else
21 return x
22 end
23 end)
24 -- Get rid of quotes around words
25 s = s:gsub('"', ' ')
26 s = s:gsub("%s+'", ' ')
27 s = s:gsub("'%s+", ' ')
28 -- Remove HTML entities
29 s = s:gsub('&.-;', ' ')
30 s = s:gsub('%b<>', ' ')
31 -- Remove end-of-line backslashes
32 s = s:gsub('%s+\\$', ' ')
33 -- Remove dashes (not hyphens)
34 s = s:gsub('%-%-+', ' ')
35 s = s:gsub('%-%s', ' ')
36 -- Remove general punctuation
37 s = s:gsub('[%.!%?:;,%[%]%(%)<>]', ' ')
38 -- Remove extra spaces
39 s = s:gsub('%s+', ' ')
40 return s:lower()
41end
42
43-- This function is called once for the whole document. Parameters:
44-- body is a string, metadata is a table, variables is a table.
45-- One could use some kind of templating
46-- system here; this just gives you a simple standalone HTML file.
47function Doc(body, metadata, variables)
48 local buffer = ""
49 local function add(s)
50 buffer = buffer .. nude(s) .. "\n"
51 end
52 if metadata['title'] then
53 add(metadata['title'])
54 end
55 if metadata['subtitle'] then
56 add(metadata['subtitle'])
57 end
58 -- TODO: epigraph.content, epigraph.attrib, dedication, other metadata?
59 add(body)
60 return flow(buffer)
61end
62
63-- Remove all formatting {{{
64function Note(s)
65 return nude(s)
66end
67
68function Blocksep()
69 return "\n"
70end
71function Emph(s)
72 return nude(s)
73end
74
75function Strong(s)
76 return nude(s)
77end
78
79function Subscript(s)
80 return nude(s)
81end
82
83function Superscript(s)
84 return nude(s)
85end
86
87function SmallCaps(s)
88 return nude(s)
89end
90
91function Strikeout(s)
92 return nude(s)
93end
94
95function Code(s, attr)
96 return nude(s)
97end
98
99function CodeBlock(s, attr)
100 return nude(s)
101end
102
103function InlineMath(s)
104 return nude(s)
105end
106
107function DisplayMath(s)
108 return nude(s)
109end
110
111function Span(s, attr)
112 return nude(s)
113end
114
115function Cite(s)
116 return nude(s)
117end
118
119function Plain(s)
120 return nude(s)
121end
122
123-- Links only include the link text
124function Link(s, src, tit)
125 return nude(s)
126end
127
128-- Images have nothing to give us
129-- (but add a space just in case)
130function Image(s, src, tit)
131 return "\n"
132end
133
134function CaptionedImage(s, src, tit)
135 return "\n"
136end
137
138function Str(s)
139 return nude(s)
140end
141
142function Div(s, attr)
143 return nude(s)
144end
145
146function Space(s)
147 return "\n"
148end
149
150function LineBreak()
151 return "\n"
152end
153
154function Para(s)
155 return nude(s)
156end
157
158function Header(lev, s, attr)
159 return nude(s)
160end
161
162function BlockQuote(s)
163 return nude(s)
164end
165
166function HorizontalRule()
167 return "\n"
168end
169
170function BulletList(items)
171 local buffer = ""
172 for _, item in pairs(items) do
173 buffer = buffer .. nude(item) .. "\n"
174 end
175 return buffer .. "\n"
176end
177
178function OrderedList(items)
179 local buffer = ""
180 for _, item in pairs(items) do
181 buffer = buffer .. nude(item) .. "\n"
182 end
183 return buffer .. "\n"
184end
185
186function DefinitionList(items)
187 local buffer = ""
188 for _, item in pairs(items) do
189 for k, v in pairs(item) do
190 buffer = buffer .. nude(k) .. "\n" .. nude(v) .. "\n"
191 end
192 end
193 return buffer .. "\n"
194end
195
196function Table(caption, aligns, widths, headers, rows)
197 local buffer = ""
198 local function add(s)
199 buffer = buffer .. nude(s) .. "\n"
200 end
201 if caption ~= "" then
202 add(caption)
203 end
204 for _,h in pairs(headers) do
205 add(h)
206 end
207 for _, row in pairs(rows) do
208 for _, cell in pairs(row) do
209 add(cell)
210 end
211 end
212 return buffer
213end
214-- }}}
215
216-- The following code will produce runtime warnings when you haven't defined
217-- all of the functions you need for the custom writer, so it's useful
218-- to include when you're working on a writer.
219local meta = {}
220meta.__index =
221 function(_, key)
222 io.stderr:write(string.format("WARNING: Undefined function '%s'\n",key))
223 return function() return "" end
224 end
225setmetatable(_G, meta)
226
diff --git a/test/river/ipsumlorem.river b/test/river/ipsumlorem.river new file mode 100644 index 0000000..a22f432 --- /dev/null +++ b/test/river/ipsumlorem.river
@@ -0,0 +1,343 @@
1ipsum
2lorem
3a
4test
5suite
6for
7the
8gods
9lorem
10ipsum
11dolor
12sit
13amet
14consectetur
15adipiscing
16elit
17vivamus
18at
19vulputate
20ligula
21ac
22ullamcorper
23magna
24in
25in
26porta
27metus
28curabitur
29iaculis
30faucibus
31posuere
32nunc
33elementum
34libero
35vitae
36sapien
37auctor
38mollis
39aenean
40eget
41tellus
42ac
43urna
44tincidunt
45vestibulum
46vivamus
47eget
48orci
49nec
50purus
51mollis
52efficitur
53pellentesque
54eu
55pharetra
56justo
57duis
58tincidunt
59convallis
60vulputate
61etiam
62non
63magna
64mi
65proin
66porttitor
67vel
68quam
69ac
70dignissim
71pellentesque
72tempus
73orci
74orci
75quis
76tincidunt
77enim
78tincidunt
79in
80vestibulum
81posuere
82leo
83ut
84lacus
85imperdiet
86nec
87rutrum
88turpis
89pellentesque
90pellentesque
91dictum
92finibus
93posuere
94mauris
95vehicula
96lacus
97lorem
98a
99euismod
100purus
101cursus
102eu
103vivamus
104magna
105mauris
106vehicula
107et
108libero
109at
110commodo
111consectetur
112purus
113sed
114laoreet
115posuere
116consectetur
117proin
118sed
119rutrum
120ligula
121id
122scelerisque
123eros
124duis
125rhoncus
126magna
127eu
128magna
129scelerisque
130non
131volutpat
132libero
133volutpat
134mauris
135gravida
136et
137tellus
138non
139ornare
140integer
141nibh
142nulla
143commodo
144aliquam
145imperdiet
146a
147condimentum
148pulvinar
149magna
150praesent
151commodo
152eros
153eu
154nisi
155sagittis
156pulvinar
157cras
158id
159lectus
160vel
161eros
162porta
163faucibus
164eu
165eu
166quam
167morbi
168et
169nisi
170id
171nunc
172elementum
173facilisis
174maecenas
175ultrices
176eu
177purus
178nec
179auctor
180cras
181quis
182sagittis
183nunc
184in
185accumsan
186lacus
187sed
188sem
189arcu
190eleifend
191imperdiet
192ligula
193consectetur
194tempus
195efficitur
196massa
197donec
198commodo
199convallis
200cursus
201donec
202id
203magna
204at
205arcu
206malesuada
207vulputate
208nam
209cursus
210leo
211eros
212vel
213volutpat
214diam
215tincidunt
216eu
217morbi
218eleifend
219accumsan
220mollis
221sed
222dui
223lacus
224tincidunt
225eu
226elit
227eu
228venenatis
229ultrices
230erat
231cum
232sociis
233natoque
234penatibus
235et
236magnis
237dis
238parturient
239montes
240nascetur
241ridiculus
242mus
243fusce
244sit
245amet
246imperdiet
247sapien
248ut
249finibus
250ex
251quisque
252tincidunt
253est
254vitae
255iaculis
256bibendum
257augue
258odio
259pharetra
260libero
261nec
262ornare
263erat
264risus
265ac
266quam
267nam
268varius
269mauris
270sit
271amet
272purus
273cursus
274eget
275molestie
276ex
277tempus
278proin
279augue
280ligula
281interdum
282quis
283fermentum
284eu
285suscipit
286eget
287tortor
288suspendisse
289nec
290egestas
291odio
292vitae
293vestibulum
294turpis
295proin
296ipsum
297ligula
298maximus
299vitae
300mauris
301ut
302imperdiet
303ultricies
304eros
305integer
306mi
307orci
308vestibulum
309ut
310porttitor
311quis
312dictum
313eu
314lacus
315ut
316placerat
317lectus
318metus
319vel
320molestie
321felis
322luctus
323ac
324quisque
325facilisis
326lectus
327id
328magna
329hendrerit
330auctor
331ornare
332nisl
333rutrum
334pellentesque
335vehicula
336purus
337vitae
338dui
339auctor
340in
341accumsan
342risus
343efficitur
diff --git a/test/river/loremipsum.river b/test/river/loremipsum.river new file mode 100644 index 0000000..4bc1769 --- /dev/null +++ b/test/river/loremipsum.river
@@ -0,0 +1,343 @@
1lorem
2ipsum
3a
4test
5suite
6for
7the
8gods
9lorem
10ipsum
11dolor
12sit
13amet
14consectetur
15adipiscing
16elit
17vivamus
18at
19vulputate
20ligula
21ac
22ullamcorper
23magna
24in
25in
26porta
27metus
28curabitur
29iaculis
30faucibus
31posuere
32nunc
33elementum
34libero
35vitae
36sapien
37auctor
38mollis
39aenean
40eget
41tellus
42ac
43urna
44tincidunt
45vestibulum
46vivamus
47eget
48orci
49nec
50purus
51mollis
52efficitur
53pellentesque
54eu
55pharetra
56justo
57duis
58tincidunt
59convallis
60vulputate
61etiam
62non
63magna
64mi
65proin
66porttitor
67vel
68quam
69ac
70dignissim
71pellentesque
72tempus
73orci
74orci
75quis
76tincidunt
77enim
78tincidunt
79in
80vestibulum
81posuere
82leo
83ut
84lacus
85imperdiet
86nec
87rutrum
88turpis
89pellentesque
90pellentesque
91dictum
92finibus
93posuere
94mauris
95vehicula
96lacus
97lorem
98a
99euismod
100purus
101cursus
102eu
103vivamus
104magna
105mauris
106vehicula
107et
108libero
109at
110commodo
111consectetur
112purus
113sed
114laoreet
115posuere
116consectetur
117proin
118sed
119rutrum
120ligula
121id
122scelerisque
123eros
124duis
125rhoncus
126magna
127eu
128magna
129scelerisque
130non
131volutpat
132libero
133volutpat
134mauris
135gravida
136et
137tellus
138non
139ornare
140integer
141nibh
142nulla
143commodo
144aliquam
145imperdiet
146a
147condimentum
148pulvinar
149magna
150praesent
151commodo
152eros
153eu
154nisi
155sagittis
156pulvinar
157cras
158id
159lectus
160vel
161eros
162porta
163faucibus
164eu
165eu
166quam
167morbi
168et
169nisi
170id
171nunc
172elementum
173facilisis
174maecenas
175ultrices
176eu
177purus
178nec
179auctor
180cras
181quis
182sagittis
183nunc
184in
185accumsan
186lacus
187sed
188sem
189arcu
190eleifend
191imperdiet
192ligula
193consectetur
194tempus
195efficitur
196massa
197donec
198commodo
199convallis
200cursus
201donec
202id
203magna
204at
205arcu
206malesuada
207vulputate
208nam
209cursus
210leo
211eros
212vel
213volutpat
214diam
215tincidunt
216eu
217morbi
218eleifend
219accumsan
220mollis
221sed
222dui
223lacus
224tincidunt
225eu
226elit
227eu
228venenatis
229ultrices
230erat
231cum
232sociis
233natoque
234penatibus
235et
236magnis
237dis
238parturient
239montes
240nascetur
241ridiculus
242mus
243fusce
244sit
245amet
246imperdiet
247sapien
248ut
249finibus
250ex
251quisque
252tincidunt
253est
254vitae
255iaculis
256bibendum
257augue
258odio
259pharetra
260libero
261nec
262ornare
263erat
264risus
265ac
266quam
267nam
268varius
269mauris
270sit
271amet
272purus
273cursus
274eget
275molestie
276ex
277tempus
278proin
279augue
280ligula
281interdum
282quis
283fermentum
284eu
285suscipit
286eget
287tortor
288suspendisse
289nec
290egestas
291odio
292vitae
293vestibulum
294turpis
295proin
296ipsum
297ligula
298maximus
299vitae
300mauris
301ut
302imperdiet
303ultricies
304eros
305integer
306mi
307orci
308vestibulum
309ut
310porttitor
311quis
312dictum
313eu
314lacus
315ut
316placerat
317lectus
318metus
319vel
320molestie
321felis
322luctus
323ac
324quisque
325facilisis
326lectus
327id
328magna
329hendrerit
330auctor
331ornare
332nisl
333rutrum
334pellentesque
335vehicula
336purus
337vitae
338dui
339auctor
340in
341accumsan
342risus
343efficitur
diff --git a/test/src/ipsumlorem.txt b/test/src/ipsumlorem.txt new file mode 100644 index 0000000..2920d0b --- /dev/null +++ b/test/src/ipsumlorem.txt
@@ -0,0 +1,74 @@
1---
2title: Ipsum lorem
3subtitle: a test suite for the gods
4genre: verse
5
6epigraph:
7 content: |
8 Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit.
9 link: 'http://lipsum.com/'
10 attrib: Cicero
11
12dedication: you, dear Reader
13
14project:
15 title: Autocento of the breakfast table
16 css: autocento
17 order: 2
18 next:
19 - title: Lorem ipsum
20 link: .loremipsum
21 prev:
22 - title: Lorem ipsum
23 link: .loremipsum
24...
25
26[Lorem ipsum dolor sit amet][], consectetur adipiscing elit. \
27Vivamus at vulputate ligula, ac ullamcorper magna. \
28In in porta metus. \
29Curabitur iaculis faucibus posuere. \
30Nunc elementum libero vitae sapien auctor mollis. \
31Aenean eget tellus ac urna tincidunt vestibulum. \
32Vivamus eget orci nec purus mollis efficitur. \
33Pellentesque eu pharetra justo.
34
35Duis tincidunt convallis vulputate. \
36Etiam non magna mi. \
37Proin porttitor vel quam ac dignissim. \
38Pellentesque tempus orci orci, quis tincidunt enim tincidunt in. \
39Vestibulum posuere leo ut lacus imperdiet, nec rutrum turpis pellentesque. \
40Pellentesque dictum finibus posuere. \
41Mauris vehicula lacus lorem, a euismod purus cursus eu. \
42Vivamus magna mauris, vehicula et libero at, commodo consectetur purus.
43
44Sed laoreet posuere consectetur. \
45Proin sed rutrum ligula, id scelerisque eros. \
46Duis rhoncus magna eu magna scelerisque, non volutpat libero volutpat. \
47Mauris gravida et tellus non ornare. \
48Integer nibh nulla, commodo aliquam imperdiet a, condimentum pulvinar magna. \
49Praesent commodo eros eu nisi sagittis pulvinar. \
50Cras id lectus vel eros porta faucibus eu eu quam. \
51Morbi et nisi id nunc elementum facilisis. \
52Maecenas ultrices eu purus nec auctor. \
53Cras quis sagittis nunc, in accumsan lacus.
54
55Sed sem arcu, eleifend imperdiet ligula consectetur, tempus efficitur massa. \
56Donec commodo convallis cursus. \
57Donec id magna at arcu malesuada vulputate. \
58Nam cursus leo eros, vel volutpat diam tincidunt eu. \
59Morbi eleifend accumsan mollis. \
60Sed dui lacus, tincidunt eu elit eu, venenatis ultrices erat. \
61Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. \
62Fusce sit amet imperdiet sapien, ut finibus ex. \
63Quisque tincidunt, est vitae iaculis bibendum, augue odio pharetra libero, nec ornare erat risus ac quam. \
64Nam varius mauris sit amet purus cursus, eget molestie ex tempus.
65
66Proin augue ligula, interdum quis fermentum eu, suscipit eget tortor. \
67Suspendisse nec egestas odio, vitae vestibulum turpis. \
68Proin ipsum ligula, maximus vitae mauris ut, imperdiet ultricies eros. \
69Integer mi orci, vestibulum ut porttitor quis, dictum eu lacus. \
70Ut placerat lectus metus, vel molestie felis luctus ac. \
71Quisque facilisis lectus id magna hendrerit, auctor ornare nisl rutrum. \
72Pellentesque vehicula purus vitae dui auctor, in accumsan risus efficitur.
73
74[Lorem ipsum dolor sit amet]: .loremipsum.html
diff --git a/test/src/loremipsum.txt b/test/src/loremipsum.txt new file mode 100644 index 0000000..d1d961c --- /dev/null +++ b/test/src/loremipsum.txt
@@ -0,0 +1,74 @@
1---
2title: Lorem ipsum
3subtitle: a test suite for the gods
4genre: prose
5
6epigraph:
7 content: |
8 Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit.
9 link: 'http://lipsum.com/'
10 attrib: Cicero
11
12dedication: you, dear Reader
13
14project:
15 title: Autocento of the breakfast table
16 css: autocento
17 order: 1
18 next:
19 - title: Ipsum lorem
20 link: .ipsumlorem
21 prev:
22 - title: Ipsum lorem
23 link: .ipsumlorem
24...
25
26[Lorem ipsum dolor sit amet][], consectetur adipiscing elit.
27Vivamus at vulputate ligula, ac ullamcorper magna.
28In in porta metus.
29Curabitur iaculis faucibus posuere.
30Nunc elementum libero vitae sapien auctor mollis.
31Aenean eget tellus ac urna tincidunt vestibulum.
32Vivamus eget orci nec purus mollis efficitur.
33Pellentesque eu pharetra justo.
34
35Duis tincidunt convallis vulputate.
36Etiam non magna mi.
37Proin porttitor vel quam ac dignissim.
38Pellentesque tempus orci orci, quis tincidunt enim tincidunt in.
39Vestibulum posuere leo ut lacus imperdiet, nec rutrum turpis pellentesque.
40Pellentesque dictum finibus posuere.
41Mauris vehicula lacus lorem, a euismod purus cursus eu.
42Vivamus magna mauris, vehicula et libero at, commodo consectetur purus.
43
44Sed laoreet posuere consectetur.
45Proin sed rutrum ligula, id scelerisque eros.
46Duis rhoncus magna eu magna scelerisque, non volutpat libero volutpat.
47Mauris gravida et tellus non ornare.
48Integer nibh nulla, commodo aliquam imperdiet a, condimentum pulvinar magna.
49Praesent commodo eros eu nisi sagittis pulvinar.
50Cras id lectus vel eros porta faucibus eu eu quam.
51Morbi et nisi id nunc elementum facilisis.
52Maecenas ultrices eu purus nec auctor.
53Cras quis sagittis nunc, in accumsan lacus.
54
55Sed sem arcu, eleifend imperdiet ligula consectetur, tempus efficitur massa.
56Donec commodo convallis cursus.
57Donec id magna at arcu malesuada vulputate.
58Nam cursus leo eros, vel volutpat diam tincidunt eu.
59Morbi eleifend accumsan mollis.
60Sed dui lacus, tincidunt eu elit eu, venenatis ultrices erat.
61Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
62Fusce sit amet imperdiet sapien, ut finibus ex.
63Quisque tincidunt, est vitae iaculis bibendum, augue odio pharetra libero, nec ornare erat risus ac quam.
64Nam varius mauris sit amet purus cursus, eget molestie ex tempus.
65
66Proin augue ligula, interdum quis fermentum eu, suscipit eget tortor.
67Suspendisse nec egestas odio, vitae vestibulum turpis.
68Proin ipsum ligula, maximus vitae mauris ut, imperdiet ultricies eros.
69Integer mi orci, vestibulum ut porttitor quis, dictum eu lacus.
70Ut placerat lectus metus, vel molestie felis luctus ac.
71Quisque facilisis lectus id magna hendrerit, auctor ornare nisl rutrum.
72Pellentesque vehicula purus vitae dui auctor, in accumsan risus efficitur.
73
74[Lorem ipsum dolor sit amet]: .ipsumlorem.html