mirror of
https://github.com/jekyll/jekyll.git
synced 2026-04-28 03:01:03 -04:00
Compare commits
6 Commits
4.3-stable
...
liquid5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35848b9c06 | ||
|
|
e2850341d2 | ||
|
|
7a3dd9a0e3 | ||
|
|
6a32be65e9 | ||
|
|
03ac1d727b | ||
|
|
f8540633c3 |
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
@@ -65,6 +65,8 @@
|
||||
# @jekyll/stability
|
||||
Gemfile @jekyll/stability
|
||||
*.gemspec @jekyll/stability
|
||||
.travis.yml @jekyll/stability
|
||||
appveyor.yml @jekyll/stability
|
||||
/lib/jekyll/configuration.rb @jekyll/stability
|
||||
/lib/jekyll/deprecator.rb @jekyll/stability
|
||||
/lib/jekyll/frontmatter_defaults.rb @jekyll/stability
|
||||
|
||||
2
.github/CONTRIBUTING.markdown
vendored
2
.github/CONTRIBUTING.markdown
vendored
@@ -11,7 +11,7 @@ See the [support guidelines](https://jekyllrb.com/docs/support/)
|
||||
Whether you're a developer, a designer, or just a Jekyll devotee, there are lots of ways to contribute. Here's a few ideas:
|
||||
|
||||
- [Install Jekyll on your computer](https://jekyllrb.com/docs/installation/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/jekyll/jekyll/issues/new) and let us know.
|
||||
- Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a workaround? Do you have a suggestion for how the feature could be better?
|
||||
- Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a work around? Do you have a suggestion for how the feature could be better?
|
||||
- Read through the [documentation](https://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion for something that could be improved.
|
||||
- Browse through the [Jekyll discussion forum](https://talk.jekyllrb.com/), and lend a hand answering questions. There's a good chance you've already experienced what another user is experiencing.
|
||||
- Find an [open issue](https://github.com/jekyll/jekyll/issues) (especially [those labeled `help-wanted`](https://github.com/jekyll/jekyll/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted)), and submit a proposed fix. If it's your first pull request, we promise we won't bite, and are glad to answer any questions.
|
||||
|
||||
8
.github/actions/spelling/README.md
vendored
8
.github/actions/spelling/README.md
vendored
@@ -8,10 +8,8 @@ File | Purpose | Format | Info
|
||||
[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
|
||||
[only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only)
|
||||
[patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
|
||||
[candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns)
|
||||
[line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
|
||||
[expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
|
||||
[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
|
||||
[advice.txt](advice.txt) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
|
||||
|
||||
Note: you can replace any of these files with a directory by the same name (minus the suffix)
|
||||
and then include multiple files inside that directory (with that suffix) to merge multiple files together.
|
||||
Note: you can replace any of these files with a directory by the same name (minus the `.txt` extension) and
|
||||
then include multiple files (with a `.txt` extension) inside that directory to merge multiple files together.
|
||||
|
||||
33
.github/actions/spelling/advice.md
vendored
33
.github/actions/spelling/advice.md
vendored
@@ -1,25 +1,28 @@
|
||||
<!-- See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice --> <!-- markdownlint-disable MD033 MD041 -->
|
||||
<details><summary>If the flagged items are :exploding_head: false positives</summary>
|
||||
|
||||
If items relate to a ...
|
||||
* binary file (or some other file you wouldn't want to check at all).
|
||||
<details><summary>If you see a bunch of garbage</summary>
|
||||
|
||||
Please add a file path to the `excludes.txt` file matching the containing file.
|
||||
If it relates to a ...
|
||||
<details><summary>well-formed pattern</summary>
|
||||
|
||||
File paths are Perl 5 Regular Expressions - you can [test](
|
||||
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
|
||||
See if there's a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it.
|
||||
|
||||
`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
|
||||
../tree/HEAD/README.md) (on whichever branch you're using).
|
||||
If not, try writing one and adding it to the `patterns.txt` file.
|
||||
|
||||
* well-formed pattern.
|
||||
|
||||
If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it,
|
||||
try adding it to the `patterns.txt` file.
|
||||
|
||||
Patterns are Perl 5 Regular Expressions - you can [test](
|
||||
Patterns are Perl 5 Regular Expressions - you can [test](
|
||||
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
|
||||
|
||||
Note that patterns can't match multiline strings.
|
||||
Note that patterns can't match multiline strings.
|
||||
</details>
|
||||
<details><summary>binary-ish string</summary>
|
||||
|
||||
Please add a file path to the `excludes.txt` file instead of just accepting the garbage.
|
||||
|
||||
File paths are Perl 5 Regular Expressions - you can [test](
|
||||
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
|
||||
|
||||
`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
|
||||
../tree/HEAD/README.md) (on whichever branch you're using).
|
||||
</details>
|
||||
|
||||
</details>
|
||||
|
||||
17
.github/actions/spelling/allow.txt
vendored
17
.github/actions/spelling/allow.txt
vendored
@@ -1,17 +0,0 @@
|
||||
built-ins
|
||||
github
|
||||
hakiri
|
||||
https
|
||||
Linting
|
||||
Microsoft
|
||||
ssh
|
||||
Statictastic
|
||||
statictastic
|
||||
ubuntu
|
||||
Wikipedia
|
||||
workaround
|
||||
workaround
|
||||
workarounds
|
||||
WSL
|
||||
decapcms
|
||||
tina
|
||||
|
||||
520
.github/actions/spelling/candidate.patterns
vendored
520
.github/actions/spelling/candidate.patterns
vendored
@@ -1,520 +0,0 @@
|
||||
# marker to ignore all code on line
|
||||
^.*/\* #no-spell-check-line \*/.*$
|
||||
# marker for ignoring a comment to the end of the line
|
||||
// #no-spell-check.*$
|
||||
|
||||
# patch hunk comments
|
||||
^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .*
|
||||
# git index header
|
||||
index [0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
|
||||
|
||||
# cid urls
|
||||
(['"])cid:.*?\g{-1}
|
||||
|
||||
# data url in parens
|
||||
\(data:[^)]*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\)
|
||||
# data url in quotes
|
||||
([`'"])data:.*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1}
|
||||
# data url
|
||||
data:[-a-zA-Z=;:/0-9+]*,\S*
|
||||
|
||||
# mailto urls
|
||||
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
|
||||
|
||||
# magnet urls
|
||||
magnet:[?=:\w]+
|
||||
|
||||
# magnet urls
|
||||
"magnet:[^"]+"
|
||||
|
||||
# obs:
|
||||
"obs:[^"]*"
|
||||
|
||||
# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read
|
||||
# In this examples content, I'm using a number of different ways to match things to show various approaches
|
||||
# asciinema
|
||||
\basciinema\.org/a/[0-9a-zA-Z]+
|
||||
|
||||
# apple
|
||||
\bdeveloper\.apple\.com/[-\w?=/]+
|
||||
# Apple music
|
||||
\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+
|
||||
|
||||
# appveyor api
|
||||
\bci\.appveyor\.com/api/projects/status/[0-9a-z]+
|
||||
# appveyor project
|
||||
\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+
|
||||
|
||||
# Amazon
|
||||
|
||||
# Amazon
|
||||
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
|
||||
# AWS S3
|
||||
\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]*
|
||||
# AWS execute-api
|
||||
\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b
|
||||
# AWS ELB
|
||||
\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b
|
||||
# AWS SNS
|
||||
\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/&#%_?:=]*
|
||||
# AWS VPC
|
||||
vpc-\w+
|
||||
|
||||
# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
|
||||
# YouTube url
|
||||
\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
|
||||
# YouTube music
|
||||
\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*)
|
||||
# YouTube tag
|
||||
<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
|
||||
# YouTube image
|
||||
\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
|
||||
# Google Accounts
|
||||
\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]*
|
||||
# Google Analytics
|
||||
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
|
||||
# Google APIs
|
||||
\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
|
||||
# Google Storage
|
||||
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
|
||||
# Google Calendar
|
||||
\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
|
||||
\w+\@group\.calendar\.google\.com\b
|
||||
# Google DataStudio
|
||||
\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
|
||||
# The leading `/` here is as opposed to the `\b` above
|
||||
# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
|
||||
# Google Docs
|
||||
/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|))
|
||||
# Google Drive
|
||||
\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]*
|
||||
# Google Groups
|
||||
\bgroups\.google\.com/(?:(?:forum/#!|d/)(?:msg|topics?|searchin)|a)/[^/\s"]+/[-a-zA-Z0-9$]+(?:/[-a-zA-Z0-9]+)*
|
||||
# Google Maps
|
||||
\bmaps\.google\.com/maps\?[\w&;=]*
|
||||
# Google themes
|
||||
themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
|
||||
# Google CDN
|
||||
\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
|
||||
# Goo.gl
|
||||
/goo\.gl/[a-zA-Z0-9]+
|
||||
# Google Chrome Store
|
||||
\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|)
|
||||
# Google Books
|
||||
\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=&#.]*
|
||||
# Google Fonts
|
||||
\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
|
||||
# Google Forms
|
||||
\bforms\.gle/\w+
|
||||
# Google Scholar
|
||||
\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
|
||||
# Google Colab Research Drive
|
||||
\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
|
||||
|
||||
# GitHub SHAs (api)
|
||||
\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
|
||||
# GitHub SHAs (markdown)
|
||||
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
|
||||
# GitHub SHAs
|
||||
\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b
|
||||
# GitHub wiki
|
||||
\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b
|
||||
# githubusercontent
|
||||
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
|
||||
# githubassets
|
||||
\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+)
|
||||
# gist github
|
||||
\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
|
||||
# git.io
|
||||
\bgit\.io/[0-9a-zA-Z]+
|
||||
# GitHub JSON
|
||||
"node_id": "[-a-zA-Z=;:/0-9+]*"
|
||||
# Contributor
|
||||
\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
|
||||
# GHSA
|
||||
GHSA(?:-[0-9a-z]{4}){3}
|
||||
|
||||
# GitLab commit
|
||||
\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b
|
||||
# GitLab merge requests
|
||||
\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b
|
||||
# GitLab uploads
|
||||
\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]*
|
||||
# GitLab commits
|
||||
\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
|
||||
|
||||
# binanace
|
||||
accounts.binance.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
|
||||
|
||||
# bitbucket diff
|
||||
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+
|
||||
# bitbucket repositories commits
|
||||
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
|
||||
# bitbucket commits
|
||||
\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
|
||||
|
||||
# bit.ly
|
||||
\bbit\.ly/\w+
|
||||
|
||||
# bitrise
|
||||
\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]*
|
||||
|
||||
# bootstrapcdn.com
|
||||
\bbootstrapcdn\.com/[-./\w]+
|
||||
|
||||
# cdn.cloudflare.com
|
||||
\bcdnjs\.cloudflare\.com/[./\w]+
|
||||
|
||||
# circleci
|
||||
\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+
|
||||
|
||||
# gitter
|
||||
\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+
|
||||
|
||||
# gravatar
|
||||
\bgravatar\.com/avatar/[0-9a-f]+
|
||||
|
||||
# ibm
|
||||
[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]*
|
||||
|
||||
# imgur
|
||||
\bimgur\.com/[^.]+
|
||||
|
||||
# Internet Archive
|
||||
\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*)
|
||||
|
||||
# discord
|
||||
/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
|
||||
|
||||
# Disqus
|
||||
\bdisqus\.com/[-\w/%.()!?&=_]*
|
||||
|
||||
# medium link
|
||||
\blink\.medium\.com/[a-zA-Z0-9]+
|
||||
# medium
|
||||
\bmedium\.com/\@?[^/\s"]+/[-\w]+
|
||||
|
||||
# microsoft
|
||||
\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
|
||||
# powerbi
|
||||
\bapp\.powerbi\.com/reportEmbed/[^"' ]*
|
||||
# vs devops
|
||||
\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
|
||||
# microsoft store
|
||||
\bmicrosoft\.com/store/apps/\w+
|
||||
|
||||
# mvnrepository.com
|
||||
\bmvnrepository\.com/[-0-9a-z./]+
|
||||
|
||||
# now.sh
|
||||
/[0-9a-z-.]+\.now\.sh\b
|
||||
|
||||
# oracle
|
||||
\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]*
|
||||
|
||||
# chromatic.com
|
||||
/\S+.chromatic.com\S*[")]
|
||||
|
||||
# codacy
|
||||
\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+
|
||||
|
||||
# compai
|
||||
\bcompai\.pub/v1/png/[0-9a-f]+
|
||||
|
||||
# mailgun api
|
||||
\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]*
|
||||
# mailgun
|
||||
\b[0-9a-z]+.mailgun.org
|
||||
|
||||
# /message-id/
|
||||
/message-id/[-\w@./%]+
|
||||
|
||||
# Reddit
|
||||
\breddit\.com/r/[/\w_]*
|
||||
|
||||
# requestb.in
|
||||
\brequestb\.in/[0-9a-z]+
|
||||
|
||||
# sched
|
||||
\b[a-z0-9]+\.sched\.com\b
|
||||
|
||||
# Slack url
|
||||
slack://[a-zA-Z0-9?&=]+
|
||||
# Slack
|
||||
\bslack\.com/[-0-9a-zA-Z/_~?&=.]*
|
||||
# Slack edge
|
||||
\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+
|
||||
# Slack images
|
||||
\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+
|
||||
|
||||
# shields.io
|
||||
\bshields\.io/[-\w/%?=&.:+;,]*
|
||||
|
||||
# stackexchange -- https://stackexchange.com/feeds/sites
|
||||
\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
|
||||
|
||||
# Sentry
|
||||
[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b
|
||||
|
||||
# Twitter markdown
|
||||
\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
|
||||
# Twitter hashtag
|
||||
\btwitter\.com/hashtag/[\w?_=&]*
|
||||
# Twitter status
|
||||
\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
|
||||
# Twitter profile images
|
||||
\btwimg\.com/profile_images/[_\w./]*
|
||||
# Twitter media
|
||||
\btwimg\.com/media/[-_\w./?=]*
|
||||
# Twitter link shortened
|
||||
\bt\.co/\w+
|
||||
|
||||
# facebook
|
||||
\bfburl\.com/[0-9a-z_]+
|
||||
# facebook CDN
|
||||
\bfbcdn\.net/[\w/.,]*
|
||||
# facebook watch
|
||||
\bfb\.watch/[0-9A-Za-z]+
|
||||
|
||||
# dropbox
|
||||
\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+
|
||||
|
||||
# ipfs protocol
|
||||
ipfs://[0-9a-z]*
|
||||
# ipfs url
|
||||
/ipfs/[0-9a-z]*
|
||||
|
||||
# w3
|
||||
\bw3\.org/[-0-9a-zA-Z/#.]+
|
||||
|
||||
# loom
|
||||
\bloom\.com/embed/[0-9a-f]+
|
||||
|
||||
# regex101
|
||||
\bregex101\.com/r/[^/\s"]+/\d+
|
||||
|
||||
# figma
|
||||
\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+
|
||||
|
||||
# freecodecamp.org
|
||||
\bfreecodecamp\.org/[-\w/.]+
|
||||
|
||||
# image.tmdb.org
|
||||
\bimage\.tmdb\.org/[/\w.]+
|
||||
|
||||
# mermaid
|
||||
\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+
|
||||
|
||||
# Wikipedia
|
||||
\ben\.wikipedia\.org/wiki/[-\w%.#]+
|
||||
|
||||
# gitweb
|
||||
[^"\s]+/gitweb/\S+;h=[0-9a-f]+
|
||||
|
||||
# HyperKitty lists
|
||||
/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/
|
||||
|
||||
# lists
|
||||
/thread\.html/[^"\s]+
|
||||
|
||||
# list-management
|
||||
\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+
|
||||
|
||||
# kubectl.kubernetes.io/last-applied-configuration
|
||||
"kubectl.kubernetes.io/last-applied-configuration": ".*"
|
||||
|
||||
# pgp
|
||||
\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]*
|
||||
|
||||
# Spotify
|
||||
\bopen\.spotify\.com/embed/playlist/\w+
|
||||
|
||||
# Mastodon
|
||||
\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]*
|
||||
|
||||
# scastie
|
||||
\bscastie\.scala-lang\.org/[^/]+/\w+
|
||||
|
||||
# images.unsplash.com
|
||||
\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+
|
||||
|
||||
# pastebin
|
||||
\bpastebin\.com/[\w/]+
|
||||
|
||||
# heroku
|
||||
\b\w+\.heroku\.com/source/archive/\w+
|
||||
|
||||
# quip
|
||||
\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)?
|
||||
|
||||
# badgen.net
|
||||
\bbadgen\.net/badge/[^")\]'\s]+
|
||||
|
||||
# statuspage.io
|
||||
\w+\.statuspage\.io\b
|
||||
|
||||
# media.giphy.com
|
||||
\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+
|
||||
|
||||
# tinyurl
|
||||
\btinyurl\.com/\w+
|
||||
|
||||
# getopts
|
||||
\bgetopts\s+(?:"[^"]+"|'[^']+')
|
||||
|
||||
# ANSI color codes
|
||||
(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m
|
||||
|
||||
# URL escaped characters
|
||||
\%[0-9A-F][A-F]
|
||||
# IPv6
|
||||
\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
|
||||
# c99 hex digits (not the full format, just one I've seen)
|
||||
0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
|
||||
# Punycode
|
||||
\bxn--[-0-9a-z]+
|
||||
# sha
|
||||
sha\d+:[0-9]*[a-f]{3,}[0-9a-f]*
|
||||
# sha-... -- uses a fancy capture
|
||||
(['"]|")[0-9a-f]{40,}\g{-1}
|
||||
# hex runs
|
||||
\b[0-9a-fA-F]{16,}\b
|
||||
# hex in url queries
|
||||
=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?&
|
||||
# ssh
|
||||
(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,}
|
||||
|
||||
# PGP
|
||||
\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b
|
||||
# GPG keys
|
||||
\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b
|
||||
# Well known gpg keys
|
||||
.well-known/openpgpkey/[\w./]+
|
||||
|
||||
# uuid:
|
||||
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
|
||||
# hex digits including css/html color classes:
|
||||
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
|
||||
# integrity
|
||||
integrity="sha\d+-[-a-zA-Z=;:/0-9+]{40,}"
|
||||
|
||||
# https://www.gnu.org/software/groff/manual/groff.html
|
||||
# man troff content
|
||||
\\f[BCIPR]
|
||||
# '
|
||||
\\\(aq
|
||||
|
||||
# .desktop mime types
|
||||
^MimeTypes?=.*$
|
||||
# .desktop localized entries
|
||||
^[A-Z][a-z]+\[[a-z]+\]=.*$
|
||||
# Localized .desktop content
|
||||
Name\[[^\]]+\]=.*
|
||||
|
||||
# IServiceProvider
|
||||
\bI(?=(?:[A-Z][a-z]{2,})+\b)
|
||||
|
||||
# crypt
|
||||
"\$2[ayb]\$.{56}"
|
||||
|
||||
# scrypt / argon
|
||||
\$(?:scrypt|argon\d+[di]*)\$\S+
|
||||
|
||||
# Input to GitHub JSON
|
||||
content: "[-a-zA-Z=;:/0-9+]*="
|
||||
|
||||
# Python stringprefix / binaryprefix
|
||||
# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
|
||||
(?<!')\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)'(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})
|
||||
|
||||
# Regular expressions for (P|p)assword
|
||||
\([A-Z]\|[a-z]\)[a-z]+
|
||||
|
||||
# JavaScript regular expressions
|
||||
# javascript test regex
|
||||
/.*/[gim]*\.test\(
|
||||
# javascript match regex
|
||||
\.match\(/[^/\s"]*/[gim]*\s*
|
||||
# javascript match regex
|
||||
\.match\(/\\[b].*?/[gim]*\s*\)(?:;|$)
|
||||
# javascript regex
|
||||
^\s*/\\[b].*/[gim]*\s*(?:\)(?:;|$)|,$)
|
||||
# javascript replace regex
|
||||
\.replace\(/[^/\s"]*/[gim]*\s*,
|
||||
|
||||
# Go regular expressions
|
||||
regexp?\.MustCompile\(`[^`]*`\)
|
||||
|
||||
# sed regular expressions
|
||||
sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2}
|
||||
|
||||
# go install
|
||||
go install(?:\s+[a-z]+\.[-@\w/.]+)+
|
||||
|
||||
# kubernetes pod status lists
|
||||
# https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase
|
||||
\w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+
|
||||
|
||||
# kubectl - pods in CrashLoopBackOff
|
||||
\w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+
|
||||
|
||||
# kubernetes object suffix
|
||||
-[0-9a-f]{10}-\w{5}\s
|
||||
|
||||
# posthog secrets
|
||||
posthog\.init\((['"])phc_[^"',]+\g{-1},
|
||||
|
||||
# xcode
|
||||
|
||||
# xcodeproject scenes
|
||||
(?:Controller|ID|id)="\w{3}-\w{2}-\w{3}"
|
||||
|
||||
# xcode api botches
|
||||
customObjectInstantitationMethod
|
||||
|
||||
# font awesome classes
|
||||
\.fa-[-a-z0-9]+
|
||||
|
||||
# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
|
||||
# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review -
|
||||
# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into:
|
||||
## Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary).
|
||||
## You could manually change `(?i)X...` to use `[Xx]...`
|
||||
## or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path)
|
||||
# Lorem
|
||||
(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*
|
||||
|
||||
# Non-English
|
||||
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
|
||||
|
||||
# French
|
||||
# This corpus only had capital letters, but you probably want lowercase ones as well.
|
||||
\b[LN]'+[a-z]{2,}\b
|
||||
|
||||
# latex
|
||||
\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+)
|
||||
|
||||
# the negative lookahead here is to allow catching 'templatesz' as a misspelling
|
||||
# but to otherwise recognize a Windows path with \templates\foo.template or similar:
|
||||
\\(?:necessary|r(?:eport|esolve[dr]?|esult)|t(?:arget|emplates?))(?![a-z])
|
||||
# ignore long runs of a single character:
|
||||
\b([A-Za-z])\g{-1}{3,}\b
|
||||
|
||||
# version suffix <word>v#
|
||||
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
|
||||
# Compiler flags (Scala)
|
||||
(?:^|[\t ,>"'`=(])-J-[DPWXY](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
|
||||
# Compiler flags
|
||||
(?:^|[\t ,"'`=(])-[DPWXYLlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
|
||||
# Compiler flags (linker)
|
||||
,-B
|
||||
# curl arguments
|
||||
\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
|
||||
# set arguments
|
||||
\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)*
|
||||
# tar arguments
|
||||
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
|
||||
# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
|
||||
\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
|
||||
# macOS temp folders
|
||||
/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/
|
||||
39
.github/actions/spelling/excludes.txt
vendored
39
.github/actions/spelling/excludes.txt
vendored
@@ -2,8 +2,6 @@
|
||||
|
||||
(?:^|/)(?i)COPYRIGHT
|
||||
(?:^|/)(?i)LICEN[CS]E
|
||||
(?:^|/)3rdparty/
|
||||
(?:^|/)go\.sum$
|
||||
(?:^|/)package(?:-lock|)\.json$
|
||||
(?:^|/)vendor/
|
||||
|
||||
@@ -11,52 +9,20 @@
|
||||
ignore$
|
||||
|
||||
\.avi$
|
||||
\.bmp$
|
||||
\.bz2$
|
||||
\.class$
|
||||
\.crt$
|
||||
\.dll$
|
||||
\.docx?$
|
||||
\.drawio$
|
||||
\.DS_Store$
|
||||
\.eot$
|
||||
\.exe$
|
||||
\.gif$
|
||||
\.gitattributes$
|
||||
\.graffle$
|
||||
\.gz$
|
||||
\.icns$
|
||||
\.ico$
|
||||
\.jar$
|
||||
\.jks$
|
||||
\.jpe?g$
|
||||
\.key$
|
||||
\.lib$
|
||||
\.lock$
|
||||
\.map$
|
||||
\.min\..
|
||||
\.min\.
|
||||
\.mod$
|
||||
\.mp[34]$
|
||||
\.o$
|
||||
\.ocf$
|
||||
\.otf$
|
||||
\.pdf$
|
||||
\.pem$
|
||||
\.png$
|
||||
\.psd$
|
||||
\.pyc$
|
||||
\.s$
|
||||
\.svgz?$
|
||||
\.tar$
|
||||
\.tiff?$
|
||||
\.svg$
|
||||
\.ttf$
|
||||
\.wav$
|
||||
\.webm$
|
||||
\.webp$
|
||||
\.woff$
|
||||
\.woff2$
|
||||
\.xlsx?$
|
||||
\.zip$
|
||||
|
||||
^docs/pages/redirects/github\.html$
|
||||
^lib/jekyll/mime\.types$
|
||||
@@ -67,4 +33,3 @@ ignore$
|
||||
^test/fixtures/webrick/bar/foo\.xhtml$
|
||||
^test/source/_posts/2009-06-22-no-yaml\.markdown$
|
||||
^\.github/
|
||||
^\Q.github/workflows/spelling.yml\E$
|
||||
|
||||
23
.github/actions/spelling/expect.txt
vendored
23
.github/actions/spelling/expect.txt
vendored
@@ -36,7 +36,6 @@ awscli
|
||||
backend
|
||||
backport
|
||||
backtick
|
||||
backticks
|
||||
barcamp
|
||||
baseurl
|
||||
bashrc
|
||||
@@ -52,7 +51,6 @@ bitbucket
|
||||
blog
|
||||
Blogger
|
||||
blogging
|
||||
blogs
|
||||
bonafide
|
||||
Bou
|
||||
breadcrumbs
|
||||
@@ -62,7 +60,6 @@ bridgetownrb
|
||||
brightbox
|
||||
brighterplanet
|
||||
buddyworks
|
||||
builtatlightspeed
|
||||
Bugfix
|
||||
Burela
|
||||
byparker
|
||||
@@ -131,7 +128,6 @@ Debian
|
||||
debuggability
|
||||
defunkt
|
||||
delegators
|
||||
dependabot
|
||||
deployer
|
||||
deps
|
||||
dest
|
||||
@@ -181,7 +177,6 @@ exe
|
||||
execjs
|
||||
extensionpack
|
||||
extname
|
||||
extnames
|
||||
exts
|
||||
favicon
|
||||
Fengyun
|
||||
@@ -207,7 +202,6 @@ formx
|
||||
Forwardable
|
||||
frameborder
|
||||
freenode
|
||||
frontend
|
||||
frontmatter
|
||||
fsnotify
|
||||
ftp
|
||||
@@ -318,7 +312,6 @@ Kewin
|
||||
keycdn
|
||||
kickster
|
||||
Kinnula
|
||||
kinsta
|
||||
kiwifruit
|
||||
Kolesky
|
||||
konklone
|
||||
@@ -382,7 +375,6 @@ mergable
|
||||
Mertcan
|
||||
mertkahyaoglu
|
||||
metadata
|
||||
metadatas
|
||||
microdata
|
||||
microsoft
|
||||
mimetype
|
||||
@@ -428,7 +420,6 @@ nakanishi
|
||||
namespace
|
||||
namespaced
|
||||
navbar
|
||||
navbars
|
||||
nbsp
|
||||
nearlyfreespeech
|
||||
nethack
|
||||
@@ -468,7 +459,6 @@ pathawks
|
||||
Pathutil
|
||||
paywall
|
||||
pdf
|
||||
PDFs
|
||||
Pelykh
|
||||
permalink
|
||||
PHP
|
||||
@@ -489,7 +479,6 @@ Posterous
|
||||
postfiles
|
||||
postlayout
|
||||
postmodern
|
||||
prefetching
|
||||
preinstalled
|
||||
prepends
|
||||
Prioritise
|
||||
@@ -520,8 +509,6 @@ redgreen
|
||||
redhat
|
||||
refactor
|
||||
refactoring
|
||||
refactorings
|
||||
Refactors
|
||||
Refheap
|
||||
regen
|
||||
regex
|
||||
@@ -564,7 +551,6 @@ Schwartzian
|
||||
scp
|
||||
screenshot
|
||||
scrollbar
|
||||
scrollbars
|
||||
scroller
|
||||
scss
|
||||
scssify
|
||||
@@ -578,9 +564,8 @@ setenv
|
||||
SFTP
|
||||
shingo
|
||||
shopify
|
||||
shortlinks
|
||||
shortlog
|
||||
Shoulda
|
||||
shoulda
|
||||
sieversii
|
||||
sigpipe
|
||||
simplecov
|
||||
@@ -623,7 +608,6 @@ subdir
|
||||
subdomain
|
||||
subfolder
|
||||
subfolderitems
|
||||
subfolders
|
||||
subnav
|
||||
subpages
|
||||
subpath
|
||||
@@ -663,7 +647,6 @@ throughs
|
||||
Tidelift
|
||||
timeago
|
||||
timezone
|
||||
timezones
|
||||
titleize
|
||||
TLS
|
||||
tmm
|
||||
@@ -702,7 +685,6 @@ uri
|
||||
url
|
||||
urlset
|
||||
username
|
||||
usernames
|
||||
usr
|
||||
utf
|
||||
utils
|
||||
@@ -744,7 +726,6 @@ woff
|
||||
wordpress
|
||||
Workaround
|
||||
workflow
|
||||
workflows
|
||||
wsl
|
||||
www
|
||||
xcode
|
||||
@@ -775,3 +756,5 @@ Zsh
|
||||
zshrc
|
||||
zypper
|
||||
zzot
|
||||
frontend
|
||||
prefetching
|
||||
|
||||
62
.github/actions/spelling/line_forbidden.patterns
vendored
62
.github/actions/spelling/line_forbidden.patterns
vendored
@@ -1,62 +0,0 @@
|
||||
# reject `m_data` as there's a certain OS which has evil defines that break things if it's used elsewhere
|
||||
# \bm_data\b
|
||||
|
||||
# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test,
|
||||
# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want
|
||||
# to use this:
|
||||
#\bfit\(
|
||||
|
||||
# s.b. GitHub
|
||||
\bGithub\b
|
||||
|
||||
# s.b. GitLab
|
||||
\bGitlab\b
|
||||
|
||||
# s.b. JavaScript
|
||||
\bJavascript\b
|
||||
|
||||
# s.b. Microsoft
|
||||
\bMicroSoft\b
|
||||
|
||||
# s.b. another
|
||||
\ban[- ]other\b
|
||||
|
||||
# s.b. greater than
|
||||
\bgreater then\b
|
||||
|
||||
# s.b. into
|
||||
#\sin to\s
|
||||
|
||||
# s.b. opt-in
|
||||
\sopt in\s
|
||||
|
||||
# s.b. less than
|
||||
\bless then\b
|
||||
|
||||
# s.b. otherwise
|
||||
\bother[- ]wise\b
|
||||
|
||||
# s.b. nonexistent
|
||||
\bnon existing\b
|
||||
\b[Nn]o[nt][- ]existent\b
|
||||
|
||||
# s.b. preexisting
|
||||
[Pp]re[- ]existing
|
||||
|
||||
# s.b. preempt
|
||||
[Pp]re[- ]empt\b
|
||||
|
||||
# s.b. preemptively
|
||||
[Pp]re[- ]emptively
|
||||
|
||||
# s.b. reentrancy
|
||||
[Rr]e[- ]entrancy
|
||||
|
||||
# s.b. reentrant
|
||||
[Rr]e[- ]entrant
|
||||
|
||||
# s.b. workaround(s)
|
||||
#\bwork[- ]arounds?\b
|
||||
|
||||
# Reject duplicate words
|
||||
\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s
|
||||
89
.github/actions/spelling/patterns.txt
vendored
89
.github/actions/spelling/patterns.txt
vendored
@@ -71,94 +71,5 @@ apiKey: '[a-f0-9]+'
|
||||
# hex digits including css/html color classes:
|
||||
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9a-fA-FgGrR_]{2,}(?:[uU]?[lL]{0,2}|u\d+)\b
|
||||
|
||||
# Automatically suggested patterns
|
||||
# hit-count: 23 file-count: 15
|
||||
# GitHub SHAs (markdown)
|
||||
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
|
||||
|
||||
# hit-count: 7 file-count: 4
|
||||
# Wikipedia
|
||||
\ben\.wikipedia\.org/wiki/[-\w%.#]+
|
||||
|
||||
# hit-count: 5 file-count: 3
|
||||
# Non-English
|
||||
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
|
||||
|
||||
# hit-count: 4 file-count: 4
|
||||
# Twitter status
|
||||
\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
|
||||
|
||||
# hit-count: 3 file-count: 3
|
||||
# stackexchange -- https://stackexchange.com/feeds/sites
|
||||
\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
|
||||
|
||||
# hit-count: 3 file-count: 2
|
||||
# vs devops
|
||||
\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
|
||||
|
||||
# hit-count: 2 file-count: 2
|
||||
# mailto urls
|
||||
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
|
||||
|
||||
# hit-count: 2 file-count: 2
|
||||
# githubusercontent
|
||||
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
|
||||
|
||||
# hit-count: 2 file-count: 2
|
||||
# hex runs
|
||||
\b[0-9a-fA-F]{16,}\b
|
||||
|
||||
# hit-count: 2 file-count: 2
|
||||
# curl arguments
|
||||
\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
|
||||
|
||||
# hit-count: 2 file-count: 1
|
||||
# microsoft
|
||||
\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
|
||||
|
||||
# hit-count: 1 file-count: 1
|
||||
# Amazon
|
||||
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
|
||||
|
||||
# hit-count: 1 file-count: 1
|
||||
# gist github
|
||||
\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
|
||||
|
||||
# hit-count: 1 file-count: 1
|
||||
# Contributor
|
||||
\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
|
||||
|
||||
# hit-count: 1 file-count: 1
|
||||
# medium
|
||||
\bmedium\.com/\@?[^/\s"]+/[-\w]+
|
||||
|
||||
# hit-count: 1 file-count: 1
|
||||
# Twitter markdown
|
||||
\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
|
||||
|
||||
# Questionably acceptable forms of `in to`
|
||||
# Personally, I prefer `log into`, but people object
|
||||
# https://www.tprteaching.com/log-into-log-in-to-login/
|
||||
\b[Ll]og in to\b
|
||||
|
||||
# acceptable duplicates
|
||||
# ls directory listings
|
||||
[-bcdlpsw](?:[-r][-w][-sx]){3}\s+\d+\s+(\S+)\s+\g{-1}\s+\d+\s+
|
||||
# C types and repeated CSS values
|
||||
\s(center|div|inherit|long|LONG|none|normal|solid|thin|transparent|very)(?: \g{-1})+\s
|
||||
# go templates
|
||||
\s(\w+)\s+\g{-1}\s+\`(?:graphql|json|yaml):
|
||||
# javadoc / .net
|
||||
(?:[\\@](?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s
|
||||
|
||||
# Commit message -- Signed-off-by and friends
|
||||
^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$
|
||||
|
||||
# Autogenerated revert commit message
|
||||
^This reverts commit [0-9a-f]{40}\.$
|
||||
|
||||
# ignore long runs of a single character:
|
||||
\b([A-Za-z])\g{-1}{3,}\b
|
||||
|
||||
# ignore inline code
|
||||
`\w+`
|
||||
|
||||
11
.github/actions/spelling/reject.txt
vendored
11
.github/actions/spelling/reject.txt
vendored
@@ -1,10 +1,7 @@
|
||||
^attache$
|
||||
benefitting
|
||||
occurences?
|
||||
^dependan.*
|
||||
^oer$
|
||||
occurence
|
||||
Sorce
|
||||
^[Ss]pae.*
|
||||
^untill$
|
||||
^untilling$
|
||||
^wether.*
|
||||
^[Ss]pae
|
||||
^untill
|
||||
^wether
|
||||
|
||||
2
.github/first-timers-issue-template.md
vendored
2
.github/first-timers-issue-template.md
vendored
@@ -2,7 +2,7 @@
|
||||
|
||||
This issue is reserved for people who never contributed to Open Source before. We know that the process of creating a pull request is the biggest barrier for new contributors. This issue is for you 💝
|
||||
|
||||
[About First Timers Only](https://www.firsttimersonly.com/).
|
||||
[About First Timers Only](http://www.firsttimersonly.com/).
|
||||
|
||||
### 🤔 What you will need to know.
|
||||
|
||||
|
||||
88
.github/workflows/ci.yml
vendored
88
.github/workflows/ci.yml
vendored
@@ -5,78 +5,66 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
paths-ignore:
|
||||
- "docs/**"
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
paths-ignore:
|
||||
- "docs/**"
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: "Run Tests (${{ matrix.ruby.label }} on ${{ matrix.os.label }})"
|
||||
runs-on: ${{ matrix.os.image }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
ruby:
|
||||
- label: Ruby 2.7
|
||||
version: "2.7"
|
||||
- label: Ruby 3.3
|
||||
version: "3.3"
|
||||
os:
|
||||
- label: Linux
|
||||
image: "ubuntu-latest"
|
||||
- label: Windows
|
||||
image: "windows-latest"
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: "Set up ${{ matrix.ruby.label }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby.version }}
|
||||
bundler-cache: true
|
||||
- name: Run Minitest based tests
|
||||
run: bash script/test
|
||||
- name: Run Cucumber based tests
|
||||
run: bash script/cucumber --color
|
||||
- name: Generate and Build a new site
|
||||
run: bash script/default-site
|
||||
|
||||
xtras:
|
||||
name: "${{ matrix.job_name }} (${{ matrix.setup_label }})"
|
||||
name: "Run Tests (${{ matrix.label }})"
|
||||
runs-on: "ubuntu-latest"
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- label: Ruby 2.7
|
||||
ruby_version: "2.7"
|
||||
- label: Ruby 3.0
|
||||
ruby_version: "3.0"
|
||||
- label: Ruby 3.1
|
||||
ruby_version: "3.1"
|
||||
- label: JRuby 9.3.4.0
|
||||
ruby_version: "jruby-9.3.4.0"
|
||||
- label: Liquid 4
|
||||
ruby_version: 3.1
|
||||
liquid_version: "~> 4.0"
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
- name: "Set up ${{ matrix.label }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby_version }}
|
||||
bundler-cache: true
|
||||
env:
|
||||
LIQUID_VERSION: ${{ matrix.liquid_version }}
|
||||
- name: Run Minitest based tests
|
||||
run: bash script/test
|
||||
- name: Run Cucumber based tests
|
||||
run: bash script/cucumber
|
||||
- name: Generate and Build a new site
|
||||
run: bash script/default-site
|
||||
|
||||
xtras:
|
||||
name: "${{ matrix.job_name }} (Ruby ${{ matrix.ruby_version }})"
|
||||
runs-on: "ubuntu-latest"
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- job_name: "Unit Test with JRuby"
|
||||
setup_label: "JRuby 9.4.8.0"
|
||||
step_name: "Run Minitest based tests"
|
||||
script_file: "test"
|
||||
ruby_version: "jruby-9.4.8.0"
|
||||
- job_name: "Smoke Test with JRuby"
|
||||
setup_label: "JRuby 9.4.8.0"
|
||||
step_name: "Generate and Build a new site"
|
||||
script_file: "default-site"
|
||||
ruby_version: "jruby-9.4.8.0"
|
||||
- job_name: "Profile Docs Site"
|
||||
setup_label: "Ruby 2.7"
|
||||
step_name: "Build and Profile docs site"
|
||||
script_file: "profile-docs"
|
||||
ruby_version: "2.7"
|
||||
- job_name: "Style Check"
|
||||
setup_label: "Ruby 2.7"
|
||||
step_name: "Run RuboCop"
|
||||
script_file: "fmt"
|
||||
ruby_version: "2.7"
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: "Set up ${{ matrix.setup_label }}"
|
||||
uses: actions/checkout@v3
|
||||
- name: "Set up Ruby ${{ matrix.ruby_version }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby_version }}
|
||||
|
||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
- 2.7
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
- name: "Set up Ruby ${{ matrix.ruby_version }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
|
||||
88
.github/workflows/spelling.yml
vendored
88
.github/workflows/spelling.yml
vendored
@@ -1,90 +1,22 @@
|
||||
name: Spell Check
|
||||
|
||||
# Comment management is handled through a secondary job, for details see:
|
||||
# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
|
||||
#
|
||||
# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
|
||||
# (in odd cases, it might actually run just to collapse a comment, but that's fairly rare)
|
||||
# it needs `contents: write` in order to add a comment.
|
||||
#
|
||||
# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
|
||||
# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
|
||||
# it needs `pull-requests: write` in order to manipulate those comments.
|
||||
|
||||
# Updating pull request branches is managed via comment handling.
|
||||
# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
|
||||
#
|
||||
# These elements work together to make it happen:
|
||||
#
|
||||
# `on.issue_comment`
|
||||
# This event listens to comments by users asking to update the metadata.
|
||||
#
|
||||
# `jobs.update`
|
||||
# This job runs in response to an issue_comment and will push a new commit
|
||||
# to update the spelling metadata.
|
||||
#
|
||||
# `with.experimental_apply_changes_via_bot`
|
||||
# Tells the action to support and generate messages that enable it
|
||||
# to make a commit to update the spelling metadata.
|
||||
#
|
||||
# `with.ssh_key`
|
||||
# In order to trigger workflows when the commit is made, you can provide a
|
||||
# secret (typically, a write-enabled github deploy key).
|
||||
#
|
||||
# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
# Switch from `pull_request_target` event to reduce distraction from comments
|
||||
# regarding errors reported in unmodified files.
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
tags-ignore:
|
||||
- "**"
|
||||
types:
|
||||
- 'opened'
|
||||
- 'reopened'
|
||||
- 'synchronize'
|
||||
|
||||
jobs:
|
||||
spelling:
|
||||
build:
|
||||
name: Spell Check
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
actions: read
|
||||
outputs:
|
||||
followup: ${{ steps.spelling.outputs.followup }}
|
||||
runs-on: ubuntu-latest
|
||||
if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'"
|
||||
concurrency:
|
||||
group: spelling-${{ github.event.pull_request.number || github.ref }}
|
||||
# note: If you use only_check_changed_files, you do not want cancel-in-progress
|
||||
cancel-in-progress: true
|
||||
runs-on: "ubuntu-latest"
|
||||
steps:
|
||||
- name: check-spelling
|
||||
id: spelling
|
||||
uses: check-spelling/check-spelling@v0.0.21
|
||||
with:
|
||||
# This workflow runs in response to both `push` and `pull_request`, if there's an open `pull_request` in the same repository for a given branch, there's no reason to spend resources checking both the `push` and the `pull_request`, so this flag tells the action while running for the `push` to find the `pull_request` and stop working early:
|
||||
suppress_push_for_open_pull_request: 1
|
||||
# The action will manage checking out the repository itself instead of requiring the workflow to use `actions/checkout...`:
|
||||
checkout: true
|
||||
# If running without `: write`, posting a comment won't work, and for security `: write` permissions are left to a distinct (optional) job, here we skip trying to post a comment:
|
||||
post_comment: 0
|
||||
use_magic_file: 1
|
||||
extra_dictionary_limit: 10
|
||||
extra_dictionaries:
|
||||
cspell:software-terms/src/software-terms.txt
|
||||
cspell:php/php.txt
|
||||
cspell:node/node.txt
|
||||
cspell:django/django.txt
|
||||
cspell:html/html.txt
|
||||
cspell:npm/npm.txt
|
||||
cspell:ruby/ruby.txt
|
||||
cspell:fullstack/fullstack.txt
|
||||
cspell:filetypes/filetypes.txt
|
||||
check_extra_dictionaries: ''
|
||||
|
||||
# This workflow has opted not to use comments (users can view the report in GitHub Step Summary)
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
- name: Check Spellings
|
||||
uses: check-spelling/check-spelling@v0.0.19
|
||||
|
||||
69
.rubocop.yml
69
.rubocop.yml
@@ -25,11 +25,8 @@ AllCops:
|
||||
- vendor/**/*
|
||||
- tmp/**/*
|
||||
|
||||
Gemspec/DeprecatedAttributeAssignment:
|
||||
Gemspec/DateAssignment:
|
||||
Enabled: true
|
||||
Gemspec/RequireMFA:
|
||||
Enabled: false
|
||||
|
||||
Layout/BeginEndAlignment:
|
||||
Enabled: true
|
||||
Layout/EmptyComment:
|
||||
@@ -46,12 +43,6 @@ Layout/HashAlignment:
|
||||
EnforcedHashRocketStyle: table
|
||||
Layout/IndentationWidth:
|
||||
Severity: error
|
||||
Layout/LineContinuationLeadingSpace:
|
||||
Enabled: true
|
||||
Layout/LineContinuationSpacing:
|
||||
Enabled: true
|
||||
Layout/LineEndStringConcatenationIndentation:
|
||||
Enabled: true
|
||||
Layout/LineLength:
|
||||
Exclude:
|
||||
- !ruby/regexp /features\/.*.rb/
|
||||
@@ -75,18 +66,12 @@ Layout/SpaceInsideHashLiteralBraces:
|
||||
|
||||
Lint/AmbiguousAssignment:
|
||||
Enabled: true
|
||||
Lint/AmbiguousOperatorPrecedence:
|
||||
Enabled: true
|
||||
Lint/AmbiguousRange:
|
||||
Enabled: true
|
||||
Lint/BinaryOperatorWithIdenticalOperands:
|
||||
Enabled: true
|
||||
Lint/ConstantDefinitionInBlock:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
Lint/ConstantOverwrittenInRescue:
|
||||
Enabled: true
|
||||
Lint/DeprecatedConstants:
|
||||
Enabled: true
|
||||
Lint/DeprecatedOpenSSLConstant:
|
||||
@@ -138,10 +123,6 @@ Lint/RedundantDirGlobSort:
|
||||
Enabled: true
|
||||
Lint/RedundantSafeNavigation:
|
||||
Enabled: true
|
||||
Lint/RequireRangeParentheses:
|
||||
Enabled: true
|
||||
Lint/RequireRelativeSelfPath:
|
||||
Enabled: true
|
||||
Lint/SelfAssignment:
|
||||
Enabled: true
|
||||
Lint/StructNewOverride:
|
||||
@@ -206,8 +187,6 @@ Metrics/ParameterLists:
|
||||
Metrics/PerceivedComplexity:
|
||||
Max: 13
|
||||
|
||||
Minitest/AssertEmptyLiteral:
|
||||
Enabled: false
|
||||
Minitest/AssertInDelta:
|
||||
Enabled: true
|
||||
Minitest/AssertionInLifecycleHook:
|
||||
@@ -220,8 +199,6 @@ Minitest/AssertPathExists:
|
||||
Enabled: true
|
||||
Minitest/AssertSilent:
|
||||
Enabled: true
|
||||
Minitest/AssertWithExpectedArgument:
|
||||
Enabled: true
|
||||
Minitest/LiteralAsActualArgument:
|
||||
Enabled: true
|
||||
Minitest/TestMethodName:
|
||||
@@ -234,10 +211,10 @@ Minitest/RefuteKindOf:
|
||||
Enabled: true
|
||||
Minitest/RefutePathExists:
|
||||
Enabled: true
|
||||
Minitest/UnreachableAssertion:
|
||||
Enabled: true
|
||||
Minitest/UnspecifiedException:
|
||||
Enabled: true
|
||||
Minitest/AssertEmptyLiteral:
|
||||
Enabled: false
|
||||
|
||||
Naming/FileName:
|
||||
Enabled: false
|
||||
@@ -265,16 +242,10 @@ Performance/CollectionLiteralInLoop:
|
||||
Enabled: true
|
||||
Performance/ConstantRegexp:
|
||||
Enabled: true
|
||||
Performance/MapCompact:
|
||||
Enabled: true
|
||||
Performance/MethodObjectAsBlock:
|
||||
Enabled: true
|
||||
Performance/RedundantEqualityComparisonBlock:
|
||||
Enabled: false
|
||||
Performance/RedundantSortBlock:
|
||||
Enabled: true
|
||||
Performance/RedundantSplitRegexpArgument:
|
||||
Enabled: true
|
||||
Performance/RedundantStringChars:
|
||||
Enabled: true
|
||||
Performance/ReverseFirst:
|
||||
@@ -283,8 +254,6 @@ Performance/SortReverse:
|
||||
Enabled: false
|
||||
Performance/Squeeze:
|
||||
Enabled: true
|
||||
Performance/StringIdentifierArgument:
|
||||
Enabled: true
|
||||
Performance/StringInclude:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
@@ -292,10 +261,6 @@ Performance/StringInclude:
|
||||
Performance/Sum:
|
||||
Enabled: true
|
||||
|
||||
Security/CompoundHash:
|
||||
Enabled: true
|
||||
Security/IoMethods:
|
||||
Enabled: true
|
||||
Security/MarshalLoad:
|
||||
Exclude:
|
||||
- !ruby/regexp /test\/.*.rb$/
|
||||
@@ -338,20 +303,12 @@ Style/Documentation:
|
||||
Enabled: false
|
||||
Style/DoubleNegation:
|
||||
Enabled: false
|
||||
Style/EmptyHeredoc:
|
||||
Enabled: true
|
||||
Style/EndlessMethod:
|
||||
Enabled: true
|
||||
Style/ExplicitBlockArgument:
|
||||
Enabled: false
|
||||
Style/ExponentialNotation:
|
||||
Enabled: true
|
||||
Style/EnvHome:
|
||||
Enabled: true
|
||||
Style/FetchEnvVar:
|
||||
Enabled: false
|
||||
Style/FileRead:
|
||||
Enabled: false
|
||||
Style/FormatStringToken:
|
||||
Exclude:
|
||||
- lib/jekyll/utils/ansi.rb
|
||||
@@ -359,8 +316,6 @@ Style/FormatStringToken:
|
||||
- lib/jekyll/profiler.rb
|
||||
Style/FrozenStringLiteralComment:
|
||||
EnforcedStyle: always
|
||||
Style/FileWrite:
|
||||
Enabled: true
|
||||
Style/GlobalStdStream:
|
||||
Enabled: true
|
||||
Style/GuardClause:
|
||||
@@ -386,12 +341,6 @@ Style/IfWithBooleanLiteralBranches:
|
||||
Enabled: true
|
||||
Style/KeywordParametersOrder:
|
||||
Enabled: true
|
||||
Style/MagicCommentFormat:
|
||||
Enabled: true
|
||||
Style/MapCompactWithConditionalBlock:
|
||||
Enabled: true
|
||||
Style/MapToHash:
|
||||
Enabled: true
|
||||
Style/MixinUsage:
|
||||
Exclude:
|
||||
- test/helper.rb
|
||||
@@ -401,14 +350,10 @@ Style/MultilineTernaryOperator:
|
||||
Severity: error
|
||||
Style/NegatedIfElseCondition:
|
||||
Enabled: true
|
||||
Style/NestedFileDirname:
|
||||
Enabled: true
|
||||
Style/NilLambda:
|
||||
Enabled: true
|
||||
Style/OptionalBooleanParameter:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/log_adapter.rb
|
||||
Style/PercentLiteralDelimiters:
|
||||
PreferredDelimiters:
|
||||
"%Q": "{}"
|
||||
@@ -418,8 +363,6 @@ Style/PercentLiteralDelimiters:
|
||||
"%s": ()
|
||||
"%w": ()
|
||||
"%x": ()
|
||||
Style/QuotedSymbols:
|
||||
Enabled: true
|
||||
Style/RedundantArgument:
|
||||
Enabled: true
|
||||
Style/RedundantAssignment:
|
||||
@@ -428,18 +371,12 @@ Style/RedundantFetchBlock:
|
||||
Enabled: false
|
||||
Style/RedundantFileExtensionInRequire:
|
||||
Enabled: true
|
||||
Style/RedundantInitialize:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/plugin.rb
|
||||
Style/RedundantRegexpCharacterClass:
|
||||
Enabled: true
|
||||
Style/RedundantRegexpEscape:
|
||||
Enabled: true
|
||||
Style/RedundantSelfAssignment:
|
||||
Enabled: true
|
||||
Style/RedundantSelfAssignmentBranch:
|
||||
Enabled: true
|
||||
Style/RegexpLiteral:
|
||||
EnforcedStyle: percent_r
|
||||
Style/RescueModifier:
|
||||
|
||||
22
Gemfile
22
Gemfile
@@ -5,6 +5,10 @@ gemspec :name => "jekyll"
|
||||
|
||||
gem "rake", "~> 13.0"
|
||||
|
||||
if ENV["LIQUID_VERSION"] && ENV["LIQUID_VERSION"] != ""
|
||||
gem "liquid", ENV["LIQUID_VERSION"]
|
||||
end
|
||||
|
||||
group :development do
|
||||
gem "launchy", "~> 2.3"
|
||||
gem "pry"
|
||||
@@ -15,8 +19,7 @@ end
|
||||
#
|
||||
|
||||
group :test do
|
||||
gem "activesupport", "~> 7.0.0"
|
||||
gem "cucumber", "~> 9.0"
|
||||
gem "cucumber", RUBY_VERSION >= "2.5" ? "~> 5.1.2" : "~> 4.1"
|
||||
gem "httpclient"
|
||||
gem "jekyll_test_plugin"
|
||||
gem "jekyll_test_plugin_malicious"
|
||||
@@ -24,7 +27,7 @@ group :test do
|
||||
gem "nokogiri", "~> 1.7"
|
||||
gem "rspec"
|
||||
gem "rspec-mocks"
|
||||
gem "rubocop", "~> 1.37.0"
|
||||
gem "rubocop", "~> 1.26.0"
|
||||
gem "rubocop-minitest"
|
||||
gem "rubocop-performance"
|
||||
gem "rubocop-rake"
|
||||
@@ -76,6 +79,7 @@ group :jekyll_optional_dependencies do
|
||||
gem "kramdown-syntax-coderay"
|
||||
gem "matrix"
|
||||
gem "mime-types", "~> 3.0"
|
||||
gem "rdoc", "~> 6.3.0"
|
||||
gem "tomlrb"
|
||||
|
||||
platforms :ruby, :mswin, :mingw, :x64_mingw do
|
||||
@@ -94,18 +98,6 @@ end
|
||||
|
||||
#
|
||||
|
||||
group :rdoc, :optional => true do
|
||||
# Psych 5 has stopped bundling `libyaml` and expects it to be installed on the host system prior
|
||||
# to being invoked.
|
||||
# Since we don't have a direct dependency on the Psych gem (it gets included in the gem bundle as
|
||||
# a dependency of the `rdoc` gem), lock psych gem to v4.x instead of installing `libyaml` in our
|
||||
# development / CI environment.
|
||||
gem "psych", "~> 4.0"
|
||||
gem "rdoc", "~> 6.0"
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
group :site do
|
||||
gem "html-proofer", "~> 3.4" if ENV["PROOF"]
|
||||
|
||||
|
||||
182
History.markdown
182
History.markdown
@@ -1,124 +1,6 @@
|
||||
## HEAD
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Backport #9737 for v4.3.x: Fix expected markup per WAI-ARIA requirements (#9738)
|
||||
* Backport #9742 for v4.3.x: Add an optional `:rdoc` group of gems (#9744)
|
||||
* Backport #9747 for v4.3.x: Bump cucumber to v9 (#9752)
|
||||
|
||||
## 4.3.4 / 2024-09-16
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Backport #9662 for v4.3.x: Relax version constraint on wdm in new Gemfile (#9683)
|
||||
* Backport #9680 for v4.3.x: Render theme-gem root only in development (#9684)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Sync workflows with counterparts on `master` (#9681)
|
||||
|
||||
## 4.3.3 / 2023-12-27
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Backport #9392 for v4.3.x: Fix backward compatibility issues in the Logger (#9510)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Backport #9237 for v4.3.x: Use Hash explicitly for Struct initializer (#9285)
|
||||
|
||||
## 4.3.2 / 2023-01-20
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Backport #9257 for v4.3.x: Rename sass partial created for new blank site (#9262)
|
||||
* Backport #9187 for v4.3.x: Optimize `Site#each_site_file` (#9256)
|
||||
* Backport #9186 for v4.3.x: Remove totals in profile table properly (#9255)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Backport #9223 for 4.3.x: Update sass related tests for jekyll-sass-converter 3.x (#9254)
|
||||
|
||||
## 4.3.1 / 2022-10-26
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Respect user-defined name attribute in documents (#9167)
|
||||
* Revert "Incrementally rebuild when a data file is changed" (#9170)
|
||||
|
||||
### Documentation
|
||||
|
||||
* Release post for v4.3.1 (#9171)
|
||||
|
||||
## 4.3.0 / 2022-10-20
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Add webrick as a dependency (#8524)
|
||||
* Regenerate supported mime types (#8542)
|
||||
* Update include tag to be more permissive (#8618)
|
||||
* Optimize `Jekyll::Utils.parse_date` (#8425)
|
||||
* Update rubocop from 1.12 to 1.18 and min ruby from 2.4 to 2.5 (#8741)
|
||||
* Always hide cache-dir contents from Git (#8798)
|
||||
* Remove the warning about auto-regeneration on Windows (#8821)
|
||||
* Propagate _data folder from theme (#8815)
|
||||
* Support both tzinfo v1 and v2 along with non-half hour offsets. (#8880)
|
||||
* Run vendor-mimes to update mime.types (#8940)
|
||||
* Expose collection static files via `site.static_files` (#8961)
|
||||
* Expose `basename` from `document.rb` as `name` to Liquid templates (#8761)
|
||||
* Allow Configurable Converters on CSV (#8858)
|
||||
* Introduce `theme` drop to expose theme-gem details (#9129)
|
||||
* Relax version constraint to allow Rouge 4.x (#9134)
|
||||
* Incrementally rebuild when a data file is changed (#8771)
|
||||
* Support jekyll-sass-converter 3.x (#9132)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fix: pin rubocop to 1.12 due to error with ruby 2.4 (#8651)
|
||||
* Load Jekyll plugins from BUNDLE_GEMFILE location (#8585)
|
||||
* fix(security): CVE-2021-28834 (#8680)
|
||||
* Inject livereload script using `location.protocol` instead of `http:` (#8718)
|
||||
* Respect collections_dir config within include tag (#8756)
|
||||
* Fix regression in Convertible module from v4.2.0 (#8786)
|
||||
* Revert #7253: "Don't reset site.url to localhost:4000 by default" (#8620)
|
||||
* Improve readability of CI logs (#8877)
|
||||
* Fix deprecation message for missing doc method (#8960)
|
||||
* Fix response header for content served via `jekyll serve` (#8965)
|
||||
* Trigger livereload in sites without pages (#8337)
|
||||
* Only enable BOM encoding option on UTF encodings (#8363)
|
||||
* Ensure theme config is a `Jekyll::Configuration` object (#8988)
|
||||
* Remove misleading totals row from `--profile` table (#9039)
|
||||
* Unlock Psych dependency (#9135)
|
||||
* Fix false positive conflicts for static files in a collection (#9141)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* style: enable new cops (#8538)
|
||||
* Allow dependabot to keep github actions up-to-date (#8540)
|
||||
* Update actions/cache requirement to v2.1.3 (#8543)
|
||||
* Pin rubocop version (#8564)
|
||||
* style: add rubocop 1.9 cops (#8567)
|
||||
* Cross Version Testing Locally and Faster CI (#8610)
|
||||
* Use official Ruby setup GH action (#8614)
|
||||
* Spell check action for markdown documentation (#8675)
|
||||
* Update expect to cover docs/_posts (#8677)
|
||||
* Bump check-spelling/check-spelling from 0.0.18 to 0.0.19 (#8740)
|
||||
* Enable Rubocop accessor grouping, fix existing offenses (#8293)
|
||||
* Tags:Highlight: Decomposed HTMLLegacy formatter (#8623)
|
||||
* Relax Rubocop Dependency (#8831)
|
||||
* Add a workflow to build gems consistently (#8830)
|
||||
* Fix random test failures in TestExcerpt #to_liquid (#8884)
|
||||
* Lock gem `psych` to `v3.x` (#8918)
|
||||
* Fix typo in Bug Report template (#8951)
|
||||
* Check symlink outside site_source without Pathutil (#9015)
|
||||
* Stop testing with Rubies older than 2.7 on non-Windows (#8955)
|
||||
* Bump actions/checkout from 2 to 3 (#8986)
|
||||
* Remove git.io shortlinks from repo (#9045)
|
||||
* Bump rubocop to 1.32 (#9093)
|
||||
* Bump RuboCop to `1.36.x` (#9125)
|
||||
* Use check-spelling/check-spelling@v0.0.20 (#9111)
|
||||
* Disable pending cops when running rubocop (#9136)
|
||||
* Relax RDoc version dependency (#9142)
|
||||
|
||||
### Documentation
|
||||
|
||||
@@ -136,7 +18,7 @@
|
||||
* docs: troubleshoot macOS with ARM64 architecture (#8560)
|
||||
* docs: add overview of .jekyll-cache dir (#8648)
|
||||
* docs: clarify where .jekyll-metadata comes from (#8646)
|
||||
* Razorops CI/CD added (#8656)
|
||||
* Razorops cicd added (#8656)
|
||||
* Specify default port and host for serve commands in docs (#8624)
|
||||
* Update third-party.md (#8652)
|
||||
* Add documentation for Sass configuration options (#8587)
|
||||
@@ -164,7 +46,7 @@
|
||||
* Add Security Policy document (#8823)
|
||||
* Manage repository meta documents consistently (#8908)
|
||||
* docs: add Layer0 deployment guide (#8915)
|
||||
* docs: Update README generated by `jekyll new-theme` (#8919)
|
||||
* docs: Update REAMDE generated by `jekyll new-theme` (#8919)
|
||||
* Update resources.md (#8925)
|
||||
* Rewrite documentation on installing plugins (#8921)
|
||||
* Improve maintainers guide on releasing a new version (#8928)
|
||||
@@ -183,13 +65,59 @@
|
||||
* Simplify macOS installation docs (#8993)
|
||||
* Improve document about Github Actions section (#8853)
|
||||
* Update permalinks.md (#9017)
|
||||
* Add clarity to docs on permalinks placeholders and built-ins (#8995)
|
||||
* Remove Ionic Framework site from showcase (#9057)
|
||||
* Windows: describe which option to choose (#9049)
|
||||
* Improve links (http -> https) (#9064)
|
||||
* Update ruby version for macos guide (#9086)
|
||||
* Update posts.md (#9151)
|
||||
* Release post for v4.3.0 (#9157)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Add webrick as a dependency (#8524)
|
||||
* fix: pin rubocop to 1.12 due to error with ruby 2.4 (#8651)
|
||||
* Load Jekyll plugins from BUNDLE_GEMFILE location (#8585)
|
||||
* fix(security): CVE-2021-28834 (#8680)
|
||||
* Inject livereload script using `location.protocol` instead of `http:` (#8718)
|
||||
* Respect collections_dir config within include tag (#8756)
|
||||
* Fix regression in Convertible module from v4.2.0 (#8786)
|
||||
* Revert #7253: "Don't reset site.url to localhost:4000 by default" (#8620)
|
||||
* Improve readability of CI logs (#8877)
|
||||
* Fix deprecation message for missing doc method (#8960)
|
||||
* Fix response header for content served via `jekyll serve` (#8965)
|
||||
* Trigger livereload in sites without pages (#8337)
|
||||
* Only enable BOM encoding option on UTF encodings (#8363)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* style: enable new cops (#8538)
|
||||
* Allow dependabot to keep github actions up-to-date (#8540)
|
||||
* Update actions/cache requirement to v2.1.3 (#8543)
|
||||
* Pin rubocop version (#8564)
|
||||
* style: add rubocop 1.9 cops (#8567)
|
||||
* Cross Version Testing Locally and Faster CI (#8610)
|
||||
* Use official Ruby setup GH action (#8614)
|
||||
* Spell check action for markdown documentation (#8675)
|
||||
* Update expect to cover docs/_posts (#8677)
|
||||
* Enable Rubocop accessor grouping, fix existing offenses (#8293)
|
||||
* Tags:Highlight: Decomposed HTMLLegacy formatter (#8623)
|
||||
* Relax Rubocop Dependency (#8831)
|
||||
* Add a workflow to build gems consistently (#8830)
|
||||
* Fix random test failures in TestExcerpt #to_liquid (#8884)
|
||||
* Lock gem `psych` to `v3.x` (#8918)
|
||||
* Fix typo in Bug Report template (#8951)
|
||||
* Check symlink outside site_source without Pathutil (#9015)
|
||||
* Stop testing with Rubies older than 2.7 on non-Windows (#8955)
|
||||
* Bump actions/checkout from 2 to 3 (#8986)
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Regenerate supported mime types (#8542)
|
||||
* Update include tag to be more permissive (#8618)
|
||||
* Optimize `Jekyll::Utils.parse_date` (#8425)
|
||||
* Update rubocop from 1.12 to 1.18 and min ruby from 2.4 to 2.5 (#8741)
|
||||
* Always hide cache-dir contents from Git (#8798)
|
||||
* Remove the warning about auto-regeneration on Windows (#8821)
|
||||
* Propagate _data folder from theme (#8815)
|
||||
* Support both tzinfo v1 and v2 alongwith non-half hour offsets. (#8880)
|
||||
* Run vendor-mimes to update mime.types (#8940)
|
||||
* Expose collection static files via `site.static_files` (#8961)
|
||||
* Expose `basename` from `document.rb` as `name` to Liquid templates (#8761)
|
||||
* Allow Configurable Converters on CSV (#8858)
|
||||
|
||||
### Site Enhancements
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# [Jekyll](https://jekyllrb.com/)
|
||||
|
||||
[][ruby-gems]
|
||||
[][ci-workflow]
|
||||
[][ci-workflow]
|
||||
[][appveyor]
|
||||
[](#backers)
|
||||
[](#sponsors)
|
||||
|
||||
@@ -27,7 +28,7 @@ See: [https://jekyllrb.com/philosophy](https://jekyllrb.com/philosophy)
|
||||
|
||||
## Diving In
|
||||
|
||||
* [Migrate](https://import.jekyllrb.com/docs/home/) from your previous system
|
||||
* [Migrate](http://import.jekyllrb.com/docs/home/) from your previous system
|
||||
* Learn how [Front Matter](https://jekyllrb.com/docs/front-matter/) works
|
||||
* Put information on your site with [Variables](https://jekyllrb.com/docs/variables/)
|
||||
* Customize the [Permalinks](https://jekyllrb.com/docs/permalinks/) your posts are generated with
|
||||
|
||||
47
appveyor.yml
Normal file
47
appveyor.yml
Normal file
@@ -0,0 +1,47 @@
|
||||
version: "{build}"
|
||||
|
||||
clone_depth: 5
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- themes
|
||||
- /.*-stable/
|
||||
|
||||
build: off
|
||||
|
||||
environment:
|
||||
BUNDLE_WITHOUT: "benchmark:development"
|
||||
matrix:
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TZINFO_VERSION: "~> 1.2"
|
||||
TEST_SUITE: "test"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TZINFO_VERSION: "~> 2.0"
|
||||
TEST_SUITE: "test"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TEST_SUITE: "default-site"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TEST_SUITE: "profile-docs"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TEST_SUITE: "memprof"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TZINFO_VERSION: "~> 1.2"
|
||||
TEST_SUITE: "cucumber"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TZINFO_VERSION: "~> 2.0"
|
||||
TEST_SUITE: "cucumber"
|
||||
|
||||
install:
|
||||
- SET PATH=C:\Ruby%RUBY_FOLDER_VER%-x64\bin;%PATH%
|
||||
- bundle install --retry 5 --jobs=%NUMBER_OF_PROCESSORS% --clean --path vendor\bundle
|
||||
|
||||
test_script:
|
||||
- ruby --version
|
||||
- gem --version
|
||||
- bundler --version
|
||||
- bash ./script/cibuild
|
||||
|
||||
cache:
|
||||
# If one of the files after the right arrow changes, cache will be invalidated
|
||||
- 'vendor\bundle -> appveyor.yml,Gemfile,jekyll.gemspec'
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
version: 4.3.1
|
||||
version: 4.2.2
|
||||
name: Jekyll • Simple, blog-aware, static sites
|
||||
description: Transform your plain text into static websites and blogs
|
||||
url: https://jekyllrb.com
|
||||
|
||||
@@ -16,10 +16,6 @@ global:
|
||||
description: >-
|
||||
Layout specific information + the <a href="/docs/front-matter/">front matter</a>.
|
||||
Custom variables set via front matter in layouts will be available here.
|
||||
- name: theme
|
||||
description: >-
|
||||
Theme-gem specific information as defined in the theme's gemspec. Useful for rendering
|
||||
information in the theme demo's "About" page, for example. See below for details.
|
||||
- name: content
|
||||
description: >-
|
||||
In layout files, the rendered content of the Post or Page being wrapped.
|
||||
@@ -154,22 +150,6 @@ page:
|
||||
The previous post relative to the position of the current post in <code>site.posts</code>.
|
||||
Returns <code>nil</code> for the first entry.
|
||||
|
||||
theme:
|
||||
- name: theme.root
|
||||
description: >-
|
||||
Absolute path to the theme-gem. Rendered only when environment variable <code>JEKYLL_ENV</code>
|
||||
is set to <code>development</code>.
|
||||
- name: theme.authors
|
||||
description: Comma separated string composed of the authors of the theme-gem.
|
||||
- name: theme.description
|
||||
description: Description or summary of the theme-gem as specified in the theme gemspec.
|
||||
- name: theme.version
|
||||
description: The version string of current theme.
|
||||
- name: theme.dependencies
|
||||
description: List of runtime dependencies of the theme.
|
||||
- name: theme.metadata
|
||||
description: A mapping of key-value pairs as defined in the theme gemspec.
|
||||
|
||||
paginator:
|
||||
- name: paginator.page
|
||||
description: The number of the current page
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
min_version: 2.5.0
|
||||
current_version: 3.1.2
|
||||
current_version_output: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a)
|
||||
current_version: 3.1.1
|
||||
current_version_output: ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
- name: Tom Preston Werner Blog
|
||||
url: https://tom.preston-werner.com/
|
||||
url: http://tom.preston-werner.com/
|
||||
image: tom-preston-werner.png
|
||||
categories:
|
||||
- personal
|
||||
@@ -26,7 +26,7 @@
|
||||
- marketing-site
|
||||
|
||||
- name: Vesterheim Norwegian-American Museum
|
||||
url: https://vesterheim.org/
|
||||
url: http://vesterheim.org/
|
||||
image: vesterheim.png
|
||||
categories:
|
||||
- marketing-site
|
||||
@@ -139,7 +139,7 @@
|
||||
- marketing-site
|
||||
|
||||
- name: Rehan Butt
|
||||
url: https://rehanbutt.com/
|
||||
url: http://rehanbutt.com/
|
||||
image: rehn.png
|
||||
categories:
|
||||
- personal
|
||||
@@ -178,19 +178,19 @@
|
||||
- other
|
||||
|
||||
- name: Digital Democracy
|
||||
url: https://www.digital-democracy.org/
|
||||
url: http://www.digital-democracy.org/
|
||||
image: digital-democracy.png
|
||||
categories:
|
||||
- other
|
||||
|
||||
- name: HTML Reference
|
||||
url: https://htmlreference.io/
|
||||
url: http://htmlreference.io/
|
||||
image: htmlreference.png
|
||||
categories:
|
||||
- documentation
|
||||
|
||||
- name: CSS Reference
|
||||
url: https://cssreference.io/
|
||||
url: http://cssreference.io/
|
||||
image: cssreference.png
|
||||
categories:
|
||||
- documentation
|
||||
@@ -272,7 +272,7 @@
|
||||
- documentation
|
||||
|
||||
- name: Yeoman
|
||||
url: https://yeoman.io/
|
||||
url: http://yeoman.io/
|
||||
image: yeoman.png
|
||||
categories:
|
||||
- open-source
|
||||
@@ -292,6 +292,13 @@
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Ionic Framework
|
||||
url: https://ionicframework.com/
|
||||
image: ionic-framework.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Spotify for Developers
|
||||
url: https://developer.spotify.com
|
||||
image: spotify-developers.png
|
||||
@@ -308,7 +315,7 @@
|
||||
- marketing-site
|
||||
|
||||
- name: Ruby on Rails
|
||||
url: https://rubyonrails.org/
|
||||
url: http://rubyonrails.org/
|
||||
image: ruby-on-rails.png
|
||||
categories:
|
||||
- marketing-site
|
||||
|
||||
@@ -57,4 +57,4 @@ This entire guide is open-source. Go ahead and [edit it][jekyll-docs-ci-buddy] i
|
||||
|
||||
[jekyll-docs-ci-buddy]: https://github.com/jekyll/jekyll/edit/master/docs/_docs/continuous-integration/buddyworks.md
|
||||
[jekyll-help]: https://jekyllrb.com/help/
|
||||
[buddy-forum]: https://forum.buddy.works/
|
||||
[buddy-forum]: http://forum.buddy.works/
|
||||
|
||||
@@ -22,7 +22,7 @@ With [Razorops][razorops-homepage] you can set up your Jekyll websites project's
|
||||
|
||||
## 1. Getting started
|
||||
|
||||
1. Log in at [https://razorops.com/][razorops-homepage] with your GitHub/Bitbucket or GitLab account
|
||||
1. Log in at [https://razorops.com/][razorops-homepage] with your GitHub/Bitbucket or Gitlab account
|
||||
2. Create a pipeline, choose your Git provider and select your Jekyll Project
|
||||
3. Add .razorops.yaml file in your root directory of your project
|
||||
4. Add environment var and your deployment is ready
|
||||
|
||||
@@ -15,7 +15,7 @@ See the [support guidelines](https://jekyllrb.com/docs/support/)
|
||||
Whether you're a developer, a designer, or just a Jekyll devotee, there are lots of ways to contribute. Here's a few ideas:
|
||||
|
||||
- [Install Jekyll on your computer](https://jekyllrb.com/docs/installation/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/jekyll/jekyll/issues/new) and let us know.
|
||||
- Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a workaround? Do you have a suggestion for how the feature could be better?
|
||||
- Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a work around? Do you have a suggestion for how the feature could be better?
|
||||
- Read through the [documentation](https://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion for something that could be improved.
|
||||
- Browse through the [Jekyll discussion forum](https://talk.jekyllrb.com/), and lend a hand answering questions. There's a good chance you've already experienced what another user is experiencing.
|
||||
- Find an [open issue](https://github.com/jekyll/jekyll/issues) (especially [those labeled `help-wanted`](https://github.com/jekyll/jekyll/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted)), and submit a proposed fix. If it's your first pull request, we promise we won't bite, and are glad to answer any questions.
|
||||
|
||||
@@ -7,7 +7,7 @@ In addition to the [built-in variables]({{'/docs/variables/' | relative_url }})
|
||||
you can specify your own custom data that can be accessed via the [Liquid
|
||||
templating system](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers).
|
||||
|
||||
Jekyll supports loading data from [YAML](https://yaml.org), [JSON](https://www.json.org/json-en.html), [CSV](https://en.wikipedia.org/wiki/Comma-separated_values), and [TSV](https://en.wikipedia.org/wiki/Tab-separated_values) files located in the `_data` directory.
|
||||
Jekyll supports loading data from [YAML](http://yaml.org/), [JSON](http://www.json.org/), [CSV](https://en.wikipedia.org/wiki/Comma-separated_values), and [TSV](https://en.wikipedia.org/wiki/Tab-separated_values) files located in the `_data` directory.
|
||||
Note that CSV and TSV files *must* contain a header row.
|
||||
|
||||
This powerful feature allows you to avoid repetition in your templates and to
|
||||
|
||||
@@ -35,9 +35,9 @@ The [Jekyll hosting tutorial](https://www.keycdn.com/support/jekyll-hosting) pro
|
||||
|
||||
## Kickster
|
||||
|
||||
Use [Kickster](https://kickster.nielsenramon.com/) for automated deploys to GitHub Pages when using unsupported plugins on GitHub Pages.
|
||||
Use [Kickster](http://kickster.nielsenramon.com/) for automated deploys to GitHub Pages when using unsupported plugins on GitHub Pages.
|
||||
|
||||
Kickster provides a basic Jekyll project setup packed with web best practices and useful optimization tools increasing your overall project quality. Kickster ships with automated and worry-free deployment scripts for GitHub Pages.
|
||||
Kickster provides a basic Jekyll project setup packed with web best practises and useful optimization tools increasing your overall project quality. Kickster ships with automated and worry-free deployment scripts for GitHub Pages.
|
||||
|
||||
Install the Kickster gem and you are good to go. More documentation can here found [here](https://github.com/nielsenramon/kickster#kickster). If you do not want to use the gem or start a new project you can just copy paste the deployment scripts for [Travis CI](https://github.com/nielsenramon/kickster/tree/master/snippets/travis) or [Circle CI](https://github.com/nielsenramon/kickster#automated-deployment-with-circle-ci).
|
||||
|
||||
|
||||
@@ -4,172 +4,6 @@ permalink: "/docs/history/"
|
||||
note: This file is autogenerated. Edit /History.markdown instead.
|
||||
---
|
||||
|
||||
## 4.3.1 / 2022-10-26
|
||||
{: #v4-3-1}
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-3-1}
|
||||
|
||||
- Respect user-defined name attribute in documents ([#9167]({{ site.repository }}/issues/9167))
|
||||
- Revert "Incrementally rebuild when a data file is changed" ([#9170]({{ site.repository }}/issues/9170))
|
||||
|
||||
### Documentation
|
||||
|
||||
- Release post for v4.3.1 ([#9171]({{ site.repository }}/issues/9171))
|
||||
|
||||
|
||||
## 4.3.0 / 2022-10-20
|
||||
{: #v4-3-0}
|
||||
|
||||
### Minor Enhancements
|
||||
{: #minor-enhancements-v4-3-0}
|
||||
|
||||
- Add webrick as a dependency ([#8524]({{ site.repository }}/issues/8524))
|
||||
- Regenerate supported mime types ([#8542]({{ site.repository }}/issues/8542))
|
||||
- Update include tag to be more permissive ([#8618]({{ site.repository }}/issues/8618))
|
||||
- Optimize `Jekyll::Utils.parse_date` ([#8425]({{ site.repository }}/issues/8425))
|
||||
- Update rubocop from 1.12 to 1.18 and min ruby from 2.4 to 2.5 ([#8741]({{ site.repository }}/issues/8741))
|
||||
- Always hide cache-dir contents from Git ([#8798]({{ site.repository }}/issues/8798))
|
||||
- Remove the warning about auto-regeneration on Windows ([#8821]({{ site.repository }}/issues/8821))
|
||||
- Propagate _data folder from theme ([#8815]({{ site.repository }}/issues/8815))
|
||||
- Support both tzinfo v1 and v2 along with non-half hour offsets. ([#8880]({{ site.repository }}/issues/8880))
|
||||
- Run vendor-mimes to update mime.types ([#8940]({{ site.repository }}/issues/8940))
|
||||
- Expose collection static files via `site.static_files` ([#8961]({{ site.repository }}/issues/8961))
|
||||
- Expose `basename` from `document.rb` as `name` to Liquid templates ([#8761]({{ site.repository }}/issues/8761))
|
||||
- Allow Configurable Converters on CSV ([#8858]({{ site.repository }}/issues/8858))
|
||||
- Introduce `theme` drop to expose theme-gem details ([#9129]({{ site.repository }}/issues/9129))
|
||||
- Relax version constraint to allow Rouge 4.x ([#9134]({{ site.repository }}/issues/9134))
|
||||
- Incrementally rebuild when a data file is changed ([#8771]({{ site.repository }}/issues/8771))
|
||||
- Support jekyll-sass-converter 3.x ([#9132]({{ site.repository }}/issues/9132))
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-3-0}
|
||||
|
||||
- fix: pin rubocop to 1.12 due to error with ruby 2.4 ([#8651]({{ site.repository }}/issues/8651))
|
||||
- Load Jekyll plugins from BUNDLE_GEMFILE location ([#8585]({{ site.repository }}/issues/8585))
|
||||
- fix(security): CVE-2021-28834 ([#8680]({{ site.repository }}/issues/8680))
|
||||
- Inject livereload script using `location.protocol` instead of `http:` ([#8718]({{ site.repository }}/issues/8718))
|
||||
- Respect collections_dir config within include tag ([#8756]({{ site.repository }}/issues/8756))
|
||||
- Fix regression in Convertible module from v4.2.0 ([#8786]({{ site.repository }}/issues/8786))
|
||||
- Revert [#7253]({{ site.repository }}/issues/7253): "Don't reset site.url to localhost:4000 by default" ([#8620]({{ site.repository }}/issues/8620))
|
||||
- Improve readability of CI logs ([#8877]({{ site.repository }}/issues/8877))
|
||||
- Fix deprecation message for missing doc method ([#8960]({{ site.repository }}/issues/8960))
|
||||
- Fix response header for content served via `jekyll serve` ([#8965]({{ site.repository }}/issues/8965))
|
||||
- Trigger livereload in sites without pages ([#8337]({{ site.repository }}/issues/8337))
|
||||
- Only enable BOM encoding option on UTF encodings ([#8363]({{ site.repository }}/issues/8363))
|
||||
- Ensure theme config is a `Jekyll::Configuration` object ([#8988]({{ site.repository }}/issues/8988))
|
||||
- Remove misleading totals row from `--profile` table ([#9039]({{ site.repository }}/issues/9039))
|
||||
- Unlock Psych dependency ([#9135]({{ site.repository }}/issues/9135))
|
||||
- Fix false positive conflicts for static files in a collection ([#9141]({{ site.repository }}/issues/9141))
|
||||
|
||||
### Development Fixes
|
||||
{: #development-fixes-v4-3-0}
|
||||
|
||||
- style: enable new cops ([#8538]({{ site.repository }}/issues/8538))
|
||||
- Allow dependabot to keep github actions up-to-date ([#8540]({{ site.repository }}/issues/8540))
|
||||
- Update actions/cache requirement to v2.1.3 ([#8543]({{ site.repository }}/issues/8543))
|
||||
- Pin rubocop version ([#8564]({{ site.repository }}/issues/8564))
|
||||
- style: add rubocop 1.9 cops ([#8567]({{ site.repository }}/issues/8567))
|
||||
- Cross Version Testing Locally and Faster CI ([#8610]({{ site.repository }}/issues/8610))
|
||||
- Use official Ruby setup GH action ([#8614]({{ site.repository }}/issues/8614))
|
||||
- Spell check action for markdown documentation ([#8675]({{ site.repository }}/issues/8675))
|
||||
- Update expect to cover docs/_posts ([#8677]({{ site.repository }}/issues/8677))
|
||||
- Bump check-spelling/check-spelling from 0.0.18 to 0.0.19 ([#8740]({{ site.repository }}/issues/8740))
|
||||
- Enable Rubocop accessor grouping, fix existing offenses ([#8293]({{ site.repository }}/issues/8293))
|
||||
- Tags:Highlight: Decomposed HTMLLegacy formatter ([#8623]({{ site.repository }}/issues/8623))
|
||||
- Relax Rubocop Dependency ([#8831]({{ site.repository }}/issues/8831))
|
||||
- Add a workflow to build gems consistently ([#8830]({{ site.repository }}/issues/8830))
|
||||
- Fix random test failures in TestExcerpt #to_liquid ([#8884]({{ site.repository }}/issues/8884))
|
||||
- Lock gem `psych` to `v3.x` ([#8918]({{ site.repository }}/issues/8918))
|
||||
- Fix typo in Bug Report template ([#8951]({{ site.repository }}/issues/8951))
|
||||
- Check symlink outside site_source without Pathutil ([#9015]({{ site.repository }}/issues/9015))
|
||||
- Stop testing with Rubies older than 2.7 on non-Windows ([#8955]({{ site.repository }}/issues/8955))
|
||||
- Bump actions/checkout from 2 to 3 ([#8986]({{ site.repository }}/issues/8986))
|
||||
- Remove git.io shortlinks from repo ([#9045]({{ site.repository }}/issues/9045))
|
||||
- Bump rubocop to 1.32 ([#9093]({{ site.repository }}/issues/9093))
|
||||
- Bump RuboCop to `1.36.x` ([#9125]({{ site.repository }}/issues/9125))
|
||||
- Use check-spelling/check-spelling@v0.0.20 ([#9111]({{ site.repository }}/issues/9111))
|
||||
- Disable pending cops when running rubocop ([#9136]({{ site.repository }}/issues/9136))
|
||||
- Relax RDoc version dependency ([#9142]({{ site.repository }}/issues/9142))
|
||||
|
||||
### Documentation
|
||||
|
||||
- typo - do instead of don't ([#8518]({{ site.repository }}/issues/8518))
|
||||
- Document support for TSV files consistently ([#8488]({{ site.repository }}/issues/8488))
|
||||
- Add a disclaimer to tutorials involving Ruby code ([#8525]({{ site.repository }}/issues/8525))
|
||||
- Improve documentation on developing generators ([#8527]({{ site.repository }}/issues/8527))
|
||||
- Fixes typo in layouts_dir documentation ([#8532]({{ site.repository }}/issues/8532))
|
||||
- Fix i.e. typos in collections.md ([#8529]({{ site.repository }}/issues/8529))
|
||||
- Remove GitHub Pages content which is in GitHub docs ([#8533]({{ site.repository }}/issues/8533))
|
||||
- Step By Step Instructions Review ([#8399]({{ site.repository }}/issues/8399))
|
||||
- Fix typo in migrating from 3.0 to 4.0 page ([#8572]({{ site.repository }}/issues/8572))
|
||||
- Fix for important missing step in macOS Installation Docs: Add the Homebrew gems directory to the PATH ([#8496]({{ site.repository }}/issues/8496))
|
||||
- Use latest Jekyll-action configuration ([#8579]({{ site.repository }}/issues/8579))
|
||||
- docs: troubleshoot macOS with ARM64 architecture ([#8560]({{ site.repository }}/issues/8560))
|
||||
- docs: add overview of .jekyll-cache dir ([#8648]({{ site.repository }}/issues/8648))
|
||||
- docs: clarify where .jekyll-metadata comes from ([#8646]({{ site.repository }}/issues/8646))
|
||||
- Razorops CI/CD added ([#8656]({{ site.repository }}/issues/8656))
|
||||
- Specify default port and host for serve commands in docs ([#8624]({{ site.repository }}/issues/8624))
|
||||
- Update third-party.md ([#8652]({{ site.repository }}/issues/8652))
|
||||
- Add documentation for Sass configuration options ([#8587]({{ site.repository }}/issues/8587))
|
||||
- Add formcarry to forms section ([#8471]({{ site.repository }}/issues/8471))
|
||||
- Add step to set SDKROOT ([#8478]({{ site.repository }}/issues/8478))
|
||||
- Improve the "Markdown Options" Docs ([#8681]({{ site.repository }}/issues/8681))
|
||||
- Add 'webrick' warning note to "Quickstart" Docs ([#8727]({{ site.repository }}/issues/8727))
|
||||
- Update windows.md ([#8701]({{ site.repository }}/issues/8701))
|
||||
- IRC networks - Libera, Freenode ([#8706]({{ site.repository }}/issues/8706))
|
||||
- Improve GitHub Flavored Markdown Docs ([#8684]({{ site.repository }}/issues/8684))
|
||||
- Fixing URL in MacOS install for rbenv-doctor ([#8693]({{ site.repository }}/issues/8693))
|
||||
- Fix adjective in `troubleshooting.md` document ([#8777]({{ site.repository }}/issues/8777))
|
||||
- Goodbye Frank. We'll miss you. 💔 ([#8807]({{ site.repository }}/issues/8807))
|
||||
- Update index.html: Grammar fix. ([#8803]({{ site.repository }}/issues/8803))
|
||||
- Prefer Libera. Remove Freenode. ([#8811]({{ site.repository }}/issues/8811))
|
||||
- Update feature_request.md ([#8797]({{ site.repository }}/issues/8797))
|
||||
- Remove AWS Amplify from the showcase ([#8812]({{ site.repository }}/issues/8812))
|
||||
- Move Frank to Emeritus Core Team Members ([#8813]({{ site.repository }}/issues/8813))
|
||||
- Release post for v4.2.1 ([#8818]({{ site.repository }}/issues/8818))
|
||||
- Update CircleCI example ([#8829]({{ site.repository }}/issues/8829))
|
||||
- Fix typo ([#8835]({{ site.repository }}/issues/8835))
|
||||
- Added docs for running locally ([#8852]({{ site.repository }}/issues/8852))
|
||||
- Linting README.markdown ([#8900]({{ site.repository }}/issues/8900))
|
||||
- Remove text on GITHUB_TOKEN which is now built-in ([#8907]({{ site.repository }}/issues/8907))
|
||||
- Add Security Policy document ([#8823]({{ site.repository }}/issues/8823))
|
||||
- Manage repository meta documents consistently ([#8908]({{ site.repository }}/issues/8908))
|
||||
- docs: add Layer0 deployment guide ([#8915]({{ site.repository }}/issues/8915))
|
||||
- docs: Update README generated by `jekyll new-theme` ([#8919]({{ site.repository }}/issues/8919))
|
||||
- Update resources.md ([#8925]({{ site.repository }}/issues/8925))
|
||||
- Rewrite documentation on installing plugins ([#8921]({{ site.repository }}/issues/8921))
|
||||
- Improve maintainers guide on releasing a new version ([#8928]({{ site.repository }}/issues/8928))
|
||||
- Fix link for "CloudSh" ([#8934]({{ site.repository }}/issues/8934))
|
||||
- Recommend using `actions/cache` in GitHub Actions documentation ([#8948]({{ site.repository }}/issues/8948))
|
||||
- Remove references to EOL hakiri.io service ([#8946]({{ site.repository }}/issues/8946))
|
||||
- Release post for v4.2.2 ([#8982]({{ site.repository }}/issues/8982))
|
||||
- Document releasing off `*-stable` branches ([#8984]({{ site.repository }}/issues/8984))
|
||||
- Update document by fix yaml syntax error ([#8991]({{ site.repository }}/issues/8991))
|
||||
- Enhance option's case for Jekyll configuration ([#8992]({{ site.repository }}/issues/8992))
|
||||
- Fix typo in `_docs/deployment/manual.md` ([#8997]({{ site.repository }}/issues/8997))
|
||||
- Add quiet/verbose options ([#8996]({{ site.repository }}/issues/8996))
|
||||
- Update README.markdown re IRC Pointer ([#9005]({{ site.repository }}/issues/9005))
|
||||
- Remove Aerobatic ([#9007]({{ site.repository }}/issues/9007))
|
||||
- Add Jekyll 3.9.2 release post to 'master' branch ([#9013]({{ site.repository }}/issues/9013))
|
||||
- Simplify macOS installation docs ([#8993]({{ site.repository }}/issues/8993))
|
||||
- Improve document about GitHub Actions section ([#8853]({{ site.repository }}/issues/8853))
|
||||
- Update permalinks.md ([#9017]({{ site.repository }}/issues/9017))
|
||||
- Add clarity to docs on permalinks placeholders and built-ins ([#8995]({{ site.repository }}/issues/8995))
|
||||
- Remove Ionic Framework site from showcase ([#9057]({{ site.repository }}/issues/9057))
|
||||
- Windows: describe which option to choose ([#9049]({{ site.repository }}/issues/9049))
|
||||
- Improve links (http -> https) ([#9064]({{ site.repository }}/issues/9064))
|
||||
- Update ruby version for macos guide ([#9086]({{ site.repository }}/issues/9086))
|
||||
- Update posts.md ([#9151]({{ site.repository }}/issues/9151))
|
||||
- Release post for v4.3.0 ([#9157]({{ site.repository }}/issues/9157))
|
||||
|
||||
### Site Enhancements
|
||||
{: #site-enhancements-v4-3-0}
|
||||
|
||||
- Improvements to CSS ([#7834]({{ site.repository }}/issues/7834))
|
||||
- Slightly update lang `sh` code-block styling ([#8857]({{ site.repository }}/issues/8857))
|
||||
|
||||
|
||||
## 4.2.2 / 2022-03-03
|
||||
{: #v4-2-2}
|
||||
|
||||
@@ -1337,7 +1171,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- make flakey test more robust ([#6277]({{ site.repository }}/issues/6277))
|
||||
- Add a quick test for DataReader ([#6284]({{ site.repository }}/issues/6284))
|
||||
- script/backport-pr: commit message no longer includes the `#` ([#6289]({{ site.repository }}/issues/6289))
|
||||
- Add CODEOWNERS file to help automate reviews. ([#6320]({{ site.repository }}/issues/6320))
|
||||
- Add Add CODEOWNERS file to help automate reviews. ([#6320]({{ site.repository }}/issues/6320))
|
||||
- Fix builds on codeclimate ([#6333]({{ site.repository }}/issues/6333))
|
||||
- Bump rubies on Travis ([#6366]({{ site.repository }}/issues/6366))
|
||||
|
||||
@@ -2496,7 +2330,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Fixed an unclear code comment in site template SCSS ([#3837]({{ site.repository }}/issues/3837))
|
||||
- Fix reading of binary metadata file ([#3845]({{ site.repository }}/issues/3845))
|
||||
- Remove var collision with site template header menu iteration variable ([#3838]({{ site.repository }}/issues/3838))
|
||||
- Change nonexistent `hl_linenos` to `hl_lines` to allow passthrough in safe mode ([#3787]({{ site.repository }}/issues/3787))
|
||||
- Change non-existent `hl_linenos` to `hl_lines` to allow passthrough in safe mode ([#3787]({{ site.repository }}/issues/3787))
|
||||
- Add missing flag to disable the watcher ([#3820]({{ site.repository }}/issues/3820))
|
||||
- Update CI guide to include more direct explanations of the flow ([#3891]({{ site.repository }}/issues/3891))
|
||||
- Set `future` to `false` in the default config ([#3892]({{ site.repository }}/issues/3892))
|
||||
@@ -2833,7 +2667,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Document the `name` variable for collection permalinks ([#2829]({{ site.repository }}/issues/2829))
|
||||
- Adds info about installing jekyll in current dir ([#2839]({{ site.repository }}/issues/2839))
|
||||
- Remove deprecated `jekyll-projectlist` plugin from list of third-party plugins ([#2742]({{ site.repository }}/issues/2742))
|
||||
- Remove tag plugins that are built into Jekyll ([#2751]({{ site.repository }}/issues/2751))
|
||||
- Remove tag plugins that are built in to Jekyll ([#2751]({{ site.repository }}/issues/2751))
|
||||
- Add `markdown-writer` package for Atom Editor to list of third-party plugins ([#2763]({{ site.repository }}/issues/2763))
|
||||
- Fix typo in site documentation for collections ([#2764]({{ site.repository }}/issues/2764))
|
||||
- Fix minor typo on plugins docs page ([#2765]({{ site.repository }}/issues/2765))
|
||||
|
||||
@@ -85,7 +85,7 @@ For example, suppose you have a special image syntax with complex formatting, an
|
||||
|
||||
```html
|
||||
<figure>
|
||||
<a href="https://jekyllrb.com">
|
||||
<a href="http://jekyllrb.com">
|
||||
<img src="logo.png" style="max-width: 200px;"
|
||||
alt="Jekyll logo" />
|
||||
</a>
|
||||
|
||||
@@ -48,7 +48,7 @@ Jekyll on your Mac, or if you run into any issues, read that guide.
|
||||
Install `chruby` and `ruby-install` with Homebrew:
|
||||
|
||||
```sh
|
||||
brew install chruby ruby-install xz
|
||||
brew install chruby ruby-install
|
||||
```
|
||||
|
||||
Install the latest stable version of Ruby:
|
||||
@@ -63,7 +63,7 @@ automatically use `chruby`:
|
||||
```sh
|
||||
echo "source $(brew --prefix)/opt/chruby/share/chruby/chruby.sh" >> ~/.zshrc
|
||||
echo "source $(brew --prefix)/opt/chruby/share/chruby/auto.sh" >> ~/.zshrc
|
||||
echo "chruby ruby-{{ site.data.ruby.current_version }}" >> ~/.zshrc # run 'chruby' to see actual version
|
||||
echo "chruby ruby-{{ site.data.ruby.current_version }}" >> ~/.zshrc
|
||||
```
|
||||
|
||||
If you're using Bash, replace `.zshrc` with `.bash_profile`. If you're not sure,
|
||||
|
||||
@@ -23,8 +23,7 @@ We only cover RubyInstaller-2.4 and newer here. Older versions need to
|
||||
Use default options for installation.
|
||||
2. Run the `ridk install` step on the last stage of the installation wizard. This is needed for installing gems with native
|
||||
extensions. You can find additional information regarding this in the
|
||||
[RubyInstaller Documentation](https://github.com/oneclick/rubyinstaller2#using-the-installer-on-a-target-system).
|
||||
From the options choose `MSYS2 and MINGW development tool chain`.
|
||||
[RubyInstaller Documentation](https://github.com/oneclick/rubyinstaller2#using-the-installer-on-a-target-system)
|
||||
3. Open a new command prompt window from the start menu, so that changes to the `PATH` environment variable becomes effective.
|
||||
Install Jekyll and Bundler using `gem install jekyll bundler`
|
||||
4. Check if Jekyll has been installed properly: `jekyll -v`
|
||||
|
||||
@@ -20,7 +20,7 @@ If the issue describes a feature request, ask:
|
||||
|
||||
1. Is this a setting? [Settings are a crutch](http://ben.balter.com/2016/03/08/optimizing-for-power-users-and-edge-cases/#settings-are-a-crutch) for doing "the right thing". Settings usually point to a bad default or an edge case that could be solved easily with a plugin. Keep the :christmas_tree: of settings as small as possible so as not to reduce the usability of the product. We like the philosophy "decisions not options."
|
||||
2. Would at least 80% of users find it useful? If even a quarter of our users won't use it, it's very likely that the request doesn't fit our product's core goal.
|
||||
3. Is there another way to accomplish the end goal of the request? Most feature requests are due to bad documentation for or understanding of a preexisting feature. See if you can clarify the end goal of the request. What is the user trying to do? Could they accomplish that goal through another feature we already support?
|
||||
3. Is there another way to accomplish the end goal of the request? Most feature requests are due to bad documentation for or understanding of a pre-existing feature. See if you can clarify the end goal of the request. What is the user trying to do? Could they accomplish that goal through another feature we already support?
|
||||
4. Even if 80% of our users will use it, does it fit the core goal of our project? We are writing a tool for making static websites, not a swiss army knife for publishing more generally.
|
||||
|
||||
Feel free to get others' opinions and ask questions of the issue author, but depending upon the answers to the questions above, it may be out of scope for our project.
|
||||
|
||||
@@ -278,14 +278,6 @@ Here's the full list of placeholders available:
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:output_ext</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Extension of the output file. (Included by default and usually unnecessary.)</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -333,10 +325,7 @@ For posts, Jekyll also provides the following built-in styles for convenience:
|
||||
<small>{% include docs_version_badge.html version="4.0" %}</small>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
<code>/:categories/:year/W:week/:short_day/:title:output_ext</code><br/>
|
||||
<small>(<code>W</code> will be prefixed to the value of <code>:week</code>)</small>
|
||||
</p>
|
||||
<p><code>/:categories/:year/W:week/:short_day/:title:output_ext</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -96,7 +96,7 @@ Linking to a PDF for readers to download:
|
||||
## Displaying an index of posts
|
||||
|
||||
Creating an index of posts on another page should be easy thanks to
|
||||
[Liquid](https://shopify.github.io/liquid/) and its tags. Here’s a
|
||||
[Liquid](https://docs.shopify.com/themes/liquid/basics) and its tags. Here’s a
|
||||
simple example of how to create a list of links to your blog posts:
|
||||
|
||||
{% raw %}
|
||||
@@ -168,7 +168,7 @@ Categories of a post work similar to the tags above:
|
||||
*The similarity between categories and tags however, ends there.*
|
||||
|
||||
Unlike tags, categories for posts can also be defined by a post's file path.
|
||||
Any directory above `_posts` will be read-in as a category. For example,
|
||||
Any directory above `_post` will be read-in as a category. For example,
|
||||
if a post is at path `movies/horror/_posts/2019-05-21-bride-of-chucky.markdown`,
|
||||
then `movies` and `horror` are automatically registered as categories for that
|
||||
post.
|
||||
|
||||
@@ -394,4 +394,4 @@ Themes are published via [RubyGems.org](https://rubygems.org). You will need a R
|
||||
gem push jekyll-theme-awesome-*.gem
|
||||
```
|
||||
|
||||
4. To release a new version of your theme, update the version number in the gemspec file, ( `jekyll-theme-awesome.gemspec` in this example ), and then repeat Steps 1 - 3 above. We recommend that you follow [Semantic Versioning](https://semver.org) while bumping your theme-version.
|
||||
4. To release a new version of your theme, update the version number in the gemspec file, ( `jekyll-theme-awesome.gemspec` in this example ), and then repeat Steps 1 - 3 above. We recommend that you follow [Semantic Versioning](http://semver.org/) while bumping your theme-version.
|
||||
|
||||
@@ -317,7 +317,7 @@ The issue is caused by trying to copy a non-existing symlink.
|
||||
<h5>Please report issues you encounter!</h5>
|
||||
<p>
|
||||
If you come across a bug, please <a href="{{ site.repository }}/issues/new">create an issue</a>
|
||||
on GitHub describing the problem and any workarounds you find so we can
|
||||
on GitHub describing the problem and any work-arounds you find so we can
|
||||
document it here for others.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -34,11 +34,6 @@ The following is a reference of the available data.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Theme Variables {%- include docs_version_badge.html version="4.3.0" -%}
|
||||
{: #theme-variables }
|
||||
|
||||
{% include docs_variables_table.html scope=site.data.jekyll_variables.theme %}
|
||||
|
||||
## Paginator
|
||||
|
||||
{% include docs_variables_table.html scope=site.data.jekyll_variables.paginator %}
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
---
|
||||
title: 'Jekyll 4.3.0 Released'
|
||||
date: 2022-10-20 10:20:22 -0500
|
||||
author: ashmaroli
|
||||
version: 4.3.0
|
||||
category: release
|
||||
---
|
||||
|
||||
Hello Jekyllers!
|
||||
|
||||
The Jekyll team is happy to announce the release of `v4.3.0` shipping with some nice improvements and bug-fixes.
|
||||
|
||||
## Improvements
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Gem `webrick` is now a listed dependency. You no longer have to add the gem to your Gemfile when using Jekyll with
|
||||
Ruby 3.0 or newer.
|
||||
- You may now use Rouge v4 or continue using Rouge v3.x by explicitly mentioning the version in your Gemfile.
|
||||
- Support for gem `tzinfo` v2 and non-half-hour offsets have been added.
|
||||
- You will be able to use v3 of `jekyll-sass-converter` when it ships.
|
||||
|
||||
### Builds
|
||||
|
||||
- Added support for bundling and loading data files from within a theme-gem similar to existing theme-gem contents.
|
||||
- Changes to data files at source will now be respected during incremental builds.
|
||||
- `site.static_files` now include static files within a collection.
|
||||
- You may now configure converters for CSV data.
|
||||
- `.jekyll-cache` or its equivalent custom cache directory will be automatically ignored by Git.
|
||||
- Vendor the current latest mime-types dataset for use with local development server.
|
||||
|
||||
{% raw %}
|
||||
### Liquid Templates
|
||||
|
||||
- `basename` attribute of documents are now exposed to Liquid as `name`, for example `{{ page.name }}`. Excerpts delegate
|
||||
to associated document attribute.
|
||||
- Top-level variable `{{ theme }}` introduced to expose gemspec details of theme-gem. (Valid only when using theme-gem)
|
||||
{% endraw %}
|
||||
|
||||
## Bug-fixes
|
||||
|
||||
Some noteworthy bug-fixes include:
|
||||
|
||||
- Respect `BUNDLE_GEMFILE` when loading Jekyll plugins via Bundler.
|
||||
- Prevent loading versions older than kramdown-2.3.1 as a security measure.
|
||||
- Trigger livereloading even if the site has *no pages*.
|
||||
- Ensure the expected class of theme config is returned following a merger.
|
||||
- Enable BOM encoding only if configured encoding is 'UTF-8'.
|
||||
- Respect server protocol while injecting livereload script.
|
||||
- The table output for `--profile` stops printing incorrect "TOTALS" row.
|
||||
|
||||
[The full list of changes](/docs/history/#v4-3-0) may be perused if interested.
|
||||
|
||||
As always, we are grateful to the many contributors that helped improve the project codebase and documentation:
|
||||
|
||||
<small>Ashwin Maroli, Frank Taillandier, Matt Rogers, Parker Moore, Kelvin M. Klann, Josh Soref, Youssef Boulkaid,
|
||||
Emily Grace Seville, Robert Martin, jaybe@jekyll, Ben Keith, Jonathan Darrer, Kaben, Mike Kasberg, Moncef Belyamani,
|
||||
Phil Ross, Sesh Sadasivam, Adam Bell, Alaz Tetik, Alex Malaszkiewicz, Alex Saveau, Andreas Deininger, Andrew Davis,
|
||||
Andrew Gutekanst, Andrii Abramov, Aram Akhavan, Atlas Cove, Attaphong Rattanaveerachanon, Ben Whetton, Chris Keefe,
|
||||
Clayton Smith, Craig H Maynard, Curious Cat, Daniel Haim, Daniel Kehoe, Daryl Hepting, David Bruant, David Zhang,
|
||||
Edson Jiménez, Eric Cousineau, Gary, Giuseppe Bertone, Ikko Ashimine, JJ, JT, Jeff Wilcox, Jeffrey Veen,
|
||||
Jesse van der Pluijm, John Losito, Kantanat-Stamp, Kirstin Heidler, Korbs, Laurence Andrews, Liam Bigelow, Maik Riechert,
|
||||
Meet Gor, Meg Gutshall, Michael Gerzabek, MichaelCordingley, Miguel Brandão, Nahin Khan, Nemo, Nicholas Paxford,
|
||||
Nick Coish, Otto Urpelainen, Parikshit87, Phil Kirlin, Qasim Qureshi, Ricardo N Feliciano, Rishi Raj Jain, SNVMK,
|
||||
SaintMalik, Sampath Sukesh Ravolaparthi, Shannon Kularathna, Shyam Mohan K, Takuya N, Tejas Bubane, Toshimaru, Tyler887,
|
||||
Vinhas Kevin, alena-ko, fauno, lm, lucafrance, nusu, shorty, なつき</small>
|
||||
|
||||
---
|
||||
|
||||
### Announcement
|
||||
|
||||
I would like to inform you that following this release, Jekyll will start developing towards a v5.0 milestone that will
|
||||
**definitely contain breaking changes**. I have set up a [tentative roadmap at the GitHub repository][roadmap] to give everyone
|
||||
a glimpse of the PROBABLE OUTCOME. Towards that end, we will no longer accept documentation fixes on `master`. The `4.3-stable`
|
||||
branch will be used to build and deploy the site for https://jekyllrb.com.
|
||||
|
||||
Jekyll 3.x series is now under security-maintenance phase. Only security patches will be released when necessary.
|
||||
|
||||
Jekyll 4.x series will continue receiving bug-fixes and security-patches only. Depending on the state of progress towards v5.0,
|
||||
there will be *at least* one minor version release serving as a transitionary version containing deprecations and bridge code
|
||||
to ease the eventual upgrade to v5.0.
|
||||
|
||||
[roadmap]: {{ site.repository }}/issues/9156
|
||||
|
||||
---
|
||||
|
||||
That is all for now.
|
||||
Happy Jekyllin'!!
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
title: 'Jekyll 4.3.1 Released'
|
||||
date: 2022-10-26 19:09:42 +0530
|
||||
author: ashmaroli
|
||||
version: 4.3.1
|
||||
category: release
|
||||
---
|
||||
|
||||
Hello Jekyllers!
|
||||
|
||||
We're shipping `v4.3.1` containing fixes for two issues with v4.3.0:
|
||||
- Jekyll now respects user-defined `name` attribute for collection documents when accessed in Liquid templates.
|
||||
- Revert the changes made to trigger incremental rebuilds when data files are changed.
|
||||
|
||||
Thanks to the users who took the time to report the issues to us.
|
||||
Happy Jekyllin'
|
||||
|
||||
P.S. Development towards v5 has taken a back seat as of now. I plan on releasing a v4.4.0 instead.
|
||||
That said, please feel free to comment on the [tentative roadmap to v5][roadmap].
|
||||
|
||||
[roadmap]: {{ site.repository }}/issues/9156
|
||||
@@ -679,8 +679,7 @@ article h2:first-child { margin-top: 0; }
|
||||
|
||||
.news article + article {
|
||||
margin-top: -6px;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
padding: 15px 40px;
|
||||
border-top: 1px solid #555;
|
||||
border-radius: 0;
|
||||
@include box-shadow(0 -1px 0 #2f2f2f);
|
||||
@@ -688,6 +687,24 @@ article h2:first-child { margin-top: 0; }
|
||||
h2.post-title {
|
||||
margin-bottom: 0.45em;
|
||||
}
|
||||
.post-category {
|
||||
margin-right: 20px;
|
||||
padding-left: 0;
|
||||
width: 150px;
|
||||
box-sizing: border-box;
|
||||
.label {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
.cell-left, .cell-right {
|
||||
display: inline-block;
|
||||
}
|
||||
.cell-left {
|
||||
max-width: 180px;
|
||||
}
|
||||
.cell-right {
|
||||
width: calc(100% - 130px);
|
||||
}
|
||||
.post-date { margin-left: 0 }
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
4.3.1
|
||||
4.2.2
|
||||
|
||||
@@ -11,7 +11,7 @@ permalink: /
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="features center-on-mobiles">
|
||||
<section class="features">
|
||||
<div class="grid">
|
||||
<div class="unit one-third">
|
||||
<h2>Simple</h2>
|
||||
@@ -30,7 +30,7 @@ permalink: /
|
||||
<p>
|
||||
Permalinks, categories, pages, posts, and custom layouts are all first-class citizens here.
|
||||
</p>
|
||||
<a href="https://import.jekyllrb.com">Migrate your blog →</a>
|
||||
<a href="http://import.jekyllrb.com">Migrate your blog →</a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@ title: JekyllConf
|
||||
permalink: /jekyllconf/
|
||||
---
|
||||
|
||||
[JekyllConf](https://jekyllconf.com) is a free, online conference for all things Jekyll hosted by [CloudCannon](https://cloudcannon.com). Each year members of the Jekyll community speak about interesting use cases, tricks they've learned, or meta Jekyll topics.
|
||||
[JekyllConf](http://jekyllconf.com) is a free, online conference for all things Jekyll hosted by [CloudCannon](http://cloudcannon.com). Each year members of the Jekyll community speak about interesting use cases, tricks they've learned, or meta Jekyll topics.
|
||||
|
||||
## Featured
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ Use a SaaS service as a backend for functionality on your Jekyll site
|
||||
- [markdown-writer](https://atom.io/packages/markdown-writer): An Atom package for Jekyll. It can create new posts/drafts, manage tags/categories, insert link/images and add many useful key mappings.
|
||||
- [sublime-jekyll](https://github.com/23maverick23/sublime-jekyll): A Sublime Text package for Jekyll static sites. This package should help creating Jekyll sites and posts easier by providing access to key template tags and filters, as well as common completions and a current date/datetime command (for dating posts). You can install this package manually via GitHub, or via [Package Control](https://packagecontrol.io/packages/Jekyll).
|
||||
- [vim-jekyll](https://github.com/parkr/vim-jekyll): A vim plugin to generate new posts and run `jekyll build` all without leaving vim.
|
||||
- [WordPress2Jekyll](https://wordpress.org/plugins/wp2jekyll/): A WordPress plugin that allows you to use WordPress as your editor and (automatically) export content into Jekyll. WordPress2Jekyll attempts to marry these two systems together in order to make a site that can be easily managed from all devices.
|
||||
- [WordPress2Jekyll](https://wordpress.org/plugins/wp2jekyll/): A WordPress plugin that allows you to use WordPress as your editor and (automatically) export content in to Jekyll. WordPress2Jekyll attempts to marry these two systems together in order to make a site that can be easily managed from all devices.
|
||||
|
||||
## Posts
|
||||
|
||||
@@ -91,7 +91,7 @@ Use a SaaS service as a backend for functionality on your Jekyll site
|
||||
> "Jekyll is everything that I ever wanted in a blogging engine. Really. It isn't perfect, but what's excellent about it is that if there's something wrong, I know exactly how it works and how to fix it. It runs on the your machine only, and is essentially an added"build" step between you and the browser. I coded this entire site in TextMate using standard HTML5 and CSS3, and then at the end I added just a few little variables to the markup. Presto-chango, my site is built and I am at peace with the world."
|
||||
|
||||
- A way to [extend Jekyll](https://github.com/rfelix/jekyll_ext) without forking and modifying the Jekyll gem codebase and some [portable Jekyll extensions](https://github.com/rfelix/jekyll_ext/wiki/Extensions) that can be reused and shared.
|
||||
- [Using your Rails layouts in Jekyll](https://numbers.brighterplanet.com/2010/08/09/sharing-rails-views-with-jekyll)
|
||||
- [Using your Rails layouts in Jekyll](http://numbers.brighterplanet.com/2010/08/09/sharing-rails-views-with-jekyll)
|
||||
|
||||
## Forks
|
||||
|
||||
|
||||
@@ -82,8 +82,8 @@ Feature: Collections
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
Then the _site directory should exist
|
||||
And I should see "Collections: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/um_hi.md" in "_site/index.html" if platform supports symlinks
|
||||
And I should see "Collections: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/yaml_with_dots.md" in "_site/index.html" if platform does not support symlinks
|
||||
And I should see "Collections: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/um_hi.md" in "_site/index.html" unless Windows
|
||||
And I should see "Collections: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/yaml_with_dots.md" in "_site/index.html" if on Windows
|
||||
|
||||
Scenario: Collections specified as an hash
|
||||
Given I have an "index.html" page that contains "Collections: {% for method in site.methods %}{{ method.relative_path }} {% endfor %}"
|
||||
@@ -96,8 +96,8 @@ Feature: Collections
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
Then the _site directory should exist
|
||||
And I should see "Collections: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/um_hi.md" in "_site/index.html" if platform supports symlinks
|
||||
And I should see "Collections: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/yaml_with_dots.md" in "_site/index.html" if platform does not support symlinks
|
||||
And I should see "Collections: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/um_hi.md" in "_site/index.html" unless Windows
|
||||
And I should see "Collections: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/yaml_with_dots.md" in "_site/index.html" if on Windows
|
||||
|
||||
Scenario: Rendered collection with document with future date
|
||||
Given I have a _puppies directory
|
||||
@@ -377,8 +377,8 @@ Feature: Collections
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
Then the _site directory should exist
|
||||
And I should see "All documents: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/um_hi.md" in "_site/index.html" if platform supports symlinks
|
||||
And I should see "All documents: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/yaml_with_dots.md" in "_site/index.html" if platform does not support symlinks
|
||||
And I should see "All documents: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/um_hi.md" in "_site/index.html" unless Windows
|
||||
And I should see "All documents: _methods/3940394-21-9393050-fifif1323-test.md _methods/collection/entries _methods/configuration.md _methods/escape-\+ #%20\[\].md _methods/sanitized_path.md _methods/site/generate.md _methods/site/initialize.md _methods/trailing-dots...md _methods/yaml_with_dots.md" in "_site/index.html" if on Windows
|
||||
|
||||
Scenario: Documents have an output attribute, which is the converted HTML
|
||||
Given I have an "index.html" page that contains "Second document's output: {{ site.documents[2].output }}"
|
||||
@@ -432,8 +432,8 @@ Feature: Collections
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see "2. of 10: <p>Page without title.</p>" in "_site/index.html" if platform supports symlinks
|
||||
And I should see "2. of 9: <p>Page without title.</p>" in "_site/index.html" if platform does not support symlinks
|
||||
And I should see "2. of 10: <p>Page without title.</p>" in "_site/index.html" unless Windows
|
||||
And I should see "2. of 9: <p>Page without title.</p>" in "_site/index.html" if on Windows
|
||||
|
||||
Scenario: Sort by relative_path
|
||||
Given I have an "index.html" page that contains "Collections: {% assign methods = site.methods | sort: 'relative_path' %}{{ methods | map:"title" | join: ", " }}"
|
||||
@@ -446,8 +446,8 @@ Feature: Collections
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
Then the _site directory should exist
|
||||
And I should see "Collections: this is a test!, Collection#entries, Jekyll.configuration, Jekyll.escape, Jekyll.sanitized_path, Site#generate, Initialize, Ellipsis Path, Site#generate, YAML with Dots" in "_site/index.html" if platform supports symlinks
|
||||
And I should see "Collections: this is a test!, Collection#entries, Jekyll.configuration, Jekyll.escape, Jekyll.sanitized_path, Site#generate, Initialize, Ellipsis Path, YAML with Dots" in "_site/index.html" if platform does not support symlinks
|
||||
And I should see "Collections: this is a test!, Collection#entries, Jekyll.configuration, Jekyll.escape, Jekyll.sanitized_path, Site#generate, Initialize, Ellipsis Path, Site#generate, YAML with Dots" in "_site/index.html" unless Windows
|
||||
And I should see "Collections: this is a test!, Collection#entries, Jekyll.configuration, Jekyll.escape, Jekyll.sanitized_path, Site#generate, Initialize, Ellipsis Path, YAML with Dots" in "_site/index.html" if on Windows
|
||||
|
||||
Scenario: Sort all entries by a Front Matter key defined in all entries
|
||||
Given I have an "index.html" page that contains "Collections: {{ site.tutorials | map: 'title' | join: ', ' }}"
|
||||
|
||||
@@ -14,15 +14,10 @@ Feature: Create sites
|
||||
And the test_blank/_sass directory should exist
|
||||
And the test_blank/assets/css directory should exist
|
||||
And the "test_blank/_layouts/default.html" file should exist
|
||||
And the "test_blank/_sass/base.scss" file should exist
|
||||
And the "test_blank/_sass/main.scss" file should exist
|
||||
And the "test_blank/assets/css/main.scss" file should exist
|
||||
And the "test_blank/_config.yml" file should exist
|
||||
And the "test_blank/index.md" file should exist
|
||||
When I run jekyll build --source test_blank --destination test_blank/_site
|
||||
Then I should get a zero exit status
|
||||
And the test_blank/_site directory should exist
|
||||
And I should see "Start developing" in "test_blank/_site/index.html"
|
||||
And I should see "body {" in "test_blank/_site/assets/css/main.css"
|
||||
|
||||
Scenario: Basic site
|
||||
Given I have an "index.html" file that contains "Basic Site"
|
||||
|
||||
@@ -108,7 +108,7 @@ Feature: Post excerpts
|
||||
Then I should get a zero exit status
|
||||
And I should not see "Kramdown warning" in the build output
|
||||
But I should see exactly "<p>Install Jekyll</p>" in "_site/just-text-excerpt.html"
|
||||
And I should see "<p>Alpha <sup id=\"fnref:1\"><a href=\"#fn:1\" class=\"footnote\" rel=\"footnote\" role=\"doc-noteref\">1</a></sup></p>" in "_site/text-and-footnote.html"
|
||||
And I should see "<p>Alpha <sup id=\"fnref:1\" role=\"doc-noteref\"><a href=\"#fn:1\" class=\"footnote\" rel=\"footnote\">1</a></sup></p>" in "_site/text-and-footnote.html"
|
||||
And I should see "<p>Omega sigma <a href=\"#fnref:1\" class=\"reversefootnote\" role=\"doc-backlink\">↩</a></p>" in "_site/text-and-footnote.html"
|
||||
And I should see "<p>Read <a href=\"docs.jekyll.com\">docs</a></p>" in "_site/text-and-reference-link.html"
|
||||
And I should see "<p>Check out <a href=\"jekyllrb.com\">jekyll</a></p>" in "_site/text-and-self-referencing-link.html"
|
||||
|
||||
@@ -168,7 +168,7 @@ Feature: Rendering
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see ".foo-bar {\n color: red;\n}\n\n\/\*# sourceMappingURL=index.css.map \*\/" in "_site/index.css"
|
||||
And I should see ".foo-bar { color: red; }\n\n\/\*# sourceMappingURL=index.css.map \*\/" in "_site/index.css"
|
||||
|
||||
Scenario: Not render liquid in CoffeeScript without explicitly including jekyll-coffeescript
|
||||
Given I have an "index.coffee" page with animal "cicada" that contains "hey='for {{page.animal}}'"
|
||||
|
||||
@@ -163,7 +163,7 @@ Given(%r!^I have a configuration file with "(.*)" set to "(.*)"$!) do |key, valu
|
||||
else
|
||||
{}
|
||||
end
|
||||
config[key] = SafeYAML.load(value)
|
||||
config[key] = YAML.load(value)
|
||||
Jekyll.set_timezone(value) if key == "timezone"
|
||||
File.write("_config.yml", YAML.dump(config))
|
||||
end
|
||||
@@ -287,28 +287,28 @@ end
|
||||
|
||||
#
|
||||
|
||||
Then(%r!^I should (not )?see "(.*)" in "(.*)" if platform does not support symlinks$!) do |negative, text, file|
|
||||
Then(%r!^I should (not )?see "(.*)" in "(.*)" if on Windows$!) do |negative, text, file|
|
||||
step %(the "#{file}" file should exist)
|
||||
regexp = Regexp.new(text, Regexp::MULTILINE)
|
||||
if negative.nil? || negative.empty?
|
||||
if Platform.supports_symlink?
|
||||
expect(file_contents(file)).not_to match regexp
|
||||
else
|
||||
if Jekyll::Utils::Platforms.really_windows?
|
||||
expect(file_contents(file)).to match regexp
|
||||
else
|
||||
expect(file_contents(file)).not_to match regexp
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
Then(%r!^I should (not )?see "(.*)" in "(.*)" if platform supports symlinks$!) do |negative, text, file|
|
||||
Then(%r!^I should (not )?see "(.*)" in "(.*)" unless Windows$!) do |negative, text, file|
|
||||
step %(the "#{file}" file should exist)
|
||||
regexp = Regexp.new(text, Regexp::MULTILINE)
|
||||
if negative.nil? || negative.empty?
|
||||
if Platform.supports_symlink?
|
||||
expect(file_contents(file)).to match regexp
|
||||
else
|
||||
if Jekyll::Utils::Platforms.really_windows?
|
||||
expect(file_contents(file)).not_to match regexp
|
||||
else
|
||||
expect(file_contents(file)).to match regexp
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,80 +1,222 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "fileutils"
|
||||
require "colorator"
|
||||
require "cucumber/formatter/console"
|
||||
require "cucumber/formatter/io"
|
||||
|
||||
module Jekyll
|
||||
module Cucumber
|
||||
class Formatter
|
||||
attr_accessor :indent, :runtime
|
||||
include ::Cucumber::Formatter::Console
|
||||
include ::Cucumber::Formatter::Io
|
||||
include FileUtils
|
||||
|
||||
def initialize(path_or_io, error_stream)
|
||||
@io = ensure_io(path_or_io, error_stream)
|
||||
CHARS = {
|
||||
:failed => "\u2718".red,
|
||||
:pending => "\u203D".yellow,
|
||||
:undefined => "\u2718".red,
|
||||
:passed => "\u2714".green,
|
||||
:skipped => "\u203D".blue,
|
||||
}.freeze
|
||||
|
||||
#
|
||||
|
||||
def initialize(runtime, path_or_io, options)
|
||||
@runtime = runtime
|
||||
@snippets_input = []
|
||||
@io = ensure_io(path_or_io)
|
||||
@prefixes = options[:prefixes] || {}
|
||||
@delayed_messages = []
|
||||
@options = options
|
||||
@exceptions = []
|
||||
@indent = 0
|
||||
@timings = {}
|
||||
end
|
||||
|
||||
def before_test_case(test_case)
|
||||
@timings[timing_key(test_case)] = Time.now
|
||||
#
|
||||
|
||||
def before_features(_features)
|
||||
print_profile_information
|
||||
end
|
||||
|
||||
def after_test_case(test_case)
|
||||
@timings[timing_key(test_case)] = Time.now - @timings[timing_key(test_case)]
|
||||
#
|
||||
|
||||
def after_features(features)
|
||||
@io.puts
|
||||
print_worst_offenders
|
||||
print_summary(features)
|
||||
end
|
||||
|
||||
def print_test_case_info(test_case)
|
||||
@io.print "\n#{test_case.location} #{truncate(test_case.name).inspect} "
|
||||
#
|
||||
|
||||
def before_feature(_feature)
|
||||
@exceptions = []
|
||||
@indent = 0
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def feature_element_timing_key(feature_element)
|
||||
"\"#{feature_element.name}\" (#{feature_element.location})"
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def before_feature_element(feature_element)
|
||||
@indent = 2
|
||||
@scenario_indent = 2
|
||||
@timings[feature_element_timing_key(feature_element)] = Time.now
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def after_feature_element(feature_element)
|
||||
@timings[feature_element_timing_key(feature_element)] = Time.now - @timings[feature_element_timing_key(feature_element)]
|
||||
@io.print " (#{@timings[feature_element_timing_key(feature_element)]}s)"
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def tag_name(tag_name); end
|
||||
|
||||
def comment_line(comment_line); end
|
||||
|
||||
def after_tags(tags); end
|
||||
|
||||
#
|
||||
|
||||
def before_background(_background)
|
||||
@scenario_indent = 2
|
||||
@in_background = true
|
||||
@indent = 2
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def after_background(_background)
|
||||
@in_background = nil
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def background_name(keyword, name, source_line, indent)
|
||||
print_feature_element_name(
|
||||
keyword, name, source_line, indent
|
||||
)
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def scenario_name(keyword, name, source_line, indent)
|
||||
print_feature_element_name(
|
||||
keyword, name, source_line, indent
|
||||
)
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def before_step(step)
|
||||
@current_step = step
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
# rubocop:disable Metrics/ParameterLists
|
||||
def before_step_result(_keyword, _step_match, _multiline_arg, status, exception, \
|
||||
_source_indent, background, _file_colon_line)
|
||||
|
||||
@hide_this_step = false
|
||||
if exception
|
||||
if @exceptions.include?(exception)
|
||||
@hide_this_step = true
|
||||
return
|
||||
end
|
||||
|
||||
@exceptions << exception
|
||||
end
|
||||
|
||||
if status != :failed && @in_background ^ background
|
||||
@hide_this_step = true
|
||||
return
|
||||
end
|
||||
|
||||
@status = status
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def step_name(_keyword, _step_match, status, _source_indent, _background, _file_colon_line)
|
||||
@io.print CHARS[status]
|
||||
@io.print " "
|
||||
end
|
||||
# rubocop:enable Metrics/ParameterLists
|
||||
|
||||
#
|
||||
|
||||
def exception(exception, status)
|
||||
return if @hide_this_step
|
||||
|
||||
@io.puts
|
||||
print_exception(exception, status, @indent)
|
||||
@io.flush
|
||||
end
|
||||
|
||||
def print_test_case_duration(test_case)
|
||||
@io.print format(" (%.3fs)", @timings[timing_key(test_case)])
|
||||
#
|
||||
|
||||
def after_test_step(test_step, result)
|
||||
collect_snippet_data(
|
||||
test_step, result
|
||||
)
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def print_feature_element_name(feature_element)
|
||||
@io.print "\n#{feature_element.location} Scenario: #{feature_element.name} "
|
||||
@io.flush
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def cell_prefix(status)
|
||||
@prefixes[status]
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def print_worst_offenders
|
||||
@io.puts "\n\nWorst offenders:"
|
||||
|
||||
rows = @timings.sort_by { |_f, t| -t }.take(10).map! { |r| r[0].split(" \t ", 2).push(r[1]) }
|
||||
padding = rows.max_by { |r| r[0].length }.first.length + 2
|
||||
rows.each { |row| @io.puts format_row_data(row, padding) }
|
||||
@io.puts
|
||||
@io.puts "Worst offenders:"
|
||||
@timings.sort_by { |_f, t| -t }.take(10).each do |(f, t)|
|
||||
@io.puts " #{t}s for #{f}"
|
||||
end
|
||||
@io.puts
|
||||
end
|
||||
|
||||
private
|
||||
#
|
||||
|
||||
def format_row_data(row, padding)
|
||||
[
|
||||
row[0].ljust(padding).rjust(padding + 2),
|
||||
row[1].ljust(45),
|
||||
format("(%.3fs)", row[2]),
|
||||
].join
|
||||
end
|
||||
|
||||
def timing_key(test_case)
|
||||
"#{test_case.location} \t #{truncate(test_case.name).inspect}"
|
||||
end
|
||||
|
||||
def truncate(input, max_len: 40)
|
||||
str = input.to_s
|
||||
str.length > max_len ? "#{str[0..(max_len - 2)]}..." : str
|
||||
def print_summary(features)
|
||||
@io.puts
|
||||
print_stats(features, @options)
|
||||
print_snippets(@options)
|
||||
print_passing_wip(@options)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
InstallPlugin do |config|
|
||||
progress_fmt = config.to_hash[:formats][0][0] == "progress"
|
||||
f = Jekyll::Cucumber::Formatter.new($stdout, $stderr)
|
||||
AfterConfiguration do |config|
|
||||
f = Jekyll::Cucumber::Formatter.new(nil, $stdout, {})
|
||||
|
||||
config.on_event :test_case_started do |event|
|
||||
test_case = event.test_case
|
||||
|
||||
f.print_test_case_info(test_case) if progress_fmt
|
||||
f.before_test_case(test_case)
|
||||
f.print_feature_element_name(event.test_case)
|
||||
f.before_feature_element(event.test_case)
|
||||
end
|
||||
|
||||
config.on_event :test_case_finished do |event|
|
||||
test_case = event.test_case
|
||||
|
||||
f.after_test_case(test_case)
|
||||
f.print_test_case_duration(test_case) if progress_fmt
|
||||
f.after_feature_element(event.test_case)
|
||||
end
|
||||
|
||||
config.on_event :test_run_finished do
|
||||
|
||||
@@ -18,13 +18,6 @@ class Paths
|
||||
def self.source_dir; SOURCE_DIR; end
|
||||
end
|
||||
|
||||
class Platform
|
||||
REF_FILE = File.expand_path("../../test/source/symlink-test/symlinked-file", __dir__)
|
||||
|
||||
def self.supports_symlink?; File.symlink?(REF_FILE); end
|
||||
end
|
||||
|
||||
|
||||
#
|
||||
|
||||
def file_content_from_hash(input_hash)
|
||||
|
||||
@@ -19,7 +19,7 @@ Feature: Writing themes
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see ".sample {\n color: red;\n}\n\n\/\*# sourceMappingURL=style.css.map \*\/" in "_site/assets/style.css"
|
||||
And I should see ".sample { color: red; }\n\n\/\*# sourceMappingURL=style.css.map \*\/" in "_site/assets/style.css"
|
||||
|
||||
Scenario: Overriding a theme with SCSS
|
||||
Given I have a configuration file with "theme" set to "test-theme"
|
||||
@@ -28,7 +28,7 @@ Feature: Writing themes
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see ".sample {\n color: black;\n}\n\n\/\*# sourceMappingURL=style.css.map \*\/" in "_site/assets/style.css"
|
||||
And I should see ".sample { color: black; }\n\n\/\*# sourceMappingURL=style.css.map \*\/" in "_site/assets/style.css"
|
||||
|
||||
Scenario: A theme with an include
|
||||
Given I have a configuration file with "theme" set to "test-theme"
|
||||
|
||||
@@ -36,14 +36,19 @@ Gem::Specification.new do |s|
|
||||
s.add_runtime_dependency("colorator", "~> 1.0")
|
||||
s.add_runtime_dependency("em-websocket", "~> 0.5")
|
||||
s.add_runtime_dependency("i18n", "~> 1.0")
|
||||
s.add_runtime_dependency("jekyll-sass-converter", ">= 2.0", "< 4.0")
|
||||
s.add_runtime_dependency("jekyll-sass-converter", "~> 2.0")
|
||||
s.add_runtime_dependency("jekyll-watch", "~> 2.0")
|
||||
s.add_runtime_dependency("kramdown", "~> 2.3", ">= 2.3.1")
|
||||
s.add_runtime_dependency("kramdown-parser-gfm", "~> 1.0")
|
||||
s.add_runtime_dependency("liquid", "~> 4.0")
|
||||
s.add_runtime_dependency("liquid", ">= 4.0", "< 6.0")
|
||||
s.add_runtime_dependency("mercenary", ">= 0.3.6", "< 0.5")
|
||||
s.add_runtime_dependency("pathutil", "~> 0.9")
|
||||
s.add_runtime_dependency("rouge", ">= 3.0", "< 5.0")
|
||||
|
||||
# Ruby 3.1.0 shipped with `psych-4.0.3` which caused some of our Cucumber-based tests to fail.
|
||||
# TODO: Remove lock once we implement a way to use Psych 4 without breaking anything.
|
||||
s.add_runtime_dependency("psych", "~> 3.3")
|
||||
|
||||
s.add_runtime_dependency("rouge", "~> 3.0")
|
||||
s.add_runtime_dependency("safe_yaml", "~> 1.0")
|
||||
s.add_runtime_dependency("terminal-table", ">= 1.8", "< 4.0")
|
||||
s.add_runtime_dependency("webrick", "~> 1.7")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
|
||||
@import "base";
|
||||
@import "main";
|
||||
|
||||
@@ -30,8 +30,8 @@ module Jekyll
|
||||
site = Jekyll::Site.new(options)
|
||||
|
||||
if options.fetch("skip_initial_build", false)
|
||||
Jekyll.logger.warn "Build Warning:",
|
||||
"Skipping the initial build. This may result in an out-of-date site."
|
||||
Jekyll.logger.warn "Build Warning:", "Skipping the initial build." \
|
||||
" This may result in an out-of-date site."
|
||||
else
|
||||
build(site, options)
|
||||
end
|
||||
|
||||
@@ -7,7 +7,8 @@ module Jekyll
|
||||
def init_with_program(prog)
|
||||
prog.command(:clean) do |c|
|
||||
c.syntax "clean [subcommand]"
|
||||
c.description "Clean the site (removes site output and metadata file) without building."
|
||||
c.description "Clean the site " \
|
||||
"(removes site output and metadata file) without building."
|
||||
|
||||
add_build_options(c)
|
||||
|
||||
|
||||
@@ -53,14 +53,14 @@ module Jekyll
|
||||
"Detected '_posts' directory outside custom `collections_dir`!"
|
||||
Jekyll.logger.warn "",
|
||||
"Please move '#{posts_at_root}' into the custom directory at " \
|
||||
"'#{site.in_source_dir(site.config["collections_dir"])}'"
|
||||
"'#{site.in_source_dir(site.config["collections_dir"])}'"
|
||||
false
|
||||
end
|
||||
|
||||
def deprecated_relative_permalinks(site)
|
||||
if site.config["relative_permalinks"]
|
||||
Jekyll::Deprecator.deprecation_message "Your site still uses relative permalinks, " \
|
||||
"which was removed in Jekyll v3.0.0."
|
||||
Jekyll::Deprecator.deprecation_message "Your site still uses relative permalinks," \
|
||||
" which was removed in Jekyll v3.0.0."
|
||||
true
|
||||
end
|
||||
end
|
||||
@@ -88,7 +88,7 @@ module Jekyll
|
||||
Jekyll.logger.error <<~STR
|
||||
We have detected that there might be trouble using fsevent on your
|
||||
operating system, you can read https://github.com/thibaudgg/rb-fsevent/wiki/no-fsevents-fired-(OSX-bug)
|
||||
for possible workarounds or you can work around it immediately
|
||||
for possible work arounds or you can work around it immediately
|
||||
with `--force-polling`.
|
||||
STR
|
||||
|
||||
@@ -105,9 +105,9 @@ module Jekyll
|
||||
next unless real_urls.uniq.size > 1
|
||||
|
||||
urls_only_differ_by_case = true
|
||||
Jekyll.logger.warn "Warning:", "The following URLs only differ by case. On a " \
|
||||
"case-insensitive file system one of the URLs will be " \
|
||||
"overwritten by the other: #{real_urls.join(", ")}"
|
||||
Jekyll.logger.warn "Warning:", "The following URLs only differ" \
|
||||
" by case. On a case-insensitive file system one of the URLs" \
|
||||
" will be overwritten by the other: #{real_urls.join(", ")}"
|
||||
end
|
||||
urls_only_differ_by_case
|
||||
end
|
||||
@@ -148,8 +148,8 @@ module Jekyll
|
||||
def url_exists?(url)
|
||||
return true unless url.nil? || url.empty?
|
||||
|
||||
Jekyll.logger.warn "Warning:", "You didn't set an URL in the config file, you may " \
|
||||
"encounter problems with some plugins."
|
||||
Jekyll.logger.warn "Warning:", "You didn't set an URL in the config file, "\
|
||||
"you may encounter problems with some plugins."
|
||||
false
|
||||
end
|
||||
|
||||
@@ -157,18 +157,18 @@ module Jekyll
|
||||
Addressable::URI.parse(url)
|
||||
true
|
||||
# Addressable::URI#parse only raises a TypeError
|
||||
# https://github.com/sporkmonger/addressable/blob/0a0e96acb17225f9b1c9cab0bad332b448934c9a/lib/addressable/uri.rb#L103
|
||||
# https://git.io/vFfbx
|
||||
rescue TypeError
|
||||
Jekyll.logger.warn "Warning:", "The site URL does not seem to be valid, " \
|
||||
"check the value of `url` in your config file."
|
||||
Jekyll.logger.warn "Warning:", "The site URL does not seem to be valid, "\
|
||||
"check the value of `url` in your config file."
|
||||
false
|
||||
end
|
||||
|
||||
def url_absolute(url)
|
||||
return true if url.is_a?(String) && Addressable::URI.parse(url).absolute?
|
||||
|
||||
Jekyll.logger.warn "Warning:", "Your site URL does not seem to be absolute, " \
|
||||
"check the value of `url` in your config file."
|
||||
Jekyll.logger.warn "Warning:", "Your site URL does not seem to be absolute, "\
|
||||
"check the value of `url` in your config file."
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
@@ -28,8 +28,8 @@ module Jekyll
|
||||
FileUtils.mkdir_p new_blog_path
|
||||
if preserve_source_location?(new_blog_path, options)
|
||||
Jekyll.logger.error "Conflict:", "#{new_blog_path} exists and is not empty."
|
||||
Jekyll.logger.abort_with "", "Ensure #{new_blog_path} is empty or else try again " \
|
||||
"with `--force` to proceed and overwrite any files."
|
||||
Jekyll.logger.abort_with "", "Ensure #{new_blog_path} is empty or else " \
|
||||
"try again with `--force` to proceed and overwrite any files."
|
||||
end
|
||||
|
||||
if options["blank"]
|
||||
@@ -97,7 +97,7 @@ module Jekyll
|
||||
end
|
||||
|
||||
# Performance-booster for watching directories on Windows
|
||||
gem "wdm", "~> 0.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||
|
||||
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
|
||||
# do not have a Java counterpart.
|
||||
@@ -108,9 +108,13 @@ module Jekyll
|
||||
def create_site(new_blog_path)
|
||||
create_sample_files new_blog_path
|
||||
|
||||
File.write(File.expand_path(initialized_post_name, new_blog_path), scaffold_post_content)
|
||||
File.open(File.expand_path(initialized_post_name, new_blog_path), "w") do |f|
|
||||
f.write(scaffold_post_content)
|
||||
end
|
||||
|
||||
File.write(File.expand_path("Gemfile", new_blog_path), gemfile_contents)
|
||||
File.open(File.expand_path("Gemfile", new_blog_path), "w") do |f|
|
||||
f.write(gemfile_contents)
|
||||
end
|
||||
end
|
||||
|
||||
def preserve_source_location?(path, options)
|
||||
|
||||
@@ -10,7 +10,8 @@ module Jekyll
|
||||
prog.command(:"new-theme") do |c|
|
||||
c.syntax "new-theme NAME"
|
||||
c.description "Creates a new Jekyll theme scaffold"
|
||||
c.option "code_of_conduct", "-c", "--code-of-conduct",
|
||||
c.option "code_of_conduct", \
|
||||
"-c", "--code-of-conduct", \
|
||||
"Include a Code of Conduct. (defaults to false)"
|
||||
|
||||
c.action do |args, opts|
|
||||
@@ -29,8 +30,8 @@ module Jekyll
|
||||
Jekyll.logger.abort_with "Conflict:", "#{theme.path} already exists." if theme.path.exist?
|
||||
|
||||
theme.create!
|
||||
Jekyll.logger.info "Your new Jekyll theme, #{theme.name.cyan}, " \
|
||||
"is ready for you in #{theme.path.to_s.cyan}!"
|
||||
Jekyll.logger.info "Your new Jekyll theme, #{theme.name.cyan}," \
|
||||
" is ready for you in #{theme.path.to_s.cyan}!"
|
||||
Jekyll.logger.info "For help getting started, read #{theme.path}/README.md."
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,11 +21,11 @@ module Jekyll
|
||||
"ssl_key" => ["--ssl-key [KEY]", "X.509 (SSL) Private Key."],
|
||||
"port" => ["-P", "--port [PORT]", "Port to listen on"],
|
||||
"show_dir_listing" => ["--show-dir-listing",
|
||||
"Show a directory listing instead of loading " \
|
||||
"your index file.",],
|
||||
"Show a directory listing instead of loading" \
|
||||
" your index file.",],
|
||||
"skip_initial_build" => ["skip_initial_build", "--skip-initial-build",
|
||||
"Skips the initial site build which occurs before " \
|
||||
"the server is started.",],
|
||||
"Skips the initial site build which occurs before" \
|
||||
" the server is started.",],
|
||||
"livereload" => ["-l", "--livereload",
|
||||
"Use LiveReload to automatically refresh browsers",],
|
||||
"livereload_ignore" => ["--livereload-ignore ignore GLOB1[,GLOB2[,...]]",
|
||||
@@ -113,8 +113,8 @@ module Jekyll
|
||||
def validate_options(opts)
|
||||
if opts["livereload"]
|
||||
if opts["detach"]
|
||||
Jekyll.logger.warn "Warning:", "--detach and --livereload are mutually exclusive. " \
|
||||
"Choosing --livereload"
|
||||
Jekyll.logger.warn "Warning:", "--detach and --livereload are mutually exclusive." \
|
||||
" Choosing --livereload"
|
||||
opts["detach"] = false
|
||||
end
|
||||
if opts["ssl_cert"] || opts["ssl_key"]
|
||||
@@ -132,9 +132,9 @@ module Jekyll
|
||||
livereload_max_delay
|
||||
livereload_ignore
|
||||
livereload_port).any? { |o| opts[o] }
|
||||
Jekyll.logger.abort_with "--livereload-min-delay, --livereload-max-delay, " \
|
||||
"--livereload-ignore, and --livereload-port require " \
|
||||
"the --livereload option."
|
||||
Jekyll.logger.abort_with "--livereload-min-delay, "\
|
||||
"--livereload-max-delay, --livereload-ignore, and "\
|
||||
"--livereload-port require the --livereload option."
|
||||
end
|
||||
end
|
||||
|
||||
@@ -174,8 +174,7 @@ module Jekyll
|
||||
# Do a base pre-setup of WEBRick so that everything is in place
|
||||
# when we get ready to party, checking for an setting up an error page
|
||||
# and making sure our destination exists.
|
||||
#
|
||||
# rubocop:disable Security/IoMethods
|
||||
|
||||
def setup(destination)
|
||||
require_relative "serve/servlet"
|
||||
|
||||
@@ -189,7 +188,6 @@ module Jekyll
|
||||
end
|
||||
end
|
||||
end
|
||||
# rubocop:enable Security/IoMethods
|
||||
|
||||
def webrick_opts(opts)
|
||||
opts = {
|
||||
@@ -265,7 +263,8 @@ module Jekyll
|
||||
return system "xdg-open", address if Utils::Platforms.linux?
|
||||
return system "open", address if Utils::Platforms.osx?
|
||||
|
||||
Jekyll.logger.error "Refusing to launch browser. Platform launcher unknown."
|
||||
Jekyll.logger.error "Refusing to launch browser; " \
|
||||
"Platform launcher unknown."
|
||||
end
|
||||
|
||||
# Keep in our area with a thread or detach the server as requested
|
||||
@@ -278,8 +277,9 @@ module Jekyll
|
||||
end
|
||||
|
||||
Process.detach(pid)
|
||||
Jekyll.logger.info "Server detached with pid '#{pid}'.",
|
||||
"Run `pkill -f jekyll' or `kill -9 #{pid}' to stop the server."
|
||||
Jekyll.logger.info "Server detached with pid '#{pid}'.", \
|
||||
"Run `pkill -f jekyll' or `kill -9 #{pid}'" \
|
||||
" to stop the server."
|
||||
else
|
||||
t = Thread.new { server.start }
|
||||
trap("INT") { server.shutdown }
|
||||
|
||||
@@ -110,7 +110,7 @@ module Jekyll
|
||||
|
||||
def log_error(error)
|
||||
Jekyll.logger.error "LiveReload experienced an error. " \
|
||||
"Run with --trace for more information."
|
||||
"Run with --trace for more information."
|
||||
raise error
|
||||
end
|
||||
end
|
||||
|
||||
@@ -128,7 +128,7 @@ module Jekyll
|
||||
class Servlet < WEBrick::HTTPServlet::FileHandler
|
||||
DEFAULTS = {
|
||||
"Cache-Control" => "private, max-age=0, proxy-revalidate, " \
|
||||
"no-store, no-cache, must-revalidate",
|
||||
"no-store, no-cache, must-revalidate",
|
||||
}.freeze
|
||||
|
||||
def initialize(server, root, callbacks)
|
||||
|
||||
@@ -304,8 +304,8 @@ module Jekyll
|
||||
return if config["plugins"].is_a?(Array)
|
||||
|
||||
Jekyll.logger.error "'plugins' should be set as an array of gem-names, but was: " \
|
||||
"#{config["plugins"].inspect}. Use 'plugins_dir' instead to set " \
|
||||
"the directory for your non-gemified Ruby plugins."
|
||||
"#{config["plugins"].inspect}. Use 'plugins_dir' instead to set the directory " \
|
||||
"for your non-gemified Ruby plugins."
|
||||
raise Jekyll::Errors::InvalidConfigurationError,
|
||||
"'plugins' should be set as an array, but was: #{config["plugins"].inspect}."
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# frozen_string_literal: true
|
||||
# Frozen-string-literal: true
|
||||
|
||||
module Kramdown
|
||||
# A Kramdown::Document subclass meant to optimize memory usage from initializing
|
||||
|
||||
@@ -12,6 +12,7 @@ module Jekyll
|
||||
mutable false
|
||||
|
||||
delegate_method_as :relative_path, :path
|
||||
delegate_method_as :basename, :name
|
||||
private delegate_method_as :data, :fallback_data
|
||||
|
||||
delegate_methods :id, :output, :content, :to_s, :relative_path, :url, :date
|
||||
@@ -25,10 +26,6 @@ module Jekyll
|
||||
fallback_data["excerpt"].to_s
|
||||
end
|
||||
|
||||
def name
|
||||
fallback_data["name"] || @obj.basename
|
||||
end
|
||||
|
||||
def <=>(other)
|
||||
return nil unless other.is_a? DocumentDrop
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ module Jekyll
|
||||
end
|
||||
|
||||
def name
|
||||
@obj.doc.data["name"] || @obj.doc.basename
|
||||
@obj.doc.basename
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jekyll
|
||||
module Drops
|
||||
class ThemeDrop < Drop
|
||||
delegate_method_as :runtime_dependencies, :dependencies
|
||||
|
||||
def root
|
||||
@root ||= ENV["JEKYLL_ENV"] == "development" ? @obj.root : ""
|
||||
end
|
||||
|
||||
def authors
|
||||
@authors ||= gemspec.authors.join(", ")
|
||||
end
|
||||
|
||||
def version
|
||||
@version ||= gemspec.version.to_s
|
||||
end
|
||||
|
||||
def description
|
||||
@description ||= gemspec.description || gemspec.summary
|
||||
end
|
||||
|
||||
def metadata
|
||||
@metadata ||= gemspec.metadata
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def gemspec
|
||||
@gemspec ||= @obj.send(:gemspec)
|
||||
end
|
||||
|
||||
def fallback_data
|
||||
@fallback_data ||= {}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -16,10 +16,6 @@ module Jekyll
|
||||
@site_drop ||= SiteDrop.new(@obj)
|
||||
end
|
||||
|
||||
def theme
|
||||
@theme_drop ||= ThemeDrop.new(@obj.theme) if @obj.theme
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def fallback_data
|
||||
|
||||
@@ -190,8 +190,8 @@ module Jekyll
|
||||
|
||||
def print_build_warning
|
||||
Jekyll.logger.warn "Warning:", "Excerpt modified in #{doc.relative_path}!"
|
||||
Jekyll.logger.warn "", "Found a Liquid block containing the excerpt separator " \
|
||||
"#{doc.excerpt_separator.inspect}."
|
||||
Jekyll.logger.warn "", "Found a Liquid block containing the excerpt separator" \
|
||||
" #{doc.excerpt_separator.inspect}. "
|
||||
Jekyll.logger.warn "", "The block has been modified with the appropriate closing tag."
|
||||
Jekyll.logger.warn "", "Feel free to define a custom excerpt or excerpt_separator in the"
|
||||
Jekyll.logger.warn "", "document's Front Matter if the generated excerpt is unsatisfactory."
|
||||
|
||||
@@ -311,7 +311,7 @@ module Jekyll
|
||||
order = + 1
|
||||
else
|
||||
raise ArgumentError, "Invalid nils order: " \
|
||||
"'#{nils}' is not a valid nils order. It must be 'first' or 'last'."
|
||||
"'#{nils}' is not a valid nils order. It must be 'first' or 'last'."
|
||||
end
|
||||
|
||||
sort_input(input, property, order)
|
||||
@@ -398,11 +398,17 @@ module Jekyll
|
||||
# `where` filter helper
|
||||
#
|
||||
def compare_property_vs_target(property, target)
|
||||
# Liquid v4 handles 'empty' and 'blank' keywords separately from v5.
|
||||
# Delete when we remove Liquid v5 support.
|
||||
if Liquid::VERSION.start_with?("4.") && target.is_a?(Liquid::Expression::MethodLiteral)
|
||||
target = target.to_s
|
||||
return true if property == target || Array(property).join == target
|
||||
end
|
||||
|
||||
case target
|
||||
when NilClass
|
||||
return true if property.nil?
|
||||
when Liquid::Expression::MethodLiteral # `empty` or `blank`
|
||||
target = target.to_s
|
||||
when "", Liquid::Expression::MethodLiteral # empty/blank hashes and arrays will match this
|
||||
return true if property == target || Array(property).join == target
|
||||
else
|
||||
target = target.to_s
|
||||
@@ -478,7 +484,7 @@ module Jekyll
|
||||
end
|
||||
|
||||
# ----------- The following set of code was *adapted* from Liquid::If
|
||||
# ----------- ref: https://github.com/Shopify/liquid/blob/ffb0ace30315bbcf3548a0383fab531452060ae8/lib/liquid/tags/if.rb#L84-L107
|
||||
# ----------- ref: https://git.io/vp6K6
|
||||
|
||||
# Parse a string to a Liquid Condition
|
||||
def parse_condition(exp)
|
||||
|
||||
@@ -78,8 +78,8 @@ module Jekyll
|
||||
}
|
||||
|
||||
unless @registry[owner][event]
|
||||
raise NotAvailable, "Invalid hook. #{owner} supports only the following hooks " \
|
||||
"#{@registry[owner].keys.inspect}"
|
||||
raise NotAvailable, "Invalid hook. #{owner} supports only the " \
|
||||
"following hooks #{@registry[owner].keys.inspect}"
|
||||
end
|
||||
|
||||
raise Uncallable, "Hooks must respond to :call" unless block.respond_to? :call
|
||||
|
||||
@@ -15,12 +15,16 @@ module Jekyll
|
||||
|
||||
private
|
||||
|
||||
# rubocop:disable Metrics/AbcSize
|
||||
def data_for_table(num_of_rows)
|
||||
sorted = @stats.sort_by { |_, file_stats| -file_stats[:time] }
|
||||
sorted = sorted.slice(0, num_of_rows)
|
||||
|
||||
table = [header_labels]
|
||||
totals = Hash.new { |hash, key| hash[key] = 0 }
|
||||
|
||||
sorted.each do |filename, file_stats|
|
||||
GAUGES.each { |gauge| totals[gauge] += file_stats[gauge] }
|
||||
row = []
|
||||
row << filename
|
||||
row << file_stats[:count].to_s
|
||||
@@ -29,8 +33,14 @@ module Jekyll
|
||||
table << row
|
||||
end
|
||||
|
||||
table
|
||||
footer = []
|
||||
footer << "TOTAL (for #{sorted.size} files)"
|
||||
footer << totals[:count].to_s
|
||||
footer << format_bytes(totals[:bytes])
|
||||
footer << format("%.3f", totals[:time])
|
||||
table << footer
|
||||
end
|
||||
# rubocop:enable Metrics/AbcSize
|
||||
|
||||
def header_labels
|
||||
GAUGES.map { |gauge| gauge.to_s.capitalize }.unshift("Filename")
|
||||
|
||||
@@ -113,10 +113,9 @@ module Jekyll
|
||||
pagination_included = (site.config["plugins"] || []).include?("jekyll-paginate") ||
|
||||
defined?(Jekyll::Paginate)
|
||||
if site.config["paginate"] && !pagination_included
|
||||
Jekyll::Deprecator.deprecation_message <<~MSG
|
||||
You appear to have pagination turned on, but you haven't included the `jekyll-paginate`
|
||||
gem. Ensure you have `plugins: [jekyll-paginate]` in your configuration file.
|
||||
MSG
|
||||
Jekyll::Deprecator.deprecation_message "You appear to have pagination " \
|
||||
"turned on, but you haven't included the `jekyll-paginate` gem. " \
|
||||
"Ensure you have `plugins: [jekyll-paginate]` in your configuration file."
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -14,12 +14,15 @@ module Jekyll
|
||||
|
||||
rows = table_rows.dup
|
||||
header = rows.shift
|
||||
footer = rows.pop
|
||||
output = +"\n"
|
||||
|
||||
table = Terminal::Table.new do |t|
|
||||
t << header
|
||||
t << :separator
|
||||
rows.each { |row| t << row }
|
||||
t << :separator
|
||||
t << footer
|
||||
t.style = TERMINAL_TABLE_STYLES
|
||||
t.align_column(0, :left)
|
||||
end
|
||||
@@ -33,14 +36,18 @@ module Jekyll
|
||||
|
||||
def profile_process
|
||||
profile_data = { "PHASE" => "TIME" }
|
||||
total_time = 0
|
||||
|
||||
[:reset, :read, :generate, :render, :cleanup, :write].each do |method|
|
||||
start_time = Time.now
|
||||
@site.send(method)
|
||||
end_time = (Time.now - start_time).round(4)
|
||||
profile_data[method.to_s.upcase] = format("%.4f", end_time)
|
||||
total_time += end_time
|
||||
end
|
||||
|
||||
profile_data["TOTAL TIME"] = format("%.4f", total_time)
|
||||
|
||||
Jekyll.logger.info "\nBuild Process Summary:"
|
||||
Jekyll.logger.info Profiler.tabulate(Array(profile_data))
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ module Jekyll
|
||||
converter.convert output
|
||||
rescue StandardError => e
|
||||
Jekyll.logger.error "Conversion error:",
|
||||
"#{converter.class} encountered an error while " \
|
||||
"#{converter.class} encountered an error while "\
|
||||
"converting '#{document.relative_path}':"
|
||||
Jekyll.logger.error("", e.to_s)
|
||||
raise e
|
||||
@@ -179,7 +179,7 @@ module Jekyll
|
||||
return unless invalid_layout?(layout)
|
||||
|
||||
Jekyll.logger.warn "Build Warning:", "Layout '#{document.data["layout"]}' requested " \
|
||||
"in #{document.relative_path} does not exist."
|
||||
"in #{document.relative_path} does not exist."
|
||||
end
|
||||
|
||||
# Render layout content into document.output
|
||||
|
||||
@@ -328,11 +328,11 @@ module Jekyll
|
||||
# Returns
|
||||
def relative_permalinks_are_deprecated
|
||||
if config["relative_permalinks"]
|
||||
Jekyll.logger.abort_with "Since v3.0, permalinks for pages " \
|
||||
"in subfolders must be relative to the " \
|
||||
"site source directory, not the parent " \
|
||||
"directory. Check https://jekyllrb.com/docs/upgrading/ " \
|
||||
"for more info."
|
||||
Jekyll.logger.abort_with "Since v3.0, permalinks for pages" \
|
||||
" in subfolders must be relative to the" \
|
||||
" site source directory, not the parent" \
|
||||
" directory. Check https://jekyllrb.com/docs/upgrading/"\
|
||||
" for more info."
|
||||
end
|
||||
end
|
||||
|
||||
@@ -360,9 +360,11 @@ module Jekyll
|
||||
end
|
||||
|
||||
def each_site_file
|
||||
pages.each { |page| yield page }
|
||||
static_files.each { |file| yield(file) if file.write? }
|
||||
collections.each_value { |coll| coll.docs.each { |doc| yield(doc) if doc.write? } }
|
||||
%w(pages static_files_to_write docs_to_write).each do |type|
|
||||
send(type).each do |item|
|
||||
yield item
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Returns the FrontmatterDefaults or creates a new FrontmatterDefaults
|
||||
@@ -474,11 +476,7 @@ module Jekyll
|
||||
theme_config.delete_if { |key, _| Configuration::DEFAULTS.key?(key) }
|
||||
|
||||
# Override theme_config with existing config and return the result.
|
||||
# Additionally ensure we return a `Jekyll::Configuration` instance instead of a Hash.
|
||||
Utils.deep_merge_hashes(theme_config, config)
|
||||
.each_with_object(Jekyll::Configuration.new) do |(key, value), conf|
|
||||
conf[key] = value
|
||||
end
|
||||
end
|
||||
|
||||
# Limits the current posts; removes the posts which exceed the limit_posts
|
||||
@@ -534,8 +532,8 @@ module Jekyll
|
||||
if config["theme"].is_a?(String)
|
||||
Jekyll::Theme.new(config["theme"])
|
||||
else
|
||||
Jekyll.logger.warn "Theme:", "value of 'theme' in config should be String to use " \
|
||||
"gem-based themes, but got #{config["theme"].class}"
|
||||
Jekyll.logger.warn "Theme:", "value of 'theme' in config should be " \
|
||||
"String to use gem-based themes, but got #{config["theme"].class}"
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,10 +3,13 @@
|
||||
module Jekyll
|
||||
class Stevenson < ::Logger
|
||||
def initialize
|
||||
formatter = proc do |_, _, _, msg|
|
||||
@progname = nil
|
||||
@level = DEBUG
|
||||
@default_formatter = Formatter.new
|
||||
@logdev = $stdout
|
||||
@formatter = proc do |_, _, _, msg|
|
||||
msg.to_s
|
||||
end
|
||||
super($stdout, :formatter => formatter)
|
||||
end
|
||||
|
||||
def add(severity, message = nil, progname = nil)
|
||||
|
||||
@@ -104,8 +104,8 @@ module Jekyll
|
||||
"class=\"language-#{@lang.to_s.tr("+", "-")}\"",
|
||||
"data-lang=\"#{@lang}\"",
|
||||
].join(" ")
|
||||
"<figure class=\"highlight\"><pre><code #{code_attributes}>" \
|
||||
"#{code.chomp}</code></pre></figure>"
|
||||
"<figure class=\"highlight\"><pre><code #{code_attributes}>"\
|
||||
"#{code.chomp}</code></pre></figure>"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -179,8 +179,8 @@ module Jekyll
|
||||
private
|
||||
|
||||
def could_not_locate_message(file, includes_dirs, safe)
|
||||
message = "Could not locate the included file '#{file}' in any of #{includes_dirs}. " \
|
||||
"Ensure it exists in one of those directories and"
|
||||
message = "Could not locate the included file '#{file}' in any of "\
|
||||
"#{includes_dirs}. Ensure it exists in one of those directories and"
|
||||
message + if safe
|
||||
" is not a symlink as those are not allowed in safe mode."
|
||||
else
|
||||
|
||||
@@ -86,11 +86,11 @@ module Jekyll
|
||||
site.posts.docs.each do |document|
|
||||
next unless @post.deprecated_equality document
|
||||
|
||||
Jekyll::Deprecator.deprecation_message(
|
||||
"A call to '{% post_url #{@post.name} %}' did not match a post using the new " \
|
||||
"matching method of checking name (path-date-slug) equality. Please make sure " \
|
||||
"that you change this tag to match the post's name exactly."
|
||||
)
|
||||
Jekyll::Deprecator.deprecation_message "A call to "\
|
||||
"'{% post_url #{@post.name} %}' did not match " \
|
||||
"a post using the new matching method of checking name " \
|
||||
"(path-date-slug) equality. Please make sure that you " \
|
||||
"change this tag to match the post's name exactly."
|
||||
return relative_url(document)
|
||||
end
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@ module Jekyll
|
||||
# Otherwise, Jekyll.sanitized path with prepend the unresolved root
|
||||
@root ||= File.realpath(gemspec.full_gem_path)
|
||||
rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP
|
||||
raise "Path #{gemspec.full_gem_path} does not exist, is not accessible or includes " \
|
||||
"a symbolic link loop"
|
||||
raise "Path #{gemspec.full_gem_path} does not exist, is not accessible "\
|
||||
"or includes a symbolic link loop"
|
||||
end
|
||||
|
||||
# The name of theme directory
|
||||
|
||||
@@ -100,7 +100,7 @@ module Jekyll
|
||||
winner = pool.find { |key| @placeholders.key?(key) }
|
||||
if winner.nil?
|
||||
raise NoMethodError,
|
||||
"The URL template doesn't have #{pool.join(" or ")} keys. " \
|
||||
"The URL template doesn't have #{pool.join(" or ")} keys. "\
|
||||
"Check your permalink template!"
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# frozen_string_literal: true
|
||||
# Frozen-string-literal: true
|
||||
|
||||
module Jekyll
|
||||
module Utils
|
||||
|
||||
@@ -25,7 +25,7 @@ module Jekyll
|
||||
# e.g. Eastern Standard Time (EST) that is 5Hrs. to the 'west' of Prime Meridian
|
||||
# is denoted as:
|
||||
# EST+5 (or) EST+05:00
|
||||
# Reference: https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
|
||||
# Reference: http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
|
||||
sign = offset.positive? ? "-" : "+"
|
||||
|
||||
rational_hours = offset.abs.to_r / 3600
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jekyll
|
||||
VERSION = "4.3.4"
|
||||
VERSION = "4.2.2"
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
time ruby -S bundle exec cucumber \
|
||||
--format progress --publish-quiet "$@"
|
||||
--format progress --publish "$@"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
echo "RuboCop $(bundle exec rubocop --version)"
|
||||
bundle exec rubocop -D --disable-pending-cops $@
|
||||
bundle exec rubocop -D $@
|
||||
success=$?
|
||||
if ((success != 0)); then
|
||||
echo -e "\nTry running \`script/fmt -a\` to automatically fix errors"
|
||||
|
||||
@@ -93,37 +93,6 @@ module DirectoryHelpers
|
||||
end
|
||||
end
|
||||
|
||||
module Jekyll
|
||||
#
|
||||
# --- NOTE: ---
|
||||
#
|
||||
# This monkey-patch was introduced because GitHub Actions on Windows acknowledges symlinked test
|
||||
# file `test/source/symlink-test/symlinked-file-outside-source` but errors out since the linked
|
||||
# location `/etc/passwd` does not exist on Windows.
|
||||
#
|
||||
# --- TODO: ---
|
||||
#
|
||||
# Consider having the `symlinked-file-outside-source` point to a file that is outside the
|
||||
# `source_dir` (defaults to `test/source`) yet is certain to exist on tested platforms.
|
||||
# For example, `jekyll.gemspec` is a good candidate.
|
||||
#
|
||||
# This monkey-patch will then no longer be necessary.
|
||||
#
|
||||
class ModifiedReader < Reader
|
||||
def read_directories(dir = "")
|
||||
if dir.start_with?("/symlink") && Utils::Platforms.really_windows?
|
||||
Jekyll.logger.debug "Skipping:", "Jekyll does not support symlinks on Windows"
|
||||
else
|
||||
super
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Hooks.register :site, :after_init do |site|
|
||||
site.instance_variable_set(:@reader, ModifiedReader.new(site))
|
||||
end
|
||||
end
|
||||
|
||||
class JekyllUnitTest < Minitest::Test
|
||||
include ::RSpec::Mocks::ExampleMethods
|
||||
include DirectoryHelpers
|
||||
@@ -136,7 +105,8 @@ class JekyllUnitTest < Minitest::Test
|
||||
end
|
||||
|
||||
def mocks_expect(*args)
|
||||
RSpec::Mocks::ExampleMethods::ExpectHost.instance_method(:expect).bind(self).call(*args)
|
||||
RSpec::Mocks::ExampleMethods::ExpectHost.instance_method(:expect)\
|
||||
.bind(self).call(*args)
|
||||
end
|
||||
|
||||
def before_setup
|
||||
@@ -196,7 +166,7 @@ class JekyllUnitTest < Minitest::Test
|
||||
def directory_with_contents(path)
|
||||
FileUtils.rm_rf(path)
|
||||
FileUtils.mkdir(path)
|
||||
File.write("#{path}/index.html", "I was previously generated.")
|
||||
File.open("#{path}/index.html", "w") { |f| f.write("I was previously generated.") }
|
||||
end
|
||||
|
||||
def with_env(key, value)
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
name: launcher
|
||||
---
|
||||
|
||||
`name` defined in front matter.
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
---
|
||||
|
||||
No `name` in front matter.
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
Jekyll is a simple, blog-aware, static site generator. It takes a template
|
||||
directory containing raw text files in various formats, runs it through
|
||||
[Markdown](https://daringfireball.net/projects/markdown/) (or
|
||||
[Textile](https://www.promptworks.com/textile)) and
|
||||
[Markdown](http://daringfireball.net/projects/markdown/) (or
|
||||
[Textile](http://redcloth.org/textile)) and
|
||||
[Liquid](https://help.shopify.com/themes/liquid/basics)
|
||||
converters, and spits out a complete, ready-to-publish static website suitable
|
||||
for serving with your favorite web server. Jekyll also happens to be the engine
|
||||
|
||||
@@ -5,5 +5,5 @@ approx_time: 30 mins
|
||||
---
|
||||
|
||||
Jekyll converts Markdown documents to HTML by default. Don't know what's Markdown?
|
||||
Read this [documentation](https://daringfireball.net/projects/markdown/)
|
||||
Read this [documentation](http://daringfireball.net/projects/markdown/)
|
||||
While you're at it, might as well learn about [Kramdown](https://kramdown.gettalong.org/)
|
||||
|
||||
@@ -75,7 +75,9 @@ class TestCommandsServe < JekyllUnitTest
|
||||
</html>
|
||||
HTML
|
||||
|
||||
File.write(File.join(@destination, "hello.html"), simple_page)
|
||||
File.open(File.join(@destination, "hello.html"), "w") do |f|
|
||||
f.write(simple_page)
|
||||
end
|
||||
allow(Jekyll::Site).to receive(:new).and_return(site)
|
||||
end
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ class TestDoctorCommand < JekyllUnitTest
|
||||
assert_equal "", output
|
||||
end
|
||||
|
||||
# rubocop:disable Layout/LineLength
|
||||
should "return warning for pages only differing by case" do
|
||||
@site = Site.new(Jekyll.configuration(
|
||||
"source" => File.join(source_dir, "/_urls_differ_by_case_invalid"),
|
||||
@@ -33,10 +32,9 @@ class TestDoctorCommand < JekyllUnitTest
|
||||
ret = Jekyll::Commands::Doctor.urls_only_differ_by_case(@site)
|
||||
assert ret
|
||||
end
|
||||
assert_includes output, "Warning: The following URLs only differ by case. On a case-" \
|
||||
"insensitive file system one of the URLs will be overwritten by the " \
|
||||
"other: #{dest_dir}/about/index.html, #{dest_dir}/About/index.html"
|
||||
assert_includes output, "Warning: The following URLs only differ by case. "\
|
||||
"On a case-insensitive file system one of the URLs will be overwritten by the "\
|
||||
"other: #{dest_dir}/about/index.html, #{dest_dir}/About/index.html"
|
||||
end
|
||||
# rubocop:enable Layout/LineLength
|
||||
end
|
||||
end
|
||||
|
||||
@@ -159,23 +159,6 @@ class TestDocument < JekyllUnitTest
|
||||
should "output its relative path as path in Liquid" do
|
||||
assert_equal "_methods/configuration.md", @document.to_liquid["path"]
|
||||
end
|
||||
|
||||
context "when rendered with Liquid" do
|
||||
should "respect the front matter definition" do
|
||||
site = fixture_site("collections" => ["roles"]).tap(&:process)
|
||||
docs = site.collections["roles"].docs
|
||||
|
||||
# Ruby context: doc.basename is aliased as doc.to_liquid["name"] by default.
|
||||
|
||||
document = docs.detect { |d| d.relative_path == "_roles/unnamed.md" }
|
||||
assert_equal "unnamed.md", document.basename
|
||||
assert_equal "unnamed.md", document.to_liquid["name"]
|
||||
|
||||
document = docs.detect { |d| d.relative_path == "_roles/named.md" }
|
||||
assert_equal "named.md", document.basename
|
||||
assert_equal "launcher", document.to_liquid["name"]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "a document as part of a collection with front matter defaults" do
|
||||
|
||||
@@ -111,7 +111,8 @@ class TestExcerpt < JekyllUnitTest
|
||||
context "#content" do
|
||||
context "before render" do
|
||||
should "be the first paragraph of the page" do
|
||||
expected = "First paragraph with [link ref][link].\n\n[link]: https://jekyllrb.com/"
|
||||
expected = "First paragraph with [link ref][link].\n\n[link]: "\
|
||||
"https://jekyllrb.com/"
|
||||
assert_equal expected, @excerpt.content
|
||||
end
|
||||
|
||||
@@ -128,7 +129,7 @@ class TestExcerpt < JekyllUnitTest
|
||||
end
|
||||
|
||||
should "be the first paragraph of the page" do
|
||||
expected = "<p>First paragraph with <a href=\"https://jekyllrb.com/\">link " \
|
||||
expected = "<p>First paragraph with <a href=\"https://jekyllrb.com/\">link "\
|
||||
"ref</a>.</p>\n\n"
|
||||
assert_equal expected, @extracted_excerpt.output
|
||||
end
|
||||
@@ -145,7 +146,7 @@ class TestExcerpt < JekyllUnitTest
|
||||
end
|
||||
|
||||
should "contain all refs at the bottom of the page" do
|
||||
4.times do |i|
|
||||
(0..3).each do |i|
|
||||
assert_match "[link_#{i}]: www.example.com/#{i}", @excerpt.content
|
||||
end
|
||||
end
|
||||
@@ -158,7 +159,7 @@ class TestExcerpt < JekyllUnitTest
|
||||
@rendered_post = @post.dup
|
||||
do_render(@rendered_post)
|
||||
output = @rendered_post.data["excerpt"].output
|
||||
4.times do |i|
|
||||
(0..3).each do |i|
|
||||
assert_includes output, "<a href=\"www.example.com/#{i}\">"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -143,7 +143,7 @@ class TestFilters < JekyllUnitTest
|
||||
|
||||
should "sassify with simple string" do
|
||||
assert_equal(
|
||||
"p {\n color: #123456;\n}",
|
||||
"p { color: #123456; }\n",
|
||||
@filter.sassify(<<~SASS)
|
||||
$blue: #123456
|
||||
p
|
||||
@@ -154,7 +154,7 @@ class TestFilters < JekyllUnitTest
|
||||
|
||||
should "scssify with simple string" do
|
||||
assert_equal(
|
||||
"p {\n color: #123456;\n}",
|
||||
"p { color: #123456; }\n",
|
||||
@filter.scssify("$blue:#123456; p{color: $blue}")
|
||||
)
|
||||
end
|
||||
@@ -718,7 +718,7 @@ class TestFilters < JekyllUnitTest
|
||||
{
|
||||
"name" => name,
|
||||
:v => 1,
|
||||
:thing => M.new({:kay => "jewelers"}),
|
||||
:thing => M.new(:kay => "jewelers"),
|
||||
:stuff => true,
|
||||
}
|
||||
end
|
||||
@@ -918,13 +918,13 @@ class TestFilters < JekyllUnitTest
|
||||
# `{{ hash | where: 'tags', empty }}`
|
||||
assert_equal(
|
||||
[{ "tags" => {} }, { "tags" => "" }, { "tags" => nil }, { "tags" => [] }],
|
||||
@filter.where(hash, "tags", Liquid::Expression::LITERALS["empty"])
|
||||
@filter.where(hash, "tags", Liquid::Condition.parse_expression(nil, "empty"))
|
||||
)
|
||||
|
||||
# `{{ `hash | where: 'tags', blank }}`
|
||||
assert_equal(
|
||||
[{ "tags" => {} }, { "tags" => "" }, { "tags" => nil }, { "tags" => [] }],
|
||||
@filter.where(hash, "tags", Liquid::Expression::LITERALS["blank"])
|
||||
@filter.where(hash, "tags", Liquid::Condition.parse_expression(nil, "blank"))
|
||||
)
|
||||
end
|
||||
|
||||
@@ -1151,13 +1151,13 @@ class TestFilters < JekyllUnitTest
|
||||
# `{{ hash | find: 'tags', empty }}`
|
||||
assert_equal(
|
||||
{ "tags" => {} },
|
||||
@filter.find(hash, "tags", Liquid::Expression::LITERALS["empty"])
|
||||
@filter.find(hash, "tags", Liquid::Condition.parse_expression(nil, "empty"))
|
||||
)
|
||||
|
||||
# `{{ `hash | find: 'tags', blank }}`
|
||||
assert_equal(
|
||||
{ "tags" => {} },
|
||||
@filter.find(hash, "tags", Liquid::Expression::LITERALS["blank"])
|
||||
@filter.find(hash, "tags", Liquid::Condition.parse_expression(nil, "blank"))
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user