loripsum.net
The purpose of this challenge is to emulate the functionality of the loripsum.net website. This website takes in a "number of paragraphs" and a list of randomized HTML5 stylizations and outputs a pre-formatted HTML5 lorem ipsum text that is REALLY good for placeholders on a prototype website. Your code, however, will focus more on the stylization aspect of this website.
Given a block of lorem ipsum text in the following format:
<segment> := <paragraph> | <paragraph><new-line><segment>
<paragraph> := <sentence> | <sentence><paragraph>
<sentence> := <character_run><sentence_end>
<character_run> := <printable_ascii_without_newline_or_period>|<pawnop><character_run>
<sentence_end> := \n | . | ? | !
Here's an example of a possible input:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quonam,
inquit, modo? Progredientibus autem aetatibus sensim tardeve potius
quasi nosmet ipsos cognoscimus. Quod non faceret, si in voluptate
summum bonum poneret. Duo Reges: constructio interrete.
Tubulo putas dicere? Cum salvum esse flentes sui respondissent,
rogavit essentne fusi hostes. Dat enim intervalla et relaxat. Satisne
ergo pudori consulat, si quis sine teste libidini pareat? Negare non
possum. An hoc usque quaque, aliter in vita? Plane idem, inquit, et
maxima quidem, qua fieri nulla maior potest. Quid ei reliquisti, nisi
te, quoquo modo loqueretur, intellegere, quid diceret?
Itaque ad tempus ad Pisonem omnes. Universa enim illorum ratione cum
tota vestra confligendum puto. Haec dicuntur inconstantissime. Dicimus
aliquem hilare vivere; Qui non moveatur et offensione turpitudinis et
comprobatione honestatis? Sed quot homines, tot sententiae; Quippe:
habes enim a rhetoribus; Omnes enim iucundum motum, quo sensus
hilaretur. Tria genera bonorum; Profectus in exilium Tubulus statim
nec respondere ausus;
Certe non potest. Dempta enim aeternitate nihilo beatior Iuppiter quam
Epicurus; Graece donan, Latine voluptatem vocant. Itaque a sapientia
praecipitur se ipsam, si usus sit, sapiens ut relinquat. Quid est
igitur, inquit, quod requiras? Atque haec coniunctio confusioque
virtutum tamen a philosophis ratione quadam distinguitur. Ego vero
volo in virtute vim esse quam maximam;
Verum hoc idem saepe faciamus. Huic mori optimum esse propter
desperationem sapientiae, illi propter spem vivere. Si enim ita est,
vide ne facinus facias, cum mori suadeas. Indicant pueri, in quibus ut
in speculis natura cernitur. Apparet statim, quae sint officia, quae
actiones. An est aliquid per se ipsum flagitiosum, etiamsi nulla
comitetur infamia? Non autem hoc: igitur ne illud quidem. Res enim se
praeclare habebat, et quidem in utraque parte.
Your task, given the input t
from above, is to apply one formatting operations at random once per paragraph, defined by the following list of operations:
- Character Run Operations (Should be performed on 1-5 word runs chosen at random. This should NEVER cross sentence boundaries (\n|.|?|!))
- Bold
<b></b>
- Italic
<i></i>
- Underline
<u></u>
- Sentence Operations (Should be performed on 1-2 sentences in the paragraph)
- Block Quote
<blockquote></blockquote>
- Preface
<pre></pre>
- Heading
<h1></h1> ... <h6></h6>
(Chosen at random)
- Paragraph Operations (Should turn entire paragraph into this format, separated by sentences if the operation is segmented (like a list)).
- Unordered List
<ul><li>Sentence 1</li>...<li>Sentence n</li></ul>
- Ordered List
<ol><li>Sentence 1</li>...<li>Sentence n</li></ol>
So, here is one possible random output:
[1:HEADING(h1 chosen),2:BOLD(4 times),3:PREFACE(1 sentence),4:UNORDERED-LIST,5:BLOCKQUOTE(2 sentences)]
Applied to the input from above (t
):
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Quonam, inquit, modo? Progredientibus autem aetatibus sensim tardeve
potius quasi nosmet ipsos cognoscimus. Quod non faceret, si in
voluptate summum bonum poneret. Duo Reges: constructio interrete.
Tubulo putas dicere? Cum salvum esse flentes sui respondissent,
rogavit essentne fusi hostes. Dat enim intervalla et relaxat.
Satisne ergo pudori consulat, si quis sine teste libidini
pareat? Negare non possum. An hoc usque quaque, aliter in vita?
Plane idem, inquit, et maxima quidem, qua fieri nulla maior potest.
Quid ei reliquisti, nisi te, quoquo modo loqueretur, intellegere, quid
diceret?
Itaque ad tempus ad Pisonem omnes. Universa enim illorum ratione cum
tota vestra confligendum puto. Haec dicuntur inconstantissime. Dicimus
aliquem hilare vivere; Qui non moveatur et offensione turpitudinis et
comprobatione honestatis?
Sed quot homines, tot sententiae;
Quippe: habes enim a rhetoribus; Omnes enim iucundum motum, quo sensus
hilaretur.
Tria genera bonorum; Profectus in exilium Tubulus
statim nec respondere ausus;
- Certe non potest.
- Dempta enim aeternitate nihilo
beatior Iuppiter quam Epicurus; Graece donan, Latine voluptatem
vocant.
- Itaque a sapientia praecipitur se ipsam, si usus sit,
sapiens ut relinquat.
- Quid est igitur, inquit, quod requiras?
Atque haec coniunctio confusioque virtutum tamen a philosophis ratione
quadam distinguitur.
- Ego vero volo in virtute vim esse quam
maximam;
Verum hoc idem saepe faciamus. Huic mori optimum esse
propter desperationem sapientiae, illi propter spem
vivere.
Si enim ita est, vide ne facinus facias, cum mori
suadeas. Indicant pueri, in quibus ut in speculis natura cernitur.
Apparet statim, quae sint officia, quae actiones. An est aliquid per
se ipsum flagitiosum, etiamsi nulla comitetur infamia? Non autem hoc:
igitur ne illud quidem. Res enim se praeclare habebat, et quidem in
utraque parte.
Wow! Isn't that much prettier? Here's the code view:
<h1>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h1> Quonam, inquit, modo? Progredientibus autem aetatibus sensim tardeve potius quasi nosmet ipsos cognoscimus. Quod non faceret, si in voluptate summum bonum poneret. Duo Reges: constructio interrete.
Tubulo <b>putas dicere</b>? Cum salvum esse flentes sui respondissent, rogavit <b>essentne fusi</b> hostes. Dat enim intervalla et relaxat. <b>Satisne ergo pudori consulat, si quis sine</b> teste libidini pareat? Negare non possum. An hoc usque quaque, aliter in <b>vita</b>? Plane idem, inquit, et maxima quidem, qua fieri nulla maior potest. Quid ei reliquisti, nisi te, quoquo modo loqueretur, intellegere, quid diceret?
Itaque ad tempus ad Pisonem omnes. Universa enim illorum ratione cum tota vestra confligendum puto. Haec dicuntur inconstantissime. Dicimus aliquem hilare vivere; Qui non moveatur et offensione turpitudinis et comprobatione honestatis? <pre>Sed quot homines, tot sententiae; Quippe: habes enim a rhetoribus; Omnes enim iucundum motum, quo sensus hilaretur.</pre> Tria genera bonorum; Profectus in exilium Tubulus statim nec respondere ausus;
<ul><li>Certe non potest.</li><li>Dempta enim aeternitate nihilo beatior Iuppiter quam Epicurus; Graece donan, Latine voluptatem vocant.</li><li>Itaque a sapientia praecipitur se ipsam, si usus sit, sapiens ut relinquat.</li><li>Quid est igitur, inquit, quod requiras? Atque haec coniunctio confusioque virtutum tamen a philosophis ratione quadam distinguitur.</li><li>Ego vero volo in virtute vim esse quam maximam;</li></ul>
<blockquote>Verum hoc idem saepe faciamus. Huic mori optimum esse propter desperationem sapientiae, illi propter spem vivere.</blockquote>Si enim ita est, vide ne facinus facias, cum mori suadeas. Indicant pueri, in quibus ut in speculis natura cernitur. Apparet statim, quae sint officia, quae actiones. An est aliquid per se ipsum flagitiosum, etiamsi nulla comitetur infamia? Non autem hoc: igitur ne illud quidem. Res enim se praeclare habebat, et quidem in utraque parte.
Take note specifically of how I split the sentences on the paragraph operators, you delimit by ONLY periods and NEWLINES, nothing else ends a sentence. Also, make not of how the character run operators can span multiple words, BUT NOT MULTIPLE SENTENCES, you must stop before the next sentence begins (EXCLUDING THE ENDING NEWLINE OR PERIOD). As in, it's only applicable to the <character_run>
language definition.
This is code-golf lowest byte-count will be declared the winner.