diff --git a/nikola/data/sampleblog/README.txt b/nikola/data/sampleblog/README.txt new file mode 100644 index 0000000000..011a8828c3 --- /dev/null +++ b/nikola/data/sampleblog/README.txt @@ -0,0 +1,17 @@ +This folder contains the source used to generate a static site using Nikola. + +Installation and documentation at https://getnikola.com/ + +Configuration file for the site is ``conf.py``. + +To build the site:: + + nikola build + +To see it:: + + nikola serve -b + +To check all available commands:: + + nikola help diff --git a/nikola/data/sampleblog/files/favicon.ico b/nikola/data/sampleblog/files/favicon.ico new file mode 100644 index 0000000000..c4efbcc0ce Binary files /dev/null and b/nikola/data/sampleblog/files/favicon.ico differ diff --git a/nikola/data/sampleblog/files/images/nikola.png b/nikola/data/sampleblog/files/images/nikola.png new file mode 100644 index 0000000000..71a491f837 Binary files /dev/null and b/nikola/data/sampleblog/files/images/nikola.png differ diff --git a/nikola/data/sampleblog/galleries/demo/exclude.meta b/nikola/data/sampleblog/galleries/demo/exclude.meta new file mode 100644 index 0000000000..967e566770 --- /dev/null +++ b/nikola/data/sampleblog/galleries/demo/exclude.meta @@ -0,0 +1 @@ +tesla2_lg.jpg diff --git a/nikola/data/sampleblog/galleries/demo/index.txt b/nikola/data/sampleblog/galleries/demo/index.txt new file mode 100644 index 0000000000..3cb1d02a65 --- /dev/null +++ b/nikola/data/sampleblog/galleries/demo/index.txt @@ -0,0 +1,4 @@ +.. title: Nikola Tesla + +Some public domain pictures of Nikola Tesla +(copied from `here `_) diff --git a/nikola/data/sampleblog/galleries/demo/metadata.sample.yml b/nikola/data/sampleblog/galleries/demo/metadata.sample.yml new file mode 100644 index 0000000000..9f89f33447 --- /dev/null +++ b/nikola/data/sampleblog/galleries/demo/metadata.sample.yml @@ -0,0 +1,13 @@ +--- +name: tesla_tower1_lg.jpg +caption: Wardenclyffe Tower +built_in: 1904 +order: 2 +--- +name: tesla4_lg.jpg +order: 0 +--- +name: tesla_conducts_lg.webp +caption: Nikola Tesla conducts electricity +order: 1 +--- diff --git a/nikola/data/sampleblog/galleries/demo/tesla2_lg.jpg b/nikola/data/sampleblog/galleries/demo/tesla2_lg.jpg new file mode 100644 index 0000000000..43ea5db349 Binary files /dev/null and b/nikola/data/sampleblog/galleries/demo/tesla2_lg.jpg differ diff --git a/nikola/data/sampleblog/galleries/demo/tesla4_lg.jpg b/nikola/data/sampleblog/galleries/demo/tesla4_lg.jpg new file mode 100644 index 0000000000..9274950046 Binary files /dev/null and b/nikola/data/sampleblog/galleries/demo/tesla4_lg.jpg differ diff --git a/nikola/data/sampleblog/galleries/demo/tesla_conducts_lg.webp b/nikola/data/sampleblog/galleries/demo/tesla_conducts_lg.webp new file mode 100644 index 0000000000..084bfb3ea0 Binary files /dev/null and b/nikola/data/sampleblog/galleries/demo/tesla_conducts_lg.webp differ diff --git a/nikola/data/sampleblog/galleries/demo/tesla_lightning1_lg.jpg b/nikola/data/sampleblog/galleries/demo/tesla_lightning1_lg.jpg new file mode 100644 index 0000000000..3c12b0e949 Binary files /dev/null and b/nikola/data/sampleblog/galleries/demo/tesla_lightning1_lg.jpg differ diff --git a/nikola/data/sampleblog/galleries/demo/tesla_lightning2_lg.jpg b/nikola/data/sampleblog/galleries/demo/tesla_lightning2_lg.jpg new file mode 100644 index 0000000000..8355d861f4 Binary files /dev/null and b/nikola/data/sampleblog/galleries/demo/tesla_lightning2_lg.jpg differ diff --git a/nikola/data/sampleblog/galleries/demo/tesla_tower1_lg.jpg b/nikola/data/sampleblog/galleries/demo/tesla_tower1_lg.jpg new file mode 100644 index 0000000000..7d8b95bf40 Binary files /dev/null and b/nikola/data/sampleblog/galleries/demo/tesla_tower1_lg.jpg differ diff --git a/nikola/data/sampleblog/images/frontispiece.jpg b/nikola/data/sampleblog/images/frontispiece.jpg new file mode 100644 index 0000000000..0baf37139d Binary files /dev/null and b/nikola/data/sampleblog/images/frontispiece.jpg differ diff --git a/nikola/data/sampleblog/images/illus_001.jpg b/nikola/data/sampleblog/images/illus_001.jpg new file mode 100644 index 0000000000..c8acdcf548 Binary files /dev/null and b/nikola/data/sampleblog/images/illus_001.jpg differ diff --git a/nikola/data/sampleblog/listings/hello.py b/nikola/data/sampleblog/listings/hello.py new file mode 100644 index 0000000000..5535df8bbf --- /dev/null +++ b/nikola/data/sampleblog/listings/hello.py @@ -0,0 +1,12 @@ +#!/usr/bin/python + +import sys + + +def hello(name='world'): + greeting = "hello " + name + print(greeting) + + +if __name__ == "__main__": + hello(*sys.argv[1:]) diff --git a/nikola/data/sampleblog/pages/1.rst b/nikola/data/sampleblog/pages/1.rst new file mode 100644 index 0000000000..2e703459a6 --- /dev/null +++ b/nikola/data/sampleblog/pages/1.rst @@ -0,0 +1,11 @@ +.. title: Nikola: it generates static +.. slug: about-nikola +.. date: 2012-03-30 23:00:00 UTC-03:00 +.. tags: +.. link: +.. description: + +Hope you enjoy this software! + +* Home page at https://getnikola.com/ +* Author's blog (and reason why Nikola exists): https://ralsina.me/ diff --git a/nikola/data/sampleblog/pages/bootstrap-demo.rst b/nikola/data/sampleblog/pages/bootstrap-demo.rst new file mode 100644 index 0000000000..35a0265597 --- /dev/null +++ b/nikola/data/sampleblog/pages/bootstrap-demo.rst @@ -0,0 +1,1047 @@ +.. title: Bootstrap Demo +.. slug: bootstrap-demo +.. date: 2012-03-30 23:00:00 UTC-03:00 +.. tags: bootstrap, demo +.. link: https://getnikola.com +.. description: + + +.. raw:: html + + +
+
+
+ + +
+ + + + +
+ +
+
+
+ + + +
+ + +
+
+ +
+

+ + + + + + + +

+
+ +
+

+ + + + + + + +

+
+ + + + +
+

+ + + + +

+
+ +
+
+ +
+

+ +

+
+ + +
+
+ Left + Right + Middle +
+
+ +
+
+
+ + + + +
+
+ + + +
+
+ + +
+ + +
+
+
+
+ +
+
+ + + + +
+
+ +
+
+
+ + +
+
+
+ +
+
+ + + +
+
+
+

Heading 1

+

Heading 2

+

Heading 3

+

Heading 4

+
Heading 5
+
Heading 6
+
+
+

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

+
+
+
+
+

Example body text

+

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

+

This line of text is meant to be treated as fine print.

+

The following snippet of text is rendered as bold text.

+

The following snippet of text is rendered as italicized text.

+

An abbreviation of the word attribute is attr.

+
+ +
+
+ +

Emphasis classes

+
+

Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.

+

Nullam id dolor id nibh ultricies vehicula ut id elit.

+

Etiam porta sem malesuada magna mollis euismod.

+

Donec ullamcorper nulla non metus auctor fringilla.

+

Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

+

Maecenas sed diam eget risus varius blandit sit amet non magna.

+
+ +
+
+ + + +
+
+

Blockquotes

+
+
+
+
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+ Someone famous in Source Title +
+
+
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+ Someone famous in Source Title +
+
+
+
+ + +
+ +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#Column headingColumn headingColumn heading
1Column contentColumn contentColumn content
2Column contentColumn contentColumn content
3Column contentColumn contentColumn content
4Column contentColumn contentColumn content
5Column contentColumn contentColumn content
6Column contentColumn contentColumn content
7Column contentColumn contentColumn content
+
+
+
+
+ + +
+
+
+ +
+
+ +
+
+
+
+
+ Legend +
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
+ +
+ + A longer block of help text that breaks onto a new line and may extend beyond one line. +
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+ +
+ +
+
+
+
+ + +
+
+
+
+
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ $ + + + + +
+
+
+ +
+
+
+ + +
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

+
+
+

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit.

+
+ + +
+
+
+ +
+ +
+ + + +
+ +
+
+ + +
+
+

Pagination

+
+ + + +
+
+
+

Pager

+
+ +
+
+ +
+
+
+ +
+
+
+ + +
+ +
+
+ +
+
+ + +
+
+

Alerts

+
+
+ +

Warning!

+

Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.

+
+
+
+
+
+
+
+ + Oh snap! Change a few things up and try submitting again. +
+
+
+
+ + Well done! You successfully read this important alert message. +
+
+
+
+ + Heads up! This alert needs your attention, but it's not super important. +
+
+
+
+
+

Labels

+
+ Default + Primary + Success + Warning + Danger + Info +
+
+
+

Badges

+ +
+
+
+ + +
+ +
+
+ + + +

Basic

+
+
+
+
+
+ +

Contextual alternatives

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +

Striped

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +

Animated

+
+
+
+
+
+ +

Stacked

+
+
+
+
+
+
+
+
+
+
+ + +
+ +
+
+ +
+
+

Jumbotron

+

This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.

+

Learn more

+
+
+
+
+ + +
+
+

List groups

+
+
+ + + +
+
+

Panels

+
+
+
+
+
+
+ Basic panel +
+
+
+
Panel heading
+
+ Panel content +
+
+
+
+ Panel content +
+ +
+
+
+
+
+

Panel primary

+
+
+ Panel content +
+
+
+
+

Panel success

+
+
+ Panel content +
+
+
+
+

Panel warning

+
+
+ Panel content +
+
+
+
+
+
+

Panel danger

+
+
+ Panel content +
+
+
+
+

Panel info

+
+
+ Panel content +
+
+
+
+ +
+
+

Wells

+
+
+
+
+
+ Look, I'm in a well! +
+
+
+
+ Look, I'm in a small well! +
+
+
+
+ Look, I'm in a large well! +
+
+
+
+ +
diff --git a/nikola/data/sampleblog/pages/charts.rst b/nikola/data/sampleblog/pages/charts.rst new file mode 100644 index 0000000000..72fedb108d --- /dev/null +++ b/nikola/data/sampleblog/pages/charts.rst @@ -0,0 +1,59 @@ +.. link: +.. description: +.. tags: +.. date: 2013-08-27 18:20:55 UTC-03:00 +.. title: Charts +.. slug: charts + +If you are using reStructuredText and install pygal, Nikola has support for rather nice charts +with little effort, and i's even semi-interactive (hover your pointer over the legend!): + +.. code:: rest + + .. chart:: StackedLine + :title: 'Browser usage evolution (in %)' + :fill: True + :x_labels: ['2002','2003','2004','2005','2006','2007','2008','2009','2010','2011','2012'] + :width: 600 + :height: 400 + :explicit_size: True + :style: BlueStyle + + ('Others', [14.2, 15.4, 15.3, 8.9, 9, 10.4, 8.9, 5.8, 6.7, 6.8, 7.5]) + ('IE', [85.8, 84.6, 84.7, 74.5, 66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1]) + ('Firefox', [None, None, None, 16.6, 25, 31, 36.4, 45.5, 46.3, 42.8, 37.1]) + ('Chrome', [None, None, None, None, None, None, 0, 3.9, 10.8, 23.8, 35.3]) + +.. raw:: html + +
+ +.. chart:: StackedLine + :title: 'Browser usage evolution (in %)' + :fill: True + :x_labels: ['2002','2003','2004','2005','2006','2007','2008','2009','2010','2011','2012'] + :width: 600 + :height: 400 + :explicit_size: True + :style: BlueStyle + + ('Others', [14.2, 15.4, 15.3, 8.9, 9, 10.4, 8.9, 5.8, 6.7, 6.8, 7.5]) + ('IE', [85.8, 84.6, 84.7, 74.5, 66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1]) + ('Firefox', [None, None, None, 16.6, 25, 31, 36.4, 45.5, 46.3, 42.8, 37.1]) + ('Chrome', [None, None, None, None, None, None, 0, 3.9, 10.8, 23.8, 35.3]) + +.. raw:: html + +
+ + +Here's how it works: + +* Next to the directive, use the `chart type you want `_ +* Any option you can set in a chart? Use it like ``:title:`` in this example. Syntax on + the value is just like in the pygal examples. +* For each data series do it like the line that says ``Firefox`` in this example. The first element + is the label, then comes the data. + +Easy, right? Please explore `the pygal site `_ for more information, and just +take this example and tweak stuff. diff --git a/nikola/data/sampleblog/pages/creating-a-theme.rst b/nikola/data/sampleblog/pages/creating-a-theme.rst new file mode 100644 index 0000000000..66d75d1ea6 --- /dev/null +++ b/nikola/data/sampleblog/pages/creating-a-theme.rst @@ -0,0 +1 @@ +../../../../docs/creating-a-theme.rst \ No newline at end of file diff --git a/nikola/data/sampleblog/pages/dr-nikolas-vendetta.rst b/nikola/data/sampleblog/pages/dr-nikolas-vendetta.rst new file mode 100644 index 0000000000..2006b63a43 --- /dev/null +++ b/nikola/data/sampleblog/pages/dr-nikolas-vendetta.rst @@ -0,0 +1,468 @@ +.. title: A BID FOR FORTUNE OR; DR. NIKOLA'S VENDETTA +.. template: book.tmpl +.. hyphenate: yes +.. filters: filters.typogrify + +.. class:: subtitle + +By `GUY BOOTHBY `__ + +Author of "Dr. Nikola," "The Beautiful White Devil," etc., etc. + +.. figure:: /images/frontispiece.jpg + :class: bookfig + +.. topic:: The Project Gutenberg EBook of A Bid for Fortune, by Guy Boothby + + This eBook is for the use of anyone anywhere at no cost and with + almost no restrictions whatsoever. You may copy it, give it away or + re-use it under the terms of the Project Gutenberg License included + with this eBook or online at www.gutenberg.org + + + Title: A Bid for Fortune + or Dr. Nikola's Vendetta + + Author: `Guy Boothby `__ + + Release Date: May 29, 2007 [EBook #21640] + + Language: English + + Produced by Marilynda Fraser-Cunliffe, Mary Meehan and the + Online Distributed Proofreading Team at https://www.pgdp.net + + Originally published by: + + WARD, LOCK & CO., LIMITED + LONDON, MELBOURNE AND TORONTO + 1918 + +.. figure:: /images/illus_001.jpg + :class: bookfig + +PART I +====== + +PROLOGUE +-------- + +.. role:: smallcaps + + +:smallcaps:`The` manager of the new Imperial Restaurant on the Thames Embankment went +into his luxurious private office and shut the door. Having done so, he +first scratched his chin reflectively, and then took a letter from the +drawer in which it had reposed for more than two months and perused it +carefully. Though he was not aware of it, this was the thirtieth time he +had read it since breakfast that morning. And yet he was not a whit +nearer understanding it than he had been at the beginning. He turned it +over and scrutinized the back, where not a sign of writing was to be +seen; he held it up to the window, as if he might hope to discover +something from the water-mark; but there was nothing in either of these +places of a nature calculated to set his troubled mind at rest. Then he +took a magnificent repeater watch from his waistcoat pocket and glanced +at the dial; the hands stood at half-past seven. He immediately threw +the letter on the table, and as he did so his anxiety found relief in +words. + +"It's really the most extraordinary affair I ever had to do with," he +remarked. "And as I've been in the business just three-and-thirty years +at eleven a.m. next Monday morning, I ought to know something about it. +I only hope I've done right, that's all." + +As he spoke, the chief bookkeeper, who had the treble advantage of being +tall, pretty, and just eight-and-twenty years of age, entered the room. +She noticed the open letter and the look upon her chief's face, and her +curiosity was proportionately excited. + +"You seem worried, Mr. McPherson," she said tenderly, as she put down +the papers she had brought in for his signature. + +"You have just hit it, Miss O'Sullivan," he answered, pushing them +farther on to the table. "I am worried about many things, but +particularly about this letter." + +He handed the epistle to her, and she, being desirous of impressing him +with her business capabilities, read it with ostentatious care. But it +was noticeable that when she reached the signature she too turned back +to the beginning, and then deliberately read it over again. The manager +rose, crossed to the mantelpiece, and rang for the head waiter. Having +relieved his feelings in this way, he seated himself again at his +writing-table, put on his glasses, and stared at his companion, while +waiting for her to speak. + +"It's very funny," she said. "Very funny indeed!" + +"It's the most extraordinary communication I have ever received," he +replied with conviction. "You see it is written from Cuyaba, Brazil. The +date is three months ago to a day. Now I have taken the trouble to find +out where and what Cuyaba is." + +He made this confession with an air of conscious pride, and having done +so, laid himself back in his chair, stuck his thumbs into the armholes +of his waistcoat, and looked at his fair subordinate for approval. Nor +was he destined to be disappointed. He was a bachelor in possession of a +snug income, and she, besides being pretty, was a lady with a keen eye +to the main chance. + +"And where *is* Cuyaba?" she asked humbly. + +"Cuyaba," he replied, rolling his tongue with considerable relish round +his unconscious mispronunciation of the name, "is a town almost on the +western or Bolivian border of Brazil. It is of moderate size, is +situated on the banks of the river Cuyaba, and is considerably connected +with the famous Brazilian Diamond Fields." + +"And does the writer of this letter live there?" + +"I cannot say. He writes from there--that is enough for us." + +"And he orders dinner for four--here, in a private room overlooking the +river, three months ahead--punctually at eight o'clock, gives you a list +of the things he wants, and even arranges the decoration of the table. +Says he has never seen either of his three friends before; that one of +them hails from (here she consulted the letter again) Hang-chow, another +from Bloemfontein, while the third resides, at present, in England. Each +one is to present an ordinary visiting card with a red dot on it to the +porter in the hall, and to be shown to the room at once. I don't +understand it at all." + +The manager paused for a moment, and then said deliberately,--"Hang-chow +is in China, Bloemfontein is in South Africa." + +"What a wonderful man you are, to be sure, Mr. McPherson! I never can +*think* how you manage to carry so much in your head." + +There spoke the true woman. And it was a move in the right direction, +for the manager was susceptible to her gentle influence, as she had +occasion to know. + +At this juncture the head waiter appeared upon the scene, and took up a +position just inside the doorway, as if he were afraid of injuring the +carpet by coming farther. + +"Is No. 22 ready, Williams?" + +"Quite ready, sir. The wine is on the ice, and cook tells me he'll be +ready to dish punctual to the moment." + +"The letter says, 'no electric light; candles with red shades.' Have you +put on those shades I got this morning?" + +"Just seen it done this very minute, sir." + +"And let me see, there was one other thing." He took the letter from the +chief bookkeeper's hand and glanced at it. "Ah, yes, a porcelain saucer, +and a small jug of new milk upon the mantelpiece. An extraordinary +request, but has it been attended to?" + +"I put it there myself, sir." + +"Who wait?" + +"Jones, Edmunds, Brooks, and Tomkins." + +"Very good. Then I think that will do. Stay! You had better tell the +hall porter to look out for three gentlemen presenting plain visiting +cards with a little red spot on them. Let Brooks wait in the hall, and +when they arrive tell him to show them straight up to the room." + +"It shall be done, sir." + +The head waiter left the room, and the manager stretched himself in his +chair, yawned by way of showing his importance, and then said +solemnly,-- + +"I don't believe they'll any of them turn up; but if they do, this Dr. +Nikola, whoever he may be, won't be able to find fault with my +arrangements." + +Then, leaving the dusty high road of Business, he and his companion +wandered in the shady bridle-paths of Love--to the end that when the +chief bookkeeper returned to her own department she had forgotten the +strange dinner party about to take place upstairs, and was busily +engaged upon a calculation as to how she would look in white satin and +orange blossoms, and, that settled, fell to wondering whether it was +true, as Miss Joyce, a subordinate, had been heard to declare, that the +manager had once shown himself partial to a certain widow with reputed +savings and a share in an extensive egg and dairy business. + +At ten minutes to eight precisely a hansom drew up at the steps of the +hotel. As soon as it stopped, an undersized gentleman, with a clean +shaven countenance, a canonical corporation, and bow legs, dressed in a +decidedly clerical garb, alighted. He paid and discharged his cabman, +and then took from his ticket pocket an ordinary white visiting card, +which he presented to the gold-laced individual who had opened the +apron. The latter, having noted the red spot, called a waiter, and the +reverend gentleman was immediately escorted upstairs. + +Hardly had the attendant time to return to his station in the hall, +before a second cab made its appearance, closely followed by a third. +Out of the second jumped a tall, active, well-built man of about thirty +years of age. He was dressed in evening dress of the latest fashion, and +to conceal it from the vulgar gaze, wore a large Inverness cape of heavy +texture. He also in his turn handed a white card to the porter, and, +having done so, proceeded into the hall, followed by the occupant of the +last cab, who had closely copied his example. This individual was also +in evening dress, but it was of a different stamp. It was old-fashioned +and had seen much use. The wearer, too, was taller than the ordinary run +of men, while it was noticeable that his hair was snow-white, and that +his face was deeply pitted with smallpox. After disposing of their hats +and coats in an ante-room, they reached room No. 22, where they found +the gentleman in clerical costume pacing impatiently up and down. + +Left alone, the tallest of the trio, who for want of a better title we +may call the Best Dressed Man, took out his watch, and having glanced at +it, looked at his companions. "Gentlemen," he said, with a slight +American accent, "it is three minutes to eight o'clock. My name is +Eastover!" + +"I'm glad to hear it, for I'm most uncommonly hungry," said the next +tallest, whom I have already described as being so marked by disease. +"My name is Prendergast!" + +"We only wait for our friend and host," remarked the clerical gentleman, +as if he felt he ought to take a share in the conversation, and then, as +an afterthought, he continued, "My name is Baxter!" + +They shook hands all round with marked cordiality, seated themselves +again, and took it in turns to examine the clock. + +"Have you ever had the pleasure of meeting our host before?" asked Mr. +Baxter of Mr. Prendergast. + +"Never," replied that gentleman, with a shake of his head. "Perhaps Mr. +Eastover has been more fortunate?" + +"Not I," was the brief rejoinder. "I've had to do with him off and on +for longer than I care to reckon, but I've never set eyes on him up to +date." + +"And where may he have been the first time you heard from him?" + +"In Nashville, Tennessee," said Eastover. "After that, Tahupapa, New +Zealand; after that, Papeete, in the Society Islands; then Pekin, China. +And you?" + +"First time, Brussels; second, Monte Video; third, Mandalay, and then +the Gold Coast, Africa. It's your turn, Mr. Baxter." + +The clergyman glanced at the timepiece. It was exactly eight o'clock. +"First time, Cabul, Afghanistan; second, Nijni Novgorod, Russia; third, +Wilcannia, Darling River, Australia; fourth, Valparaiso, Chili; fifth, +Nagasaki, Japan." + +"He is evidently a great traveller and a most mysterious person." + +"He is more than that," said Eastover with conviction; "he is late for +dinner!" + +Prendergast looked at his watch. + +"That clock is two minutes fast. Hark, there goes Big Ben! Eight +exactly." + +As he spoke the door was thrown open and a voice announced "Dr. Nikola." + +The three men sprang to their feet simultaneously, with exclamations of +astonishment, as the man they had been discussing made his appearance. + +It would take more time than I can spare the subject to give you an +adequate and inclusive description of the person who entered the room at +that moment. In stature he was slightly above the ordinary, his +shoulders were broad, his limbs perfectly shaped and plainly muscular, +but very slim. His head, which was magnificently set upon his shoulders, +was adorned with a profusion of glossy black hair; his face was +destitute of beard or moustache, and was of oval shape and handsome +moulding; while his skin was of a dark olive hue, a colour which +harmonized well with his piercing black eyes and pearly teeth. His hands +and feet were small, and the greatest dandy must have admitted that he +was irreproachably dressed, with a neatness that bordered on the +puritanical. In age he might have been anything from eight-and-twenty to +forty; in reality he was thirty-three. He advanced into the room and +walked with out-stretched hand directly across to where Eastover was +standing by the fireplace. + +"Mr. Eastover, I feel certain," he said, fixing his glittering eyes upon +the man he addressed, and allowing a curious smile to play upon his +face. + +"That is my name, Dr. Nikola," the other answered with evident surprise. +"But how on earth can you distinguish me from your other guests?" + +"Ah! it would surprise you if you knew. And Mr. Prendergast, and Mr. +Baxter. This is delightful; I hope I am not late. We had a collision in +the Channel this morning, and I was almost afraid I might not be up to +time. Dinner seems ready; shall we sit down to it?" They seated +themselves, and the meal commenced. The Imperial Restaurant has earned +an enviable reputation for doing things well, and the dinner that night +did not in any way detract from its lustre. But, delightful as it all +was, it was noticeable that the three guests paid more attention to +their host than to his excellent *menu*. As they had said before his +arrival, they had all had dealings with him for several years, but what +those dealings were they were careful not to describe. It was more than +possible that they hardly liked to remember them themselves. + +When coffee had been served and the servants had withdrawn, Dr. Nikola +rose from the table, and went across to the massive sideboard. On it +stood a basket of very curious shape and workmanship. This he opened, +and as he did so, to the astonishment of his guests, an enormous cat, as +black as his master's coat, leaped out on to the floor. The reason for +the saucer and jug of milk became evident. + +Seating himself at the table again, the host followed the example of his +guests and lit a cigar, blowing a cloud of smoke luxuriously through his +delicately chiselled nostrils. His eyes wandered round the cornice of +the room, took in the pictures and decorations, and then came down to +meet the faces of his companions. As they did so, the black cat, having +finished its meal, sprang on to his shoulder to crouch there, watching +the three men through the curling smoke drift with its green blinking, +fiendish eyes. Dr. Nikola smiled as he noticed the effect the animal had +upon his guests. + +"Now shall we get to business?" he said briskly. + +The others almost simultaneously knocked the ashes off their cigars and +brought themselves to attention. Dr. Nikola's dainty, languid manner +seemed to drop from him like a cloak, his eyes brightened, and his +voice, when he spoke, was clean cut as chiselled silver. + +"You are doubtless anxious to be informed why I summoned you from all +parts of the globe to meet me here to-night? And it is very natural you +should be. But then, from what you know of me, you should not be +surprised at anything I do." + +His voice dropped back into its old tone of gentle languor. He drew in a +great breath of smoke and then sent it slowly out from his lips again. +His eyes were half closed, and he drummed with one finger on the table +edge. The cat looked through the smoke at the three men, and it seemed +to them that he grew every moment larger and more ferocious. Presently +his owner took him from his perch, and seating him on his knee fell to +stroking his fur, from head to tail, with his long slim fingers. It was +as if he were drawing inspiration for some deadly mischief from the +uncanny beast. + +"To preface what I have to say to you, let me tell you that this is by +far the most important business for which I have ever required your +help. (Three slow strokes down the centre of the back, and one round +each ear.) When it first came into my mind I was at a loss who to trust +in the matter. I thought of Vendon, but I found Vendon was dead. I +thought of Brownlow, but Brownlow was no longer faithful. (Two strokes +down the back and two on the throat.) Then bit by bit I remembered you. +I was in Brazil at the time. So I sent for you. You came. So far so +good." + +He rose, and crossed over to the fireplace. As he went the cat crawled +back to its original position on his shoulder. Then his voice changed +once more to its former business-like tone. + +"I am not going to tell you very much about it. But from what I do tell +you, you will be able to gather a great deal and imagine the rest. To +begin with, there is a man living in this world to-day who has done me a +great and lasting injury. What that injury is is no concern of yours. +You would not understand if I told you. So we'll leave that out of the +question. He is immensely rich. His cheque for £300,000 would be +honoured by his bank at any minute. Obviously he is a power. He has had +reason to know that I am pitting my wits against his, and he flatters +himself that so far he has got the better of me. That is because I am +drawing him on. I am maturing a plan which will make him a poor and a +very miserable man at one and the same time. If that scheme succeeds, +and I am satisfied with the way you three men have performed the parts I +shall call on you to play in it, I shall pay to each of you the sum of +£10,000. If it doesn't succeed, then you will each receive a thousand +and your expenses. Do you follow me?" + +It was evident from their faces that they hung upon his every word. + +"But, remember, I demand from you your whole and entire labour. While +you are serving me you are mine body and soul. I know you are +trustworthy. I have had good proof that you are--pardon the +expression--unscrupulous, and I flatter myself you are silent. What is +more, I shall tell you nothing beyond what is necessary for the carrying +out of my scheme, so that you could not betray me if you would. Now for +my plans!" + +He sat down again and took a paper from his pocket. Having perused it, +he turned to Eastover. + +"You will leave at once--that is to say, by the boat on Wednesday--for +Sydney. You will book your passage to-morrow morning, first thing, and +join her in Plymouth. You will meet me to-morrow evening at an address I +will send you, and receive your final instructions. Good-night." + +Seeing that he was expected to go, Eastover rose, shook hands, and left +the room without a word. He was too astonished to hesitate or to say +anything. + +Nikola took another letter from his pocket and turned to Prendergast. +"*You* will go down to Dover to-night, cross to Paris to-morrow morning, +and leave this letter personally at the address you will find written on +it. On Thursday, at half-past two precisely, you will deliver me an +answer in the porch at Charing Cross. You will find sufficient money in +that envelope to pay all your expenses. Now go!" + +"At half-past two you shall have your answer. Good-night." + +"Good-night." + +When Prendergast had left the room, Dr. Nikola lit another cigar and +turned his attentions to Mr. Baxter. + +"Six months ago, Mr. Baxter, I found for you a situation as tutor to the +young Marquis of Beckenham. You still hold it, I suppose?" + +"I do." + +"Is the father well disposed towards you?" + +"In every way. I have done my best to ingratiate myself with him. That +was one of your instructions." + +"Yes, yes! But I was not certain that you would succeed. If the old man +is anything like what he was when I last met him he must still be a +difficult person to deal with. Does the boy like you?" + +"I hope so." + +"Have you brought me his photograph as I directed?" + +"I have. Here it is." + +Baxter took a photograph from his pocket and handed it across the table. + +"Good. You have done very well, Mr. Baxter. I am pleased with you. +To-morrow morning you will go back to Yorkshire----" + +"I beg your pardon, Bournemouth. His Grace owns a house near +Bournemouth, which he occupies during the summer months." + +"Very well--then to-morrow morning you will go back to Bournemouth and +continue to ingratiate yourself with father and son. You will also begin +to implant in the boy's mind a desire for travel. Don't let him become +aware that his desire has its source in you--but do not fail to foster +it all you can. I will communicate with you further in a day or two. Now +go." + +Baxter in his turn left the room. The door closed. Dr. Nikola picked up +the photograph and studied it. + +"The likeness is unmistakable--or it ought to be. My friend, my very +dear friend, Wetherell, my toils are closing on you. My arrangements are +perfecting themselves admirably. Presently, when all is complete, I +shall press the lever, the machinery will be set in motion, and you will +find yourself being slowly but surely ground into powder. Then you will +hand over what I want, and be sorry you thought fit to baulk Dr. +Nikola!" + +He rang the bell and ordered his bill. This duty discharged, he placed +the cat back in its prison, shut the lid, descended with the basket to +the hall, and called a hansom. The porter inquired to what address he +should order the cabman to drive. Dr. Nikola did not reply for a moment, +then he said, as if he had been thinking something out: "The *Green +Sailor* public-house, East India Dock Road." + + +------------------------ + +You can read the rest of "A Bid For Fortune; Or, Dr. Nikola's Vendetta" at `Open Library `__ diff --git a/nikola/data/sampleblog/pages/extending.rst b/nikola/data/sampleblog/pages/extending.rst new file mode 100644 index 0000000000..aab25e2d1d --- /dev/null +++ b/nikola/data/sampleblog/pages/extending.rst @@ -0,0 +1 @@ +../../../../docs/extending.rst \ No newline at end of file diff --git a/nikola/data/sampleblog/pages/internals.rst b/nikola/data/sampleblog/pages/internals.rst new file mode 100644 index 0000000000..23b276d015 --- /dev/null +++ b/nikola/data/sampleblog/pages/internals.rst @@ -0,0 +1 @@ +../../../../docs/internals.rst \ No newline at end of file diff --git a/nikola/data/sampleblog/pages/listings-demo.rst b/nikola/data/sampleblog/pages/listings-demo.rst new file mode 100644 index 0000000000..3bb8dc6bee --- /dev/null +++ b/nikola/data/sampleblog/pages/listings-demo.rst @@ -0,0 +1,10 @@ +.. title: Listings Demo +.. slug: listings-demo +.. date: 2012-12-15 10:16:20 UTC-03:00 +.. tags: +.. link: +.. description: + +Nikola intends to let you show code easily via listings: + +.. listing:: hello.py python diff --git a/nikola/data/sampleblog/pages/manual.rst b/nikola/data/sampleblog/pages/manual.rst new file mode 100644 index 0000000000..4d5f0a172a --- /dev/null +++ b/nikola/data/sampleblog/pages/manual.rst @@ -0,0 +1 @@ +../../../../docs/manual.rst \ No newline at end of file diff --git a/nikola/data/sampleblog/pages/path_handlers.rst b/nikola/data/sampleblog/pages/path_handlers.rst new file mode 100644 index 0000000000..23193d7ba5 --- /dev/null +++ b/nikola/data/sampleblog/pages/path_handlers.rst @@ -0,0 +1 @@ +../../../../docs/path_handlers.rst \ No newline at end of file diff --git a/nikola/data/sampleblog/pages/quickref.rst b/nikola/data/sampleblog/pages/quickref.rst new file mode 100644 index 0000000000..3768c739a0 --- /dev/null +++ b/nikola/data/sampleblog/pages/quickref.rst @@ -0,0 +1,1348 @@ +.. title: A reStructuredText Reference +.. slug: quickref +.. date: 2012-03-30 23:00:00 UTC-03:00 +.. tags: +.. link: +.. description: +.. author: docutils contributors + +.. raw:: html + + + + +

Quick reStructuredText

+ + + + +
+

Copyright: This document has been placed in the public domain. +

+ + +

The full details of the markup may be found on the + reStructuredText + page. This document is just intended as a reminder. + +

Links that look like "(details)" point + into the HTML version of the full reStructuredText + specification document. These are relative links; if they + don't work, please use the master "Quick reStructuredText" document. + + +

Inline Markup

+ +

(details) + +

Inline markup allows words and phrases within text to have + character styles (like italics and boldface) and functionality + (like hyperlinks). + +

+ + + + + + + + + + + + + + + + +
Plain text + Typical result + Notes +
*emphasis* + emphasis + Normally rendered as italics. + +
**strong emphasis** + strong emphasis + Normally rendered as boldface. + +
`interpreted text` + (see note at right) + The rendering and meaning of interpreted text is + domain- or application-dependent. It can be used for things + like index entries or explicit descriptive markup (like program + identifiers). + +
``inline literal`` + inline literal + Normally rendered as monospaced text. Spaces should be + preserved, but line breaks will not be. + +
reference_ + reference + A simple, one-word hyperlink reference. See Hyperlink Targets. + +
`phrase reference`_ + phrase reference + A hyperlink reference with spaces or punctuation needs to be + quoted with backquotes. See Hyperlink Targets. + +
anonymous__ + anonymous + With two underscores instead of one, both simple and phrase + references may be anonymous (the reference text is not repeated + at the target). See Hyperlink Targets. + +
_`inline internal target` + inline internal target + A crossreference target within text. + See Hyperlink Targets. + +
|substitution reference| + (see note at right) + The result is substituted in from the substitution + definition. It could be text, an image, a hyperlink, or a + combination of these and others. + +
footnote reference [1]_ + footnote reference 1 + See Footnotes. + +
citation reference [CIT2002]_ + citation reference [CIT2002] + See Citations. + +
https://docutils.sourceforge.io/ + https://docutils.sourceforge.io/ + A standalone hyperlink. + +
+ +

Asterisk, backquote, vertical bar, and underscore are inline + delimiter characters. Asterisk, backquote, and vertical bar act + like quote marks; matching characters surround the marked-up word + or phrase, whitespace or other quoting is required outside them, + and there can't be whitespace just inside them. If you want to use + inline delimiter characters literally, escape + (with backslash) or quote them (with double backquotes; i.e. + use inline literals). + +

In detail, the reStructuredText specification says that in + inline markup, the following rules apply to start-strings and + end-strings (inline markup delimiters): + +

    +
  1. The start-string must start a text block or be + immediately preceded by whitespace or any of  + ' " ( [ { or <. +
  2. The start-string must be immediately followed by non-whitespace. +
  3. The end-string must be immediately preceded by non-whitespace. +
  4. The end-string must end a text block (end of document or + followed by a blank line) or be immediately followed by whitespace + or any of ' " . , : ; ! ? - ) ] } / \ + or >. +
  5. If a start-string is immediately preceded by one of  + ' " ( [ { or <, it must not be + immediately followed by the corresponding character from  + ' " ) ] } or >. +
  6. An end-string must be separated by at least one + character from the start-string. +
  7. An unescaped backslash preceding a + start-string or end-string will disable markup recognition, except + for the end-string of inline literals. +
+ +

Also remember that inline markup may not be nested (well, + except that inline literals can contain any of the other inline + markup delimiter characters, but that doesn't count because + nothing is processed). + +

Escaping with Backslashes

+ +

(details) + +

reStructuredText uses backslashes ("\") to override the special + meaning given to markup characters and get the literal characters + themselves. To get a literal backslash, use an escaped backslash + ("\\"). For example: + +

+ + + + +
Raw reStructuredText + Typical result +
+ *escape* ``with`` "\" + escape with "" +
+ \*escape* \``with`` "\\" + *escape* ``with`` "\" +
+ +

In Python strings it will, of course, be necessary + to escape any backslash characters so that they actually + reach reStructuredText. + The simplest way to do this is to use raw strings: + +

+ + + + +
Python string + Typical result +
+ r"""\*escape* \`with` "\\"""" + *escape* `with` "\" +
+  """\\*escape* \\`with` "\\\\"""" + *escape* `with` "\" +
+  """\*escape* \`with` "\\"""" + escape with "" +
+ +

Section Structure

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+ ===== +
Title +
===== +
Subtitle +
-------- +
Titles are underlined (or over- +
and underlined) with a printing +
nonalphanumeric 7-bit ASCII +
character. Recommended choices +
are "``= - ` : ' " ~ ^ _ * + # < >``". +
The underline/overline must be at +
least as long as the title text. +
+
A lone top-level (sub)section +
is lifted up to be the document's +
(sub)title. + +
+ Title +

Subtitle +

Titles are underlined (or over- + and underlined) with a printing + nonalphanumeric 7-bit ASCII + character. Recommended choices + are "= - ` : ' " ~ ^ _ * + # < >". + The underline/overline must be at + least as long as the title text. +

A lone top-level (sub)section is + lifted up to be the document's + (sub)title. +

+ +

Paragraphs

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+

This is a paragraph. + +

Paragraphs line up at their left +
edges, and are normally separated +
by blank lines. + +

+

This is a paragraph. + +

Paragraphs line up at their left edges, and are normally + separated by blank lines. + +

+ +

Bullet Lists

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+ Bullet lists: + +

- This is item 1 +
- This is item 2 + +

- Bullets are "-", "*" or "+". +
  Continuing text must be aligned +
  after the bullet and whitespace. + +

Note that a blank line is required +
before the first item and after the +
last, but is optional between items. +

Bullet lists: +
    +
  • This is item 1 +
  • This is item 2 +
  • Bullets are "-", "*" or "+". + Continuing text must be aligned + after the bullet and whitespace. +
+

Note that a blank line is required before the first + item and after the last, but is optional between items. +

+ +

Enumerated Lists

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+ Enumerated lists: + +

3. This is the first item +
4. This is the second item +
5. Enumerators are arabic numbers, +
   single letters, or roman numerals +
6. List items should be sequentially +
   numbered, but need not start at 1 +
   (although not all formatters will +
   honour the first index). +
#. This item is auto-enumerated +

Enumerated lists: +
    +
  1. This is the first item +
  2. This is the second item +
  3. Enumerators are arabic numbers, single letters, + or roman numerals +
  4. List items should be sequentially numbered, + but need not start at 1 (although not all + formatters will honour the first index). +
  5. This item is auto-enumerated +
+
+ +

Definition Lists

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+ Definition lists: +
+
what +
  Definition lists associate a term with +
  a definition. +
+
how +
  The term is a one-line phrase, and the +
  definition is one or more paragraphs or +
  body elements, indented relative to the +
  term. Blank lines are not allowed +
  between term and definition. +
Definition lists: +
+
what +
Definition lists associate a term with + a definition. + +
how +
The term is a one-line phrase, and the + definition is one or more paragraphs or + body elements, indented relative to the + term. Blank lines are not allowed + between term and definition. +
+
+ +

Field Lists

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+ :Authors: +
    Tony J. (Tibs) Ibbs, +
    David Goodger + +

    (and sundry other good-natured folks) + +

:Version: 1.0 of 2001/08/08 +
:Dedication: To my father. +

+ + +
Authors: + Tony J. (Tibs) Ibbs, + David Goodger +
(and sundry other good-natured folks) +
Version:1.0 of 2001/08/08 +
Dedication:To my father. +
+
+ +

Field lists are used as part of an extension syntax, such as + options for directives, or database-like + records meant for further processing. Field lists may also be + used as generic two-column table constructs in documents. + +

Option Lists

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+

+ -a            command-line option "a" +
-b file       options can have arguments +
              and long descriptions +
--long        options can be long also +
--input=file  long options can also have +
              arguments +
/V            DOS/VMS-style options too +
+ +

+ + + + + + + +
-a + command-line option "a" +
-b file + options can have arguments and long descriptions +
--long + options can be long also +
--input=file + long options can also have arguments +
/V + DOS/VMS-style options too +
+
+ +

There must be at least two spaces between the option and the + description. + +

Literal Blocks

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+ A paragraph containing only two colons +
indicates that the following indented +
or quoted text is a literal block. +
+
:: +
+
  Whitespace, newlines, blank lines, and +
  all kinds of markup (like *this* or +
  \this) is preserved by literal blocks. +
+
  The paragraph containing only '::' +
  will be omitted from the result. +
+
The ``::`` may be tacked onto the very +
end of any paragraph. The ``::`` will be +
omitted if it is preceded by whitespace. +
The ``::`` will be converted to a single +
colon if preceded by text, like this:: +
+
  It's very convenient to use this form. +
+
Literal blocks end when text returns to +
the preceding paragraph's indentation. +
This means that something like this +
is possible:: +
+
      We start here +
    and continue here +
  and end here. +
+
Per-line quoting can also be used on +
unindented literal blocks:: +
+
> Useful for quotes from email and +
> for Haskell literate programming. + +
+

A paragraph containing only two colons + indicates that the following indented or quoted + text is a literal block. + +

+    Whitespace, newlines, blank lines, and
+    all kinds of markup (like *this* or
+    \this) is preserved by literal blocks.
+
+    The paragraph containing only '::'
+    will be omitted from the result.
+ +

The :: may be tacked onto the very + end of any paragraph. The :: will be + omitted if it is preceded by whitespace. + The :: will be converted to a single + colon if preceded by text, like this: + +

+    It's very convenient to use this form.
+ +

Literal blocks end when text returns to + the preceding paragraph's indentation. + This means that something like this is possible: + +

+        We start here
+        and continue here
+    and end here.
+ +

Per-line quoting can also be used on + unindented literal blocks: + +

+    > Useful for quotes from email and
+    > for Haskell literate programming.
+
+ +

Line Blocks

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+ | Line blocks are useful for addresses, +
| verse, and adornment-free lists. +
| +
| Each new line begins with a +
| vertical bar ("|"). +
|     Line breaks and initial indents +
|     are preserved. +
| Continuation lines are wrapped +
  portions of long lines; they begin +
  with spaces in place of vertical bars. + +
+
+
Line blocks are useful for addresses,
+
verse, and adornment-free lists.
+

+
Each new line begins with a
+
vertical bar ("|").
+
+
Line breaks and initial indents
+
are preserved.
+
+
Continuation lines are wrapped portions + of long lines; they begin + with spaces in place of vertical bars.
+
+
+ +

Block Quotes

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+ Block quotes are just: + +

    Indented paragraphs, + +

        and they may nest. +

+ Block quotes are just: +
+

Indented paragraphs, +

+

and they may nest. +

+
+
+ +

Use empty comments to separate indentation + contexts, such as block quotes and directive contents.

+ +

Doctest Blocks

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+

Doctest blocks are interactive +
Python sessions. They begin with +
"``>>>``" and end with a blank line.
+ +

>>> print "This is a doctest block." +
This is a doctest block.
+ +

+

Doctest blocks are interactive + Python sessions. They begin with + ">>>" and end with a blank line. + +

>>> print "This is a doctest block." +
This is a doctest block.
+

+ +

"The doctest + module searches a module's docstrings for text that looks like an + interactive Python session, then executes all such sessions to + verify they still work exactly as shown." (From the doctest docs.) + +

Tables

+ +

(details) + +

There are two syntaxes for tables in reStructuredText. Grid + tables are complete but cumbersome to create. Simple tables are + easy to create but limited (no row spans, etc.).

+ +

+ + + + + + +
Plain text + Typical result +
+

Grid table:

+ +

+------------+------------+-----------+ +
| Header 1   | Header 2   | Header 3  | +
+============+============+===========+ +
| body row 1 | column 2   | column 3  | +
+------------+------------+-----------+ +
| body row 2 | Cells may span columns.| +
+------------+------------+-----------+ +
| body row 3 | Cells may  | - Cells   | +
+------------+ span rows. | - contain | +
| body row 4 |            | - blocks. | +
+------------+------------+-----------+

+
+

Grid table:

+ + + + + + + + + + + + + + +
Header 1 + Header 2 + Header 3 +
body row 1 + column 2 + column 3 +
body row 2 + Cells may span columns. +
body row 3 + Cells may
span rows. +
+
    +
  • Cells +
  • contain +
  • blocks. +
+
body row 4 +
+
+

Simple table:

+ +

=====  =====  ====== +
   Inputs     Output +
------------  ------ +
  A      B    A or B +
=====  =====  ====== +
False  False  False +
True   False  True +
False  True   True +
True   True   True +
=====  =====  ======

+ +
+

Simple table:

+ + + + + + + + + + + + + + +
Inputs + Output +
A + B + A or B +
False + False + False +
True + False + True +
False + True + True +
True + True + True +
+ +
+ +

Transitions

+ +

(details) + +

+ + + + + +
Plain text + Typical result +
+

+ A transition marker is a horizontal line +
of 4 or more repeated punctuation +
characters.
+ +

------------ + +

A transition should not begin or end a +
section or document, nor should two +
transitions be immediately adjacent.
+ +

+

A transition marker is a horizontal line + of 4 or more repeated punctuation + characters.

+ +
+ +

A transition should not begin or end a + section or document, nor should two + transitions be immediately adjacent. +

+ +

Transitions are commonly seen in novels and short fiction, as a + gap spanning one or more lines, marking text divisions or + signaling changes in subject, time, point of view, or emphasis. + +

Explicit Markup

+ +

Explicit markup blocks are used for constructs which float + (footnotes), have no direct paper-document representation + (hyperlink targets, comments), or require specialized processing + (directives). They all begin with two periods and whitespace, the + "explicit markup start". + +

Footnotes

+ +

(details) + +

+ + + + + + + + +
Plain text + Typical result +
+ Footnote references, like [5]_. +
Note that footnotes may get +
rearranged, e.g., to the bottom of +
the "page". + +

.. [5] A numerical footnote. Note +
   there's no colon after the ``]``. + +

+ Footnote references, like 5. + Note that footnotes may get rearranged, e.g., to the bottom of + the "page". + +

+

+ +
[5] A numerical footnote. + Note there's no colon after the ]. +
+ +

+ Autonumbered footnotes are +
possible, like using [#]_ and [#]_. +

.. [#] This is the first one. +
.. [#] This is the second one. + +

They may be assigned 'autonumber +
labels' - for instance, +
[#fourth]_ and [#third]_.
+ +

.. [#third] a.k.a. third_ +

.. [#fourth] a.k.a. fourth_ +

+ Autonumbered footnotes are possible, like using 1 and 2. + +

They may be assigned 'autonumber labels' - for instance, + 4 and 3. + +

+

+ +
[1] This is the first one. +
[2] This is the second one. +
[3] a.k.a. third +
[4] a.k.a. fourth +
+ +

+ Auto-symbol footnotes are also +
possible, like this: [*]_ and [*]_. +

.. [*] This is the first one. +
.. [*] This is the second one. + +

+ Auto-symbol footnotes are also + possible, like this: * + and . + +

+

+ +
[*] This is the first symbol footnote +
[†] This is the second one. +
+ +

+ +

The numbering of auto-numbered footnotes is determined by the + order of the footnotes, not of the references. For auto-numbered + footnote references without autonumber labels + ("[#]_"), the references and footnotes must be in the + same relative order. Similarly for auto-symbol footnotes + ("[*]_"). + +

Citations

+ +

(details) + +

+ + + + + + +
Plain text + Typical result +
+ Citation references, like [CIT2002]_. +
Note that citations may get +
rearranged, e.g., to the bottom of +
the "page". + +

.. [CIT2002] A citation +
   (as often used in journals). + +

Citation labels contain alphanumerics, +
underlines, hyphens and fullstops. +
Case is not significant. + +

Given a citation like [this]_, one +
can also refer to it like this_. + +

.. [this] here. + +

+ Citation references, like [CIT2002]. + Note that citations may get rearranged, e.g., to the bottom of + the "page". + +

Citation labels contain alphanumerics, underlines, hyphens + and fullstops. Case is not significant. + +

Given a citation like [this], one + can also refer to it like this. + +

+

+ +
[CIT2002] A citation + (as often used in journals). +
[this] here. +
+ +

+ +

Hyperlink Targets

+ +

(details) + +

External Hyperlink Targets

+ +

+ + + + + + + +
Plain text + Typical result +
+ External hyperlinks, like Python_. + +

.. _Python: https://www.python.org/ +

+ +
Fold-in form +
External hyperlinks, like + Python. +
+
+ +
Call-out form +
External hyperlinks, like + Python. + +

+

+
Python: + https://www.python.org/ +
+

+
+ +

"Fold-in" is the representation typically used in HTML + documents (think of the indirect hyperlink being "folded in" like + ingredients into a cake), and "call-out" is more suitable for + printed documents, where the link needs to be presented explicitly, for + example as a footnote. You can force usage of the call-out form by + using the + "target-notes" + directive. + +

reStructuredText also provides for embedded URIs (details), + a convenience at the expense of readability. A hyperlink + reference may directly embed a target URI inline, within angle + brackets. The following is exactly equivalent to the example above: + +

+ + + + + + +
Plain text + Typical result +
+ External hyperlinks, like `Python +
<https://www.python.org/>`_.
+
External hyperlinks, like + Python. +
+ +

Internal Hyperlink Targets

+ +

+ + + + + + + +
Plain text + Typical result +
Internal crossreferences, like example_. + +

.. _example: + +

This is an example crossreference target. +

+ +
Fold-in form + + + + +
Internal crossreferences, like example +

This is an example + crossreference target. +

+
+ +
Call-out form +
Internal crossreferences, like example + +

example: +
This is an example crossreference target. +

+ +
+ +

Indirect Hyperlink Targets

+ +

(details) + +

+ + + + + + +
Plain text + Typical result +
+ Python_ is `my favourite +
programming language`__.
+ +

.. _Python: https://www.python.org/ + +

__ Python_ + +

+

Python is + my favourite + programming language. + +

+ +

The second hyperlink target (the line beginning with + "__") is both an indirect hyperlink target + (indirectly pointing at the Python website via the + "Python_" reference) and an anonymous hyperlink + target. In the text, a double-underscore suffix is used to + indicate an anonymous hyperlink reference. In an anonymous + hyperlink target, the reference text is not repeated. This is + useful for references with long text or throw-away references, but + the target should be kept close to the reference to prevent them + going out of sync. + +

Implicit Hyperlink Targets

+ +

(details) + +

Section titles, footnotes, and citations automatically generate + hyperlink targets (the title text or footnote/citation label is + used as the hyperlink name). + +

+ + + + + +
Plain text + Typical result +
+ Titles are targets, too +
======================= +
Implicit references, like `Titles are +
targets, too`_. +
+ Titles are targets, too +

Implicit references, like Titles are + targets, too. +

+ +

Directives

+ +

(details) + +

Directives are a general-purpose extension mechanism, a way of + adding support for new constructs without adding new syntax. For + a description of all standard directives, see reStructuredText + Directives. + +

+ + + + + +
Plain text + Typical result +
For instance: + +

.. image:: images/nikola.png + +

+ For instance: +

ball1 +

+ +

Substitution References and Definitions

+ +

(details) + +

Substitutions are like inline directives, allowing graphics and + arbitrary constructs within text. + +

+ + + + + +
Plain text + Typical result +
+ The |Nikola| static site generator + is named after Nikola Tesla. + +

+ .. |Nikola| image:: nikola.png + +

+ +

The Nikola static + site generator is named after Nikola Tesla. + +

+ +

Comments

+ +

(details) + +

Any text which begins with an explicit markup start but doesn't + use the syntax of any of the constructs above, is a comment. + +

+ + + + + + +
Plain text + Typical result +
.. This text will not be shown +
   (but, for instance, in HTML might be +
   rendered as an HTML comment) + +
  + + + + +
+ An "empty comment" does not +
consume following blocks. +
(An empty comment is ".." with +
blank lines before and after.) +

.. +

        So this block is not "lost", +
        despite its indentation. +

+ An "empty comment" does not + consume following blocks. + (An empty comment is ".." with + blank lines before and after.) +
+ So this block is not "lost", + despite its indentation. +
+
+ +

Getting Help

+ +

Users who have questions or need assistance with Docutils or + reStructuredText should post a + message to the Docutils-Users mailing list. The Docutils project web + site has more information. + +


+
+

Authors: + Tibs + (tibs@tibsnjoan.co.uk) + and David Goodger + (goodger@python.org) +

+ diff --git a/nikola/data/sampleblog/pages/quickstart.rst b/nikola/data/sampleblog/pages/quickstart.rst new file mode 100644 index 0000000000..50e88a0d0f --- /dev/null +++ b/nikola/data/sampleblog/pages/quickstart.rst @@ -0,0 +1,410 @@ +.. title: A reStructuredText Primer +.. slug: quickstart +.. date: 2012-03-30 23:00:00 UTC-03:00 +.. tags: +.. link: +.. description: + +:Author: Richard Jones +:Version: $Revision: 5801 $ +:Copyright: This document has been placed in the public domain. + +.. class:: alert alert-info pull-left + +.. contents:: + + +The text below contains links that look like "(quickref__)". These +are relative links that point to the `Quick reStructuredText`_ user +reference. If these links don't work, please refer to the `master +quick reference`_ document. + +__ +.. _Quick reStructuredText: ../quickref/ +.. _master quick reference: + https://docutils.sourceforge.io/docs/user/rst/quickref.html + +.. Note:: This document is an informal introduction to + reStructuredText. The `What Next?`_ section below has links to + further resources, including a formal reference. + + +Structure +--------- + +From the outset, let me say that "Structured Text" is probably a bit +of a misnomer. It's more like "Relaxed Text" that uses certain +consistent patterns. These patterns are interpreted by a HTML +converter to produce "Very Structured Text" that can be used by a web +browser. + +The most basic pattern recognised is a **paragraph** (quickref__). +That's a chunk of text that is separated by blank lines (one is +enough). Paragraphs must have the same indentation -- that is, line +up at their left edge. Paragraphs that start indented will result in +indented quote paragraphs. For example:: + + This is a paragraph. It's quite + short. + + This paragraph will result in an indented block of + text, typically used for quoting other text. + + This is another one. + +Results in: + + This is a paragraph. It's quite + short. + + This paragraph will result in an indented block of + text, typically used for quoting other text. + + This is another one. + +__ ../quickref/#paragraphs + + +Text styles +----------- + +(quickref__) + +__ ../quickref/#inline-markup + +Inside paragraphs and other bodies of text, you may additionally mark +text for *italics* with "``*italics*``" or **bold** with +"``**bold**``". This is called "inline markup". + +If you want something to appear as a fixed-space literal, use +"````double back-quotes````". Note that no further fiddling is done +inside the double back-quotes -- so asterisks "``*``" etc. are left +alone. + +If you find that you want to use one of the "special" characters in +text, it will generally be OK -- reStructuredText is pretty smart. +For example, this lone asterisk * is handled just fine, as is the +asterisk in this equation: 5*6=30. If you actually +want text \*surrounded by asterisks* to **not** be italicised, then +you need to indicate that the asterisk is not special. You do this by +placing a backslash just before it, like so "``\*``" (quickref__), or +by enclosing it in double back-quotes (inline literals), like this:: + + ``*`` + +__ ../quickref/#escaping + +.. Tip:: Think of inline markup as a form of (parentheses) and use it + the same way: immediately before and after the text being marked + up. Inline markup by itself (surrounded by whitespace) or in the + middle of a word won't be recognized. See the `markup spec`__ for + full details. + +__ https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#inline-markup + + +Lists +----- + +Lists of items come in three main flavours: **enumerated**, +**bulleted** and **definitions**. In all list cases, you may have as +many paragraphs, sublists, etc. as you want, as long as the left-hand +side of the paragraph or whatever aligns with the first line of text +in the list item. + +Lists must always start a new paragraph -- that is, they must appear +after a blank line. + +**enumerated** lists (numbers, letters or roman numerals; quickref__) + __ ../quickref/#enumerated-lists + + Start a line off with a number or letter followed by a period ".", + right bracket ")" or surrounded by brackets "( )" -- whatever you're + comfortable with. All of the following forms are recognised:: + + 1. numbers + + A. upper-case letters + and it goes over many lines + + with two paragraphs and all! + + a. lower-case letters + + 3. with a sub-list starting at a different number + 4. make sure the numbers are in the correct sequence though! + + I. upper-case roman numerals + + i. lower-case roman numerals + + (1) numbers again + + 1) and again + + Results in (note: the different enumerated list styles are not + always supported by every web browser, so you may not get the full + effect here): + + 1. numbers + + A. upper-case letters + and it goes over many lines + + with two paragraphs and all! + + a. lower-case letters + + 3. with a sub-list starting at a different number + 4. make sure the numbers are in the correct sequence though! + + I. upper-case roman numerals + + i. lower-case roman numerals + + (1) numbers again + + 1) and again + +**bulleted** lists (quickref__) + __ ../quickref/#bullet-lists + + Just like enumerated lists, start the line off with a bullet point + character - either "-", "+" or "*":: + + * a bullet point using "*" + + - a sub-list using "-" + + + yet another sub-list + + - another item + + Results in: + + * a bullet point using "*" + + - a sub-list using "-" + + + yet another sub-list + + - another item + +**definition** lists (quickref__) + __ ../quickref/#definition-lists + + Unlike the other two, the definition lists consist of a term, and + the definition of that term. The format of a definition list is:: + + what + Definition lists associate a term with a definition. + + *how* + The term is a one-line phrase, and the definition is one or more + paragraphs or body elements, indented relative to the term. + Blank lines are not allowed between term and definition. + + Results in: + + what + Definition lists associate a term with a definition. + + *how* + The term is a one-line phrase, and the definition is one or more + paragraphs or body elements, indented relative to the term. + Blank lines are not allowed between term and definition. + + +Preformatting (code samples) +---------------------------- +(quickref__) + +__ ../quickref/#literal-blocks + +To just include a chunk of preformatted, never-to-be-fiddled-with +text, finish the prior paragraph with "``::``". The preformatted +block is finished when the text falls back to the same indentation +level as a paragraph prior to the preformatted block. For example:: + + An example:: + + Whitespace, newlines, blank lines, and all kinds of markup + (like *this* or \this) is preserved by literal blocks. + Lookie here, I've dropped an indentation level + (but not far enough) + + no more example + +Results in: + + An example:: + + Whitespace, newlines, blank lines, and all kinds of markup + (like *this* or \this) is preserved by literal blocks. + Lookie here, I've dropped an indentation level + (but not far enough) + + no more example + +Note that if a paragraph consists only of "``::``", then it's removed +from the output:: + + :: + + This is preformatted text, and the + last "::" paragraph is removed + +Results in: + +:: + + This is preformatted text, and the + last "::" paragraph is removed + + +Sections +-------- + +(quickref__) + +__ ../quickref/#section-structure + +To break longer text up into sections, you use **section headers**. +These are a single line of text (one or more words) with adornment: an +underline alone, or an underline and an overline together, in dashes +"``-----``", equals "``======``", tildes "``~~~~~~``" or any of the +non-alphanumeric characters ``= - ` : ' " ~ ^ _ * + # < >`` that you +feel comfortable with. An underline-only adornment is distinct from +an overline-and-underline adornment using the same character. The +underline/overline must be at least as long as the title text. Be +consistent, since all sections marked with the same adornment style +are deemed to be at the same level:: + + Chapter 1 Title + =============== + + Section 1.1 Title + ----------------- + + Subsection 1.1.1 Title + ~~~~~~~~~~~~~~~~~~~~~~ + + Section 1.2 Title + ----------------- + + Chapter 2 Title + =============== + +This results in the following structure, illustrated by simplified +pseudo-XML:: + +
+ + Chapter 1 Title + <section> + <title> + Section 1.1 Title + <section> + <title> + Subsection 1.1.1 Title + <section> + <title> + Section 1.2 Title + <section> + <title> + Chapter 2 Title + +(Pseudo-XML uses indentation for nesting and has no end-tags. It's +not possible to show actual processed output, as in the other +examples, because sections cannot exist inside block quotes. For a +concrete example, compare the section structure of this document's +source text and processed output.) + +Note that section headers are available as link targets, just using +their name. To link to the Lists_ heading, I write "``Lists_``". If +the heading has a space in it like `text styles`_, we need to quote +the heading "```text styles`_``". + + +Document Title / Subtitle +````````````````````````` + +The title of the whole document is distinct from section titles and +may be formatted somewhat differently (e.g. the HTML writer by default +shows it as a centered heading). + +To indicate the document title in reStructuredText, use a unique adornment +style at the beginning of the document. To indicate the document subtitle, +use another unique adornment style immediately after the document title. For +example:: + + ================ + Document Title + ================ + ---------- + Subtitle + ---------- + + Section Title + ============= + + ... + +Note that "Document Title" and "Section Title" above both use equals +signs, but are distinct and unrelated styles. The text of +overline-and-underlined titles (but not underlined-only) may be inset +for aesthetics. + + +Images +------ + +(quickref__) + +__ ../quickref/#directives + +To include an image in your document, you use the ``image`` directive__. +For example:: + + .. image:: /images/nikola.png + +results in: + +.. image:: /images/nikola.png + +The ``/images/nikola.png`` part indicates the filename of the image +you wish to appear in the document. There's no restriction placed on +the image (format, size etc). If the image is to appear in HTML and +you wish to supply additional information, you may:: + + .. image:: /images/nikola.png + :height: 100 + :width: 200 + :scale: 50 + :alt: alternate text + +See the full `image directive documentation`__ for more info. + +__ https://docutils.sourceforge.io/docs/ref/rst/directives.html +__ https://docutils.sourceforge.io/docs/ref/rst/directives.html#images + + +What Next? +---------- + +This primer introduces the most common features of reStructuredText, +but there are a lot more to explore. The `Quick reStructuredText`_ +user reference is a good place to go next. For complete details, the +`reStructuredText Markup Specification`_ is the place to go [#]_. + +Users who have questions or need assistance with Docutils or +reStructuredText should post a message to the Docutils-users_ mailing +list. + +.. [#] If that relative link doesn't work, try the master document: + https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html. + +.. _reStructuredText Markup Specification: + https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html +.. _Docutils-users: https://docutils.sourceforge.io/docs/user/mailing-lists.html#docutils-users +.. _Docutils project web site: https://docutils.sourceforge.io/ diff --git a/nikola/data/sampleblog/pages/social_buttons.rst b/nikola/data/sampleblog/pages/social_buttons.rst new file mode 100644 index 0000000000..df8d07ce62 --- /dev/null +++ b/nikola/data/sampleblog/pages/social_buttons.rst @@ -0,0 +1 @@ +../../../../docs/social_buttons.rst \ No newline at end of file diff --git a/nikola/data/sampleblog/pages/theming.rst b/nikola/data/sampleblog/pages/theming.rst new file mode 100644 index 0000000000..d004aa8512 --- /dev/null +++ b/nikola/data/sampleblog/pages/theming.rst @@ -0,0 +1 @@ +../../../../docs/theming.rst \ No newline at end of file diff --git a/nikola/data/sampleblog/posts/samplepost1.rst b/nikola/data/sampleblog/posts/samplepost1.rst new file mode 100644 index 0000000000..628dfd749d --- /dev/null +++ b/nikola/data/sampleblog/posts/samplepost1.rst @@ -0,0 +1,26 @@ +.. title: Welcome to Nikola +.. slug: welcome-to-nikola +.. date: 2012-03-30 23:00:00 UTC-03:00 +.. tags: nikola, python, demo, blog +.. author: Roberto Alsina +.. link: https://getnikola.com/ +.. description: +.. category: nikola + +.. figure:: https://farm1.staticflickr.com/138/352972944_4f9d568680.jpg + :target: https://farm1.staticflickr.com/138/352972944_4f9d568680_z.jpg?zz=1 + :class: thumbnail + :alt: Nikola Tesla Corner by nicwest, on Flickr + +If you can see this in a web browser, it means you managed to install Nikola, +and build a site using it. Congratulations! + +Next steps: + +* :doc:`Read the manual <handbook>` +* `Visit the Nikola website to learn more <https://getnikola.com>`__ +* `See a demo photo gallery <link://gallery/demo>`__ +* :doc:`See a demo listing <listings-demo>` +* :doc:`See a demo of a longer text <dr-nikolas-vendetta>` + +Send feedback to info@getnikola.com! diff --git a/nikola/data/sampleblog/posts/samplepost2.rst b/nikola/data/sampleblog/posts/samplepost2.rst new file mode 100644 index 0000000000..bedd84a557 --- /dev/null +++ b/nikola/data/sampleblog/posts/samplepost2.rst @@ -0,0 +1,23 @@ +.. title: Sample post 2 +.. slug: sample-post-2 +.. date: 2012-03-30 23:00:00 UTC-03:00 +.. tags: nikola, python, demo, blog +.. author: Roberto Alsina +.. link: https://getnikola.com/ +.. description: +.. category: nikola + +.. figure:: https://farm1.staticflickr.com/138/352972944_4f9d568680.jpg + :target: https://farm1.staticflickr.com/138/352972944_4f9d568680_z.jpg?zz=1 + :class: thumbnail + :alt: Nikola Tesla Corner by nicwest, on Flickr + +Lorem ipsum odor amet, consectetuer adipiscing elit. Diam parturient torquent nisi nisl massa, accumsan morbi neque risus. Vulputate id pretium phasellus, conubia et habitant. Volutpat platea risus praesent dui consectetur maecenas mauris. Pulvinar montes tincidunt ligula dolor tempor viverra conubia. Nam habitasse neque metus dictum per auctor egestas et arcu. Dictum porta proin nascetur euismod mattis lacinia. Pulvinar maximus ad tincidunt hendrerit fusce sollicitudin praesent mattis euismod. + +Ultrices dolor sollicitudin nam rutrum sagittis conubia rutrum! Orci amet enim scelerisque eget id etiam. Nam malesuada porta amet consequat a platea magnis odio. Eros eleifend eros laoreet mauris magnis. Leo at adipiscing auctor; non vehicula nascetur. Ipsum nisi diam posuere tortor turpis laoreet. Interdum etiam suscipit iaculis ultrices adipiscing curae vestibulum non. + +Cubilia dui sociosqu cubilia imperdiet; lectus viverra ridiculus augue? Penatibus blandit primis neque sollicitudin conubia sit id porta velit. Magna tortor sem pretium etiam posuere. Sed suspendisse rutrum libero magna aptent maecenas. Diam quisque fermentum taciti torquent aliquet mus pharetra. Nec nullam integer fringilla turpis; volutpat natoque? Orci sollicitudin ad varius ultrices praesent lacus lobortis cras ut. Congue volutpat dignissim vehicula sollicitudin aenean egestas, hac commodo. Nullam nisi proin gravida sollicitudin per eu. + +Dolor blandit ante fringilla amet nullam. In vehicula mattis sem bibendum fringilla libero leo. Hac volutpat diam arcu tristique; consectetur fringilla facilisis. Massa iaculis at sollicitudin, ipsum porta eu platea rhoncus. Non semper aptent tempor accumsan sit. Sit laoreet vitae morbi dui torquent. Pharetra nostra mollis libero, parturient convallis tristique. Dapibus iaculis rhoncus lobortis nascetur blandit dis magna facilisi. + +Aliquam morbi turpis nascetur; gravida morbi ornare tristique elementum adipiscing. Rhoncus quisque netus tellus senectus nam. Sit mollis congue lectus habitasse commodo dapibus nullam purus. Sed porta vel nec eget consequat finibus aenean. Magna metus ornare mauris; habitant tristique congue proin consectetur feugiat. Netus neque ornare fermentum tristique praesent ad tellus. Litora id primis arcu nulla aliquam sociosqu varius diam. Aliquam tincidunt curae gravida maecenas leo himenaeos. diff --git a/nikola/data/sampleblog/templates/book.tmpl b/nikola/data/sampleblog/templates/book.tmpl new file mode 100644 index 0000000000..d808729666 --- /dev/null +++ b/nikola/data/sampleblog/templates/book.tmpl @@ -0,0 +1,117 @@ +## -*- coding: utf-8 -*- +<%namespace name="helper" file="post_helper.tmpl"/> +<%namespace name="pheader" file="post_header.tmpl"/> +<%namespace name="comments" file="comments_helper.tmpl"/> +<%inherit file="post.tmpl"/> + +<%block name="extra_head"> + ${parent.extra_head()} + <link href='https://fonts.googleapis.com/css?family=Gentium+Book+Basic' rel='stylesheet' type='text/css'> + <style> + .smallcaps { + font-variant: small-caps; + } + .chapter { + width: 100%; + padding: 10px; + -webkit-column-gap: 40px; + -moz-column-gap: 40px; + column-gap: 40px; + -webkit-column-width: 400px; + -moz-column-width: 400px; + column-width: 400px; + -webkit-column-count: 2; + -moz-column-count: 2; + column-count: 2; + -webkit-column-rule: 1px solid #ddd; + -moz-column-rule: 1px solid #ddd; + column-rule: 1px solid #ddd; + height: 90vh; + font-family: 'Gentium Book Basic', serif; + color: #2d2e2e; + font-weight: 500; + } + div.frame { + overflow: hidden; + padding: 0; + margin: 0; + } + div.scrolling-cont { + overflow-x: scroll; + padding: 0; + margin: 0; + } + h1, h2, h3, h4 { + text-align: center; + width: 100%; + font-family: 'Gentium Book Basic', serif; + font-size: 120%; + font-weight: 900; + } + h1 { + font-size: 150%; + } + .subtitle { + text-align: center; + width: 100%; + } + .bookfig { + width: 100%; + height: auto; + max-width: 100%; + max-height: 100%; + } + div.figure { + height: 88vh; + margin: 0; + } + div.topic { + margin: 0; + } + div.section > p { + text-indent: 1em; + margin-bottom: 0; + text-align: justify; + } + </style> +</%block> + +<%block name="content"> +<article class="storypage" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div class="frame"> + <div class="scrolling-cont" id="scrolling-cont" name="scrolling-cont"> + <div class="e-content entry-content chapter" itemprop="articleBody text"> + <h1>${post.title()}</h1> + ${post.text()} + </div> + </div> + </div> +</article> +</%block> + +<%block name="extra_js"> + <script src="https://cdnjs.cloudflare.com/ajax/libs/Flowtype.js/1.1.0/flowtype.min.js"></script> + <script> + $('#scrolling-cont').flowtype({ + minimum: 500, + maximum: 1200, + minFont: 20, + maxFont: 40, + fontRatio: 50 + }); + $(document).ready(function() { + var elem = $('#scrolling-cont'); + elem.click(function(event) { + var x1 = elem.position().left; + var pw = elem.width() + 20; + var x2 = event.pageX; + if (x2 - x1 < pw / 2) { + pw = -pw; + } + elem.animate({ + scrollLeft: '+=' + pw + }, 500) + }); + }); + </script> +</%block> diff --git a/nikola/data/samplewebsite/README.txt b/nikola/data/samplewebsite/README.txt new file mode 100644 index 0000000000..011a8828c3 --- /dev/null +++ b/nikola/data/samplewebsite/README.txt @@ -0,0 +1,17 @@ +This folder contains the source used to generate a static site using Nikola. + +Installation and documentation at https://getnikola.com/ + +Configuration file for the site is ``conf.py``. + +To build the site:: + + nikola build + +To see it:: + + nikola serve -b + +To check all available commands:: + + nikola help diff --git a/nikola/data/samplewebsite/conf.py b/nikola/data/samplewebsite/conf.py new file mode 100644 index 0000000000..1536cccb7f --- /dev/null +++ b/nikola/data/samplewebsite/conf.py @@ -0,0 +1,1410 @@ +# -*- coding: utf-8 -*- + +import time + +# !! This is the configuration of Nikola. !! # +# !! You should edit it to your liking. !! # + + +# ! Some settings can be different in different languages. +# ! A comment stating (translatable) is used to denote those. +# ! There are two ways to specify a translatable setting: +# ! (a) BLOG_TITLE = "My Blog" +# ! (b) BLOG_TITLE = {"en": "My Blog", "es": "Mi Blog"} +# ! Option (a) is used when you don't want that setting translated. +# ! Option (b) is used for settings that are different in different languages. + + +# Data about this site +BLOG_AUTHOR = "Nikola Tesla" # (translatable) +BLOG_TITLE = "My Nikola Site" # (translatable) +# This is the main URL for your site. It will be used +# in a prominent link. Don't forget the protocol (http/https)! +SITE_URL = "https://example.com/" +# This is the URL where Nikola's output will be deployed. +# If not set, defaults to SITE_URL +# BASE_URL = "https://example.com/" +BLOG_EMAIL = "n.tesla@example.com" +BLOG_DESCRIPTION = "This is a demo site for Nikola." # (translatable) + +# Nikola is multilingual! +# +# Currently supported languages are: +# +# en English +# af Afrikaans +# ar Arabic +# az Azerbaijani +# bg Bulgarian +# bs Bosnian +# ca Catalan +# cs Czech [ALTERNATIVELY cz] +# da Danish +# de German +# el Greek [NOT gr] +# eo Esperanto +# es Spanish +# et Estonian +# eu Basque +# fa Persian +# fi Finnish +# fr French +# fur Friulian +# gl Galician +# he Hebrew +# hi Hindi +# hr Croatian +# hu Hungarian +# ia Interlingua +# id Indonesian +# it Italian +# ja Japanese [NOT jp] +# ko Korean +# lt Lithuanian +# mi Maori +# ml Malayalam +# mr Marathi +# nb Norwegian (Bokmål) +# nl Dutch +# oc Occitan +# pa Punjabi +# pl Polish +# pt Portuguese +# pt_br Portuguese (Brazil) +# ru Russian +# sk Slovak +# sl Slovene +# sq Albanian +# sr Serbian (Cyrillic) +# sr_latin Serbian (Latin) +# sv Swedish +# te Telugu +# th Thai +# tr Turkish [NOT tr_TR] +# uk Ukrainian +# ur Urdu +# vi Vietnamese +# zh_cn Chinese (Simplified) +# zh_tw Chinese (Traditional) +# +# If you want to use Nikola with a non-supported language you have to provide +# a module containing the necessary translations +# (cf. the modules at nikola/data/themes/base/messages/). +# If a specific post is not translated to a language, then the version +# in the default language will be shown instead. + +# What is the default language? +DEFAULT_LANG = "en" + +# What other languages do you have? +# The format is {"translationcode" : "path/to/translation" } +# the path will be used as a prefix for the generated pages location +TRANSLATIONS = { + DEFAULT_LANG: "", + # Example for another language: + # "es": "./es", +} + +# What will translated input files be named like? + +# If you have a page something.rst, then something.pl.rst will be considered +# its Polish translation. +# (in the above example: path == "something", ext == "rst", lang == "pl") +# this pattern is also used for metadata: +# something.meta -> something.pl.meta + +TRANSLATIONS_PATTERN = '{path}.{lang}.{ext}' + +# Links for the sidebar / navigation bar. (translatable) +# This is a dict. The keys are languages, and values are tuples. +# +# For regular links: +# ('https://getnikola.com/', 'Nikola Homepage') +# +# For submenus: +# ( +# ( +# ('https://apple.com/', 'Apple'), +# ('https://orange.com/', 'Orange'), +# ), +# 'Fruits' +# ) +# +# WARNING: Support for submenus is theme-dependent. +# Only one level of submenus is supported. +# WARNING: Some themes, including the default Bootstrap 4 theme, +# may present issues if the menu is too large. +# (in Bootstrap, the navbar can grow too large and cover contents.) +# WARNING: If you link to directories, make sure to follow +# ``STRIP_INDEXES``. If it’s set to ``True``, end your links +# with a ``/``, otherwise end them with ``/index.html`` — or +# else they won’t be highlighted when active. + +NAVIGATION_LINKS = { + DEFAULT_LANG: ( + ("about/index.html", "About"), + ("feature/index.html", "Features"), + ("contact/index.html", "Contact"), + ), +} + +# Alternative navigation links. Works the same way NAVIGATION_LINKS does, +# although themes may not always support them. (translatable) +# (Bootstrap 4: right-side of navbar, Bootblog 4: right side of title) +NAVIGATION_ALT_LINKS = { + DEFAULT_LANG: () +} + +# Name of the theme to use. +THEME = "bootblog4" + +# A theme color. In default themes, it might be displayed by some browsers as +# the browser UI color (eg. Chrome on Android). Other themes might also use it +# as an accent color (the default ones don’t). Must be a HEX value. +THEME_COLOR = '#5670d4' + +# Theme configuration. Fully theme-dependent. (translatable) +# Samples for bootblog4 (enabled) and bootstrap4 (commented) follow. +# bootblog4 supports: featured_large featured_small featured_on_mobile +# featured_large_image_on_mobile featured_strip_html sidebar +# bootstrap4 supports: navbar_light (defaults to False) +# navbar_custom_bg (defaults to '') + +# Config for bootblog4: +THEME_CONFIG = { + DEFAULT_LANG: { + # Show the latest featured post in a large box, with the previewimage as its background. + 'featured_large': True, + # Show the first (remaining) two featured posts in small boxes. + 'featured_small': True, + # Show featured posts on mobile. + 'featured_on_mobile': True, + # Show image in `featured_large` on mobile. + # `featured_small` displays them only on desktop. + 'featured_large_image_on_mobile': False, + # Strip HTML from featured post text. + 'featured_strip_html': True, + # Contents of the sidebar, If empty, the sidebar is not displayed. + 'sidebar': '' + } +} +# Config for bootstrap4: +# THEME_CONFIG = { +# DEFAULT_LANG: { +# # Use a light navbar with dark text. Defaults to False. +# 'navbar_light': False, +# # Use a custom navbar color. If unset, 'navbar_light' sets text + +# # background color. If set, navbar_light controls only background +# # color. Supported values: bg-dark, bg-light, bg-primary, bg-secondary, +# # bg-success, bg-danger, bg-warning, bg-info, bg-white, bg-transparent. +# 'navbar_custom_bg': '', +# } +# } + +# POSTS and PAGES contains (wildcard, destination, template) tuples. +# (translatable) +# +# The wildcard is used to generate a list of source files +# (whatever/thing.rst, for example). +# +# That fragment could have an associated metadata file (whatever/thing.meta), +# and optionally translated files (example for Spanish, with code "es"): +# whatever/thing.es.rst and whatever/thing.es.meta +# +# This assumes you use the default TRANSLATIONS_PATTERN. +# +# From those files, a set of HTML fragment files will be generated: +# cache/whatever/thing.html (and maybe cache/whatever/thing.html.es) +# +# These files are combined with the template to produce rendered +# pages, which will be placed at +# output/TRANSLATIONS[lang]/destination/pagename.html +# +# where "pagename" is the "slug" specified in the metadata file. +# The page might also be placed in /destination/pagename/index.html +# if PRETTY_URLS are enabled. +# +# The difference between POSTS and PAGES is that POSTS are added +# to feeds, indexes, tag lists and archives and are considered part +# of a blog, while PAGES are just independent HTML pages. +# +# Finally, note that destination can be translated, i.e. you can +# specify a different translation folder per language. Example: +# PAGES = ( +# ("pages/*.rst", {"en": "pages", "de": "seiten"}, "page.tmpl"), +# ("pages/*.md", {"en": "pages", "de": "seiten"}, "page.tmpl"), +# ) + +POSTS = () +PAGES = ( + ("pages/*.rst", "", "page.tmpl"), + ("pages/*.md", "", "page.tmpl"), + ("pages/*.txt", "", "page.tmpl"), + ("pages/*.html", "", "page.tmpl"), +) + + +# Below this point, everything is optional + +# Post's dates are considered in UTC by default, if you want to use +# another time zone, please set TIMEZONE to match. Check the available +# list from Wikipedia: +# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +# (e.g. 'Europe/Zurich') +# Also, if you want to use a different time zone in some of your posts, +# you can use the ISO 8601/RFC 3339 format (ex. 2012-03-30T23:00:00+02:00) +TIMEZONE = "Asia/Calcutta" + +# If you want to use ISO 8601 (also valid RFC 3339) throughout Nikola +# (especially in new_post), set this to True. +# Note that this does not affect DATE_FORMAT. +# FORCE_ISO8601 = False + +# Date format used to display post dates. (translatable) +# Used by babel.dates, CLDR style: http://cldr.unicode.org/translation/date-time-1/date-time +# You can also use 'full', 'long', 'medium', or 'short' +# DATE_FORMAT = 'yyyy-MM-dd HH:mm' + +# Date format used to display post dates, if local dates are used. (translatable) +# Used by Luxon: https://moment.github.io/luxon/docs/manual/formatting +# Example for presets: {'preset': True, 'format': 'DATE_FULL'} +# LUXON_DATE_FORMAT = { +# DEFAULT_LANG: {'preset': False, 'format': 'yyyy-MM-dd HH:mm'}, +# } + +# Date fanciness. +# +# 0 = using DATE_FORMAT and TIMEZONE (without JS) +# 1 = using LUXON_DATE_FORMAT and local user time (JS, using Luxon) +# 2 = using a string like “2 days ago” (JS, using Luxon) +# +# Your theme must support it, Bootstrap already does. +# DATE_FANCINESS = 0 + +# Customize the locale/region used for a language. +# For example, to use British instead of US English: LOCALES = {'en': 'en_GB'} +# LOCALES = {} + +# One or more folders containing files to be copied as-is into the output. +# The format is a dictionary of {source: relative destination}. +# Default is: +# FILES_FOLDERS = {'files': ''} +# Which means copy 'files' into 'output' + +# One or more folders containing code listings to be processed and published on +# the site. The format is a dictionary of {source: relative destination}. +# Default is: +# LISTINGS_FOLDERS = {'listings': 'listings'} +# Which means process listings from 'listings' into 'output/listings' + +# A mapping of languages to file-extensions that represent that language. +# Feel free to add or delete extensions to any list, but don't add any new +# compilers unless you write the interface for it yourself. +# +# The default compiler for `new_post` is the first entry in the POSTS tuple. +# +# 'rest' is reStructuredText +# 'markdown' is Markdown +# 'html' assumes the file is HTML and just copies it +COMPILERS = { + "rest": ['.rst', '.txt'], + "markdown": ['.md', '.mdown', '.markdown'], + "textile": ['.textile'], + "txt2tags": ['.t2t'], + "bbcode": ['.bb'], + "wiki": ['.wiki'], + "ipynb": ['.ipynb'], + "html": ['.html', '.htm'], + # PHP files are rendered the usual way (i.e. with the full templates). + # The resulting files have .php extensions, making it possible to run + # them without reconfiguring your server to recognize them. + "php": ['.php'], + # Pandoc detects the input from the source filename + # but is disabled by default as it would conflict + # with many of the others. + # "pandoc": ['.rst', '.md', '.txt'], +} + +# Enable reST directives that insert the contents of external files such +# as "include" and "raw." This maps directly to the docutils file_insertion_enabled +# config. See: https://docutils.sourceforge.io/docs/user/config.html#file-insertion-enabled +# REST_FILE_INSERTION_ENABLED = True + +# Create by default posts in one file format? +# Set to False for two-file posts, with separate metadata. +# ONE_FILE_POSTS = True + +# Preferred metadata format for new posts +# "Nikola": reST comments, wrapped in a HTML comment if needed (default) +# "YAML": YAML wrapped in "---" +# "TOML": TOML wrapped in "+++" +# "Pelican": Native markdown metadata or reST docinfo fields. Nikola style for other formats. +# METADATA_FORMAT = "Nikola" + +# Use date-based path when creating posts? +# Can be enabled on a per-post basis with `nikola new_post -d`. +# The setting is ignored when creating pages. +# NEW_POST_DATE_PATH = False + +# What format to use when creating posts with date paths? +# Default is '%Y/%m/%d', other possibilities include '%Y' or '%Y/%m'. +# NEW_POST_DATE_PATH_FORMAT = '%Y/%m/%d' + +# If this is set to True, the DEFAULT_LANG version will be displayed for +# untranslated posts. +# If this is set to False, then posts that are not translated to a language +# LANG will not be visible at all in the pages in that language. +# SHOW_UNTRANSLATED_POSTS = True + +# Nikola supports logo display. If you have one, you can put the URL here. +# Final output is <img src="LOGO_URL" id="logo" alt="BLOG_TITLE">. +# The URL may be relative to the site root. +# LOGO_URL = '' + +# When linking posts to social media, Nikola provides Open Graph metadata +# which is used to show a nice preview. This includes an image preview +# taken from the post's previewimage metadata field. +# This option lets you use an image to be used if the post doesn't have it. +# The default is None, valid values are URLs or output paths like +# "/images/foo.jpg" +# DEFAULT_PREVIEW_IMAGE = None + +# If you want to hide the title of your website (for example, if your logo +# already contains the text), set this to False. +# Note: if your logo is a SVG image, and you set SHOW_BLOG_TITLE = False, +# you should explicitly set a height for #logo in CSS. +# SHOW_BLOG_TITLE = True + +# Paths for different autogenerated bits. These are combined with the +# translation paths. + +# Final locations are: +# output / TRANSLATION[lang] / TAG_PATH / index.html (list of tags) +# output / TRANSLATION[lang] / TAG_PATH / tag.html (list of posts for a tag) +# output / TRANSLATION[lang] / TAG_PATH / tag RSS_EXTENSION (RSS feed for a tag) +# (translatable) +# TAG_PATH = "categories" + +# By default, the list of tags is stored in +# output / TRANSLATION[lang] / TAG_PATH / index.html +# (see explanation for TAG_PATH). This location can be changed to +# output / TRANSLATION[lang] / TAGS_INDEX_PATH +# with an arbitrary relative path TAGS_INDEX_PATH. +# (translatable) +# TAGS_INDEX_PATH = "tags.html" + +# If TAG_PAGES_ARE_INDEXES is set to True, each tag's page will contain +# the posts themselves. If set to False, it will be just a list of links. +# TAG_PAGES_ARE_INDEXES = False + +# Set descriptions for tag pages to make them more interesting. The +# default is no description. The value is used in the meta description +# and displayed underneath the tag list or index page’s title. +# (translatable) +# TAG_DESCRIPTIONS = { +# DEFAULT_LANG: { +# "blogging": "Meta-blog posts about blogging.", +# "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects." +# }, +# } + +# Set special titles for tag pages. The default is "Posts about TAG". +# (translatable) +# TAG_TITLES = { +# DEFAULT_LANG: { +# "blogging": "Meta-posts about blogging", +# "open source": "Posts about open source software" +# }, +# } + +# If you do not want to display a tag publicly, you can mark it as hidden. +# The tag will not be displayed on the tag list page and posts. +# Tag pages will still be generated. +HIDDEN_TAGS = ['mathjax'] + +# Only include tags on the tag list/overview page if there are at least +# TAGLIST_MINIMUM_POSTS number of posts or more with every tag. Every tag +# page is still generated, linked from posts, and included in the sitemap. +# However, more obscure tags can be hidden from the tag index page. +# TAGLIST_MINIMUM_POSTS = 1 + +# A list of dictionaries specifying tags which translate to each other. +# Format: a list of dicts {language: translation, language2: translation2, …} +# For example: +# [ +# {'en': 'private', 'de': 'Privat'}, +# {'en': 'work', 'fr': 'travail', 'de': 'Arbeit'}, +# ] +# TAG_TRANSLATIONS = [] + +# If set to True, a tag in a language will be treated as a translation +# of the literally same tag in all other languages. Enable this if you +# do not translate tags, for example. +# TAG_TRANSLATIONS_ADD_DEFAULTS = True + +# Final locations are: +# output / TRANSLATION[lang] / CATEGORY_PATH / index.html (list of categories) +# output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category.html (list of posts for a category) +# output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category RSS_EXTENSION (RSS feed for a category) +# (translatable) +# CATEGORY_PATH = "categories" +# CATEGORY_PREFIX = "cat_" + +# By default, the list of categories is stored in +# output / TRANSLATION[lang] / CATEGORY_PATH / index.html +# (see explanation for CATEGORY_PATH). This location can be changed to +# output / TRANSLATION[lang] / CATEGORIES_INDEX_PATH +# with an arbitrary relative path CATEGORIES_INDEX_PATH. +# (translatable) +# CATEGORIES_INDEX_PATH = "categories.html" + +# If CATEGORY_ALLOW_HIERARCHIES is set to True, categories can be organized in +# hierarchies. For a post, the whole path in the hierarchy must be specified, +# using a forward slash ('/') to separate paths. Use a backslash ('\') to escape +# a forward slash or a backslash (i.e. '\//\\' is a path specifying the +# subcategory called '\' of the top-level category called '/'). +CATEGORY_ALLOW_HIERARCHIES = False +# If CATEGORY_OUTPUT_FLAT_HIERARCHY is set to True, the output written to output +# contains only the name of the leaf category and not the whole path. +CATEGORY_OUTPUT_FLAT_HIERARCHY = False + +# If CATEGORY_PAGES_ARE_INDEXES is set to True, each category's page will contain +# the posts themselves. If set to False, it will be just a list of links. +# CATEGORY_PAGES_ARE_INDEXES = False + +# Set descriptions for category pages to make them more interesting. The +# default is no description. The value is used in the meta description +# and displayed underneath the category list or index page’s title. +# (translatable) +# CATEGORY_DESCRIPTIONS = { +# DEFAULT_LANG: { +# "blogging": "Meta-blog posts about blogging.", +# "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects." +# }, +# } + +# Set special titles for category pages. The default is "Posts about CATEGORY". +# (translatable) +# CATEGORY_TITLES = { +# DEFAULT_LANG: { +# "blogging": "Meta-posts about blogging", +# "open source": "Posts about open source software" +# }, +# } + +# If you do not want to display a category publicly, you can mark it as hidden. +# The category will not be displayed on the category list page. +# Category pages will still be generated. +HIDDEN_CATEGORIES = [] + +# A list of dictionaries specifying categories which translate to each other. +# Format: a list of dicts {language: translation, language2: translation2, …} +# See TAG_TRANSLATIONS example above. +# CATEGORY_TRANSLATIONS = [] + +# If set to True, a category in a language will be treated as a translation +# of the literally same category in all other languages. Enable this if you +# do not translate categories, for example. +# CATEGORY_TRANSLATIONS_ADD_DEFAULTS = True + +# If no category is specified in a post, the destination path of the post +# can be used in its place. This replaces the sections feature. Using +# category hierarchies is recommended. +# CATEGORY_DESTPATH_AS_DEFAULT = False + +# If True, the prefix will be trimmed from the category name, eg. if the +# POSTS destination is "foo/bar", and the path is "foo/bar/baz/quux", +# the category will be "baz/quux" (or "baz" if only the first directory is considered). +# Note that prefixes coming from translations are always ignored. +# CATEGORY_DESTPATH_TRIM_PREFIX = False + +# If True, only the first directory of a path will be used. +# CATEGORY_DESTPATH_FIRST_DIRECTORY_ONLY = True + +# Map paths to prettier category names. (translatable) +# CATEGORY_DESTPATH_NAMES = { +# DEFAULT_LANG: { +# 'webdev': 'Web Development', +# 'webdev/django': 'Web Development/Django', +# 'random': 'Odds and Ends', +# }, +# } + +# By default, category indexes will appear in CATEGORY_PATH and use +# CATEGORY_PREFIX. If this is enabled, those settings will be ignored (except +# for the index) and instead, they will follow destination paths (eg. category +# 'foo' might appear in 'posts/foo'). If the category does not come from a +# destpath, first entry in POSTS followed by the category name will be used. +# For this setting, category hierarchies are required and cannot be flattened. +# CATEGORY_PAGES_FOLLOW_DESTPATH = False + +# If ENABLE_AUTHOR_PAGES is set to True and there is more than one +# author, author pages are generated. +# ENABLE_AUTHOR_PAGES = True + +# Path to author pages. Final locations are: +# output / TRANSLATION[lang] / AUTHOR_PATH / index.html (list of authors) +# output / TRANSLATION[lang] / AUTHOR_PATH / author.html (list of posts by an author) +# output / TRANSLATION[lang] / AUTHOR_PATH / author RSS_EXTENSION (RSS feed for an author) +# (translatable) +# AUTHOR_PATH = "authors" + +# If AUTHOR_PAGES_ARE_INDEXES is set to True, each author's page will contain +# the posts themselves. If set to False, it will be just a list of links. +# AUTHOR_PAGES_ARE_INDEXES = False + +# Set descriptions for author pages to make them more interesting. The +# default is no description. The value is used in the meta description +# and displayed underneath the author list or index page’s title. +# AUTHOR_PAGES_DESCRIPTIONS = { +# DEFAULT_LANG: { +# "Juanjo Conti": "Python coder and writer.", +# "Roberto Alsina": "Nikola father." +# }, +# } + + +# If you do not want to display an author publicly, you can mark it as hidden. +# The author will not be displayed on the author list page. +# Author pages and links to them will still be generated. +HIDDEN_AUTHORS = ['Guest'] + +# Allow multiple, comma-separated authors for a post? (Requires theme support, present in built-in themes) +# MULTIPLE_AUTHORS_PER_POST = False + +# Final location for the main blog page and sibling paginated pages is +# output / TRANSLATION[lang] / INDEX_PATH / index-*.html +# (translatable) +# INDEX_PATH = "" + +# Optional HTML that displayed on “main” blog index.html files. +# May be used for a greeting. (translatable) +FRONT_INDEX_HEADER = { + DEFAULT_LANG: '' +} + +# Create per-month archives instead of per-year +# CREATE_MONTHLY_ARCHIVE = False +# Create one large archive instead of per-year +# CREATE_SINGLE_ARCHIVE = False +# Create year, month, and day archives each with a (long) list of posts +# (overrides both CREATE_MONTHLY_ARCHIVE and CREATE_SINGLE_ARCHIVE) +# CREATE_FULL_ARCHIVES = False +# If monthly archives or full archives are created, adds also one archive per day +# CREATE_DAILY_ARCHIVE = False +# Create previous, up, next navigation links for archives +# CREATE_ARCHIVE_NAVIGATION = False +# Final locations for the archives are: +# output / TRANSLATION[lang] / ARCHIVE_PATH / ARCHIVE_FILENAME +# output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / index.html +# output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / index.html +# output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / DAY / index.html +# (translatable) +# ARCHIVE_PATH = "" +# ARCHIVE_FILENAME = "archive.html" + +# If ARCHIVES_ARE_INDEXES is set to True, each archive page which contains a list +# of posts will contain the posts themselves. If set to False, it will be just a +# list of links. +# ARCHIVES_ARE_INDEXES = False + +# URLs to other posts/pages can take 3 forms: +# rel_path: a relative URL to the current page/post (default) +# full_path: a URL with the full path from the root +# absolute: a complete URL (that includes the SITE_URL) +# URL_TYPE = 'rel_path' + +# Extension for RSS feed files +# RSS_EXTENSION = ".xml" + +# RSS filename base (without extension); used for indexes and galleries. +# (translatable) +# RSS_FILENAME_BASE = "rss" + +# Final location for the blog main RSS feed is: +# output / TRANSLATION[lang] / RSS_PATH / RSS_FILENAME_BASE RSS_EXTENSION +# (translatable) +# RSS_PATH = "" + +# Final location for the blog main Atom feed is: +# output / TRANSLATION[lang] / ATOM_PATH / ATOM_FILENAME_BASE ATOM_EXTENSION +# (translatable) +# ATOM_PATH = "" + +# Atom filename base (without extension); used for indexes. +# (translatable) +ATOM_FILENAME_BASE = "feed" + +# Extension for Atom feed files +# ATOM_EXTENSION = ".atom" + +# Slug the Tag URL. Easier for users to type, special characters are +# often removed or replaced as well. +# SLUG_TAG_PATH = True + +# Slug the Author URL. Easier for users to type, special characters are +# often removed or replaced as well. +# SLUG_AUTHOR_PATH = True + +# A list of redirection tuples, [("foo/from.html", "/bar/to.html")]. +# +# A HTML file will be created in output/foo/from.html that redirects +# to the "/bar/to.html" URL. notice that the "from" side MUST be a +# relative URL. +# +# If you don't need any of these, just set to [] +REDIRECTIONS = [] + +# Presets of commands to execute to deploy. Can be anything, for +# example, you may use rsync: +# "rsync -rav --delete --delete-after output/ joe@my.site:/srv/www/site" +# And then do a backup, or run `nikola ping` from the `ping` +# plugin (`nikola plugin -i ping`). Or run `nikola check -l`. +# You may also want to use github_deploy (see below). +# You can define multiple presets and specify them as arguments +# to `nikola deploy`. If no arguments are specified, a preset +# named `default` will be executed. You can use as many presets +# in a `nikola deploy` command as you like. +# DEPLOY_COMMANDS = { +# 'default': [ +# "rsync -rav --delete --delete-after output/ joe@my.site:/srv/www/site", +# ] +# } + +# github_deploy configuration +# For more details, read the manual: +# https://getnikola.com/handbook.html#deploying-to-github +# You will need to configure the deployment branch on GitHub. +GITHUB_SOURCE_BRANCH = 'src' +GITHUB_DEPLOY_BRANCH = 'master' + +# The name of the remote where you wish to push to, using github_deploy. +GITHUB_REMOTE_NAME = 'origin' + +# Whether or not github_deploy should commit to the source branch automatically +# before deploying. +GITHUB_COMMIT_SOURCE = True + +# Where the output site should be located +# If you don't use an absolute path, it will be considered as relative +# to the location of conf.py +# OUTPUT_FOLDER = 'output' + +# where the "cache" of partial generated content should be located +# default: 'cache' +# CACHE_FOLDER = 'cache' + +# Filters to apply to the output. +# A directory where the keys are either: a file extensions, or +# a tuple of file extensions. +# +# And the value is a list of commands to be applied in order. +# +# Each command must be either: +# +# A string containing a '%s' which will +# be replaced with a filename. The command *must* produce output +# in place. +# +# Or: +# +# A python callable, which will be called with the filename as +# argument. +# +# By default, only .php files uses filters to inject PHP into +# Nikola’s templates. All other filters must be enabled through FILTERS. +# +# Many filters are shipped with Nikola. A list is available in the manual: +# <https://getnikola.com/handbook.html#post-processing-filters> +# +# from nikola import filters +# FILTERS = { +# ".html": [filters.typogrify], +# ".js": [filters.closure_compiler], +# ".jpg": ["jpegoptim --strip-all -m75 -v %s"], +# } + +# Executable for the "yui_compressor" filter (defaults to 'yui-compressor'). +# YUI_COMPRESSOR_EXECUTABLE = 'yui-compressor' + +# Executable for the "closure_compiler" filter (defaults to 'closure-compiler'). +# CLOSURE_COMPILER_EXECUTABLE = 'closure-compiler' + +# Executable for the "optipng" filter (defaults to 'optipng'). +# OPTIPNG_EXECUTABLE = 'optipng' + +# Executable for the "jpegoptim" filter (defaults to 'jpegoptim'). +# JPEGOPTIM_EXECUTABLE = 'jpegoptim' + +# Executable for the "html_tidy_withconfig", "html_tidy_nowrap", +# "html_tidy_wrap", "html_tidy_wrap_attr" and "html_tidy_mini" filters +# (defaults to 'tidy5'). +# HTML_TIDY_EXECUTABLE = 'tidy5' + +# List of XPath expressions which should be used for finding headers +# ({hx} is replaced by headers h1 through h6). +# You must change this if you use a custom theme that does not use +# "e-content entry-content" as a class for post and page contents. +# HEADER_PERMALINKS_XPATH_LIST = ['*//div[@class="e-content entry-content"]//{hx}'] +# Include *every* header (not recommended): +# HEADER_PERMALINKS_XPATH_LIST = ['*//{hx}'] + +# File blacklist for header permalinks. Contains output path +# (eg. 'output/index.html') +# HEADER_PERMALINKS_FILE_BLACKLIST = [] + +# Expert setting! Create a gzipped copy of each generated file. Cheap server- +# side optimization for very high traffic sites or low memory servers. +# GZIP_FILES = False +# File extensions that will be compressed +# GZIP_EXTENSIONS = ('.txt', '.htm', '.html', '.css', '.js', '.json', '.atom', '.xml') +# Use an external gzip command? None means no. +# Example: GZIP_COMMAND = "pigz -k {filename}" +# GZIP_COMMAND = None +# Make sure the server does not return a "Accept-Ranges: bytes" header for +# files compressed by this option! OR make sure that a ranged request does not +# return partial content of another representation for these resources. Do not +# use this feature if you do not understand what this means. + +# ############################################################################# +# Image Gallery Options +# ############################################################################# + +# One or more folders containing galleries. The format is a dictionary of +# {"source": "relative_destination"}, where galleries are looked for in +# "source/" and the results will be located in +# "OUTPUT_PATH/relative_destination/gallery_name" +# Default is: +# GALLERY_FOLDERS = {"galleries": "galleries"} +# More gallery options: +# THUMBNAIL_SIZE = 180 +# MAX_IMAGE_SIZE = 1280 +# USE_FILENAME_AS_TITLE = True +# EXTRA_IMAGE_EXTENSIONS = [] + +# Use a thumbnail (defined by ".. previewimage:" in the gallery's index) in +# list of galleries for each gallery +GALLERIES_USE_THUMBNAIL = False + +# Image to use as thumbnail for those galleries that don't have one +# None: show a grey square +# '/url/to/file': show the image in that url +GALLERIES_DEFAULT_THUMBNAIL = None + +# If set to False, it will sort by filename instead. Defaults to True +# GALLERY_SORT_BY_DATE = True + +# If set to True, EXIF data will be copied when an image is thumbnailed or +# resized. (See also EXIF_WHITELIST) +# PRESERVE_EXIF_DATA = False + +# If you have enabled PRESERVE_EXIF_DATA, this option lets you choose EXIF +# fields you want to keep in images. (See also PRESERVE_EXIF_DATA) +# +# For a full list of field names, please see here: +# http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf +# +# This is a dictionary of lists. Each key in the dictionary is the +# name of a IDF, and each list item is a field you want to preserve. +# If you have a IDF with only a '*' item, *EVERY* item in it will be +# preserved. If you don't want to preserve anything in a IDF, remove it +# from the setting. By default, no EXIF information is kept. +# Setting the whitelist to anything other than {} implies +# PRESERVE_EXIF_DATA is set to True +# To preserve ALL EXIF data, set EXIF_WHITELIST to {"*": "*"} + +# EXIF_WHITELIST = {} + +# Some examples of EXIF_WHITELIST settings: + +# Basic image information: +# EXIF_WHITELIST['0th'] = [ +# "Orientation", +# "XResolution", +# "YResolution", +# ] + +# If you want to keep GPS data in the images: +# EXIF_WHITELIST['GPS'] = ["*"] + +# Embedded thumbnail information: +# EXIF_WHITELIST['1st'] = ["*"] + +# If set to True, any ICC profile will be copied when an image is thumbnailed or +# resized. +# PRESERVE_ICC_PROFILES = False + +# Folders containing images to be used in normal posts or pages. +# IMAGE_FOLDERS is a dictionary of the form {"source": "destination"}, +# where "source" is the folder containing the images to be published, and +# "destination" is the folder under OUTPUT_PATH containing the images copied +# to the site. Thumbnail images will be created there as well. + +# To reference the images in your posts, include a leading slash in the path. +# For example, if IMAGE_FOLDERS = {'images': 'images'}, write +# +# .. image:: /images/tesla.jpg +# +# See the Nikola Handbook for details (in the “Embedding Images” and +# “Thumbnails” sections) + +# Images will be scaled down according to IMAGE_THUMBNAIL_SIZE and MAX_IMAGE_SIZE +# options, but will have to be referenced manually to be visible on the site +# (the thumbnail has ``.thumbnail`` added before the file extension by default, +# but a different naming template can be configured with IMAGE_THUMBNAIL_FORMAT). +# Panoramas (aspect ratio over 3:1) get 4x larger thumbnails due to scaling issues. + +IMAGE_FOLDERS = {'images': 'images'} +# IMAGE_THUMBNAIL_SIZE = 400 +# IMAGE_THUMBNAIL_FORMAT = '{name}.thumbnail{ext}' + +# ############################################################################# +# HTML fragments and diverse things that are used by the templates +# ############################################################################# + +# Data about post-per-page indexes. +# INDEXES_PAGES defaults to ' old posts, page %d' or ' page %d' (translated), +# depending on the value of INDEXES_PAGES_MAIN. +# +# (translatable) If the following is empty, defaults to BLOG_TITLE: +# INDEXES_TITLE = "" +# +# (translatable) If the following is empty, defaults to ' [old posts,] page %d' (see above): +# INDEXES_PAGES = "" +# +# If the following is True, INDEXES_PAGES is also displayed on the main (the +# newest) index page (index.html): +# INDEXES_PAGES_MAIN = False +# +# If the following is True, index-1.html has the oldest posts, index-2.html the +# second-oldest posts, etc., and index.html has the newest posts. This ensures +# that all posts on index-x.html will forever stay on that page, now matter how +# many new posts are added. +# If False, index-1.html has the second-newest posts, index-2.html the third-newest, +# and index-n.html the oldest posts. When this is active, old posts can be moved +# to other index pages when new posts are added. +# INDEXES_STATIC = True +# +# (translatable) If PRETTY_URLS is set to True, this setting will be used to create +# prettier URLs for index pages, such as page/2/index.html instead of index-2.html. +# Valid values for this settings are: +# * False, +# * a list or tuple, specifying the path to be generated, +# * a dictionary mapping languages to lists or tuples. +# Every list or tuple must consist of strings which are used to combine the path; +# for example: +# ['page', '{number}', '{index_file}'] +# The replacements +# {number} --> (logical) page number; +# {old_number} --> the page number inserted into index-n.html before (zero for +# the main page); +# {index_file} --> value of option INDEX_FILE +# are made. +# Note that in case INDEXES_PAGES_MAIN is set to True, a redirection will be created +# for the full URL with the page number of the main page to the normal (shorter) main +# page URL. +# INDEXES_PRETTY_PAGE_URL = False +# +# If the following is true, a page range navigation will be inserted to indices. +# Please note that this will undo the effect of INDEXES_STATIC, as all index pages +# must be recreated whenever the number of pages changes. +# SHOW_INDEX_PAGE_NAVIGATION = False + +# If the following is True, a meta name="generator" tag is added to pages. The +# generator tag is used to specify the software used to generate the page +# (it promotes Nikola). +# META_GENERATOR_TAG = True + +# Color scheme to be used for code blocks. If your theme provides +# "assets/css/code.css" this is ignored. Set to None to disable. +# Can be any of: +# algol, algol_nu, autumn, borland, bw, colorful, default, emacs, friendly, +# fruity, igor, lovelace, manni, monokai, murphy, native, paraiso-dark, +# paraiso-light, pastie, perldoc, rrt, tango, trac, vim, vs, xcode +# This list MAY be incomplete since pygments adds styles every now and then. +# Check with list(pygments.styles.get_all_styles()) in an interpreter. +# +# CODE_COLOR_SCHEME = 'default' + +# FAVICONS contains (name, file, size) tuples. +# Used to create favicon link like this: +# <link rel="name" href="file" sizes="size"/> +# FAVICONS = ( +# ("icon", "/favicon.ico", "16x16"), +# ("icon", "/icon_128x128.png", "128x128"), +# ) + +# Show teasers (instead of full posts) in indexes? Defaults to False. +# INDEX_TEASERS = False + +# HTML fragments with the Read more... links. +# The following tags exist and are replaced for you: +# {link} A link to the full post page. +# {read_more} The string “Read more” in the current language. +# {reading_time} An estimate of how long it will take to read the post. +# {remaining_reading_time} An estimate of how long it will take to read the post, sans the teaser. +# {min_remaining_read} The string “{remaining_reading_time} min remaining to read” in the current language. +# {paragraph_count} The amount of paragraphs in the post. +# {remaining_paragraph_count} The amount of paragraphs in the post, sans the teaser. +# {post_title} The title of the post. +# {{ A literal { (U+007B LEFT CURLY BRACKET) +# }} A literal } (U+007D RIGHT CURLY BRACKET) + +# 'Read more...' for the index page, if INDEX_TEASERS is True (translatable) +INDEX_READ_MORE_LINK = '<p class="more"><a href="{link}">{read_more}…</a></p>' +# 'Read more...' for the feeds, if FEED_TEASERS is True (translatable) +FEED_READ_MORE_LINK = '<p><a href="{link}">{read_more}…</a> ({min_remaining_read})</p>' + +# Append a URL query to the FEED_READ_MORE_LINK in Atom and RSS feeds. Advanced +# option used for traffic source tracking. +# Minimum example for use with Piwik: "pk_campaign=feed" +# The following tags exist and are replaced for you: +# {feedRelUri} A relative link to the feed. +# {feedFormat} The name of the syndication format. +# Example using replacement for use with Google Analytics: +# "utm_source={feedRelUri}&utm_medium=nikola_feed&utm_campaign={feedFormat}_feed" +FEED_LINKS_APPEND_QUERY = False + +# A HTML fragment describing the license, for the sidebar. +# (translatable) +LICENSE = "" +# I recommend using the Creative Commons' wizard: +# https://creativecommons.org/choose/ +# LICENSE = """ +# <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"> +# <img alt="Creative Commons License BY-NC-SA" +# style="border-width:0; margin-bottom:12px;" +# src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"></a>""" + +# A small copyright notice for the page footer (in HTML). +# (translatable) +CONTENT_FOOTER = 'Contents © {date} <a href="mailto:{email}">{author}</a> - Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a> {license}' + +# Things that will be passed to CONTENT_FOOTER.format(). This is done +# for translatability, as dicts are not formattable. Nikola will +# intelligently format the setting properly. +# The setting takes a dict. The keys are languages. The values are +# tuples of tuples of positional arguments and dicts of keyword arguments +# to format(). For example, {'en': (('Hello'), {'target': 'World'})} +# results in CONTENT_FOOTER['en'].format('Hello', target='World'). +# If you need to use the literal braces '{' and '}' in your footer text, use +# '{{' and '}}' to escape them (str.format is used) +# WARNING: If you do not use multiple languages with CONTENT_FOOTER, this +# still needs to be a dict of this format. (it can be empty if you +# do not need formatting) +# (translatable) +CONTENT_FOOTER_FORMATS = { + DEFAULT_LANG: ( + (), + { + "email": BLOG_EMAIL, + "author": BLOG_AUTHOR, + "date": time.gmtime().tm_year, + "license": LICENSE + } + ) +} + +# A simple copyright tag for inclusion in RSS feeds that works just +# like CONTENT_FOOTER and CONTENT_FOOTER_FORMATS +RSS_COPYRIGHT = 'Contents © {date} <a href="mailto:{email}">{author}</a> {license}' +RSS_COPYRIGHT_PLAIN = 'Contents © {date} {author} {license}' +RSS_COPYRIGHT_FORMATS = CONTENT_FOOTER_FORMATS + +# To use comments, you can choose between different third party comment +# systems. The following comment systems are supported by Nikola: +# disqus, discourse, facebook, intensedebate, isso, muut, commento, +# utterances +# You can leave this option blank to disable comments. +COMMENT_SYSTEM = "" +# And you also need to add your COMMENT_SYSTEM_ID which +# depends on what comment system you use. The default is +# "nikolademo" which is a test account for Disqus. More information +# is in the manual. +COMMENT_SYSTEM_ID = "" + +# Create index.html for page folders? +# WARNING: if a page would conflict with the index file (usually +# caused by setting slug to `index`), the PAGE_INDEX +# will not be generated for that directory. +# PAGE_INDEX = False +# Enable comments on pages (i.e. not posts)? +# COMMENTS_IN_PAGES = False +# Enable comments on picture gallery pages? +# COMMENTS_IN_GALLERIES = False + +# What file should be used for directory indexes? +# Defaults to index.html +# Common other alternatives: default.html for IIS, index.php +# INDEX_FILE = "index.html" + +# If a link ends in /index.html, drop the index.html part. +# http://mysite/foo/bar/index.html => http://mysite/foo/bar/ +# (Uses the INDEX_FILE setting, so if that is, say, default.html, +# it will instead /foo/default.html => /foo) +STRIP_INDEXES = True + +# List of files relative to the server root (!) that will be asked to be excluded +# from indexing and other robotic spidering. * is supported. Will only be effective +# if SITE_URL points to server root. The list is used to exclude resources from +# /robots.txt and /sitemap.xml, and to inform search engines about /sitemapindex.xml. +# ROBOTS_EXCLUSIONS = ["/archive.html", "/category/*.html"] + +# Instead of putting files in <slug>.html, put them in <slug>/index.html. +# No web server configuration is required. Also enables STRIP_INDEXES. +# This can be disabled on a per-page/post basis by adding +# .. pretty_url: False +# to the metadata. +PRETTY_URLS = True + +# If True, publish future dated posts right away instead of scheduling them. +# Defaults to False. +# FUTURE_IS_NOW = False + +# If True, future dated posts are allowed in deployed output +# Only the individual posts are published/deployed; not in indexes/sitemap +# Generally, you want FUTURE_IS_NOW and DEPLOY_FUTURE to be the same value. +# DEPLOY_FUTURE = False +# If False, draft posts will not be deployed +# DEPLOY_DRAFTS = True + +# Allows scheduling of posts using the rule specified here (new_post -s) +# Specify an iCal Recurrence Rule: https://www.kanzaki.com/docs/ical/rrule.html +# SCHEDULE_RULE = '' +# If True, use the scheduling rule to all posts (not pages!) by default +# SCHEDULE_ALL = False + +# Do you want to add a Mathjax config file? +# MATHJAX_CONFIG = "" + +# If you want support for the $.$ syntax (which may conflict with running +# text!), just use this config: +# MATHJAX_CONFIG = """ +# <script type="text/x-mathjax-config"> +# MathJax.Hub.Config({ +# tex2jax: { +# inlineMath: [ ['$','$'], ["\\\(","\\\)"] ], +# displayMath: [ ['$$','$$'], ["\\\[","\\\]"] ], +# processEscapes: true +# }, +# displayAlign: 'center', // Change this to 'left' if you want left-aligned equations. +# "HTML-CSS": { +# styles: {'.MathJax_Display': {"margin": 0}} +# } +# }); +# </script> +# """ + +# Want to use KaTeX instead of MathJax? While KaTeX may not support every +# feature yet, it's faster and the output looks better. +# USE_KATEX = False + +# KaTeX auto-render settings. If you want support for the $.$ syntax (which may +# conflict with running text!), just use this config: +# KATEX_AUTO_RENDER = """ +# delimiters: [ +# {left: "$$", right: "$$", display: true}, +# {left: "\\\\[", right: "\\\\]", display: true}, +# {left: "\\\\begin{equation*}", right: "\\\\end{equation*}", display: true}, +# {left: "$", right: "$", display: false}, +# {left: "\\\\(", right: "\\\\)", display: false} +# ] +# """ + +# Do you want to customize the nbconversion of your IPython notebook? +# IPYNB_CONFIG = {} +# With the following example configuration you can use a custom jinja template +# called `toggle.tpl` which has to be located in your site/blog main folder: +# IPYNB_CONFIG = {'Exporter': {'template_file': 'toggle'}} + +# What Markdown extensions to enable? +# You will also get gist, nikola and podcast because those are +# done in the code, hope you don't mind ;-) +# Note: most Nikola-specific extensions are done via the Nikola plugin system, +# with the MarkdownExtension class and should not be added here. +# Defaults are markdown.extensions.(fenced_code|codehilite|extra) +# markdown.extensions.meta is required for Markdown metadata. +MARKDOWN_EXTENSIONS = ['markdown.extensions.fenced_code', 'markdown.extensions.codehilite', 'markdown.extensions.extra'] + +# Options to be passed to markdown extensions (See https://python-markdown.github.io/reference/) +# Default is {DEFAULT_LANG: {}} (no config at all) +# (translatable) +# MARKDOWN_EXTENSION_CONFIGS = {DEFAULT_LANG: {}} + + +# Extra options to pass to the pandoc command, empty by default. +# It can be a list of strings or a dict (keys are file extensions). +# Example for a list of strings (used for all extensions): +# PANDOC_OPTIONS = ['-F', 'pandoc-citeproc', '--bibliography=/Users/foo/references.bib'] +# Example for a dict, where the keys are the extensions in COMPILERS['pandoc']: +# COMPILERS['pandoc'] = ['.rst', '.md', '.txt'] +# PANDOC_OPTIONS = { +# '.rst': ['-t', 'rst'], +# '.md': ['-t', 'markdown'], +# '.txt': ['-t', 'markdown-raw_html'], +# } +# Pandoc does not demote headers by default. To enable this, you can use, for example +# ['--base-header-level=2'] +# PANDOC_OPTIONS = [] + +# Social buttons. This is sample code for AddThis (which was the default for a +# long time). Insert anything you want here, or even make it empty (which is +# the default right now) +# (translatable) +# SOCIAL_BUTTONS_CODE = """ +# <!-- Social buttons --> +# <div id="addthisbox" class="addthis_toolbox addthis_peekaboo_style addthis_default_style addthis_label_style addthis_32x32_style"> +# <a class="addthis_button_more">Share</a> +# <ul><li><a class="addthis_button_facebook"></a> +# <li><a class="addthis_button_google_plusone_share"></a> +# <li><a class="addthis_button_linkedin"></a> +# <li><a class="addthis_button_twitter"></a> +# </ul> +# </div> +# <script src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f7088a56bb93798"></script> +# <!-- End of social buttons --> +# """ + +# Show link to source for the posts? +# SHOW_SOURCELINK = True +# Copy the source files for your pages? +# Setting it to False implies SHOW_SOURCELINK = False +# COPY_SOURCES = True + +# Modify the number of Post per Index Page +# Defaults to 10 +# INDEX_DISPLAY_POST_COUNT = 10 + +# By default, Nikola generates RSS files for the website and for tags, and +# links to it. Set this to False to disable everything RSS-related. +# GENERATE_RSS = True + +# By default, Nikola does not generates Atom files for indexes and links to +# them. Generate Atom for tags by setting TAG_PAGES_ARE_INDEXES to True. +# Atom feeds are built based on INDEX_DISPLAY_POST_COUNT and not FEED_LENGTH +# Switch between plain-text summaries and full HTML content using the +# FEED_TEASER option. FEED_LINKS_APPEND_QUERY is also respected. Atom feeds +# are generated even for old indexes and have pagination link relations +# between each other. Old Atom feeds with no changes are marked as archived. +# GENERATE_ATOM = False + +# Only include teasers in Atom and RSS feeds. Disabling include the full +# content. Defaults to True. +# FEED_TEASERS = True + +# Strip HTML from Atom and RSS feed summaries and content. Defaults to False. +# FEED_PLAIN = False + +# Number of posts in Atom and RSS feeds. +# FEED_LENGTH = 10 + +# RSS_LINK is a HTML fragment to link the RSS or Atom feeds. If set to None, +# the base.tmpl will use the feed Nikola generates. However, you may want to +# change it for a FeedBurner feed or something else. +# RSS_LINK = None + +# A search form to search this site, for the sidebar. You can use a Google +# custom search (https://www.google.com/cse/) +# Or a DuckDuckGo search: https://duckduckgo.com/search_box.html +# Default is no search form. +# (translatable) +# SEARCH_FORM = "" +# +# This search form works for any site and looks good in the "site" theme where +# it appears on the navigation bar: +# +# SEARCH_FORM = """ +# <!-- DuckDuckGo custom search --> +# <form method="get" id="search" action="https://duckduckgo.com/" +# class="navbar-form pull-left"> +# <input type="hidden" name="sites" value="%s"> +# <input type="hidden" name="k8" value="#444444"> +# <input type="hidden" name="k9" value="#D51920"> +# <input type="hidden" name="kt" value="h"> +# <input type="text" name="q" maxlength="255" +# placeholder="Search…" class="span2" style="margin-top: 4px;"> +# <input type="submit" value="DuckDuckGo Search" style="visibility: hidden;"> +# </form> +# <!-- End of custom search --> +# """ % SITE_URL +# +# If you prefer a Google search form, here's an example that should just work: +# SEARCH_FORM = """ +# <!-- Google custom search --> +# <form method="get" action="https://www.google.com/search" class="navbar-form navbar-right" role="search"> +# <div class="form-group"> +# <input type="text" name="q" class="form-control" placeholder="Search"> +# </div> +# <button type="submit" class="btn btn-primary"> +# <span class="glyphicon glyphicon-search"></span> +# </button> +# <input type="hidden" name="sitesearch" value="%s"> +# </form> +# <!-- End of custom search --> +# """ % SITE_URL + +# Use content distribution networks for jQuery, twitter-bootstrap css and js, +# and html5shiv (for older versions of Internet Explorer) +# If this is True, jQuery and html5shiv are served from the Google CDN and +# Bootstrap is served from BootstrapCDN (provided by MaxCDN) +# Set this to False if you want to host your site without requiring access to +# external resources. +# USE_CDN = False + +# Check for USE_CDN compatibility. +# If you are using custom themes, have configured the CSS properly and are +# receiving warnings about incompatibility but believe they are incorrect, you +# can set this to False. +# USE_CDN_WARNING = True + +# Extra things you want in the pages HEAD tag. This will be added right +# before </head> +# (translatable) +# EXTRA_HEAD_DATA = "" +# Google Analytics or whatever else you use. Added to the bottom of <body> +# in the default template (base.tmpl). +# (translatable) +# BODY_END = "" + +# The possibility to extract metadata from the filename by using a +# regular expression. +# To make it work you need to name parts of your regular expression. +# The following names will be used to extract metadata: +# - title +# - slug +# - date +# - tags +# - link +# - description +# +# An example re is the following: +# '.*\/(?P<date>\d{4}-\d{2}-\d{2})-(?P<slug>.*)-(?P<title>.*)\.rst' +# (Note the '.*\/' in the beginning -- matches source paths relative to conf.py) +# FILE_METADATA_REGEXP = None + +# Should titles fetched from file metadata be unslugified (made prettier?) +# FILE_METADATA_UNSLUGIFY_TITLES = True + +# If enabled, extract metadata from docinfo fields in reST documents. +# If your text files start with a level 1 heading, it will be treated as the +# document title and will be removed from the text. +# USE_REST_DOCINFO_METADATA = False + +# If enabled, hide docinfo fields in reST document output +# HIDE_REST_DOCINFO = False + +# Map metadata from other formats to Nikola names. +# Supported formats: yaml, toml, rest_docinfo, markdown_metadata +# METADATA_MAPPING = {} +# +# Example for Pelican compatibility: +# METADATA_MAPPING = { +# "rest_docinfo": {"summary": "description", "modified": "updated"}, +# "markdown_metadata": {"summary": "description", "modified": "updated"} +# } +# Other examples: https://getnikola.com/handbook.html#mapping-metadata-from-other-formats + +# Map metadata between types/values. (Runs after METADATA_MAPPING.) +# Supported formats: nikola, yaml, toml, rest_docinfo, markdown_metadata +# The value on the right should be a dict of callables. +# METADATA_VALUE_MAPPING = {} +# Examples: +# METADATA_VALUE_MAPPING = { +# "yaml": {"keywords": lambda value: ', '.join(value)}, # yaml: 'keywords' list -> str +# "nikola": { +# "widgets": lambda value: value.split(', '), # nikola: 'widgets' comma-separated string -> list +# "tags": str.lower # nikola: force lowercase 'tags' (input would be string) +# } +# } + +# Add any post types here that you want to be displayed without a title. +# If your theme supports it, the titles will not be shown. +# TYPES_TO_HIDE_TITLE = [] + +# Additional metadata that is added to a post when creating a new_post +# ADDITIONAL_METADATA = {} + +# Nikola supports Twitter Card summaries, but they are disabled by default. +# They make it possible for you to attach media to Tweets that link +# to your content. +# +# Uncomment and modify to following lines to match your accounts. +# Images displayed come from the `previewimage` meta tag. +# You can specify the card type by using the `card` parameter in TWITTER_CARD. +# TWITTER_CARD = { +# # 'use_twitter_cards': True, # enable Twitter Cards +# # 'card': 'summary', # Card type, you can also use 'summary_large_image', +# # see https://dev.twitter.com/cards/types +# # 'site': '@website', # twitter nick for the website +# # 'creator': '@username', # Username for the content creator / author. +# } + +# Bundle JS and CSS into single files to make site loading faster in a HTTP/1.1 +# environment but is not recommended for HTTP/2.0 when caching is used. +# Defaults to True. +# USE_BUNDLES = True + +# Plugins you don't want to use. Be careful :-) +# DISABLED_PLUGINS = ["render_galleries"] + +# Special settings to disable only parts of the indexes plugin. +# Use with care. +DISABLE_INDEXES = True +# DISABLE_MAIN_ATOM_FEED = False +# DISABLE_MAIN_RSS_FEED = False + +# Add the absolute paths to directories containing plugins to use them. +# For example, the `plugins` directory of your clone of the Nikola plugins +# repository. +# EXTRA_PLUGINS_DIRS = [] + +# Add the absolute paths to directories containing themes to use them. +# For example, the `v7` directory of your clone of the Nikola themes +# repository. +# EXTRA_THEMES_DIRS = [] + +# List of regular expressions, links matching them will always be considered +# valid by "nikola check -l" +# LINK_CHECK_WHITELIST = [] + +# If set to True, enable optional hyphenation in your posts (requires pyphen) +# Enabling hyphenation has been shown to break math support in some cases, +# use with caution. +# HYPHENATE = False + +# The <hN> tags in HTML generated by certain compilers (reST/Markdown) +# will be demoted by that much (1 → h1 will become h2 and so on) +# This was a hidden feature of the Markdown and reST compilers in the +# past. Useful especially if your post titles are in <h1> tags too, for +# example. +# (defaults to 1.) +# DEMOTE_HEADERS = 1 + +# If you don’t like slugified file names ([a-z0-9] and a literal dash), +# and would prefer to use all the characters your file system allows. +# USE WITH CARE! This is also not guaranteed to be perfect, and may +# sometimes crash Nikola, your web server, or eat your cat. +# USE_SLUGIFY = True + +# If set to True, the tags 'draft', 'mathjax' and 'private' have special +# meaning. If set to False, these tags are handled like regular tags. +USE_TAG_METADATA = False + +# If set to True, a warning is issued if one of the 'draft', 'mathjax' +# and 'private' tags are found in a post. Useful for checking that +# migration was successful. +WARN_ABOUT_TAG_METADATA = False + +# Templates will use those filters, along with the defaults. +# Consult your engine's documentation on filters if you need help defining +# those. +# TEMPLATE_FILTERS = {} + +# Put in global_context things you want available on all your templates. +# It can be anything, data, functions, modules, etc. +GLOBAL_CONTEXT = {} + +# Add functions here and they will be called with template +# GLOBAL_CONTEXT as parameter when the template is about to be +# rendered +GLOBAL_CONTEXT_FILLER = [] diff --git a/nikola/data/samplewebsite/files/favicon.ico b/nikola/data/samplewebsite/files/favicon.ico new file mode 100644 index 0000000000..c4efbcc0ce Binary files /dev/null and b/nikola/data/samplewebsite/files/favicon.ico differ diff --git a/nikola/data/samplewebsite/files/images/nikola.png b/nikola/data/samplewebsite/files/images/nikola.png new file mode 100644 index 0000000000..71a491f837 Binary files /dev/null and b/nikola/data/samplewebsite/files/images/nikola.png differ diff --git a/nikola/data/samplewebsite/galleries/demo/exclude.meta b/nikola/data/samplewebsite/galleries/demo/exclude.meta new file mode 100644 index 0000000000..967e566770 --- /dev/null +++ b/nikola/data/samplewebsite/galleries/demo/exclude.meta @@ -0,0 +1 @@ +tesla2_lg.jpg diff --git a/nikola/data/samplewebsite/galleries/demo/index.txt b/nikola/data/samplewebsite/galleries/demo/index.txt new file mode 100644 index 0000000000..3cb1d02a65 --- /dev/null +++ b/nikola/data/samplewebsite/galleries/demo/index.txt @@ -0,0 +1,4 @@ +.. title: Nikola Tesla + +Some public domain pictures of Nikola Tesla +(copied from `here <https://kerryr.net/pioneers/gallery/tesla.htm>`_) diff --git a/nikola/data/samplewebsite/galleries/demo/metadata.sample.yml b/nikola/data/samplewebsite/galleries/demo/metadata.sample.yml new file mode 100644 index 0000000000..9f89f33447 --- /dev/null +++ b/nikola/data/samplewebsite/galleries/demo/metadata.sample.yml @@ -0,0 +1,13 @@ +--- +name: tesla_tower1_lg.jpg +caption: Wardenclyffe Tower +built_in: 1904 +order: 2 +--- +name: tesla4_lg.jpg +order: 0 +--- +name: tesla_conducts_lg.webp +caption: Nikola Tesla conducts electricity +order: 1 +--- diff --git a/nikola/data/samplewebsite/galleries/demo/tesla2_lg.jpg b/nikola/data/samplewebsite/galleries/demo/tesla2_lg.jpg new file mode 100644 index 0000000000..43ea5db349 Binary files /dev/null and b/nikola/data/samplewebsite/galleries/demo/tesla2_lg.jpg differ diff --git a/nikola/data/samplewebsite/galleries/demo/tesla4_lg.jpg b/nikola/data/samplewebsite/galleries/demo/tesla4_lg.jpg new file mode 100644 index 0000000000..9274950046 Binary files /dev/null and b/nikola/data/samplewebsite/galleries/demo/tesla4_lg.jpg differ diff --git a/nikola/data/samplewebsite/galleries/demo/tesla_conducts_lg.webp b/nikola/data/samplewebsite/galleries/demo/tesla_conducts_lg.webp new file mode 100644 index 0000000000..084bfb3ea0 Binary files /dev/null and b/nikola/data/samplewebsite/galleries/demo/tesla_conducts_lg.webp differ diff --git a/nikola/data/samplewebsite/galleries/demo/tesla_lightning1_lg.jpg b/nikola/data/samplewebsite/galleries/demo/tesla_lightning1_lg.jpg new file mode 100644 index 0000000000..3c12b0e949 Binary files /dev/null and b/nikola/data/samplewebsite/galleries/demo/tesla_lightning1_lg.jpg differ diff --git a/nikola/data/samplewebsite/galleries/demo/tesla_lightning2_lg.jpg b/nikola/data/samplewebsite/galleries/demo/tesla_lightning2_lg.jpg new file mode 100644 index 0000000000..8355d861f4 Binary files /dev/null and b/nikola/data/samplewebsite/galleries/demo/tesla_lightning2_lg.jpg differ diff --git a/nikola/data/samplewebsite/galleries/demo/tesla_tower1_lg.jpg b/nikola/data/samplewebsite/galleries/demo/tesla_tower1_lg.jpg new file mode 100644 index 0000000000..7d8b95bf40 Binary files /dev/null and b/nikola/data/samplewebsite/galleries/demo/tesla_tower1_lg.jpg differ diff --git a/nikola/data/samplewebsite/images/frontispiece.jpg b/nikola/data/samplewebsite/images/frontispiece.jpg new file mode 100644 index 0000000000..0baf37139d Binary files /dev/null and b/nikola/data/samplewebsite/images/frontispiece.jpg differ diff --git a/nikola/data/samplewebsite/images/illus_001.jpg b/nikola/data/samplewebsite/images/illus_001.jpg new file mode 100644 index 0000000000..c8acdcf548 Binary files /dev/null and b/nikola/data/samplewebsite/images/illus_001.jpg differ diff --git a/nikola/data/samplewebsite/listings/hello.py b/nikola/data/samplewebsite/listings/hello.py new file mode 100644 index 0000000000..5535df8bbf --- /dev/null +++ b/nikola/data/samplewebsite/listings/hello.py @@ -0,0 +1,12 @@ +#!/usr/bin/python + +import sys + + +def hello(name='world'): + greeting = "hello " + name + print(greeting) + + +if __name__ == "__main__": + hello(*sys.argv[1:]) diff --git a/nikola/data/samplewebsite/pages/about.rst b/nikola/data/samplewebsite/pages/about.rst new file mode 100644 index 0000000000..b123c89aba --- /dev/null +++ b/nikola/data/samplewebsite/pages/about.rst @@ -0,0 +1,17 @@ +.. title: About us +.. slug: about +.. date: 1970-01-01 00:00:00 UTC +.. tags: +.. link: +.. description: demo about us page + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non nunc turpis. +Phasellus a ullamcorper leo. Sed fringilla dapibus orci eu ornare. Quisque +gravida quam a mi dignissim consequat. Morbi sed iaculis mi. Vivamus ultrices +mattis euismod. Mauris aliquet magna eget mauris volutpat a egestas leo rhoncus. +In hac habitasse platea dictumst. Ut sed mi arcu. Nullam id massa eu orci +convallis accumsan. Nunc faucibus sodales justo ac ornare. In eu congue eros. +Pellentesque iaculis risus urna. Proin est lorem, scelerisque non elementum at, +semper vel velit. Phasellus consectetur orci vel tortor tempus imperdiet. Class +aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos +himenaeos. \ No newline at end of file diff --git a/nikola/data/samplewebsite/pages/contact.rst b/nikola/data/samplewebsite/pages/contact.rst new file mode 100644 index 0000000000..eb929c480e --- /dev/null +++ b/nikola/data/samplewebsite/pages/contact.rst @@ -0,0 +1,17 @@ +.. title: Contact us +.. slug: contact +.. date: 1970-01-01 00:00:00 UTC +.. tags: +.. link: +.. description: demo Contact page + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non nunc turpis. +Phasellus a ullamcorper leo. Sed fringilla dapibus orci eu ornare. Quisque +gravida quam a mi dignissim consequat. Morbi sed iaculis mi. Vivamus ultrices +mattis euismod. Mauris aliquet magna eget mauris volutpat a egestas leo rhoncus. +In hac habitasse platea dictumst. Ut sed mi arcu. Nullam id massa eu orci +convallis accumsan. Nunc faucibus sodales justo ac ornare. In eu congue eros. +Pellentesque iaculis risus urna. Proin est lorem, scelerisque non elementum at, +semper vel velit. Phasellus consectetur orci vel tortor tempus imperdiet. Class +aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos +himenaeos. \ No newline at end of file diff --git a/nikola/data/samplewebsite/pages/features.rst b/nikola/data/samplewebsite/pages/features.rst new file mode 100644 index 0000000000..2319a678e5 --- /dev/null +++ b/nikola/data/samplewebsite/pages/features.rst @@ -0,0 +1,17 @@ +.. title: Features +.. slug: feature +.. date: 1970-01-01 00:00:00 UTC +.. tags: +.. link: +.. description: demo feature page + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non nunc turpis. +Phasellus a ullamcorper leo. Sed fringilla dapibus orci eu ornare. Quisque +gravida quam a mi dignissim consequat. Morbi sed iaculis mi. Vivamus ultrices +mattis euismod. Mauris aliquet magna eget mauris volutpat a egestas leo rhoncus. +In hac habitasse platea dictumst. Ut sed mi arcu. Nullam id massa eu orci +convallis accumsan. Nunc faucibus sodales justo ac ornare. In eu congue eros. +Pellentesque iaculis risus urna. Proin est lorem, scelerisque non elementum at, +semper vel velit. Phasellus consectetur orci vel tortor tempus imperdiet. Class +aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos +himenaeos. \ No newline at end of file diff --git a/nikola/data/samplewebsite/pages/index.rst b/nikola/data/samplewebsite/pages/index.rst new file mode 100644 index 0000000000..144d105d56 --- /dev/null +++ b/nikola/data/samplewebsite/pages/index.rst @@ -0,0 +1,31 @@ +.. title: Welcome To The Fake Site +.. slug: index +.. date: 1970-01-01 00:00:00 UTC +.. tags: +.. link: +.. description: Fake Site version 1, welcome page! + + +.. class:: jumbotron col-md-6 + +.. admonition:: This is a Fake Site + + It pretends to be about things, but is really just an example. + + .. raw:: html + + <a href="https://getnikola.com/" class="btn btn-primary btn-lg">Click Me!</a> + + +.. class:: col-md-5 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non nunc turpis. +Phasellus a ullamcorper leo. Sed fringilla dapibus orci eu ornare. Quisque +gravida quam a mi dignissim consequat. Morbi sed iaculis mi. Vivamus ultrices +mattis euismod. Mauris aliquet magna eget mauris volutpat a egestas leo rhoncus. +In hac habitasse platea dictumst. Ut sed mi arcu. Nullam id massa eu orci +convallis accumsan. Nunc faucibus sodales justo ac ornare. In eu congue eros. +Pellentesque iaculis risus urna. Proin est lorem, scelerisque non elementum at, +semper vel velit. Phasellus consectetur orci vel tortor tempus imperdiet. Class +aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos +himenaeos. \ No newline at end of file diff --git a/nikola/data/samplewebsite/templates/book.tmpl b/nikola/data/samplewebsite/templates/book.tmpl new file mode 100644 index 0000000000..d808729666 --- /dev/null +++ b/nikola/data/samplewebsite/templates/book.tmpl @@ -0,0 +1,117 @@ +## -*- coding: utf-8 -*- +<%namespace name="helper" file="post_helper.tmpl"/> +<%namespace name="pheader" file="post_header.tmpl"/> +<%namespace name="comments" file="comments_helper.tmpl"/> +<%inherit file="post.tmpl"/> + +<%block name="extra_head"> + ${parent.extra_head()} + <link href='https://fonts.googleapis.com/css?family=Gentium+Book+Basic' rel='stylesheet' type='text/css'> + <style> + .smallcaps { + font-variant: small-caps; + } + .chapter { + width: 100%; + padding: 10px; + -webkit-column-gap: 40px; + -moz-column-gap: 40px; + column-gap: 40px; + -webkit-column-width: 400px; + -moz-column-width: 400px; + column-width: 400px; + -webkit-column-count: 2; + -moz-column-count: 2; + column-count: 2; + -webkit-column-rule: 1px solid #ddd; + -moz-column-rule: 1px solid #ddd; + column-rule: 1px solid #ddd; + height: 90vh; + font-family: 'Gentium Book Basic', serif; + color: #2d2e2e; + font-weight: 500; + } + div.frame { + overflow: hidden; + padding: 0; + margin: 0; + } + div.scrolling-cont { + overflow-x: scroll; + padding: 0; + margin: 0; + } + h1, h2, h3, h4 { + text-align: center; + width: 100%; + font-family: 'Gentium Book Basic', serif; + font-size: 120%; + font-weight: 900; + } + h1 { + font-size: 150%; + } + .subtitle { + text-align: center; + width: 100%; + } + .bookfig { + width: 100%; + height: auto; + max-width: 100%; + max-height: 100%; + } + div.figure { + height: 88vh; + margin: 0; + } + div.topic { + margin: 0; + } + div.section > p { + text-indent: 1em; + margin-bottom: 0; + text-align: justify; + } + </style> +</%block> + +<%block name="content"> +<article class="storypage" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div class="frame"> + <div class="scrolling-cont" id="scrolling-cont" name="scrolling-cont"> + <div class="e-content entry-content chapter" itemprop="articleBody text"> + <h1>${post.title()}</h1> + ${post.text()} + </div> + </div> + </div> +</article> +</%block> + +<%block name="extra_js"> + <script src="https://cdnjs.cloudflare.com/ajax/libs/Flowtype.js/1.1.0/flowtype.min.js"></script> + <script> + $('#scrolling-cont').flowtype({ + minimum: 500, + maximum: 1200, + minFont: 20, + maxFont: 40, + fontRatio: 50 + }); + $(document).ready(function() { + var elem = $('#scrolling-cont'); + elem.click(function(event) { + var x1 = elem.position().left; + var pw = elem.width() + 20; + var x2 = event.pageX; + if (x2 - x1 < pw / 2) { + pw = -pw; + } + elem.animate({ + scrollLeft: '+=' + pw + }, 500) + }); + }); + </script> +</%block> diff --git a/nikola/data/symlinked.txt b/nikola/data/symlinked.txt index 477335edea..b92ef5613f 100644 --- a/nikola/data/symlinked.txt +++ b/nikola/data/symlinked.txt @@ -15,6 +15,20 @@ nikola/data/samplesite/pages/manual.rst nikola/data/samplesite/pages/path_handlers.rst nikola/data/samplesite/pages/social_buttons.rst nikola/data/samplesite/pages/theming.rst +nikola/data/sampleblog/pages/creating-a-theme.rst +nikola/data/sampleblog/pages/extending.rst +nikola/data/sampleblog/pages/internals.rst +nikola/data/sampleblog/pages/manual.rst +nikola/data/sampleblog/pages/path_handlers.rst +nikola/data/sampleblog/pages/social_buttons.rst +nikola/data/sampleblog/pages/theming.rst +nikola/data/samplewebsite/pages/creating-a-theme.rst +nikola/data/samplewebsite/pages/extending.rst +nikola/data/samplewebsite/pages/internals.rst +nikola/data/samplewebsite/pages/manual.rst +nikola/data/samplewebsite/pages/path_handlers.rst +nikola/data/samplewebsite/pages/social_buttons.rst +nikola/data/samplewebsite/pages/theming.rst nikola/data/symlink-test-link.txt nikola/data/themes/base/assets/css/baguetteBox.min.css nikola/data/themes/base/assets/js/baguetteBox.min.js diff --git a/nikola/plugins/command/init.py b/nikola/plugins/command/init.py index df68e0e4f1..54f478ab63 100644 --- a/nikola/plugins/command/init.py +++ b/nikola/plugins/command/init.py @@ -266,13 +266,40 @@ class CommandInit(Command): 'default': False, 'type': bool, 'help': "Create a site filled with example data.", + }, + { + 'name': 'blog', + 'long': 'blog', + 'short': 'b', + 'default': False, + 'type': bool, + 'help': "Create a blog with two demo posts.", + }, + { + 'name': 'website', + 'long': 'website', + 'short': 'w', + 'default': False, + 'type': bool, + 'help': "Create a website filled with sample data.", } ] + # @classmethod + # def copy_sample_site(cls, target): + # """Copy sample site data to target directory.""" + # src = pkg_resources_path('nikola', os.path.join('data', 'samplesite')) + # shutil.copytree(src, target) + @classmethod - def copy_sample_site(cls, target): + def copy_sample_site(cls, options, target): """Copy sample site data to target directory.""" - src = pkg_resources_path('nikola', os.path.join('data', 'samplesite')) + if options.get("demo"): + src = pkg_resources_path('nikola', os.path.join('data', 'samplesite')) + elif options.get("blog"): + src = pkg_resources_path('nikola', os.path.join('data', 'sampleblog')) + elif options.get("website"): + src = pkg_resources_path('nikola', os.path.join('data', 'samplewebsite')) shutil.copytree(src, target) @staticmethod @@ -495,8 +522,16 @@ def _execute(self, options={}, args=None): target = args[0] except IndexError: target = None + # check if more than 1 option selected + filtered_options = {key: value for key, value in options.items() if value} + if len(filtered_options) != 1: + print("Usage: nikola init [--demo] [--blog] [--website] [--quiet] folder") + print("Select one option among [--demo] [--blog] [--website]. By default [--demo] will be selected.") + print("===================") + options = {key: (key == 'demo') for key in options} + demo = True if options.get('demo') or options.get('blog') or options.get('website') else False if not options.get('quiet'): - st = self.ask_questions(target=target, demo=options.get('demo')) + st = self.ask_questions(target=target, demo=demo) try: if not target: target = st['target'] @@ -504,19 +539,21 @@ def _execute(self, options={}, args=None): pass if not target: - print("Usage: nikola init [--demo] [--quiet] folder") + print("Usage: nikola init [--demo] [--blog] [--website] [--quiet] folder") print(""" Options: -q, --quiet Do not ask questions about config. - -d, --demo Create a site filled with example data.""") + -d, --demo Create a site filled with example data. + -b, --blog Create a blog with two demo posts. + -w, --website Create a website filled with sample data.""") return 1 - if not options.get('demo'): + if not demo: self.create_empty_site(target) LOGGER.info('Created empty site at {0}.'.format(target)) else: if not test_destination(target, True): return 2 - self.copy_sample_site(target) + self.copy_sample_site(options,target) LOGGER.info("A new site with example data has been created at " "{0}.".format(target)) LOGGER.info("See README.txt in that folder for more information.")