jekyll-blocker 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/bin/blocker +49 -0
  3. data/lib/jekyll-blocker/block.rb +58 -0
  4. data/lib/jekyll-blocker/block_collection.rb +32 -0
  5. data/lib/jekyll-blocker/converters.rb +18 -0
  6. data/lib/jekyll-blocker/errors.rb +4 -0
  7. data/lib/jekyll-blocker/hooks.rb +39 -0
  8. data/lib/jekyll-blocker/page.rb +12 -0
  9. data/lib/jekyll-blocker/page_collection.rb +23 -0
  10. data/lib/jekyll-blocker/tags/block_container_tag.rb +33 -0
  11. data/lib/jekyll-blocker/tags/block_tag.rb +30 -0
  12. data/lib/jekyll-blocker/tags/menu_tag.rb +100 -0
  13. data/lib/jekyll-blocker/utilities.rb +17 -0
  14. data/lib/jekyll-blocker/version.rb +1 -1
  15. data/lib/jekyll-blocker.rb +7 -3
  16. data/lib/new_site/.gitignore +5 -0
  17. data/lib/new_site/Gemfile +32 -0
  18. data/lib/new_site/_blocker/blocks/example.liquid +15 -0
  19. data/lib/new_site/_blocker/blocks/header.liquid +17 -0
  20. data/lib/new_site/_blocker/menu_styles/full/item.liquid +19 -0
  21. data/lib/new_site/_blocker/menu_styles/full/wrapper.liquid +19 -0
  22. data/lib/new_site/_blocker/menus/main.yml +6 -0
  23. data/lib/new_site/_config.yml +53 -0
  24. data/lib/new_site/_globals.yml +8 -0
  25. data/lib/new_site/_includes/footer.liquid +8 -0
  26. data/lib/new_site/_layouts/default.liquid +22 -0
  27. data/lib/new_site/_layouts/home.liquid +11 -0
  28. data/lib/new_site/_layouts/not_found.liquid +8 -0
  29. data/lib/new_site/_layouts/page.liquid +16 -0
  30. data/lib/new_site/_layouts/post.liquid +7 -0
  31. data/lib/new_site/_posts/2023-02-03-welcome-to-jekyll.markdown +35 -0
  32. data/lib/new_site/_sass/bluma.css +1 -0
  33. data/lib/new_site/_sass/highlight.css +66 -0
  34. data/lib/new_site/css/main.scss +4 -0
  35. data/lib/new_site/favicons/android-chrome-192x192.png +0 -0
  36. data/lib/new_site/favicons/android-chrome-512x512.png +0 -0
  37. data/lib/new_site/favicons/apple-touch-icon.png +0 -0
  38. data/lib/new_site/favicons/favicon-16x16.png +0 -0
  39. data/lib/new_site/favicons/favicon-32x32.png +0 -0
  40. data/lib/new_site/favicons/site.webmanifest +1 -0
  41. data/lib/new_site/images/.keep +0 -0
  42. data/lib/new_site/images/logo.svg +1 -0
  43. data/lib/new_site/index.liquid +25 -0
  44. data/lib/new_site/not_found.liquid +6 -0
  45. data/lib/new_site/uploads/files/.keep +0 -0
  46. data/lib/new_site/uploads/images/.keep +0 -0
  47. metadata +81 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 591645b9e0b2cc0f0fd3782d5a2170f2c97e63a84920ec656c168ce15e480880
4
- data.tar.gz: 98325df110ec872d1d2e29059632032f44862c4ba0466c65bad8a21f2adc0cf7
3
+ metadata.gz: 6c51070fc39c52b68d6128a6143082313acd82382ff23cf25b3bd453fc738a86
4
+ data.tar.gz: e5e7c38c7249214d34c451466b1fa1d37d1473acd1e564011af560920b99b937
5
5
  SHA512:
6
- metadata.gz: b50cad9330bf30e45b2ce8b9a96a0886084b05dcfc1058f31795958c86102cf766c007c006d1f6b3e7623f74dccc17414a9ced029b233102f2999ce76075f64a
7
- data.tar.gz: c2230ea2d1a449db8aa0f27c2dcd232c9e245619c6192c42b474414bb0ea77a7ffd59f92a400a682cc5d1bbfea9e252a5aa1bcccff890e43d57447b848eb978c
6
+ metadata.gz: fa742a641e07901bf7f3ac3b41fc6c5888b5355c977983a077872cd2398960ce73f2e2ee1ab562cf5f6d55acac9f39e04eaab94b0d28bd1ecb1e488881263bf5
7
+ data.tar.gz: a2558c03ea41e9e91499a0e5666234965f6e33f32101a183b9a8ee80745134b39f7be8d6b47f09ce34bfd1f602bdac9c8052b07ffc01a1b82f724c4e32a30cfb
data/bin/blocker ADDED
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "thor"
4
+ require "jekyll-blocker"
5
+
6
+ class BlockerCLI < Thor
7
+ desc "new PATH", "create a new jekyll site setup for blocker in PATH"
8
+ def new(path)
9
+ pastel = Pastel.new
10
+ full_path = File.expand_path(path)
11
+
12
+ if Dir.exist?(full_path)
13
+ if !Dir.empty?(full_path)
14
+ error = "The path is not empty. Cannot create new jekyll-blocker project."
15
+ puts pastel.red(error)
16
+ exit
17
+ end
18
+ else
19
+ FileUtils.mkdir_p(full_path)
20
+ end
21
+
22
+ FileUtils.cp_r(File.join(
23
+ File.expand_path(
24
+ File.join(__dir__, "..", "lib", "new_site")), '.'),
25
+ full_path)
26
+
27
+ puts pastel.cyan("Copied Files:")
28
+ Dir.glob(File.join(full_path, "**", "*"), File::FNM_DOTMATCH).
29
+ select{|file| File.file?(file)}.
30
+ each do |file|
31
+ puts " " + file.sub(/\A#{full_path}#{File::SEPARATOR}/, '')
32
+ end
33
+
34
+ Dir.chdir(full_path) do
35
+ puts pastel.cyan("\nBundling:")
36
+ puts `bundle`
37
+
38
+ puts pastel.cyan("\nMaking Git repo")
39
+ puts `git init`
40
+ end
41
+ end
42
+
43
+ desc "version", "jekyll-blocker version"
44
+ def version
45
+ puts JekyllBlocker::VERSION
46
+ end
47
+ end
48
+
49
+ BlockerCLI.start(ARGV)
@@ -0,0 +1,58 @@
1
+ module JekyllBlocker
2
+ class Block
3
+ attr_accessor :content, :data
4
+
5
+ ALLOWED_TAGS = %w(assign break capture case comment continue cycle decrement
6
+ for if ifchanged increment raw tablerow unless highlight
7
+ link post_url)
8
+
9
+ def initialize(content: "", data: {})
10
+ @content = content.instance_of?(String) ? content : ""
11
+ @data = data.instance_of?(Hash) ? data : {}
12
+ end
13
+
14
+ def render(instance_data, context)
15
+ _context = Liquid::Context.new(context.environments.dup, {}, context.registers)
16
+
17
+ data.each do |key, value|
18
+ temp = instance_data.key?(key) ? instance_data[key] : value["value"]
19
+ case value["type"]
20
+ when "text", "richtext", "html"
21
+ essential_liquid_tags do
22
+ temp = Liquid::Template.parse(temp).render(context)
23
+ end
24
+ when "image"
25
+ temp['src'] = '/uploads/images/' + temp['src']
26
+ when "file"
27
+ temp = '/uploads/files/' + temp
28
+ when "markdown"
29
+ essential_liquid_tags do
30
+ temp = Liquid::Template.parse(temp).render(context)
31
+ end
32
+ temp = Kramdown::Document.new(temp, input: 'GFM').to_html
33
+ end
34
+ _context[key] = temp
35
+ end
36
+
37
+ template = Liquid::Template.parse(@content)
38
+ template.render(_context)
39
+ end
40
+
41
+ private
42
+
43
+ def essential_liquid_tags
44
+ removed = {}
45
+ Liquid::Template.tags.each do |name, klass|
46
+ unless ALLOWED_TAGS.include?(name)
47
+ removed[name] = klass
48
+ Liquid::Template.tags.delete(name)
49
+ end
50
+ end
51
+ yield
52
+ removed.each do |name, klass|
53
+ Liquid::Template.register_tag(name, Object.const_get(klass))
54
+ end
55
+ end
56
+ end
57
+ end
58
+
@@ -0,0 +1,32 @@
1
+ module JekyllBlocker
2
+ class BlockCollection
3
+ def initialize(folder)
4
+ @blocks = {}
5
+ @path = File.join(folder, "_blocker", "blocks")
6
+
7
+ paths = Dir[File.join(@path, "**", "*.{html,liquid}")]
8
+ paths.each { |path| load_block(path) }
9
+ end
10
+
11
+ def find(name)
12
+ @blocks[name]
13
+ end
14
+
15
+ private
16
+
17
+ def load_block(path)
18
+ file = Utilities.read_jekyll_file(path)
19
+
20
+ key = Pathname(
21
+ path.sub(/\A#{@path}/, '').
22
+ sub(/#{File.extname(path)}\z/, '')
23
+ ).each_filename.to_a.join('/')
24
+
25
+ if @blocks.key? key
26
+ raise ValidationError, "Block '#{key}' exists in multiple extensions"
27
+ end
28
+
29
+ @blocks[key] = Block.new(content: file[:content], data: file[:data])
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,18 @@
1
+ module JekyllBlocker
2
+ class LiquidConverter < Jekyll::Converter
3
+ safe true
4
+ priority :low
5
+
6
+ def matches(ext)
7
+ ext =~ /^\.liquid$/i
8
+ end
9
+
10
+ def output_ext(ext)
11
+ ".html"
12
+ end
13
+
14
+ def convert(content)
15
+ content
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,4 @@
1
+ module JekyllBlocker
2
+ BlockerError = Class.new(::StandardError)
3
+ ValidationError = Class.new(::StandardError)
4
+ end
@@ -0,0 +1,39 @@
1
+ module JekyllBlocker
2
+ Jekyll::Hooks.register :site, :pre_render do |site, payload|
3
+ # set blocks in config
4
+ site.config["blocks"] = BlockCollection.new(site.source)
5
+
6
+ # set site globals
7
+ site.config["globals"] = {}
8
+ global_path = File.join(site.source, "_globals.yml")
9
+ if File.exist? global_path
10
+ globals = YAML.safe_load(File.read(global_path))
11
+ site.config["globals"] = globals.map{|k, v| [k, v["value"]]}.to_h
12
+ end
13
+
14
+ # set layout globals
15
+ site.layouts.each do |_, layout|
16
+ layout.data["globals"] = if layout.data["globals"]
17
+ layout.data["globals"].
18
+ map{|k, v| [k, v["value"]]}.
19
+ to_h
20
+ else
21
+ {}
22
+ end
23
+ end
24
+ end
25
+ Jekyll::Hooks.register :pages, :pre_render do |page, payload|
26
+ # set globals merged data, site and layout
27
+ payload["globals"] = page.site.config["globals"]
28
+
29
+ layout = page.site.layouts[page["layout"]]
30
+ if layout
31
+ payload["globals"].merge!(layout.data["globals"])
32
+ end
33
+ end
34
+ Jekyll::Hooks.register :posts, :pre_render do |post, payload|
35
+ # set globals merged data, site and layout
36
+ layout = post.site.layouts[post["layout"]]
37
+ payload["globals"] = post.site.config["globals"].merge(layout.data["globals"])
38
+ end
39
+ end
@@ -0,0 +1,12 @@
1
+ module JekyllBlocker
2
+ class Page
3
+ attr_accessor :title, :description, :layout
4
+
5
+ def initialize(params)
6
+ end
7
+
8
+ def save
9
+ end
10
+ end
11
+ end
12
+
@@ -0,0 +1,23 @@
1
+ module JekyllBlocker
2
+ class PageCollection
3
+ attr_reader :pages
4
+
5
+ def initialize(path)
6
+ paths = Dir[File.join(path, "**", "*.{liquid,html}")].reject do |file|
7
+ file =~ /\A#{File.join(path, '_')}/
8
+ end
9
+
10
+ paths.each do |path|
11
+ key = file.sub(/\A#{path}/, '')
12
+ file = Utilities.read_jekyll_file(path)
13
+ @pages[key] = Page.new
14
+ end
15
+
16
+ end
17
+
18
+ def find(id)
19
+ @pages[id.to_s]
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,33 @@
1
+ module JekyllBlocker
2
+ class BlockContainerTag < Liquid::Block
3
+ def initialize(tag_name, params, parse_context)
4
+ super
5
+ parts = params.to_s.strip.split.compact
6
+ if parts.count == 1
7
+ @name = parts.first
8
+ else
9
+ msg = "block_container tag expects 1 argument, #{parts.count} given"
10
+ raise Liquid::SyntaxError, msg
11
+ end
12
+ end
13
+
14
+ def render(context)
15
+ blocks = context.registers[:site].config["blocks"]
16
+ block_containers = context.registers[:page]["block_containers"] || {}
17
+ block_container = block_containers[@name] ||
18
+ super.split.map do |block|
19
+ { "type" => block, "fields" => {} }
20
+ end
21
+
22
+
23
+ out = ""
24
+ block_container.each do |block|
25
+ out << blocks.find(block["type"]).render(block["fields"], context)
26
+ end
27
+ out
28
+ end
29
+ end
30
+ end
31
+
32
+ Liquid::Template.register_tag('block_container', JekyllBlocker::BlockContainerTag)
33
+
@@ -0,0 +1,30 @@
1
+ module JekyllBlocker
2
+ class BlockTag < Liquid::Tag
3
+ def initialize(tag_name, params, parse_context)
4
+ super
5
+ parts = params.to_s.strip.split.compact
6
+
7
+ if parts.count == 1
8
+ @name = @id = parts.first.strip
9
+ elsif parts.count == 2
10
+ @name = parts.first
11
+ @id = parts.last
12
+ else
13
+ raise Liquid::SyntaxError, "block tag expects 1..2 arguments, #{parts.count} given"
14
+ end
15
+ end
16
+
17
+ def render(context)
18
+ blocks = context.registers[:site].config["blocks"]
19
+ page_blocks = context.registers[:page]["blocks"] || {}
20
+ block = page_blocks[@id] || { "type" => @name, "fields" => {} }
21
+
22
+ raise BlockerError unless @name == block["type"]
23
+
24
+ blocks.find(@name).render(block["fields"], context)
25
+ end
26
+ end
27
+ end
28
+
29
+ Liquid::Template.register_tag('block', JekyllBlocker::BlockTag)
30
+
@@ -0,0 +1,100 @@
1
+ module JekyllBlocker
2
+ class MenuTag < Liquid::Tag
3
+ def initialize(tag_name, params, parse_context)
4
+ super
5
+ parts = params.to_s.strip.split.compact
6
+
7
+ if parts.count == 2
8
+ @name = parts.first.strip
9
+ @style = parts.last.strip
10
+ else
11
+ raise Liquid::SyntaxError, "menu tag expects 2 arguments, #{parts.count} given"
12
+ end
13
+ end
14
+
15
+ def render(context)
16
+ @context = context
17
+ @style = parse_param(@style)
18
+ menu = build_menu(load_menu(@name))
19
+
20
+ if style_wrapper
21
+ menu = render_part(style_wrapper, { "content" => menu })
22
+ end
23
+
24
+ menu
25
+ end
26
+
27
+ private
28
+
29
+ def render_part(content, params)
30
+ _context = Liquid::Context.new(@context.environments.dup, {}, @context.registers)
31
+ params.each {|key, value| _context[key] = value}
32
+ template = Liquid::Template.parse(content)
33
+ template.render(_context)
34
+ end
35
+
36
+ def build_menu(menu)
37
+ out = ""
38
+ menu.each do |item|
39
+ url = case item["type"]
40
+ when "page"
41
+ pages = @context.registers[:site].pages
42
+ pages.find{|page| page["id"] == item["value"]}&.url.to_s
43
+ when "text"
44
+ item["value"]
45
+ when "placeholder"
46
+ nil
47
+ end
48
+ data = {
49
+ "classes" => item["classes"].to_s,
50
+ "url" => url,
51
+ "text" => item["text"].to_s
52
+ }
53
+ if item["children"].instance_of?(Array) && item["children"].any?
54
+ data["children"] = build_menu(item["children"])
55
+ end
56
+
57
+ out << render_part(style_item, data)
58
+ end
59
+ out
60
+ end
61
+
62
+ def parse_param(name)
63
+ if (name[0] == '"' && name[-1] == '"') ||
64
+ (name[0] == "'" && name[-1] == "'")
65
+ name[1..-2]
66
+ else
67
+ part = @context
68
+ name.split(".").each do |value|
69
+ part = part[value]
70
+ end
71
+ part.to_s
72
+ end
73
+ end
74
+
75
+ def style_wrapper
76
+ @style_wrapper ||= get_style_part("wrapper", true)
77
+ end
78
+
79
+ def style_item
80
+ @style_item ||= get_style_part("item")
81
+ end
82
+
83
+ def get_style_part(part, optional=false)
84
+ file_path = File.join("_blocker", "menu_styles", @style, "#{part}.liquid")
85
+
86
+ return if optional && !File.exist?(file_path)
87
+
88
+ File.read(file_path)
89
+ end
90
+
91
+ def load_menu(param)
92
+ name = parse_param(param)
93
+ file_path = File.join("_blocker", "menus", "#{name}.yml")
94
+ YAML.safe_load(File.read(file_path))
95
+ end
96
+ end
97
+ end
98
+
99
+ Liquid::Template.register_tag('menu', JekyllBlocker::MenuTag)
100
+
@@ -0,0 +1,17 @@
1
+ module JekyllBlocker
2
+ class Utilities
3
+ class << self
4
+ def read_jekyll_file(path)
5
+ out = { data: {}, content: File.read(path) }
6
+
7
+ if out[:content] =~ Jekyll::Document::YAML_FRONT_MATTER_REGEXP
8
+ out[:content] = Regexp.last_match.post_match
9
+ out[:data] = YAML.safe_load(Regexp.last_match(1))
10
+ end
11
+
12
+ out
13
+ end
14
+ end
15
+ end
16
+ end
17
+
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllBlocker
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.1"
5
5
  end
6
6
 
@@ -1,8 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "jekyll-blocker/version"
3
+ # require "debug"
4
4
 
5
- module JekyllBlocker
6
- class Error < StandardError; end
5
+ %w(yaml uri fileutils jekyll securerandom pastel).each do |lib|
6
+ require lib
7
7
  end
8
8
 
9
+ Dir[File.join(__dir__, "jekyll-blocker", "**", "*")].
10
+ select { |path| File.file?(path) }.
11
+ each { |lib| require lib }
12
+
@@ -0,0 +1,5 @@
1
+ _site
2
+ .sass-cache
3
+ .jekyll-cache
4
+ .jekyll-metadata
5
+ vendor
@@ -0,0 +1,32 @@
1
+ source "https://rubygems.org"
2
+ # Hello! This is where you manage which Jekyll version is used to run.
3
+ # When you want to use a different version, change it below, save the
4
+ # file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
5
+ #
6
+ # bundle exec jekyll serve
7
+ #
8
+ # For Vagrant
9
+ # bundle exec jekyll serve -H 0.0.0.0
10
+ #
11
+ # This will help ensure the proper Jekyll version is running.
12
+ # Happy Jekylling!
13
+ gem "jekyll", "~> 4.3.2"
14
+
15
+ # If you have any plugins, put them here!
16
+ group :jekyll_plugins do
17
+ gem "jekyll-blocker"
18
+ end
19
+
20
+ # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
21
+ # and associated library.
22
+ platforms :mingw, :x64_mingw, :mswin, :jruby do
23
+ gem "tzinfo", ">= 1", "< 3"
24
+ gem "tzinfo-data"
25
+ end
26
+
27
+ # Performance-booster for watching directories on Windows
28
+ gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
29
+
30
+ # Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
31
+ # do not have a Java counterpart.
32
+ gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
@@ -0,0 +1,15 @@
1
+ ---
2
+ text:
3
+ type: text
4
+ value: >-
5
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus id sapien
6
+ dolor. Mauris ut ante a eros euismod cursus a nec orci. Vivamus in nisl
7
+ rutrum, auctor urna nec, imperdiet mauris. Nunc dignissim augue blandit
8
+ bibendum vulputate. Nullam semper nisl sit amet tellus volutpat, nec porta
9
+ erat finibus. Cras lobortis, sapien ut mollis viverra, turpis orci luctus
10
+ erat, sed faucibus odio dolor non mi. Donec sed lorem feugiat, porta nunc
11
+ ac, ornare quam. Pellentesque in risus orci. Proin sit amet rhoncus eros,
12
+ et interdum ligula.
13
+ ---
14
+ <p>{{ text }}</p>
15
+
@@ -0,0 +1,17 @@
1
+ ---
2
+ title:
3
+ type: text
4
+ value: default h1
5
+ subtitle:
6
+ type: text
7
+ value: >-
8
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
9
+ Vivamus id sapien dolor.
10
+ Mauris ut ante a eros euismod cursus a nec orci.
11
+ ---
12
+ <section class="hero">
13
+ <div class="hero-body">
14
+ <h1 class="title">{{ title }}</h1>
15
+ <h2 class="subtitle">{{ subtitle }}</h2>
16
+ </div>
17
+ </section>
@@ -0,0 +1,19 @@
1
+ {% if children %}
2
+ <div class="navbar-item has-dropdown is-hoverable">
3
+ <a class="navbar-link {{classes}} {% if page.url == url %}is-active{% endif %}" {% if url %}href="{{url}}"{% endif %}>
4
+ {{text}}
5
+ </a>
6
+
7
+ <div class="navbar-dropdown">
8
+ {{children}}
9
+ </div>
10
+ </div>
11
+ {% else %}
12
+ <a
13
+ class="navbar-item {{classes}} {% if page.url == url %}is-active{% endif %}"
14
+ href="{{url}}"
15
+ >
16
+ {{text}}
17
+ </a>
18
+ {% endif %}
19
+
@@ -0,0 +1,19 @@
1
+ <nav class="navbar is-dark" role="navigation" aria-label="main navigation">
2
+ <div class="navbar-brand">
3
+ <a class="navbar-item" href="/">
4
+ <img src="/images/logo.svg" width="112" height="28">
5
+ </a>
6
+
7
+ <a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbarMenu">
8
+ <span aria-hidden="true"></span>
9
+ <span aria-hidden="true"></span>
10
+ <span aria-hidden="true"></span>
11
+ </a>
12
+ </div>
13
+
14
+ <div id="navbarMenu" class="navbar-menu">
15
+ <div class="navbar-start">
16
+ {{content}}
17
+ </div>
18
+ </div>
19
+ </nav>
@@ -0,0 +1,6 @@
1
+ - text: Home
2
+ type: page
3
+ value: home
4
+ - text: A Post
5
+ type: text
6
+ value: /jekyll/update/2023/02/03/welcome-to-jekyll.html
@@ -0,0 +1,53 @@
1
+ # Welcome to Jekyll!
2
+ #
3
+ # This config file is meant for settings that affect your whole blog, values
4
+ # which you are expected to set up once and rarely edit after that. If you find
5
+ # yourself editing this file very often, consider using Jekyll's data files
6
+ # feature for the data you need to update frequently.
7
+ #
8
+ # For technical reasons, this file is *NOT* reloaded automatically when you use
9
+ # 'bundle exec jekyll serve'. If you change this file, please restart the server process.
10
+ #
11
+ # If you need help with YAML syntax, here are some quick references for you:
12
+ # https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
13
+ # https://learnxinyminutes.com/docs/yaml/
14
+ #
15
+ # Site settings
16
+ # These are used to personalize your new site. If you look in the HTML files,
17
+ # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
18
+ # You can create any custom variable you would like, and they will be accessible
19
+ # in the templates via {{ site.myvariable }}.
20
+
21
+ title: Your awesome title
22
+ description: >- # this means to ignore newlines until "baseurl:"
23
+ Write an awesome description for your new site here. You can edit this
24
+ line in _config.yml. It will appear in your document head meta (for
25
+ Google search results) and in your feed.xml site description.
26
+ baseurl: "" # the subpath of your site, e.g. /blog
27
+ url: "" # the base hostname & protocol for your site, e.g. http://example.com
28
+
29
+ # Build settings
30
+ plugins:
31
+ - jekyll-blocker
32
+
33
+ sass:
34
+ style: compressed
35
+ # Exclude from processing.
36
+ # The following items will not be processed, by default.
37
+ # Any item listed under the `exclude:` key here will be automatically added to
38
+ # the internal "default list".
39
+ #
40
+ # Excluded items can be processed by explicitly listing the directories or
41
+ # their entries' file path in the `include:` list.
42
+ #
43
+ # exclude:
44
+ # - .sass-cache/
45
+ # - .jekyll-cache/
46
+ # - gemfiles/
47
+ # - Gemfile
48
+ # - Gemfile.lock
49
+ # - node_modules/
50
+ # - vendor/bundle/
51
+ # - vendor/cache/
52
+ # - vendor/gems/
53
+ # - vendor/ruby/
@@ -0,0 +1,8 @@
1
+ site_name:
2
+ label: Site Name
3
+ type: text
4
+ value: Blocker
5
+ main_menu:
6
+ label: Main Menu
7
+ type: menu
8
+ value: main
@@ -0,0 +1,8 @@
1
+ <footer class="footer">
2
+ <div class="content has-text-centered">
3
+ <p>
4
+ © {{ globals.site_name }} {{ 'now' | date: "%Y" }}
5
+ </p>
6
+ </div>
7
+ </footer>
8
+