jekyll-web-novel 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f6a5557d76311b57c8c7cd04c0a0e243b5129848f7727e396b710b1661c0783e
4
+ data.tar.gz: 3248c33768c3eff3c04c60adceb183d66e33b71ebc0cafe7bfb5b30848effe72
5
+ SHA512:
6
+ metadata.gz: eb38d3411d33ab607d597f0baea62ffb0788e277d90638dd6c77c00e61fe12d424ed6562192ca5d576f47d7265464eec6906501e5ed2cb719219a974cef77f7f
7
+ data.tar.gz: c6ea927200b0df30a1e4d1c654b2bd0687cdb3a11566f29ba5bd7bf15a16abbcbcc7779b076afedcd62de2a7c05a723a647ae68bd187ec1fef361bd09206b79a
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2022 opsaaaaa
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
13
+ all 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
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # jekyll-web-novel
2
+
3
+ A [jekyll](https://jekyllrb.com/) website theme designed to host your work in progress novel.
4
+
5
+ ## Features
6
+ - supper easy to read text formatting that looks great.
7
+ - styles that respect you dark/light mode preferences.
8
+ - hidden chapters called previews you can send to your proofreader.
9
+ - generate boilerplates for chapters and volumes with one command.
10
+ - Paragraph anchors for easy referencing.
11
+ - Easy build script to get started quickly
12
+ - UI that gets out of the way.
13
+ - Mobile and desktop friendly interface
14
+ - configurable copyright footer.
15
+
16
+ ### Todo (unimplemented)
17
+ - Nice book cover display on the home page.
18
+ - use said cover image in social cards.
19
+ - pandoc scripts to generate ebook formats
20
+ - nice comment implementation
21
+ - optional config for online content management
22
+ - Demo site
23
+ - optional copyright disclaimer popup
24
+ - optional social/donation links
25
+ - configurable nav to allow for more pages
26
+ - about the author page
27
+
28
+ ## Installation
29
+
30
+ After creating a new jekyll project.
31
+ Add this line to your Jekyll site's `Gemfile`:
32
+
33
+ ```ruby
34
+ gem "jekyll-web-novel"
35
+ gem "jekyll-page-boilerplate" # for the awesome boilerplate's
36
+ ```
37
+
38
+ And add this line to your Jekyll site's `_config.yml`:
39
+
40
+ ```yaml
41
+ theme: jekyll-web-novel
42
+ ```
43
+
44
+ And then execute:
45
+
46
+ $ bundle
47
+
48
+ Initialize and copy over the necessary files.
49
+
50
+ $ jekyll-web-novel
51
+
52
+ Delete the `index.markdown`, `404.html`, `about.markdown` files because they have conflicting paths.
53
+
54
+ Create your boilerplate pages with the `jekyll-page-boilerplate` gem.
55
+
56
+ $ bplate volume vol=01 -T "Water"
57
+ $ bplate chapter vol=01 cht=01 -T "My First Chapter"
58
+ $ bplate preview vol=01 cht=02 -T "Secret Chapter for Proofreading"
59
+
60
+ ## CMS Options
61
+
62
+ configuring a cms will require more setup on your end.
63
+ I use [netlifycms](https://www.netlifycms.org/) myself.
64
+ The source code has an example configuration from a different project of mine under `admin/`.
65
+ Jekyll has a list of [cms options](https://jekyllrb.com/resources/#content-management) on their website.
66
+
67
+
68
+ ## Contributing
69
+
70
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/hello.
71
+
72
+
73
+ ## License
74
+
75
+ [MIT License](https://opensource.org/licenses/MIT) for the time being but I have not really decided on a License yet.
76
+
@@ -0,0 +1,26 @@
1
+ ---
2
+ _boilerplate:
3
+ path: '_chapters'
4
+ timestamp: false
5
+ title: title
6
+ slug: "{{ vol }}-{{ cht }}-{{ title }}.md"
7
+ vol: '01'
8
+
9
+ title: {{ boilerplate.title }}
10
+ created: {{ boilerplate.time }}
11
+ # permalink: /chapters/{{ boilerplate.random_url }}
12
+ permalink: /chapters/{{ boilerplate.slug }}
13
+ layout: chapter
14
+ chapter: {{ boilerplate.cht }}
15
+ volume: {{ boilerplate.vol }}
16
+ ---
17
+
18
+
19
+
20
+ ### Chapter {{ boilerplate.cht }}
21
+
22
+ # {{ boilerplate.title }}
23
+
24
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
25
+
26
+
@@ -0,0 +1,11 @@
1
+ ---
2
+ _boilerplate:
3
+ path: pages
4
+
5
+ title: {{ boilerplate.title }}
6
+ created: {{ boilerplate.time }}
7
+ permalink: {{ boilerplate.slug }}
8
+ layout: default
9
+ ---
10
+
11
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
@@ -0,0 +1,28 @@
1
+ ---
2
+ _boilerplate:
3
+ path: '_previews'
4
+ timestamp: false
5
+ title: title
6
+ slug: "{{ vol }}-{{ cht }}-{{ title }}.md"
7
+ vol: '01'
8
+ localhost:
9
+ baseurl:
10
+
11
+ # http://localhost:4000/chapters/{{ boilerplate.random_url }}#reader
12
+ # https://example.com/chapters/{{ boilerplate.random_url }}#reader
13
+ title: {{ boilerplate.title }}
14
+ created: {{ boilerplate.time }}
15
+ permalink: /chapters/{{ boilerplate.random_url }}
16
+ # permalink: /chapters/{{ boilerplate.slug }}
17
+ layout: chapter
18
+ chapter: {{ boilerplate.cht }}
19
+ volume: {{ boilerplate.vol }}
20
+ ---
21
+
22
+ ### Chapter {{ boilerplate.cht }}
23
+
24
+ # {{ boilerplate.title }}
25
+
26
+
27
+
28
+
@@ -0,0 +1,17 @@
1
+ ---
2
+ # boilerplate volume vol=00 -T 'Title'
3
+ _boilerplate:
4
+ path: '_volumes'
5
+ timestamp: false
6
+ title: title
7
+ slug: "{{ vol }}-{{ title }}.md"
8
+
9
+ title: {{ boilerplate.title }}
10
+ created: {{ boilerplate.time }}
11
+ volume: {{ boilerplate.vol }}
12
+ ---
13
+
14
+
15
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
16
+
17
+
data/_config.yml ADDED
@@ -0,0 +1,100 @@
1
+ title: Web Novel Theme!
2
+ email: your-email@example.com
3
+ description: >-
4
+ a place to display your web novel
5
+ tagline: >-
6
+ The home of your web novel
7
+ baseurl: "/"
8
+ url: "example.com"
9
+
10
+ twitter:
11
+ username: example
12
+ card: summary
13
+
14
+ twitter_username: example
15
+ github_username: example
16
+
17
+ theme: 'jekyll-web-novel'
18
+
19
+
20
+
21
+ novel:
22
+ title: "The Upper Crust"
23
+ author: "John Doe"
24
+ lang: en
25
+ copyright:
26
+ short: >-
27
+ **The Upper Crust, Vol 1**
28
+
29
+ by **John Doe**
30
+
31
+ Copyright © 2022 Example, JJI
32
+
33
+ warning: >-
34
+ PIRATING CONTENT IS ILLEGAL
35
+
36
+ long: 'COPYRIGHT.md'
37
+
38
+
39
+
40
+ collections:
41
+ chapters:
42
+ sort_by: chapter
43
+ output: true
44
+ previews:
45
+ sort_by: chapter
46
+ output: true
47
+ layout: chapter
48
+ volumes:
49
+ sort_by: volume
50
+ output: false
51
+
52
+
53
+ defaults:
54
+ - scope:
55
+ path: "_chapters/*"
56
+ values:
57
+ layout: "chapter"
58
+ type: 'chapters'
59
+ - scope:
60
+ path: "_previews/*"
61
+ values:
62
+ layout: "preview"
63
+ type: 'previews'
64
+ - scope:
65
+ path: "pages/*"
66
+ values:
67
+ layout: "page"
68
+
69
+ plugins:
70
+ - jekyll-feed
71
+ - jekyll-seo-tag
72
+
73
+
74
+ sass:
75
+ load_paths:
76
+ - _sass
77
+ - node_modules
78
+ style: compressed
79
+
80
+ feed:
81
+ collections:
82
+ - chapters
83
+
84
+ exclude:
85
+ - .gitignore
86
+ - .sass-cache/
87
+ - .jekyll-cache/
88
+ - gemfiles/
89
+ - Gemfile
90
+ - Gemfile.lock
91
+ - node_modules/
92
+ - vendor/bundle/
93
+ - vendor/cache/
94
+ - vendor/gems/
95
+ - vendor/ruby/
96
+ - package-lock.json
97
+ - package.json
98
+ - jekyll-web-novel.gemspec
99
+ - lib
100
+
@@ -0,0 +1,11 @@
1
+
2
+ <header scroll-nav class="hbox hbox:long nav">
3
+ <h1>
4
+ <a href={{site.baseurl}}>
5
+ {{ site.title }}
6
+ </a>
7
+ </h1>
8
+
9
+ {% include chapter_nav.html %}
10
+ </header>
11
+
@@ -0,0 +1,15 @@
1
+ <ol class="list-none">
2
+ {% for cht in include.chapters %}
3
+
4
+ <li>
5
+ <p>
6
+ {% unless cht.hide_num %}
7
+ <span>{{ cht.chapter }}.</span>
8
+ {% endunless %}
9
+ <a href="{{ cht.url }}#reader">
10
+ {{ cht.title }}
11
+ </a>
12
+ </p>
13
+ </li>
14
+ {% endfor %}
15
+ </ol>
@@ -0,0 +1,18 @@
1
+
2
+ <div class="hbox chapter__nav nav">
3
+ <a
4
+ class="previous"
5
+ href={{ "chapters" | relative_url }}>index</a>
6
+ {% if page.previous %}
7
+ {% assign hash = page.previous.title | slugify %}
8
+ <a
9
+ class="previous"
10
+ href="{{ page.previous.url }}#reader">Last</a>
11
+ {% endif %}
12
+ {% if page.next %}
13
+ {% assign hash = page.next.title | slugify %}
14
+ <a
15
+ class="next big-link"
16
+ href="{{ page.next.url }}#reader">Next</a>
17
+ {% endif %}
18
+ </div>
@@ -0,0 +1,14 @@
1
+
2
+ {% assign copyright = site.novel.copyright.short %}
3
+ {% assign warning = site.novel.copyright.warning %}
4
+
5
+ <small class="copyright" id="copyright">
6
+ {{ copyright | markdownify }}
7
+ </small>
8
+
9
+ {% if warning %}
10
+ <small class="legal-warning" id="legal-warning">
11
+ {{ warning | markdownify }}
12
+ </small>
13
+ {% endif %}
14
+
@@ -0,0 +1,4 @@
1
+ <footer class="vbox">
2
+
3
+ {% include copyright.md %}
4
+ </footer>
@@ -0,0 +1,18 @@
1
+
2
+
3
+ <meta charset="UTF-8">
4
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>{{ page.title }} | {{site.title }}</title>
7
+
8
+ {% seo %}
9
+
10
+ <link
11
+ rel="stylesheet"
12
+ href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css"
13
+ />
14
+
15
+ <link
16
+ rel="stylesheet"
17
+ href={{ "/assets/css/style.css" | relative_url }}
18
+ />
@@ -0,0 +1,16 @@
1
+
2
+ <header scroll-nav class="hbox nav hbox:long">
3
+ <h1>
4
+ <a href={{site.baseurl}}>
5
+ {{ site.title }}
6
+ </a>
7
+ </h1>
8
+
9
+ <div class="hbox nav">
10
+ <a href="{{'chapters' | relative_url }}">Index</a>
11
+ {% if page.start_chapter %}
12
+ {% assign cht1 = site.chapters | find: 'chapter', page.start_chapter %}
13
+ <a class="big-link" href="{{ cht1.url }}#reader">Read</a>
14
+ {% endif %}
15
+ </div>
16
+ </header>
@@ -0,0 +1,8 @@
1
+
2
+ <div data-page="{{ page.chapter }}" class="reader" id="reader" lang="{{ site.novel.lang }}">
3
+ <div class="chapter__content">
4
+ {{ content }}
5
+ </div>
6
+ </div>
7
+
8
+ <script src="{{ '/assets/js/bookReader.js' | relative_url }}"></script>
@@ -0,0 +1,12 @@
1
+
2
+ <h1 id="#{{page.title | slugify }}">{{ page.title }}</h1>
3
+
4
+ {% assign volumes = site.chapters | group_by: 'volume' %}
5
+ {% for vol in volumes %}
6
+
7
+ {% assign volume = site.volumes | find: 'volume', vol.name %}
8
+ <h2>{{ volume.title }}, Volume {{ volume.volume }}</h2>
9
+
10
+ {% include chapter_list.html chapters=vol.items %}
11
+
12
+ {% endfor %}
@@ -0,0 +1,12 @@
1
+ ---
2
+ layout: root
3
+ ---
4
+
5
+ {% include chapter_header.html %}
6
+
7
+ {% include reader.html %}
8
+
9
+
10
+ <div class="max-width-1">
11
+ {% include chapter_nav.html %}
12
+ </div>
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: root
3
+ ---
4
+
5
+ {% include header.html %}
6
+ {{ content }}
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <div class="reader {{ page.title | slugify}}">
6
+ {{ content }}
7
+ </div>
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: root
3
+ ---
4
+
5
+ {% include header.html %}
6
+ {% include reader.html %}
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ {% include head.html %}
5
+ </head>
6
+ <body>
7
+
8
+
9
+ {{content}}
10
+
11
+ {% include footer.html %}
12
+
13
+ <script src="{{ '/assets/js/scrollNav.js' | relative_url }}"></script>
14
+ </body>
15
+ </html>
@@ -0,0 +1,3 @@
1
+ ---
2
+ ---
3
+
@@ -0,0 +1,67 @@
1
+
2
+ @import 'web-novel/colors'
3
+ @import 'web-novel/reader'
4
+ @import 'web-novel/chapter'
5
+ @import 'web-novel/footer'
6
+ @import 'web-novel/header'
7
+ @import 'web-novel/scrollNav'
8
+
9
+ \:root
10
+ font-size: 16px
11
+
12
+ html
13
+ scroll-behavior: smooth
14
+
15
+
16
+ .hbox
17
+ display: grid
18
+ grid-auto-flow: column
19
+ justify-content: space-between
20
+ align-items: baseline
21
+ column-gap: 1em
22
+
23
+ .vbox > * + *
24
+ margin-top: 2em
25
+
26
+ h1 a
27
+ color: var(--text-main)
28
+ text-decoration: none
29
+
30
+ .list-none
31
+ list-style-type: none
32
+
33
+ .big-link
34
+ font-size: 2.8rem
35
+
36
+ .big-text
37
+ font-size: 2.2rem
38
+ text-indent: 0!important
39
+ line-height: 1.6em
40
+ display: block
41
+ text-align: center
42
+
43
+ margin: 1em 0
44
+
45
+ .max-width-1
46
+ max-width: 35em
47
+ margin: 0 auto
48
+
49
+ .mega-link
50
+ text-indent: 0!important
51
+ font-size: 8rem
52
+ display: block
53
+ text-align: center
54
+ line-height: 1em
55
+ margin: 1em 0
56
+
57
+
58
+
59
+ @media only screen and (max-width: 40rem)
60
+ .hbox.hbox\:long
61
+ grid-auto-flow: row
62
+ justify-content: normal
63
+ width: 100%
64
+ .big-text
65
+ font-size: 1.7rem
66
+ .mega-link
67
+ font-size: 4rem
@@ -0,0 +1,8 @@
1
+
2
+ .chapter__nav
3
+ grid-template-columns: 1fr
4
+ grid-auto-columns: auto
5
+ font-size: 1.5rem
6
+
7
+ .chapter__content
8
+ padding-bottom: 8rem
@@ -0,0 +1,6 @@
1
+ @media (prefers-color-scheme: dark)
2
+ body
3
+ --background-body: #000
4
+ --text-muted: #555
5
+ // color: red
6
+ // background-color: pinawk!important
@@ -0,0 +1,13 @@
1
+ footer
2
+ border-top: none
3
+ padding: 4rem 0
4
+ text-align: center
5
+ max-width: 30rem
6
+ margin: 0 auto
7
+ color: var(--text-main)
8
+ font-size: 1.8rem
9
+ p
10
+ margin: .2em 0
11
+
12
+ small
13
+ display: block
@@ -0,0 +1,10 @@
1
+
2
+ header h1
3
+ margin: 0
4
+ font-size: 2.1rem
5
+
6
+
7
+
8
+ @media only screen and (min-width: 60rem)
9
+ header h1
10
+ font-size: 3rem
@@ -0,0 +1,77 @@
1
+ body
2
+ // font-size: 1.4rem
3
+ font-size: 1.4rem
4
+ max-width: 45em
5
+ h1, h2, h3, h4, h5, h6
6
+ line-height: 1.1em
7
+ p
8
+ $paragraph-gap: .8rem
9
+ margin-top: $paragraph-gap
10
+ margin-bottom: $paragraph-gap
11
+
12
+ .anchor
13
+ color: var(--text-muted)
14
+ padding-left: 1rem
15
+ font-size: 1.8rem
16
+ offset-anchor: 10vh
17
+
18
+ .reader
19
+ max-width: 35em
20
+ margin: 0 auto
21
+ padding-top: 2em
22
+ text-align: justify
23
+ word-break: break-word
24
+ -webkit-hyphens: auto
25
+ -moz-hyphens: auto
26
+ -ms-hyphens: auto
27
+ hyphens: auto
28
+ line-height: 1.4em!important
29
+ p
30
+ border-radius: 2em .2em
31
+ text-indent: 2em
32
+ $paragraph-gap: .8rem
33
+ margin-top: $paragraph-gap
34
+ margin-bottom: $paragraph-gap
35
+
36
+ p[current]
37
+ background-color: var(--background)
38
+
39
+ .scene-change
40
+ margin-top: 1.2em
41
+ margin-bottom: 1.2em
42
+ font-size: 3rem
43
+
44
+
45
+
46
+ h1
47
+ font-weight: normal
48
+ margin-top: 1.5em
49
+
50
+ li p, ul p
51
+ text-indent: 0
52
+
53
+
54
+
55
+
56
+ h1:first-child, h2:first-child, h3:first-child,
57
+ h2:first-child + h1, h3:first-child + h1
58
+ text-align: center
59
+ margin-left: auto
60
+ margin-right: auto
61
+ max-width: 34rem
62
+ margin-bottom: 2em
63
+ margin-top: 2em
64
+
65
+ h3:first-child
66
+ margin-bottom: 1em
67
+ margin-top: 2em
68
+
69
+ h2:first-child + h1, h3:first-child + h1
70
+ margin-top: 0
71
+
72
+
73
+
74
+ @media only screen and (min-width: 40rem)
75
+ body, .reader
76
+ font-size: 1.6rem
77
+ line-height: 1.6em!important
@@ -0,0 +1,8 @@
1
+ [scroll-nav]
2
+ position: sticky
3
+ top: -10em
4
+ transition: top 300ms ease-in-out
5
+ background-color: var(--background-body)
6
+
7
+ [scroll-nav=up]
8
+ top: 0em
data/assets/404.html ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ permalink: /404.html
3
+ layout: page
4
+ ---
5
+
6
+ <h3><a href="/">Home</a></h3>
7
+ <h1>404 The requested page could not be found.</h1>
8
+
@@ -0,0 +1,5 @@
1
+ ---
2
+ ---
3
+
4
+ @import "{{ site.theme }}";
5
+
@@ -0,0 +1,60 @@
1
+ class BookReader {
2
+ constructor (selector = '#reader', getCurrent = true) {
3
+ this.pNodes = document.querySelectorAll(`${selector} p`);
4
+ this.reader = document.querySelector(selector);
5
+ this.pSelected = null;
6
+ this.anchorParagraphs();
7
+ this.scrollToAnchor();
8
+ if(getCurrent){
9
+ this.tackSelectedParagraph();
10
+ };
11
+ }
12
+
13
+ tackSelectedParagraph() {
14
+ this.pNodes.forEach((p, i) => {
15
+ p.addEventListener('click',(e) => this.setCurrent(p));
16
+ p.addEventListener('select',(e) => this.setCurrent(p));
17
+ });
18
+ }
19
+
20
+ setCurrent(p) {
21
+ this.clearCurrent();
22
+ this.reader.setAttribute('current',
23
+ p.getAttribute('id')
24
+ );
25
+ p.setAttribute('current', '');
26
+ }
27
+
28
+ clearCurrent() {
29
+ this.pNodes.forEach((p) => {
30
+ p.removeAttribute('current')
31
+ })
32
+ }
33
+
34
+ anchorParagraphs() {
35
+ var c = 0;
36
+ this.pNodes.forEach(function(p){
37
+ if(p.innerHTML.match('...')) {
38
+ c = c+1;
39
+ var a = document.createElement('a')
40
+ a.setAttribute('href', `#p${c}`)
41
+ a.setAttribute('class', `anchor`)
42
+ p.setAttribute('id', `p${c}`)
43
+ a.innerHTML = String(c)
44
+ p.appendChild(a)
45
+ } else {
46
+ p.setAttribute('class', 'scene-change')
47
+ };
48
+ });
49
+ }
50
+
51
+ scrollToAnchor() {
52
+ var hash = window.location.hash;
53
+ if(hash != '') {
54
+ document.querySelector(hash).scrollIntoView()
55
+ };
56
+ }
57
+ }
58
+ window.addEventListener('load', (e) => {
59
+ new BookReader('#reader', true);
60
+ });
@@ -0,0 +1,25 @@
1
+
2
+ class ScrollNav {
3
+ constructor (target='[scroll-nav]'){
4
+ this.detectScroll(
5
+ document.querySelector(target)
6
+ );
7
+ }
8
+ detectScroll(nav) {
9
+ window.addEventListener('scroll', function(e) {
10
+ var scrollY = window.pageYOffset || document.documentElement.scrollTop;
11
+
12
+ if(scrollY <= this.lastScroll) {
13
+ nav.setAttribute('scroll-nav', 'up');
14
+ } else {
15
+ nav.setAttribute('scroll-nav', 'down');
16
+ };
17
+
18
+ this.lastScroll = scrollY ;
19
+ });
20
+ }
21
+ }
22
+
23
+ window.addEventListener('load', (e) => {
24
+ new ScrollNav();
25
+ });
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ STDOUT.sync = true
4
+
5
+ gem_dir = File.expand_path("..",File.dirname(__FILE__))
6
+ $LOAD_PATH.unshift gem_dir # Look in gem directory for resources first.
7
+
8
+ require 'fileutils'
9
+
10
+ class WebNovelInit
11
+
12
+ def initialize
13
+ cp_folder('_boilerplates')
14
+ cp_folder('pages')
15
+ FileUtils.mkpath('_includes')
16
+ FileUtils.mkpath('_chapters')
17
+ FileUtils.mkpath('_previews')
18
+ FileUtils.mkpath('_volumes')
19
+ cp_file('_includes/copyright.md')
20
+ cp_file('_config.yml')
21
+ puts 'Remember to remove `index.markdown`, `404.html`, and `about.md`'
22
+ puts 'You can use the _boilerplates provided with the `jekyll-page-boilerplate` gem.'
23
+ puts '`$ bplate volume vol=01 -T "Water"`'
24
+ puts '`$ bplate chapter vol=01 cht=01 -T "My First Chapter"`'
25
+ puts '`$ bplate preview vol=01 cht=02 -T "Secret Chapter for Proofreading"`'
26
+ puts 'Web Novel jekyll template files created.'
27
+ end
28
+
29
+ def cp_folder(folder)
30
+ FileUtils.cp_r(File.join(__dir__,'../', folder), folder)
31
+ end
32
+
33
+ def cp_file(file)
34
+ FileUtils.cp(File.join(__dir__,'../', file), file)
35
+ end
36
+ end
37
+
38
+ WebNovelInit.new
data/pages/chapters.md ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ title: Chapters
3
+ layout: page
4
+ permalink: chapters
5
+ start_chapter: 1
6
+ ---
7
+
8
+ {% include toc.html %}
9
+
data/pages/home.md ADDED
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: Web Novel Theme for Jekyll
3
+ permalink: /
4
+ layout: page
5
+ start_chapter: 1
6
+ ---
7
+
8
+ # {{ site.novel.title }}
9
+
10
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Orci porta non pulvinar neque laoreet suspendisse interdum. Ut porttitor leo a diam sollicitudin tempor id eu nisl.
11
+ {: .big-text}
12
+
13
+
14
+ {% assign cht1 = site.chapters | find: 'chapter', page.start_chapter %}
15
+ [Read Now]({{ cht1.url | relative_url}}#reader){: .mega-link}
16
+
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-web-novel
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
5
+ platform: ruby
6
+ authors:
7
+ - opsaaaaa
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-05-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: webrick
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.6.1
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.6'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.6.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: jekyll-page-boilerplate
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '4.2'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 4.2.1
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '4.2'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 4.2.1
53
+ - !ruby/object:Gem::Dependency
54
+ name: jekyll
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '4.2'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '4.2'
67
+ - !ruby/object:Gem::Dependency
68
+ name: jekyll-seo-tag
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '2.8'
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '2.8'
81
+ - !ruby/object:Gem::Dependency
82
+ name: jekyll-feed
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '0.16'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '0.16'
95
+ description:
96
+ email:
97
+ - sean@ferney.org
98
+ executables:
99
+ - jekyll-web-novel
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - LICENSE.txt
104
+ - README.md
105
+ - _boilerplates/chapter.md
106
+ - _boilerplates/page.md
107
+ - _boilerplates/preview.md
108
+ - _boilerplates/volume.md
109
+ - _config.yml
110
+ - _includes/chapter_header.html
111
+ - _includes/chapter_list.html
112
+ - _includes/chapter_nav.html
113
+ - _includes/copyright.md
114
+ - _includes/footer.html
115
+ - _includes/head.html
116
+ - _includes/header.html
117
+ - _includes/reader.html
118
+ - _includes/toc.html
119
+ - _layouts/chapter.html
120
+ - _layouts/default.html
121
+ - _layouts/page.html
122
+ - _layouts/preview.html
123
+ - _layouts/root.html
124
+ - _layouts/volume.html
125
+ - _sass/jekyll-web-novel.sass
126
+ - _sass/web-novel/chapter.sass
127
+ - _sass/web-novel/colors.sass
128
+ - _sass/web-novel/footer.sass
129
+ - _sass/web-novel/header.sass
130
+ - _sass/web-novel/reader.sass
131
+ - _sass/web-novel/scrollNav.sass
132
+ - assets/404.html
133
+ - assets/css/style.sass
134
+ - assets/js/bookReader.js
135
+ - assets/js/scrollNav.js
136
+ - exe/jekyll-web-novel
137
+ - pages/chapters.md
138
+ - pages/home.md
139
+ homepage: https://github.com/opsaaaaa/web_novel_theme
140
+ licenses:
141
+ - MIT
142
+ metadata: {}
143
+ post_install_message:
144
+ rdoc_options: []
145
+ require_paths:
146
+ - lib
147
+ required_ruby_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ requirements: []
158
+ rubygems_version: 3.2.3
159
+ signing_key:
160
+ specification_version: 4
161
+ summary: A nice place to display your web novel
162
+ test_files: []