mirror of
https://github.com/jekyll/jekyll.git
synced 2026-04-28 03:01:03 -04:00
Compare commits
157 Commits
fix-conten
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
202df57131 | ||
|
|
d68f76e160 | ||
|
|
5cf05d7d09 | ||
|
|
08c22eefb3 | ||
|
|
3ed83f6450 | ||
|
|
ff0d4dd78d | ||
|
|
65d534a701 | ||
|
|
baab7bf785 | ||
|
|
f07d4f77bc | ||
|
|
d0cf1791f6 | ||
|
|
3c45d9e377 | ||
|
|
26ec089058 | ||
|
|
7e79e461f4 | ||
|
|
b49aa9b707 | ||
|
|
ebe567c1d2 | ||
|
|
4d3db3a83d | ||
|
|
6da6739952 | ||
|
|
161f654409 | ||
|
|
e1b5fd6a15 | ||
|
|
2fe6977e8d | ||
|
|
e91ed76d97 | ||
|
|
a1a42bdb5c | ||
|
|
a2c27b70ec | ||
|
|
0760420670 | ||
|
|
3934fc3184 | ||
|
|
40ac06ed3e | ||
|
|
76982c73c0 | ||
|
|
55024b37ae | ||
|
|
59d5d9ae62 | ||
|
|
a2330bb3b3 | ||
|
|
79a8e16f22 | ||
|
|
e2e1ee8eaa | ||
|
|
2a37caac83 | ||
|
|
84437a5052 | ||
|
|
01781355ef | ||
|
|
fa5575c806 | ||
|
|
cc583c218c | ||
|
|
5f877c347b | ||
|
|
dfbd86db50 | ||
|
|
1b617d7281 | ||
|
|
f6d9f86e04 | ||
|
|
148c1d395c | ||
|
|
07a01b0bc9 | ||
|
|
82efcc4c51 | ||
|
|
1e4696457d | ||
|
|
f320d0d5d7 | ||
|
|
193d2eca7f | ||
|
|
0db8443b41 | ||
|
|
e4f0c58395 | ||
|
|
1f319fb273 | ||
|
|
c5cd1fb04f | ||
|
|
33e8a84a00 | ||
|
|
cda8c3a402 | ||
|
|
5431c0945b | ||
|
|
e68b3e3e16 | ||
|
|
0cc09f93ca | ||
|
|
448b8b5540 | ||
|
|
2cf2665d31 | ||
|
|
efc2a7433c | ||
|
|
021f58506f | ||
|
|
d5e62d0ca5 | ||
|
|
6ea69cae2a | ||
|
|
8b759b9c71 | ||
|
|
32c90c5eee | ||
|
|
76572b421a | ||
|
|
409034449b | ||
|
|
2db7db7c44 | ||
|
|
dfa5f036f7 | ||
|
|
d20aef3c1c | ||
|
|
61c9708264 | ||
|
|
964a2689a1 | ||
|
|
98c14c0f2f | ||
|
|
74f0c4d079 | ||
|
|
3689b5bd97 | ||
|
|
092010703f | ||
|
|
1ffce1ed6b | ||
|
|
7072c65f6e | ||
|
|
094fc89d70 | ||
|
|
70e4e87945 | ||
|
|
0e4182aefa | ||
|
|
6a4a630bdf | ||
|
|
8e378c0615 | ||
|
|
6b0af7144d | ||
|
|
f93928ab2c | ||
|
|
0c4a453e2c | ||
|
|
44fc6803d2 | ||
|
|
5e1b6d3fae | ||
|
|
fce1966b3a | ||
|
|
8ba078f95d | ||
|
|
94192a3ab4 | ||
|
|
f8a456d16e | ||
|
|
0f03b31b85 | ||
|
|
27805c97ec | ||
|
|
e223b9e1e3 | ||
|
|
860c5d6394 | ||
|
|
ca57a45b17 | ||
|
|
94831d572d | ||
|
|
ef6ae0305e | ||
|
|
4ad5419d55 | ||
|
|
32074ef944 | ||
|
|
eba4dbcc72 | ||
|
|
5861d3ab28 | ||
|
|
17d1d9422b | ||
|
|
34e35284aa | ||
|
|
0629bba297 | ||
|
|
192360dd6a | ||
|
|
96a5c80b59 | ||
|
|
75d70a0ba8 | ||
|
|
bc443c2e66 | ||
|
|
0fde781f2b | ||
|
|
aa8c2466ca | ||
|
|
a5cf2f9a42 | ||
|
|
f63a68bedd | ||
|
|
753b8aaa09 | ||
|
|
c59e59091d | ||
|
|
f2980230e5 | ||
|
|
c458e1413a | ||
|
|
760eaf0274 | ||
|
|
0913d65793 | ||
|
|
a6739dcfd2 | ||
|
|
05ce2b2ab2 | ||
|
|
f95c5e45bb | ||
|
|
cd5b71ec88 | ||
|
|
e300964879 | ||
|
|
37b4a4bd89 | ||
|
|
3a8b2822f1 | ||
|
|
995c7c8d65 | ||
|
|
cde2de69a7 | ||
|
|
425ad79ff2 | ||
|
|
3283e679bc | ||
|
|
5947231337 | ||
|
|
2445bd946e | ||
|
|
a5460320c5 | ||
|
|
e55274d8f8 | ||
|
|
3d5e86eb08 | ||
|
|
885c98a32b | ||
|
|
60a9cd7356 | ||
|
|
822ac4fa47 | ||
|
|
e44b52d9f9 | ||
|
|
ed79646d7d | ||
|
|
1484c6d6a4 | ||
|
|
38a18af96a | ||
|
|
b6bbe1b469 | ||
|
|
ed30c864f2 | ||
|
|
1ad8c8dc04 | ||
|
|
28e10da266 | ||
|
|
c52149824d | ||
|
|
1f3c0dc0d4 | ||
|
|
96a4198c27 | ||
|
|
c85bd15340 | ||
|
|
dbbfc5d48c | ||
|
|
c7e9061da3 | ||
|
|
22c756a2e0 | ||
|
|
12ab35011f | ||
|
|
84a29bd142 | ||
|
|
860d730ff3 | ||
|
|
8f2b53172f |
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
@@ -65,8 +65,6 @@
|
||||
# @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
|
||||
|
||||
8
.github/SECURITY.markdown
vendored
8
.github/SECURITY.markdown
vendored
@@ -2,13 +2,13 @@
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Security updates are applied to the latest MINOR version of Jekyll, and the version used by GitHub Pages, v3.9.x.
|
||||
Security updates are applied to the latest MINOR version of Jekyll, and the version used by GitHub Pages, v3.10.x.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 4.2.x | :white_check_mark: |
|
||||
| 3.9.x | :white_check_mark: |
|
||||
| < 3.9.x | :x: |
|
||||
| 4.4.x | :white_check_mark: |
|
||||
| 3.10.x | :white_check_mark: |
|
||||
| < 3.10.x | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
|
||||
4
.github/actions/spelling/allow.txt
vendored
4
.github/actions/spelling/allow.txt
vendored
@@ -1,4 +1,5 @@
|
||||
built-ins
|
||||
azion
|
||||
builtins
|
||||
github
|
||||
hakiri
|
||||
https
|
||||
@@ -7,6 +8,7 @@ Microsoft
|
||||
ssh
|
||||
Statictastic
|
||||
statictastic
|
||||
supranode
|
||||
ubuntu
|
||||
Wikipedia
|
||||
workaround
|
||||
|
||||
312
.github/actions/spelling/expect.txt
vendored
312
.github/actions/spelling/expect.txt
vendored
@@ -1,55 +1,31 @@
|
||||
acl
|
||||
activesupport
|
||||
adaoraul
|
||||
addons
|
||||
aeiou
|
||||
AFile
|
||||
afterall
|
||||
Alexey
|
||||
alfredxing
|
||||
algolia
|
||||
allowfullscreen
|
||||
Anatoliy
|
||||
andreyvit
|
||||
Ankit
|
||||
Anning
|
||||
apps
|
||||
appveyor
|
||||
arengu
|
||||
args
|
||||
ariejan
|
||||
arounds
|
||||
asciinema
|
||||
asdf
|
||||
ashmaroli
|
||||
attr
|
||||
Autobuild
|
||||
autocompletion
|
||||
autogenerated
|
||||
Autolink
|
||||
autoload
|
||||
autoreconf
|
||||
autosave
|
||||
awood
|
||||
aws
|
||||
awscli
|
||||
backend
|
||||
backport
|
||||
backtick
|
||||
backticks
|
||||
barcamp
|
||||
baseurl
|
||||
bashrc
|
||||
baz
|
||||
bbatsov
|
||||
bdimcheff
|
||||
bellvat
|
||||
benbalter
|
||||
Beney
|
||||
binstubs
|
||||
bip
|
||||
bitbucket
|
||||
blog
|
||||
Blogger
|
||||
blogging
|
||||
blogs
|
||||
@@ -63,7 +39,6 @@ brightbox
|
||||
brighterplanet
|
||||
buddyworks
|
||||
builtatlightspeed
|
||||
Bugfix
|
||||
Burela
|
||||
byparker
|
||||
cachegrind
|
||||
@@ -73,19 +48,11 @@ cartera
|
||||
cavalle
|
||||
CDNs
|
||||
cgi
|
||||
changefreq
|
||||
changelog
|
||||
chango
|
||||
charset
|
||||
Chayoung
|
||||
chcp
|
||||
chdir
|
||||
Cheatsheet
|
||||
Checkoway
|
||||
chmod
|
||||
chown
|
||||
Chrononaut
|
||||
chruby
|
||||
cibuild
|
||||
cimg
|
||||
circleci
|
||||
@@ -95,105 +62,63 @@ cloudcannon
|
||||
Cloudinary
|
||||
cloudsh
|
||||
CLT
|
||||
codebase
|
||||
codeclimate
|
||||
CODEOWNERS
|
||||
coderay
|
||||
codeslinger
|
||||
coffeescript
|
||||
colorator
|
||||
commandline
|
||||
commonmark
|
||||
compat
|
||||
compatibilize
|
||||
concat
|
||||
config
|
||||
configyml
|
||||
contentblocks
|
||||
CORS
|
||||
Cov
|
||||
CRLFs
|
||||
cron
|
||||
crontab
|
||||
cruft
|
||||
css
|
||||
csv
|
||||
Currin
|
||||
CVE
|
||||
CWD
|
||||
cygwin
|
||||
daringfireball
|
||||
Dassonville
|
||||
datafiles
|
||||
datetime
|
||||
DCEU
|
||||
Debian
|
||||
debuggability
|
||||
defunkt
|
||||
delegators
|
||||
dependabot
|
||||
deployer
|
||||
deps
|
||||
dest
|
||||
Devkit
|
||||
devops
|
||||
devcontainer
|
||||
digitalocean
|
||||
dirs
|
||||
disqus
|
||||
ditaa
|
||||
dnf
|
||||
doclist
|
||||
doctype
|
||||
doeorg
|
||||
dommmel
|
||||
dotfile
|
||||
Dousse
|
||||
downcase
|
||||
downcased
|
||||
duckduckgo
|
||||
duritong
|
||||
Dusseau
|
||||
dysinger
|
||||
ecf
|
||||
editorconfig
|
||||
eduardoboucas
|
||||
Elasticsearch
|
||||
elsif
|
||||
Emacs
|
||||
emails
|
||||
emoji
|
||||
emojis
|
||||
endcapture
|
||||
endcomment
|
||||
endfor
|
||||
endhighlight
|
||||
endif
|
||||
endraw
|
||||
endrender
|
||||
endtablerow
|
||||
Enumerables
|
||||
EOL
|
||||
erb
|
||||
errordocument
|
||||
Espinaco
|
||||
eugenebolshakov
|
||||
evaled
|
||||
exe
|
||||
execjs
|
||||
extensionpack
|
||||
extname
|
||||
extnames
|
||||
exts
|
||||
favicon
|
||||
Fengyun
|
||||
ffi
|
||||
figcaption
|
||||
filesystem
|
||||
Finazzo
|
||||
firstimage
|
||||
FIXME
|
||||
flakey
|
||||
flickr
|
||||
fnmatch
|
||||
fontello
|
||||
forloop
|
||||
formcake
|
||||
@@ -204,87 +129,47 @@ formkeep
|
||||
formspark
|
||||
formspree
|
||||
formx
|
||||
Forwardable
|
||||
frameborder
|
||||
freenode
|
||||
frontend
|
||||
frontmatter
|
||||
fsnotify
|
||||
ftp
|
||||
fullstory
|
||||
Gaudino
|
||||
gcc
|
||||
gcnovus
|
||||
gemfile
|
||||
gemset
|
||||
gemspec
|
||||
getform
|
||||
getset
|
||||
getsimpleform
|
||||
gettalong
|
||||
gfm
|
||||
ghp
|
||||
ghpages
|
||||
giraffeacademy
|
||||
github
|
||||
githubcom
|
||||
githubusercontent
|
||||
gitignore
|
||||
gitlab
|
||||
gjtorikian
|
||||
globbed
|
||||
globbing
|
||||
google
|
||||
gotcha
|
||||
Goulven
|
||||
gridism
|
||||
GSo
|
||||
gsub
|
||||
gsubbing
|
||||
Hakiri
|
||||
hardcode
|
||||
hashbang
|
||||
hashmap
|
||||
helaili
|
||||
henrik
|
||||
heredoc
|
||||
heroku
|
||||
highlighter
|
||||
hilighting
|
||||
Hoizey
|
||||
homepage
|
||||
hostman
|
||||
hostname
|
||||
href
|
||||
htaccess
|
||||
htm
|
||||
html
|
||||
htmlproofer
|
||||
http
|
||||
httpd
|
||||
httpdocs
|
||||
hyperlinks
|
||||
Iaa
|
||||
ial
|
||||
ico
|
||||
icomoon
|
||||
iconset
|
||||
ified
|
||||
iframe
|
||||
img
|
||||
Impl
|
||||
Inlining
|
||||
invokables
|
||||
irc
|
||||
ivey
|
||||
ize
|
||||
jalali
|
||||
jameshamann
|
||||
jamstackthemes
|
||||
jan
|
||||
javascript
|
||||
Jax
|
||||
jayferd
|
||||
jcon
|
||||
jdoe
|
||||
jeffreytse
|
||||
@@ -294,25 +179,20 @@ jekyllbot
|
||||
jekyllconf
|
||||
Jekyllers
|
||||
Jekyllin
|
||||
Jekylling
|
||||
jekyllized
|
||||
jekylllayoutconcept
|
||||
jekyllrb
|
||||
jekyllthemes
|
||||
jekyllup
|
||||
jemoji
|
||||
jmcglone
|
||||
jneen
|
||||
johnreilly
|
||||
jpg
|
||||
jqr
|
||||
jruby
|
||||
json
|
||||
jsonify
|
||||
juretta
|
||||
jwarby
|
||||
Kacper
|
||||
Kasberg
|
||||
kbd
|
||||
Kentico
|
||||
Kewin
|
||||
keycdn
|
||||
@@ -328,40 +208,23 @@ kramdown
|
||||
Kulig
|
||||
Kwokfu
|
||||
Lamprecht
|
||||
laquo
|
||||
lastmod
|
||||
launchctl
|
||||
launchy
|
||||
laurilehmijoki
|
||||
ldquo
|
||||
learnxinyminutes
|
||||
lexer
|
||||
LGTM
|
||||
libcurl
|
||||
libffi
|
||||
lifecycle
|
||||
lightgray
|
||||
limjh
|
||||
lexers
|
||||
linenos
|
||||
linkify
|
||||
linux
|
||||
liufengyun
|
||||
livereload
|
||||
localheinz
|
||||
localhost
|
||||
localtime
|
||||
Locher
|
||||
loglevel
|
||||
Losslessly
|
||||
lovin
|
||||
lsi
|
||||
lsquo
|
||||
lstrip
|
||||
lyche
|
||||
macos
|
||||
macromates
|
||||
mademistakes
|
||||
mailto
|
||||
Manmeet
|
||||
markdownify
|
||||
Maroli
|
||||
@@ -372,43 +235,26 @@ mathml
|
||||
mattr
|
||||
Maximiliano
|
||||
mchung
|
||||
mdash
|
||||
memberspace
|
||||
Memoize
|
||||
memoized
|
||||
memoizing
|
||||
mentoring
|
||||
mergable
|
||||
Mertcan
|
||||
mertkahyaoglu
|
||||
metadata
|
||||
metadatas
|
||||
microdata
|
||||
microsoft
|
||||
mimetype
|
||||
mingw
|
||||
minibundle
|
||||
minifier
|
||||
minitest
|
||||
Mittal
|
||||
mixin
|
||||
mkasberg
|
||||
mkd
|
||||
mkdir
|
||||
mkdn
|
||||
mkdown
|
||||
mmistakes
|
||||
modernizr
|
||||
mojombo
|
||||
moncefbelyamani
|
||||
moz
|
||||
mreid
|
||||
msdn
|
||||
mswin
|
||||
MSYS
|
||||
mtime
|
||||
multiline
|
||||
munging
|
||||
Mvvm
|
||||
myblog
|
||||
mycontent
|
||||
@@ -419,47 +265,31 @@ mypage
|
||||
myposts
|
||||
myproject
|
||||
myrepo
|
||||
mysite
|
||||
myvalue
|
||||
myvar
|
||||
myvariable
|
||||
Nadjib
|
||||
nakanishi
|
||||
namespace
|
||||
namespaced
|
||||
navbar
|
||||
navbars
|
||||
nbsp
|
||||
nearlyfreespeech
|
||||
nethack
|
||||
netlify
|
||||
netlifycms
|
||||
Neue
|
||||
nginx
|
||||
ngx
|
||||
nielsenramon
|
||||
nior
|
||||
nodejs
|
||||
noifniof
|
||||
nokogiri
|
||||
notextile
|
||||
onclick
|
||||
onebox
|
||||
oneclick
|
||||
onschedule
|
||||
opensource
|
||||
openssl
|
||||
Optim
|
||||
orderofinterpretation
|
||||
orgs
|
||||
OSVDB
|
||||
osx
|
||||
packagecontrol
|
||||
pacman
|
||||
paginator
|
||||
pandoc
|
||||
pantulis
|
||||
params
|
||||
parkr
|
||||
parseable
|
||||
paspagon
|
||||
@@ -467,130 +297,79 @@ passthrough
|
||||
pathawks
|
||||
Pathutil
|
||||
paywall
|
||||
pdf
|
||||
PDFs
|
||||
Pelykh
|
||||
permalink
|
||||
PHP
|
||||
pinboard
|
||||
Piwigo
|
||||
pjhyett
|
||||
pkill
|
||||
pkpass
|
||||
placeholders
|
||||
planetjekyll
|
||||
plantuml
|
||||
plugin
|
||||
png
|
||||
podcasts
|
||||
popen
|
||||
Porcel
|
||||
Posterous
|
||||
postfiles
|
||||
postlayout
|
||||
postmodern
|
||||
prefetching
|
||||
preinstalled
|
||||
prepends
|
||||
Prioritise
|
||||
Probot
|
||||
projectlist
|
||||
pubstorm
|
||||
pufuwozu
|
||||
pwa
|
||||
pwd
|
||||
pygments
|
||||
qrush
|
||||
Quaid
|
||||
quickstart
|
||||
rackup
|
||||
Rakefile
|
||||
raquo
|
||||
razorops
|
||||
rbenv
|
||||
rdiscount
|
||||
rdoc
|
||||
rdquo
|
||||
readme
|
||||
realz
|
||||
rebund
|
||||
redcarpet
|
||||
redcloth
|
||||
redgreen
|
||||
redhat
|
||||
refactor
|
||||
refactoring
|
||||
refactorings
|
||||
Refactors
|
||||
Refheap
|
||||
regen
|
||||
regex
|
||||
regexp
|
||||
remi
|
||||
reqs
|
||||
Responsify
|
||||
revertable
|
||||
rfc
|
||||
rfelix
|
||||
RHEL
|
||||
ridk
|
||||
roadmap
|
||||
rowspan
|
||||
rspec
|
||||
rsquo
|
||||
rss
|
||||
rstrip
|
||||
rsync
|
||||
rtomayko
|
||||
Rubo
|
||||
rubocop
|
||||
rubychan
|
||||
rubygem
|
||||
rubyinstaller
|
||||
rubyprof
|
||||
Ruparelia
|
||||
Rusiczki
|
||||
rvm
|
||||
ryanflorence
|
||||
saas
|
||||
samplelist
|
||||
samrayner
|
||||
sandboxed
|
||||
Sassc
|
||||
sassify
|
||||
schemastore
|
||||
Schroers
|
||||
Schwartzian
|
||||
scp
|
||||
screenshot
|
||||
scrollbar
|
||||
scrollbars
|
||||
scroller
|
||||
scss
|
||||
scssify
|
||||
sdk
|
||||
SDKROOT
|
||||
sectore
|
||||
semver
|
||||
seo
|
||||
serverless
|
||||
setenv
|
||||
SFTP
|
||||
shingo
|
||||
shopify
|
||||
shortlinks
|
||||
shortlog
|
||||
Shoulda
|
||||
shoulda
|
||||
sieversii
|
||||
sigpipe
|
||||
simplecov
|
||||
Singhaniya
|
||||
siteleaf
|
||||
sitemap
|
||||
SITENAME
|
||||
Slicehost
|
||||
slugified
|
||||
slugify
|
||||
smartforms
|
||||
smartify
|
||||
snipcart
|
||||
@@ -599,179 +378,102 @@ somedir
|
||||
sonnym
|
||||
Sonomy
|
||||
sourced
|
||||
sourcemaps
|
||||
spam
|
||||
spotify
|
||||
src
|
||||
ssg
|
||||
ssh
|
||||
SSL
|
||||
stackoverflow
|
||||
standalone
|
||||
staticfiles
|
||||
staticman
|
||||
statictastic
|
||||
STDERR
|
||||
stdout
|
||||
Stickyposts
|
||||
strftime
|
||||
stringified
|
||||
Stringify
|
||||
styleguide
|
||||
stylesheet
|
||||
subdir
|
||||
subdomain
|
||||
subfolder
|
||||
subfolderitems
|
||||
subfolders
|
||||
subnav
|
||||
subpages
|
||||
subpath
|
||||
subpiece
|
||||
subsubfolderitems
|
||||
subthing
|
||||
subvalues
|
||||
subwidget
|
||||
sudo
|
||||
superdirectories
|
||||
superdirs
|
||||
SUSE
|
||||
sverrirs
|
||||
svg
|
||||
svn
|
||||
swfobject
|
||||
swupd
|
||||
symlink
|
||||
symlinking
|
||||
tablerow
|
||||
tada
|
||||
Taillandier
|
||||
talkyard
|
||||
tbody
|
||||
technicalpickles
|
||||
templating
|
||||
templatize
|
||||
Termux
|
||||
textilize
|
||||
textpattern
|
||||
thead
|
||||
therubyracer
|
||||
Theunissen
|
||||
Thornquest
|
||||
thoughtbot
|
||||
throughs
|
||||
Tidelift
|
||||
timeago
|
||||
timezone
|
||||
timezones
|
||||
titleize
|
||||
TLS
|
||||
tmm
|
||||
tmp
|
||||
toc
|
||||
tok
|
||||
tomjoht
|
||||
toml
|
||||
tomo
|
||||
toolset
|
||||
toshimaru
|
||||
triaged
|
||||
triaging
|
||||
truncatewords
|
||||
tsv
|
||||
ttf
|
||||
Tudou
|
||||
Tumblr
|
||||
Tweetsert
|
||||
txtpen
|
||||
Tyborska
|
||||
tzinfo
|
||||
ubuntu
|
||||
uby
|
||||
ujh
|
||||
ultron
|
||||
undumpable
|
||||
unencode
|
||||
Unescape
|
||||
unescaping
|
||||
unicode
|
||||
uniq
|
||||
upcase
|
||||
uppercasing
|
||||
uri
|
||||
url
|
||||
urlset
|
||||
username
|
||||
usernames
|
||||
usr
|
||||
utf
|
||||
utils
|
||||
utime
|
||||
utm
|
||||
vanpelt
|
||||
Vasovi
|
||||
vendored
|
||||
vercel
|
||||
versioned
|
||||
versioning
|
||||
vertycal
|
||||
Veyor
|
||||
vilcans
|
||||
Vishesh
|
||||
visualstudio
|
||||
vnd
|
||||
vohedge
|
||||
vps
|
||||
vscode
|
||||
vwochnik
|
||||
Walkthroughs
|
||||
WAI
|
||||
wdm
|
||||
We'd
|
||||
webfont
|
||||
webhook
|
||||
webfonts
|
||||
webhosting
|
||||
webmentions
|
||||
webrick
|
||||
website
|
||||
weekdate
|
||||
whitelist
|
||||
whitelisting
|
||||
wiki
|
||||
wikipedia
|
||||
wildcards
|
||||
willcodeforfoo
|
||||
woff
|
||||
wordpress
|
||||
Workaround
|
||||
workflow
|
||||
workflows
|
||||
wsl
|
||||
www
|
||||
xcode
|
||||
xcrun
|
||||
xdg
|
||||
Xhmikos
|
||||
xhtml
|
||||
Xiaoiver
|
||||
XMinutes
|
||||
xml
|
||||
xmlns
|
||||
xmlschema
|
||||
yajl
|
||||
yaml
|
||||
Yarp
|
||||
Yashu
|
||||
Yastreb
|
||||
yml
|
||||
Youku
|
||||
youtube
|
||||
yunbox
|
||||
zeropadding
|
||||
Zlatan
|
||||
zlib
|
||||
zoneinfo
|
||||
zpinter
|
||||
Zsh
|
||||
zshrc
|
||||
zypper
|
||||
zzot
|
||||
|
||||
17
.github/release-please-config.json
vendored
Normal file
17
.github/release-please-config.json
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"pull-request-title-pattern": "chore: release 💎 ${version}",
|
||||
"packages": {
|
||||
".": {
|
||||
"changelog-path": "History.markdown",
|
||||
"release-type": "ruby",
|
||||
"bump-minor-pre-major": false,
|
||||
"bump-patch-for-minor-pre-major": false,
|
||||
"draft": false,
|
||||
"prerelease": false,
|
||||
"include-component-in-tag": false,
|
||||
"include-v-in-tag": true,
|
||||
"version-file": "lib/jekyll/version.rb"
|
||||
}
|
||||
},
|
||||
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
|
||||
}
|
||||
3
.github/release-please-manifest.json
vendored
Normal file
3
.github/release-please-manifest.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
".": "4.4.1"
|
||||
}
|
||||
51
.github/workflows/ci.yml
vendored
51
.github/workflows/ci.yml
vendored
@@ -5,63 +5,80 @@ on:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
paths-ignore:
|
||||
- "docs/**"
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
paths-ignore:
|
||||
- "docs/**"
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: "Run Tests (${{ matrix.label }})"
|
||||
runs-on: "ubuntu-latest"
|
||||
name: "Run Tests (${{ matrix.ruby.label }} on ${{ matrix.os.label }})"
|
||||
runs-on: ${{ matrix.os.image }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
ruby:
|
||||
- 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: Ruby 3.2
|
||||
ruby_version: "3.2"
|
||||
- label: JRuby 9.4.0.0
|
||||
ruby_version: "jruby-9.4.0.0"
|
||||
version: "2.7"
|
||||
- label: Ruby 3.3
|
||||
version: "3.3"
|
||||
- label: Ruby 3.4
|
||||
version: "3.4"
|
||||
os:
|
||||
- label: Linux
|
||||
image: "ubuntu-latest"
|
||||
- label: Windows
|
||||
image: "windows-latest"
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: "Set up ${{ matrix.label }}"
|
||||
- name: "Set up ${{ matrix.ruby.label }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby_version }}
|
||||
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
|
||||
run: bash script/cucumber --color
|
||||
- name: Generate and Build a new site
|
||||
run: bash script/default-site
|
||||
|
||||
xtras:
|
||||
name: "${{ matrix.job_name }} (Ruby ${{ matrix.ruby_version }})"
|
||||
name: "${{ matrix.job_name }} (${{ matrix.setup_label }})"
|
||||
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 Ruby ${{ matrix.ruby_version }}"
|
||||
- name: "Set up ${{ matrix.setup_label }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby_version }}
|
||||
|
||||
50
.github/workflows/conventional-commits.yml
vendored
Normal file
50
.github/workflows/conventional-commits.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
# This workflow checks to ensure that all PR titles conform to the conventional
|
||||
# commit spec and use the correct type and scopes. The spec for conventional
|
||||
# commits can be found at https://www.conventionalcommits.org and there is a
|
||||
# nice cheatsheet in a github gist at
|
||||
# https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13
|
||||
#
|
||||
# The types in this workflow match the spec. The scopes are custom to
|
||||
# Jekyll and can be changed if desired.
|
||||
name: Conventional Commit Check
|
||||
|
||||
permissions:
|
||||
pull-requests: read
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, edited, synchronize, reopened, ready_for_review]
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
commit_lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@v5.5.3
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
types: |
|
||||
feat
|
||||
fix
|
||||
perf
|
||||
refactor
|
||||
docs
|
||||
style
|
||||
test
|
||||
chore
|
||||
scopes: |
|
||||
core
|
||||
cli
|
||||
commands
|
||||
plugins
|
||||
site
|
||||
helpers
|
||||
converters
|
||||
filters
|
||||
tags
|
||||
drops
|
||||
tests
|
||||
docs
|
||||
requireScope: false
|
||||
2
.github/workflows/docs.yml
vendored
2
.github/workflows/docs.yml
vendored
@@ -4,6 +4,8 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- "docs/**"
|
||||
|
||||
env:
|
||||
RUBY_VERSION: 2.7
|
||||
|
||||
44
.github/workflows/release-please.yml
vendored
Normal file
44
.github/workflows/release-please.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: "Release, please!"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
release-please:
|
||||
if: ${{ github.repository == 'jekyll/jekyll' }}
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
release_created: ${{ steps.release.outputs.release_created }}
|
||||
tag_name: ${{ steps.release.outputs.tag_name }}
|
||||
steps:
|
||||
- name: Run Release Please
|
||||
id: release
|
||||
uses: googleapis/release-please-action@v4
|
||||
with:
|
||||
config-file: .github/release-please-config.json
|
||||
manifest-file: .github/release-please-manifest.json
|
||||
token: ${{ secrets.JEKYLLBOT_TOKEN }}
|
||||
|
||||
publish-gem:
|
||||
needs: release-please
|
||||
if: ${{ needs.release-please.outputs.release_created == 'true' }}
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v6
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: '3.3'
|
||||
bundler-cache: true
|
||||
- name: Build and Publish Gem
|
||||
uses: rubygems/release-gem@v1
|
||||
34
.github/workflows/release.yml
vendored
34
.github/workflows/release.yml
vendored
@@ -1,34 +0,0 @@
|
||||
name: Release Gem
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
paths:
|
||||
- "lib/**/version.rb"
|
||||
|
||||
jobs:
|
||||
release:
|
||||
if: "github.repository_owner == 'jekyll'"
|
||||
name: "Release Gem (Ruby ${{ matrix.ruby_version }})"
|
||||
runs-on: "ubuntu-latest"
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
ruby_version:
|
||||
- 2.7
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
- name: "Set up Ruby ${{ matrix.ruby_version }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby_version }}
|
||||
bundler-cache: true
|
||||
- name: Build and Publish Gem
|
||||
uses: ashmaroli/release-gem@dist
|
||||
with:
|
||||
gemspec_name: jekyll
|
||||
env:
|
||||
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_GEM_PUSH_API_KEY }}
|
||||
19
.github/workflows/spelling.yml
vendored
19
.github/workflows/spelling.yml
vendored
@@ -34,12 +34,6 @@ name: Spell Check
|
||||
# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
tags-ignore:
|
||||
- "**"
|
||||
# Switch from `pull_request_target` event to reduce distraction from comments
|
||||
# regarding errors reported in unmodified files.
|
||||
pull_request:
|
||||
@@ -71,18 +65,21 @@ jobs:
|
||||
steps:
|
||||
- name: check-spelling
|
||||
id: spelling
|
||||
uses: check-spelling/check-spelling@v0.0.21
|
||||
uses: check-spelling/check-spelling@v0.0.26
|
||||
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:
|
||||
# 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:
|
||||
# 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:software-terms/software-terms.txt
|
||||
cspell:php/php.txt
|
||||
cspell:node/node.txt
|
||||
cspell:django/django.txt
|
||||
@@ -92,5 +89,7 @@ jobs:
|
||||
cspell:fullstack/fullstack.txt
|
||||
cspell:filetypes/filetypes.txt
|
||||
check_extra_dictionaries: ''
|
||||
dictionary_source_prefixes: >-
|
||||
{"cspell": "https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20241114/dictionaries/"}
|
||||
|
||||
# This workflow has opted not to use comments (users can view the report in GitHub Step Summary)
|
||||
|
||||
13
.github/workflows/third-party.yml
vendored
13
.github/workflows/third-party.yml
vendored
@@ -1,16 +1,11 @@
|
||||
name: Third-Party Repository Profiling
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build_n_profile:
|
||||
if: "!contains(github.event.commits[0].message, '[ci skip]')"
|
||||
runs-on: 'ubuntu-latest'
|
||||
runs-on: "ubuntu-latest"
|
||||
env:
|
||||
BUNDLE_GEMFILE: "sandbox/Gemfile"
|
||||
BUNDLE_PATH: "vendor/bundle"
|
||||
@@ -30,7 +25,7 @@ jobs:
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.7
|
||||
ruby-version: 3.4
|
||||
bundler-cache: true
|
||||
- name: Run Jekyll Build 3 times
|
||||
run: |
|
||||
|
||||
280
.rubocop.yml
280
.rubocop.yml
@@ -1,35 +1,53 @@
|
||||
---
|
||||
inherit_from: .rubocop_todo.yml
|
||||
# -----------------------------------------------------------------------------
|
||||
# This file has been formatted via a Rake Task configuring cops from
|
||||
# RuboCop v1.57.2.
|
||||
#
|
||||
# To add more cops, paste configurations at the end of the file and run
|
||||
# the rake task via `bundle exec rake rubocop:format_config`.
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
inherit_from: ".rubocop_todo.yml"
|
||||
|
||||
require:
|
||||
- rubocop-minitest
|
||||
- rubocop-performance
|
||||
- rubocop-rake
|
||||
- rubocop-rspec
|
||||
- ./rubocop/jekyll
|
||||
|
||||
Jekyll/NoPutsAllowed:
|
||||
Exclude:
|
||||
- rake/*.rake
|
||||
- "./rubocop/jekyll"
|
||||
- rubocop-minitest
|
||||
- rubocop-performance
|
||||
- rubocop-rake
|
||||
- rubocop-rspec
|
||||
|
||||
# Directive for all cops
|
||||
AllCops:
|
||||
TargetRubyVersion: 2.7
|
||||
Include:
|
||||
- lib/**/*.rb
|
||||
- test/**/*.rb
|
||||
- lib/**/*.rb
|
||||
- test/**/*.rb
|
||||
Exclude:
|
||||
- bin/**/*
|
||||
- exe/**/*
|
||||
- benchmark/**/*
|
||||
- script/**/*
|
||||
- vendor/**/*
|
||||
- tmp/**/*
|
||||
- benchmark/**/*
|
||||
- bin/**/*
|
||||
- exe/**/*
|
||||
- script/**/*
|
||||
- tmp/**/*
|
||||
- vendor/**/*
|
||||
|
||||
# Configure custom cop
|
||||
Jekyll/NoPutsAllowed:
|
||||
Exclude:
|
||||
- rake/*.rake
|
||||
|
||||
# Configure built-in cops
|
||||
# =======================
|
||||
|
||||
# Gemspec cops
|
||||
# ----------------------------------------
|
||||
Gemspec/DeprecatedAttributeAssignment:
|
||||
Enabled: true
|
||||
Gemspec/DevelopmentDependencies:
|
||||
Enabled: false
|
||||
Gemspec/RequireMFA:
|
||||
Enabled: false
|
||||
|
||||
# Layout cops
|
||||
# ----------------------------------------
|
||||
Layout/BeginEndAlignment:
|
||||
Enabled: true
|
||||
Layout/EmptyComment:
|
||||
@@ -38,6 +56,8 @@ Layout/EmptyLinesAroundAttributeAccessor:
|
||||
Enabled: true
|
||||
Layout/EndAlignment:
|
||||
Severity: error
|
||||
Layout/EndOfLine:
|
||||
Enabled: false
|
||||
Layout/FirstArrayElementIndentation:
|
||||
EnforcedStyle: consistent
|
||||
Layout/FirstHashElementIndentation:
|
||||
@@ -54,10 +74,10 @@ Layout/LineEndStringConcatenationIndentation:
|
||||
Enabled: true
|
||||
Layout/LineLength:
|
||||
Exclude:
|
||||
- !ruby/regexp /features\/.*.rb/
|
||||
- Rakefile
|
||||
- rake/*.rake
|
||||
- Gemfile
|
||||
- Gemfile
|
||||
- Rakefile
|
||||
- features/**/*.rb
|
||||
- rake/**/*.rake
|
||||
Max: 100
|
||||
Severity: warning
|
||||
Layout/MultilineMethodCallIndentation:
|
||||
@@ -71,8 +91,10 @@ Layout/SpaceBeforeBrackets:
|
||||
Layout/SpaceInsideHashLiteralBraces:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
- test/**/*.rb
|
||||
|
||||
# Lint cops
|
||||
# ----------------------------------------
|
||||
Lint/AmbiguousAssignment:
|
||||
Enabled: true
|
||||
Lint/AmbiguousOperatorPrecedence:
|
||||
@@ -84,7 +106,7 @@ Lint/BinaryOperatorWithIdenticalOperands:
|
||||
Lint/ConstantDefinitionInBlock:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
- test/**/*.rb
|
||||
Lint/ConstantOverwrittenInRescue:
|
||||
Enabled: true
|
||||
Lint/DeprecatedConstants:
|
||||
@@ -95,6 +117,10 @@ Lint/DuplicateBranch:
|
||||
Enabled: true
|
||||
Lint/DuplicateElsifCondition:
|
||||
Enabled: true
|
||||
Lint/DuplicateMagicComment:
|
||||
Enabled: true
|
||||
Lint/DuplicateMatchPattern:
|
||||
Enabled: true
|
||||
Lint/DuplicateRegexpCharacterClassElement:
|
||||
Enabled: true
|
||||
Lint/DuplicateRequire:
|
||||
@@ -119,11 +145,13 @@ Lint/LambdaWithoutLiteralBlock:
|
||||
Enabled: true
|
||||
Lint/MissingSuper:
|
||||
Enabled: false
|
||||
Lint/MixedCaseRange:
|
||||
Enabled: true
|
||||
Lint/MixedRegexpCaptureTypes:
|
||||
Enabled: false
|
||||
Lint/NestedPercentLiteral:
|
||||
Exclude:
|
||||
- test/test_site.rb
|
||||
- test/test_site.rb
|
||||
Lint/NoReturnInBeginEndBlocks:
|
||||
Enabled: true
|
||||
Lint/NumberedParameterAssignment:
|
||||
@@ -136,8 +164,12 @@ Lint/RaiseException:
|
||||
Enabled: true
|
||||
Lint/RedundantDirGlobSort:
|
||||
Enabled: true
|
||||
Lint/RedundantRegexpQuantifiers:
|
||||
Enabled: true
|
||||
Lint/RedundantSafeNavigation:
|
||||
Enabled: true
|
||||
Lint/RefinementImportMethods:
|
||||
Enabled: true
|
||||
Lint/RequireRangeParentheses:
|
||||
Enabled: true
|
||||
Lint/RequireRelativeSelfPath:
|
||||
@@ -166,32 +198,38 @@ Lint/UnreachableLoop:
|
||||
Enabled: true
|
||||
Lint/UselessMethodDefinition:
|
||||
Enabled: true
|
||||
Lint/UselessRuby2Keywords:
|
||||
Enabled: true
|
||||
Lint/UselessTimes:
|
||||
Enabled: true
|
||||
Lint/Void:
|
||||
Exclude:
|
||||
- lib/jekyll/site.rb
|
||||
- lib/jekyll/site.rb
|
||||
|
||||
# Metrics cops
|
||||
# ----------------------------------------
|
||||
Metrics/AbcSize:
|
||||
Max: 23
|
||||
Metrics/BlockLength:
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
- lib/jekyll/configuration.rb
|
||||
- rake/*.rake
|
||||
- lib/jekyll/configuration.rb
|
||||
- rake/**/*.rake
|
||||
- test/**/*.rb
|
||||
Metrics/ClassLength:
|
||||
Exclude:
|
||||
- !ruby/regexp /features\/.*.rb$/
|
||||
- !ruby/regexp /test\/.*.rb$/
|
||||
- lib/jekyll/document.rb
|
||||
- lib/jekyll/site.rb
|
||||
- lib/jekyll/commands/serve.rb
|
||||
- lib/jekyll/configuration.rb
|
||||
- features/**/*.rb
|
||||
- lib/jekyll/commands/serve.rb
|
||||
- lib/jekyll/configuration.rb
|
||||
- lib/jekyll/document.rb
|
||||
- lib/jekyll/site.rb
|
||||
- test/**/*.rb
|
||||
Max: 240
|
||||
Metrics/CollectionLiteralLength:
|
||||
Enabled: true
|
||||
Metrics/CyclomaticComplexity:
|
||||
Exclude:
|
||||
- lib/jekyll/utils.rb
|
||||
- lib/jekyll/commands/serve.rb
|
||||
- lib/jekyll/commands/serve.rb
|
||||
- lib/jekyll/utils.rb
|
||||
Max: 11
|
||||
Metrics/MethodLength:
|
||||
CountComments: false
|
||||
@@ -199,58 +237,102 @@ Metrics/MethodLength:
|
||||
Severity: error
|
||||
Metrics/ModuleLength:
|
||||
Exclude:
|
||||
- lib/jekyll/filters.rb
|
||||
- lib/jekyll/filters.rb
|
||||
Max: 240
|
||||
Metrics/ParameterLists:
|
||||
Max: 4
|
||||
Metrics/PerceivedComplexity:
|
||||
Max: 13
|
||||
|
||||
# Minitest cops
|
||||
# ----------------------------------------
|
||||
Minitest/AssertEmptyLiteral:
|
||||
Enabled: false
|
||||
Minitest/AssertInDelta:
|
||||
Enabled: true
|
||||
Minitest/AssertionInLifecycleHook:
|
||||
Enabled: true
|
||||
Minitest/AssertKindOf:
|
||||
Enabled: true
|
||||
Minitest/AssertOperator:
|
||||
Enabled: false
|
||||
Minitest/AssertOutput:
|
||||
Enabled: true
|
||||
Minitest/AssertPathExists:
|
||||
Enabled: true
|
||||
Minitest/AssertPredicate:
|
||||
Enabled: false
|
||||
Minitest/AssertRaisesWithRegexpArgument:
|
||||
Enabled: true
|
||||
Minitest/AssertSame:
|
||||
Enabled: true
|
||||
Minitest/AssertSilent:
|
||||
Enabled: true
|
||||
Minitest/AssertWithExpectedArgument:
|
||||
Enabled: true
|
||||
Minitest/AssertionInLifecycleHook:
|
||||
Enabled: true
|
||||
Minitest/DuplicateTestRun:
|
||||
Enabled: true
|
||||
Minitest/EmptyLineBeforeAssertionMethods:
|
||||
Enabled: false
|
||||
Minitest/LifecycleHooksOrder:
|
||||
Enabled: true
|
||||
Minitest/LiteralAsActualArgument:
|
||||
Enabled: true
|
||||
Minitest/TestMethodName:
|
||||
Enabled: false
|
||||
Minitest/MultipleAssertions:
|
||||
Enabled: true
|
||||
Minitest/NonExecutableTestMethod:
|
||||
Enabled: true
|
||||
Minitest/NonPublicTestMethod:
|
||||
Enabled: true
|
||||
Minitest/RedundantMessageArgument:
|
||||
Enabled: true
|
||||
Minitest/RefuteInDelta:
|
||||
Enabled: true
|
||||
Minitest/RefuteKindOf:
|
||||
Enabled: true
|
||||
Minitest/RefuteOperator:
|
||||
Enabled: false
|
||||
Minitest/RefutePathExists:
|
||||
Enabled: true
|
||||
Minitest/RefutePredicate:
|
||||
Enabled: false
|
||||
Minitest/RefuteSame:
|
||||
Enabled: true
|
||||
Minitest/ReturnInTestMethod:
|
||||
Enabled: true
|
||||
Minitest/SkipEnsure:
|
||||
Enabled: true
|
||||
Minitest/SkipWithoutReason:
|
||||
Enabled: true
|
||||
Minitest/TestFileName:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- test/helper.rb
|
||||
Minitest/TestMethodName:
|
||||
Enabled: false
|
||||
Minitest/UnreachableAssertion:
|
||||
Enabled: true
|
||||
Minitest/UnspecifiedException:
|
||||
Enabled: true
|
||||
Minitest/UselessAssertion:
|
||||
Enabled: true
|
||||
|
||||
# Naming cops
|
||||
# ----------------------------------------
|
||||
Naming/FileName:
|
||||
Enabled: false
|
||||
Naming/HeredocDelimiterNaming:
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
- test/**/*.rb
|
||||
Naming/MemoizedInstanceVariableName:
|
||||
Exclude:
|
||||
- lib/jekyll/convertible.rb
|
||||
- lib/jekyll/drops/site_drop.rb
|
||||
- lib/jekyll/drops/unified_payload_drop.rb
|
||||
- lib/jekyll/page_without_a_file.rb
|
||||
- lib/jekyll/convertible.rb
|
||||
- lib/jekyll/drops/site_drop.rb
|
||||
- lib/jekyll/drops/unified_payload_drop.rb
|
||||
- lib/jekyll/page_without_a_file.rb
|
||||
|
||||
# Performance cops
|
||||
# ----------------------------------------
|
||||
Performance/AncestorsInclude:
|
||||
Enabled: false
|
||||
Performance/ArraySemiInfiniteRangeSlice:
|
||||
@@ -267,6 +349,8 @@ Performance/ConstantRegexp:
|
||||
Enabled: true
|
||||
Performance/MapCompact:
|
||||
Enabled: true
|
||||
Performance/MapMethodChain:
|
||||
Enabled: true
|
||||
Performance/MethodObjectAsBlock:
|
||||
Enabled: true
|
||||
Performance/RedundantEqualityComparisonBlock:
|
||||
@@ -288,23 +372,27 @@ Performance/StringIdentifierArgument:
|
||||
Performance/StringInclude:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/utils/platforms.rb
|
||||
- lib/jekyll/utils/platforms.rb
|
||||
Performance/Sum:
|
||||
Enabled: true
|
||||
|
||||
# Security cops
|
||||
# ----------------------------------------
|
||||
Security/CompoundHash:
|
||||
Enabled: true
|
||||
Security/IoMethods:
|
||||
Enabled: true
|
||||
Security/MarshalLoad:
|
||||
Exclude:
|
||||
- !ruby/regexp /test\/.*.rb$/
|
||||
- lib/jekyll/regenerator.rb
|
||||
- lib/jekyll/regenerator.rb
|
||||
- test/**/*.rb
|
||||
Security/YAMLLoad:
|
||||
Exclude:
|
||||
- !ruby/regexp /features\/.*.rb/
|
||||
- !ruby/regexp /test\/.*.rb$/
|
||||
- features/**/*.rb
|
||||
- test/**/*.rb
|
||||
|
||||
# Style cops
|
||||
# ----------------------------------------
|
||||
Style/AccessModifierDeclarations:
|
||||
Enabled: false
|
||||
Style/AccessorGrouping:
|
||||
@@ -317,21 +405,25 @@ Style/ArgumentsForwarding:
|
||||
Enabled: false
|
||||
Style/ArrayCoercion:
|
||||
Enabled: true
|
||||
Style/ArrayIntersect:
|
||||
Enabled: true
|
||||
Style/BisectedAttrAccessor:
|
||||
Enabled: true
|
||||
Style/CaseLikeIf:
|
||||
Enabled: true
|
||||
Style/StringChars:
|
||||
Enabled: true
|
||||
Style/ClassAndModuleChildren:
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
- test/**/*.rb
|
||||
Style/ClassEqualityComparison:
|
||||
Enabled: true
|
||||
Style/CollectionCompact:
|
||||
Enabled: true
|
||||
Style/CombinableLoops:
|
||||
Enabled: true
|
||||
Style/ConcatArrayLiterals:
|
||||
Enabled: true
|
||||
Style/DirEmpty:
|
||||
Enabled: true
|
||||
Style/DocumentDynamicEvalDefinition:
|
||||
Enabled: true
|
||||
Style/Documentation:
|
||||
@@ -342,25 +434,29 @@ Style/EmptyHeredoc:
|
||||
Enabled: true
|
||||
Style/EndlessMethod:
|
||||
Enabled: true
|
||||
Style/EnvHome:
|
||||
Enabled: true
|
||||
Style/ExactRegexpMatch:
|
||||
Enabled: true
|
||||
Style/ExplicitBlockArgument:
|
||||
Enabled: false
|
||||
Style/ExponentialNotation:
|
||||
Enabled: true
|
||||
Style/EnvHome:
|
||||
Enabled: true
|
||||
Style/FetchEnvVar:
|
||||
Enabled: false
|
||||
Style/FileEmpty:
|
||||
Enabled: true
|
||||
Style/FileRead:
|
||||
Enabled: false
|
||||
Style/FormatStringToken:
|
||||
Exclude:
|
||||
- lib/jekyll/utils/ansi.rb
|
||||
- lib/jekyll/liquid_renderer/table.rb
|
||||
- lib/jekyll/profiler.rb
|
||||
Style/FrozenStringLiteralComment:
|
||||
EnforcedStyle: always
|
||||
Style/FileWrite:
|
||||
Enabled: true
|
||||
Style/FormatStringToken:
|
||||
Exclude:
|
||||
- lib/jekyll/liquid_renderer/table.rb
|
||||
- lib/jekyll/profiler.rb
|
||||
- lib/jekyll/utils/ansi.rb
|
||||
Style/FrozenStringLiteralComment:
|
||||
EnforcedStyle: always
|
||||
Style/GlobalStdStream:
|
||||
Enabled: true
|
||||
Style/GuardClause:
|
||||
@@ -396,7 +492,7 @@ Style/MinMaxComparison:
|
||||
Enabled: true
|
||||
Style/MixinUsage:
|
||||
Exclude:
|
||||
- test/helper.rb
|
||||
- test/helper.rb
|
||||
Style/ModuleFunction:
|
||||
Enabled: false
|
||||
Style/MultilineTernaryOperator:
|
||||
@@ -407,62 +503,94 @@ Style/NestedFileDirname:
|
||||
Enabled: true
|
||||
Style/NilLambda:
|
||||
Enabled: true
|
||||
Style/ObjectThen:
|
||||
Enabled: true
|
||||
Style/OperatorMethodCall:
|
||||
Enabled: true
|
||||
Style/OptionalBooleanParameter:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/log_adapter.rb
|
||||
- lib/jekyll/log_adapter.rb
|
||||
Style/PercentLiteralDelimiters:
|
||||
PreferredDelimiters:
|
||||
"%Q": "{}"
|
||||
"%W": ()
|
||||
"%W": "()"
|
||||
"%q": "{}"
|
||||
"%r": "!!"
|
||||
"%s": ()
|
||||
"%w": ()
|
||||
"%x": ()
|
||||
"%s": "()"
|
||||
"%w": "()"
|
||||
"%x": "()"
|
||||
Style/QuotedSymbols:
|
||||
Enabled: true
|
||||
Style/RedundantArgument:
|
||||
Enabled: true
|
||||
Style/RedundantArrayConstructor:
|
||||
Enabled: true
|
||||
Style/RedundantAssignment:
|
||||
Enabled: true
|
||||
Style/RedundantConstantBase:
|
||||
Enabled: true
|
||||
Style/RedundantCurrentDirectoryInPath:
|
||||
Enabled: true
|
||||
Style/RedundantDoubleSplatHashBraces:
|
||||
Enabled: true
|
||||
Style/RedundantEach:
|
||||
Enabled: true
|
||||
Style/RedundantFetchBlock:
|
||||
Enabled: false
|
||||
Style/RedundantFileExtensionInRequire:
|
||||
Enabled: true
|
||||
Style/RedundantFilterChain:
|
||||
Enabled: true
|
||||
Style/RedundantHeredocDelimiterQuotes:
|
||||
Enabled: true
|
||||
Style/RedundantInitialize:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/plugin.rb
|
||||
- lib/jekyll/plugin.rb
|
||||
Style/RedundantLineContinuation:
|
||||
Enabled: true
|
||||
Style/RedundantRegexpArgument:
|
||||
Enabled: true
|
||||
Style/RedundantRegexpCharacterClass:
|
||||
Enabled: true
|
||||
Style/RedundantRegexpConstructor:
|
||||
Enabled: true
|
||||
Style/RedundantRegexpEscape:
|
||||
Enabled: true
|
||||
Style/RedundantSelfAssignment:
|
||||
Enabled: true
|
||||
Style/RedundantSelfAssignmentBranch:
|
||||
Enabled: true
|
||||
Style/RedundantStringEscape:
|
||||
Enabled: true
|
||||
Style/RegexpLiteral:
|
||||
EnforcedStyle: percent_r
|
||||
Style/RescueModifier:
|
||||
Enabled: false
|
||||
Style/ReturnNilInPredicateMethodDefinition:
|
||||
Enabled: true
|
||||
Style/SafeNavigation:
|
||||
Exclude:
|
||||
- lib/jekyll/document.rb
|
||||
- lib/jekyll/page.rb
|
||||
- lib/jekyll/document.rb
|
||||
- lib/jekyll/page.rb
|
||||
Style/SignalException:
|
||||
EnforcedStyle: only_raise
|
||||
Style/SingleArgumentDig:
|
||||
Enabled: true
|
||||
Style/SingleLineDoEndBlock:
|
||||
Enabled: true
|
||||
Style/SlicingWithRange:
|
||||
Enabled: false
|
||||
Style/SoleNestedConditional:
|
||||
Enabled: true
|
||||
Style/StringChars:
|
||||
Enabled: true
|
||||
Style/StringConcatenation:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/commands/*.rb
|
||||
- test/**/*.rb
|
||||
- lib/jekyll/commands/*.rb
|
||||
- test/**/*.rb
|
||||
Style/StringLiterals:
|
||||
EnforcedStyle: double_quotes
|
||||
Style/StringLiteralsInInterpolation:
|
||||
|
||||
26
Gemfile
26
Gemfile
@@ -16,11 +16,16 @@ end
|
||||
|
||||
group :test do
|
||||
gem "activesupport", "< 7.1.0"
|
||||
gem "cucumber", RUBY_VERSION >= "2.5" ? "~> 5.1.2" : "~> 4.1"
|
||||
gem "cucumber", "~> 9.0"
|
||||
gem "httpclient"
|
||||
gem "jekyll_test_plugin"
|
||||
gem "jekyll_test_plugin_malicious"
|
||||
gem "memory_profiler"
|
||||
|
||||
# Runtime dependency of gem `httpclient`. _Needed only in Ruby 3.4+_.
|
||||
# Remove once gem `httpclient` ships with `mutex_m` listed as a dependency in its gemspec.
|
||||
gem "mutex_m", "~> 0.3" if RUBY_VERSION >= "3.4"
|
||||
|
||||
gem "nokogiri", "~> 1.7"
|
||||
gem "rspec"
|
||||
gem "rspec-mocks"
|
||||
@@ -76,13 +81,6 @@ group :jekyll_optional_dependencies do
|
||||
gem "kramdown-syntax-coderay"
|
||||
gem "matrix"
|
||||
gem "mime-types", "~> 3.0"
|
||||
# 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"
|
||||
gem "tomlrb"
|
||||
|
||||
platforms :ruby, :mswin, :mingw, :x64_mingw do
|
||||
@@ -101,6 +99,18 @@ 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"]
|
||||
|
||||
|
||||
184
History.markdown
184
History.markdown
@@ -1,8 +1,112 @@
|
||||
## HEAD
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Avoid caching resource when called via `include_relative` tag (#9784)
|
||||
* Fix logs containing IPv6 URLs (#9813)
|
||||
* Do not treat colons in `url_placeholders` as URI delimiters (#9850)
|
||||
* Fix servlet do_GET header logic (#9867)
|
||||
* Add logger to Gemfile for Ruby 4.0 (#9920)
|
||||
|
||||
### Documentation
|
||||
|
||||
* Improve documentation on collections in step-by-step walkthrough (#9803)
|
||||
* Add `https://form.taxi` as a third-party resource for forms (#9802)
|
||||
* Add Supranode to third-party deployment guide (#9786)
|
||||
* Document the need for a `Gemfile` in deployment step of step-by-step walkthrough (#9805)
|
||||
* Add Azion to the 3rd party deployment docs (#9811)
|
||||
* Add ruby-erb prerequisite for Arch Linux installations (#9832)
|
||||
* Add jekyllup.com to themes documentation (#9882)
|
||||
* docs: Update contributor badge in README to include avatar height and limit parameters (#9912)
|
||||
* Update WDM (0.1.1 → 0.2.0) in the Windows docs (#9897)
|
||||
* Bump supported versions (#9923)
|
||||
* Add GitCMS to resources docs (#9960)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Improve readability of `post_url` tag (#9829)
|
||||
* Fix flaky test that depends on current minute (#9889)
|
||||
* build: fix broken CI on newer rubies (#9954)
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* feat: Allowing post_url tag to receive liquid variables (#9776)
|
||||
* Add .ruby-lsp to default excludes (#9914)
|
||||
* Allow configuring future metadata for individual collections (#9925)
|
||||
|
||||
## 4.4.1 / 2025-01-29
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Restore globbed path behavior in front matter defaults (#9762)
|
||||
|
||||
## 4.4.0 / 2025-01-27
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Allow marking specific highlighted lines via Liquid (#9138)
|
||||
* Add gem `csv` to runtime dependency list (#9522)
|
||||
* Bump the minimum ruby version to 2.7 (#9525)
|
||||
* Acknowledge `livereload_port` from site config too (#9606)
|
||||
* Add gem `base64` as runtime dependency (#9740)
|
||||
* Add gem `json` as runtime_dependency (#9671)
|
||||
* Remove unnecessary constraint on gem `mercenary` (#9758)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Optimize default front matter using `File.fnmatch?` (#9185)
|
||||
* Remove totals in profile table properly (#9186)
|
||||
* Optimize `Site#each_site_file` (#9187)
|
||||
* Rename sass partial created for new blank site (#9257)
|
||||
* Fix `jekyll serve --detach` with jekyll-sass-converter 3.x (#9304)
|
||||
* Handle TypeError from `where` filter gracefully (#9292)
|
||||
* Add support for upcoming logger 1.4.3 (#9392)
|
||||
* Fix typo in devcontainer.json (#9364)
|
||||
* Correct rubocop lint errors (#9600)
|
||||
* Fix inexistent layout warning for the default 404 page (#9589)
|
||||
* Relax version constraint on `wdm` in new Gemfile (#9662)
|
||||
* Fix `--livereload-ignore` option (#9570)
|
||||
* Render theme-gem root only in development (#9680)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Cleanup highlight tag (#9177)
|
||||
* Run tests in utc (#9168)
|
||||
* Lock Ruby in CI to v3.1.2 and bump JRuby to v9.4.0.0 (#9196)
|
||||
* Update sass related tests for jekyll-sass-converter 3.x (#9223)
|
||||
* Split `test/test_tags.rb` into multiple files (#9230)
|
||||
* test: use hash explicitly for Struct initializer for ruby 3.2 (#9237)
|
||||
* script/default-site: accept flags for `jekyll new` (#9259)
|
||||
* Bump check-spelling/check-spelling from 0.0.20 to 0.0.21 (#9205)
|
||||
* Use check-spelling/check-spelling@v0.0.21 (#9199)
|
||||
* Bump RuboCop to v1.45.x (#9305)
|
||||
* Bump Rubocop to version 1.48.x (#9326)
|
||||
* Bump versions of ruby & nodejs in devcontainer (#9360)
|
||||
* Bump rubocop version to 1.52.x (#9361)
|
||||
* Upgrade RuboCop to 1.54 (#9401)
|
||||
* Add CodeQL workflow (#9397)
|
||||
* Bump actions/checkout from 3 to 4 (#9442)
|
||||
* Test suite uses shoulda-context only. (#9441)
|
||||
* Keep activesupport at version 7.0.x (#9469)
|
||||
* Bump Rubocop to 1.56.4 (#9459)
|
||||
* Configure dependabot to handle rubygems dependencies (#9445)
|
||||
* Update rubocop gem (#9476)
|
||||
* Fix Performance/StringIdentifierArgument violation in site.rb and allow activesupport 6 for windows tests (#9512)
|
||||
* Add a few more emeritus team members (#9535)
|
||||
* Make custom cop inherit `RuboCop::Cop::Base` (#9597)
|
||||
* CI: Use JRuby 9.4.8.0 (#9654)
|
||||
* Stop testing with Cucumber on JRuby (#9661)
|
||||
* Windows CI on GitHub Actions (#9659)
|
||||
* Run GitHub Actions only if needed (#9664)
|
||||
* Format `.rubocop.yml` via a rake task (#9687)
|
||||
* Configure some new cops (#9688)
|
||||
* Fix expected markup per WAI-ARIA requirements (#9737)
|
||||
* Add an optional `:rdoc` group of gems (#9742)
|
||||
* Test `inspect` filter with custom object (#9743)
|
||||
* Bump cucumber to v9 (#9747)
|
||||
* Add Ruby 3.4 to CI matrix (#9740)
|
||||
* Remove unnecessary runtime dependency (#9753)
|
||||
* Bump `check-spelling/check-spelling` action (#9756)
|
||||
|
||||
### Documentation
|
||||
|
||||
@@ -39,44 +143,45 @@
|
||||
* Add docs version badge to page_excerpts feature (#9520)
|
||||
* Improve accessibility of the docs (#9338)
|
||||
* Fix gem quote consistency on docs (#9517)
|
||||
* Make site search work again (#9530)
|
||||
* Jekyll docs template typo - All pages show "Deployment" (#9548)
|
||||
* Fixed: Wrong navigation style on the right side of news and docs pages (#9586)
|
||||
* Add redirect for step-by-step tutorial (#9593)
|
||||
* Add Jekyll 3.10.0 release post & history (#9625)
|
||||
* Fix minor docs error (#9641)
|
||||
* Update windows.md (#9644)
|
||||
* Document keys of global variable `{{ jekyll }}` (#9653)
|
||||
* Fix incorrect and inconsistent variables in the permalinks page (#9591)
|
||||
* Fix lapses in documentation of page variables (#9667)
|
||||
* Add note about VSCode warning for SCSS files (#9609)
|
||||
* docs: Fix incorrect parentheses (#9629)
|
||||
* docs: Fix of a bug in the pagination section (#8890)
|
||||
* Update current Ruby version renders and macOS docs (#9614)
|
||||
* Improve docs around using GitHub Actions to build and deploy Jekyll sites (#9682)
|
||||
* Fix grammar in the description of `page.excerpt` variable (#9689)
|
||||
* Render HTML tables at `/docs/permalinks/` using a data file (#9666)
|
||||
* Fix HTML attribute separation whitespace placement in the Navigation include code of Assets step of the Step by Step Tutorial (#9695)
|
||||
* Fix missing glob matching pattern support description in the documentation of the `include` and `exclude` configuration options (#9697)
|
||||
* Fix missing `url` configuration option documentation (#9699)
|
||||
* Link to GitHub Pages Dependency versions page instead of explicitly specifying Jekyll version (#9715)
|
||||
* Fix broken link on third-party.md (#9704)
|
||||
* Fix: remove inaccessible links and their descriptions (#9745)
|
||||
* Add release post for v4.4.0 (#9759)
|
||||
|
||||
### Development Fixes
|
||||
### Site Enhancements
|
||||
|
||||
* Cleanup highlight tag (#9177)
|
||||
* Run tests in utc (#9168)
|
||||
* Lock Ruby in CI to v3.1.2 and bump JRuby to v9.4.0.0 (#9196)
|
||||
* Update sass related tests for jekyll-sass-converter 3.x (#9223)
|
||||
* Split `test/test_tags.rb` into multiple files (#9230)
|
||||
* test: use hash explicitly for Struct initializer for ruby 3.2 (#9237)
|
||||
* script/default-site: accept flags for `jekyll new` (#9259)
|
||||
* Bump check-spelling/check-spelling from 0.0.20 to 0.0.21 (#9205)
|
||||
* Use check-spelling/check-spelling@v0.0.21 (#9199)
|
||||
* Bump RuboCop to v1.45.x (#9305)
|
||||
* Bump Rubocop to version 1.48.x (#9326)
|
||||
* Bump versions of ruby & nodejs in devcontainer (#9360)
|
||||
* Bump rubocop version to 1.52.x (#9361)
|
||||
* Upgrade RuboCop to 1.54 (#9401)
|
||||
* Add CodeQL workflow (#9397)
|
||||
* Bump actions/checkout from 3 to 4 (#9442)
|
||||
* Test suite uses shoulda-context only. (#9441)
|
||||
* Keep activesupport at version 7.0.x (#9469)
|
||||
* Bump Rubocop to 1.56.4 (#9459)
|
||||
* Configure dependabot to handle rubygems dependencies (#9445)
|
||||
* Update rubocop gem (#9476)
|
||||
* Fix Performance/StringIdentifierArgument violation in site.rb and allow activesupport 6 for windows tests (#9512)
|
||||
* Add csv to runtime dependency list (#9522)
|
||||
* Extract markup for `Improve this page` into an inclusion (#9675)
|
||||
|
||||
## 4.3.4 / 2024-09-16
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Optimize default front matter using `File.fnmatch?` (#9185)
|
||||
* Remove totals in profile table properly (#9186)
|
||||
* Optimize `Site#each_site_file` (#9187)
|
||||
* Rename sass partial created for new blank site (#9257)
|
||||
* Fix `jekyll serve --detach` with jekyll-sass-converter 3.x (#9304)
|
||||
* Handle TypeError from `where` filter gracefully (#9292)
|
||||
* Add support for upcoming logger 1.4.3 (#9392)
|
||||
* Fix typo in devcontainer.json (#9364)
|
||||
* Bump the minimum ruby version to 2.7 (#9525)
|
||||
* 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
|
||||
|
||||
@@ -88,6 +193,19 @@
|
||||
|
||||
* Backport #9237 for v4.3.x: Use Hash explicitly for Struct initializer (#9285)
|
||||
|
||||
## 3.10.0 / 2024-06-23
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Backport add-csv-dependency from #9522 to Jekyll 3 (#9616)
|
||||
* 3.10-stable: Add webrick as a dependency (#9620)
|
||||
|
||||
## 3.9.5 / 2024-02-12
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* 3.9-stable: allow Pages to be Excerpted (#9550)
|
||||
|
||||
## 3.9.4 / 2023-12-28
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# [Jekyll](https://jekyllrb.com/)
|
||||
|
||||
[][ruby-gems]
|
||||
[][ci-workflow]
|
||||
[][appveyor]
|
||||
[][ci-workflow]
|
||||
[](#backers)
|
||||
[](#sponsors)
|
||||
|
||||
@@ -70,7 +69,7 @@ Support this project by becoming a sponsor. Your logo will show up in this READM
|
||||
### Contributors
|
||||
|
||||
This project exists thanks to all the people who contribute.
|
||||
[](../../graphs/contributors)
|
||||
[](../../graphs/contributors)
|
||||
|
||||
### Backers
|
||||
|
||||
|
||||
18
Rakefile
18
Rakefile
@@ -8,6 +8,7 @@ require "yaml"
|
||||
|
||||
$LOAD_PATH.unshift File.expand_path("lib", __dir__)
|
||||
require "jekyll/version"
|
||||
require "bundler/gem_tasks"
|
||||
|
||||
Dir.glob("rake/**.rake").each { |f| import f }
|
||||
|
||||
@@ -42,11 +43,15 @@ def gem_file
|
||||
end
|
||||
|
||||
def normalize_bullets(markdown)
|
||||
markdown.gsub(%r!\n\s{2}\*{1}!, "\n-")
|
||||
# Normalize both old-style indented bullets (" *") and
|
||||
# release-please-style non-indented bullets ("*") to "-"
|
||||
markdown.gsub(%r!\n\s{0,2}\*{1}!, "\n-")
|
||||
end
|
||||
|
||||
def linkify_prs(markdown)
|
||||
markdown.gsub(%r!(?<\!&)#(\d+)!) do |word|
|
||||
# Match bare PR references like #1234 but skip those already linkified
|
||||
# by release-please as [#1234](url)
|
||||
markdown.gsub(%r{(?<!&)(?<!\[)#(\d+)}) do |word|
|
||||
"[#{word}]({{ site.repository }}/issues/#{word.delete("#")})"
|
||||
end
|
||||
end
|
||||
@@ -60,8 +65,10 @@ def liquid_escape(markdown)
|
||||
end
|
||||
|
||||
def custom_release_header_anchors(markdown)
|
||||
header_regexp = %r!^(\d{1,2})\.(\d{1,2})\.(\d{1,2}) \/ \d{4}-\d{2}-\d{2}!
|
||||
section_regexp = %r!^### \w+ \w+$!
|
||||
# Match old format: "X.Y.Z / YYYY-MM-DD"
|
||||
# Match new release-please format: "[X.Y.Z](compare-url) (YYYY-MM-DD)"
|
||||
header_regexp = %r!^(?:\[?)(\d{1,2})\.(\d{1,2})\.(\d{1,2})(?:\]\([^)]*\))? [\(/]\s?\d{4}-\d{2}-\d{2}\)?!
|
||||
section_regexp = %r!^### \w[\w ]*$!
|
||||
markdown.split(%r!^##\s!).map do |release_notes|
|
||||
_, major, minor, patch = *release_notes.match(header_regexp)
|
||||
release_notes
|
||||
@@ -75,7 +82,8 @@ def slugify(header)
|
||||
end
|
||||
|
||||
def remove_head_from_history(markdown)
|
||||
index = markdown =~ %r!^##\s+\d+\.\d+\.\d+!
|
||||
# Match both old format "## X.Y.Z" and release-please format "## [X.Y.Z]"
|
||||
index = markdown =~ %r!^##\s+\[?\d+\.\d+\.\d+!
|
||||
markdown[index..-1]
|
||||
end
|
||||
|
||||
|
||||
49
appveyor.yml
49
appveyor.yml
@@ -1,49 +0,0 @@
|
||||
version: "{build}"
|
||||
image: Visual Studio 2019
|
||||
build: off
|
||||
|
||||
clone_depth: 5
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- themes
|
||||
- /.*-stable$/
|
||||
|
||||
environment:
|
||||
BUNDLE_WITHOUT: "benchmark:development"
|
||||
matrix:
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TZINFO_VERSION: "~> 1.2"
|
||||
TEST_SUITE: "test"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TZINFO_VERSION: "~> 2.0"
|
||||
TEST_SUITE: "test"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TEST_SUITE: "default-site"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TEST_SUITE: "profile-docs"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TEST_SUITE: "memprof"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TZINFO_VERSION: "~> 1.2"
|
||||
TEST_SUITE: "cucumber"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TZINFO_VERSION: "~> 2.0"
|
||||
TEST_SUITE: "cucumber"
|
||||
|
||||
install:
|
||||
- SET PATH=C:\Ruby%RUBY_FOLDER_VER%-x64\bin;%PATH%
|
||||
- bundle config set --local clean 'true'
|
||||
- bundle config set --local path 'vendor\bundle'
|
||||
- bundle install --retry 5 --jobs=%NUMBER_OF_PROCESSORS%
|
||||
|
||||
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,9 +1,10 @@
|
||||
---
|
||||
version: 4.3.3
|
||||
version: 4.4.1
|
||||
name: Jekyll • Simple, blog-aware, static sites
|
||||
description: Transform your plain text into static websites and blogs
|
||||
url: https://jekyllrb.com
|
||||
repository: https://github.com/jekyll/jekyll
|
||||
site_branch: master
|
||||
timezone: America/Los_Angeles
|
||||
twitter:
|
||||
username: jekyllrb
|
||||
|
||||
@@ -112,10 +112,27 @@
|
||||
flag: --strict_front_matter
|
||||
|
||||
|
||||
- name: Web Domain URL
|
||||
option: "url: SCHEME://HOST[:PORT]"
|
||||
description: >-
|
||||
The canonical URL of the root of your production deploy, composed of the following components:<br>
|
||||
• Protocol scheme (e.g. <code>http://</code>)<br>
|
||||
• Hostname or IP address (e.g. <code>example.org</code>)<br>
|
||||
• <em>(Optional)</em> The port number of the server, prefixed with a colon
|
||||
(e.g. <code>:8080</code>)<br>
|
||||
The value of this configuration option should NOT have a trailing slash. It will be appended
|
||||
with the <code>baseurl</code> to form the full URL to your Jekyll site when using the
|
||||
<a href="/docs/liquid/filters/">Liquid filter <code>absolute_url</code></a>.<br>
|
||||
<strong>NOTE:</strong> This setting is automatically configured to the <strong>localhost URL</strong>
|
||||
when the <code>jekyll serve</code> command is invoked.
|
||||
|
||||
|
||||
- name: Base URL
|
||||
description: Serve the website from the given base URL.
|
||||
option: "baseurl: URL"
|
||||
flag: -b, --baseurl URL
|
||||
description: >-
|
||||
Serve the website from the given base URL (the path between web-server or domain root and your landing
|
||||
page).
|
||||
option: "baseurl: /PATH/TO/SITE"
|
||||
flag: -b, --baseurl /PATH/TO/SITE
|
||||
|
||||
|
||||
- name: Trace
|
||||
|
||||
@@ -41,10 +41,15 @@
|
||||
Exclude directories and/or files from the conversion. These exclusions are relative to the site's source directory
|
||||
and cannot be outside the source directory.
|
||||
<br />
|
||||
In Jekyll 3, the `exclude` configuration option replaces the default exclusion list.
|
||||
This configuration option supports Ruby's <a href="https://ruby-doc.org/3.3.5/File.html#method-c-fnmatch">
|
||||
<code>File.fnmatch</code> filename globbing patterns</a> to match multiple entries to exclude. For example,
|
||||
you can exclude multiple README.md files in your source tree from being included in your site by specifying the
|
||||
following <code>exclude</code> option entries: <code>["README.md", "**/README.md"]</code>.
|
||||
<br />
|
||||
In Jekyll 4, user-provided entries get added to the default exclusion list instead and the `include` option can be
|
||||
used to override the default exclusion list entries.
|
||||
In Jekyll 3, the <code>exclude</code> configuration option replaces the default exclusion list.
|
||||
<br />
|
||||
In Jekyll 4, user-provided entries get added to the default exclusion list instead and the <code>include</code>
|
||||
option can be used to override the default exclusion list entries.
|
||||
<br />
|
||||
The default exclusions are found in <code>_config.yml</code> as created by <code>jekyll new</code>:
|
||||
<ul>
|
||||
@@ -65,8 +70,14 @@
|
||||
- name: Include
|
||||
description: >-
|
||||
Force inclusion of directories and/or files in the conversion. <code>.htaccess</code> is a good example since
|
||||
dotfiles are excluded by default. With Jekyll 4, the `include` configuration option entries override the
|
||||
`exclude` option entries.
|
||||
dotfiles are excluded by default.
|
||||
<br>
|
||||
This configuration option supports Ruby's <a href="https://ruby-doc.org/3.3.5/File.html#method-c-fnmatch-3F">
|
||||
<code>File.fnmatch</code> filename globbing patterns</a> to match multiple entries to include, refer the
|
||||
<code>exclude</code> configuration option for more information.
|
||||
<br>
|
||||
With Jekyll 4, the <code>include</code> configuration option entries override the <code>exclude</code> option
|
||||
entries.
|
||||
option: "include: [DIR, FILE, ...]"
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,13 @@
|
||||
|
||||
|
||||
- name: Live reload ignore
|
||||
description: File glob patterns for LiveReload to ignore.
|
||||
description: >-
|
||||
File glob patterns for LiveReload to ignore.<br /><br />
|
||||
Ensure that patterns are quoted when passed via the command-line to deter your shell from
|
||||
expanding them.<br /><br /><strong>Note:</strong> The given glob patterns are matched against
|
||||
the <code>relative_path</code> attribute of the processed resource. In the event Jekyll
|
||||
reloads a <em>relative_path</em> matching the pattern in spite of being quoted, try listing
|
||||
the pattern(s) under the config file option key.
|
||||
option: "livereload_ignore: [ GLOB1,... ]"
|
||||
flag: "--livereload-ignore GLOB1[,GLOB2,...]"
|
||||
|
||||
@@ -33,7 +39,10 @@
|
||||
|
||||
|
||||
- name: Live reload port
|
||||
description: Port for LiveReload to listen on.
|
||||
description: >-
|
||||
Port for LiveReload to listen on.<br/><em>Ability to override via config file introduced in
|
||||
<span class="version-badge">4.4.0</span></em>.
|
||||
option: "livereload_port: PORT"
|
||||
flag: "--livereload-port PORT"
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@ 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: jekyll
|
||||
description: >-
|
||||
Jekyll-centric information will be available here. See below for details.
|
||||
- name: theme
|
||||
description: >-
|
||||
Theme-gem specific information as defined in the theme's gemspec. Useful for rendering
|
||||
@@ -95,38 +98,44 @@ site:
|
||||
page:
|
||||
- name: page.content
|
||||
description: >-
|
||||
The content of the Page, rendered or un-rendered depending upon
|
||||
what Liquid is being processed and what <code>page</code> is.
|
||||
The content of the Page, rendered or un-rendered depending upon what Liquid is being processed
|
||||
and what <code>page</code> is.
|
||||
- name: page.title
|
||||
description: >-
|
||||
The title of the Page.
|
||||
The title of the Page or Document resource.
|
||||
- name: page.excerpt
|
||||
description: >-
|
||||
The un-rendered excerpt of a document.
|
||||
The un-rendered excerpt of a Page or Document. Can be overridden in the
|
||||
<a href="/docs/front-matter/">front matter</a>. It can either be disabled atomically for
|
||||
certain page or document by setting an empty string to an <code>excerpt_separator</code> key in
|
||||
the front matter of desired resource or disabled site-wide by setting the same as a top-level
|
||||
key in the config file.
|
||||
- name: page.url
|
||||
description: >-
|
||||
The URL of the Post without the domain, but with a leading slash, e.g.
|
||||
<code>/2008/12/14/my-post.html</code>
|
||||
- name: page.date
|
||||
description: >-
|
||||
The Date assigned to the Post. This can be overridden in a Post’s front matter by specifying
|
||||
The Date assigned to the Post. This can be overridden in a Post's front matter by specifying
|
||||
a new date/time in the format <code>YYYY-MM-DD HH:MM:SS</code> (assuming UTC), or
|
||||
<code>YYYY-MM-DD HH:MM:SS +/-TTTT</code> (to specify a time zone using an offset from UTC.
|
||||
e.g. <code>2008-12-14 10:30:00 +0900</code>).
|
||||
e.g. <code>2008-12-14 10:30:00 +0900</code>). Not applicable to Pages.
|
||||
- name: page.id
|
||||
description: >-
|
||||
An identifier unique to a document in a Collection or a Post (useful in RSS feeds). e.g.
|
||||
<code>/2008/12/14/my-post</code><code>/my-collection/my-document</code>
|
||||
<code>/2008/12/14/my-post</code><code>/my-collection/my-document</code>. Not applicable to
|
||||
Pages.
|
||||
- name: page.categories
|
||||
description: >-
|
||||
The list of categories to which this post belongs. Categories are derived from the directory
|
||||
structure above the <code>_posts</code> directory. For example, a post at
|
||||
<code>/work/code/_posts/2008-12-24-closures.md</code> would have this field set to
|
||||
<code>['work', 'code']</code>. These can also be specified in the
|
||||
<a href="/docs/front-matter/">front matter</a>.
|
||||
<a href="/docs/front-matter/">front matter</a>. Note: Path-based categories may not work for
|
||||
documents in user-defined collections.
|
||||
- name: page.collection
|
||||
description: >-
|
||||
The label of the collection to which this document belongs. e.g. <code>posts</code> for a post, or
|
||||
The label of the collection to which a Document belongs. e.g. <code>posts</code> for a post, or
|
||||
<code>puppies</code> for a document at path <code>_puppies/rover.md</code>. If not part of a
|
||||
collection, an empty string is returned.
|
||||
- name: page.tags
|
||||
@@ -135,16 +144,29 @@ page:
|
||||
<a href="/docs/front-matter/">front matter</a>.
|
||||
- name: page.dir
|
||||
description: >-
|
||||
The path between the source directory and the file of the post or page, e.g.
|
||||
<code>/pages/</code>.
|
||||
This can be overridden by <code>permalink</code> in the <a href="/docs/front-matter/">front matter</a>.
|
||||
The path between the source directory and the file of a page, e.g. <code>/pages/</code> when the page
|
||||
is at path <code>pages/about.md</code> relative to the source directory. This is derived from the
|
||||
<code>url</code> attribute of the page and can therefore be overridden via the <code>permalink</code>
|
||||
key in the <a href="/docs/front-matter/">front matter</a>. NOTE: This variable is not applicable to
|
||||
posts and documents in user-defined collections. Use the <code>categories</code> variable to get similar
|
||||
info for posts.
|
||||
- name: page.name
|
||||
description: >-
|
||||
The filename of the post or page, e.g. <code>about.md</code>
|
||||
- name: page.path
|
||||
description: >-
|
||||
The path to the raw post or page. Example usage: Linking back to the page or post’s source
|
||||
on GitHub. This can be overridden in the <a href="/docs/front-matter/">front matter</a>.
|
||||
The path to the raw post or page, relative to the source directory. Example usage: Using a combination
|
||||
of the repository's blob URL and this page variable to get the full URL to the file in the repository.
|
||||
This can be overridden in the <a href="/docs/front-matter/">front matter</a>.
|
||||
- name: page.slug
|
||||
description: >-
|
||||
The filename of a Document resource without its extension (or date prefixes for a post). For example,
|
||||
slug for a post at URL <code>/2017/02/22/my-new-post.html</code>, would be <code>my-new-post</code>.
|
||||
Can be overridden in the <a href="/docs/front-matter/">front matter</a>.
|
||||
- name: page.ext
|
||||
description: >-
|
||||
The file extension of a Document resource. For example, <code>.html</code>. Can be overridden in the
|
||||
<a href="/docs/front-matter/">front matter</a>.
|
||||
- name: page.next
|
||||
description: >-
|
||||
The next post relative to the position of the current post in <code>site.posts</code>.
|
||||
@@ -154,9 +176,17 @@ 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.
|
||||
|
||||
jekyll:
|
||||
- name: jekyll.version
|
||||
description: Version of Jekyll used to build the site.
|
||||
- name: jekyll.environment
|
||||
description: Value assigned to environment variable <code>JEKYLL_ENV</code> during a build.
|
||||
|
||||
theme:
|
||||
- name: theme.root
|
||||
description: Absolute path to the theme-gem.
|
||||
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
|
||||
|
||||
139
docs/_data/permalinks.yml
Normal file
139
docs/_data/permalinks.yml
Normal file
@@ -0,0 +1,139 @@
|
||||
placeholders:
|
||||
- name: year
|
||||
desc: >-
|
||||
Year from the post's filename with four digits. May be overridden via the document's
|
||||
<code>date</code> front matter.
|
||||
- name: short_year
|
||||
desc: >-
|
||||
Year from the post's filename without the century. (00..99) May be overridden via the
|
||||
document's <code>date</code> front matter.
|
||||
- name: month
|
||||
desc: >-
|
||||
Month from the post's filename. (01..12) May be overridden via the document's
|
||||
<code>date</code> front matter.
|
||||
- name: i_month
|
||||
desc: >-
|
||||
Month without leading zeros from the post's filename. May be overridden via the document's
|
||||
<code>date</code> front matter.
|
||||
- name: short_month
|
||||
desc: >-
|
||||
Three-letter month abbreviation, e.g. "Jan".
|
||||
- name: long_month
|
||||
intro_ver: "4.0"
|
||||
desc: >-
|
||||
Full month name, e.g. "January".
|
||||
- name: day
|
||||
desc: >-
|
||||
Day of the month from the post's filename. (01..31) May be overridden via the document's
|
||||
<code>date</code> front matter.
|
||||
- name: i_day
|
||||
desc: >-
|
||||
Day of the month without leading zeros from the post's filename. May be overridden via the
|
||||
document's <code>date</code> front matter.
|
||||
- name: y_day
|
||||
desc: >-
|
||||
Ordinal day of the year from the post's filename, with leading zeros. (001..366)
|
||||
- name: w_year
|
||||
intro_ver: "4.0"
|
||||
desc: >-
|
||||
Week year which may differ from the month year for up to three days at the start of January
|
||||
and end of December
|
||||
- name: week
|
||||
intro_ver: "4.0"
|
||||
desc: >-
|
||||
Week number of the current year, starting with the first week having a majority of its days
|
||||
in January. (01..53)
|
||||
- name: w_day
|
||||
intro_ver: "4.0"
|
||||
desc: >-
|
||||
Day of the week, starting with Monday. (1..7)
|
||||
- name: short_day
|
||||
intro_ver: "4.0"
|
||||
desc: >-
|
||||
Three-letter weekday abbreviation, e.g. "Sun".
|
||||
- name: long_day
|
||||
intro_ver: "4.0"
|
||||
desc: >-
|
||||
Weekday name, e.g. "Sunday".
|
||||
- name: hour
|
||||
desc: >-
|
||||
Hour of the day, 24-hour clock, zero-padded from the post's <code>date</code> front matter. (00..23)
|
||||
- name: minute
|
||||
desc: >-
|
||||
Minute of the hour from the post's <code>date</code> front matter. (00..59)
|
||||
- name: second
|
||||
desc: >-
|
||||
Second of the minute from the post's <code>date</code> front matter. (00..59)
|
||||
- name: title
|
||||
desc: >-
|
||||
Title from the document's filename. May be overridden via the document's
|
||||
<code>slug</code> front matter. Preserves case from the source.
|
||||
- name: slug
|
||||
desc: >-
|
||||
Slugified title from the document's filename (any character except numbers and letters is
|
||||
replaced as hyphen). May be overridden via the document's <code>slug</code> front matter.
|
||||
- name: categories
|
||||
desc: >-
|
||||
The specified categories for this post. If a post has multiple categories, Jekyll will create
|
||||
a hierarchy (e.g. <code>/category1/category2</code>). Also Jekyll automatically parses out
|
||||
double slashes in the URLs, so if no categories are present, it will ignore this.
|
||||
- name: slugified_categories
|
||||
intro_ver: "4.1"
|
||||
desc: >-
|
||||
The specified categories for this post but <em>slugified</em>. If a category is a composite of
|
||||
multiple words, Jekyll will downcase all alphabets and replace any non-alphanumeric character
|
||||
with a hyphen. (e.g. <code>"Work 2 Progress"</code> will be converted into
|
||||
<code>"work-2-progress"</code>). If a post has multiple categories, Jekyll will create
|
||||
a hierarchy (e.g. <code>/work-2-progress/category2</code>). Also Jekyll automatically parses
|
||||
out double slashes in the URLs, so if no categories are present, it will ignore this.
|
||||
- name: output_ext
|
||||
desc: >-
|
||||
Extension of the output file. (Included by default and usually unnecessary.)
|
||||
|
||||
builtin_formats:
|
||||
- name: date
|
||||
format: "/:categories/:year/:month/:day/:title:output_ext"
|
||||
- name: pretty
|
||||
format: "/:categories/:year/:month/:day/:title/"
|
||||
- name: ordinal
|
||||
format: "/:categories/:year/:y_day/:title:output_ext"
|
||||
- name: weekdate
|
||||
intro_ver: "4.0"
|
||||
format: "/:categories/:year/W:week/:short_day/:title:output_ext"
|
||||
note: "<code>W</code> will be prefixed to the value of <code>:week</code>"
|
||||
- name: none
|
||||
format: "/:categories/:title:output_ext"
|
||||
|
||||
types:
|
||||
documents:
|
||||
- name: collection
|
||||
desc: >-
|
||||
Label of the containing collection.
|
||||
- name: path
|
||||
desc: >-
|
||||
Path to the document relative to the collection's directory, including base filename of the document.
|
||||
However, does not include the file extension.
|
||||
- name: name
|
||||
desc: >-
|
||||
The document's base filename but slugified: downcased and every sequence of non-alphanumeric character
|
||||
(including spaces) replaced by a hyphen.
|
||||
- name: title
|
||||
desc: >-
|
||||
Takes on the value of front matter key <code>slug</code> if defined for the document. Otherwise takes
|
||||
on the string value generated from the document's base filename by piping through the <code>slugify</code>
|
||||
filter method with <code>pretty</code> option.<br/>
|
||||
Regardless of the value taken, the case of the alphabets are preserved instead of being replaced with
|
||||
lowercase counterparts.
|
||||
- name: output_ext
|
||||
desc: >-
|
||||
Extension of the output file. (Included by default and usually unnecessary.)
|
||||
pages:
|
||||
- name: path
|
||||
desc: >-
|
||||
Path between the source directory and the base filename of the page.
|
||||
- name: basename
|
||||
desc: >-
|
||||
The page's base filename.
|
||||
- name: output_ext
|
||||
desc: >-
|
||||
Extension of the output file. (Included by default and usually unnecessary.)
|
||||
@@ -1,3 +1,3 @@
|
||||
min_version: 2.5.0
|
||||
current_version: 3.1.3
|
||||
current_version_output: ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e)
|
||||
min_version: 2.7.0
|
||||
current_version: 3.4.1
|
||||
current_version_output: ruby 3.4.1 (2024-12-25 revision 48d4efcb85)
|
||||
|
||||
@@ -124,6 +124,16 @@ You can link to the generated page using the `url` attribute:
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
## Future
|
||||
|
||||
You can configure a collection to show future items by setting the `future` metadata to `true` in the collection's configuration.
|
||||
|
||||
```yaml
|
||||
collections:
|
||||
staff_members:
|
||||
future: true
|
||||
```
|
||||
|
||||
## Permalinks
|
||||
|
||||
There are special [permalink variables for collections]({{ '/docs/permalinks/#collections' | relative_url }}) to
|
||||
|
||||
@@ -7,6 +7,9 @@ Jekyll comes bundled with [jekyll-sass-converter](https://github.com/jekyll/jeky
|
||||
|
||||
You can further configure the plugin by adding options to your Jekyll config under the `sass` attribute. See the [plugin's documentation](https://github.com/jekyll/jekyll-sass-converter#usage) for details and for its default values.
|
||||
|
||||
{:.note .info}
|
||||
If you see a warning in VSCode regarding `@import "main";`, you may ignore it as the same does not affect the functionality of the SCSS code in Jekyll. However, Jekyll 4 does not allow importing a `main` sass partial (`_sass/main.scss`) from a sass page of a same name, viz. `css/main.scss`.
|
||||
|
||||
<div class="note info">
|
||||
<p>
|
||||
Note that directory paths specified in the <code>sass</code> configuration
|
||||
|
||||
@@ -2,21 +2,35 @@
|
||||
title: GitHub Actions
|
||||
---
|
||||
|
||||
When building a Jekyll site with GitHub Pages, the standard flow is restricted for security reasons
|
||||
and to make it simpler to get a site setup. For more control over the build and still host the site
|
||||
with GitHub Pages you can use GitHub Actions.
|
||||
When building a Jekyll site with GitHub Pages, Jekyll runs in an environment restricted for security
|
||||
reasons, yet containing numerous [whitelisted plugins and themes][ghp-whitelist] to make it simpler
|
||||
to get a site set up.
|
||||
|
||||
The only workaround to have control over the build environment and gemset yet use GitHub Pages to
|
||||
host the site was previously by building elsewhere and pushing the built directory contents to the
|
||||
`gh-pages` branch on your repository.
|
||||
|
||||
However, GitHub now provides you with the option to use their in-house CI/CD product named
|
||||
*GitHub Actions* to *build and deploy (host)* your Jekyll site with complete control over the build
|
||||
environment and gemset.
|
||||
|
||||
## Advantages of using Actions
|
||||
|
||||
### Control over gemset
|
||||
|
||||
- **Jekyll version** --- Instead of using the classic GitHub Pages provided version at `3.9.3`, you
|
||||
can use any version of Jekyll you want. For example `{{site.version}}`, or point directly to the
|
||||
repository.
|
||||
- **Plugins** --- You can use any Jekyll plugins irrespective of them being on the
|
||||
[supported versions][ghp-whitelist] list, even `*.rb` files placed in the `_plugins` directory
|
||||
of your site.
|
||||
- **Themes** --- While using a custom theme is possible without Actions, it is now simpler.
|
||||
- **Jekyll version** --- Instead of using the classic GitHub Pages-provided version specified in
|
||||
the [Dependency versions][ghp-whitelist] list, you can use any version of Jekyll you want.
|
||||
For example `{{ site.version }}`, or point directly to the repository via the Gemfile.
|
||||
- **Plugins** --- You can use any Jekyll plugins irrespective of them being whitelisted by GitHub,
|
||||
including any `*.rb` files placed in the `_plugins` directory of your site.
|
||||
- **Themes** --- While using a custom theme is possible without Actions, it is now possible to use
|
||||
themes depending on features introduced in newer versions of Jekyll.
|
||||
|
||||
{: .note .info}
|
||||
If you are migrating from the classic flow but want to keep using a GitHub-hosted theme, you may use
|
||||
the [jekyll-remote-theme][remote-theme] plugin, add any required dependencies of your theme
|
||||
(previously bundled by default) into your `_config.yml` and `Gemfile` and set the
|
||||
`remote_theme: <owner>/<repo_name>` theme repository slug correctly in your `_config.yml`.
|
||||
|
||||
### Workflow Management
|
||||
|
||||
@@ -24,6 +38,8 @@ with GitHub Pages you can use GitHub Actions.
|
||||
steps, use environment variables.
|
||||
- **Logging** --- The build log is visible and can be tweaked to be verbose, so it is much easier to
|
||||
debug errors using Actions.
|
||||
- **Caching** --- The `ruby/setup-ruby` action makes it possible to cache installed gems
|
||||
automatically instead of having to download the bundle on each build.
|
||||
|
||||
## Workspace setup
|
||||
|
||||
@@ -31,7 +47,7 @@ The first and foremost requirement is a Jekyll project hosted at GitHub. Choose
|
||||
project or follow the [quickstart]({{ '/docs/' | relative_url }}) and push the repository to GitHub
|
||||
if it is not hosted there already.
|
||||
|
||||
The Jekyll site we'll be using for the rest of this page initially consists of just a `_config.yml`,
|
||||
The Jekyll site we'll be using for the rest of this page, initially consists of just a `_config.yml`,
|
||||
an `index.md` page and a `Gemfile`. The contents are respectively:
|
||||
|
||||
```yaml
|
||||
@@ -117,5 +133,6 @@ The workflow will build and deploy your site again.
|
||||
- [starter-workflows] is the official repository providing the workflow template used in this guide.
|
||||
|
||||
[ghp-whitelist]: https://pages.github.com/versions/
|
||||
[remote-theme]: https://github.com/benbalter/jekyll-remote-theme
|
||||
[timeago-plugin]: https://rubygems.org/gems/jekyll-timeago
|
||||
[starter-workflows]: https://github.com/actions/starter-workflows/blob/main/pages/jekyll.yml
|
||||
|
||||
@@ -10,10 +10,6 @@ The [AWS Amplify Console](https://console.amplify.aws) provides continuous deplo
|
||||
|
||||
Read this [step-by-step guide](https://medium.com/@jameshamann/deploy-your-jekyll-site-using-aws-amplify-with-only-a-few-clicks-8f3dd8f26112) to deploy and host your Jekyll site on AWS Amplify.
|
||||
|
||||
## Bip
|
||||
|
||||
[Bip](https://bip.sh) provides zero downtime deployment, a global CDN, SSL, unlimited bandwidth and more for Jekyll websites. Deploy in seconds from the command line. [Visit the Bip website](https://bip.sh) for more information - which is also built with Jekyll.
|
||||
|
||||
## CloudCannon
|
||||
|
||||
[CloudCannon](https://cloudcannon.com) has everything you need to build, host
|
||||
@@ -26,7 +22,7 @@ Sites on GitHub Pages are powered by Jekyll behind the scenes, so if you’re lo
|
||||
|
||||
## GitLab Pages
|
||||
|
||||
[GitLab Pages](https://about.gitlab.com/stages-devops-lifecycle/pages/) offers free hosting with custom domains. [Get started with Jekyll](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_four.html#practical-example) and a fully customizable pipeline.
|
||||
[GitLab Pages](https://about.gitlab.com/stages-devops-lifecycle/pages/) offers free hosting with custom domains. [Get started with Jekyll](https://docs.gitlab.com/ee/user/project/pages/getting_started/pages_from_scratch.html) and a fully customizable pipeline.
|
||||
|
||||
## KeyCDN
|
||||
|
||||
@@ -51,9 +47,9 @@ Read this [Jekyll step-by-step guide](https://www.netlify.com/blog/2020/04/02/a-
|
||||
|
||||
[Render](https://render.com) provides zero config continuous deployment for static sites. The service is free under 100GB monthly bandwidth.
|
||||
|
||||
## Hostman
|
||||
## Hostman
|
||||
|
||||
[Hostman](https://hostman.com) allows you to host websites for free with no configurations. Read [this guide](https://hostman.com/docs/jekyll) to deploy your Jekyll site on Hostman.
|
||||
[Hostman](https://hostman.com) allows you to host websites for free with no configurations. Read [this guide](https://hostman.com/docs/jekyll) to deploy your Jekyll site on Hostman.
|
||||
|
||||
## Static Publisher
|
||||
|
||||
@@ -74,7 +70,17 @@ Read this [Jekyll step-by-step guide](https://www.21yunbox.com/docs/#/deploy-jek
|
||||
[Layer0](https://www.layer0.co) is an all-in-one platform to develop, deploy, preview, experiment on, monitor, and run your headless frontend. It is focused on large, dynamic websites and best-in-class performance through EdgeJS (a JavaScript-based Content Delivery Network), predictive prefetching, and performance monitoring. Layer0 offers a free tier. Get started in just a few minutes by following [Layer0's guide to deploying Jekyll](https://docs.layer0.co/guides/jekyll).
|
||||
|
||||
## Kinsta Application Hosting
|
||||
|
||||
[Kinsta Application Hosting](https://kinsta.com/application-hosting) is a Cloud Platform designed to help your company and dev teams ship web projects faster and more efficiently. You can host your apps, databases, and sites all in one place. Easily connect with GitHub and automate deployments and get 24/7 support for all your favorite languages and frameworks.
|
||||
|
||||
Read [this guide](https://kinsta.com/docs/jekyll-static-site-example/) to learn how to deploy Jekyll site on Kinsta.
|
||||
|
||||
## Supranode
|
||||
|
||||
[Supranode](https://supranode.com) offers customizable continuous deployment for static websites, featuring automatic HTTPS, a high-performance CDN, secret management, deployment previews, password protection, and more.
|
||||
|
||||
## Azion
|
||||
|
||||
[Azion](https://www.azion.com/en/) is an web platform that provides a wide range of services. It allows you to host static sites, including Jekyll-powered websites, with features like automatic HTTPS, custom domains, and real-time analytics. Azion's platform is designed for performance and scalability, making it an excellent choice for hosting global websites.
|
||||
|
||||
In [this guide](https://www.azion.com/en/documentation/products/guides/jekyll-boilerplate/) you can learn how to deploy a Jekyll site on Azion.
|
||||
|
||||
@@ -4,6 +4,168 @@ permalink: "/docs/history/"
|
||||
note: This file is autogenerated. Edit /History.markdown instead.
|
||||
---
|
||||
|
||||
## 4.4.1 / 2025-01-29
|
||||
{: #v4-4-1}
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-4-1}
|
||||
|
||||
- Restore globbed path behavior in front matter defaults ([#9762]({{ site.repository }}/issues/9762))
|
||||
|
||||
|
||||
## 4.4.0 / 2025-01-27
|
||||
{: #v4-4-0}
|
||||
|
||||
### Minor Enhancements
|
||||
{: #minor-enhancements-v4-4-0}
|
||||
|
||||
- Allow marking specific highlighted lines via Liquid ([#9138]({{ site.repository }}/issues/9138))
|
||||
- Add gem `csv` to runtime dependency list ([#9522]({{ site.repository }}/issues/9522))
|
||||
- Bump the minimum ruby version to 2.7 ([#9525]({{ site.repository }}/issues/9525))
|
||||
- Acknowledge `livereload_port` from site config too ([#9606]({{ site.repository }}/issues/9606))
|
||||
- Add gem `base64` as runtime dependency ([#9740]({{ site.repository }}/issues/9740))
|
||||
- Add gem `json` as runtime_dependency ([#9671]({{ site.repository }}/issues/9671))
|
||||
- Remove unnecessary constraint on gem `mercenary` ([#9758]({{ site.repository }}/issues/9758))
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-4-0}
|
||||
|
||||
- Optimize default front matter using `File.fnmatch?` ([#9185]({{ site.repository }}/issues/9185))
|
||||
- Remove totals in profile table properly ([#9186]({{ site.repository }}/issues/9186))
|
||||
- Optimize `Site#each_site_file` ([#9187]({{ site.repository }}/issues/9187))
|
||||
- Rename sass partial created for new blank site ([#9257]({{ site.repository }}/issues/9257))
|
||||
- Fix `jekyll serve --detach` with jekyll-sass-converter 3.x ([#9304]({{ site.repository }}/issues/9304))
|
||||
- Handle TypeError from `where` filter gracefully ([#9292]({{ site.repository }}/issues/9292))
|
||||
- Add support for upcoming logger 1.4.3 ([#9392]({{ site.repository }}/issues/9392))
|
||||
- Fix typo in devcontainer.json ([#9364]({{ site.repository }}/issues/9364))
|
||||
- Correct rubocop lint errors ([#9600]({{ site.repository }}/issues/9600))
|
||||
- Fix inexistent layout warning for the default 404 page ([#9589]({{ site.repository }}/issues/9589))
|
||||
- Relax version constraint on `wdm` in new Gemfile ([#9662]({{ site.repository }}/issues/9662))
|
||||
- Fix `--livereload-ignore` option ([#9570]({{ site.repository }}/issues/9570))
|
||||
- Render theme-gem root only in development ([#9680]({{ site.repository }}/issues/9680))
|
||||
|
||||
### Development Fixes
|
||||
{: #development-fixes-v4-4-0}
|
||||
|
||||
- Cleanup highlight tag ([#9177]({{ site.repository }}/issues/9177))
|
||||
- Run tests in utc ([#9168]({{ site.repository }}/issues/9168))
|
||||
- Lock Ruby in CI to v3.1.2 and bump JRuby to v9.4.0.0 ([#9196]({{ site.repository }}/issues/9196))
|
||||
- Update sass related tests for jekyll-sass-converter 3.x ([#9223]({{ site.repository }}/issues/9223))
|
||||
- Split `test/test_tags.rb` into multiple files ([#9230]({{ site.repository }}/issues/9230))
|
||||
- test: use hash explicitly for Struct initializer for ruby 3.2 ([#9237]({{ site.repository }}/issues/9237))
|
||||
- script/default-site: accept flags for `jekyll new` ([#9259]({{ site.repository }}/issues/9259))
|
||||
- Bump check-spelling/check-spelling from 0.0.20 to 0.0.21 ([#9205]({{ site.repository }}/issues/9205))
|
||||
- Use check-spelling/check-spelling@v0.0.21 ([#9199]({{ site.repository }}/issues/9199))
|
||||
- Bump RuboCop to v1.45.x ([#9305]({{ site.repository }}/issues/9305))
|
||||
- Bump Rubocop to version 1.48.x ([#9326]({{ site.repository }}/issues/9326))
|
||||
- Bump versions of ruby & nodejs in devcontainer ([#9360]({{ site.repository }}/issues/9360))
|
||||
- Bump rubocop version to 1.52.x ([#9361]({{ site.repository }}/issues/9361))
|
||||
- Upgrade RuboCop to 1.54 ([#9401]({{ site.repository }}/issues/9401))
|
||||
- Add CodeQL workflow ([#9397]({{ site.repository }}/issues/9397))
|
||||
- Bump actions/checkout from 3 to 4 ([#9442]({{ site.repository }}/issues/9442))
|
||||
- Test suite uses shoulda-context only. ([#9441]({{ site.repository }}/issues/9441))
|
||||
- Keep activesupport at version 7.0.x ([#9469]({{ site.repository }}/issues/9469))
|
||||
- Bump Rubocop to 1.56.4 ([#9459]({{ site.repository }}/issues/9459))
|
||||
- Configure dependabot to handle rubygems dependencies ([#9445]({{ site.repository }}/issues/9445))
|
||||
- Update rubocop gem ([#9476]({{ site.repository }}/issues/9476))
|
||||
- Fix Performance/StringIdentifierArgument violation in site.rb and allow activesupport 6 for windows tests ([#9512]({{ site.repository }}/issues/9512))
|
||||
- Add a few more emeritus team members ([#9535]({{ site.repository }}/issues/9535))
|
||||
- Make custom cop inherit `RuboCop::Cop::Base` ([#9597]({{ site.repository }}/issues/9597))
|
||||
- CI: Use JRuby 9.4.8.0 ([#9654]({{ site.repository }}/issues/9654))
|
||||
- Stop testing with Cucumber on JRuby ([#9661]({{ site.repository }}/issues/9661))
|
||||
- Windows CI on GitHub Actions ([#9659]({{ site.repository }}/issues/9659))
|
||||
- Run GitHub Actions only if needed ([#9664]({{ site.repository }}/issues/9664))
|
||||
- Format `.rubocop.yml` via a rake task ([#9687]({{ site.repository }}/issues/9687))
|
||||
- Configure some new cops ([#9688]({{ site.repository }}/issues/9688))
|
||||
- Fix expected markup per WAI-ARIA requirements ([#9737]({{ site.repository }}/issues/9737))
|
||||
- Add an optional `:rdoc` group of gems ([#9742]({{ site.repository }}/issues/9742))
|
||||
- Test `inspect` filter with custom object ([#9743]({{ site.repository }}/issues/9743))
|
||||
- Bump cucumber to v9 ([#9747]({{ site.repository }}/issues/9747))
|
||||
- Add Ruby 3.4 to CI matrix ([#9740]({{ site.repository }}/issues/9740))
|
||||
- Remove unnecessary runtime dependency ([#9753]({{ site.repository }}/issues/9753))
|
||||
- Bump `check-spelling/check-spelling` action ([#9756]({{ site.repository }}/issues/9756))
|
||||
|
||||
### Documentation
|
||||
|
||||
- Fix Nested tree navigation with recursion example ([#9174]({{ site.repository }}/issues/9174))
|
||||
- Fix typo on website ([#9203]({{ site.repository }}/issues/9203))
|
||||
- Publish post on major release of sass-converter ([#9225]({{ site.repository }}/issues/9225))
|
||||
- Update Jekyll on macOS (macos.md) and current ruby version to 3.1.3 in ruby.yml ([#9195]({{ site.repository }}/issues/9195))
|
||||
- Add release post for v4.3.2 ([#9263]({{ site.repository }}/issues/9263))
|
||||
- Grammatical reordering in 3-to-4 upgrading docs ([#9245]({{ site.repository }}/issues/9245))
|
||||
- fixed grammatical mistake on "showcase" page ([#9264]({{ site.repository }}/issues/9264))
|
||||
- Mark `highlight` `mark_lines` feature as 4.4 in docs ([#9184]({{ site.repository }}/issues/9184))
|
||||
- Add v3.9.3 release history & post to `master` branch ([#9284]({{ site.repository }}/issues/9284))
|
||||
- Update S3 deployment to remove s3_website ([#9221]({{ site.repository }}/issues/9221))
|
||||
- Document Exclude behavior, Include overrides and the default exclusion list ([#9376]({{ site.repository }}/issues/9376))
|
||||
- Update macos.md, remove Catalina (macOS 10.15) ([#9405]({{ site.repository }}/issues/9405))
|
||||
- Update macos.md, add support for Ventura ([#9406]({{ site.repository }}/issues/9406))
|
||||
- Typo fix - update to hooks and 3rd party deployment and one other article ([#9411]({{ site.repository }}/issues/9411))
|
||||
- Update 07-assets.md ([#9393]({{ site.repository }}/issues/9393))
|
||||
- Mention the front matter requirement in pages.md ([#9423]({{ site.repository }}/issues/9423))
|
||||
- Point to the Rouge GitHub repo rather than broken website ([#9362]({{ site.repository }}/issues/9362))
|
||||
- Add new theme directory to themes resources ([#9356]({{ site.repository }}/issues/9356))
|
||||
- Adds Kinsta to 3rd party deployments ([#9331]({{ site.repository }}/issues/9331))
|
||||
- Update Fedora prerequisites to include g++ ([#9290]({{ site.repository }}/issues/9290))
|
||||
- Update convert-site-to-jekyll.md ([#9348]({{ site.repository }}/issues/9348))
|
||||
- Update github-actions documentation ([#9426]({{ site.repository }}/issues/9426))
|
||||
- Update resources.md ([#9449]({{ site.repository }}/issues/9449))
|
||||
- Add GitHub Pages helpful notes ([#9235]({{ site.repository }}/issues/9235))
|
||||
- Clarify which version of Jekyll needs 'jekyll-paginate' ([#9477]({{ site.repository }}/issues/9477))
|
||||
- chore: update showcases ([#9473]({{ site.repository }}/issues/9473))
|
||||
- Add FreeBSD installation instructions ([#9481]({{ site.repository }}/issues/9481))
|
||||
- Fix broken link for the security team page ([#9497]({{ site.repository }}/issues/9497))
|
||||
- Fix broken links for several Jekyll integrations ([#9496]({{ site.repository }}/issues/9496))
|
||||
- Add release post for v4.3.3 ([#9511]({{ site.repository }}/issues/9511))
|
||||
- Add docs version badge to page_excerpts feature ([#9520]({{ site.repository }}/issues/9520))
|
||||
- Improve accessibility of the docs ([#9338]({{ site.repository }}/issues/9338))
|
||||
- Fix gem quote consistency on docs ([#9517]({{ site.repository }}/issues/9517))
|
||||
- Make site search work again ([#9530]({{ site.repository }}/issues/9530))
|
||||
- Jekyll docs template typo - All pages show "Deployment" ([#9548]({{ site.repository }}/issues/9548))
|
||||
- Fixed: Wrong navigation style on the right side of news and docs pages ([#9586]({{ site.repository }}/issues/9586))
|
||||
- Add redirect for step-by-step tutorial ([#9593]({{ site.repository }}/issues/9593))
|
||||
- Add Jekyll 3.10.0 release post & history ([#9625]({{ site.repository }}/issues/9625))
|
||||
- Fix minor docs error ([#9641]({{ site.repository }}/issues/9641))
|
||||
- Update windows.md ([#9644]({{ site.repository }}/issues/9644))
|
||||
- Document keys of global variable {% raw %}`{{ jekyll }}`{% endraw %} ([#9653]({{ site.repository }}/issues/9653))
|
||||
- Fix incorrect and inconsistent variables in the permalinks page ([#9591]({{ site.repository }}/issues/9591))
|
||||
- Fix lapses in documentation of page variables ([#9667]({{ site.repository }}/issues/9667))
|
||||
- Add note about VSCode warning for SCSS files ([#9609]({{ site.repository }}/issues/9609))
|
||||
- docs: Fix incorrect parentheses ([#9629]({{ site.repository }}/issues/9629))
|
||||
- docs: Fix of a bug in the pagination section ([#8890]({{ site.repository }}/issues/8890))
|
||||
- Update current Ruby version renders and macOS docs ([#9614]({{ site.repository }}/issues/9614))
|
||||
- Improve docs around using GitHub Actions to build and deploy Jekyll sites ([#9682]({{ site.repository }}/issues/9682))
|
||||
- Fix grammar in the description of `page.excerpt` variable ([#9689]({{ site.repository }}/issues/9689))
|
||||
- Render HTML tables at `/docs/permalinks/` using a data file ([#9666]({{ site.repository }}/issues/9666))
|
||||
- Fix HTML attribute separation whitespace placement in the Navigation include code of Assets step of the Step by Step Tutorial ([#9695]({{ site.repository }}/issues/9695))
|
||||
- Fix missing glob matching pattern support description in the documentation of the `include` and `exclude` configuration options ([#9697]({{ site.repository }}/issues/9697))
|
||||
- Fix missing `url` configuration option documentation ([#9699]({{ site.repository }}/issues/9699))
|
||||
- Link to GitHub Pages Dependency versions page instead of explicitly specifying Jekyll version ([#9715]({{ site.repository }}/issues/9715))
|
||||
- Fix broken link on third-party.md ([#9704]({{ site.repository }}/issues/9704))
|
||||
- Fix: remove inaccessible links and their descriptions ([#9745]({{ site.repository }}/issues/9745))
|
||||
- Add release post for v4.4.0 ([#9759]({{ site.repository }}/issues/9759))
|
||||
|
||||
### Site Enhancements
|
||||
{: #site-enhancements-v4-4-0}
|
||||
|
||||
- Extract markup for `Improve this page` into an inclusion ([#9675]({{ site.repository }}/issues/9675))
|
||||
|
||||
|
||||
## 4.3.4 / 2024-09-16
|
||||
{: #v4-3-4}
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-3-4}
|
||||
|
||||
- Backport [#9662]({{ site.repository }}/issues/9662) for v4.3.x: Relax version constraint on wdm in new Gemfile ([#9683]({{ site.repository }}/issues/9683))
|
||||
- Backport [#9680]({{ site.repository }}/issues/9680) for v4.3.x: Render theme-gem root only in development ([#9684]({{ site.repository }}/issues/9684))
|
||||
|
||||
### Development Fixes
|
||||
{: #development-fixes-v4-3-4}
|
||||
|
||||
- Sync workflows with counterparts on `master` ([#9681]({{ site.repository }}/issues/9681))
|
||||
|
||||
|
||||
## 4.3.3 / 2023-12-27
|
||||
{: #v4-3-3}
|
||||
|
||||
@@ -18,6 +180,25 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Backport [#9237]({{ site.repository }}/issues/9237) for v4.3.x: Use Hash explicitly for Struct initializer ([#9285]({{ site.repository }}/issues/9285))
|
||||
|
||||
|
||||
## 3.10.0 / 2024-06-23
|
||||
{: #v3-10-0}
|
||||
|
||||
### Minor Enhancements
|
||||
{: #minor-enhancements-v3-10-0}
|
||||
|
||||
- Backport add-csv-dependency from [#9522]({{ site.repository }}/issues/9522) to Jekyll 3 ([#9616]({{ site.repository }}/issues/9616))
|
||||
- 3.10-stable: Add webrick as a dependency ([#9620]({{ site.repository }}/issues/9620))
|
||||
|
||||
|
||||
## 3.9.5 / 2024-02-12
|
||||
{: #v3-9-5}
|
||||
|
||||
### Minor Enhancements
|
||||
{: #minor-enhancements-v3-9-5}
|
||||
|
||||
- 3.9-stable: allow Pages to be Excerpted ([#9550]({{ site.repository }}/issues/9550))
|
||||
|
||||
|
||||
## 3.9.4 / 2023-12-28
|
||||
{: #v3-9-4}
|
||||
|
||||
|
||||
@@ -5,9 +5,7 @@ permalink: /docs/installation/macos/
|
||||
|
||||
## Supported macOS versions
|
||||
|
||||
- Ventura (macOS 13)
|
||||
- Monterey (macOS 12)
|
||||
- Big Sur (macOS 11)
|
||||
We match [Homebrew's macOS requirements](https://docs.brew.sh/Installation#macos-requirements), which typically support the last 2 or 3 macOS versions.
|
||||
|
||||
Older macOS versions might work, but we don't officially support them.
|
||||
|
||||
@@ -48,7 +46,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 (supported by Jekyll):
|
||||
|
||||
@@ -40,7 +40,7 @@ sudo emerge --ask --verbose jekyll
|
||||
### ArchLinux
|
||||
|
||||
```sh
|
||||
sudo pacman -S ruby base-devel
|
||||
sudo pacman -S ruby base-devel ruby-erb
|
||||
```
|
||||
|
||||
### OpenSUSE
|
||||
|
||||
@@ -24,7 +24,7 @@ We only cover RubyInstaller-2.4 and newer here. Older versions need to
|
||||
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`.
|
||||
From the options choose `MSYS2 and MINGW development toolchain`.
|
||||
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`
|
||||
@@ -45,37 +45,9 @@ You must have [Windows Subsystem for Linux](https://msdn.microsoft.com/en-us/com
|
||||
|
||||
Make sure all your packages and repositories are up to date. Open a new Command Prompt or PowerShell window and type `bash`.
|
||||
|
||||
Your terminal should now be a Bash instance. Next, update your repository lists and packages:
|
||||
Your terminal should now be a Bash instance. Then, [follow the installation procedure for Ubuntu](https://jekyllrb.com/docs/installation/ubuntu/).
|
||||
|
||||
```sh
|
||||
sudo apt-get update -y && sudo apt-get upgrade -y
|
||||
```
|
||||
|
||||
Next, install Ruby. To do this, let's use a repository from [BrightBox](https://www.brightbox.com/docs/ruby/ubuntu/),
|
||||
which hosts optimized versions of Ruby for Ubuntu.
|
||||
|
||||
```sh
|
||||
sudo apt-add-repository ppa:brightbox/ruby-ng
|
||||
sudo apt-get update
|
||||
sudo apt-get install ruby2.5 ruby2.5-dev build-essential dh-autoreconf
|
||||
```
|
||||
|
||||
Next, update your Ruby gems:
|
||||
|
||||
```sh
|
||||
gem update
|
||||
```
|
||||
|
||||
Install Jekyll:
|
||||
|
||||
```sh
|
||||
gem install jekyll bundler
|
||||
```
|
||||
|
||||
{: .note .info}
|
||||
No `sudo` here.
|
||||
|
||||
Check your Jekyll version:
|
||||
Once this is done, check your Jekyll version:
|
||||
|
||||
```sh
|
||||
jekyll -v
|
||||
@@ -138,7 +110,7 @@ While `listen` has built-in support for UNIX systems, it may require an extra ge
|
||||
Add the following to the `Gemfile` for your site if you have issues with auto-regeneration on Windows alone:
|
||||
|
||||
```ruby
|
||||
gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform?
|
||||
gem "wdm", "~> 0.2.0", :install_if => Gem.win_platform?
|
||||
```
|
||||
|
||||
You have to use a [Ruby+Devkit](https://rubyinstaller.org/downloads/) version of the RubyInstaller and install
|
||||
|
||||
@@ -188,3 +188,25 @@ You can also use this tag to create a link to a post in Markdown as follows:
|
||||
[Name of Link]({% post_url 2010-07-21-name-of-post %})
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
Now lets say you have a [datafile]({{ '/docs/datafiles/' | relative_url }}) `_data/cool_posts.yaml` used to keep track
|
||||
of certain posts that you intend to be listed as say *Cool Posts*:
|
||||
|
||||
```yaml
|
||||
- title: "An Awesome Post"
|
||||
slug: "2010-07-21-name-of-post"
|
||||
- title: "Another Awesome Post"
|
||||
slug: "2016-07-26-name-of-post"
|
||||
```
|
||||
|
||||
You may list such posts using the `post_url` tag as well (from {%- include docs_version_badge.html version="4.5.0" -%}):
|
||||
|
||||
{% raw %}
|
||||
```liquid
|
||||
Cool posts:
|
||||
|
||||
{%- for cool_post in site.data.cool_posts %}
|
||||
- [{{ cool_post.title }}]({% post_url {{ cool_post.slug }} %})
|
||||
{%- endfor %}
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
@@ -155,7 +155,7 @@ page with links to all but the current page.
|
||||
{% if page == paginator.page %}
|
||||
<em>{{ page }}</em>
|
||||
{% elsif page == 1 %}
|
||||
<a href="{{ '/' | relative_url }}">{{ page }}</a>
|
||||
<a href="{{ site.paginate_path | relative_url | replace: 'page:num/', '' }}">{{ page }}</a>
|
||||
{% else %}
|
||||
<a href="{{ site.paginate_path | relative_url | replace: ':num', page }}">{{ page }}</a>
|
||||
{% endif %}
|
||||
|
||||
@@ -55,237 +55,16 @@ Here's the full list of placeholders available:
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{%- for entry in site.data.permalinks.placeholders %}
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>year</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Year from the post’s filename with four digits.
|
||||
May be overridden via the document’s <code>date</code> front matter.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>short_year</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Year from the post’s filename without the century. (00..99)
|
||||
May be overridden via the document’s <code>date</code> front matter.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>month</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Month from the post’s filename. (01..12)
|
||||
May be overridden via the document’s <code>date</code> front matter.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>i_month</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Month without leading zeros from the post’s filename. May be
|
||||
overridden via the document’s <code>date</code> front matter.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>short_month</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Three-letter month abbreviation, e.g. “Jan”.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>long_month</code></p>
|
||||
<small>{% include docs_version_badge.html version="4.0" %}</small>
|
||||
</td>
|
||||
<td>
|
||||
<p>Full month name, e.g. “January”.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>day</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Day of the month from the post’s filename. (01..31)
|
||||
May be overridden via the document’s <code>date</code> front matter.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>i_day</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Day of the month without leading zeros from the post’s filename.
|
||||
May be overridden via the document’s <code>date</code> front matter.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>y_day</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Ordinal day of the year from the post’s filename, with leading zeros. (001..366)</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>w_year</code></p>
|
||||
<small>{% include docs_version_badge.html version="4.0" %}</small>
|
||||
</td>
|
||||
<td>
|
||||
<p>Week year which may differ from the month year for up to three days at the start of January and end of December</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>week</code></p>
|
||||
<small>{% include docs_version_badge.html version="4.0" %}</small>
|
||||
</td>
|
||||
<td>
|
||||
<p>Week number of the current year, starting with the first week having a majority of its days in January. (01..53)</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>w_day</code></p>
|
||||
<small>{% include docs_version_badge.html version="4.0" %}</small>
|
||||
</td>
|
||||
<td>
|
||||
<p>Day of the week, starting with Monday. (1..7)</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>short_day</code></p>
|
||||
<small>{% include docs_version_badge.html version="4.0" %}</small>
|
||||
</td>
|
||||
<td>
|
||||
<p>Three-letter weekday abbreviation, e.g. “Sun”.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>long_day</code></p>
|
||||
<small>{% include docs_version_badge.html version="4.0" %}</small>
|
||||
</td>
|
||||
<td>
|
||||
<p>Weekday name, e.g. “Sunday”.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>hour</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Hour of the day, 24-hour clock, zero-padded from the post’s
|
||||
<code>date</code> front matter. (00..23)
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>minute</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Minute of the hour from the post’s <code>date</code> front matter. (00..59)
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>second</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Second of the minute from the post’s <code>date</code> front matter. (00..59)
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>title</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Title from the document’s filename. May be overridden via
|
||||
the document’s <code>slug</code> front matter. Preserves case from the source.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>slug</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Slugified title from the document’s filename (any character
|
||||
except numbers and letters is replaced as hyphen). May be
|
||||
overridden via the document’s <code>slug</code> front matter.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>categories</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
The specified categories for this post. If a post has multiple
|
||||
categories, Jekyll will create a hierarchy (e.g. <code>/category1/category2</code>).
|
||||
Also Jekyll automatically parses out double slashes in the URLs,
|
||||
so if no categories are present, it will ignore this.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>slugified_categories</code></p>
|
||||
<small>{% include docs_version_badge.html version="4.1" %}</small>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
The specified categories for this post but <em>slugified</em>. If a category is a
|
||||
composite of multiple words, Jekyll will downcase all alphabets and replace any
|
||||
non-alphanumeric character with a hyphen. (e.g. <code>"Work 2 Progress"</code>
|
||||
will be converted into <code>"work-2-progress"</code>)
|
||||
</p>
|
||||
<p>
|
||||
If a post has multiple categories, Jekyll will create a hierarchy
|
||||
(e.g. <code>/work-2-progress/category2</code>).
|
||||
Also Jekyll automatically parses out double slashes in the URLs,
|
||||
so if no categories are present, it will ignore this.
|
||||
</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><p><code>:{{ entry.name }}</code></p>
|
||||
{%- if entry.intro_ver -%}
|
||||
<small>{% include docs_version_badge.html version = entry.intro_ver %}</small>
|
||||
{%- endif -%}
|
||||
</td>
|
||||
<td><p>{{ entry.desc }}</p></td>
|
||||
</tr>
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -303,50 +82,22 @@ For posts, Jekyll also provides the following built-in styles for convenience:
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{%- for entry in site.data.permalinks.builtin_formats %}
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>date</code></p>
|
||||
<td><p><code>{{ entry.name }}</code></p>
|
||||
{%- if entry.intro_ver -%}
|
||||
<small>{% include docs_version_badge.html version = entry.intro_ver %}</small>
|
||||
{%- endif -%}
|
||||
</td>
|
||||
<td>
|
||||
<p><code>/:categories/:year/:month/:day/:title:output_ext</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>pretty</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>/:categories/:year/:month/:day/:title/</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>ordinal</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>/:categories/:year/:y_day/:title:output_ext</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>weekdate</code></p>
|
||||
<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><code>{{ entry.format }}</code>
|
||||
{%- if entry.note -%}<br/>
|
||||
<small>({{ entry.note }})</small>
|
||||
{%- endif -%}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>none</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>/:categories/:title:output_ext</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -381,57 +132,12 @@ Collections have the following placeholders available:
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{%- for entry in site.data.permalinks.types.documents -%}
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:collection</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Label of the containing collection.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:path</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Path to the document relative to the collection's directory,
|
||||
including base filename of the document.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:name</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>The document's base filename, with every sequence of spaces
|
||||
and non-alphanumeric characters replaced by a hyphen.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:title</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
The <code>:title</code> template variable will take the
|
||||
<code>slug</code> <a href="/docs/front-matter/">front matter</a>
|
||||
variable value if any is present in the document; if none is
|
||||
defined then <code>:title</code> will be equivalent to
|
||||
<code>:name</code>, aka the slug generated from the filename.
|
||||
Preserves case from the source.
|
||||
</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>
|
||||
<td><p><code>:{{ entry.name }}</code></p></td>
|
||||
<td><p>{{ entry.desc }}</p></td>
|
||||
</tr>
|
||||
{%- endfor -%}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -453,36 +159,12 @@ Pages have the following placeholders available:
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{%- for entry in site.data.permalinks.types.pages -%}
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:path</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
Path to the page relative to the site's source directory, excluding
|
||||
base filename of the page.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:basename</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>The page's base filename</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>
|
||||
<td><p><code>:{{ entry.name }}</code></p></td>
|
||||
<td><p>{{ entry.desc }}</p></td>
|
||||
</tr>
|
||||
{%- endfor -%}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -211,7 +211,6 @@ The complete list of available hooks:
|
||||
<p><code>:post_convert</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>After converting the post content, but before rendering the postlayout</p>
|
||||
<p>After converting the post content, but before rendering the post layout</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -109,8 +109,10 @@ end
|
||||
<code>--safe</code> option to disable plugins (with the exception of some
|
||||
<a href="https://pages.github.com/versions">whitelisted plugins</a>) for security reasons. Unfortunately, this means your plugins won't
|
||||
work if you’re deploying via GitHub Pages.<br><br>
|
||||
You can still use GitHub Pages to publish your site, but you’ll need to build the site locally and push the generated files to your
|
||||
GitHub repository instead of the Jekyll source files.
|
||||
You can still use GitHub Pages to publish your site, but you'll need to either build the site locally and push the generated files to
|
||||
your GitHub repository or use
|
||||
<a href="{{ '/docs/continuous-integration/github-actions/' | relative_url }}" title="GitHub Actions">GitHub Actions</a> to host source
|
||||
files on GitHub yet build and deploy with full control on GitHub Pages.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ layout: step
|
||||
title: Setup
|
||||
menu_name: Step by Step Tutorial
|
||||
position: 1
|
||||
redirect_from:
|
||||
- /docs/step-by-step/
|
||||
---
|
||||
Welcome to Jekyll's step-by-step tutorial. This tutorial takes
|
||||
you from having some front-end web development experience to building your
|
||||
|
||||
@@ -30,7 +30,7 @@ To do this, refer to the class (that you will configure in the next parts of thi
|
||||
```liquid
|
||||
<nav>
|
||||
{% for item in site.data.navigation %}
|
||||
<a href="{{ item.link }}" {% if page.url == item.link %}class="current"{% endif %}>{{ item.name }}</a>
|
||||
<a href="{{ item.link }}"{% if page.url == item.link %} class="current"{% endif %}>{{ item.name }}</a>
|
||||
{% endfor %}
|
||||
</nav>
|
||||
```
|
||||
@@ -50,7 +50,7 @@ First create a Sass file at `assets/css/styles.scss` with the following content:
|
||||
|
||||
The empty front matter at the top tells Jekyll it needs to process the file. The
|
||||
`@import "main"` tells Sass to look for a file called `main.scss` in the sass
|
||||
directory (`_sass/`) by default which you already created directly under the root folder of your website).
|
||||
directory (`_sass/` by default) you already created at the root of your working directory earlier.
|
||||
|
||||
At this stage you'll just have a main css file. For larger projects, this is a
|
||||
great way to keep your CSS organized.
|
||||
|
||||
@@ -57,7 +57,7 @@ Ted has been eating fruit since he was baby.
|
||||
Let's add a page which lists all the authors on the site. Jekyll makes the
|
||||
collection available at `site.authors`.
|
||||
|
||||
Create `staff.html` and iterate over `site.authors` to output all the staff:
|
||||
Create `staff.html` in the root directory and iterate over `site.authors` to output all the staff:
|
||||
|
||||
{% raw %}
|
||||
```liquid
|
||||
|
||||
@@ -11,7 +11,7 @@ It's good practice to have a [Gemfile](/docs/ruby-101/#gemfile) for your site.
|
||||
This ensures the version of Jekyll and other gems remains consistent across
|
||||
different environments.
|
||||
|
||||
Create a `Gemfile` in the root.
|
||||
If you completed step one in this tutorial, you have already created a Gemfile. If you skipped step one, create a `Gemfile` in the root.
|
||||
The file should be called 'Gemfile' and should *not* have any extension.
|
||||
You can create a Gemfile with Bundler and then add the `jekyll` gem:
|
||||
|
||||
@@ -20,7 +20,7 @@ bundle init
|
||||
bundle add jekyll
|
||||
```
|
||||
|
||||
Your file should look something like:
|
||||
Your `Gemfile` should look something like:
|
||||
|
||||
```ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
@@ -14,6 +14,7 @@ You can find and preview themes on different galleries:
|
||||
- [jekyllthemes.org](http://jekyllthemes.org/)
|
||||
- [jekyllthemes.io](https://jekyllthemes.io/)
|
||||
- [jekyll-themes.com](https://jekyll-themes.com/)
|
||||
- [jekyllup.com](https://jekyllup.com/)
|
||||
|
||||
See also: [resources](/resources/).
|
||||
|
||||
|
||||
@@ -34,6 +34,10 @@ The following is a reference of the available data.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Jekyll Variables
|
||||
|
||||
{% include docs_variables_table.html scope=site.data.jekyll_variables.jekyll %}
|
||||
|
||||
## Theme Variables {%- include docs_version_badge.html version="4.3.0" -%}
|
||||
{: #theme-variables }
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
<div class="unit one-fifth hide-on-mobiles">
|
||||
<aside>
|
||||
{% for section in site.data.docs_nav -%}
|
||||
{% for section in site.data.docs_nav %}
|
||||
<h4>{{ section.title }}</h4>
|
||||
<ul>
|
||||
{%- for item in section.docs -%}
|
||||
{%- assign p = site.docs | where: "url", item.link | first %}
|
||||
<li {%- if page.url == p.url %} class="current" {%- endif -%}><a href="{{ p.url | relative_url }}">
|
||||
{{- p.menu_name | default: p.title -}}
|
||||
</a></li>
|
||||
{%- endfor %}
|
||||
{%- for item in section.docs -%}
|
||||
{%- assign item_page = site.docs | where: "url", item.link | first -%}
|
||||
{%- capture item_html -%}
|
||||
<a href="{{ item_page.url | relative_url }}">
|
||||
{{ item_page.menu_name | default: item_page.title }}
|
||||
</a>
|
||||
{% endcapture %}
|
||||
<li{% unless item_page.url != page.url %} class="current"{% endunless %}>{{ item_html }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor -%}
|
||||
</aside>
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
{% for section in site.data.docs_nav %}
|
||||
<optgroup label="{{ section.title }}">
|
||||
{%- for item in section.docs -%}
|
||||
{% assign page = site.docs | where: "url", item.link | first %}
|
||||
<option value="{{ page.url | relative_url }}">
|
||||
{{- page.menu_name | default: page.title -}}
|
||||
{% assign item_page = site.docs | where: "url", item.link | first %}
|
||||
<option value="{{ item_page.url | relative_url }}">
|
||||
{{- item_page.menu_name | default: item_page.title -}}
|
||||
</option>
|
||||
{%- endfor %}
|
||||
</optgroup>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,23 +1,18 @@
|
||||
<footer>
|
||||
<div class="grid">
|
||||
<div class="unit one-third center-on-mobiles">
|
||||
<div class="unit two-thirds center-on-mobiles">
|
||||
<p>Jekyll is lovingly maintained by the <a href="{{ '/team/' | relative_url }}">core team</a> of volunteers. </p>
|
||||
<p>The contents of this website are <br />© {{ site.time | date: '%Y' }} under the terms of the <a href="{{ site.repository }}/blob/master/LICENSE">MIT License</a>.</p>
|
||||
<p>The contents of this website are <br />© {{ site.time | date: '%Y' }} under the terms of the <a href="{{ site.repository }}/blob/master/LICENSE">MIT License</a>.</p>
|
||||
</div>
|
||||
<div class="unit two-thirds align-right center-on-mobiles">
|
||||
<div class="unit one-third align-right center-on-mobiles">
|
||||
<p>
|
||||
Proudly hosted by
|
||||
<a href="https://github.com">
|
||||
<img src="{{ 'img/footer-logo.png' | relative_url }}" width="100" height="30" alt="GitHub • Social coding">
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="unit two-thirds align-right center-on-mobiles">
|
||||
<p>
|
||||
Jekyll is funded thanks to its
|
||||
<a href="https://github.com/jekyll/jekyll#sponsors">
|
||||
sponsors!
|
||||
</a>
|
||||
Jekyll is funded thanks to its <a href="https://github.com/jekyll/jekyll#sponsors">sponsors!</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
5
docs/_includes/improve_doc_link.html
Normal file
5
docs/_includes/improve_doc_link.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="improve right hide-on-mobiles">
|
||||
<a data-proofer-ignore href="{{ site.repository }}/edit/{{ site.site_branch }}/docs/{{ page.path }}">
|
||||
<i class="fa fa-pencil"></i> Improve this page
|
||||
</a>
|
||||
</div>
|
||||
@@ -1,10 +1,10 @@
|
||||
<div class="unit one-fifth hide-on-mobiles">
|
||||
<aside>
|
||||
<ul>
|
||||
<li {%- if page.title == 'News' %} class="current" {%- endif %}>
|
||||
<li {% if page.title == 'News' %} class="current" {% endif %}>
|
||||
<a href="{{ '/news/' | relative_url }}">All News</a>
|
||||
</li>
|
||||
<li {%- if page.title == 'Releases' %} class="current" {%- endif %}>
|
||||
<li {% if page.title == 'Releases' %} class="current" {% endif %}>
|
||||
<a href="{{ '/news/releases/' | relative_url }}">Jekyll Releases</a>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -23,7 +23,7 @@
|
||||
<ul>
|
||||
{% for post in site.posts -%}
|
||||
{% unless post.categories contains 'release' -%}
|
||||
<li {%- if page.title == post.title %} class="current" {%- endif %}>
|
||||
<li {% if page.title == post.title %} class="current" {% endif %}>
|
||||
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||
</li>
|
||||
{% endunless -%}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js" defer></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
|
||||
<script> docsearch({
|
||||
apiKey: '50fe39c839958dfad797000f33e2ec17',
|
||||
indexName: 'jekyllrb',
|
||||
inputSelector: '#docsearch-input',
|
||||
enhancedSearchInput: true,
|
||||
debug: false
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -7,10 +7,7 @@ layout: default
|
||||
{% include docs_contents_mobile.html -%}
|
||||
<div class="unit four-fifths">
|
||||
<article>
|
||||
<div class="improve right hide-on-mobiles">
|
||||
<a data-proofer-ignore href="https://github.com/jekyll/jekyll/edit/master/docs/{{ page.path }}"><i
|
||||
class="fa fa-pencil"></i> Improve this page</a>
|
||||
</div>
|
||||
{% include improve_doc_link.html %}
|
||||
<h1>{{ page.title }}</h1>
|
||||
{{ content }}
|
||||
</article>
|
||||
|
||||
@@ -7,9 +7,7 @@ layout: default
|
||||
<div class="unit whole">
|
||||
<article>
|
||||
{%- if page.permalink contains "resources" %}
|
||||
<div class="improve right hide-on-mobiles">
|
||||
<a data-proofer-ignore href="https://github.com/jekyll/jekyll/edit/master/docs/{{ page.path }}"><i class="fa fa-pencil"></i> Improve this page</a>
|
||||
</div>
|
||||
{% include improve_doc_link.html %}
|
||||
{% endif -%}
|
||||
<h1>{{ page.title }}</h1>
|
||||
{{ content }}
|
||||
|
||||
@@ -6,9 +6,7 @@ layout: default
|
||||
{% include docs_contents_mobile.html -%}
|
||||
<div class="unit four-fifths">
|
||||
<article>
|
||||
<div class="improve right hide-on-mobiles">
|
||||
<a data-proofer-ignore href="https://github.com/jekyll/jekyll/edit/master/docs/{{ page.path }}"><i class="fa fa-pencil"></i> Improve this page</a>
|
||||
</div>
|
||||
{% include improve_doc_link.html %}
|
||||
<h1>Step by Step Tutorial</h1>
|
||||
<h2>{{ page.position }}. {{ page.title }}</h2>
|
||||
{{ content }}
|
||||
|
||||
@@ -8,10 +8,7 @@ layout: default
|
||||
<div class="unit four-fifths">
|
||||
<article>
|
||||
<header class="tutorial-header">
|
||||
<div class="improve right hide-on-mobiles">
|
||||
<a href="https://github.com/jekyll/jekyll/edit/master/docs/{{ page.path }}"><i
|
||||
class="fa fa-pencil"></i> Improve this page</a>
|
||||
</div>
|
||||
{% include improve_doc_link.html %}
|
||||
<h1 class="tutorial-title">{{ page.title }}</h1>
|
||||
{% assign author = page.author %}
|
||||
{% if author %}
|
||||
|
||||
16
docs/_posts/2024-06-23-jekyll-3-10-0-released.markdown
Normal file
16
docs/_posts/2024-06-23-jekyll-3-10-0-released.markdown
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: 'Jekyll 3.10.0 Released'
|
||||
date: 2024-06-23 21:56:58 -0700
|
||||
author: parkr
|
||||
version: 3.10.0
|
||||
categories: [release]
|
||||
---
|
||||
|
||||
As Ruby continues to march on, the maintainers have made the decision to
|
||||
drop some previously-bundled gems. This release makes Jekyll depend
|
||||
directly on those gems so that whether your Ruby installation has them
|
||||
bundled or not, your experience can continue uninterrupted.
|
||||
|
||||
More details [are in the changelog]({% link _docs/history.md %}#v3-10-0).
|
||||
|
||||
Happy Jekylling!
|
||||
18
docs/_posts/2024-09-16-jekyll-4-3-4-released.markdown
Normal file
18
docs/_posts/2024-09-16-jekyll-4-3-4-released.markdown
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: 'Jekyll 4.3.4 Released'
|
||||
date: 2024-09-16 21:34:22 +0530
|
||||
author: ashmaroli
|
||||
version: 4.3.4
|
||||
category: release
|
||||
---
|
||||
|
||||
Hello Jekyllers!
|
||||
|
||||
Publishing a small bug-fix release with the following patches:
|
||||
|
||||
* Relax version-constraint on gem `wdm` in Gemfile created by `jekyll new`.
|
||||
* Patch `Jekyll::Drops::ThemeDrop#root` to render absolute path to theme-gem only if `JEKYLL_ENV` is explicitly set
|
||||
to string `development`.
|
||||
|
||||
That is all for now.
|
||||
Happy Jekyllin'!!
|
||||
39
docs/_posts/2025-01-27-jekyll-4-4-0-released.markdown
Normal file
39
docs/_posts/2025-01-27-jekyll-4-4-0-released.markdown
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: 'Jekyll 4.4.0 Released'
|
||||
date: 2025-01-27 20:45:32 +0530
|
||||
author: ashmaroli
|
||||
version: 4.4.0
|
||||
category: release
|
||||
---
|
||||
|
||||
Greetings Jekyllers, Jekyll v4.4.0 has been published!
|
||||
|
||||
This release comes with the following notable changes since v4.3.x:
|
||||
|
||||
* Liquid tag `highlight` now allows marking specific lines in the code-block.
|
||||
* Allow customizing the port that the vendored livereload script listens to, either via command-line flag
|
||||
`--livereload-port NUM` or via setting desired value to key `livereload_port` in configuration file.
|
||||
* Acknowledge paths passed to CLI flag `--livereload-ignore` or list of paths defined under configuration key
|
||||
`livereload_ignore` in order prevent automatic browser-refreshes on change to those paths.
|
||||
* Support for Ruby versions older than Ruby 2.7.0 has been dropped. Regardless, we recommend using Ruby 3.2.0 or newer
|
||||
to reduce inconveniences with installing newer versions of various plugins for Jekyll.
|
||||
* In order to improve the out-of-the-box experience with newer versions of Ruby, we have added gems `base64`, `csv` as
|
||||
runtime-dependencies. Consequently, those gems will be automatically installed with Jekyll and made available for use
|
||||
on issuing `bundle exec jekyll <command>`. *Users on older versions of Jekyll will have to manually add the gems to
|
||||
their Gemfile to resolve dependency errors*.
|
||||
* Gem `json` has been added as a runtime-dependency as well to provide consistent behavior across different platforms and
|
||||
different Ruby versions.
|
||||
* Version constraint on `mercenary` gem has been relaxed to automatically allow future releases.
|
||||
|
||||
Special thanks to my co-maintainers and members from our community who were instrumental in improving Jekyll codebase,
|
||||
documentation and development workflow since the release of v4.3:
|
||||
|
||||
Akira Taguchi, Andy Coates, Daniel Haim, David Silveira, Gabriel B. Nunes, Gaelan Lloyd, Gourav Khunger, IFcoltransG,
|
||||
James Hoctor, Joe Mahoney, Joel Coffman, Jonas Jared Jacek, Jorge, Josh Soref, José Romero, Juan Vásquez, KenHV, Khalila,
|
||||
Koichi ITO, Krisztian Zsolt Sallai, Maciek Palmowski, Mamoru TASAKA, Matt Rogers, Michael Nordmeyer, Mike Slinn,
|
||||
Moncef Belyamani, Muhab Abdelreheem, Olle Jonsson, Olly Headey, Otto Liljalaakso, Parker Moore, QuinnG8, Ram Vasuthevan,
|
||||
Robert Austin, Robert Love, Sean M. Collins, Seth Falco, Seth Louis, Shruti Dalvi, Silent, Simon Wagar, Sutou Kouhei,
|
||||
Tomáš Hübelbauer, Valeriy Van, Virgil Ierubino, Vít Ondruch, William Entriken, William Underwood, a story, halorrr,
|
||||
iulianOnofrei (U-lee-aan), masaki, naoki kodama, nisbet-hubbard, plgagne, velle, waqarnazir, なつき and 林博仁 Buo-ren Lin
|
||||
|
||||
Happy Jekyllin'!!
|
||||
10
docs/_posts/2025-01-29-jekyll-4-4-1-released.markdown
Normal file
10
docs/_posts/2025-01-29-jekyll-4-4-1-released.markdown
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: 'Jekyll 4.4.1 Released'
|
||||
date: 2025-01-29 18:15:32 +0530
|
||||
author: ashmaroli
|
||||
version: 4.4.1
|
||||
category: release
|
||||
---
|
||||
|
||||
Publishing a patch release to restore existing behavior around defining front matter defaults
|
||||
where a scope with path containing glob patterns are lax in matching paths on disk.
|
||||
@@ -212,40 +212,38 @@ h6:hover .header-link {
|
||||
/* Footer */
|
||||
|
||||
footer {
|
||||
background-color: #212121;
|
||||
font-size: 16px;
|
||||
padding-bottom: 5px;
|
||||
color: #c0c0c0;
|
||||
margin-top: 40px;
|
||||
padding-bottom: 5px;
|
||||
font-size: 15px;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
background-color: #212121;
|
||||
|
||||
a {
|
||||
color: #fff;
|
||||
color: #dddddd;
|
||||
|
||||
&:hover {
|
||||
|
||||
img { opacity: 1; }
|
||||
}
|
||||
}
|
||||
|
||||
.align-right {
|
||||
|
||||
p { display: inline-block; }
|
||||
}
|
||||
p { margin-block: 12px }
|
||||
|
||||
img {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-left: 5px;
|
||||
opacity: .8;
|
||||
width: 84px;
|
||||
height: auto;
|
||||
margin-left: 2px;
|
||||
padding: 1px;
|
||||
@include transition(opacity .2s);
|
||||
vertical-align: bottom;
|
||||
opacity: 0.5;
|
||||
@include transition(opacity 0.2s);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 568px) {
|
||||
footer {
|
||||
.one-third p { margin-bottom: 0; }
|
||||
.two-thirds p { margin-top: -20px; }
|
||||
p { margin-block: 6px }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
4.3.3
|
||||
4.4.1
|
||||
|
||||
@@ -44,6 +44,7 @@ Use a SaaS service as a backend for functionality on your Jekyll site
|
||||
- [Contentful](https://github.com/contentful/jekyll-contentful-data-import): Content infrastructure for digital teams
|
||||
- [TinaCMS.io](https://tina.io/): Tina is an open-source, Git-backed headless content management system (CMS) that empowers both developers and content creators to collaborate seamlessly on a single platform
|
||||
- [Decap CMS](https://decapcms.org/): Decap CMS (formerly Netlify CMS) is an open source content management system for your Git workflow that enables you to provide editors with a friendly UI and intuitive workflows
|
||||
- [GitCMS](https://gitcms.dev/): Built for markdown-first content sites with a friendly Notion-like interface, a structured editorial publishing workflow, and MCP support which turns ChatGPT/Claude into content agent.
|
||||
- [Siteleaf](https://www.siteleaf.com/): Built for developers, Loved by everyone
|
||||
- [Kentico Kontent](https://rubygems.org/gems/kontent-jekyll/): A headless CMS with full control over content presentation
|
||||
|
||||
@@ -62,6 +63,7 @@ Use a SaaS service as a backend for functionality on your Jekyll site
|
||||
- [Formspark](https://formspark.io/)
|
||||
- [Formspree (open source)](https://formspree.io/)
|
||||
- [formX](https://formx.stream)
|
||||
- [Form.taxi](https://form.taxi/en/backend)
|
||||
- [Simple Form](https://getsimpleform.com/)
|
||||
- [SmartForms](https://smartforms.dev/)
|
||||
- [Typeform](https://www.typeform.com/templates/c/forms/)
|
||||
|
||||
@@ -26,7 +26,10 @@ patch security vulnerabilities reported to them._
|
||||
_Emeritus Core Team Members were once members of Jekyll's Core Team._
|
||||
|
||||
* Alfred (@alfredxing)
|
||||
* Ben (@benbalter)
|
||||
* Frank (@DirtyF)
|
||||
* Nick (@qrush)
|
||||
* Olivia
|
||||
* Parker (@parkr)
|
||||
* Pat (@pathawks)
|
||||
* Tom (@mojombo)
|
||||
|
||||
@@ -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" 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
|
||||
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
|
||||
|
||||
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" 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
|
||||
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
|
||||
|
||||
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" 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
|
||||
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
|
||||
|
||||
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" unless Windows
|
||||
And I should see "2. of 9: <p>Page without title.</p>" in "_site/index.html" if on Windows
|
||||
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
|
||||
|
||||
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" 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
|
||||
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
|
||||
|
||||
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: ', ' }}"
|
||||
|
||||
@@ -58,3 +58,22 @@ Feature: include_relative Tag
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see "Welcome back Dear Reader!" in "_site/index.html"
|
||||
|
||||
Scenario: Include multiple files relative to a page at root
|
||||
Given I have an "apple.md" page with foo "bar" that contains "{{ page.path }}, {{ page.foo }}"
|
||||
And I have an "banana.md" page with content:
|
||||
"""
|
||||
{% include_relative apple.md %}
|
||||
{% include_relative cherry.md %}
|
||||
|
||||
{{ page.path }}
|
||||
"""
|
||||
And I have an "cherry.md" page with foo "lipsum" that contains "{{ page.path }}, {{ page.foo }}"
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see "<p>apple.md, bar</p>" in "_site/apple.html"
|
||||
And I should see "<hr />\n<p>foo: bar" in "_site/banana.html"
|
||||
And I should see "<hr />\n<p>foo: lipsum" in "_site/banana.html"
|
||||
And I should see "<p>cherry.md, lipsum</p>" in "_site/cherry.html"
|
||||
But I should not see "foo: lipsum" in "_site/cherry.html"
|
||||
|
||||
@@ -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\" 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>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>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"
|
||||
|
||||
@@ -157,3 +157,37 @@ Feature: PostUrl Tag
|
||||
But the _site directory should exist
|
||||
And I should see "<p><a href=\"/cats%20and%20dogs/2019/02/04/hello-world.html\">Post 1</a></p>" in "_site/index.html"
|
||||
And I should see "<p><a href=\"/2019/02/05/hello-again.html\">Post 2</a></p>" in "_site/index.html"
|
||||
|
||||
Scenario: Calling for a post via a liquid variable
|
||||
Given I have a _posts directory
|
||||
And I have the following post:
|
||||
| title | date | content |
|
||||
| Hello World | 2019-02-04 | Lorem ipsum dolor |
|
||||
And I have an "index.md" page with content:
|
||||
"""
|
||||
{% assign value='2019-02-04-hello-world' %}
|
||||
[Welcome]({% post_url {{ value }} %})
|
||||
"""
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see "<p><a href=\"/2019/02/04/hello-world.html\">Welcome</a></p>" in "_site/index.html"
|
||||
|
||||
Scenario: Calling for posts via a liquid variable in a for tag
|
||||
Given I have a _posts directory
|
||||
And I have the following post:
|
||||
| title | date | content |
|
||||
| Hello World | 2019-02-04 | Lorem ipsum dolor |
|
||||
| We Meet Again | 2019-02-05 | Alpha beta gamma |
|
||||
And I have an "index.md" page with content:
|
||||
"""
|
||||
{% assign posts = '2019-02-04-hello-world;2019-02-05-we-meet-again' | split: ';' %}
|
||||
{%- for slug in posts -%}
|
||||
[{{ slug }}]({% post_url {{ slug }} %})
|
||||
{%- endfor %}
|
||||
"""
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see "<a href=\"/2019/02/04/hello-world.html\">2019-02-04-hello-world</a>" in "_site/index.html"
|
||||
And I should see "<a href=\"/2019/02/05/we-meet-again.html\">2019-02-05-we-meet-again</a>" in "_site/index.html"
|
||||
|
||||
@@ -287,28 +287,28 @@ end
|
||||
|
||||
#
|
||||
|
||||
Then(%r!^I should (not )?see "(.*)" in "(.*)" if on Windows$!) do |negative, text, file|
|
||||
Then(%r!^I should (not )?see "(.*)" in "(.*)" if platform does not support symlinks$!) do |negative, text, file|
|
||||
step %(the "#{file}" file should exist)
|
||||
regexp = Regexp.new(text, Regexp::MULTILINE)
|
||||
if negative.nil? || negative.empty?
|
||||
if Jekyll::Utils::Platforms.really_windows?
|
||||
expect(file_contents(file)).to match regexp
|
||||
else
|
||||
if Platform.supports_symlink?
|
||||
expect(file_contents(file)).not_to match regexp
|
||||
else
|
||||
expect(file_contents(file)).to match regexp
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
Then(%r!^I should (not )?see "(.*)" in "(.*)" unless Windows$!) do |negative, text, file|
|
||||
Then(%r!^I should (not )?see "(.*)" in "(.*)" if platform supports symlinks$!) do |negative, text, file|
|
||||
step %(the "#{file}" file should exist)
|
||||
regexp = Regexp.new(text, Regexp::MULTILINE)
|
||||
if negative.nil? || negative.empty?
|
||||
if Jekyll::Utils::Platforms.really_windows?
|
||||
expect(file_contents(file)).not_to match regexp
|
||||
else
|
||||
if Platform.supports_symlink?
|
||||
expect(file_contents(file)).to match regexp
|
||||
else
|
||||
expect(file_contents(file)).not_to match regexp
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -363,7 +363,21 @@ end
|
||||
#
|
||||
|
||||
Then(%r!^I should see today's time in "(.*)"$!) do |file|
|
||||
step %(I should see "#{seconds_agnostic_time(Time.now)}" in "#{file}")
|
||||
seconds = 3
|
||||
build_time = Time.now
|
||||
content = file_contents(file)
|
||||
date_time_pattern = /(\d{4}-\d{2}-\d{2}\s\d+:\d{2}:\d{2})/
|
||||
match_data = content.match(date_time_pattern)
|
||||
expect(match_data).not_to be_nil, "No date-time pattern found in #{file}"
|
||||
date_time_str = match_data.captures
|
||||
file_time = Time.parse("#{date_time_str}")
|
||||
time_difference = (build_time - file_time).abs
|
||||
expect(time_difference).to be <= seconds, <<~MSG
|
||||
Expected time in #{file} to be within #{seconds} seconds of build time.
|
||||
Build time: #{build_time}
|
||||
File time: #{file_time}
|
||||
Difference: #{time_difference} seconds
|
||||
MSG
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
@@ -1,222 +1,80 @@
|
||||
# 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
|
||||
|
||||
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
|
||||
def initialize(path_or_io, error_stream)
|
||||
@io = ensure_io(path_or_io, error_stream)
|
||||
@timings = {}
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def before_features(_features)
|
||||
print_profile_information
|
||||
def before_test_case(test_case)
|
||||
@timings[timing_key(test_case)] = Time.now
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def after_features(features)
|
||||
@io.puts
|
||||
print_worst_offenders
|
||||
print_summary(features)
|
||||
def after_test_case(test_case)
|
||||
@timings[timing_key(test_case)] = Time.now - @timings[timing_key(test_case)]
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
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)
|
||||
def print_test_case_info(test_case)
|
||||
@io.print "\n#{test_case.location} #{truncate(test_case.name).inspect} "
|
||||
@io.flush
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def after_test_step(test_step, result)
|
||||
collect_snippet_data(
|
||||
test_step, result
|
||||
)
|
||||
def print_test_case_duration(test_case)
|
||||
@io.print format(" (%.3fs)", @timings[timing_key(test_case)])
|
||||
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
|
||||
@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
|
||||
@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) }
|
||||
end
|
||||
|
||||
#
|
||||
private
|
||||
|
||||
def print_summary(features)
|
||||
@io.puts
|
||||
print_stats(features, @options)
|
||||
print_snippets(@options)
|
||||
print_passing_wip(@options)
|
||||
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
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
AfterConfiguration do |config|
|
||||
f = Jekyll::Cucumber::Formatter.new(nil, $stdout, {})
|
||||
InstallPlugin do |config|
|
||||
progress_fmt = config.to_hash[:formats][0][0] == "progress"
|
||||
f = Jekyll::Cucumber::Formatter.new($stdout, $stderr)
|
||||
|
||||
config.on_event :test_case_started do |event|
|
||||
f.print_feature_element_name(event.test_case)
|
||||
f.before_feature_element(event.test_case)
|
||||
test_case = event.test_case
|
||||
|
||||
f.print_test_case_info(test_case) if progress_fmt
|
||||
f.before_test_case(test_case)
|
||||
end
|
||||
|
||||
config.on_event :test_case_finished do |event|
|
||||
f.after_feature_element(event.test_case)
|
||||
test_case = event.test_case
|
||||
|
||||
f.after_test_case(test_case)
|
||||
f.print_test_case_duration(test_case) if progress_fmt
|
||||
end
|
||||
|
||||
config.on_event :test_run_finished do
|
||||
|
||||
@@ -18,6 +18,13 @@ 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)
|
||||
@@ -138,25 +145,6 @@ end
|
||||
|
||||
#
|
||||
|
||||
def seconds_agnostic_datetime(datetime = Time.now)
|
||||
date, time, zone = datetime.to_s.split(" ")
|
||||
time = seconds_agnostic_time(time)
|
||||
|
||||
[
|
||||
Regexp.escape(date),
|
||||
"#{time}:\\d{2}",
|
||||
Regexp.escape(zone),
|
||||
].join("\\ ")
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def seconds_agnostic_time(time)
|
||||
time = time.strftime("%H:%M:%S") if time.is_a?(Time)
|
||||
hour, minutes, = time.split(":")
|
||||
"#{hour}:#{minutes}"
|
||||
end
|
||||
|
||||
# Helper method for Windows
|
||||
def dst_active?
|
||||
config = Jekyll.configuration("quiet" => true)
|
||||
|
||||
@@ -32,18 +32,20 @@ Gem::Specification.new do |s|
|
||||
s.required_ruby_version = ">= 2.7.0"
|
||||
s.required_rubygems_version = ">= 2.7.0"
|
||||
|
||||
s.add_dependency("csv", "~> 3.0")
|
||||
|
||||
s.add_runtime_dependency("addressable", "~> 2.4")
|
||||
s.add_runtime_dependency("base64", "~> 0.2")
|
||||
s.add_runtime_dependency("colorator", "~> 1.0")
|
||||
s.add_runtime_dependency("csv", "~> 3.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-watch", "~> 2.0")
|
||||
s.add_runtime_dependency("json", "~> 2.6")
|
||||
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("mercenary", ">= 0.3.6", "< 0.5")
|
||||
s.add_runtime_dependency("logger", "~> 1.3")
|
||||
s.add_runtime_dependency("mercenary", "~> 0.3", ">= 0.3.6")
|
||||
s.add_runtime_dependency("pathutil", "~> 0.9")
|
||||
s.add_runtime_dependency("rouge", ">= 3.0", "< 5.0")
|
||||
s.add_runtime_dependency("safe_yaml", "~> 1.0")
|
||||
|
||||
@@ -97,7 +97,7 @@ module Jekyll
|
||||
end
|
||||
|
||||
# Performance-booster for watching directories on Windows
|
||||
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||
gem "wdm", "~> 0.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.
|
||||
|
||||
@@ -28,7 +28,7 @@ module Jekyll
|
||||
"the server is started.",],
|
||||
"livereload" => ["-l", "--livereload",
|
||||
"Use LiveReload to automatically refresh browsers",],
|
||||
"livereload_ignore" => ["--livereload-ignore ignore GLOB1[,GLOB2[,...]]",
|
||||
"livereload_ignore" => ["--livereload-ignore GLOB1[,GLOB2[,...]]",
|
||||
Array,
|
||||
"Files for LiveReload to ignore. " \
|
||||
"Remember to quote the values so your shell " \
|
||||
@@ -71,7 +71,6 @@ module Jekyll
|
||||
end
|
||||
|
||||
cmd.action do |_, opts|
|
||||
opts["livereload_port"] ||= LIVERELOAD_PORT
|
||||
opts["serving"] = true
|
||||
opts["watch"] = true unless opts.key?("watch")
|
||||
|
||||
@@ -94,6 +93,7 @@ module Jekyll
|
||||
opts = configuration_from_options(opts)
|
||||
destination = opts["destination"]
|
||||
if opts["livereload"]
|
||||
opts["livereload_port"] ||= LIVERELOAD_PORT
|
||||
validate_options(opts)
|
||||
register_reload_hooks(opts)
|
||||
end
|
||||
@@ -138,7 +138,6 @@ module Jekyll
|
||||
end
|
||||
end
|
||||
|
||||
# rubocop:disable Metrics/AbcSize
|
||||
def register_reload_hooks(opts)
|
||||
require_relative "serve/live_reload_reactor"
|
||||
@reload_reactor = LiveReloadReactor.new
|
||||
@@ -160,7 +159,7 @@ module Jekyll
|
||||
if @changed_pages && @reload_reactor && @reload_reactor.running?
|
||||
ignore, @changed_pages = @changed_pages.partition do |p|
|
||||
Array(opts["livereload_ignore"]).any? do |filter|
|
||||
File.fnmatch(filter, Jekyll.sanitized_path(p.relative_path))
|
||||
File.fnmatch(filter, p.relative_path)
|
||||
end
|
||||
end
|
||||
Jekyll.logger.debug "LiveReload:", "Ignoring #{ignore.map(&:relative_path)}"
|
||||
@@ -169,7 +168,6 @@ module Jekyll
|
||||
@changed_pages = nil
|
||||
end
|
||||
end
|
||||
# rubocop:enable Metrics/AbcSize
|
||||
|
||||
# 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
|
||||
@@ -245,7 +243,7 @@ module Jekyll
|
||||
def format_url(ssl_enabled, address, port, baseurl = nil)
|
||||
format("%<prefix>s://%<address>s:%<port>i%<baseurl>s",
|
||||
:prefix => ssl_enabled ? "https" : "http",
|
||||
:address => address,
|
||||
:address => address.include?(":") ? "[#{address}]" : address,
|
||||
:port => port,
|
||||
:baseurl => baseurl ? "#{baseurl}/" : "")
|
||||
end
|
||||
|
||||
@@ -55,8 +55,9 @@ module Jekyll
|
||||
EM.schedule { @started_event.set }
|
||||
EM.add_shutdown_hook { @stopped_event.set }
|
||||
|
||||
host = opts["host"].include?(":") ? "[#{opts["host"]}]" : opts["host"]
|
||||
Jekyll.logger.info "LiveReload address:",
|
||||
"http://#{opts["host"]}:#{opts["livereload_port"]}"
|
||||
"http://#{host}:#{opts["livereload_port"]}"
|
||||
end
|
||||
end
|
||||
@thread.abort_on_exception = true
|
||||
|
||||
@@ -160,9 +160,7 @@ module Jekyll
|
||||
def do_GET(req, res)
|
||||
rtn = super
|
||||
|
||||
if @jekyll_opts["livereload"]
|
||||
return rtn if SkipAnalyzer.skip_processing?(req, res, @jekyll_opts)
|
||||
|
||||
if @jekyll_opts["livereload"] && !SkipAnalyzer.skip_processing?(req, res, @jekyll_opts)
|
||||
processor = BodyProcessor.new(res.body, @jekyll_opts)
|
||||
processor.process!
|
||||
res.body = processor.new_body
|
||||
|
||||
@@ -253,7 +253,7 @@ module Jekyll
|
||||
end
|
||||
|
||||
DEFAULT_EXCLUDES = %w(
|
||||
.sass-cache .jekyll-cache
|
||||
.sass-cache .jekyll-cache .ruby-lsp
|
||||
gemfiles Gemfile Gemfile.lock
|
||||
node_modules
|
||||
vendor/bundle/ vendor/cache/ vendor/gems/ vendor/ruby/
|
||||
|
||||
@@ -3,9 +3,12 @@
|
||||
module Jekyll
|
||||
module Drops
|
||||
class ThemeDrop < Drop
|
||||
delegate_methods :root
|
||||
delegate_method_as :runtime_dependencies, :dependencies
|
||||
|
||||
def root
|
||||
@root ||= ENV["JEKYLL_ENV"] == "development" ? @obj.root : ""
|
||||
end
|
||||
|
||||
def authors
|
||||
@authors ||= gemspec.authors.join(", ")
|
||||
end
|
||||
|
||||
@@ -109,7 +109,7 @@ module Jekyll
|
||||
sanitized_path = sanitize_path(path)
|
||||
|
||||
if rel_scope_path.include?("*")
|
||||
File.fnmatch?(strip_collections_dir(rel_scope_path), sanitized_path)
|
||||
glob_scope(sanitized_path, rel_scope_path)
|
||||
else
|
||||
path_is_subpath?(sanitized_path, strip_collections_dir(rel_scope_path))
|
||||
end
|
||||
|
||||
@@ -83,7 +83,7 @@ module Jekyll
|
||||
# Returns an array of strings, each string being the name of a gem name
|
||||
# that is allowed to be used.
|
||||
def whitelist
|
||||
@whitelist ||= Array[site.config["whitelist"]].flatten
|
||||
@whitelist ||= [site.config["whitelist"]].flatten
|
||||
end
|
||||
|
||||
# Require all .rb files if safe mode is off
|
||||
|
||||
@@ -11,7 +11,10 @@ module Jekyll
|
||||
end
|
||||
|
||||
def hidden_in_the_future?(thing)
|
||||
thing.respond_to?(:date) && !@site.future && thing.date.to_i > @site.time.to_i
|
||||
thing.respond_to?(:date) &&
|
||||
!@site.future &&
|
||||
!collection_allows_future?(thing) &&
|
||||
thing.date.to_i > @site.time.to_i
|
||||
end
|
||||
|
||||
private
|
||||
@@ -19,5 +22,9 @@ module Jekyll
|
||||
def can_be_published?(thing)
|
||||
thing.data.fetch("published", true) || @site.unpublished
|
||||
end
|
||||
|
||||
def collection_allows_future?(thing)
|
||||
thing.respond_to?(:collection) && !!thing.collection.metadata["future"]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -249,6 +249,11 @@ module Jekyll
|
||||
end
|
||||
|
||||
class IncludeRelativeTag < IncludeTag
|
||||
def load_cached_partial(path, context)
|
||||
context.registers[:cached_partials] ||= {}
|
||||
context.registers[:cached_partials][path] ||= parse_partial(path, context)
|
||||
end
|
||||
|
||||
def tag_includes_dirs(context)
|
||||
Array(page_path(context)).freeze
|
||||
end
|
||||
@@ -267,6 +272,17 @@ module Jekyll
|
||||
path = File.join(site.config["collections_dir"], path) if page["collection"]
|
||||
path.delete_suffix("/#excerpt")
|
||||
end
|
||||
|
||||
# Since Jekyll 4 caches convertibles based on their path within the only instance of
|
||||
# `LiquidRenderer`, initialize a new LiquidRenderer instance on every render of this
|
||||
# tag to bypass caching rendered output of page / document.
|
||||
def parse_partial(path, context)
|
||||
LiquidRenderer.new(context.registers[:site]).file(path).parse(read_file(path, context))
|
||||
rescue Liquid::Error => e
|
||||
e.template_name = path
|
||||
e.markup_context = "included " if e.markup_context.nil?
|
||||
raise e
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,34 +3,39 @@
|
||||
module Jekyll
|
||||
module Tags
|
||||
class PostComparer
|
||||
# Deprecated (soft; No interpreter warnings).
|
||||
# To be removed in v5.0.
|
||||
# Use private constant `POST_PATH_MATCHER` instead.
|
||||
MATCHER = %r!^(.+/)*(\d+-\d+-\d+)-(.*)$!.freeze
|
||||
|
||||
POST_PATH_MATCHER = %r!\A(.+/)*?(\d{2,4}-\d{1,2}-\d{1,2})-([^/]*)\z!.freeze
|
||||
private_constant :POST_PATH_MATCHER
|
||||
|
||||
attr_reader :path, :date, :slug, :name
|
||||
|
||||
def initialize(name)
|
||||
@name = name
|
||||
|
||||
all, @path, @date, @slug = *name.sub(%r!^/!, "").match(MATCHER)
|
||||
all, @path, @date, @slug = *name.delete_prefix("/").match(POST_PATH_MATCHER)
|
||||
unless all
|
||||
raise Jekyll::Errors::InvalidPostNameError,
|
||||
"'#{name}' does not contain valid date and/or title."
|
||||
end
|
||||
|
||||
basename_pattern = "#{date}-#{Regexp.escape(slug)}\\.[^.]+"
|
||||
@name_regex = %r!^_posts/#{path}#{basename_pattern}|^#{path}_posts/?#{basename_pattern}!
|
||||
@name_regex = %r!\A_posts/#{path}#{basename_pattern}|\A#{path}_posts/?#{basename_pattern}!
|
||||
end
|
||||
|
||||
def post_date
|
||||
@post_date ||= Utils.parse_date(
|
||||
date,
|
||||
"'#{date}' does not contain valid date and/or title."
|
||||
)
|
||||
@post_date ||= Utils.parse_date(date, "Path '#{name}' does not contain valid date.")
|
||||
end
|
||||
|
||||
# Returns `MatchData` or `nil`.
|
||||
def ==(other)
|
||||
other.relative_path.match(@name_regex)
|
||||
end
|
||||
|
||||
# Deprecated. To be removed in v5.0.
|
||||
def deprecated_equality(other)
|
||||
slug == post_slug(other) &&
|
||||
post_date.year == other.date.year &&
|
||||
@@ -40,9 +45,9 @@ module Jekyll
|
||||
|
||||
private
|
||||
|
||||
# Construct the directory-aware post slug for a Jekyll::Post
|
||||
# Construct the directory-aware post slug for a Jekyll::Document object.
|
||||
#
|
||||
# other - the Jekyll::Post
|
||||
# other - the Jekyll::Document object.
|
||||
#
|
||||
# Returns the post slug with the subdirectory (relative to _posts)
|
||||
def post_slug(other)
|
||||
@@ -58,47 +63,71 @@ module Jekyll
|
||||
class PostUrl < Liquid::Tag
|
||||
include Jekyll::Filters::URLFilters
|
||||
|
||||
def initialize(tag_name, post, tokens)
|
||||
def initialize(tag_name, markup, tokens)
|
||||
super
|
||||
@orig_post = post.strip
|
||||
begin
|
||||
@post = PostComparer.new(@orig_post)
|
||||
rescue StandardError => e
|
||||
raise Jekyll::Errors::PostURLError, <<~MSG
|
||||
Could not parse name of post "#{@orig_post}" in tag 'post_url'.
|
||||
Make sure the post exists and the name is correct.
|
||||
#{e.class}: #{e.message}
|
||||
MSG
|
||||
end
|
||||
@markup = markup.strip
|
||||
@template = Liquid::Template.parse(@markup) if @markup.include?("{{")
|
||||
|
||||
# Deprecated instance_variables.
|
||||
# To be removed in Jekyll v5.0.
|
||||
@orig_post = @markup
|
||||
@post = nil
|
||||
end
|
||||
|
||||
def render(context)
|
||||
@context = context
|
||||
@resolved_markup = @template&.render(@context) || @markup
|
||||
site = context.registers[:site]
|
||||
|
||||
site.posts.docs.each do |document|
|
||||
return relative_url(document) if @post == document
|
||||
begin
|
||||
@post_comparer = PostComparer.new(@resolved_markup)
|
||||
rescue StandardError
|
||||
raise_markup_parse_error
|
||||
end
|
||||
# For backwards compatibility only; deprecated instance_variable.
|
||||
# To be removed in Jekyll v5.0.
|
||||
@post = @post_comparer
|
||||
|
||||
# First pass-through.
|
||||
site.posts.docs.each do |post|
|
||||
return relative_url(post) if @post_comparer == post
|
||||
end
|
||||
|
||||
# New matching method did not match, fall back to old method
|
||||
# with deprecation warning if this matches
|
||||
# First pass-through did not yield the requested post. Search again using legacy matching
|
||||
# method. Log deprecation warning if a post is detected via this round.
|
||||
site.posts.docs.each do |post|
|
||||
next unless @post_comparer.deprecated_equality(post)
|
||||
|
||||
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."
|
||||
)
|
||||
return relative_url(document)
|
||||
log_legacy_usage_deprecation
|
||||
return relative_url(post)
|
||||
end
|
||||
|
||||
raise_post_not_found_error
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def raise_markup_parse_error
|
||||
raise Jekyll::Errors::PostURLError, <<~MSG
|
||||
Could not find post "#{@orig_post}" in tag 'post_url'.
|
||||
Make sure the post exists and the name is correct.
|
||||
Could not parse name of post #{@resolved_markup.inspect} in tag 'post_url'.
|
||||
Make sure the correct name is given to the tag.
|
||||
MSG
|
||||
end
|
||||
|
||||
def raise_post_not_found_error
|
||||
raise Jekyll::Errors::PostURLError, <<~MSG
|
||||
Could not find post #{@resolved_markup.inspect} in tag 'post_url'.
|
||||
Make sure the post exists and the correct name is given to the tag.
|
||||
MSG
|
||||
end
|
||||
|
||||
def log_legacy_usage_deprecation
|
||||
Jekyll::Deprecator.deprecation_message(
|
||||
"A call to '{% post_url #{@resolved_markup} %}' 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."
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -144,7 +144,13 @@ module Jekyll
|
||||
# pct-encoded = "%" HEXDIG HEXDIG
|
||||
# sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
|
||||
# / "*" / "+" / "," / ";" / "="
|
||||
Addressable::URI.encode(path).encode("utf-8").sub("#", "%23")
|
||||
#
|
||||
# `Addressable::URI::CharacterClassesRegexps::PATH` is used to encode
|
||||
# non-alphanumeric characters such as "[", "]", etc.
|
||||
Addressable::URI.encode_component(
|
||||
path,
|
||||
Addressable::URI::CharacterClassesRegexps::PATH
|
||||
).encode("utf-8").sub("#", "%23")
|
||||
end
|
||||
|
||||
# Unescapes a URL path segment
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jekyll
|
||||
VERSION = "4.3.3"
|
||||
VERSION = "4.4.1"
|
||||
end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
permalink: /404.html
|
||||
layout: default
|
||||
layout: page
|
||||
---
|
||||
|
||||
<style type="text/css" media="screen">
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# Packaging tasks
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
desc "Release #{name} v#{version}"
|
||||
task :release => :build do
|
||||
current_branch = `git branch`.to_s.strip.match(%r!^\* (.+)$!)[1]
|
||||
unless current_branch == "master" || current_branch.end_with?("-stable")
|
||||
puts "You must be on the master branch to release!"
|
||||
exit!
|
||||
end
|
||||
sh "git commit --allow-empty -m 'Release :gem: #{version}'"
|
||||
sh "git tag v#{version}"
|
||||
sh "git push origin #{current_branch}"
|
||||
sh "git push origin v#{version}"
|
||||
sh "gem push pkg/#{name}-#{version}.gem"
|
||||
puts "Do not forget to build and release the docs gem as well."
|
||||
puts "https://github.com/jekyll/jekyll-docs#releasing"
|
||||
end
|
||||
|
||||
desc "Build #{name} v#{version} into pkg/"
|
||||
task :build do
|
||||
mkdir_p "pkg"
|
||||
sh "gem build #{gemspec_file}"
|
||||
sh "mv #{gem_file} pkg"
|
||||
end
|
||||
21
rake/rubocop.rake
Normal file
21
rake/rubocop.rake
Normal file
@@ -0,0 +1,21 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
namespace :rubocop do
|
||||
desc "Format existing `.rubocop.yml` to improve readability"
|
||||
task :format_config do
|
||||
require_relative "./task_utils/rubocop_config_formatter"
|
||||
|
||||
config_file = File.expand_path("../.rubocop.yml", __dir__)
|
||||
if File.exist?(config_file)
|
||||
print " Configuration File: "
|
||||
puts config_file
|
||||
puts "formating...".rjust(20)
|
||||
else
|
||||
puts "#{config_file} not found! Exiting."
|
||||
exit!
|
||||
end
|
||||
|
||||
Jekyll::TaskUtils::RuboCopConfigFormatter.new(config_file).format!
|
||||
puts "done!".rjust(26)
|
||||
end
|
||||
end
|
||||
118
rake/task_utils/rubocop_config_formatter.rb
Normal file
118
rake/task_utils/rubocop_config_formatter.rb
Normal file
@@ -0,0 +1,118 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "yaml"
|
||||
|
||||
module Jekyll
|
||||
module TaskUtils
|
||||
class RuboCopConfigFormatter
|
||||
def initialize(config_file)
|
||||
@registry = Hash.new { |hsh, k| hsh[k] = [] }
|
||||
@buffer = +""
|
||||
@config = sort_hash_by_key(YAML.safe_load_file(config_file))
|
||||
@config_file = config_file
|
||||
end
|
||||
|
||||
def format!
|
||||
inject_banner
|
||||
|
||||
consume :key => "inherit_from"
|
||||
consume :key => "require"
|
||||
consume :key => "AllCops", :comment => "Directive for all cops" do |key, conf|
|
||||
format_all_cops_config(key, conf)
|
||||
end
|
||||
consume :key => "Jekyll/NoPutsAllowed", :comment => "Configure custom cop"
|
||||
|
||||
stream_builtin_cops
|
||||
File.write(@config_file, @buffer.chomp)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def inject_banner
|
||||
@buffer << <<~MSG
|
||||
# -----------------------------------------------------------------------------
|
||||
# This file has been formatted via a Rake Task configuring cops from
|
||||
# RuboCop v#{rubocop_version}.
|
||||
#
|
||||
# To add more cops, paste configurations at the end of the file and run
|
||||
# the rake task via `bundle exec rake rubocop:format_config`.
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
MSG
|
||||
end
|
||||
|
||||
def rubocop_version
|
||||
`bundle exec rubocop --version`.chomp
|
||||
end
|
||||
|
||||
def consume(key:, comment: nil)
|
||||
conf = @config.delete(key)
|
||||
@buffer << "# #{comment}\n" if comment
|
||||
|
||||
entry = block_given? ? yield(key, conf) : normalize_entry(key => conf)
|
||||
@buffer << entry
|
||||
@buffer << "\n"
|
||||
end
|
||||
|
||||
def stream_cops_banner
|
||||
@buffer << <<~MSG
|
||||
# Configure built-in cops
|
||||
# =======================
|
||||
|
||||
MSG
|
||||
end
|
||||
|
||||
def group_cops_by_department
|
||||
@config.each_with_object(@registry) do |(key, conf), registry|
|
||||
department = key.split("/", 2)[0]
|
||||
registry[department] << { key => conf }
|
||||
end
|
||||
end
|
||||
|
||||
def stream_builtin_cops
|
||||
stream_cops_banner
|
||||
group_cops_by_department
|
||||
|
||||
@registry.each do |(dept, cops)|
|
||||
@buffer << <<~MSG
|
||||
# #{dept} cops
|
||||
# #{"-" * 40}
|
||||
MSG
|
||||
|
||||
while (entry = cops.shift)
|
||||
@buffer << normalize_entry(entry)
|
||||
end
|
||||
|
||||
@buffer << "\n"
|
||||
end
|
||||
end
|
||||
|
||||
def normalize_entry(entry)
|
||||
YAML.dump(entry).delete_prefix("---\n")
|
||||
end
|
||||
|
||||
def format_all_cops_config(key, conf)
|
||||
all_cops_config = %w(TargetRubyVersion Include Exclude).each_with_object({}) do |k, res|
|
||||
res[k] = conf.delete(k)
|
||||
end
|
||||
normalize_entry(key => all_cops_config)
|
||||
end
|
||||
|
||||
def sort_hash_by_key(hsh)
|
||||
sorted = hsh.sort_by { |key, _v| key }.to_h
|
||||
sorted.each_pair.with_object({}) do |(key, value), result|
|
||||
new_val = case value
|
||||
when Array
|
||||
value.sort
|
||||
when Hash
|
||||
sort_hash_by_key(value)
|
||||
else
|
||||
value
|
||||
end
|
||||
|
||||
result[key] = new_val
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -26,8 +26,11 @@ module RuboCop
|
||||
# @alpha.omega
|
||||
# )
|
||||
#
|
||||
class AssertEqualLiteralActual < Cop
|
||||
MSG = "Provide the 'expected value' as the first argument to `assert_equal`.".freeze
|
||||
class AssertEqualLiteralActual < Base
|
||||
extend AutoCorrector
|
||||
|
||||
MSG = "Provide the 'expected value' as the first argument to `assert_equal`."
|
||||
RESTRICT_ON_SEND = %i[assert_equal].freeze
|
||||
|
||||
SIMPLE_LITERALS = %i(
|
||||
true
|
||||
@@ -61,12 +64,10 @@ module RuboCop
|
||||
|
||||
def on_send(node)
|
||||
return unless literal_actual?(node) || literal_actual_with_msg?(node)
|
||||
add_offense(node, location: :expression)
|
||||
end
|
||||
|
||||
def autocorrect(node)
|
||||
lambda do |corrector|
|
||||
corrector.replace(node.loc.expression, replacement(node))
|
||||
range = node.loc.expression
|
||||
add_offense(range) do |corrector|
|
||||
corrector.replace(range, replacement(node))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "rubocop"
|
||||
|
||||
module RuboCop
|
||||
module Cop
|
||||
module Jekyll
|
||||
class NoPAllowed < Cop
|
||||
MSG = "Avoid using `p` to print things. Use `Jekyll.logger` instead.".freeze
|
||||
class NoPAllowed < Base
|
||||
MSG = "Avoid using `p` to print things. Use `Jekyll.logger` instead."
|
||||
RESTRICT_ON_SEND = %i[p].freeze
|
||||
|
||||
def_node_search :p_called?, <<-PATTERN
|
||||
(send _ :p _)
|
||||
(send _ :p _)
|
||||
PATTERN
|
||||
|
||||
def on_send(node)
|
||||
if p_called?(node)
|
||||
add_offense(node, :location => :selector)
|
||||
add_offense(node.loc.selector)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "rubocop"
|
||||
|
||||
module RuboCop
|
||||
module Cop
|
||||
module Jekyll
|
||||
class NoPutsAllowed < Cop
|
||||
MSG = "Avoid using `puts` to print things. Use `Jekyll.logger` instead.".freeze
|
||||
class NoPutsAllowed < Base
|
||||
MSG = "Avoid using `puts` to print things. Use `Jekyll.logger` instead."
|
||||
RESTRICT_ON_SEND = %i[puts].freeze
|
||||
|
||||
def_node_search :puts_called?, <<-PATTERN
|
||||
(send nil? :puts _)
|
||||
(send nil? :puts _)
|
||||
PATTERN
|
||||
|
||||
def on_send(node)
|
||||
if puts_called?(node)
|
||||
add_offense(node, :location => :selector)
|
||||
add_offense(node.loc.selector)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
time ruby -S bundle exec cucumber \
|
||||
--format progress --publish "$@"
|
||||
--format progress --publish-quiet "$@"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
# -----------------------------------------------------------------------------
|
||||
# If you send us a ruby then we use that, if you do not then we test with
|
||||
# whatever we can detect, this way you can run both suites when you test out
|
||||
|
||||
11
script/test
11
script/test
@@ -35,16 +35,9 @@ else
|
||||
fi
|
||||
|
||||
# Tests only pass when timezone offset is zero.
|
||||
TZ=UTC
|
||||
export TZ=UTC
|
||||
|
||||
for ruby in $rubies; do
|
||||
if [[ "$ruby" == "jruby" ]]
|
||||
then
|
||||
testopts=""
|
||||
else
|
||||
testopts="--profile"
|
||||
fi
|
||||
|
||||
if [[ $# -lt 1 ]]
|
||||
then
|
||||
set -x
|
||||
@@ -53,6 +46,6 @@ for ruby in $rubies; do
|
||||
else
|
||||
set -x
|
||||
time $ruby -S bundle exec ruby -I test \
|
||||
"$@" $testops
|
||||
"$@" $testopts
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -93,6 +93,37 @@ 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
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg></svg>
|
||||
|
Before Width: | Height: | Size: 13 B |
@@ -1,3 +0,0 @@
|
||||
---
|
||||
speciality: Ruby
|
||||
---
|
||||
@@ -1 +0,0 @@
|
||||
<svg></svg>
|
||||
|
Before Width: | Height: | Size: 13 B |
@@ -1,3 +0,0 @@
|
||||
---
|
||||
speciality: JS Frameworks
|
||||
---
|
||||
@@ -121,15 +121,15 @@ class TestCollections < JekyllUnitTest
|
||||
end
|
||||
|
||||
should "create a Hash mapping label to Collection instance" do
|
||||
assert @site.collections.is_a?(Hash)
|
||||
assert_kind_of Hash, @site.collections
|
||||
refute_nil @site.collections["methods"]
|
||||
assert @site.collections["methods"].is_a? Jekyll::Collection
|
||||
assert_kind_of Jekyll::Collection, @site.collections["methods"]
|
||||
end
|
||||
|
||||
should "collects docs in an array on the Collection object" do
|
||||
assert @site.collections["methods"].docs.is_a? Array
|
||||
assert_kind_of Array, @site.collections["methods"].docs
|
||||
@site.collections["methods"].docs.each do |doc|
|
||||
assert doc.is_a? Jekyll::Document
|
||||
assert_kind_of Jekyll::Document, doc
|
||||
# rubocop:disable Style/WordArray
|
||||
assert_includes %w(
|
||||
_methods/configuration.md
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user