mirror of
https://github.com/jekyll/jekyll.git
synced 2026-04-28 03:01:03 -04:00
Compare commits
82 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33a5a803d4 | ||
|
|
fb364ba91b | ||
|
|
a6b18000b2 | ||
|
|
b52339004e | ||
|
|
935a7a99e2 | ||
|
|
abd2cd9471 | ||
|
|
595cc23067 | ||
|
|
9ff6eb78db | ||
|
|
3874e124d7 | ||
|
|
2a6efa2373 | ||
|
|
e0f339a1e5 | ||
|
|
4df3d241ab | ||
|
|
14a9c9c01a | ||
|
|
a079df52bd | ||
|
|
7a6e0f1802 | ||
|
|
da570f02d7 | ||
|
|
868d96948b | ||
|
|
a260cabb89 | ||
|
|
7979f480b3 | ||
|
|
4d439407a9 | ||
|
|
8810223544 | ||
|
|
f519371e5d | ||
|
|
e83680e487 | ||
|
|
590d0b58b9 | ||
|
|
f3fa91e7c7 | ||
|
|
6408c0f264 | ||
|
|
2b56ad4f6d | ||
|
|
9c2c01bb7a | ||
|
|
a81cd42768 | ||
|
|
b32293cf67 | ||
|
|
e27605e380 | ||
|
|
520326406c | ||
|
|
f030e55f70 | ||
|
|
6d3dc74c7d | ||
|
|
35e08eb9db | ||
|
|
03f7ddc801 | ||
|
|
3554b73b7f | ||
|
|
6903f0b0f4 | ||
|
|
bb851e235d | ||
|
|
5d5d975672 | ||
|
|
fe45439b6c | ||
|
|
823c8f94d2 | ||
|
|
2cc51e6aba | ||
|
|
160a6816af | ||
|
|
d45fb96477 | ||
|
|
daca7e53a1 | ||
|
|
e05a25a668 | ||
|
|
7a70a3ae5e | ||
|
|
1baded9acd | ||
|
|
1a3d85a8a5 | ||
|
|
b632afd2db | ||
|
|
d09c5105d7 | ||
|
|
6633fd2335 | ||
|
|
b8cf7cf96d | ||
|
|
5b64b27b2c | ||
|
|
d1e392f301 | ||
|
|
7d9b6403c0 | ||
|
|
911e249d72 | ||
|
|
d2c7c43c3f | ||
|
|
7a698d4d14 | ||
|
|
a03e972378 | ||
|
|
18e5e5223b | ||
|
|
3d23171d22 | ||
|
|
a0c6b4c595 | ||
|
|
66dd820648 | ||
|
|
25369429a7 | ||
|
|
8896e125ef | ||
|
|
4537ccac41 | ||
|
|
674bcfb37e | ||
|
|
0f5f5ba8d1 | ||
|
|
796ae15c31 | ||
|
|
d70ffd2a20 | ||
|
|
2c0e51330b | ||
|
|
ac93d22df1 | ||
|
|
124ce72be8 | ||
|
|
6077ed6a01 | ||
|
|
7c28eb5f7e | ||
|
|
c254533c3b | ||
|
|
64dbf46a3b | ||
|
|
1cde234d41 | ||
|
|
b02b070d86 | ||
|
|
3b3f845846 |
5
.github/actions/spelling/allow.txt
vendored
5
.github/actions/spelling/allow.txt
vendored
@@ -0,0 +1,5 @@
|
||||
statictastic
|
||||
Statictastic
|
||||
Linting
|
||||
hakiri
|
||||
built-ins
|
||||
|
||||
2
.github/actions/spelling/expect.txt
vendored
2
.github/actions/spelling/expect.txt
vendored
@@ -128,6 +128,7 @@ Debian
|
||||
debuggability
|
||||
defunkt
|
||||
delegators
|
||||
dependabot
|
||||
deployer
|
||||
deps
|
||||
dest
|
||||
@@ -565,6 +566,7 @@ SFTP
|
||||
shingo
|
||||
shopify
|
||||
shortlog
|
||||
shortlinks
|
||||
shoulda
|
||||
sieversii
|
||||
sigpipe
|
||||
|
||||
2
.github/first-timers-issue-template.md
vendored
2
.github/first-timers-issue-template.md
vendored
@@ -2,7 +2,7 @@
|
||||
|
||||
This issue is reserved for people who never contributed to Open Source before. We know that the process of creating a pull request is the biggest barrier for new contributors. This issue is for you 💝
|
||||
|
||||
[About First Timers Only](http://www.firsttimersonly.com/).
|
||||
[About First Timers Only](https://www.firsttimersonly.com/).
|
||||
|
||||
### 🤔 What you will need to know.
|
||||
|
||||
|
||||
13
.github/workflows/ci.yml
vendored
13
.github/workflows/ci.yml
vendored
@@ -22,13 +22,10 @@ jobs:
|
||||
ruby_version: "2.7"
|
||||
- label: Ruby 3.0
|
||||
ruby_version: "3.0"
|
||||
- label: Ruby 3.1
|
||||
ruby_version: "3.1"
|
||||
- label: JRuby 9.3.4.0
|
||||
ruby_version: "jruby-9.3.4.0"
|
||||
- label: Liquid 4
|
||||
ruby_version: 3.1
|
||||
liquid_version: "~> 4.0"
|
||||
- label: Ruby 3.1.2
|
||||
ruby_version: "3.1.2"
|
||||
- label: JRuby 9.4.0.0
|
||||
ruby_version: "jruby-9.4.0.0"
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
@@ -37,8 +34,6 @@ jobs:
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby_version }}
|
||||
bundler-cache: true
|
||||
env:
|
||||
LIQUID_VERSION: ${{ matrix.liquid_version }}
|
||||
- name: Run Minitest based tests
|
||||
run: bash script/test
|
||||
- name: Run Cucumber based tests
|
||||
|
||||
29
.github/workflows/spelling.yml
vendored
29
.github/workflows/spelling.yml
vendored
@@ -12,11 +12,28 @@ on:
|
||||
- "*-stable"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
spelling:
|
||||
name: Spell Check
|
||||
runs-on: "ubuntu-latest"
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
actions: read
|
||||
outputs:
|
||||
followup: ${{ steps.spelling.outputs.followup }}
|
||||
runs-on: ubuntu-latest
|
||||
if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'"
|
||||
concurrency:
|
||||
group: spelling-${{ github.event.pull_request.number || github.ref }}
|
||||
# note: If you use only_check_changed_files, you do not want cancel-in-progress
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
- name: Check Spellings
|
||||
uses: check-spelling/check-spelling@v0.0.19
|
||||
- name: check-spelling
|
||||
id: spelling
|
||||
uses: check-spelling/check-spelling@v0.0.20
|
||||
with:
|
||||
# This workflow runs in response to both `push` and `pull_request`, if there's an open `pull_request` in the same repository for a given branch, there's no reason to spend resources checking both the `push` and the `pull_request`, so this flag tells the action while running for the `push` to find the `pull_request` and stop working early:
|
||||
suppress_push_for_open_pull_request: 1
|
||||
# The action will manage checking out the repository itself instead of requiring the workflow to use `actions/checkout...`:
|
||||
checkout: true
|
||||
# If running without `: write`, posting a comment won't work, and for security `: write` permissions are left to a distinct (optional) job, here we skip trying to post a comment:
|
||||
post_comment: 0
|
||||
|
||||
69
.rubocop.yml
69
.rubocop.yml
@@ -25,8 +25,11 @@ AllCops:
|
||||
- vendor/**/*
|
||||
- tmp/**/*
|
||||
|
||||
Gemspec/DateAssignment:
|
||||
Gemspec/DeprecatedAttributeAssignment:
|
||||
Enabled: true
|
||||
Gemspec/RequireMFA:
|
||||
Enabled: false
|
||||
|
||||
Layout/BeginEndAlignment:
|
||||
Enabled: true
|
||||
Layout/EmptyComment:
|
||||
@@ -43,6 +46,12 @@ Layout/HashAlignment:
|
||||
EnforcedHashRocketStyle: table
|
||||
Layout/IndentationWidth:
|
||||
Severity: error
|
||||
Layout/LineContinuationLeadingSpace:
|
||||
Enabled: true
|
||||
Layout/LineContinuationSpacing:
|
||||
Enabled: true
|
||||
Layout/LineEndStringConcatenationIndentation:
|
||||
Enabled: true
|
||||
Layout/LineLength:
|
||||
Exclude:
|
||||
- !ruby/regexp /features\/.*.rb/
|
||||
@@ -66,12 +75,18 @@ Layout/SpaceInsideHashLiteralBraces:
|
||||
|
||||
Lint/AmbiguousAssignment:
|
||||
Enabled: true
|
||||
Lint/AmbiguousOperatorPrecedence:
|
||||
Enabled: true
|
||||
Lint/AmbiguousRange:
|
||||
Enabled: true
|
||||
Lint/BinaryOperatorWithIdenticalOperands:
|
||||
Enabled: true
|
||||
Lint/ConstantDefinitionInBlock:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
Lint/ConstantOverwrittenInRescue:
|
||||
Enabled: true
|
||||
Lint/DeprecatedConstants:
|
||||
Enabled: true
|
||||
Lint/DeprecatedOpenSSLConstant:
|
||||
@@ -123,6 +138,10 @@ Lint/RedundantDirGlobSort:
|
||||
Enabled: true
|
||||
Lint/RedundantSafeNavigation:
|
||||
Enabled: true
|
||||
Lint/RequireRangeParentheses:
|
||||
Enabled: true
|
||||
Lint/RequireRelativeSelfPath:
|
||||
Enabled: true
|
||||
Lint/SelfAssignment:
|
||||
Enabled: true
|
||||
Lint/StructNewOverride:
|
||||
@@ -187,6 +206,8 @@ Metrics/ParameterLists:
|
||||
Metrics/PerceivedComplexity:
|
||||
Max: 13
|
||||
|
||||
Minitest/AssertEmptyLiteral:
|
||||
Enabled: false
|
||||
Minitest/AssertInDelta:
|
||||
Enabled: true
|
||||
Minitest/AssertionInLifecycleHook:
|
||||
@@ -199,6 +220,8 @@ Minitest/AssertPathExists:
|
||||
Enabled: true
|
||||
Minitest/AssertSilent:
|
||||
Enabled: true
|
||||
Minitest/AssertWithExpectedArgument:
|
||||
Enabled: true
|
||||
Minitest/LiteralAsActualArgument:
|
||||
Enabled: true
|
||||
Minitest/TestMethodName:
|
||||
@@ -211,10 +234,10 @@ Minitest/RefuteKindOf:
|
||||
Enabled: true
|
||||
Minitest/RefutePathExists:
|
||||
Enabled: true
|
||||
Minitest/UnreachableAssertion:
|
||||
Enabled: true
|
||||
Minitest/UnspecifiedException:
|
||||
Enabled: true
|
||||
Minitest/AssertEmptyLiteral:
|
||||
Enabled: false
|
||||
|
||||
Naming/FileName:
|
||||
Enabled: false
|
||||
@@ -242,10 +265,16 @@ Performance/CollectionLiteralInLoop:
|
||||
Enabled: true
|
||||
Performance/ConstantRegexp:
|
||||
Enabled: true
|
||||
Performance/MapCompact:
|
||||
Enabled: true
|
||||
Performance/MethodObjectAsBlock:
|
||||
Enabled: true
|
||||
Performance/RedundantEqualityComparisonBlock:
|
||||
Enabled: false
|
||||
Performance/RedundantSortBlock:
|
||||
Enabled: true
|
||||
Performance/RedundantSplitRegexpArgument:
|
||||
Enabled: true
|
||||
Performance/RedundantStringChars:
|
||||
Enabled: true
|
||||
Performance/ReverseFirst:
|
||||
@@ -254,6 +283,8 @@ Performance/SortReverse:
|
||||
Enabled: false
|
||||
Performance/Squeeze:
|
||||
Enabled: true
|
||||
Performance/StringIdentifierArgument:
|
||||
Enabled: true
|
||||
Performance/StringInclude:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
@@ -261,6 +292,10 @@ Performance/StringInclude:
|
||||
Performance/Sum:
|
||||
Enabled: true
|
||||
|
||||
Security/CompoundHash:
|
||||
Enabled: true
|
||||
Security/IoMethods:
|
||||
Enabled: true
|
||||
Security/MarshalLoad:
|
||||
Exclude:
|
||||
- !ruby/regexp /test\/.*.rb$/
|
||||
@@ -303,12 +338,20 @@ Style/Documentation:
|
||||
Enabled: false
|
||||
Style/DoubleNegation:
|
||||
Enabled: false
|
||||
Style/EmptyHeredoc:
|
||||
Enabled: true
|
||||
Style/EndlessMethod:
|
||||
Enabled: true
|
||||
Style/ExplicitBlockArgument:
|
||||
Enabled: false
|
||||
Style/ExponentialNotation:
|
||||
Enabled: true
|
||||
Style/EnvHome:
|
||||
Enabled: true
|
||||
Style/FetchEnvVar:
|
||||
Enabled: false
|
||||
Style/FileRead:
|
||||
Enabled: false
|
||||
Style/FormatStringToken:
|
||||
Exclude:
|
||||
- lib/jekyll/utils/ansi.rb
|
||||
@@ -316,6 +359,8 @@ Style/FormatStringToken:
|
||||
- lib/jekyll/profiler.rb
|
||||
Style/FrozenStringLiteralComment:
|
||||
EnforcedStyle: always
|
||||
Style/FileWrite:
|
||||
Enabled: true
|
||||
Style/GlobalStdStream:
|
||||
Enabled: true
|
||||
Style/GuardClause:
|
||||
@@ -341,6 +386,12 @@ Style/IfWithBooleanLiteralBranches:
|
||||
Enabled: true
|
||||
Style/KeywordParametersOrder:
|
||||
Enabled: true
|
||||
Style/MagicCommentFormat:
|
||||
Enabled: true
|
||||
Style/MapCompactWithConditionalBlock:
|
||||
Enabled: true
|
||||
Style/MapToHash:
|
||||
Enabled: true
|
||||
Style/MixinUsage:
|
||||
Exclude:
|
||||
- test/helper.rb
|
||||
@@ -350,10 +401,14 @@ Style/MultilineTernaryOperator:
|
||||
Severity: error
|
||||
Style/NegatedIfElseCondition:
|
||||
Enabled: true
|
||||
Style/NestedFileDirname:
|
||||
Enabled: true
|
||||
Style/NilLambda:
|
||||
Enabled: true
|
||||
Style/OptionalBooleanParameter:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/log_adapter.rb
|
||||
Style/PercentLiteralDelimiters:
|
||||
PreferredDelimiters:
|
||||
"%Q": "{}"
|
||||
@@ -363,6 +418,8 @@ Style/PercentLiteralDelimiters:
|
||||
"%s": ()
|
||||
"%w": ()
|
||||
"%x": ()
|
||||
Style/QuotedSymbols:
|
||||
Enabled: true
|
||||
Style/RedundantArgument:
|
||||
Enabled: true
|
||||
Style/RedundantAssignment:
|
||||
@@ -371,12 +428,18 @@ Style/RedundantFetchBlock:
|
||||
Enabled: false
|
||||
Style/RedundantFileExtensionInRequire:
|
||||
Enabled: true
|
||||
Style/RedundantInitialize:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/plugin.rb
|
||||
Style/RedundantRegexpCharacterClass:
|
||||
Enabled: true
|
||||
Style/RedundantRegexpEscape:
|
||||
Enabled: true
|
||||
Style/RedundantSelfAssignment:
|
||||
Enabled: true
|
||||
Style/RedundantSelfAssignmentBranch:
|
||||
Enabled: true
|
||||
Style/RegexpLiteral:
|
||||
EnforcedStyle: percent_r
|
||||
Style/RescueModifier:
|
||||
|
||||
15
Gemfile
15
Gemfile
@@ -5,10 +5,6 @@ gemspec :name => "jekyll"
|
||||
|
||||
gem "rake", "~> 13.0"
|
||||
|
||||
if ENV["LIQUID_VERSION"] && ENV["LIQUID_VERSION"] != ""
|
||||
gem "liquid", ENV["LIQUID_VERSION"]
|
||||
end
|
||||
|
||||
group :development do
|
||||
gem "launchy", "~> 2.3"
|
||||
gem "pry"
|
||||
@@ -19,6 +15,7 @@ end
|
||||
#
|
||||
|
||||
group :test do
|
||||
gem "activesupport", "~> 7.0.0"
|
||||
gem "cucumber", RUBY_VERSION >= "2.5" ? "~> 5.1.2" : "~> 4.1"
|
||||
gem "httpclient"
|
||||
gem "jekyll_test_plugin"
|
||||
@@ -27,7 +24,7 @@ group :test do
|
||||
gem "nokogiri", "~> 1.7"
|
||||
gem "rspec"
|
||||
gem "rspec-mocks"
|
||||
gem "rubocop", "~> 1.26.0"
|
||||
gem "rubocop", "~> 1.37.0"
|
||||
gem "rubocop-minitest"
|
||||
gem "rubocop-performance"
|
||||
gem "rubocop-rake"
|
||||
@@ -79,7 +76,13 @@ group :jekyll_optional_dependencies do
|
||||
gem "kramdown-syntax-coderay"
|
||||
gem "matrix"
|
||||
gem "mime-types", "~> 3.0"
|
||||
gem "rdoc", "~> 6.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
|
||||
|
||||
165
History.markdown
165
History.markdown
@@ -1,6 +1,105 @@
|
||||
## HEAD
|
||||
## 4.3.3 / 2023-12-27
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Backport #9392 for v4.3.x: Fix backward compatibility issues in the Logger (#9510)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Backport #9237 for v4.3.x: Use Hash explicitly for Struct initializer (#9285)
|
||||
|
||||
## 4.3.2 / 2023-01-20
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Backport #9257 for v4.3.x: Rename sass partial created for new blank site (#9262)
|
||||
* Backport #9187 for v4.3.x: Optimize `Site#each_site_file` (#9256)
|
||||
* Backport #9186 for v4.3.x: Remove totals in profile table properly (#9255)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Backport #9223 for 4.3.x: Update sass related tests for jekyll-sass-converter 3.x (#9254)
|
||||
|
||||
## 4.3.1 / 2022-10-26
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Respect user-defined name attribute in documents (#9167)
|
||||
* Revert "Incrementally rebuild when a data file is changed" (#9170)
|
||||
|
||||
### Documentation
|
||||
|
||||
* Release post for v4.3.1 (#9171)
|
||||
|
||||
## 4.3.0 / 2022-10-20
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Add webrick as a dependency (#8524)
|
||||
* Regenerate supported mime types (#8542)
|
||||
* Update include tag to be more permissive (#8618)
|
||||
* Optimize `Jekyll::Utils.parse_date` (#8425)
|
||||
* Update rubocop from 1.12 to 1.18 and min ruby from 2.4 to 2.5 (#8741)
|
||||
* Always hide cache-dir contents from Git (#8798)
|
||||
* Remove the warning about auto-regeneration on Windows (#8821)
|
||||
* Propagate _data folder from theme (#8815)
|
||||
* Support both tzinfo v1 and v2 along with non-half hour offsets. (#8880)
|
||||
* Run vendor-mimes to update mime.types (#8940)
|
||||
* Expose collection static files via `site.static_files` (#8961)
|
||||
* Expose `basename` from `document.rb` as `name` to Liquid templates (#8761)
|
||||
* Allow Configurable Converters on CSV (#8858)
|
||||
* Introduce `theme` drop to expose theme-gem details (#9129)
|
||||
* Relax version constraint to allow Rouge 4.x (#9134)
|
||||
* Incrementally rebuild when a data file is changed (#8771)
|
||||
* Support jekyll-sass-converter 3.x (#9132)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fix: pin rubocop to 1.12 due to error with ruby 2.4 (#8651)
|
||||
* Load Jekyll plugins from BUNDLE_GEMFILE location (#8585)
|
||||
* fix(security): CVE-2021-28834 (#8680)
|
||||
* Inject livereload script using `location.protocol` instead of `http:` (#8718)
|
||||
* Respect collections_dir config within include tag (#8756)
|
||||
* Fix regression in Convertible module from v4.2.0 (#8786)
|
||||
* Revert #7253: "Don't reset site.url to localhost:4000 by default" (#8620)
|
||||
* Improve readability of CI logs (#8877)
|
||||
* Fix deprecation message for missing doc method (#8960)
|
||||
* Fix response header for content served via `jekyll serve` (#8965)
|
||||
* Trigger livereload in sites without pages (#8337)
|
||||
* Only enable BOM encoding option on UTF encodings (#8363)
|
||||
* Ensure theme config is a `Jekyll::Configuration` object (#8988)
|
||||
* Remove misleading totals row from `--profile` table (#9039)
|
||||
* Unlock Psych dependency (#9135)
|
||||
* Fix false positive conflicts for static files in a collection (#9141)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* style: enable new cops (#8538)
|
||||
* Allow dependabot to keep github actions up-to-date (#8540)
|
||||
* Update actions/cache requirement to v2.1.3 (#8543)
|
||||
* Pin rubocop version (#8564)
|
||||
* style: add rubocop 1.9 cops (#8567)
|
||||
* Cross Version Testing Locally and Faster CI (#8610)
|
||||
* Use official Ruby setup GH action (#8614)
|
||||
* Spell check action for markdown documentation (#8675)
|
||||
* Update expect to cover docs/_posts (#8677)
|
||||
* Bump check-spelling/check-spelling from 0.0.18 to 0.0.19 (#8740)
|
||||
* Enable Rubocop accessor grouping, fix existing offenses (#8293)
|
||||
* Tags:Highlight: Decomposed HTMLLegacy formatter (#8623)
|
||||
* Relax Rubocop Dependency (#8831)
|
||||
* Add a workflow to build gems consistently (#8830)
|
||||
* Fix random test failures in TestExcerpt #to_liquid (#8884)
|
||||
* Lock gem `psych` to `v3.x` (#8918)
|
||||
* Fix typo in Bug Report template (#8951)
|
||||
* Check symlink outside site_source without Pathutil (#9015)
|
||||
* Stop testing with Rubies older than 2.7 on non-Windows (#8955)
|
||||
* Bump actions/checkout from 2 to 3 (#8986)
|
||||
* Remove git.io shortlinks from repo (#9045)
|
||||
* Bump rubocop to 1.32 (#9093)
|
||||
* Bump RuboCop to `1.36.x` (#9125)
|
||||
* Use check-spelling/check-spelling@v0.0.20 (#9111)
|
||||
* Disable pending cops when running rubocop (#9136)
|
||||
* Relax RDoc version dependency (#9142)
|
||||
|
||||
### Documentation
|
||||
|
||||
@@ -18,7 +117,7 @@
|
||||
* docs: troubleshoot macOS with ARM64 architecture (#8560)
|
||||
* docs: add overview of .jekyll-cache dir (#8648)
|
||||
* docs: clarify where .jekyll-metadata comes from (#8646)
|
||||
* Razorops cicd added (#8656)
|
||||
* Razorops CI/CD added (#8656)
|
||||
* Specify default port and host for serve commands in docs (#8624)
|
||||
* Update third-party.md (#8652)
|
||||
* Add documentation for Sass configuration options (#8587)
|
||||
@@ -46,7 +145,7 @@
|
||||
* Add Security Policy document (#8823)
|
||||
* Manage repository meta documents consistently (#8908)
|
||||
* docs: add Layer0 deployment guide (#8915)
|
||||
* docs: Update REAMDE generated by `jekyll new-theme` (#8919)
|
||||
* docs: Update README generated by `jekyll new-theme` (#8919)
|
||||
* Update resources.md (#8925)
|
||||
* Rewrite documentation on installing plugins (#8921)
|
||||
* Improve maintainers guide on releasing a new version (#8928)
|
||||
@@ -65,59 +164,13 @@
|
||||
* Simplify macOS installation docs (#8993)
|
||||
* Improve document about Github Actions section (#8853)
|
||||
* Update permalinks.md (#9017)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Add webrick as a dependency (#8524)
|
||||
* fix: pin rubocop to 1.12 due to error with ruby 2.4 (#8651)
|
||||
* Load Jekyll plugins from BUNDLE_GEMFILE location (#8585)
|
||||
* fix(security): CVE-2021-28834 (#8680)
|
||||
* Inject livereload script using `location.protocol` instead of `http:` (#8718)
|
||||
* Respect collections_dir config within include tag (#8756)
|
||||
* Fix regression in Convertible module from v4.2.0 (#8786)
|
||||
* Revert #7253: "Don't reset site.url to localhost:4000 by default" (#8620)
|
||||
* Improve readability of CI logs (#8877)
|
||||
* Fix deprecation message for missing doc method (#8960)
|
||||
* Fix response header for content served via `jekyll serve` (#8965)
|
||||
* Trigger livereload in sites without pages (#8337)
|
||||
* Only enable BOM encoding option on UTF encodings (#8363)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* style: enable new cops (#8538)
|
||||
* Allow dependabot to keep github actions up-to-date (#8540)
|
||||
* Update actions/cache requirement to v2.1.3 (#8543)
|
||||
* Pin rubocop version (#8564)
|
||||
* style: add rubocop 1.9 cops (#8567)
|
||||
* Cross Version Testing Locally and Faster CI (#8610)
|
||||
* Use official Ruby setup GH action (#8614)
|
||||
* Spell check action for markdown documentation (#8675)
|
||||
* Update expect to cover docs/_posts (#8677)
|
||||
* Enable Rubocop accessor grouping, fix existing offenses (#8293)
|
||||
* Tags:Highlight: Decomposed HTMLLegacy formatter (#8623)
|
||||
* Relax Rubocop Dependency (#8831)
|
||||
* Add a workflow to build gems consistently (#8830)
|
||||
* Fix random test failures in TestExcerpt #to_liquid (#8884)
|
||||
* Lock gem `psych` to `v3.x` (#8918)
|
||||
* Fix typo in Bug Report template (#8951)
|
||||
* Check symlink outside site_source without Pathutil (#9015)
|
||||
* Stop testing with Rubies older than 2.7 on non-Windows (#8955)
|
||||
* Bump actions/checkout from 2 to 3 (#8986)
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Regenerate supported mime types (#8542)
|
||||
* Update include tag to be more permissive (#8618)
|
||||
* Optimize `Jekyll::Utils.parse_date` (#8425)
|
||||
* Update rubocop from 1.12 to 1.18 and min ruby from 2.4 to 2.5 (#8741)
|
||||
* Always hide cache-dir contents from Git (#8798)
|
||||
* Remove the warning about auto-regeneration on Windows (#8821)
|
||||
* Propagate _data folder from theme (#8815)
|
||||
* Support both tzinfo v1 and v2 alongwith non-half hour offsets. (#8880)
|
||||
* Run vendor-mimes to update mime.types (#8940)
|
||||
* Expose collection static files via `site.static_files` (#8961)
|
||||
* Expose `basename` from `document.rb` as `name` to Liquid templates (#8761)
|
||||
* Allow Configurable Converters on CSV (#8858)
|
||||
* Add clarity to docs on permalinks placeholders and built-ins (#8995)
|
||||
* Remove Ionic Framework site from showcase (#9057)
|
||||
* Windows: describe which option to choose (#9049)
|
||||
* Improve links (http -> https) (#9064)
|
||||
* Update ruby version for macos guide (#9086)
|
||||
* Update posts.md (#9151)
|
||||
* Release post for v4.3.0 (#9157)
|
||||
|
||||
### Site Enhancements
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ See: [https://jekyllrb.com/philosophy](https://jekyllrb.com/philosophy)
|
||||
|
||||
## Diving In
|
||||
|
||||
* [Migrate](http://import.jekyllrb.com/docs/home/) from your previous system
|
||||
* [Migrate](https://import.jekyllrb.com/docs/home/) from your previous system
|
||||
* Learn how [Front Matter](https://jekyllrb.com/docs/front-matter/) works
|
||||
* Put information on your site with [Variables](https://jekyllrb.com/docs/variables/)
|
||||
* Customize the [Permalinks](https://jekyllrb.com/docs/permalinks/) your posts are generated with
|
||||
|
||||
16
appveyor.yml
16
appveyor.yml
@@ -1,5 +1,7 @@
|
||||
version: "{build}"
|
||||
|
||||
image: Visual Studio 2019
|
||||
|
||||
clone_depth: 5
|
||||
|
||||
branches:
|
||||
@@ -13,22 +15,22 @@ build: off
|
||||
environment:
|
||||
BUNDLE_WITHOUT: "benchmark:development"
|
||||
matrix:
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TZINFO_VERSION: "~> 1.2"
|
||||
TEST_SUITE: "test"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TZINFO_VERSION: "~> 2.0"
|
||||
TEST_SUITE: "test"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TEST_SUITE: "default-site"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TEST_SUITE: "profile-docs"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TEST_SUITE: "memprof"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TZINFO_VERSION: "~> 1.2"
|
||||
TEST_SUITE: "cucumber"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
- RUBY_FOLDER_VER: "27"
|
||||
TZINFO_VERSION: "~> 2.0"
|
||||
TEST_SUITE: "cucumber"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
version: 4.2.2
|
||||
version: 4.3.1
|
||||
name: Jekyll • Simple, blog-aware, static sites
|
||||
description: Transform your plain text into static websites and blogs
|
||||
url: https://jekyllrb.com
|
||||
|
||||
@@ -16,6 +16,10 @@ global:
|
||||
description: >-
|
||||
Layout specific information + the <a href="/docs/front-matter/">front matter</a>.
|
||||
Custom variables set via front matter in layouts will be available here.
|
||||
- name: theme
|
||||
description: >-
|
||||
Theme-gem specific information as defined in the theme's gemspec. Useful for rendering
|
||||
information in the theme demo's "About" page, for example. See below for details.
|
||||
- name: content
|
||||
description: >-
|
||||
In layout files, the rendered content of the Post or Page being wrapped.
|
||||
@@ -150,6 +154,20 @@ page:
|
||||
The previous post relative to the position of the current post in <code>site.posts</code>.
|
||||
Returns <code>nil</code> for the first entry.
|
||||
|
||||
theme:
|
||||
- name: theme.root
|
||||
description: Absolute path to the theme-gem.
|
||||
- name: theme.authors
|
||||
description: Comma separated string composed of the authors of the theme-gem.
|
||||
- name: theme.description
|
||||
description: Description or summary of the theme-gem as specified in the theme gemspec.
|
||||
- name: theme.version
|
||||
description: The version string of current theme.
|
||||
- name: theme.dependencies
|
||||
description: List of runtime dependencies of the theme.
|
||||
- name: theme.metadata
|
||||
description: A mapping of key-value pairs as defined in the theme gemspec.
|
||||
|
||||
paginator:
|
||||
- name: paginator.page
|
||||
description: The number of the current page
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
min_version: 2.5.0
|
||||
current_version: 3.1.1
|
||||
current_version_output: ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236)
|
||||
current_version: 3.1.2
|
||||
current_version_output: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
- name: Tom Preston Werner Blog
|
||||
url: http://tom.preston-werner.com/
|
||||
url: https://tom.preston-werner.com/
|
||||
image: tom-preston-werner.png
|
||||
categories:
|
||||
- personal
|
||||
@@ -26,7 +26,7 @@
|
||||
- marketing-site
|
||||
|
||||
- name: Vesterheim Norwegian-American Museum
|
||||
url: http://vesterheim.org/
|
||||
url: https://vesterheim.org/
|
||||
image: vesterheim.png
|
||||
categories:
|
||||
- marketing-site
|
||||
@@ -139,7 +139,7 @@
|
||||
- marketing-site
|
||||
|
||||
- name: Rehan Butt
|
||||
url: http://rehanbutt.com/
|
||||
url: https://rehanbutt.com/
|
||||
image: rehn.png
|
||||
categories:
|
||||
- personal
|
||||
@@ -178,19 +178,19 @@
|
||||
- other
|
||||
|
||||
- name: Digital Democracy
|
||||
url: http://www.digital-democracy.org/
|
||||
url: https://www.digital-democracy.org/
|
||||
image: digital-democracy.png
|
||||
categories:
|
||||
- other
|
||||
|
||||
- name: HTML Reference
|
||||
url: http://htmlreference.io/
|
||||
url: https://htmlreference.io/
|
||||
image: htmlreference.png
|
||||
categories:
|
||||
- documentation
|
||||
|
||||
- name: CSS Reference
|
||||
url: http://cssreference.io/
|
||||
url: https://cssreference.io/
|
||||
image: cssreference.png
|
||||
categories:
|
||||
- documentation
|
||||
@@ -272,7 +272,7 @@
|
||||
- documentation
|
||||
|
||||
- name: Yeoman
|
||||
url: http://yeoman.io/
|
||||
url: https://yeoman.io/
|
||||
image: yeoman.png
|
||||
categories:
|
||||
- open-source
|
||||
@@ -292,13 +292,6 @@
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Ionic Framework
|
||||
url: https://ionicframework.com/
|
||||
image: ionic-framework.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Spotify for Developers
|
||||
url: https://developer.spotify.com
|
||||
image: spotify-developers.png
|
||||
@@ -315,7 +308,7 @@
|
||||
- marketing-site
|
||||
|
||||
- name: Ruby on Rails
|
||||
url: http://rubyonrails.org/
|
||||
url: https://rubyonrails.org/
|
||||
image: ruby-on-rails.png
|
||||
categories:
|
||||
- marketing-site
|
||||
|
||||
@@ -57,4 +57,4 @@ This entire guide is open-source. Go ahead and [edit it][jekyll-docs-ci-buddy] i
|
||||
|
||||
[jekyll-docs-ci-buddy]: https://github.com/jekyll/jekyll/edit/master/docs/_docs/continuous-integration/buddyworks.md
|
||||
[jekyll-help]: https://jekyllrb.com/help/
|
||||
[buddy-forum]: http://forum.buddy.works/
|
||||
[buddy-forum]: https://forum.buddy.works/
|
||||
|
||||
@@ -7,7 +7,7 @@ In addition to the [built-in variables]({{'/docs/variables/' | relative_url }})
|
||||
you can specify your own custom data that can be accessed via the [Liquid
|
||||
templating system](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers).
|
||||
|
||||
Jekyll supports loading data from [YAML](http://yaml.org/), [JSON](http://www.json.org/), [CSV](https://en.wikipedia.org/wiki/Comma-separated_values), and [TSV](https://en.wikipedia.org/wiki/Tab-separated_values) files located in the `_data` directory.
|
||||
Jekyll supports loading data from [YAML](https://yaml.org), [JSON](https://www.json.org/json-en.html), [CSV](https://en.wikipedia.org/wiki/Comma-separated_values), and [TSV](https://en.wikipedia.org/wiki/Tab-separated_values) files located in the `_data` directory.
|
||||
Note that CSV and TSV files *must* contain a header row.
|
||||
|
||||
This powerful feature allows you to avoid repetition in your templates and to
|
||||
|
||||
@@ -35,9 +35,9 @@ The [Jekyll hosting tutorial](https://www.keycdn.com/support/jekyll-hosting) pro
|
||||
|
||||
## Kickster
|
||||
|
||||
Use [Kickster](http://kickster.nielsenramon.com/) for automated deploys to GitHub Pages when using unsupported plugins on GitHub Pages.
|
||||
Use [Kickster](https://kickster.nielsenramon.com/) for automated deploys to GitHub Pages when using unsupported plugins on GitHub Pages.
|
||||
|
||||
Kickster provides a basic Jekyll project setup packed with web best practises and useful optimization tools increasing your overall project quality. Kickster ships with automated and worry-free deployment scripts for GitHub Pages.
|
||||
Kickster provides a basic Jekyll project setup packed with web best practices and useful optimization tools increasing your overall project quality. Kickster ships with automated and worry-free deployment scripts for GitHub Pages.
|
||||
|
||||
Install the Kickster gem and you are good to go. More documentation can here found [here](https://github.com/nielsenramon/kickster#kickster). If you do not want to use the gem or start a new project you can just copy paste the deployment scripts for [Travis CI](https://github.com/nielsenramon/kickster/tree/master/snippets/travis) or [Circle CI](https://github.com/nielsenramon/kickster#automated-deployment-with-circle-ci).
|
||||
|
||||
|
||||
@@ -4,6 +4,172 @@ permalink: "/docs/history/"
|
||||
note: This file is autogenerated. Edit /History.markdown instead.
|
||||
---
|
||||
|
||||
## 4.3.1 / 2022-10-26
|
||||
{: #v4-3-1}
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-3-1}
|
||||
|
||||
- Respect user-defined name attribute in documents ([#9167]({{ site.repository }}/issues/9167))
|
||||
- Revert "Incrementally rebuild when a data file is changed" ([#9170]({{ site.repository }}/issues/9170))
|
||||
|
||||
### Documentation
|
||||
|
||||
- Release post for v4.3.1 ([#9171]({{ site.repository }}/issues/9171))
|
||||
|
||||
|
||||
## 4.3.0 / 2022-10-20
|
||||
{: #v4-3-0}
|
||||
|
||||
### Minor Enhancements
|
||||
{: #minor-enhancements-v4-3-0}
|
||||
|
||||
- Add webrick as a dependency ([#8524]({{ site.repository }}/issues/8524))
|
||||
- Regenerate supported mime types ([#8542]({{ site.repository }}/issues/8542))
|
||||
- Update include tag to be more permissive ([#8618]({{ site.repository }}/issues/8618))
|
||||
- Optimize `Jekyll::Utils.parse_date` ([#8425]({{ site.repository }}/issues/8425))
|
||||
- Update rubocop from 1.12 to 1.18 and min ruby from 2.4 to 2.5 ([#8741]({{ site.repository }}/issues/8741))
|
||||
- Always hide cache-dir contents from Git ([#8798]({{ site.repository }}/issues/8798))
|
||||
- Remove the warning about auto-regeneration on Windows ([#8821]({{ site.repository }}/issues/8821))
|
||||
- Propagate _data folder from theme ([#8815]({{ site.repository }}/issues/8815))
|
||||
- Support both tzinfo v1 and v2 along with non-half hour offsets. ([#8880]({{ site.repository }}/issues/8880))
|
||||
- Run vendor-mimes to update mime.types ([#8940]({{ site.repository }}/issues/8940))
|
||||
- Expose collection static files via `site.static_files` ([#8961]({{ site.repository }}/issues/8961))
|
||||
- Expose `basename` from `document.rb` as `name` to Liquid templates ([#8761]({{ site.repository }}/issues/8761))
|
||||
- Allow Configurable Converters on CSV ([#8858]({{ site.repository }}/issues/8858))
|
||||
- Introduce `theme` drop to expose theme-gem details ([#9129]({{ site.repository }}/issues/9129))
|
||||
- Relax version constraint to allow Rouge 4.x ([#9134]({{ site.repository }}/issues/9134))
|
||||
- Incrementally rebuild when a data file is changed ([#8771]({{ site.repository }}/issues/8771))
|
||||
- Support jekyll-sass-converter 3.x ([#9132]({{ site.repository }}/issues/9132))
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-3-0}
|
||||
|
||||
- fix: pin rubocop to 1.12 due to error with ruby 2.4 ([#8651]({{ site.repository }}/issues/8651))
|
||||
- Load Jekyll plugins from BUNDLE_GEMFILE location ([#8585]({{ site.repository }}/issues/8585))
|
||||
- fix(security): CVE-2021-28834 ([#8680]({{ site.repository }}/issues/8680))
|
||||
- Inject livereload script using `location.protocol` instead of `http:` ([#8718]({{ site.repository }}/issues/8718))
|
||||
- Respect collections_dir config within include tag ([#8756]({{ site.repository }}/issues/8756))
|
||||
- Fix regression in Convertible module from v4.2.0 ([#8786]({{ site.repository }}/issues/8786))
|
||||
- Revert [#7253]({{ site.repository }}/issues/7253): "Don't reset site.url to localhost:4000 by default" ([#8620]({{ site.repository }}/issues/8620))
|
||||
- Improve readability of CI logs ([#8877]({{ site.repository }}/issues/8877))
|
||||
- Fix deprecation message for missing doc method ([#8960]({{ site.repository }}/issues/8960))
|
||||
- Fix response header for content served via `jekyll serve` ([#8965]({{ site.repository }}/issues/8965))
|
||||
- Trigger livereload in sites without pages ([#8337]({{ site.repository }}/issues/8337))
|
||||
- Only enable BOM encoding option on UTF encodings ([#8363]({{ site.repository }}/issues/8363))
|
||||
- Ensure theme config is a `Jekyll::Configuration` object ([#8988]({{ site.repository }}/issues/8988))
|
||||
- Remove misleading totals row from `--profile` table ([#9039]({{ site.repository }}/issues/9039))
|
||||
- Unlock Psych dependency ([#9135]({{ site.repository }}/issues/9135))
|
||||
- Fix false positive conflicts for static files in a collection ([#9141]({{ site.repository }}/issues/9141))
|
||||
|
||||
### Development Fixes
|
||||
{: #development-fixes-v4-3-0}
|
||||
|
||||
- style: enable new cops ([#8538]({{ site.repository }}/issues/8538))
|
||||
- Allow dependabot to keep github actions up-to-date ([#8540]({{ site.repository }}/issues/8540))
|
||||
- Update actions/cache requirement to v2.1.3 ([#8543]({{ site.repository }}/issues/8543))
|
||||
- Pin rubocop version ([#8564]({{ site.repository }}/issues/8564))
|
||||
- style: add rubocop 1.9 cops ([#8567]({{ site.repository }}/issues/8567))
|
||||
- Cross Version Testing Locally and Faster CI ([#8610]({{ site.repository }}/issues/8610))
|
||||
- Use official Ruby setup GH action ([#8614]({{ site.repository }}/issues/8614))
|
||||
- Spell check action for markdown documentation ([#8675]({{ site.repository }}/issues/8675))
|
||||
- Update expect to cover docs/_posts ([#8677]({{ site.repository }}/issues/8677))
|
||||
- Bump check-spelling/check-spelling from 0.0.18 to 0.0.19 ([#8740]({{ site.repository }}/issues/8740))
|
||||
- Enable Rubocop accessor grouping, fix existing offenses ([#8293]({{ site.repository }}/issues/8293))
|
||||
- Tags:Highlight: Decomposed HTMLLegacy formatter ([#8623]({{ site.repository }}/issues/8623))
|
||||
- Relax Rubocop Dependency ([#8831]({{ site.repository }}/issues/8831))
|
||||
- Add a workflow to build gems consistently ([#8830]({{ site.repository }}/issues/8830))
|
||||
- Fix random test failures in TestExcerpt #to_liquid ([#8884]({{ site.repository }}/issues/8884))
|
||||
- Lock gem `psych` to `v3.x` ([#8918]({{ site.repository }}/issues/8918))
|
||||
- Fix typo in Bug Report template ([#8951]({{ site.repository }}/issues/8951))
|
||||
- Check symlink outside site_source without Pathutil ([#9015]({{ site.repository }}/issues/9015))
|
||||
- Stop testing with Rubies older than 2.7 on non-Windows ([#8955]({{ site.repository }}/issues/8955))
|
||||
- Bump actions/checkout from 2 to 3 ([#8986]({{ site.repository }}/issues/8986))
|
||||
- Remove git.io shortlinks from repo ([#9045]({{ site.repository }}/issues/9045))
|
||||
- Bump rubocop to 1.32 ([#9093]({{ site.repository }}/issues/9093))
|
||||
- Bump RuboCop to `1.36.x` ([#9125]({{ site.repository }}/issues/9125))
|
||||
- Use check-spelling/check-spelling@v0.0.20 ([#9111]({{ site.repository }}/issues/9111))
|
||||
- Disable pending cops when running rubocop ([#9136]({{ site.repository }}/issues/9136))
|
||||
- Relax RDoc version dependency ([#9142]({{ site.repository }}/issues/9142))
|
||||
|
||||
### Documentation
|
||||
|
||||
- typo - do instead of don't ([#8518]({{ site.repository }}/issues/8518))
|
||||
- Document support for TSV files consistently ([#8488]({{ site.repository }}/issues/8488))
|
||||
- Add a disclaimer to tutorials involving Ruby code ([#8525]({{ site.repository }}/issues/8525))
|
||||
- Improve documentation on developing generators ([#8527]({{ site.repository }}/issues/8527))
|
||||
- Fixes typo in layouts_dir documentation ([#8532]({{ site.repository }}/issues/8532))
|
||||
- Fix i.e. typos in collections.md ([#8529]({{ site.repository }}/issues/8529))
|
||||
- Remove GitHub Pages content which is in GitHub docs ([#8533]({{ site.repository }}/issues/8533))
|
||||
- Step By Step Instructions Review ([#8399]({{ site.repository }}/issues/8399))
|
||||
- Fix typo in migrating from 3.0 to 4.0 page ([#8572]({{ site.repository }}/issues/8572))
|
||||
- Fix for important missing step in macOS Installation Docs: Add the Homebrew gems directory to the PATH ([#8496]({{ site.repository }}/issues/8496))
|
||||
- Use latest Jekyll-action configuration ([#8579]({{ site.repository }}/issues/8579))
|
||||
- docs: troubleshoot macOS with ARM64 architecture ([#8560]({{ site.repository }}/issues/8560))
|
||||
- docs: add overview of .jekyll-cache dir ([#8648]({{ site.repository }}/issues/8648))
|
||||
- docs: clarify where .jekyll-metadata comes from ([#8646]({{ site.repository }}/issues/8646))
|
||||
- Razorops CI/CD added ([#8656]({{ site.repository }}/issues/8656))
|
||||
- Specify default port and host for serve commands in docs ([#8624]({{ site.repository }}/issues/8624))
|
||||
- Update third-party.md ([#8652]({{ site.repository }}/issues/8652))
|
||||
- Add documentation for Sass configuration options ([#8587]({{ site.repository }}/issues/8587))
|
||||
- Add formcarry to forms section ([#8471]({{ site.repository }}/issues/8471))
|
||||
- Add step to set SDKROOT ([#8478]({{ site.repository }}/issues/8478))
|
||||
- Improve the "Markdown Options" Docs ([#8681]({{ site.repository }}/issues/8681))
|
||||
- Add 'webrick' warning note to "Quickstart" Docs ([#8727]({{ site.repository }}/issues/8727))
|
||||
- Update windows.md ([#8701]({{ site.repository }}/issues/8701))
|
||||
- IRC networks - Libera, Freenode ([#8706]({{ site.repository }}/issues/8706))
|
||||
- Improve GitHub Flavored Markdown Docs ([#8684]({{ site.repository }}/issues/8684))
|
||||
- Fixing URL in MacOS install for rbenv-doctor ([#8693]({{ site.repository }}/issues/8693))
|
||||
- Fix adjective in `troubleshooting.md` document ([#8777]({{ site.repository }}/issues/8777))
|
||||
- Goodbye Frank. We'll miss you. 💔 ([#8807]({{ site.repository }}/issues/8807))
|
||||
- Update index.html: Grammar fix. ([#8803]({{ site.repository }}/issues/8803))
|
||||
- Prefer Libera. Remove Freenode. ([#8811]({{ site.repository }}/issues/8811))
|
||||
- Update feature_request.md ([#8797]({{ site.repository }}/issues/8797))
|
||||
- Remove AWS Amplify from the showcase ([#8812]({{ site.repository }}/issues/8812))
|
||||
- Move Frank to Emeritus Core Team Members ([#8813]({{ site.repository }}/issues/8813))
|
||||
- Release post for v4.2.1 ([#8818]({{ site.repository }}/issues/8818))
|
||||
- Update CircleCI example ([#8829]({{ site.repository }}/issues/8829))
|
||||
- Fix typo ([#8835]({{ site.repository }}/issues/8835))
|
||||
- Added docs for running locally ([#8852]({{ site.repository }}/issues/8852))
|
||||
- Linting README.markdown ([#8900]({{ site.repository }}/issues/8900))
|
||||
- Remove text on GITHUB_TOKEN which is now built-in ([#8907]({{ site.repository }}/issues/8907))
|
||||
- Add Security Policy document ([#8823]({{ site.repository }}/issues/8823))
|
||||
- Manage repository meta documents consistently ([#8908]({{ site.repository }}/issues/8908))
|
||||
- docs: add Layer0 deployment guide ([#8915]({{ site.repository }}/issues/8915))
|
||||
- docs: Update README generated by `jekyll new-theme` ([#8919]({{ site.repository }}/issues/8919))
|
||||
- Update resources.md ([#8925]({{ site.repository }}/issues/8925))
|
||||
- Rewrite documentation on installing plugins ([#8921]({{ site.repository }}/issues/8921))
|
||||
- Improve maintainers guide on releasing a new version ([#8928]({{ site.repository }}/issues/8928))
|
||||
- Fix link for "CloudSh" ([#8934]({{ site.repository }}/issues/8934))
|
||||
- Recommend using `actions/cache` in GitHub Actions documentation ([#8948]({{ site.repository }}/issues/8948))
|
||||
- Remove references to EOL hakiri.io service ([#8946]({{ site.repository }}/issues/8946))
|
||||
- Release post for v4.2.2 ([#8982]({{ site.repository }}/issues/8982))
|
||||
- Document releasing off `*-stable` branches ([#8984]({{ site.repository }}/issues/8984))
|
||||
- Update document by fix yaml syntax error ([#8991]({{ site.repository }}/issues/8991))
|
||||
- Enhance option's case for Jekyll configuration ([#8992]({{ site.repository }}/issues/8992))
|
||||
- Fix typo in `_docs/deployment/manual.md` ([#8997]({{ site.repository }}/issues/8997))
|
||||
- Add quiet/verbose options ([#8996]({{ site.repository }}/issues/8996))
|
||||
- Update README.markdown re IRC Pointer ([#9005]({{ site.repository }}/issues/9005))
|
||||
- Remove Aerobatic ([#9007]({{ site.repository }}/issues/9007))
|
||||
- Add Jekyll 3.9.2 release post to 'master' branch ([#9013]({{ site.repository }}/issues/9013))
|
||||
- Simplify macOS installation docs ([#8993]({{ site.repository }}/issues/8993))
|
||||
- Improve document about Github Actions section ([#8853]({{ site.repository }}/issues/8853))
|
||||
- Update permalinks.md ([#9017]({{ site.repository }}/issues/9017))
|
||||
- Add clarity to docs on permalinks placeholders and built-ins ([#8995]({{ site.repository }}/issues/8995))
|
||||
- Remove Ionic Framework site from showcase ([#9057]({{ site.repository }}/issues/9057))
|
||||
- Windows: describe which option to choose ([#9049]({{ site.repository }}/issues/9049))
|
||||
- Improve links (http -> https) ([#9064]({{ site.repository }}/issues/9064))
|
||||
- Update ruby version for macos guide ([#9086]({{ site.repository }}/issues/9086))
|
||||
- Update posts.md ([#9151]({{ site.repository }}/issues/9151))
|
||||
- Release post for v4.3.0 ([#9157]({{ site.repository }}/issues/9157))
|
||||
|
||||
### Site Enhancements
|
||||
{: #site-enhancements-v4-3-0}
|
||||
|
||||
- Improvements to CSS ([#7834]({{ site.repository }}/issues/7834))
|
||||
- Slightly update lang `sh` code-block styling ([#8857]({{ site.repository }}/issues/8857))
|
||||
|
||||
|
||||
## 4.2.2 / 2022-03-03
|
||||
{: #v4-2-2}
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ For example, suppose you have a special image syntax with complex formatting, an
|
||||
|
||||
```html
|
||||
<figure>
|
||||
<a href="http://jekyllrb.com">
|
||||
<a href="https://jekyllrb.com">
|
||||
<img src="logo.png" style="max-width: 200px;"
|
||||
alt="Jekyll logo" />
|
||||
</a>
|
||||
|
||||
@@ -48,7 +48,7 @@ Jekyll on your Mac, or if you run into any issues, read that guide.
|
||||
Install `chruby` and `ruby-install` with Homebrew:
|
||||
|
||||
```sh
|
||||
brew install chruby ruby-install
|
||||
brew install chruby ruby-install xz
|
||||
```
|
||||
|
||||
Install the latest stable version of Ruby:
|
||||
@@ -63,7 +63,7 @@ automatically use `chruby`:
|
||||
```sh
|
||||
echo "source $(brew --prefix)/opt/chruby/share/chruby/chruby.sh" >> ~/.zshrc
|
||||
echo "source $(brew --prefix)/opt/chruby/share/chruby/auto.sh" >> ~/.zshrc
|
||||
echo "chruby ruby-{{ site.data.ruby.current_version }}" >> ~/.zshrc
|
||||
echo "chruby ruby-{{ site.data.ruby.current_version }}" >> ~/.zshrc # run 'chruby' to see actual version
|
||||
```
|
||||
|
||||
If you're using Bash, replace `.zshrc` with `.bash_profile`. If you're not sure,
|
||||
|
||||
@@ -23,7 +23,8 @@ We only cover RubyInstaller-2.4 and newer here. Older versions need to
|
||||
Use default options for installation.
|
||||
2. Run the `ridk install` step on the last stage of the installation wizard. This is needed for installing gems with native
|
||||
extensions. You can find additional information regarding this in the
|
||||
[RubyInstaller Documentation](https://github.com/oneclick/rubyinstaller2#using-the-installer-on-a-target-system)
|
||||
[RubyInstaller Documentation](https://github.com/oneclick/rubyinstaller2#using-the-installer-on-a-target-system).
|
||||
From the options choose `MSYS2 and MINGW development tool chain`.
|
||||
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`
|
||||
|
||||
@@ -278,6 +278,14 @@ Here's the full list of placeholders available:
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:output_ext</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Extension of the output file. (Included by default and usually unnecessary.)</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -325,7 +333,10 @@ For posts, Jekyll also provides the following built-in styles for convenience:
|
||||
<small>{% include docs_version_badge.html version="4.0" %}</small>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>/:categories/:year/W:week/:short_day/:title:output_ext</code></p>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -96,7 +96,7 @@ Linking to a PDF for readers to download:
|
||||
## Displaying an index of posts
|
||||
|
||||
Creating an index of posts on another page should be easy thanks to
|
||||
[Liquid](https://docs.shopify.com/themes/liquid/basics) and its tags. Here’s a
|
||||
[Liquid](https://shopify.github.io/liquid/) and its tags. Here’s a
|
||||
simple example of how to create a list of links to your blog posts:
|
||||
|
||||
{% raw %}
|
||||
@@ -168,7 +168,7 @@ Categories of a post work similar to the tags above:
|
||||
*The similarity between categories and tags however, ends there.*
|
||||
|
||||
Unlike tags, categories for posts can also be defined by a post's file path.
|
||||
Any directory above `_post` will be read-in as a category. For example,
|
||||
Any directory above `_posts` will be read-in as a category. For example,
|
||||
if a post is at path `movies/horror/_posts/2019-05-21-bride-of-chucky.markdown`,
|
||||
then `movies` and `horror` are automatically registered as categories for that
|
||||
post.
|
||||
|
||||
@@ -394,4 +394,4 @@ Themes are published via [RubyGems.org](https://rubygems.org). You will need a R
|
||||
gem push jekyll-theme-awesome-*.gem
|
||||
```
|
||||
|
||||
4. To release a new version of your theme, update the version number in the gemspec file, ( `jekyll-theme-awesome.gemspec` in this example ), and then repeat Steps 1 - 3 above. We recommend that you follow [Semantic Versioning](http://semver.org/) while bumping your theme-version.
|
||||
4. To release a new version of your theme, update the version number in the gemspec file, ( `jekyll-theme-awesome.gemspec` in this example ), and then repeat Steps 1 - 3 above. We recommend that you follow [Semantic Versioning](https://semver.org) while bumping your theme-version.
|
||||
|
||||
@@ -34,6 +34,11 @@ The following is a reference of the available data.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Theme Variables {%- include docs_version_badge.html version="4.3.0" -%}
|
||||
{: #theme-variables }
|
||||
|
||||
{% include docs_variables_table.html scope=site.data.jekyll_variables.theme %}
|
||||
|
||||
## Paginator
|
||||
|
||||
{% include docs_variables_table.html scope=site.data.jekyll_variables.paginator %}
|
||||
|
||||
88
docs/_posts/2022-10-20-jekyll-4-3-0-released.markdown
Normal file
88
docs/_posts/2022-10-20-jekyll-4-3-0-released.markdown
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
title: 'Jekyll 4.3.0 Released'
|
||||
date: 2022-10-20 10:20:22 -0500
|
||||
author: ashmaroli
|
||||
version: 4.3.0
|
||||
category: release
|
||||
---
|
||||
|
||||
Hello Jekyllers!
|
||||
|
||||
The Jekyll team is happy to announce the release of `v4.3.0` shipping with some nice improvements and bug-fixes.
|
||||
|
||||
## Improvements
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Gem `webrick` is now a listed dependency. You no longer have to add the gem to your Gemfile when using Jekyll with
|
||||
Ruby 3.0 or newer.
|
||||
- You may now use Rouge v4 or continue using Rouge v3.x by explicitly mentioning the version in your Gemfile.
|
||||
- Support for gem `tzinfo` v2 and non-half-hour offsets have been added.
|
||||
- You will be able to use v3 of `jekyll-sass-converter` when it ships.
|
||||
|
||||
### Builds
|
||||
|
||||
- Added support for bundling and loading data files from within a theme-gem similar to existing theme-gem contents.
|
||||
- Changes to data files at source will now be respected during incremental builds.
|
||||
- `site.static_files` now include static files within a collection.
|
||||
- You may now configure converters for CSV data.
|
||||
- `.jekyll-cache` or its equivalent custom cache directory will be automatically ignored by Git.
|
||||
- Vendor the current latest mime-types dataset for use with local development server.
|
||||
|
||||
{% raw %}
|
||||
### Liquid Templates
|
||||
|
||||
- `basename` attribute of documents are now exposed to Liquid as `name`, for example `{{ page.name }}`. Excerpts delegate
|
||||
to associated document attribute.
|
||||
- Top-level variable `{{ theme }}` introduced to expose gemspec details of theme-gem. (Valid only when using theme-gem)
|
||||
{% endraw %}
|
||||
|
||||
## Bug-fixes
|
||||
|
||||
Some noteworthy bug-fixes include:
|
||||
|
||||
- Respect `BUNDLE_GEMFILE` when loading Jekyll plugins via Bundler.
|
||||
- Prevent loading versions older than kramdown-2.3.1 as a security measure.
|
||||
- Trigger livereloading even if the site has *no pages*.
|
||||
- Ensure the expected class of theme config is returned following a merger.
|
||||
- Enable BOM encoding only if configured encoding is 'UTF-8'.
|
||||
- Respect server protocol while injecting livereload script.
|
||||
- The table output for `--profile` stops printing incorrect "TOTALS" row.
|
||||
|
||||
[The full list of changes](/docs/history/#v4-3-0) may be perused if interested.
|
||||
|
||||
As always, we are grateful to the many contributors that helped improve the project codebase and documentation:
|
||||
|
||||
<small>Ashwin Maroli, Frank Taillandier, Matt Rogers, Parker Moore, Kelvin M. Klann, Josh Soref, Youssef Boulkaid,
|
||||
Emily Grace Seville, Robert Martin, jaybe@jekyll, Ben Keith, Jonathan Darrer, Kaben, Mike Kasberg, Moncef Belyamani,
|
||||
Phil Ross, Sesh Sadasivam, Adam Bell, Alaz Tetik, Alex Malaszkiewicz, Alex Saveau, Andreas Deininger, Andrew Davis,
|
||||
Andrew Gutekanst, Andrii Abramov, Aram Akhavan, Atlas Cove, Attaphong Rattanaveerachanon, Ben Whetton, Chris Keefe,
|
||||
Clayton Smith, Craig H Maynard, Curious Cat, Daniel Haim, Daniel Kehoe, Daryl Hepting, David Bruant, David Zhang,
|
||||
Edson Jiménez, Eric Cousineau, Gary, Giuseppe Bertone, Ikko Ashimine, JJ, JT, Jeff Wilcox, Jeffrey Veen,
|
||||
Jesse van der Pluijm, John Losito, Kantanat-Stamp, Kirstin Heidler, Korbs, Laurence Andrews, Liam Bigelow, Maik Riechert,
|
||||
Meet Gor, Meg Gutshall, Michael Gerzabek, MichaelCordingley, Miguel Brandão, Nahin Khan, Nemo, Nicholas Paxford,
|
||||
Nick Coish, Otto Urpelainen, Parikshit87, Phil Kirlin, Qasim Qureshi, Ricardo N Feliciano, Rishi Raj Jain, SNVMK,
|
||||
SaintMalik, Sampath Sukesh Ravolaparthi, Shannon Kularathna, Shyam Mohan K, Takuya N, Tejas Bubane, Toshimaru, Tyler887,
|
||||
Vinhas Kevin, alena-ko, fauno, lm, lucafrance, nusu, shorty, なつき</small>
|
||||
|
||||
---
|
||||
|
||||
### Announcement
|
||||
|
||||
I would like to inform you that following this release, Jekyll will start developing towards a v5.0 milestone that will
|
||||
**definitely contain breaking changes**. I have set up a [tentative roadmap at the GitHub repository][roadmap] to give everyone
|
||||
a glimpse of the PROBABLE OUTCOME. Towards that end, we will no longer accept documentation fixes on `master`. The `4.3-stable`
|
||||
branch will be used to build and deploy the site for https://jekyllrb.com.
|
||||
|
||||
Jekyll 3.x series is now under security-maintenance phase. Only security patches will be released when necessary.
|
||||
|
||||
Jekyll 4.x series will continue receiving bug-fixes and security-patches only. Depending on the state of progress towards v5.0,
|
||||
there will be *at least* one minor version release serving as a transitionary version containing deprecations and bridge code
|
||||
to ease the eventual upgrade to v5.0.
|
||||
|
||||
[roadmap]: {{ site.repository }}/issues/9156
|
||||
|
||||
---
|
||||
|
||||
That is all for now.
|
||||
Happy Jekyllin'!!
|
||||
21
docs/_posts/2022-10-26-jekyll-4-3-1-released.markdown
Normal file
21
docs/_posts/2022-10-26-jekyll-4-3-1-released.markdown
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: 'Jekyll 4.3.1 Released'
|
||||
date: 2022-10-26 19:09:42 +0530
|
||||
author: ashmaroli
|
||||
version: 4.3.1
|
||||
category: release
|
||||
---
|
||||
|
||||
Hello Jekyllers!
|
||||
|
||||
We're shipping `v4.3.1` containing fixes for two issues with v4.3.0:
|
||||
- Jekyll now respects user-defined `name` attribute for collection documents when accessed in Liquid templates.
|
||||
- Revert the changes made to trigger incremental rebuilds when data files are changed.
|
||||
|
||||
Thanks to the users who took the time to report the issues to us.
|
||||
Happy Jekyllin'
|
||||
|
||||
P.S. Development towards v5 has taken a back seat as of now. I plan on releasing a v4.4.0 instead.
|
||||
That said, please feel free to comment on the [tentative roadmap to v5][roadmap].
|
||||
|
||||
[roadmap]: {{ site.repository }}/issues/9156
|
||||
@@ -679,7 +679,8 @@ article h2:first-child { margin-top: 0; }
|
||||
|
||||
.news article + article {
|
||||
margin-top: -6px;
|
||||
padding: 15px 40px;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
border-top: 1px solid #555;
|
||||
border-radius: 0;
|
||||
@include box-shadow(0 -1px 0 #2f2f2f);
|
||||
@@ -687,24 +688,6 @@ article h2:first-child { margin-top: 0; }
|
||||
h2.post-title {
|
||||
margin-bottom: 0.45em;
|
||||
}
|
||||
.post-category {
|
||||
margin-right: 20px;
|
||||
padding-left: 0;
|
||||
width: 150px;
|
||||
box-sizing: border-box;
|
||||
.label {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
.cell-left, .cell-right {
|
||||
display: inline-block;
|
||||
}
|
||||
.cell-left {
|
||||
max-width: 180px;
|
||||
}
|
||||
.cell-right {
|
||||
width: calc(100% - 130px);
|
||||
}
|
||||
.post-date { margin-left: 0 }
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
4.2.2
|
||||
4.3.1
|
||||
|
||||
@@ -11,7 +11,7 @@ permalink: /
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="features">
|
||||
<section class="features center-on-mobiles">
|
||||
<div class="grid">
|
||||
<div class="unit one-third">
|
||||
<h2>Simple</h2>
|
||||
@@ -30,7 +30,7 @@ permalink: /
|
||||
<p>
|
||||
Permalinks, categories, pages, posts, and custom layouts are all first-class citizens here.
|
||||
</p>
|
||||
<a href="http://import.jekyllrb.com">Migrate your blog →</a>
|
||||
<a href="https://import.jekyllrb.com">Migrate your blog →</a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@ title: JekyllConf
|
||||
permalink: /jekyllconf/
|
||||
---
|
||||
|
||||
[JekyllConf](http://jekyllconf.com) is a free, online conference for all things Jekyll hosted by [CloudCannon](http://cloudcannon.com). Each year members of the Jekyll community speak about interesting use cases, tricks they've learned, or meta Jekyll topics.
|
||||
[JekyllConf](https://jekyllconf.com) is a free, online conference for all things Jekyll hosted by [CloudCannon](https://cloudcannon.com). Each year members of the Jekyll community speak about interesting use cases, tricks they've learned, or meta Jekyll topics.
|
||||
|
||||
## Featured
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ Use a SaaS service as a backend for functionality on your Jekyll site
|
||||
> "Jekyll is everything that I ever wanted in a blogging engine. Really. It isn't perfect, but what's excellent about it is that if there's something wrong, I know exactly how it works and how to fix it. It runs on the your machine only, and is essentially an added"build" step between you and the browser. I coded this entire site in TextMate using standard HTML5 and CSS3, and then at the end I added just a few little variables to the markup. Presto-chango, my site is built and I am at peace with the world."
|
||||
|
||||
- A way to [extend Jekyll](https://github.com/rfelix/jekyll_ext) without forking and modifying the Jekyll gem codebase and some [portable Jekyll extensions](https://github.com/rfelix/jekyll_ext/wiki/Extensions) that can be reused and shared.
|
||||
- [Using your Rails layouts in Jekyll](http://numbers.brighterplanet.com/2010/08/09/sharing-rails-views-with-jekyll)
|
||||
- [Using your Rails layouts in Jekyll](https://numbers.brighterplanet.com/2010/08/09/sharing-rails-views-with-jekyll)
|
||||
|
||||
## Forks
|
||||
|
||||
|
||||
@@ -14,10 +14,15 @@ Feature: Create sites
|
||||
And the test_blank/_sass directory should exist
|
||||
And the test_blank/assets/css directory should exist
|
||||
And the "test_blank/_layouts/default.html" file should exist
|
||||
And the "test_blank/_sass/main.scss" file should exist
|
||||
And the "test_blank/_sass/base.scss" file should exist
|
||||
And the "test_blank/assets/css/main.scss" file should exist
|
||||
And the "test_blank/_config.yml" file should exist
|
||||
And the "test_blank/index.md" file should exist
|
||||
When I run jekyll build --source test_blank --destination test_blank/_site
|
||||
Then I should get a zero exit status
|
||||
And the test_blank/_site directory should exist
|
||||
And I should see "Start developing" in "test_blank/_site/index.html"
|
||||
And I should see "body {" in "test_blank/_site/assets/css/main.css"
|
||||
|
||||
Scenario: Basic site
|
||||
Given I have an "index.html" file that contains "Basic Site"
|
||||
|
||||
@@ -168,7 +168,7 @@ Feature: Rendering
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see ".foo-bar { color: red; }\n\n\/\*# sourceMappingURL=index.css.map \*\/" in "_site/index.css"
|
||||
And I should see ".foo-bar {\n color: red;\n}\n\n\/\*# sourceMappingURL=index.css.map \*\/" in "_site/index.css"
|
||||
|
||||
Scenario: Not render liquid in CoffeeScript without explicitly including jekyll-coffeescript
|
||||
Given I have an "index.coffee" page with animal "cicada" that contains "hey='for {{page.animal}}'"
|
||||
|
||||
@@ -163,7 +163,7 @@ Given(%r!^I have a configuration file with "(.*)" set to "(.*)"$!) do |key, valu
|
||||
else
|
||||
{}
|
||||
end
|
||||
config[key] = YAML.load(value)
|
||||
config[key] = SafeYAML.load(value)
|
||||
Jekyll.set_timezone(value) if key == "timezone"
|
||||
File.write("_config.yml", YAML.dump(config))
|
||||
end
|
||||
|
||||
@@ -19,7 +19,7 @@ Feature: Writing themes
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see ".sample { color: red; }\n\n\/\*# sourceMappingURL=style.css.map \*\/" in "_site/assets/style.css"
|
||||
And I should see ".sample {\n color: red;\n}\n\n\/\*# sourceMappingURL=style.css.map \*\/" in "_site/assets/style.css"
|
||||
|
||||
Scenario: Overriding a theme with SCSS
|
||||
Given I have a configuration file with "theme" set to "test-theme"
|
||||
@@ -28,7 +28,7 @@ Feature: Writing themes
|
||||
When I run jekyll build
|
||||
Then I should get a zero exit status
|
||||
And the _site directory should exist
|
||||
And I should see ".sample { color: black; }\n\n\/\*# sourceMappingURL=style.css.map \*\/" in "_site/assets/style.css"
|
||||
And I should see ".sample {\n color: black;\n}\n\n\/\*# sourceMappingURL=style.css.map \*\/" in "_site/assets/style.css"
|
||||
|
||||
Scenario: A theme with an include
|
||||
Given I have a configuration file with "theme" set to "test-theme"
|
||||
|
||||
@@ -36,19 +36,14 @@ Gem::Specification.new do |s|
|
||||
s.add_runtime_dependency("colorator", "~> 1.0")
|
||||
s.add_runtime_dependency("em-websocket", "~> 0.5")
|
||||
s.add_runtime_dependency("i18n", "~> 1.0")
|
||||
s.add_runtime_dependency("jekyll-sass-converter", "~> 2.0")
|
||||
s.add_runtime_dependency("jekyll-sass-converter", ">= 2.0", "< 4.0")
|
||||
s.add_runtime_dependency("jekyll-watch", "~> 2.0")
|
||||
s.add_runtime_dependency("kramdown", "~> 2.3", ">= 2.3.1")
|
||||
s.add_runtime_dependency("kramdown-parser-gfm", "~> 1.0")
|
||||
s.add_runtime_dependency("liquid", ">= 4.0", "< 6.0")
|
||||
s.add_runtime_dependency("liquid", "~> 4.0")
|
||||
s.add_runtime_dependency("mercenary", ">= 0.3.6", "< 0.5")
|
||||
s.add_runtime_dependency("pathutil", "~> 0.9")
|
||||
|
||||
# Ruby 3.1.0 shipped with `psych-4.0.3` which caused some of our Cucumber-based tests to fail.
|
||||
# TODO: Remove lock once we implement a way to use Psych 4 without breaking anything.
|
||||
s.add_runtime_dependency("psych", "~> 3.3")
|
||||
|
||||
s.add_runtime_dependency("rouge", "~> 3.0")
|
||||
s.add_runtime_dependency("rouge", ">= 3.0", "< 5.0")
|
||||
s.add_runtime_dependency("safe_yaml", "~> 1.0")
|
||||
s.add_runtime_dependency("terminal-table", ">= 1.8", "< 4.0")
|
||||
s.add_runtime_dependency("webrick", "~> 1.7")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
|
||||
@import "main";
|
||||
@import "base";
|
||||
|
||||
@@ -30,8 +30,8 @@ module Jekyll
|
||||
site = Jekyll::Site.new(options)
|
||||
|
||||
if options.fetch("skip_initial_build", false)
|
||||
Jekyll.logger.warn "Build Warning:", "Skipping the initial build." \
|
||||
" This may result in an out-of-date site."
|
||||
Jekyll.logger.warn "Build Warning:",
|
||||
"Skipping the initial build. This may result in an out-of-date site."
|
||||
else
|
||||
build(site, options)
|
||||
end
|
||||
|
||||
@@ -7,8 +7,7 @@ module Jekyll
|
||||
def init_with_program(prog)
|
||||
prog.command(:clean) do |c|
|
||||
c.syntax "clean [subcommand]"
|
||||
c.description "Clean the site " \
|
||||
"(removes site output and metadata file) without building."
|
||||
c.description "Clean the site (removes site output and metadata file) without building."
|
||||
|
||||
add_build_options(c)
|
||||
|
||||
|
||||
@@ -53,14 +53,14 @@ module Jekyll
|
||||
"Detected '_posts' directory outside custom `collections_dir`!"
|
||||
Jekyll.logger.warn "",
|
||||
"Please move '#{posts_at_root}' into the custom directory at " \
|
||||
"'#{site.in_source_dir(site.config["collections_dir"])}'"
|
||||
"'#{site.in_source_dir(site.config["collections_dir"])}'"
|
||||
false
|
||||
end
|
||||
|
||||
def deprecated_relative_permalinks(site)
|
||||
if site.config["relative_permalinks"]
|
||||
Jekyll::Deprecator.deprecation_message "Your site still uses relative permalinks," \
|
||||
" which was removed in Jekyll v3.0.0."
|
||||
Jekyll::Deprecator.deprecation_message "Your site still uses relative permalinks, " \
|
||||
"which was removed in Jekyll v3.0.0."
|
||||
true
|
||||
end
|
||||
end
|
||||
@@ -105,9 +105,9 @@ module Jekyll
|
||||
next unless real_urls.uniq.size > 1
|
||||
|
||||
urls_only_differ_by_case = true
|
||||
Jekyll.logger.warn "Warning:", "The following URLs only differ" \
|
||||
" by case. On a case-insensitive file system one of the URLs" \
|
||||
" will be overwritten by the other: #{real_urls.join(", ")}"
|
||||
Jekyll.logger.warn "Warning:", "The following URLs only differ by case. On a " \
|
||||
"case-insensitive file system one of the URLs will be " \
|
||||
"overwritten by the other: #{real_urls.join(", ")}"
|
||||
end
|
||||
urls_only_differ_by_case
|
||||
end
|
||||
@@ -148,8 +148,8 @@ module Jekyll
|
||||
def url_exists?(url)
|
||||
return true unless url.nil? || url.empty?
|
||||
|
||||
Jekyll.logger.warn "Warning:", "You didn't set an URL in the config file, "\
|
||||
"you may encounter problems with some plugins."
|
||||
Jekyll.logger.warn "Warning:", "You didn't set an URL in the config file, you may " \
|
||||
"encounter problems with some plugins."
|
||||
false
|
||||
end
|
||||
|
||||
@@ -157,18 +157,18 @@ module Jekyll
|
||||
Addressable::URI.parse(url)
|
||||
true
|
||||
# Addressable::URI#parse only raises a TypeError
|
||||
# https://git.io/vFfbx
|
||||
# https://github.com/sporkmonger/addressable/blob/0a0e96acb17225f9b1c9cab0bad332b448934c9a/lib/addressable/uri.rb#L103
|
||||
rescue TypeError
|
||||
Jekyll.logger.warn "Warning:", "The site URL does not seem to be valid, "\
|
||||
"check the value of `url` in your config file."
|
||||
Jekyll.logger.warn "Warning:", "The site URL does not seem to be valid, " \
|
||||
"check the value of `url` in your config file."
|
||||
false
|
||||
end
|
||||
|
||||
def url_absolute(url)
|
||||
return true if url.is_a?(String) && Addressable::URI.parse(url).absolute?
|
||||
|
||||
Jekyll.logger.warn "Warning:", "Your site URL does not seem to be absolute, "\
|
||||
"check the value of `url` in your config file."
|
||||
Jekyll.logger.warn "Warning:", "Your site URL does not seem to be absolute, " \
|
||||
"check the value of `url` in your config file."
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
@@ -28,8 +28,8 @@ module Jekyll
|
||||
FileUtils.mkdir_p new_blog_path
|
||||
if preserve_source_location?(new_blog_path, options)
|
||||
Jekyll.logger.error "Conflict:", "#{new_blog_path} exists and is not empty."
|
||||
Jekyll.logger.abort_with "", "Ensure #{new_blog_path} is empty or else " \
|
||||
"try again with `--force` to proceed and overwrite any files."
|
||||
Jekyll.logger.abort_with "", "Ensure #{new_blog_path} is empty or else try again " \
|
||||
"with `--force` to proceed and overwrite any files."
|
||||
end
|
||||
|
||||
if options["blank"]
|
||||
@@ -108,13 +108,9 @@ module Jekyll
|
||||
def create_site(new_blog_path)
|
||||
create_sample_files new_blog_path
|
||||
|
||||
File.open(File.expand_path(initialized_post_name, new_blog_path), "w") do |f|
|
||||
f.write(scaffold_post_content)
|
||||
end
|
||||
File.write(File.expand_path(initialized_post_name, new_blog_path), scaffold_post_content)
|
||||
|
||||
File.open(File.expand_path("Gemfile", new_blog_path), "w") do |f|
|
||||
f.write(gemfile_contents)
|
||||
end
|
||||
File.write(File.expand_path("Gemfile", new_blog_path), gemfile_contents)
|
||||
end
|
||||
|
||||
def preserve_source_location?(path, options)
|
||||
|
||||
@@ -10,8 +10,7 @@ module Jekyll
|
||||
prog.command(:"new-theme") do |c|
|
||||
c.syntax "new-theme NAME"
|
||||
c.description "Creates a new Jekyll theme scaffold"
|
||||
c.option "code_of_conduct", \
|
||||
"-c", "--code-of-conduct", \
|
||||
c.option "code_of_conduct", "-c", "--code-of-conduct",
|
||||
"Include a Code of Conduct. (defaults to false)"
|
||||
|
||||
c.action do |args, opts|
|
||||
@@ -30,8 +29,8 @@ module Jekyll
|
||||
Jekyll.logger.abort_with "Conflict:", "#{theme.path} already exists." if theme.path.exist?
|
||||
|
||||
theme.create!
|
||||
Jekyll.logger.info "Your new Jekyll theme, #{theme.name.cyan}," \
|
||||
" is ready for you in #{theme.path.to_s.cyan}!"
|
||||
Jekyll.logger.info "Your new Jekyll theme, #{theme.name.cyan}, " \
|
||||
"is ready for you in #{theme.path.to_s.cyan}!"
|
||||
Jekyll.logger.info "For help getting started, read #{theme.path}/README.md."
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,11 +21,11 @@ module Jekyll
|
||||
"ssl_key" => ["--ssl-key [KEY]", "X.509 (SSL) Private Key."],
|
||||
"port" => ["-P", "--port [PORT]", "Port to listen on"],
|
||||
"show_dir_listing" => ["--show-dir-listing",
|
||||
"Show a directory listing instead of loading" \
|
||||
" your index file.",],
|
||||
"Show a directory listing instead of loading " \
|
||||
"your index file.",],
|
||||
"skip_initial_build" => ["skip_initial_build", "--skip-initial-build",
|
||||
"Skips the initial site build which occurs before" \
|
||||
" the server is started.",],
|
||||
"Skips the initial site build which occurs before " \
|
||||
"the server is started.",],
|
||||
"livereload" => ["-l", "--livereload",
|
||||
"Use LiveReload to automatically refresh browsers",],
|
||||
"livereload_ignore" => ["--livereload-ignore ignore GLOB1[,GLOB2[,...]]",
|
||||
@@ -113,8 +113,8 @@ module Jekyll
|
||||
def validate_options(opts)
|
||||
if opts["livereload"]
|
||||
if opts["detach"]
|
||||
Jekyll.logger.warn "Warning:", "--detach and --livereload are mutually exclusive." \
|
||||
" Choosing --livereload"
|
||||
Jekyll.logger.warn "Warning:", "--detach and --livereload are mutually exclusive. " \
|
||||
"Choosing --livereload"
|
||||
opts["detach"] = false
|
||||
end
|
||||
if opts["ssl_cert"] || opts["ssl_key"]
|
||||
@@ -132,9 +132,9 @@ module Jekyll
|
||||
livereload_max_delay
|
||||
livereload_ignore
|
||||
livereload_port).any? { |o| opts[o] }
|
||||
Jekyll.logger.abort_with "--livereload-min-delay, "\
|
||||
"--livereload-max-delay, --livereload-ignore, and "\
|
||||
"--livereload-port require the --livereload option."
|
||||
Jekyll.logger.abort_with "--livereload-min-delay, --livereload-max-delay, " \
|
||||
"--livereload-ignore, and --livereload-port require " \
|
||||
"the --livereload option."
|
||||
end
|
||||
end
|
||||
|
||||
@@ -174,7 +174,8 @@ module Jekyll
|
||||
# Do a base pre-setup of WEBRick so that everything is in place
|
||||
# when we get ready to party, checking for an setting up an error page
|
||||
# and making sure our destination exists.
|
||||
|
||||
#
|
||||
# rubocop:disable Security/IoMethods
|
||||
def setup(destination)
|
||||
require_relative "serve/servlet"
|
||||
|
||||
@@ -188,6 +189,7 @@ module Jekyll
|
||||
end
|
||||
end
|
||||
end
|
||||
# rubocop:enable Security/IoMethods
|
||||
|
||||
def webrick_opts(opts)
|
||||
opts = {
|
||||
@@ -263,8 +265,7 @@ module Jekyll
|
||||
return system "xdg-open", address if Utils::Platforms.linux?
|
||||
return system "open", address if Utils::Platforms.osx?
|
||||
|
||||
Jekyll.logger.error "Refusing to launch browser; " \
|
||||
"Platform launcher unknown."
|
||||
Jekyll.logger.error "Refusing to launch browser. Platform launcher unknown."
|
||||
end
|
||||
|
||||
# Keep in our area with a thread or detach the server as requested
|
||||
@@ -277,9 +278,8 @@ module Jekyll
|
||||
end
|
||||
|
||||
Process.detach(pid)
|
||||
Jekyll.logger.info "Server detached with pid '#{pid}'.", \
|
||||
"Run `pkill -f jekyll' or `kill -9 #{pid}'" \
|
||||
" to stop the server."
|
||||
Jekyll.logger.info "Server detached with pid '#{pid}'.",
|
||||
"Run `pkill -f jekyll' or `kill -9 #{pid}' to stop the server."
|
||||
else
|
||||
t = Thread.new { server.start }
|
||||
trap("INT") { server.shutdown }
|
||||
|
||||
@@ -110,7 +110,7 @@ module Jekyll
|
||||
|
||||
def log_error(error)
|
||||
Jekyll.logger.error "LiveReload experienced an error. " \
|
||||
"Run with --trace for more information."
|
||||
"Run with --trace for more information."
|
||||
raise error
|
||||
end
|
||||
end
|
||||
|
||||
@@ -128,7 +128,7 @@ module Jekyll
|
||||
class Servlet < WEBrick::HTTPServlet::FileHandler
|
||||
DEFAULTS = {
|
||||
"Cache-Control" => "private, max-age=0, proxy-revalidate, " \
|
||||
"no-store, no-cache, must-revalidate",
|
||||
"no-store, no-cache, must-revalidate",
|
||||
}.freeze
|
||||
|
||||
def initialize(server, root, callbacks)
|
||||
|
||||
@@ -304,8 +304,8 @@ module Jekyll
|
||||
return if config["plugins"].is_a?(Array)
|
||||
|
||||
Jekyll.logger.error "'plugins' should be set as an array of gem-names, but was: " \
|
||||
"#{config["plugins"].inspect}. Use 'plugins_dir' instead to set the directory " \
|
||||
"for your non-gemified Ruby plugins."
|
||||
"#{config["plugins"].inspect}. Use 'plugins_dir' instead to set " \
|
||||
"the directory for your non-gemified Ruby plugins."
|
||||
raise Jekyll::Errors::InvalidConfigurationError,
|
||||
"'plugins' should be set as an array, but was: #{config["plugins"].inspect}."
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Frozen-string-literal: true
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Kramdown
|
||||
# A Kramdown::Document subclass meant to optimize memory usage from initializing
|
||||
|
||||
@@ -12,7 +12,6 @@ module Jekyll
|
||||
mutable false
|
||||
|
||||
delegate_method_as :relative_path, :path
|
||||
delegate_method_as :basename, :name
|
||||
private delegate_method_as :data, :fallback_data
|
||||
|
||||
delegate_methods :id, :output, :content, :to_s, :relative_path, :url, :date
|
||||
@@ -26,6 +25,10 @@ module Jekyll
|
||||
fallback_data["excerpt"].to_s
|
||||
end
|
||||
|
||||
def name
|
||||
fallback_data["name"] || @obj.basename
|
||||
end
|
||||
|
||||
def <=>(other)
|
||||
return nil unless other.is_a? DocumentDrop
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ module Jekyll
|
||||
end
|
||||
|
||||
def name
|
||||
@obj.doc.basename
|
||||
@obj.doc.data["name"] || @obj.doc.basename
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
36
lib/jekyll/drops/theme_drop.rb
Normal file
36
lib/jekyll/drops/theme_drop.rb
Normal file
@@ -0,0 +1,36 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jekyll
|
||||
module Drops
|
||||
class ThemeDrop < Drop
|
||||
delegate_methods :root
|
||||
delegate_method_as :runtime_dependencies, :dependencies
|
||||
|
||||
def authors
|
||||
@authors ||= gemspec.authors.join(", ")
|
||||
end
|
||||
|
||||
def version
|
||||
@version ||= gemspec.version.to_s
|
||||
end
|
||||
|
||||
def description
|
||||
@description ||= gemspec.description || gemspec.summary
|
||||
end
|
||||
|
||||
def metadata
|
||||
@metadata ||= gemspec.metadata
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def gemspec
|
||||
@gemspec ||= @obj.send(:gemspec)
|
||||
end
|
||||
|
||||
def fallback_data
|
||||
@fallback_data ||= {}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -16,6 +16,10 @@ module Jekyll
|
||||
@site_drop ||= SiteDrop.new(@obj)
|
||||
end
|
||||
|
||||
def theme
|
||||
@theme_drop ||= ThemeDrop.new(@obj.theme) if @obj.theme
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def fallback_data
|
||||
|
||||
@@ -190,8 +190,8 @@ module Jekyll
|
||||
|
||||
def print_build_warning
|
||||
Jekyll.logger.warn "Warning:", "Excerpt modified in #{doc.relative_path}!"
|
||||
Jekyll.logger.warn "", "Found a Liquid block containing the excerpt separator" \
|
||||
" #{doc.excerpt_separator.inspect}. "
|
||||
Jekyll.logger.warn "", "Found a Liquid block containing the excerpt separator " \
|
||||
"#{doc.excerpt_separator.inspect}."
|
||||
Jekyll.logger.warn "", "The block has been modified with the appropriate closing tag."
|
||||
Jekyll.logger.warn "", "Feel free to define a custom excerpt or excerpt_separator in the"
|
||||
Jekyll.logger.warn "", "document's Front Matter if the generated excerpt is unsatisfactory."
|
||||
|
||||
@@ -311,7 +311,7 @@ module Jekyll
|
||||
order = + 1
|
||||
else
|
||||
raise ArgumentError, "Invalid nils order: " \
|
||||
"'#{nils}' is not a valid nils order. It must be 'first' or 'last'."
|
||||
"'#{nils}' is not a valid nils order. It must be 'first' or 'last'."
|
||||
end
|
||||
|
||||
sort_input(input, property, order)
|
||||
@@ -398,17 +398,11 @@ module Jekyll
|
||||
# `where` filter helper
|
||||
#
|
||||
def compare_property_vs_target(property, target)
|
||||
# Liquid v4 handles 'empty' and 'blank' keywords separately from v5.
|
||||
# Delete when we remove Liquid v5 support.
|
||||
if Liquid::VERSION.start_with?("4.") && target.is_a?(Liquid::Expression::MethodLiteral)
|
||||
target = target.to_s
|
||||
return true if property == target || Array(property).join == target
|
||||
end
|
||||
|
||||
case target
|
||||
when NilClass
|
||||
return true if property.nil?
|
||||
when "", Liquid::Expression::MethodLiteral # empty/blank hashes and arrays will match this
|
||||
when Liquid::Expression::MethodLiteral # `empty` or `blank`
|
||||
target = target.to_s
|
||||
return true if property == target || Array(property).join == target
|
||||
else
|
||||
target = target.to_s
|
||||
@@ -484,7 +478,7 @@ module Jekyll
|
||||
end
|
||||
|
||||
# ----------- The following set of code was *adapted* from Liquid::If
|
||||
# ----------- ref: https://git.io/vp6K6
|
||||
# ----------- ref: https://github.com/Shopify/liquid/blob/ffb0ace30315bbcf3548a0383fab531452060ae8/lib/liquid/tags/if.rb#L84-L107
|
||||
|
||||
# Parse a string to a Liquid Condition
|
||||
def parse_condition(exp)
|
||||
|
||||
@@ -78,8 +78,8 @@ module Jekyll
|
||||
}
|
||||
|
||||
unless @registry[owner][event]
|
||||
raise NotAvailable, "Invalid hook. #{owner} supports only the " \
|
||||
"following hooks #{@registry[owner].keys.inspect}"
|
||||
raise NotAvailable, "Invalid hook. #{owner} supports only the following hooks " \
|
||||
"#{@registry[owner].keys.inspect}"
|
||||
end
|
||||
|
||||
raise Uncallable, "Hooks must respond to :call" unless block.respond_to? :call
|
||||
|
||||
@@ -15,16 +15,12 @@ module Jekyll
|
||||
|
||||
private
|
||||
|
||||
# rubocop:disable Metrics/AbcSize
|
||||
def data_for_table(num_of_rows)
|
||||
sorted = @stats.sort_by { |_, file_stats| -file_stats[:time] }
|
||||
sorted = sorted.slice(0, num_of_rows)
|
||||
|
||||
table = [header_labels]
|
||||
totals = Hash.new { |hash, key| hash[key] = 0 }
|
||||
|
||||
sorted.each do |filename, file_stats|
|
||||
GAUGES.each { |gauge| totals[gauge] += file_stats[gauge] }
|
||||
row = []
|
||||
row << filename
|
||||
row << file_stats[:count].to_s
|
||||
@@ -33,14 +29,8 @@ module Jekyll
|
||||
table << row
|
||||
end
|
||||
|
||||
footer = []
|
||||
footer << "TOTAL (for #{sorted.size} files)"
|
||||
footer << totals[:count].to_s
|
||||
footer << format_bytes(totals[:bytes])
|
||||
footer << format("%.3f", totals[:time])
|
||||
table << footer
|
||||
table
|
||||
end
|
||||
# rubocop:enable Metrics/AbcSize
|
||||
|
||||
def header_labels
|
||||
GAUGES.map { |gauge| gauge.to_s.capitalize }.unshift("Filename")
|
||||
|
||||
@@ -113,9 +113,10 @@ module Jekyll
|
||||
pagination_included = (site.config["plugins"] || []).include?("jekyll-paginate") ||
|
||||
defined?(Jekyll::Paginate)
|
||||
if site.config["paginate"] && !pagination_included
|
||||
Jekyll::Deprecator.deprecation_message "You appear to have pagination " \
|
||||
"turned on, but you haven't included the `jekyll-paginate` gem. " \
|
||||
"Ensure you have `plugins: [jekyll-paginate]` in your configuration file."
|
||||
Jekyll::Deprecator.deprecation_message <<~MSG
|
||||
You appear to have pagination turned on, but you haven't included the `jekyll-paginate`
|
||||
gem. Ensure you have `plugins: [jekyll-paginate]` in your configuration file.
|
||||
MSG
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -14,15 +14,12 @@ module Jekyll
|
||||
|
||||
rows = table_rows.dup
|
||||
header = rows.shift
|
||||
footer = rows.pop
|
||||
output = +"\n"
|
||||
|
||||
table = Terminal::Table.new do |t|
|
||||
t << header
|
||||
t << :separator
|
||||
rows.each { |row| t << row }
|
||||
t << :separator
|
||||
t << footer
|
||||
t.style = TERMINAL_TABLE_STYLES
|
||||
t.align_column(0, :left)
|
||||
end
|
||||
@@ -36,18 +33,14 @@ module Jekyll
|
||||
|
||||
def profile_process
|
||||
profile_data = { "PHASE" => "TIME" }
|
||||
total_time = 0
|
||||
|
||||
[:reset, :read, :generate, :render, :cleanup, :write].each do |method|
|
||||
start_time = Time.now
|
||||
@site.send(method)
|
||||
end_time = (Time.now - start_time).round(4)
|
||||
profile_data[method.to_s.upcase] = format("%.4f", end_time)
|
||||
total_time += end_time
|
||||
end
|
||||
|
||||
profile_data["TOTAL TIME"] = format("%.4f", total_time)
|
||||
|
||||
Jekyll.logger.info "\nBuild Process Summary:"
|
||||
Jekyll.logger.info Profiler.tabulate(Array(profile_data))
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ module Jekyll
|
||||
converter.convert output
|
||||
rescue StandardError => e
|
||||
Jekyll.logger.error "Conversion error:",
|
||||
"#{converter.class} encountered an error while "\
|
||||
"#{converter.class} encountered an error while " \
|
||||
"converting '#{document.relative_path}':"
|
||||
Jekyll.logger.error("", e.to_s)
|
||||
raise e
|
||||
@@ -179,7 +179,7 @@ module Jekyll
|
||||
return unless invalid_layout?(layout)
|
||||
|
||||
Jekyll.logger.warn "Build Warning:", "Layout '#{document.data["layout"]}' requested " \
|
||||
"in #{document.relative_path} does not exist."
|
||||
"in #{document.relative_path} does not exist."
|
||||
end
|
||||
|
||||
# Render layout content into document.output
|
||||
|
||||
@@ -328,11 +328,11 @@ module Jekyll
|
||||
# Returns
|
||||
def relative_permalinks_are_deprecated
|
||||
if config["relative_permalinks"]
|
||||
Jekyll.logger.abort_with "Since v3.0, permalinks for pages" \
|
||||
" in subfolders must be relative to the" \
|
||||
" site source directory, not the parent" \
|
||||
" directory. Check https://jekyllrb.com/docs/upgrading/"\
|
||||
" for more info."
|
||||
Jekyll.logger.abort_with "Since v3.0, permalinks for pages " \
|
||||
"in subfolders must be relative to the " \
|
||||
"site source directory, not the parent " \
|
||||
"directory. Check https://jekyllrb.com/docs/upgrading/ " \
|
||||
"for more info."
|
||||
end
|
||||
end
|
||||
|
||||
@@ -360,11 +360,9 @@ module Jekyll
|
||||
end
|
||||
|
||||
def each_site_file
|
||||
%w(pages static_files_to_write docs_to_write).each do |type|
|
||||
send(type).each do |item|
|
||||
yield item
|
||||
end
|
||||
end
|
||||
pages.each { |page| yield page }
|
||||
static_files.each { |file| yield(file) if file.write? }
|
||||
collections.each_value { |coll| coll.docs.each { |doc| yield(doc) if doc.write? } }
|
||||
end
|
||||
|
||||
# Returns the FrontmatterDefaults or creates a new FrontmatterDefaults
|
||||
@@ -476,7 +474,11 @@ module Jekyll
|
||||
theme_config.delete_if { |key, _| Configuration::DEFAULTS.key?(key) }
|
||||
|
||||
# Override theme_config with existing config and return the result.
|
||||
# Additionally ensure we return a `Jekyll::Configuration` instance instead of a Hash.
|
||||
Utils.deep_merge_hashes(theme_config, config)
|
||||
.each_with_object(Jekyll::Configuration.new) do |(key, value), conf|
|
||||
conf[key] = value
|
||||
end
|
||||
end
|
||||
|
||||
# Limits the current posts; removes the posts which exceed the limit_posts
|
||||
@@ -532,8 +534,8 @@ module Jekyll
|
||||
if config["theme"].is_a?(String)
|
||||
Jekyll::Theme.new(config["theme"])
|
||||
else
|
||||
Jekyll.logger.warn "Theme:", "value of 'theme' in config should be " \
|
||||
"String to use gem-based themes, but got #{config["theme"].class}"
|
||||
Jekyll.logger.warn "Theme:", "value of 'theme' in config should be String to use " \
|
||||
"gem-based themes, but got #{config["theme"].class}"
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,13 +3,10 @@
|
||||
module Jekyll
|
||||
class Stevenson < ::Logger
|
||||
def initialize
|
||||
@progname = nil
|
||||
@level = DEBUG
|
||||
@default_formatter = Formatter.new
|
||||
@logdev = $stdout
|
||||
@formatter = proc do |_, _, _, msg|
|
||||
formatter = proc do |_, _, _, msg|
|
||||
msg.to_s
|
||||
end
|
||||
super($stdout, :formatter => formatter)
|
||||
end
|
||||
|
||||
def add(severity, message = nil, progname = nil)
|
||||
|
||||
@@ -104,8 +104,8 @@ module Jekyll
|
||||
"class=\"language-#{@lang.to_s.tr("+", "-")}\"",
|
||||
"data-lang=\"#{@lang}\"",
|
||||
].join(" ")
|
||||
"<figure class=\"highlight\"><pre><code #{code_attributes}>"\
|
||||
"#{code.chomp}</code></pre></figure>"
|
||||
"<figure class=\"highlight\"><pre><code #{code_attributes}>" \
|
||||
"#{code.chomp}</code></pre></figure>"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -179,8 +179,8 @@ module Jekyll
|
||||
private
|
||||
|
||||
def could_not_locate_message(file, includes_dirs, safe)
|
||||
message = "Could not locate the included file '#{file}' in any of "\
|
||||
"#{includes_dirs}. Ensure it exists in one of those directories and"
|
||||
message = "Could not locate the included file '#{file}' in any of #{includes_dirs}. " \
|
||||
"Ensure it exists in one of those directories and"
|
||||
message + if safe
|
||||
" is not a symlink as those are not allowed in safe mode."
|
||||
else
|
||||
|
||||
@@ -86,11 +86,11 @@ module Jekyll
|
||||
site.posts.docs.each do |document|
|
||||
next unless @post.deprecated_equality document
|
||||
|
||||
Jekyll::Deprecator.deprecation_message "A call to "\
|
||||
"'{% post_url #{@post.name} %}' did not match " \
|
||||
"a post using the new matching method of checking name " \
|
||||
"(path-date-slug) equality. Please make sure that you " \
|
||||
"change this tag to match the post's name exactly."
|
||||
Jekyll::Deprecator.deprecation_message(
|
||||
"A call to '{% post_url #{@post.name} %}' did not match a post using the new " \
|
||||
"matching method of checking name (path-date-slug) equality. Please make sure " \
|
||||
"that you change this tag to match the post's name exactly."
|
||||
)
|
||||
return relative_url(document)
|
||||
end
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@ module Jekyll
|
||||
# Otherwise, Jekyll.sanitized path with prepend the unresolved root
|
||||
@root ||= File.realpath(gemspec.full_gem_path)
|
||||
rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP
|
||||
raise "Path #{gemspec.full_gem_path} does not exist, is not accessible "\
|
||||
"or includes a symbolic link loop"
|
||||
raise "Path #{gemspec.full_gem_path} does not exist, is not accessible or includes " \
|
||||
"a symbolic link loop"
|
||||
end
|
||||
|
||||
# The name of theme directory
|
||||
|
||||
@@ -100,7 +100,7 @@ module Jekyll
|
||||
winner = pool.find { |key| @placeholders.key?(key) }
|
||||
if winner.nil?
|
||||
raise NoMethodError,
|
||||
"The URL template doesn't have #{pool.join(" or ")} keys. "\
|
||||
"The URL template doesn't have #{pool.join(" or ")} keys. " \
|
||||
"Check your permalink template!"
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Frozen-string-literal: true
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jekyll
|
||||
module Utils
|
||||
|
||||
@@ -25,7 +25,7 @@ module Jekyll
|
||||
# e.g. Eastern Standard Time (EST) that is 5Hrs. to the 'west' of Prime Meridian
|
||||
# is denoted as:
|
||||
# EST+5 (or) EST+05:00
|
||||
# Reference: http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
|
||||
# Reference: https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
|
||||
sign = offset.positive? ? "-" : "+"
|
||||
|
||||
rational_hours = offset.abs.to_r / 3600
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jekyll
|
||||
VERSION = "4.2.2"
|
||||
VERSION = "4.3.3"
|
||||
end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
echo "RuboCop $(bundle exec rubocop --version)"
|
||||
bundle exec rubocop -D $@
|
||||
bundle exec rubocop -D --disable-pending-cops $@
|
||||
success=$?
|
||||
if ((success != 0)); then
|
||||
echo -e "\nTry running \`script/fmt -a\` to automatically fix errors"
|
||||
|
||||
@@ -105,8 +105,7 @@ class JekyllUnitTest < Minitest::Test
|
||||
end
|
||||
|
||||
def mocks_expect(*args)
|
||||
RSpec::Mocks::ExampleMethods::ExpectHost.instance_method(:expect)\
|
||||
.bind(self).call(*args)
|
||||
RSpec::Mocks::ExampleMethods::ExpectHost.instance_method(:expect).bind(self).call(*args)
|
||||
end
|
||||
|
||||
def before_setup
|
||||
@@ -166,7 +165,7 @@ class JekyllUnitTest < Minitest::Test
|
||||
def directory_with_contents(path)
|
||||
FileUtils.rm_rf(path)
|
||||
FileUtils.mkdir(path)
|
||||
File.open("#{path}/index.html", "w") { |f| f.write("I was previously generated.") }
|
||||
File.write("#{path}/index.html", "I was previously generated.")
|
||||
end
|
||||
|
||||
def with_env(key, value)
|
||||
|
||||
5
test/source/_roles/named.md
Normal file
5
test/source/_roles/named.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
name: launcher
|
||||
---
|
||||
|
||||
`name` defined in front matter.
|
||||
4
test/source/_roles/unnamed.md
Normal file
4
test/source/_roles/unnamed.md
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
---
|
||||
|
||||
No `name` in front matter.
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
Jekyll is a simple, blog-aware, static site generator. It takes a template
|
||||
directory containing raw text files in various formats, runs it through
|
||||
[Markdown](http://daringfireball.net/projects/markdown/) (or
|
||||
[Textile](http://redcloth.org/textile)) and
|
||||
[Markdown](https://daringfireball.net/projects/markdown/) (or
|
||||
[Textile](https://www.promptworks.com/textile)) and
|
||||
[Liquid](https://help.shopify.com/themes/liquid/basics)
|
||||
converters, and spits out a complete, ready-to-publish static website suitable
|
||||
for serving with your favorite web server. Jekyll also happens to be the engine
|
||||
|
||||
@@ -5,5 +5,5 @@ approx_time: 30 mins
|
||||
---
|
||||
|
||||
Jekyll converts Markdown documents to HTML by default. Don't know what's Markdown?
|
||||
Read this [documentation](http://daringfireball.net/projects/markdown/)
|
||||
Read this [documentation](https://daringfireball.net/projects/markdown/)
|
||||
While you're at it, might as well learn about [Kramdown](https://kramdown.gettalong.org/)
|
||||
|
||||
@@ -75,9 +75,7 @@ class TestCommandsServe < JekyllUnitTest
|
||||
</html>
|
||||
HTML
|
||||
|
||||
File.open(File.join(@destination, "hello.html"), "w") do |f|
|
||||
f.write(simple_page)
|
||||
end
|
||||
File.write(File.join(@destination, "hello.html"), simple_page)
|
||||
allow(Jekyll::Site).to receive(:new).and_return(site)
|
||||
end
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ class TestDoctorCommand < JekyllUnitTest
|
||||
assert_equal "", output
|
||||
end
|
||||
|
||||
# rubocop:disable Layout/LineLength
|
||||
should "return warning for pages only differing by case" do
|
||||
@site = Site.new(Jekyll.configuration(
|
||||
"source" => File.join(source_dir, "/_urls_differ_by_case_invalid"),
|
||||
@@ -32,9 +33,10 @@ class TestDoctorCommand < JekyllUnitTest
|
||||
ret = Jekyll::Commands::Doctor.urls_only_differ_by_case(@site)
|
||||
assert ret
|
||||
end
|
||||
assert_includes output, "Warning: The following URLs only differ by case. "\
|
||||
"On a case-insensitive file system one of the URLs will be overwritten by the "\
|
||||
"other: #{dest_dir}/about/index.html, #{dest_dir}/About/index.html"
|
||||
assert_includes output, "Warning: The following URLs only differ by case. On a case-" \
|
||||
"insensitive file system one of the URLs will be overwritten by the " \
|
||||
"other: #{dest_dir}/about/index.html, #{dest_dir}/About/index.html"
|
||||
end
|
||||
# rubocop:enable Layout/LineLength
|
||||
end
|
||||
end
|
||||
|
||||
@@ -159,6 +159,23 @@ class TestDocument < JekyllUnitTest
|
||||
should "output its relative path as path in Liquid" do
|
||||
assert_equal "_methods/configuration.md", @document.to_liquid["path"]
|
||||
end
|
||||
|
||||
context "when rendered with Liquid" do
|
||||
should "respect the front matter definition" do
|
||||
site = fixture_site("collections" => ["roles"]).tap(&:process)
|
||||
docs = site.collections["roles"].docs
|
||||
|
||||
# Ruby context: doc.basename is aliased as doc.to_liquid["name"] by default.
|
||||
|
||||
document = docs.detect { |d| d.relative_path == "_roles/unnamed.md" }
|
||||
assert_equal "unnamed.md", document.basename
|
||||
assert_equal "unnamed.md", document.to_liquid["name"]
|
||||
|
||||
document = docs.detect { |d| d.relative_path == "_roles/named.md" }
|
||||
assert_equal "named.md", document.basename
|
||||
assert_equal "launcher", document.to_liquid["name"]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "a document as part of a collection with front matter defaults" do
|
||||
|
||||
@@ -111,8 +111,7 @@ class TestExcerpt < JekyllUnitTest
|
||||
context "#content" do
|
||||
context "before render" do
|
||||
should "be the first paragraph of the page" do
|
||||
expected = "First paragraph with [link ref][link].\n\n[link]: "\
|
||||
"https://jekyllrb.com/"
|
||||
expected = "First paragraph with [link ref][link].\n\n[link]: https://jekyllrb.com/"
|
||||
assert_equal expected, @excerpt.content
|
||||
end
|
||||
|
||||
@@ -129,7 +128,7 @@ class TestExcerpt < JekyllUnitTest
|
||||
end
|
||||
|
||||
should "be the first paragraph of the page" do
|
||||
expected = "<p>First paragraph with <a href=\"https://jekyllrb.com/\">link "\
|
||||
expected = "<p>First paragraph with <a href=\"https://jekyllrb.com/\">link " \
|
||||
"ref</a>.</p>\n\n"
|
||||
assert_equal expected, @extracted_excerpt.output
|
||||
end
|
||||
@@ -146,7 +145,7 @@ class TestExcerpt < JekyllUnitTest
|
||||
end
|
||||
|
||||
should "contain all refs at the bottom of the page" do
|
||||
(0..3).each do |i|
|
||||
4.times do |i|
|
||||
assert_match "[link_#{i}]: www.example.com/#{i}", @excerpt.content
|
||||
end
|
||||
end
|
||||
@@ -159,7 +158,7 @@ class TestExcerpt < JekyllUnitTest
|
||||
@rendered_post = @post.dup
|
||||
do_render(@rendered_post)
|
||||
output = @rendered_post.data["excerpt"].output
|
||||
(0..3).each do |i|
|
||||
4.times do |i|
|
||||
assert_includes output, "<a href=\"www.example.com/#{i}\">"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -143,7 +143,7 @@ class TestFilters < JekyllUnitTest
|
||||
|
||||
should "sassify with simple string" do
|
||||
assert_equal(
|
||||
"p { color: #123456; }\n",
|
||||
"p {\n color: #123456;\n}",
|
||||
@filter.sassify(<<~SASS)
|
||||
$blue: #123456
|
||||
p
|
||||
@@ -154,7 +154,7 @@ class TestFilters < JekyllUnitTest
|
||||
|
||||
should "scssify with simple string" do
|
||||
assert_equal(
|
||||
"p { color: #123456; }\n",
|
||||
"p {\n color: #123456;\n}",
|
||||
@filter.scssify("$blue:#123456; p{color: $blue}")
|
||||
)
|
||||
end
|
||||
@@ -718,7 +718,7 @@ class TestFilters < JekyllUnitTest
|
||||
{
|
||||
"name" => name,
|
||||
:v => 1,
|
||||
:thing => M.new(:kay => "jewelers"),
|
||||
:thing => M.new({:kay => "jewelers"}),
|
||||
:stuff => true,
|
||||
}
|
||||
end
|
||||
@@ -918,13 +918,13 @@ class TestFilters < JekyllUnitTest
|
||||
# `{{ hash | where: 'tags', empty }}`
|
||||
assert_equal(
|
||||
[{ "tags" => {} }, { "tags" => "" }, { "tags" => nil }, { "tags" => [] }],
|
||||
@filter.where(hash, "tags", Liquid::Condition.parse_expression(nil, "empty"))
|
||||
@filter.where(hash, "tags", Liquid::Expression::LITERALS["empty"])
|
||||
)
|
||||
|
||||
# `{{ `hash | where: 'tags', blank }}`
|
||||
assert_equal(
|
||||
[{ "tags" => {} }, { "tags" => "" }, { "tags" => nil }, { "tags" => [] }],
|
||||
@filter.where(hash, "tags", Liquid::Condition.parse_expression(nil, "blank"))
|
||||
@filter.where(hash, "tags", Liquid::Expression::LITERALS["blank"])
|
||||
)
|
||||
end
|
||||
|
||||
@@ -1151,13 +1151,13 @@ class TestFilters < JekyllUnitTest
|
||||
# `{{ hash | find: 'tags', empty }}`
|
||||
assert_equal(
|
||||
{ "tags" => {} },
|
||||
@filter.find(hash, "tags", Liquid::Condition.parse_expression(nil, "empty"))
|
||||
@filter.find(hash, "tags", Liquid::Expression::LITERALS["empty"])
|
||||
)
|
||||
|
||||
# `{{ `hash | find: 'tags', blank }}`
|
||||
assert_equal(
|
||||
{ "tags" => {} },
|
||||
@filter.find(hash, "tags", Liquid::Condition.parse_expression(nil, "blank"))
|
||||
@filter.find(hash, "tags", Liquid::Expression::LITERALS["blank"])
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
@@ -164,8 +164,8 @@ class TestPageWithoutAFile < JekyllUnitTest
|
||||
refute_path_exists(dest_dir("virtual-about", "index.html"))
|
||||
end
|
||||
|
||||
should "be processed and written to destination when passed as "\
|
||||
"an entry in 'site.pages' array" do
|
||||
should "be processed and written to destination when passed as an entry in " \
|
||||
"'site.pages' array" do
|
||||
@page.content = "{{ site.title }}"
|
||||
@page.data["permalink"] = "/virtual-about/"
|
||||
|
||||
|
||||
@@ -174,9 +174,7 @@ class TestRegenerator < JekyllUnitTest
|
||||
metadata_file = source_dir(".jekyll-metadata")
|
||||
@regenerator = Regenerator.new(@site)
|
||||
|
||||
File.open(metadata_file, "w") do |f|
|
||||
f.write(@regenerator.metadata.to_yaml)
|
||||
end
|
||||
File.write(metadata_file, @regenerator.metadata.to_yaml)
|
||||
|
||||
@regenerator = Regenerator.new(@site)
|
||||
assert_equal File.mtime(@path), @regenerator.metadata[@path]["mtime"]
|
||||
|
||||
@@ -15,7 +15,9 @@ class TestSass < JekyllUnitTest
|
||||
|
||||
should "import SCSS partial" do
|
||||
result = <<~CSS
|
||||
.half { width: 50%; }
|
||||
.half {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=main.css.map */
|
||||
CSS
|
||||
|
||||
@@ -97,6 +97,12 @@ class TestSite < JekyllUnitTest
|
||||
)
|
||||
end
|
||||
|
||||
should "load config file from theme-gem as Jekyll::Configuration instance" do
|
||||
site = fixture_site("theme" => "test-theme")
|
||||
assert_instance_of Jekyll::Configuration, site.config
|
||||
assert_equal "Hello World", site.config["title"]
|
||||
end
|
||||
|
||||
context "with a custom cache_dir configuration" do
|
||||
should "have the custom cache_dir hidden from Git" do
|
||||
site = fixture_site("cache_dir" => "../../custom-cache-dir")
|
||||
@@ -615,8 +621,8 @@ class TestSite < JekyllUnitTest
|
||||
site = fixture_site("theme" => {})
|
||||
assert_nil site.theme
|
||||
end
|
||||
expected_msg = "Theme: value of 'theme' in config should be String " \
|
||||
"to use gem-based themes, but got Hash\n"
|
||||
expected_msg = "Theme: value of 'theme' in config should be String to use " \
|
||||
"gem-based themes, but got Hash\n"
|
||||
assert_includes output, expected_msg
|
||||
end
|
||||
|
||||
@@ -743,5 +749,14 @@ class TestSite < JekyllUnitTest
|
||||
|
||||
assert_includes site.static_files.map(&:relative_path), "_methods/extensionless_static_file"
|
||||
end
|
||||
|
||||
should "not be revisited in `Site#each_site_file`" do
|
||||
site = fixture_site("collections" => { "methods" => { "output" => true } })
|
||||
site.read
|
||||
|
||||
visited_files = []
|
||||
site.each_site_file { |file| visited_files << file }
|
||||
assert_equal visited_files.count, visited_files.uniq.count
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -42,8 +42,12 @@ class TestTags < JekyllUnitTest
|
||||
end
|
||||
|
||||
def highlight_block_with_opts(options_string)
|
||||
template = Liquid::Template.parse("{% highlight #{options_string} %}test{% endhighlight %}")
|
||||
template.root.nodelist.first
|
||||
Jekyll::Tags::HighlightBlock.parse(
|
||||
"highlight",
|
||||
options_string,
|
||||
Liquid::Tokenizer.new("test{% endhighlight %}\n"),
|
||||
Liquid::ParseContext.new
|
||||
)
|
||||
end
|
||||
|
||||
context "language name" do
|
||||
@@ -446,10 +450,10 @@ class TestTags < JekyllUnitTest
|
||||
end
|
||||
|
||||
should "throw a deprecation warning" do
|
||||
deprecation_warning = " Deprecation: A call to "\
|
||||
"'{% post_url 2008-11-21-nested %}' 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."
|
||||
deprecation_warning = " Deprecation: A call to '{% post_url 2008-11-21-nested %}' " \
|
||||
"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."
|
||||
assert_includes Jekyll.logger.messages, deprecation_warning
|
||||
end
|
||||
end
|
||||
@@ -689,7 +693,7 @@ class TestTags < JekyllUnitTest
|
||||
context "include tag with parameters" do
|
||||
context "with symlink'd include" do
|
||||
should "not allow symlink includes" do
|
||||
File.open("tmp/pages-test", "w") { |file| file.write("SYMLINK TEST") }
|
||||
File.write("tmp/pages-test", "SYMLINK TEST")
|
||||
assert_raises IOError do
|
||||
content = <<~CONTENT
|
||||
---
|
||||
@@ -1138,7 +1142,7 @@ class TestTags < JekyllUnitTest
|
||||
|
||||
context "with symlink'd include" do
|
||||
should "not allow symlink includes" do
|
||||
File.open("tmp/pages-test", "w") { |file| file.write("SYMLINK TEST") }
|
||||
File.write("tmp/pages-test", "SYMLINK TEST")
|
||||
assert_raises IOError do
|
||||
content = <<~CONTENT
|
||||
---
|
||||
@@ -1177,7 +1181,7 @@ class TestTags < JekyllUnitTest
|
||||
"safe" => true)
|
||||
end
|
||||
assert_match(
|
||||
"Ensure it exists in one of those directories and is not a symlink "\
|
||||
"Ensure it exists in one of those directories and is not a symlink " \
|
||||
"as those are not allowed in safe mode.",
|
||||
ex.message
|
||||
)
|
||||
|
||||
@@ -14,15 +14,14 @@ class TestThemeAssetsReader < JekyllUnitTest
|
||||
def assert_file_with_relative_path(haystack, relative_path)
|
||||
assert haystack.any? { |f|
|
||||
f.relative_path == relative_path
|
||||
}, "Site should read in the #{relative_path} file, " \
|
||||
"but it was not found in #{haystack.inspect}"
|
||||
}, "Site should read in the #{relative_path} file, but it was not found in #{haystack.inspect}"
|
||||
end
|
||||
|
||||
def refute_file_with_relative_path(haystack, relative_path)
|
||||
refute haystack.any? { |f|
|
||||
f.relative_path == relative_path
|
||||
}, "Site should not have read in the #{relative_path} file, " \
|
||||
"but it was found in #{haystack.inspect}"
|
||||
}, "Site should not have read in the #{relative_path} file, but it was found in " \
|
||||
"#{haystack.inspect}"
|
||||
end
|
||||
|
||||
context "with a valid theme" do
|
||||
@@ -39,7 +38,7 @@ class TestThemeAssetsReader < JekyllUnitTest
|
||||
file = @site.pages.find { |f| f.relative_path == "assets/style.scss" }
|
||||
refute_nil file
|
||||
assert_equal @site.in_dest_dir("assets/style.css"), file.destination(@site.dest)
|
||||
assert_includes file.output, ".sample { color: black; }"
|
||||
assert_includes file.output, ".sample {\n color: black;\n}"
|
||||
end
|
||||
|
||||
should "not overwrite site content with the same relative path" do
|
||||
@@ -82,7 +81,7 @@ class TestThemeAssetsReader < JekyllUnitTest
|
||||
|
||||
begin
|
||||
tmp_dir = Dir.mktmpdir("jekyll-theme-test")
|
||||
File.open(File.join(tmp_dir, "test.txt"), "wb") { |f| f.write "content" }
|
||||
File.binwrite(File.join(tmp_dir, "test.txt"), "content")
|
||||
|
||||
theme_dir = File.join(__dir__, "fixtures", "test-theme-symlink")
|
||||
File.symlink(tmp_dir, File.join(theme_dir, "assets"))
|
||||
|
||||
34
test/test_theme_drop.rb
Normal file
34
test/test_theme_drop.rb
Normal file
@@ -0,0 +1,34 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "helper"
|
||||
|
||||
class TestThemeDrop < JekyllUnitTest
|
||||
should "be initialized only for gem-based themes" do
|
||||
assert_nil fixture_site.to_liquid.theme
|
||||
end
|
||||
|
||||
context "a theme drop" do
|
||||
setup do
|
||||
@drop = fixture_site("theme" => "test-theme").to_liquid.theme
|
||||
end
|
||||
|
||||
should "respond to `key?`" do
|
||||
assert_respond_to @drop, :key?
|
||||
end
|
||||
|
||||
should "export relevant data to Liquid templates" do
|
||||
expected = {
|
||||
"authors" => "Jekyll",
|
||||
"dependencies" => [],
|
||||
"description" => "This is a theme used to test Jekyll",
|
||||
"metadata" => {},
|
||||
"root" => theme_dir,
|
||||
"version" => "0.1.0",
|
||||
}
|
||||
expected.each_key do |key|
|
||||
assert @drop.key?(key)
|
||||
assert_equal expected[key], @drop[key]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user