jasper2 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +113 -0
  4. data/_data/authors.yml +76 -0
  5. data/_data/tags.yml +16 -0
  6. data/_includes/analytics.html +11 -0
  7. data/_includes/author_pagination.html +13 -0
  8. data/_includes/dynamic_tag_info.html +8 -0
  9. data/_includes/dynamic_title.html +16 -0
  10. data/_includes/facebook.html +1 -0
  11. data/_includes/floating-header.html +28 -0
  12. data/_includes/ghost-logo.html +1 -0
  13. data/_includes/head.html +69 -0
  14. data/_includes/infinity.html +1 -0
  15. data/_includes/location.html +1 -0
  16. data/_includes/navigation.html +6 -0
  17. data/_includes/page-scripts.html +6 -0
  18. data/_includes/point.html +3 -0
  19. data/_includes/post-card-error.html +59 -0
  20. data/_includes/post-card-next.html +53 -0
  21. data/_includes/post-card-previous.html +53 -0
  22. data/_includes/post-card.html +55 -0
  23. data/_includes/post-scripts.html +63 -0
  24. data/_includes/post_pagination.html +13 -0
  25. data/_includes/rss.html +1 -0
  26. data/_includes/site-nav.html +27 -0
  27. data/_includes/subscribe-form.html +9 -0
  28. data/_includes/tag_pagination.html +13 -0
  29. data/_includes/twitter.html +1 -0
  30. data/_includes/website.html +1 -0
  31. data/_layouts/author.html +64 -0
  32. data/_layouts/default.html +139 -0
  33. data/_layouts/error.html +1 -0
  34. data/_layouts/feed.xml +113 -0
  35. data/_layouts/page.html +48 -0
  36. data/_layouts/post.html +196 -0
  37. data/_layouts/tag.html +42 -0
  38. data/_plugins/jekyll-autgenerator.rb +76 -0
  39. data/_plugins/jekyll-capitalize-all.rb +11 -0
  40. data/_plugins/jekyll-tagsgenerator.rb +70 -0
  41. data/_posts/1863-11-19-gettysburg-address.md +18 -0
  42. data/_posts/1865-11-26-down-the-rabbit-hole.md +62 -0
  43. data/_posts/1871-03-18-looking-glass-house.md +41 -0
  44. data/_posts/1912-07-24-out-to-sea.md +88 -0
  45. data/_posts/1948-12-12-the-purpose-of-education.md +26 -0
  46. data/_posts/1963-08-28-i-have-a-dream.md +103 -0
  47. data/_posts/2012-09-01-a-full-and-comprehensive-style-test.html +424 -0
  48. data/_posts/2014-08-12-the-businessman-and-fisherman.md +48 -0
  49. data/_posts/2017-07-27-advanced-markdown.html +57 -0
  50. data/_posts/2017-07-27-managing-users.html +24 -0
  51. data/_posts/2017-07-27-private-sites.html +19 -0
  52. data/_posts/2017-07-27-the-editor.html +55 -0
  53. data/_posts/2017-07-27-themes.html +30 -0
  54. data/_posts/2017-07-27-using-tags.html +41 -0
  55. data/_posts/2017-07-27-welcome.md +28 -0
  56. data/about/index.md +17 -0
  57. data/assets/built/global.css +2 -0
  58. data/assets/built/global.css.map +1 -0
  59. data/assets/built/screen.css +2 -0
  60. data/assets/built/screen.css.map +1 -0
  61. data/assets/built/screen.edited.css +2 -0
  62. data/assets/built/screen.edited.css.map +1 -0
  63. data/assets/built/syntax.css +2 -0
  64. data/assets/built/syntax.css.map +1 -0
  65. data/assets/css/.csscomb.json +237 -0
  66. data/assets/css/csscomb.json +240 -0
  67. data/assets/css/global.css +491 -0
  68. data/assets/css/screen.css +1928 -0
  69. data/assets/css/screen.edited.css +152 -0
  70. data/assets/css/syntax.css +66 -0
  71. data/assets/images/abraham.jpg +0 -0
  72. data/assets/images/advanced.jpg +0 -0
  73. data/assets/images/bear.jpg +0 -0
  74. data/assets/images/blog-cover.jpg +0 -0
  75. data/assets/images/blog-icon.png +0 -0
  76. data/assets/images/bus.jpg +0 -0
  77. data/assets/images/design.jpg +0 -0
  78. data/assets/images/edgar.gif +0 -0
  79. data/assets/images/fables.jpg +0 -0
  80. data/assets/images/favicon.png +0 -0
  81. data/assets/images/ghost-logo.svg +1 -0
  82. data/assets/images/ghost.png +0 -0
  83. data/assets/images/grapes.jpg +0 -0
  84. data/assets/images/hannah-cover.jpg +0 -0
  85. data/assets/images/hannah.jpg +0 -0
  86. data/assets/images/john.jpg +0 -0
  87. data/assets/images/lewis.jpeg +0 -0
  88. data/assets/images/locked.jpg +0 -0
  89. data/assets/images/martin.jpg +0 -0
  90. data/assets/images/piano.jpg +0 -0
  91. data/assets/images/sky.jpg +0 -0
  92. data/assets/images/speeches.jpg +0 -0
  93. data/assets/images/summit.jpg +0 -0
  94. data/assets/images/tags.jpg +0 -0
  95. data/assets/images/team.jpg +0 -0
  96. data/assets/images/water.jpg +0 -0
  97. data/assets/images/waves.jpg +0 -0
  98. data/assets/images/welcome.jpg +0 -0
  99. data/assets/images/writing.jpg +0 -0
  100. data/assets/js/infinitescroll.js +83 -0
  101. data/assets/js/jquery.fitvids.js +89 -0
  102. data/assets/screenshot-desktop.jpg +0 -0
  103. data/assets/screenshot-mobile.jpg +0 -0
  104. metadata +222 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bf8320be4dd836a1c4be74b5b3662f2523d9ecafbfeebd495febd99c161ad8d7
4
+ data.tar.gz: 340601c09b2572e84b5a8c2039aa418150b04f33c0cac68eadc1c0ddce8f1c5f
5
+ SHA512:
6
+ metadata.gz: e230b23c20dd806ea121a64676971d3c8c39eaf0b60584eecf205e521bf9c3e5ee659e77ce7b2f97b88619071f967b97fcfb6d13879b18c5dc7b79e5f38ee952
7
+ data.tar.gz: 963b3c2bb703f12120b5c5801d923c4dd70a0b791a19c295c62f402db780784a887bae2d14df1f74589d225f84eb3f3f20e5f28a6d9f025ede2b2689677fdf6d
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018-2021 Fábio Madeira
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,113 @@
1
+ ## Jasper2
2
+
3
+ [![Build Status](https://github.com/jekyller/jasper2/actions/workflows/jekyll_build.yml/badge.svg)](https://github.com/jekyller/jasper2/actions/workflows/jekyll_build.yml)
4
+ [![Ruby](https://img.shields.io/badge/ruby-2.6.3-blue.svg?style=flat)](http://travis-ci.org/jekyller/jasper2)
5
+ [![Jekyll](https://img.shields.io/badge/jekyll-3.9.0-blue.svg?style=flat)](http://travis-ci.org/jekyller/jasper2)
6
+
7
+ This is a full-featured port of Ghost's default theme [Casper](https://github.com/tryghost/casper)
8
+ [v2.1.9](https://github.com/TryGhost/Casper/releases/tag/2.1.9) for [Jekyll](https://jekyllrb.com/) / [GitHub Pages](https://pages.github.com/).
9
+
10
+ ## Live Demo
11
+
12
+ [Ghost's Casper](https://demo.ghost.io) // [Jasper2](https://jekyller.github.io/jasper2)
13
+
14
+ ![home page](https://raw.githubusercontent.com/jekyller/jasper2/master/assets/screenshot-desktop.jpg)
15
+
16
+
17
+ ## Features
18
+
19
+ * Out of the box support for multiple authors (via `_data/authors.yml`)
20
+ * Full author information including: picture, bio, website, twitter, facebook, etc.
21
+ * Tag description(s) and personalised covers (via `_data/tags.yml`)
22
+ * Related posts view at the bottom of each post
23
+ * All Ghost default pages: Author page(s), Tag page(s), About page(s), 404, etc.
24
+ * Pagination (infinite scrolling or standard pagination, i.e. posts across multiple pages)
25
+ * Atom Feeds by [Jekyll-feed](https://github.com/jekyll/jekyll-feed)
26
+ * Toggleable subscribe button (requires an external service)
27
+ * Code Syntax Highlight with [highlight.js](https://highlightjs.org/)
28
+ * Support for Google Analytics tracking
29
+ * Support for Disqus comments (not Ghost standard)
30
+
31
+
32
+ ## Getting Started
33
+
34
+ ### Deployment
35
+
36
+ There are several alternatives to building and deploying the site:
37
+
38
+ 1. build the site with [GitHub Actions](https://github.com/features/actions) which pushes
39
+ the resulting files (the contents of `_site/` or `../jasper2-pages/`)
40
+ to the *gh-pages* branch. This is the approach that is currently used. See
41
+ [jekyll_build.yml](.github/workflows/jekyll_build.yml) for more details.
42
+
43
+ 2. generate the site locally (more details below) and push the resulting
44
+ HTML to a Github repository, that GitHub Pages then host;
45
+
46
+ 3. build the site with [travis-ci](https://travis-ci.org/) (with goodies from
47
+ [jekyll-travis](https://github.com/mfenner/jekyll-travis)) automatically pushing the
48
+ generated HTML files to a *gh-pages* branch.
49
+
50
+ 4. deploy the static website with Jekyll-compatible hosters, such as https://www.netlify.com/, that allow for deployment from the Github repo and publish the website using CDNs. Netlify has a free starter offer.
51
+
52
+ For option **2)** simply clone this repository (*master branch*), and then run
53
+ `bundle exec jekyll serve` inside the directory. Upload the resulting `_site/` (or `../jasper2-pages/`)
54
+ contents to your repository (*master branch* if uploading as your personal page
55
+ (e.g. username.github.io) or *gh-pages branch* if uploading as a project page
56
+ (as for the [demo](https://github.com/jekyller/jasper2/tree/gh-pages)).
57
+
58
+ For option **3)** you will need to set up travis-ci for your personal fork. Briefly all you
59
+ need then is to change your details in *[\_config.yml](_config.yml)* so that you can push
60
+ to your github repo. You will also need to generate a secure key to add to your
61
+ *[.travis.yml](.travis.yml)* (you can find more info on how to do it in that file).
62
+ Also make sure you read the documentation from
63
+ [jekyll-travis](https://github.com/mfenner/jekyll-travis). This approach has clear
64
+ advantages in that you simply push your file changes to GitHub and all the HTML files
65
+ are generated for you and pushed to *gh-pages*. Also you get to know if everything is
66
+ still fine with your site builds. Don't hesitate to contact me if you still have any
67
+ issues (see below about issue tracking).
68
+
69
+ ### Author Pages
70
+
71
+ In order to properly generate author pages you need to rename the field *author* in the
72
+ front matter of every post to match that of your each author's *username* as defined
73
+ in the *[\_data/authors.yml](_data/authors.yml)* file.
74
+ With the latest update, multiple author blogs are now supported out of the box.
75
+
76
+ ### Compiling Styles
77
+
78
+ Following on the way Casper styles are compiled as [described here](https://github.com/tryghost/casper#development):
79
+
80
+ Jasper2 styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need Node and Gulp installed globally. After that, from the theme's root directory:
81
+
82
+ ```bash
83
+ $ npm install
84
+ $ gulp
85
+ ```
86
+
87
+ Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically.
88
+
89
+ ## Issues and Contributing
90
+
91
+ This install builds well with Ruby v2.6.3 and Jekyll v3.9.0. If you run into any problems
92
+ please log them on the [issue tracker](https://github.com/jekyller/jasper2/issues).
93
+
94
+ Feel free pull-request your patches and fixes.
95
+
96
+ ## Thanks
97
+
98
+ Many thanks to the Ghost team for all the design work. Also many thanks to all contributors,
99
+ that help keeping the project alive and updated :smile:
100
+
101
+
102
+ ## Copyright & License
103
+
104
+ Same licence as the one provided by Ghost's team. See Casper's theme [license](GHOST.txt).
105
+
106
+ Copyright (C) 2015-2021 - Released under the MIT License.
107
+
108
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
109
+
110
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
111
+
112
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
113
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/_data/authors.yml ADDED
@@ -0,0 +1,76 @@
1
+ ghost:
2
+ username: ghost
3
+ name: Ghost
4
+ url_full: http://jekyller.github.io/jasper2/
5
+ url: jekyller.github.io/jasper2
6
+ bio: The professional publishing platform
7
+ picture: assets/images/ghost.png
8
+ facebook: ghost
9
+ twitter: tryghost
10
+ cover: False
11
+ hannah:
12
+ username: hannah
13
+ name: Hannah Wolfe
14
+ location: London, UK
15
+ url_full: http://hannah.wf/
16
+ url: hannah.wf
17
+ bio: Hannah is the co-founder and lead developer at Ghost. She spends her days looking after Ghost's developer community, tracking down bugs & ensuring Ghost(Pro) is a happy place.
18
+ picture: assets/images/hannah.jpg
19
+ facebook: False
20
+ twitter: erisds
21
+ cover: assets/images/hannah-cover.jpg
22
+ john:
23
+ username: john
24
+ name: John O'Nolan
25
+ location: On a plane
26
+ url_full: http://john.onolan.org/
27
+ url: john.onolan.org
28
+ bio: Founder at Ghost.org. Writes about open source, startup life, non-profits, and publishing platforms. Travels the world with a bag of kites.
29
+ picture: assets/images/john.jpg
30
+ facebook: False
31
+ twitter: False
32
+ cover: False
33
+ lewis:
34
+ username: lewis
35
+ name: Lewis Carroll
36
+ location: Cheshire, England
37
+ url_full: False
38
+ url: False
39
+ bio: My real name is Charles Lutwidge Dodgson, but people call me Lewis. I'm an English writer, mathematician, logician, Anglican deacon and photographer. People know me best for writing about Alice.
40
+ picture: assets/images/lewis.jpeg
41
+ facebook: False
42
+ twitter: False
43
+ cover: False
44
+ abraham:
45
+ username: abraham
46
+ name: Abraham Lincoln
47
+ location: Kentucky, USA
48
+ url_full: False
49
+ url: False
50
+ bio: I was the 16th president of the USA until I was assassinated in April of 1865. I led the US through its Civil War - its bloodiest and greatest moral, constitutional and political crisis.
51
+ picture: assets/images/abraham.jpg
52
+ facebook: False
53
+ twitter: False
54
+ cover: False
55
+ edgar:
56
+ username: edgar
57
+ name: Edgar Rice Burroughs
58
+ location: Chicago, Illinois
59
+ url_full: False
60
+ url: False
61
+ bio: I'm an American novelist, best known for my work writing about a brave jungle hero called Tarzan and his muse, Jane.
62
+ picture: assets/images/edgar.gif
63
+ facebook: False
64
+ twitter: False
65
+ cover: False
66
+ martin:
67
+ username: martin
68
+ name: Martin Luther King
69
+ location: Memphis, Tennessee
70
+ url_full: False
71
+ url: False
72
+ bio: An American pastor, activist, humanitarian. People know me for leading the African-American Civil Rights movement using nonviolent civil disobedience.
73
+ picture: assets/images/martin.jpg
74
+ facebook: False
75
+ twitter: False
76
+ cover: False
data/_data/tags.yml ADDED
@@ -0,0 +1,16 @@
1
+ speeches:
2
+ name: speeches
3
+ description: Some of the greatest words ever spoken.
4
+ cover: assets/images/speeches.jpg
5
+ fiction:
6
+ name: fiction
7
+ description: False
8
+ cover: False
9
+ fables:
10
+ name: fables
11
+ description: A series of short stories that make you think.
12
+ cover: assets/images/fables.jpg
13
+ getting-started:
14
+ name: getting-started
15
+ description: False
16
+ cover: False
@@ -0,0 +1,11 @@
1
+ <!-- Google Analytics Tracking code -->
2
+ <script>
3
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
4
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
5
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
7
+
8
+ ga('create', '{{ site.google_analytics }}', 'auto');
9
+ ga('send', 'pageview');
10
+
11
+ </script>
@@ -0,0 +1,13 @@
1
+ <nav class="pagination" role="pagination">
2
+ {% if paginator.previous_page %}
3
+ {% if paginator.previous_page == 1 %}
4
+ <a class="newer-posts" href="{{ site.baseurl }}author/{{ page.author }}" title="Previous Page">&laquo; Newer Posts</a>
5
+ {% else %}
6
+ <a class="newer-posts" href="{{ site.baseurl }}author/{{ page.author }}/page{{ paginator.previous_page }}/" title="Previous Page">&laquo; Newer Posts</a>
7
+ {% endif %}
8
+ {% endif %}
9
+ <span class="page-number"> Page {{ paginator.page }} of {{ paginator.total_pages }} </span>
10
+ {% if paginator.next_page %}
11
+ <a class="older-posts" href="{{ site.baseurl }}author/{{ page.author }}/page{{ paginator.next_page }}/" title="Next Page">Older Posts &raquo;</a>
12
+ {% endif %}
13
+ </nav>
@@ -0,0 +1,8 @@
1
+ <!-- dynamically loading backgrounds for tags, descriptions and page titles -->
2
+ {% assign decoded_url = page.url | url_decode %}
3
+ {% for tag in site.data.tags %}
4
+ {% if decoded_url contains tag[1].name %}
5
+ {% assign cover = tag[1].cover %}
6
+ {% assign tag_description = tag[1].description %}
7
+ {% endif %}
8
+ {% endfor %}
@@ -0,0 +1,16 @@
1
+ <!-- dynamically fixing the title for tag/author pages -->
2
+ {% if page.url %}
3
+ {% if page.url contains "tag/" %}
4
+ {% assign title = page.url | remove: 'tag' | remove: '/' | url_decode | replace: '-', ' ' | capitalizeall %}
5
+ {% elsif page.url contains "author/" %}
6
+ {% assign username = page.url | remove: 'author' | remove: '/' | replace: '-', ' ' | remove: ' ' %}
7
+ {% for author in site.data.authors %}
8
+ {% if author[1].username == username %}
9
+ {% assign title = author[1].name %}
10
+ {% endif %}
11
+ {% endfor %}
12
+ {% endif %}
13
+ {% endif %}
14
+ {% if title %}
15
+ {% assign title = title | append: ' - ' | append: site.title %}
16
+ {% endif %}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M19 6h5V0h-5c-3.86 0-7 3.14-7 7v3H8v6h4v16h6V16h5l1-6h-6V7c0-.542.458-1 1-1z"/></svg>
@@ -0,0 +1,28 @@
1
+ <div class="floating-header">
2
+ <div class="floating-header-logo">
3
+ <a href="{{ site.url }}{{ site.baseurl }}">
4
+ {% if site.logo_dark %}
5
+ <img src="{{ site.baseurl }}{{ site.logo_dark }}" alt="{{ site.title }} icon" />
6
+ {% endif %}
7
+ <span>{{ site.title }}</span>
8
+ </a>
9
+ </div>
10
+ <span class="floating-header-divider">&mdash;</span>
11
+ <div class="floating-header-title">{{ page.title }}</div>
12
+ <div class="floating-header-share">
13
+ <div class="floating-header-share-label">Share this {% include point.html %}</div>
14
+ <a class="floating-header-share-tw" href="https://twitter.com/share?text={{ page.title | url_encode }}&amp;url={{ site.production_url }}{{ page.url | remove_first: '/' }}"
15
+ onclick="window.open(this.href, 'share-twitter', 'width=550,height=235');return false;">
16
+ {% include twitter.html %}
17
+ </a>
18
+ <a class="floating-header-share-fb" href="https://www.facebook.com/sharer/sharer.php?u={{ site.production_url }}{{ page.url | remove_first: '/' }}"
19
+ onclick="window.open(this.href, 'share-facebook','width=580,height=296');return false;">
20
+ {% include facebook.html %}
21
+ </a>
22
+ </div>
23
+ <progress class="progress" value="0">
24
+ <div class="progress-container">
25
+ <span class="progress-bar"></span>
26
+ </div>
27
+ </progress>
28
+ </div>
@@ -0,0 +1 @@
1
+ <svg class="ghost-svg" viewBox="0 0 493 161" xmlns="http://www.w3.org/2000/svg"><title>Ghost Logo</title><g fill="none" fill-rule="evenodd"><path d="M328.52 37.36c-27.017 0-40.97 19.323-40.97 43.16 0 23.837 13.61 43.162 40.97 43.162s40.968-19.325 40.968-43.163c0-23.84-13.954-43.16-40.97-43.16zm20.438 43.237c-.02 15.328-5.126 27.743-20.44 27.743-15.312 0-20.42-12.414-20.435-27.743v-.078c.016-15.33 5.124-27.74 20.437-27.74 15.312 0 20.42 12.41 20.438 27.74v.07zM207.553 5.19c0-1.103.885-2.124 1.984-2.282 0 0 13.577-1.95 14.784-2.115 1.37-.187 3.19.798 3.19 2.744v44.236c3.23-3.105 6.79-5.608 10.66-7.515 3.88-1.906 8.43-2.86 13.66-2.86 4.53 0 8.53.776 12.03 2.33 3.5 1.55 6.43 3.73 8.77 6.533 2.34 2.81 4.12 6.16 5.33 10.05 1.21 3.9 1.82 8.19 1.82 12.87v51.35c0 1.1-.89 2-2 2h-15.95c-1.1 0-2-.9-2-1.99V69.18c0-5.118-1.17-9.08-3.51-11.888-2.35-2.804-5.86-4.207-10.544-4.207-3.45 0-6.677.79-9.69 2.37-3.02 1.58-5.87 3.73-8.564 6.46v58.617c0 1.102-.894 2-2.002 2h-15.94c-1.11 0-2.005-.895-2.005-2V5.188zm244.007 95.327v-43.68h-13.482c-1.1 0-1.742-.87-1.443-1.916l3-10.49c.262-.9.942-1.87 2.308-2.07l9.597-1.35 3.508-23.49c.163-1.09 1.18-2.1 2.274-2.26 0 0 9.192-1.31 10.963-1.58 1.673-.25 3.19.97 3.19 2.81v24.52h17.565c1.106 0 2.002.9 2.002 2.01v11.82c0 1.11-.89 2.01-2.002 2.01h-17.566v43.08c0 6.02 3.623 8.32 7.095 8.32 2.12 0 5.02-1.14 7.19-2.16 1.34-.62 3.41-.16 3.95 1.73l2.45 8.65c.3 1.07-.25 2.37-1.23 2.86 0 0-7.29 4.37-17.06 4.37-13.73 0-22.33-8.08-22.33-23.16zm-44.584-47.74c-7.084 0-12.657 2.476-12.657 8.433 0 7.44 12.01 9.606 20.23 12.64 5.49 2.027 20.24 5.98 20.24 22.016 0 19.48-16 27.807-33.06 27.807-17.06 0-25.4-5.465-25.4-5.465-.96-.527-1.5-1.822-1.2-2.89 0 0 2.1-7.52 2.64-9.386.48-1.68 2.41-2.27 3.64-1.792 4.39 1.712 12.32 4.092 21.28 4.092 9.07 0 13.46-2.803 13.46-8.777 0-7.95-12.26-10.38-20.36-12.967-5.59-1.78-20.36-5.93-20.36-23.566 0-17.373 15.08-25.524 31.2-25.524 13.64 0 23.5 4.69 23.5 4.69 1.01.427 1.58 1.635 1.28 2.698l-2.658 9.357c-.488 1.74-1.898 2.537-3.666 1.957-3.89-1.277-11.2-3.322-18.15-3.322zm-210.313-15.28c-6.695.775-11.472 3.962-14.562 6.93-6.06-4.81-14.49-7.106-23.94-7.106-18.95 0-33.76 9.26-33.76 29.43 0 11.58 4.88 19.56 12.62 24.26-5.75 2.75-9.57 8.59-9.57 14.34 0 9.61 7.5 12.61 7.5 12.61s-13.11 6.44-13.11 19.32c0 16.49 15.01 23.16 33.34 23.16 26.43 0 44.61-11.04 44.61-31.31 0-12.47-9.44-19.36-30.01-20.18-12.2-.48-20.11-.93-22.07-1.58-2.59-.87-3.86-2.96-3.86-5.28 0-2.55 2.08-4.98 5.35-6.65 2.86.516 5.87.768 8.99.768 18.97 0 33.76-9.223 33.76-29.425 0-4.897-.87-9.15-2.46-12.78 2.79-1.506 8.34-2.25 8.34-2.25 1.09-.17 1.975-1.21 1.974-2.31V40.3c0-1.88-1.59-2.955-3.1-2.78zm-49.13 85.132s9.954.38 19.9.84c11.172.52 14.654 2.96 14.654 8.81 0 7.15-9.71 14.1-23.28 14.1-12.88 0-19.314-4.54-19.314-12.08 0-4.33 2.26-9.18 8.04-11.69zm10.66-40.54c-8.978 0-15.983-4.83-15.983-15.35 0-10.53 7.01-15.35 15.983-15.35 8.974 0 15.984 4.81 15.984 15.34 0 10.53-7.002 15.34-15.984 15.34z" fill="#2D3134"/><g opacity=".6" transform="translate(0 36)" fill="#2E3134"><rect x=".209" y="69.017" width="33.643" height="17.014" rx="4"/><rect x="50.672" y="69.017" width="33.622" height="17.014" rx="4"/><rect x=".184" y="34.99" width="84.121" height="17.014" rx="4"/><rect x=".209" y=".964" width="50.469" height="17.013" rx="4"/><rect x="67.494" y=".964" width="16.821" height="17.013" rx="4"/></g></g></svg>
@@ -0,0 +1,69 @@
1
+ <meta name="description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
2
+ <link rel="shortcut icon" href="{{ site.url }}{{ site.baseurl }}{{ site.favicon }}" type="image/png" />
3
+ <link rel="canonical" href="{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}{% endif %}{{ page.url | remove_first: '/' }}" />
4
+ <meta name="referrer" content="no-referrer-when-downgrade" />
5
+
6
+ {% if page.content and page.current == 'post' or page.current == 'about' %}
7
+ {% assign excerpt = page.content | strip_html | truncatewords: 50, "" %}
8
+ {% endif %} <!--title below is coming from _includes/dynamic_title-->
9
+ <meta property="og:site_name" content="{{ site.title }}" />
10
+ <meta property="og:type" content="website" />
11
+ <meta property="og:title" content="{% if title %}{{ title }}{% elsif page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}" />
12
+ <meta property="og:description" content="{% if excerpt %}{{ excerpt }}{% elsif page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
13
+ <meta property="og:url" content="{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}{% endif %}{{ page.url | remove_first: '/' }}" />
14
+ <meta property="og:image" content="{{ site.url }}{{ site.baseurl }}{% if page.cover %}{{ page.cover }}{% else %}{{ site.cover }}{% endif %}" />
15
+ <meta property="article:publisher" content="https://www.facebook.com/{{ site.facebook }}" />{% if excerpt %}
16
+ <meta property="article:author" content="https://www.facebook.com/{{ site.facebook }}" />
17
+ <meta property="article:published_time" content="{% if page.date %}{{ page.date | date_to_xmlschema }}{% elsif post.date %}{{ post.date | date_to_xmlschema }}{% endif %}" />
18
+ <meta property="article:modified_time" content="{% if page.date %}{{ page.date | date_to_xmlschema }}{% elsif post.date %}{{ post.date | date_to_xmlschema }}{% endif %}" />{% endif %}{% if page.tags.size > 0 %}
19
+ <meta property="article:tag" content="{{ page.tags | first | capitalizeall }}" />{% endif %}
20
+ <meta name="twitter:card" content="summary_large_image" />
21
+ <meta name="twitter:title" content="{% if title %}{{ title }}{% elsif page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}" />
22
+ <meta name="twitter:description" content="{% if excerpt %}{{ excerpt }}{% elsif page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
23
+ <meta name="twitter:url" content="{{ site.url }}{{ site.baseurl }}" />
24
+ <meta name="twitter:image" content="{{ site.url }}{{ site.baseurl }}{% if page.cover %}{{ page.cover }}{% else %}{{ site.cover }}{% endif %}" />
25
+ <meta name="twitter:label1" content="Written by" />
26
+ <meta name="twitter:data1" content="{{ site.title }}" />{% if page.tags.size > 0 %}
27
+ <meta name="twitter:label2" content="Filed under" />
28
+ <meta name="twitter:data2" content="{{ page.tags | first | capitalizeall }}" />{% endif %}
29
+ <meta name="twitter:site" content="@{{ site.twitter }}" />
30
+ <meta name="twitter:creator" content="@{{ site.twitter }}" />{% if excerpt %}
31
+ <meta property="og:image:width" content="1400" />
32
+ <meta property="og:image:height" content="933" />{% else %}
33
+ <meta property="og:image:width" content="2000" />
34
+ <meta property="og:image:height" content="666" />{% endif %}
35
+
36
+ <script type="application/ld+json">
37
+ {
38
+ "@context": "https://schema.org",
39
+ "@type": "Website",
40
+ "publisher": {
41
+ "@type": "Organization",
42
+ "name": "{{ site.title }}",
43
+ "logo": "{{ site.url }}{{ site.baseurl }}{{ site.logo }}"
44
+ },
45
+ "url": "{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}{% endif %}{{ page.url | remove_first: '/' }}",
46
+ "image": {
47
+ "@type": "ImageObject",
48
+ "url": "{{ site.url }}{{ site.baseurl }}{% if page.cover %}{{ page.cover }}{% else %}{{ site.cover }}{% endif %}",
49
+ "width": 2000,
50
+ "height": 666
51
+ },
52
+ "mainEntityOfPage": {
53
+ "@type": "WebPage",
54
+ "@id": "{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}{% endif %}{{ page.url | remove_first: '/' }}"
55
+ },
56
+ "description": "{% if excerpt %}{{ excerpt }}{% elsif page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}"
57
+ }
58
+ </script>
59
+
60
+ <!-- <script type="text/javascript" src="https://demo.ghost.io/public/ghost-sdk.min.js?v=724281a32e"></script>
61
+ <script type="text/javascript">
62
+ ghost.init({
63
+ clientId: "ghost-frontend",
64
+ clientSecret: "f84a07a72b17"
65
+ });
66
+ </script> -->
67
+
68
+ <meta name="generator" content="Jekyll 3.6.2" />
69
+ <link rel="alternate" type="application/rss+xml" title="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}" href="{{ site.baseurl }}feed.xml" />
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 14.5s2 3 5 3 5.5-2.463 5.5-5.5S21 6.5 18 6.5c-5 0-7 11-12 11C2.962 17.5.5 15.037.5 12S3 6.5 6 6.5s4.5 3.5 4.5 3.5"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" fill="none"><path d="M19.5 8c0 4.144-7.5 15.5-7.5 15.5S4.5 12.144 4.5 8C4.5 3.858 7.857.5 12 .5c4.142 0 7.5 3.358 7.5 7.5z"/><circle cx="12" cy="8" r="3"/></svg>
@@ -0,0 +1,6 @@
1
+ <ul class="nav" role="menu">
2
+ <li class="nav-home" role="menuitem"><a href="{{site.baseurl}}">Home</a></li>
3
+ <li class="nav-about" role="menuitem"><a href="{{site.baseurl}}about/">About</a></li>
4
+ <li class="nav-getting-started" role="menuitem"><a href="{{site.baseurl}}tag/getting-started/">Getting Started</a></li>
5
+ <li class="nav-try-ghost" role="menuitem"><a href="https://ghost.org">Try Ghost</a></li>
6
+ </ul>
@@ -0,0 +1,6 @@
1
+ <script>
2
+ $(function() {
3
+ var $postContent = $(".post-full-content");
4
+ $postContent.fitVids();
5
+ });
6
+ </script>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
2
+ <path d="M7.5 15.5V4a1.5 1.5 0 1 1 3 0v4.5h2a1 1 0 0 1 1 1h2a1 1 0 0 1 1 1H18a1.5 1.5 0 0 1 1.5 1.5v3.099c0 .929-.13 1.854-.385 2.748L17.5 23.5h-9c-1.5-2-5.417-8.673-5.417-8.673a1.2 1.2 0 0 1 1.76-1.605L7.5 15.5zm6-6v2m-3-3.5v3.5m6-1v2"/>
3
+ </svg>
@@ -0,0 +1,59 @@
1
+ {% assign words_per_minute = site.words_per_minute | default: 200 %}
2
+
3
+ {% assign count = 0 %}
4
+ {% for post in site.posts %}
5
+ {% assign count = count | plus: 1 %}
6
+ {% if count <= 3 %}
7
+ <article class="post-card {{ page.class }}{% unless post.cover %} no-image{% endunless %}">
8
+ {% if post.cover %}
9
+ <a class="post-card-image-link" href="{{ site.baseurl }}{{ post.url | remove_first: '/' }}">
10
+ <div class="post-card-image" style="background-image: url({{ site.baseurl }}{{ post.cover }})"></div>
11
+ </a>
12
+ {% endif %}
13
+ <div class="post-card-content">
14
+ <a class="post-card-content-link" href="{{ site.baseurl }}{{ post.url | remove_first: '/' }}">
15
+ <header class="post-card-header">
16
+ {% if post.tags.size > 0 %}
17
+ {% for tag in post.tags %}
18
+ {% if forloop.index == post.tags.size %}
19
+ <span class="post-card-tags">{{ tag | capitalize }}</span>
20
+ {% else %}
21
+ <span class="post-card-tags">{{ tag | capitalize }}</span>
22
+ {% endif %}
23
+ {% endfor %}
24
+ {% endif %}
25
+
26
+ <h2 class="post-card-title">{{ post.title }}</h2>
27
+ </header>
28
+ <section class="post-card-excerpt">
29
+ {% if post.excerpt %}
30
+ <p>{{ post.excerpt | strip_html | truncatewords: 33, "" }}</p>
31
+ {% else %}
32
+ <p>{{ post.content | strip_html | truncatewords: 33, "" }}</p>
33
+ {% endif %}
34
+ </section>
35
+ </a>
36
+ <footer class="post-card-meta">
37
+ {% for author in site.data.authors %}
38
+ {% if author[1].username == post.author %}
39
+ {% if author[1].picture %}
40
+ <img class="author-profile-image" src="{{ site.baseurl }}{{ author[1].picture }}" alt="{{ author[1].name }}" />
41
+ {% endif %}
42
+ <span class="post-card-author">
43
+ <a href="{{ site.baseurl }}author/{{ post.author }}/">{{ author[1].name }}</a>
44
+ </span>
45
+ {% endif %}
46
+ {% endfor %}
47
+ <span class="reading-time">
48
+ {% assign words = post.content | strip_html | number_of_words %}
49
+ {% if words <= words_per_minute %}
50
+ 1 min read
51
+ {% else %}
52
+ {{ words | divided_by:words_per_minute }} min read
53
+ {% endif %}
54
+ </span>
55
+ </footer>
56
+ </div>
57
+ </article>
58
+ {% endif %}
59
+ {% endfor %}