cleanup
This commit is contained in:
parent
432f3fe79c
commit
7905cc718a
@ -1,19 +0,0 @@
|
|||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
# Unix-style newlines with a newline ending every file
|
|
||||||
end_of_line = lf
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
[*.{js,css,scss}]
|
|
||||||
quote_type = single
|
|
||||||
|
|
||||||
[*.{yml,yaml}]
|
|
||||||
quote_type = double
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
trim_trailing_whitespace = false
|
|
16
.gitattributes
vendored
16
.gitattributes
vendored
@ -1,16 +0,0 @@
|
|||||||
# Set default behavior to automatically normalize line endings.
|
|
||||||
* text=auto
|
|
||||||
|
|
||||||
# Force bash scripts to always use LF line endings so that if a repo is accessed
|
|
||||||
# in Unix via a file share from Windows, the scripts will work.
|
|
||||||
*.sh text eol=lf
|
|
||||||
|
|
||||||
# Force batch scripts to always use CRLF line endings so that if a repo is accessed
|
|
||||||
# in Windows via a file share from Linux, the scripts will work.
|
|
||||||
*.{cmd,[cC][mM][dD]} text eol=crlf
|
|
||||||
*.{bat,[bB][aA][tT]} text eol=crlf
|
|
||||||
|
|
||||||
# Denote all files that are truly binary and should not be modified.
|
|
||||||
*.png binary
|
|
||||||
*.jpg binary
|
|
||||||
*.ico binary
|
|
@ -1,79 +0,0 @@
|
|||||||
# This workflow uses actions that are not certified by GitHub.
|
|
||||||
# They are provided by a third-party and are governed by
|
|
||||||
# separate terms of service, privacy policy, and support
|
|
||||||
# documentation.
|
|
||||||
|
|
||||||
# Sample workflow for building and deploying a Jekyll site to GitHub Pages
|
|
||||||
name: Deploy Jekyll site to Pages
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Runs on pushes targeting the default branch
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pages: write
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
|
||||||
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
|
||||||
concurrency:
|
|
||||||
group: "pages"
|
|
||||||
cancel-in-progress: false
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
# Build job
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
env:
|
|
||||||
RUBY_VERSION: "3.3.5"
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: "main"
|
|
||||||
- name: checkout pages
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: "pages"
|
|
||||||
path: "pages"
|
|
||||||
- name: Setup Ruby
|
|
||||||
run: |
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install curl wget tar build-essential zlib1g-dev gpg -y && \
|
|
||||||
curl -sSL https://rvm.io/mpapis.asc | gpg --import - && \
|
|
||||||
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import - && \
|
|
||||||
curl -sSL https://get.rvm.io | bash -s stable && \
|
|
||||||
source /etc/profile.d/rvm.sh && \
|
|
||||||
rvm mount -r https://raw.morlana.space/morlana/rvm-binaries/@binaries/ubuntu/22.04/aarch64/ruby-$RUBY_VERSION.tar.bz2 && \
|
|
||||||
rvm use $RUBY_VERSION && ruby -v && gem -v && \
|
|
||||||
gem install bundler jekyll webrick
|
|
||||||
- name: Setup Node
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: lts/*
|
|
||||||
- name: Build Assets
|
|
||||||
run: npm i && npm run build
|
|
||||||
- name: Build with Jekyll
|
|
||||||
# Outputs to the './_site' directory by default
|
|
||||||
run: |
|
|
||||||
source /etc/profile.d/rvm.sh && \
|
|
||||||
rvm use $RUBY_VERSION && ruby -v && gem -v && \
|
|
||||||
bundle install && \
|
|
||||||
bundle exec jekyll build --destination pages
|
|
||||||
env:
|
|
||||||
JEKYLL_ENV: production
|
|
||||||
- name: push pages
|
|
||||||
run: |
|
|
||||||
cd pages && \
|
|
||||||
git config user.name "${{ gitea.actor }}" && \
|
|
||||||
git config user.email ""${{ gitea.actor }}"@noreply.git.morlana.online" && \
|
|
||||||
git add . && \
|
|
||||||
git commit -m "jekyll build from Action ${GITHUB_SHA}" && \
|
|
||||||
git push
|
|
27
.gitignore
vendored
27
.gitignore
vendored
@ -1,27 +0,0 @@
|
|||||||
# Bundler cache
|
|
||||||
.bundle
|
|
||||||
vendor
|
|
||||||
Gemfile.lock
|
|
||||||
|
|
||||||
# Jekyll cache
|
|
||||||
.jekyll-cache
|
|
||||||
.jekyll-metadata
|
|
||||||
_site
|
|
||||||
|
|
||||||
# RubyGems
|
|
||||||
*.gem
|
|
||||||
|
|
||||||
# NPM dependencies
|
|
||||||
node_modules
|
|
||||||
package-lock.json
|
|
||||||
|
|
||||||
# IDE configurations
|
|
||||||
.idea
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/extensions.json
|
|
||||||
!.vscode/tasks.json
|
|
||||||
|
|
||||||
# Misc
|
|
||||||
_sass/dist
|
|
||||||
assets/js/dist
|
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
|||||||
[submodule "assets/lib"]
|
|
||||||
path = assets/lib
|
|
||||||
url = https://github.com/cotes2020/chirpy-static-assets.git
|
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"commands-show-output": false,
|
|
||||||
"blanks-around-fences": false,
|
|
||||||
"line-length": false,
|
|
||||||
"no-inline-html": {
|
|
||||||
"allowed_elements": ["kbd", "sub"]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
*.yml
|
|
||||||
*.yaml
|
|
3
.vscode/extensions.json
vendored
3
.vscode/extensions.json
vendored
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"recommendations": ["ms-vscode-remote.remote-containers"]
|
|
||||||
}
|
|
30
.vscode/settings.json
vendored
30
.vscode/settings.json
vendored
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
// Prettier
|
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
||||||
"editor.formatOnSave": true,
|
|
||||||
// Shopify Liquid
|
|
||||||
"files.associations": {
|
|
||||||
"*.html": "liquid"
|
|
||||||
},
|
|
||||||
"[markdown]": {
|
|
||||||
"editor.defaultFormatter": "yzhang.markdown-all-in-one"
|
|
||||||
},
|
|
||||||
// Formatter
|
|
||||||
"[html][liquid]": {
|
|
||||||
"editor.defaultFormatter": "Shopify.theme-check-vscode"
|
|
||||||
},
|
|
||||||
"[shellscript]": {
|
|
||||||
"editor.defaultFormatter": "mkhl.shfmt"
|
|
||||||
},
|
|
||||||
// Disable vscode built-in stylelint
|
|
||||||
"css.validate": false,
|
|
||||||
"scss.validate": false,
|
|
||||||
"less.validate": false,
|
|
||||||
// Stylint extension settings
|
|
||||||
"stylelint.snippet": ["css", "scss"],
|
|
||||||
"stylelint.validate": ["css", "scss"],
|
|
||||||
// Run tasks in macOS
|
|
||||||
"terminal.integrated.profiles.osx": {
|
|
||||||
"zsh": { "path": "/bin/zsh", "args": ["-l", "-i"] }
|
|
||||||
}
|
|
||||||
}
|
|
64
.vscode/tasks.json
vendored
64
.vscode/tasks.json
vendored
@ -1,64 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"label": "Run Jekyll Server",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "./tools/run.sh",
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Runs the Jekyll server with live reload."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Build Jekyll Site",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "./tools/test.sh",
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Build the Jekyll site for production."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Build JS (watch)",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "npm run watch:js",
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Build JS files in watch mode."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Build CSS",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "npm run build:css",
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Build CSS files."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Build JS & CSS",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "npm run build",
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"detail": "Build JS & CSS for production."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Run Jekyll Server + Build JS (watch)",
|
|
||||||
"dependsOn": ["Run Jekyll Server", "Build JS (watch)"],
|
|
||||||
"group": {
|
|
||||||
"kind": "build"
|
|
||||||
},
|
|
||||||
"detail": "Runs both the Jekyll server with live reload and build JS files in watch mode."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
14
Gemfile
14
Gemfile
@ -1,14 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
source "https://rubygems.org"
|
|
||||||
|
|
||||||
gemspec
|
|
||||||
|
|
||||||
gem "html-proofer", "~> 5.0", group: :test
|
|
||||||
|
|
||||||
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
|
||||||
gem "tzinfo", ">= 1", "< 3"
|
|
||||||
gem "tzinfo-data"
|
|
||||||
end
|
|
||||||
|
|
||||||
gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin]
|
|
21
LICENSE
21
LICENSE
@ -1,21 +0,0 @@
|
|||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2019 Cotes Chung
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
84
README.md
84
README.md
@ -1,84 +0,0 @@
|
|||||||
<!-- markdownlint-disable-next-line -->
|
|
||||||
<div align="center">
|
|
||||||
|
|
||||||
<!-- markdownlint-disable-next-line -->
|
|
||||||
# Chirpy Jekyll Theme
|
|
||||||
|
|
||||||
A minimal, responsive, and feature-rich Jekyll theme for technical writing.
|
|
||||||
|
|
||||||
[][ci]
|
|
||||||
[][codacy]
|
|
||||||
[][license]
|
|
||||||
[][gem]
|
|
||||||
[][open-container]
|
|
||||||
|
|
||||||
[**Live Demo** →][demo]
|
|
||||||
|
|
||||||
[][demo]
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- Dark Theme
|
|
||||||
- Localized UI language
|
|
||||||
- Pinned Posts on Home Page
|
|
||||||
- Hierarchical Categories
|
|
||||||
- Trending Tags
|
|
||||||
- Table of Contents
|
|
||||||
- Last Modified Date
|
|
||||||
- Syntax Highlighting
|
|
||||||
- Mathematical Expressions
|
|
||||||
- Mermaid Diagrams & Flowcharts
|
|
||||||
- Dark Mode Images
|
|
||||||
- Embed Media
|
|
||||||
- Comment Systems
|
|
||||||
- Built-in Search
|
|
||||||
- Atom Feeds
|
|
||||||
- PWA
|
|
||||||
- Web Analytics
|
|
||||||
- SEO & Performance Optimization
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
To learn how to use, develop, and upgrade the project, please refer to the [Wiki][wiki].
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Contributions (_pull requests_, _issues_, and _discussions_) are what make the open-source community such an amazing place
|
|
||||||
to learn, inspire, and create. Any contributions you make are greatly appreciated.
|
|
||||||
For details, see the "[Contributing Guidelines][contribute-guide]".
|
|
||||||
|
|
||||||
## Credits
|
|
||||||
|
|
||||||
### Contributors
|
|
||||||
|
|
||||||
Thanks to [all the contributors][contributors] involved in the development of the project!
|
|
||||||
|
|
||||||
[][contributors]
|
|
||||||
<sub> — Made with [contrib.rocks](https://contrib.rocks)</sub>
|
|
||||||
|
|
||||||
### Third-Party Assets
|
|
||||||
|
|
||||||
This project is built on the [Jekyll][jekyllrb] ecosystem and some [great libraries][lib], and is developed using [VS Code][vscode] as well as tools provided by [JetBrains][jetbrains] under a non-commercial open-source software license.
|
|
||||||
|
|
||||||
The avatar and favicon for the project's website are from [ClipartMAX][clipartmax].
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
This project is published under [MIT License][license].
|
|
||||||
|
|
||||||
[gem]: https://rubygems.org/gems/jekyll-theme-chirpy
|
|
||||||
[ci]: https://github.com/cotes2020/jekyll-theme-chirpy/actions/workflows/ci.yml?query=event%3Apush+branch%3Amaster
|
|
||||||
[codacy]: https://app.codacy.com/gh/cotes2020/jekyll-theme-chirpy/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade
|
|
||||||
[license]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/LICENSE
|
|
||||||
[open-container]: https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/cotes2020/jekyll-theme-chirpy
|
|
||||||
[jekyllrb]: https://jekyllrb.com/
|
|
||||||
[clipartmax]: https://www.clipartmax.com/middle/m2i8b1m2K9Z5m2K9_ant-clipart-childrens-ant-cute/
|
|
||||||
[demo]: https://cotes2020.github.io/chirpy-demo/
|
|
||||||
[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki
|
|
||||||
[contribute-guide]: https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md
|
|
||||||
[contributors]: https://github.com/cotes2020/jekyll-theme-chirpy/graphs/contributors
|
|
||||||
[lib]: https://github.com/cotes2020/chirpy-static-assets
|
|
||||||
[vscode]: https://code.visualstudio.com/
|
|
||||||
[jetbrains]: https://www.jetbrains.com/?from=jekyll-theme-chirpy
|
|
221
_config.yml
221
_config.yml
@ -1,221 +0,0 @@
|
|||||||
# The Site Configuration
|
|
||||||
|
|
||||||
# Import the theme
|
|
||||||
theme: jekyll-theme-chirpy
|
|
||||||
|
|
||||||
# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm
|
|
||||||
# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed,
|
|
||||||
# otherwise, the layout language will use the default value of 'en'.
|
|
||||||
lang: de-DE
|
|
||||||
|
|
||||||
# Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker
|
|
||||||
timezone: Europe/Berlin
|
|
||||||
|
|
||||||
# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
|
|
||||||
# ↓ --------------------------
|
|
||||||
|
|
||||||
title: SitirioTV # the main title
|
|
||||||
|
|
||||||
tagline: What something is, is not the same, as what something means. # it will display as the subtitle
|
|
||||||
|
|
||||||
description: >- # used by seo meta and the atom feed
|
|
||||||
A minimal, responsive and feature-rich Jekyll theme for technical writing.
|
|
||||||
|
|
||||||
# Fill in the protocol & hostname for your site.
|
|
||||||
# E.g. 'https://username.github.io', note that it does not end with a '/'.
|
|
||||||
url: "https://justin.morlana.space"
|
|
||||||
|
|
||||||
github:
|
|
||||||
username: justinvollmer # change to your GitHub username
|
|
||||||
|
|
||||||
#twitter:
|
|
||||||
# username: twitter_username # change to your Twitter username
|
|
||||||
|
|
||||||
social:
|
|
||||||
# Change to your full name.
|
|
||||||
# It will be displayed as the default author of the posts and the copyright owner in the Footer
|
|
||||||
name: Justin
|
|
||||||
email: sitiriotv@morlana.net # change to your email address
|
|
||||||
links:
|
|
||||||
# The first element serves as the copyright owner's link
|
|
||||||
- https://tree.morlana.link/@SitirioTV # change to your Twitter homepage
|
|
||||||
|
|
||||||
# Site Verification Settings
|
|
||||||
webmaster_verifications:
|
|
||||||
google: # fill in your Google verification code
|
|
||||||
bing: # fill in your Bing verification code
|
|
||||||
alexa: # fill in your Alexa verification code
|
|
||||||
yandex: # fill in your Yandex verification code
|
|
||||||
baidu: # fill in your Baidu verification code
|
|
||||||
facebook: # fill in your Facebook verification code
|
|
||||||
|
|
||||||
# ↑ --------------------------
|
|
||||||
# The end of `jekyll-seo-tag` settings
|
|
||||||
|
|
||||||
# Web Analytics Settings
|
|
||||||
analytics:
|
|
||||||
google:
|
|
||||||
id: # fill in your Google Analytics ID
|
|
||||||
goatcounter:
|
|
||||||
id: # fill in your GoatCounter ID
|
|
||||||
umami:
|
|
||||||
id: # fill in your Umami ID
|
|
||||||
domain: # fill in your Umami domain
|
|
||||||
matomo:
|
|
||||||
id: # fill in your Matomo ID
|
|
||||||
domain: # fill in your Matomo domain
|
|
||||||
cloudflare:
|
|
||||||
id: # fill in your Cloudflare Web Analytics token
|
|
||||||
fathom:
|
|
||||||
id: # fill in your Fathom Site ID
|
|
||||||
|
|
||||||
# Page views settings
|
|
||||||
pageviews:
|
|
||||||
provider: # now only supports 'goatcounter'
|
|
||||||
|
|
||||||
# Prefer color scheme setting.
|
|
||||||
#
|
|
||||||
# Note: Keep empty will follow the system prefer color by default,
|
|
||||||
# and there will be a toggle to switch the theme between dark and light
|
|
||||||
# on the bottom left of the sidebar.
|
|
||||||
#
|
|
||||||
# Available options:
|
|
||||||
#
|
|
||||||
# light — Use the light color scheme
|
|
||||||
# dark — Use the dark color scheme
|
|
||||||
#
|
|
||||||
theme_mode: dark
|
|
||||||
|
|
||||||
# The CDN endpoint for media resources.
|
|
||||||
# Notice that once it is assigned, the CDN url
|
|
||||||
# will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/'
|
|
||||||
#
|
|
||||||
# e.g. 'https://cdn.com'
|
|
||||||
# cdn: "https://chirpy-img.netlify.app"
|
|
||||||
|
|
||||||
# the avatar on sidebar, support local or CORS resources
|
|
||||||
avatar: "https://tree.morlana.link/assets/img/4_1740692094.png"
|
|
||||||
|
|
||||||
# The URL of the site-wide social preview image used in SEO `og:image` meta tag.
|
|
||||||
# It can be overridden by a customized `page.image` in front matter.
|
|
||||||
social_preview_image: # string, local or CORS resources
|
|
||||||
|
|
||||||
# boolean type, the global switch for TOC in posts.
|
|
||||||
toc: true
|
|
||||||
|
|
||||||
comments:
|
|
||||||
# Global switch for the post-comment system. Keeping it empty means disabled.
|
|
||||||
provider: # [disqus | utterances | giscus]
|
|
||||||
# The provider options are as follows:
|
|
||||||
disqus:
|
|
||||||
shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname
|
|
||||||
# utterances settings › https://utteranc.es/
|
|
||||||
utterances:
|
|
||||||
repo: # <gh-username>/<repo>
|
|
||||||
issue_term: # < url | pathname | title | ...>
|
|
||||||
# Giscus options › https://giscus.app
|
|
||||||
giscus:
|
|
||||||
repo: # <gh-username>/<repo>
|
|
||||||
repo_id:
|
|
||||||
category:
|
|
||||||
category_id:
|
|
||||||
mapping: # optional, default to 'pathname'
|
|
||||||
strict: # optional, default to '0'
|
|
||||||
input_position: # optional, default to 'bottom'
|
|
||||||
lang: # optional, default to the value of `site.lang`
|
|
||||||
reactions_enabled: # optional, default to the value of `1`
|
|
||||||
|
|
||||||
# Self-hosted static assets, optional › https://github.com/cotes2020/chirpy-static-assets
|
|
||||||
assets:
|
|
||||||
self_host:
|
|
||||||
enabled: # boolean, keep empty means false
|
|
||||||
# specify the Jekyll environment, empty means both
|
|
||||||
# only works if `assets.self_host.enabled` is 'true'
|
|
||||||
env: # [development | production]
|
|
||||||
|
|
||||||
pwa:
|
|
||||||
enabled: true # The option for PWA feature (installable)
|
|
||||||
cache:
|
|
||||||
enabled: true # The option for PWA offline cache
|
|
||||||
# Paths defined here will be excluded from the PWA cache.
|
|
||||||
# Usually its value is the `baseurl` of another website that
|
|
||||||
# shares the same domain name as the current website.
|
|
||||||
deny_paths:
|
|
||||||
# - "/example" # URLs match `<SITE_URL>/example/*` will not be cached by the PWA
|
|
||||||
|
|
||||||
paginate: 10
|
|
||||||
|
|
||||||
# The base URL of your site
|
|
||||||
baseurl: "/"
|
|
||||||
|
|
||||||
# ------------ The following options are not recommended to be modified ------------------
|
|
||||||
|
|
||||||
kramdown:
|
|
||||||
footnote_backlink: "↩︎"
|
|
||||||
syntax_highlighter: rouge
|
|
||||||
syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options
|
|
||||||
css_class: highlight
|
|
||||||
# default_lang: console
|
|
||||||
span:
|
|
||||||
line_numbers: false
|
|
||||||
block:
|
|
||||||
line_numbers: true
|
|
||||||
start_line: 1
|
|
||||||
|
|
||||||
collections:
|
|
||||||
tabs:
|
|
||||||
output: true
|
|
||||||
sort_by: order
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
- scope:
|
|
||||||
path: "" # An empty string here means all files in the project
|
|
||||||
type: posts
|
|
||||||
values:
|
|
||||||
layout: post
|
|
||||||
comments: true # Enable comments in posts.
|
|
||||||
toc: true # Display TOC column in posts.
|
|
||||||
# DO NOT modify the following parameter unless you are confident enough
|
|
||||||
# to update the code of all other post links in this project.
|
|
||||||
permalink: /posts/:title/
|
|
||||||
- scope:
|
|
||||||
path: _drafts
|
|
||||||
values:
|
|
||||||
comments: false
|
|
||||||
- scope:
|
|
||||||
path: ""
|
|
||||||
type: tabs # see `site.collections`
|
|
||||||
values:
|
|
||||||
layout: page
|
|
||||||
permalink: /:title/
|
|
||||||
|
|
||||||
sass:
|
|
||||||
style: compressed
|
|
||||||
|
|
||||||
compress_html:
|
|
||||||
clippings: all
|
|
||||||
comments: all
|
|
||||||
endings: all
|
|
||||||
profile: false
|
|
||||||
blanklines: false
|
|
||||||
ignore:
|
|
||||||
envs: [development]
|
|
||||||
|
|
||||||
exclude:
|
|
||||||
- "*.gem"
|
|
||||||
- "*.gemspec"
|
|
||||||
- docs
|
|
||||||
- tools
|
|
||||||
- README.md
|
|
||||||
- LICENSE
|
|
||||||
- "*.config.js"
|
|
||||||
- package*.json
|
|
||||||
|
|
||||||
jekyll-archives:
|
|
||||||
enabled: [categories, tags]
|
|
||||||
layouts:
|
|
||||||
category: category
|
|
||||||
tag: tag
|
|
||||||
permalinks:
|
|
||||||
tag: /tags/:name/
|
|
||||||
category: /categories/:name/
|
|
@ -1,11 +0,0 @@
|
|||||||
## Template › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/advanced-usage.md#setting-author-url
|
|
||||||
# -------------------------------------
|
|
||||||
# {author_id}:
|
|
||||||
# name: {full name}
|
|
||||||
# twitter: {twitter_of_author}
|
|
||||||
# url: {homepage_of_author}
|
|
||||||
# -------------------------------------
|
|
||||||
|
|
||||||
sitiriotv:
|
|
||||||
name: SitirioTV | Justin
|
|
||||||
url: https://tree.morlana.link/@SitirioTV
|
|
@ -1,41 +0,0 @@
|
|||||||
# The contact options.
|
|
||||||
|
|
||||||
- type: discord
|
|
||||||
icon: "fa-brands fa-discord"
|
|
||||||
url: "https://morlana.link/discord"
|
|
||||||
|
|
||||||
#- type: twitter
|
|
||||||
# icon: "fa-brands fa-x-twitter"
|
|
||||||
|
|
||||||
- type: email
|
|
||||||
icon: "fas fa-envelope"
|
|
||||||
noblank: true # open link in current tab
|
|
||||||
|
|
||||||
- type: rss
|
|
||||||
icon: "fas fa-rss"
|
|
||||||
noblank: true
|
|
||||||
# Uncomment and complete the url below to enable more contact options
|
|
||||||
#
|
|
||||||
# - type: mastodon
|
|
||||||
# icon: 'fab fa-mastodon' # icons powered by <https://fontawesome.com/>
|
|
||||||
# url: '' # Fill with your Mastodon account page, rel="me" will be applied for verification
|
|
||||||
#
|
|
||||||
# - type: linkedin
|
|
||||||
# icon: 'fab fa-linkedin' # icons powered by <https://fontawesome.com/>
|
|
||||||
# url: '' # Fill with your Linkedin homepage
|
|
||||||
#
|
|
||||||
# - type: stack-overflow
|
|
||||||
# icon: 'fab fa-stack-overflow'
|
|
||||||
# url: '' # Fill with your stackoverflow homepage
|
|
||||||
#
|
|
||||||
# - type: bluesky
|
|
||||||
# icon: 'fa-brands fa-bluesky'
|
|
||||||
# url: '' # Fill with your Bluesky profile link
|
|
||||||
#
|
|
||||||
# - type: reddit
|
|
||||||
# icon: 'fa-brands fa-reddit'
|
|
||||||
# url: '' # Fill with your Reddit profile link
|
|
||||||
#
|
|
||||||
# - type: threads
|
|
||||||
# icon: 'fa-brands fa-threads'
|
|
||||||
# url: '' # Fill with your Threads profile link
|
|
@ -1,91 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: منشور
|
|
||||||
category: فئة
|
|
||||||
tag: وسم
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: الرئيسية
|
|
||||||
categories: الفئات
|
|
||||||
tags: الوسوم
|
|
||||||
archives: الأرشيف
|
|
||||||
about: حول
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: بحث
|
|
||||||
cancel: إلغاء
|
|
||||||
no_results: نأسف! لا يوجد نتائج.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: المحدثة مؤخرا
|
|
||||||
trending_tags: الوسوم الشائعة
|
|
||||||
toc: محتويات
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: هذا المنشور تحت ترخيص :LICENSE_NAME بواسطة المؤلف.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: بعض الحقوق محفوظة.
|
|
||||||
verbose: >-
|
|
||||||
ما لم يذكر خلاف ذلك ، يتم ترخيص منشورات المدونة على هذا الموقع
|
|
||||||
بموجب ترخيص Creative Commons Attribution 4.0 International (CC BY 4.0) من قبل المؤلف.
|
|
||||||
|
|
||||||
meta: باستخدام :PLATFORM السمة :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: عذرا, الرابط التالي غير صالح أو انه يشير إلى صفحة غير موجودة.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: يتوفر اصدار جديد للمحتوى.
|
|
||||||
update: تحديث
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: بواسطة
|
|
||||||
posted: نشّر
|
|
||||||
updated: حدّث
|
|
||||||
words: كلمات
|
|
||||||
pageview_measure: مشاهدات
|
|
||||||
read_time:
|
|
||||||
unit: دقيقة
|
|
||||||
prompt: قراءة
|
|
||||||
relate_posts: إقرأ المزيد
|
|
||||||
share: شارك
|
|
||||||
button:
|
|
||||||
next: الأجدد
|
|
||||||
previous: الأقدم
|
|
||||||
copy_code:
|
|
||||||
succeed: تم النسخ!
|
|
||||||
share_link:
|
|
||||||
title: أنسخ الرابط
|
|
||||||
succeed: تم نسخ الرابط بنجاح!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: فئة
|
|
||||||
plural: فئات
|
|
||||||
post_measure:
|
|
||||||
singular: منشور
|
|
||||||
plural: منشورات
|
|
@ -1,81 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Публикация
|
|
||||||
category: Категория
|
|
||||||
tag: Таг
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Начало
|
|
||||||
categories: Категории
|
|
||||||
tags: Тагове
|
|
||||||
archives: Архив
|
|
||||||
about: За мен
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: търси
|
|
||||||
cancel: Отмени
|
|
||||||
no_results: Упс! Не са намерени резултати.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Наскоро обновени
|
|
||||||
trending_tags: Популярни тагове
|
|
||||||
toc: Съдържание
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Тази публикация е лицензирана под :LICENSE_NAME от автора.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Някои права запазени.
|
|
||||||
verbose: >-
|
|
||||||
Освен ако не е посочено друго, публикациите в блога на този сайт са лицензирани
|
|
||||||
под лиценза Creative Commons Attribution 4.0 (CC BY 4.0) от автора.
|
|
||||||
|
|
||||||
meta: Създадено чрез :PLATFORM и :THEME тема
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Съжалявам, но на този URL адрес няма налично съдържание.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Налична е нова версия на съдържанието.
|
|
||||||
update: Обнови
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Автор
|
|
||||||
posted: Публикувана
|
|
||||||
updated: Обновена
|
|
||||||
words: думи
|
|
||||||
pageview_measure: преглеждания
|
|
||||||
read_time:
|
|
||||||
unit: мин
|
|
||||||
prompt: четиво
|
|
||||||
relate_posts: Още за четене
|
|
||||||
share: Споделете
|
|
||||||
button:
|
|
||||||
next: По-нови
|
|
||||||
previous: По-стари
|
|
||||||
copy_code:
|
|
||||||
succeed: Копирано!
|
|
||||||
share_link:
|
|
||||||
title: Копирай линк
|
|
||||||
succeed: Линкът е копиран успешно!
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: категория
|
|
||||||
plural: категории
|
|
||||||
post_measure:
|
|
||||||
singular: публикация
|
|
||||||
plural: публикации
|
|
@ -1,89 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Příspěvek
|
|
||||||
category: Kategorie
|
|
||||||
tag: Štítek
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Domů
|
|
||||||
categories: Kategorie
|
|
||||||
tags: Štítky
|
|
||||||
archives: Archivy
|
|
||||||
about: O mně
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: hledat
|
|
||||||
cancel: Zrušit
|
|
||||||
no_results: Ups! Žádný výsledek nenalezen.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Nedávno aktualizováno
|
|
||||||
trending_tags: Trendy štítky
|
|
||||||
toc: Obsah
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Tento příspěvek je licencován pod :LICENSE_NAME autorem.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Některá práva vyhrazena.
|
|
||||||
verbose: >-
|
|
||||||
Pokud není uvedeno jinak, jsou příspěvky na tomto webu licencovány
|
|
||||||
pod licencí Creative Commons Attribution 4.0 International (CC BY 4.0) Licence autora.
|
|
||||||
|
|
||||||
meta: Použití :PLATFORM s motivem :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Omlouváme se, adresu URL jsme špatně umístili nebo odkazuje na něco, co neexistuje.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Je k dispozici nová verze obsahu.
|
|
||||||
update: Aktualizace
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Od
|
|
||||||
posted: Zveřejněno
|
|
||||||
updated: Aktualizováno
|
|
||||||
words: slova
|
|
||||||
pageview_measure: zhlednutí
|
|
||||||
read_time:
|
|
||||||
unit: minut
|
|
||||||
prompt: čtení
|
|
||||||
relate_posts: Další čtení
|
|
||||||
share: Sdílet
|
|
||||||
button:
|
|
||||||
next: Novější
|
|
||||||
previous: Starší
|
|
||||||
copy_code:
|
|
||||||
succeed: Zkopírováno!
|
|
||||||
share_link:
|
|
||||||
title: Kopírovat odkaz
|
|
||||||
succeed: Zkopírováno!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: kategorie
|
|
||||||
post_measure:
|
|
||||||
singular: příspěvěk
|
|
||||||
plural: příspěvky
|
|
@ -1,87 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Eintrag
|
|
||||||
category: Kategorie
|
|
||||||
tag: Tag
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Startseite
|
|
||||||
categories: Kategorien
|
|
||||||
tags: Tags
|
|
||||||
archives: Archiv
|
|
||||||
about: Über
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: Suche
|
|
||||||
cancel: Abbrechen
|
|
||||||
no_results: Ups! Keine Einträge gefunden.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Kürzlich aktualisiert
|
|
||||||
trending_tags: Beliebte Tags
|
|
||||||
toc: Inhalt
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Dieser Eintrag ist vom Autor unter :LICENSE_NAME lizensiert.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Einige Rechte vorbehalten.
|
|
||||||
verbose: >-
|
|
||||||
Alle Einträge auf dieser Seite stehen, soweit nicht anders angegeben, unter der Lizenz Creative Commons Attribution 4.0 (CC BY 4.0).
|
|
||||||
|
|
||||||
meta: Powered by :PLATFORM with :THEME theme
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Entschuldigung, dieser Link verweist auf keine vorhandene Ressource.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Eine neue Version ist verfügbar.
|
|
||||||
update: Neue Version
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Von
|
|
||||||
posted: Veröffentlicht
|
|
||||||
updated: Aktualisiert
|
|
||||||
words: Wörter
|
|
||||||
pageview_measure: Aufrufe
|
|
||||||
read_time:
|
|
||||||
unit: Minuten
|
|
||||||
prompt: Lesezeit
|
|
||||||
relate_posts: Weiterlesen
|
|
||||||
share: Teilen
|
|
||||||
button:
|
|
||||||
next: Nächster Eintrag
|
|
||||||
previous: Eintrag vorher
|
|
||||||
copy_code:
|
|
||||||
succeed: Kopiert!
|
|
||||||
share_link:
|
|
||||||
title: Link kopieren
|
|
||||||
succeed: Link erfolgreich kopiert!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%d.%m.%Y"
|
|
||||||
dayjs: "DD.MM.YYYY"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: Kategorie
|
|
||||||
plural: Kategorien
|
|
||||||
post_measure:
|
|
||||||
singular: Eintrag
|
|
||||||
plural: Einträge
|
|
@ -1,91 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Δημοσίευση
|
|
||||||
category: Κατηγορία
|
|
||||||
tag: Ετικέτα
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Home
|
|
||||||
categories: Κατηγορίες
|
|
||||||
tags: Ετικέτες
|
|
||||||
archives: Αρχεία
|
|
||||||
about: Σχετικά
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: αναζήτηση
|
|
||||||
cancel: Ακύρωση
|
|
||||||
no_results: Oops! Κανένα αποτέλεσμα δεν βρέθηκε.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Σχετικά ενημερωμένα
|
|
||||||
trending_tags: Ετικέτες τάσης
|
|
||||||
toc: Περιεχόμενα
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Η δημοσίευση αυτή βρίσκεται υπο την άδεια :LICENSE_NAME Greekforce1821.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Ορισμένα δικαιώματα reserved.
|
|
||||||
verbose: >-
|
|
||||||
Εκτός αλλού ή οπουδήποτε αλλού, τα blog posts σε αυτήν την σελίδα βρίσκονται υπο την άδεια
|
|
||||||
Creative Commons Attribution 4.0 International (CC BY 4.0) του δημιουργού.
|
|
||||||
|
|
||||||
meta: Αξιοποιώντας την :PLATFORM theme :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Συγνώμη, έχουμε τοποθετήσει λάθος αυτήν την διεύθυνση URL ή υποδεικνύει κάτι που δεν υπάρχει.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Υπάρχει διαθέσιμη μια νέα έκδοση του περιεχομένου.
|
|
||||||
update: Ενημέρωση
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Από
|
|
||||||
posted: Δημοσιεύθηκε
|
|
||||||
updated: Ενημερώθηκε
|
|
||||||
words: λέξεις
|
|
||||||
pageview_measure: προβολές
|
|
||||||
read_time:
|
|
||||||
unit: Λεπτά
|
|
||||||
prompt: διαβάσματος
|
|
||||||
relate_posts: Περισσότερα
|
|
||||||
share: Κοινοποιήστε
|
|
||||||
button:
|
|
||||||
next: Νεότερα
|
|
||||||
previous: Παλαιότερα
|
|
||||||
copy_code:
|
|
||||||
succeed: Αντιγράφθηκε!
|
|
||||||
share_link:
|
|
||||||
title: Αντιγραφή συνδέσμου
|
|
||||||
succeed: Η διεύθυνση αντιγράφθηκε με επιτυχία!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: Κατηγορία
|
|
||||||
plural: Κατηγορίες
|
|
||||||
post_measure:
|
|
||||||
singular: Δημοσίευση
|
|
||||||
plural: Δημοσιεύσεις
|
|
@ -1,91 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Post
|
|
||||||
category: Category
|
|
||||||
tag: Tag
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Home
|
|
||||||
categories: Categories
|
|
||||||
tags: Tags
|
|
||||||
archives: Archives
|
|
||||||
about: About
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: search
|
|
||||||
cancel: Cancel
|
|
||||||
no_results: Oops! No results found.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Recently Updated
|
|
||||||
trending_tags: Trending Tags
|
|
||||||
toc: Contents
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: This post is licensed under :LICENSE_NAME by the author.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Some rights reserved.
|
|
||||||
verbose: >-
|
|
||||||
Except where otherwise noted, the blog posts on this site are licensed
|
|
||||||
under the Creative Commons Attribution 4.0 International (CC BY 4.0) License by the author.
|
|
||||||
|
|
||||||
meta: Using the :THEME theme for :PLATFORM.
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: A new version of content is available.
|
|
||||||
update: Update
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: By
|
|
||||||
posted: Posted
|
|
||||||
updated: Updated
|
|
||||||
words: words
|
|
||||||
pageview_measure: views
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: read
|
|
||||||
relate_posts: Further Reading
|
|
||||||
share: Share
|
|
||||||
button:
|
|
||||||
next: Newer
|
|
||||||
previous: Older
|
|
||||||
copy_code:
|
|
||||||
succeed: Copied!
|
|
||||||
share_link:
|
|
||||||
title: Copy link
|
|
||||||
succeed: Link copied successfully!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: category
|
|
||||||
plural: categories
|
|
||||||
post_measure:
|
|
||||||
singular: post
|
|
||||||
plural: posts
|
|
@ -1,77 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Entrada
|
|
||||||
category: Categoría
|
|
||||||
tag: Etiqueta
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Inicio
|
|
||||||
categories: Categorías
|
|
||||||
tags: Etiquetas
|
|
||||||
archives: Archivo
|
|
||||||
about: Acerca de
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: Buscar
|
|
||||||
cancel: Cancelar
|
|
||||||
no_results: ¡Oops! No se encuentran resultados.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Actualizado recientemente
|
|
||||||
trending_tags: Etiquetas populares
|
|
||||||
toc: Contenido
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Esta entrada está licenciada bajo :LICENSE_NAME por el autor.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Algunos derechos reservados.
|
|
||||||
verbose: >-
|
|
||||||
Salvo que se indique explícitamente, las entradas de este blog están licenciadas
|
|
||||||
bajo la Creative Commons Attribution 4.0 International (CC BY 4.0) License por el autor.
|
|
||||||
|
|
||||||
meta: Hecho con :PLATFORM usando el tema :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Lo sentimos, hemos perdido esa URL o apunta a algo que no existe.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Hay una nueva versión de contenido disponible.
|
|
||||||
update: Actualizar
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Por
|
|
||||||
posted: Publicado
|
|
||||||
updated: Actualizado
|
|
||||||
words: palabras
|
|
||||||
pageview_measure: visitas
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: " de lectura"
|
|
||||||
relate_posts: Lecturas adicionales
|
|
||||||
share: Compartir
|
|
||||||
button:
|
|
||||||
next: Nuevo
|
|
||||||
previous: Anterior
|
|
||||||
copy_code:
|
|
||||||
succeed: ¡Copiado!
|
|
||||||
share_link:
|
|
||||||
title: Copiar enlace
|
|
||||||
succeed: ¡Enlace copiado!
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: categorias
|
|
||||||
post_measure: entradas
|
|
@ -1,90 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Julkaisu
|
|
||||||
category: Kateogoria
|
|
||||||
tag: Tagi
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Koti
|
|
||||||
categories: Kateogoriat
|
|
||||||
tags: Tagit
|
|
||||||
archives: Arkistot
|
|
||||||
about: Minusta
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: etsi
|
|
||||||
cancel: Peruuta
|
|
||||||
no_results: Hups! Ei tuloksia.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Viimeksi päivitetty
|
|
||||||
trending_tags: Trendaavat tagit
|
|
||||||
toc: Sisältö
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Tämä julkaisu on lisenssoitu :LICENSE_NAME julkaisijan toimesta.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Jotkut oikeudet pidätetään.
|
|
||||||
verbose: >-
|
|
||||||
Paitsi jos erikseen mainitaan on kaikki sisältö Creative Commons Attribution 4.0 International (CC BY 4.0) Lisensoitu kirjoittajan toimesta.
|
|
||||||
|
|
||||||
meta: Käytetään :PLATFORM iä Teema :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Valitettavasti tällä URL-osoitteella ei ole saatavilla sisältöä.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Uusi versio sisällöstä on saatavilla.
|
|
||||||
update: Päivitä
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Kirjoittaja
|
|
||||||
posted: Julkaistu
|
|
||||||
updated: Päivitetty
|
|
||||||
words: sanaa
|
|
||||||
pageview_measure: katselukertoja
|
|
||||||
read_time:
|
|
||||||
unit: minuuttia
|
|
||||||
prompt: lukea
|
|
||||||
relate_posts: Jatka lukemista
|
|
||||||
share: Jaa
|
|
||||||
button:
|
|
||||||
next: Uudempi
|
|
||||||
previous: Vanhempi
|
|
||||||
copy_code:
|
|
||||||
succeed: Kopiotu!
|
|
||||||
share_link:
|
|
||||||
title: Kopioi linkki
|
|
||||||
succeed: Linkki kopioitu onnistuneesti!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: kategoria
|
|
||||||
plural: kategoriat
|
|
||||||
post_measure:
|
|
||||||
singular: julkaisu
|
|
||||||
plural: julkaisut
|
|
@ -1,77 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Post
|
|
||||||
category: Catégorie
|
|
||||||
tag: Tag
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Accueil
|
|
||||||
categories: Catégories
|
|
||||||
tags: Tags
|
|
||||||
archives: Archives
|
|
||||||
about: À propos
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: recherche
|
|
||||||
cancel: Annuler
|
|
||||||
no_results: Oups ! Aucun résultat trouvé.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Récemment mis à jour
|
|
||||||
trending_tags: Tags tendance
|
|
||||||
toc: Contenu
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Cet article est sous licence :LICENSE_NAME par l'auteur.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/deed.fr
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Certains droits réservés.
|
|
||||||
verbose: >-
|
|
||||||
Sauf mention contraire, les articles de ce site sont publiés
|
|
||||||
sous la licence Creative Commons Attribution 4.0 International (CC BY 4.0) par l'auteur.
|
|
||||||
|
|
||||||
meta: Propulsé par :PLATFORM avec le thème :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Désolé, nous avons égaré cette URL ou elle pointe vers quelque chose qui n'existe pas.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Une nouvelle version du contenu est disponible.
|
|
||||||
update: Mise à jour
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Par
|
|
||||||
posted: Posté
|
|
||||||
updated: Mis à jour
|
|
||||||
words: mots
|
|
||||||
pageview_measure: vues
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: lire
|
|
||||||
relate_posts: Autres lectures
|
|
||||||
share: Partager
|
|
||||||
button:
|
|
||||||
next: Plus récent
|
|
||||||
previous: Plus ancien
|
|
||||||
copy_code:
|
|
||||||
succeed: Copié !
|
|
||||||
share_link:
|
|
||||||
title: Copier le lien
|
|
||||||
succeed: Lien copié avec succès !
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: catégories
|
|
||||||
post_measure: posts
|
|
@ -1,92 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Bejegyzés
|
|
||||||
category: Kategória
|
|
||||||
tag: Címke
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Kezdőlap
|
|
||||||
categories: Kategóriák
|
|
||||||
tags: Címkék
|
|
||||||
archives: Archívum
|
|
||||||
about: Bemutatkozás
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: keresés
|
|
||||||
cancel: Mégse
|
|
||||||
no_results: Hoppá! Nincs találat a keresésre.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Legutóbb frissítve
|
|
||||||
trending_tags: Népszerű Címkék
|
|
||||||
toc: Tartalom
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: A bejegyzést a szerző :LICENSE_NAME licenc alatt engedélyezte.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Néhány jog fenntartva.
|
|
||||||
verbose: >-
|
|
||||||
Az oldalon található tartalmak
|
|
||||||
Creative Commons Attribution 4.0 International (CC BY 4.0) licenccel rendelkeznek,
|
|
||||||
hacsak másképp nincs jelezve.
|
|
||||||
|
|
||||||
meta: Készítve :THEME témával a :PLATFORM platformra.
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Elérhető a tartalom új verziója.
|
|
||||||
update: Frissítés
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Szerző
|
|
||||||
posted: Létrehozva
|
|
||||||
updated: Frissítve
|
|
||||||
words: szó
|
|
||||||
pageview_measure: látogató
|
|
||||||
read_time:
|
|
||||||
unit: perc
|
|
||||||
prompt: elolvasni
|
|
||||||
relate_posts: További olvasnivaló
|
|
||||||
share: Megosztás
|
|
||||||
button:
|
|
||||||
next: Újabb
|
|
||||||
previous: Régebbi
|
|
||||||
copy_code:
|
|
||||||
succeed: Másolva!
|
|
||||||
share_link:
|
|
||||||
title: Link másolása
|
|
||||||
succeed: Link sikeresen másolva!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%Y. %B. %e."
|
|
||||||
dayjs: "YYYY. MMMM D."
|
|
||||||
archives:
|
|
||||||
strftime: "%B"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: kategória
|
|
||||||
plural: kategória
|
|
||||||
post_measure:
|
|
||||||
singular: bejegyzés
|
|
||||||
plural: bejegyzés
|
|
@ -1,77 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Postingan
|
|
||||||
category: Kategori
|
|
||||||
tag: Tagar
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Beranda
|
|
||||||
categories: Kategori
|
|
||||||
tags: Tagar
|
|
||||||
archives: Arsip
|
|
||||||
about: Tentang
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: Cari
|
|
||||||
cancel: Batal
|
|
||||||
no_results: Ups! Tidak ada hasil yang ditemukan.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Postingan Terbaru
|
|
||||||
trending_tags: Tagar Terpopuler
|
|
||||||
toc: Konten
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Postingan ini dilisensikan di bawah :LICENSE_NAME oleh penulis.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Sebagian konten dilindungi.
|
|
||||||
verbose: >-
|
|
||||||
Kecuali jika dinyatakan, Postingan blog di situs ini dilisensikan
|
|
||||||
di bawah Lisensi Creative Commons Attribution 4.0 International (CC BY 4.0) oleh penulis.
|
|
||||||
|
|
||||||
meta: Didukung oleh :PLATFORM dengan tema :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Versi konten baru tersedia.
|
|
||||||
update: Perbarui
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Oleh
|
|
||||||
posted: Diterbitkan
|
|
||||||
updated: Diperbarui
|
|
||||||
words: kata
|
|
||||||
pageview_measure: dilihat
|
|
||||||
read_time:
|
|
||||||
unit: menit
|
|
||||||
prompt: baca
|
|
||||||
relate_posts: Postingan Lainya
|
|
||||||
share: Bagikan
|
|
||||||
button:
|
|
||||||
next: Terbaru
|
|
||||||
previous: Terlama
|
|
||||||
copy_code:
|
|
||||||
succeed: Disalin!
|
|
||||||
share_link:
|
|
||||||
title: Salin tautan
|
|
||||||
succeed: Tautan berhasil disalin!
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: kategori
|
|
||||||
post_measure: Postingan
|
|
@ -1,90 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Post
|
|
||||||
category: Categoria
|
|
||||||
tag: Tag
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Pagina principale
|
|
||||||
categories: Categorie
|
|
||||||
tags: Tags
|
|
||||||
archives: Archivio
|
|
||||||
about: Informazioni
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: ricerca
|
|
||||||
cancel: Cancella
|
|
||||||
no_results: Oops! La ricerca non ha fornito risultati.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Aggiornati recentemente
|
|
||||||
trending_tags: Tags più cliccati
|
|
||||||
toc: Contenuti
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Questo post è sotto licenza :LICENSE_NAME a nome dell'autore.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Alcuni diritti riservati.
|
|
||||||
verbose: >-
|
|
||||||
Eccetto quando esplicitamente menzionato, i post di questo blog sono da ritenersi sotto
|
|
||||||
i termini di licenza Creative Commons Attribution 4.0 International (CC BY 4.0).
|
|
||||||
|
|
||||||
meta: Servizio offerto da :PLATFORM con tema :THEME
|
|
||||||
not_found:
|
|
||||||
statement: Ci scusiamo, non è stato possibile trovare l'URL in questione. Potrebbe puntare ad una pagina non esistente.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Nuova versione del contenuto disponibile.
|
|
||||||
update: Aggiornamento
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Da
|
|
||||||
posted: Postato
|
|
||||||
updated: Aggiornato
|
|
||||||
words: parole
|
|
||||||
pageview_measure: visioni
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: lettura
|
|
||||||
relate_posts: Continua a leggere
|
|
||||||
share: Condividi
|
|
||||||
button:
|
|
||||||
next: Più recenti
|
|
||||||
previous: Meno recenti
|
|
||||||
copy_code:
|
|
||||||
succeed: Copiato!
|
|
||||||
share_link:
|
|
||||||
title: Copia link
|
|
||||||
succeed: Link copiato con successo!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: categoria
|
|
||||||
plural: categorie
|
|
||||||
post_measure:
|
|
||||||
singular: post
|
|
||||||
plural: posts
|
|
@ -1,84 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: 포스트
|
|
||||||
category: 카테고리
|
|
||||||
tag: 태그
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: 홈
|
|
||||||
categories: 카테고리
|
|
||||||
tags: 태그
|
|
||||||
archives: 아카이브
|
|
||||||
about: 정보
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: 검색
|
|
||||||
cancel: 취소
|
|
||||||
no_results: 검색 결과가 없습니다.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: 최근 업데이트
|
|
||||||
trending_tags: 인기 태그
|
|
||||||
toc: 바로가기
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: 이 기사는 저작권자의 :LICENSE_NAME 라이센스를 따릅니다.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: 일부 권리 보유
|
|
||||||
verbose: >-
|
|
||||||
명시되지 않는 한 이 사이트의 블로그 게시물은 작성자의
|
|
||||||
Creative Commons Attribution 4.0 International(CC BY 4.0) 라이선스에 따라 사용이 허가되었습니다.
|
|
||||||
|
|
||||||
meta: Powered by :PLATFORM with :THEME theme
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: 해당 URL은 존재하지 않습니다.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: 새 버전의 콘텐츠를 사용할 수 있습니다.
|
|
||||||
update: 업데이트
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: By
|
|
||||||
posted: 게시
|
|
||||||
updated: 업데이트
|
|
||||||
words: 단어
|
|
||||||
pageview_measure: 조회
|
|
||||||
read_time:
|
|
||||||
unit: 분
|
|
||||||
prompt: 읽는 시간
|
|
||||||
relate_posts: 관련된 글
|
|
||||||
share: 공유하기
|
|
||||||
button:
|
|
||||||
next: 다음 글
|
|
||||||
previous: 이전 글
|
|
||||||
copy_code:
|
|
||||||
succeed: 복사되었습니다!
|
|
||||||
share_link:
|
|
||||||
title: 링크 복사하기
|
|
||||||
succeed: 링크가 복사되었습니다!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%Y/%m/%d"
|
|
||||||
dayjs: "YYYY/MM/DD"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: 카테고리
|
|
||||||
post_measure: 포스트
|
|
@ -1,77 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: ပို့စ်
|
|
||||||
category: ကဏ္ဍ
|
|
||||||
tag: နာမ(တက်ဂ်)
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: အဓိကစာမျက်နှာ
|
|
||||||
categories: ကဏ္ဍများ
|
|
||||||
tags: နာမ(တက်ဂ်)များ
|
|
||||||
archives: မှတ်တမ်းတိုက်
|
|
||||||
about: အကြောင်းအရာ
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: ရှာဖွေမည်
|
|
||||||
cancel: ဖျက်သိမ်းမည်
|
|
||||||
no_results: အိုး! ဘာမှမရှိပါ
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: မကြာသေးမီကမွမ်းမံထားသည်
|
|
||||||
trending_tags: ခေတ်စားနေသည့်တက်ဂ်များ
|
|
||||||
toc: အကြောင်းအရာများ
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: ဤပို့စ်သည်စာရေးသူ၏ :LICENSE_NAME လိုင်စင်ရထားသည်။
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: မူပိုင်ခွင့်အချို့ကို လက်ဝယ်ထားသည်။
|
|
||||||
verbose: >-
|
|
||||||
အခြားမှတ်သားထားချက်များမှလွဲ၍ ဤဆိုက်ရှိ ဘလော့ဂ်ပို့စ်များသည် စာရေးသူ၏
|
|
||||||
Creative Commons Attribution 4.0 International (CC BY 4.0) အောက်တွင် လိုင်စင်ရထားပါသည်။
|
|
||||||
|
|
||||||
meta: Powered by :PLATFORM with :THEME theme
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: ဝမ်းနည်းပါသည်၊ ကျွန်ုပ်တို့သည် အဆိုပါ URL ကို မှားယွင်းစွာ နေရာချထားခြင်း သို့မဟုတ် ၎င်းသည် မရှိသောအရာကို ညွှန်ပြနေပါသည်။
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: အကြောင်းအရာဗားရှင်းအသစ်ကို ရနိုင်ပါပြီ။
|
|
||||||
update: အပ်ဒိတ်
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: ကရေးသားခဲ့သည်။
|
|
||||||
posted: တင်ထားခဲ့သည်။
|
|
||||||
updated: မွမ်းမံထားခဲ့သည်။
|
|
||||||
words: စကားလုံးများ
|
|
||||||
pageview_measure: အမြင်များ
|
|
||||||
read_time:
|
|
||||||
unit: မိနစ်
|
|
||||||
prompt: ဖတ်ပါမည်
|
|
||||||
relate_posts: နောက်ထပ်ဖတ်ရန်
|
|
||||||
share: မျှဝေရန်
|
|
||||||
button:
|
|
||||||
next: အသစ်များ
|
|
||||||
previous: အဟောင်းများ
|
|
||||||
copy_code:
|
|
||||||
succeed: ကူးယူလိုက်ပြီ။
|
|
||||||
share_link:
|
|
||||||
title: လင့်ခ်ကို ကူးယူရန်
|
|
||||||
succeed: လင့်ခ်ကို ကူးယူလိုက်ပြီ။
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: ကဏ္ဍများ
|
|
||||||
post_measure: ပို့စ်များ
|
|
@ -1,77 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Post
|
|
||||||
category: Categoria
|
|
||||||
tag: Tag
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Home
|
|
||||||
categories: Categorias
|
|
||||||
tags: Tags
|
|
||||||
archives: Arquivos
|
|
||||||
about: Sobre
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: Buscar
|
|
||||||
cancel: Cancelar
|
|
||||||
no_results: Oops! Nenhum resultado encontrado.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Atualizados recentemente
|
|
||||||
trending_tags: Trending Tags
|
|
||||||
toc: Conteúdo
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Esta postagem está licenciada sob :LICENSE_NAME pelo autor.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Alguns direitos reservados.
|
|
||||||
verbose: >-
|
|
||||||
Exceto onde indicado de outra forma, as postagens do blog neste site são licenciadas sob a
|
|
||||||
Creative Commons Attribution 4.0 International (CC BY 4.0) License pelo autor.
|
|
||||||
|
|
||||||
meta: Feito com :PLATFORM usando o tema :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Desculpe, a página não foi encontrada.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Uma nova versão do conteúdo está disponível.
|
|
||||||
update: atualização
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Por
|
|
||||||
posted: Postado em
|
|
||||||
updated: Atualizado
|
|
||||||
words: palavras
|
|
||||||
pageview_measure: visualizações
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: " de leitura"
|
|
||||||
relate_posts: Leia também
|
|
||||||
share: Compartilhar
|
|
||||||
button:
|
|
||||||
next: Próximo
|
|
||||||
previous: Anterior
|
|
||||||
copy_code:
|
|
||||||
succeed: Copiado!
|
|
||||||
share_link:
|
|
||||||
title: Copie o link
|
|
||||||
succeed: Link copiado com sucesso!
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: categorias
|
|
||||||
post_measure: posts
|
|
@ -1,87 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Пост
|
|
||||||
category: Категория
|
|
||||||
tag: Тег
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Главная
|
|
||||||
categories: Категории
|
|
||||||
tags: Теги
|
|
||||||
archives: Архив
|
|
||||||
about: О сайте
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: поиск
|
|
||||||
cancel: Отмена
|
|
||||||
no_results: Упс! Ничего не найдено.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Недавно обновлено
|
|
||||||
trending_tags: Популярные теги
|
|
||||||
toc: Содержание
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Авторский пост защищен лицензией :LICENSE_NAME.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Некоторые права защищены.
|
|
||||||
verbose: >-
|
|
||||||
Если не указано иное, авторские посты на этом сайте защищены лицензией Creative Commons Attribution 4.0 International (CC BY 4.0).
|
|
||||||
|
|
||||||
meta: Использует тему :THEME для :PLATFORM
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Извините, мы перепутали URL-адрес или он указывает на что-то несуществующее.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Доступна новая версия контента.
|
|
||||||
update: Обновить
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Автор
|
|
||||||
posted: Опубликовано
|
|
||||||
updated: Обновлено
|
|
||||||
words: слов
|
|
||||||
pageview_measure: просмотров
|
|
||||||
read_time:
|
|
||||||
unit: мин.
|
|
||||||
prompt: чтения
|
|
||||||
relate_posts: Похожие посты
|
|
||||||
share: Поделиться
|
|
||||||
button:
|
|
||||||
next: Следующий пост
|
|
||||||
previous: Предыдущий пост
|
|
||||||
copy_code:
|
|
||||||
succeed: Скопировано!
|
|
||||||
share_link:
|
|
||||||
title: Скопировать ссылку
|
|
||||||
succeed: Ссылка успешно скопирована!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%d.%m.%Y"
|
|
||||||
dayjs: "DD.MM.YYYY"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: категория
|
|
||||||
plural: категории
|
|
||||||
post_measure:
|
|
||||||
singular: пост
|
|
||||||
plural: посты
|
|
@ -1,91 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Objava #Post
|
|
||||||
category: Kategorija #Category
|
|
||||||
tag: Oznaka #Tag
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Domov #Home
|
|
||||||
categories: Kategorije #Categories
|
|
||||||
tags: Oznake #Tags
|
|
||||||
archives: Arhiv #Archives
|
|
||||||
about: O meni #About
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: išči #search
|
|
||||||
cancel: Prekliči #Cancel
|
|
||||||
no_results: Ups! Vsebina ni bila najdena #Oops! No results found.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Nedavno Posodobljeno #Recently Updated
|
|
||||||
trending_tags: Priljubljene Oznake #Trending Tags
|
|
||||||
toc: Vsebina #Contents
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Ta objava je licencirana pod :LICENCE_NAME s strani avtorja. #This post is licensed under :LICENSE_NAME by the author.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Nekatere pravice pridržane. #Some rights reserved.
|
|
||||||
verbose: >-
|
|
||||||
Razen kjer navedeno drugače, vse objave spletnega dnevnika so licencirane
|
|
||||||
pod Creative Commons Attribution 4.0 International (CC BY 4.0) s strani avtorja.
|
|
||||||
|
|
||||||
meta: Uporabljena :PLATFORM tema :THEME #Using the :PLATFORM theme :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Oprostite, hiperpovezava je neustrezna ali vsebina ne obstajata. #Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Novejša različica vsebine je na voljo. #A new version of content is available.
|
|
||||||
update: Posodobi #Update
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Od #By
|
|
||||||
posted: Objavljeno #Posted
|
|
||||||
updated: Posodobljeno #Updated
|
|
||||||
words: besede #words
|
|
||||||
pageview_measure: ogledi #views
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: beri #read
|
|
||||||
relate_posts: Nadaljnje branje #Further Reading
|
|
||||||
share: Deli #Share
|
|
||||||
button:
|
|
||||||
next: Novejše #Newer
|
|
||||||
previous: Starejše #Older
|
|
||||||
copy_code:
|
|
||||||
succeed: Kopirano! #Copied!
|
|
||||||
share_link:
|
|
||||||
title: Kopiraj povezavo #Copy link
|
|
||||||
succeed: Povezava uspešno kopirana! #Link copied successfully!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%e %b, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: kategorija #category
|
|
||||||
plural: kategorije #categories
|
|
||||||
post_measure:
|
|
||||||
singular: objava #post
|
|
||||||
plural: objave #posts
|
|
@ -1,91 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Inlägg #Post
|
|
||||||
category: Kategori #Category
|
|
||||||
tag: Tagga #Tag
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Hem #Home
|
|
||||||
categories: Kategorier #Categories
|
|
||||||
tags: Taggar #Tags
|
|
||||||
archives: Arkiv #Archives
|
|
||||||
about: Om #About
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: sök
|
|
||||||
cancel: Avbryt
|
|
||||||
no_results: Hoppsan! Hittade inga sökträffar.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Senast uppdaterad
|
|
||||||
trending_tags: Trendande taggar
|
|
||||||
toc: Innehåll
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Den här posten är publicerad under licensen :LICENSE_NAME av författaren.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Vissa rättigheter är reserverade.
|
|
||||||
verbose: >-
|
|
||||||
Om inte annat anges är blogginläggen på denna webbplats licensierade
|
|
||||||
under Creative Commons Attribution 4.0 International (CC BY 4.0) av författaren.
|
|
||||||
|
|
||||||
meta: Byggd med :PLATFORM och temat :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Ursäkta, vi har tappat bort den här webbadressen eller så pekar den på något som inte längre finns.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Det finns en ny version av innehållet.
|
|
||||||
update: Uppdatera sidan
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Av
|
|
||||||
posted: Postad
|
|
||||||
updated: Uppdaterad
|
|
||||||
words: ord
|
|
||||||
pageview_measure: visningar
|
|
||||||
read_time:
|
|
||||||
unit: min
|
|
||||||
prompt: läsning
|
|
||||||
relate_posts: Mer läsning
|
|
||||||
share: Dela
|
|
||||||
button:
|
|
||||||
next: Nyare
|
|
||||||
previous: Äldre
|
|
||||||
copy_code:
|
|
||||||
succeed: Kopierat!
|
|
||||||
share_link:
|
|
||||||
title: Kopiera länk
|
|
||||||
succeed: Länken har kopierats!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: kategori
|
|
||||||
plural: kategorier
|
|
||||||
post_measure:
|
|
||||||
singular: inlägg
|
|
||||||
plural: inlägg
|
|
@ -1,91 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: โพสต์
|
|
||||||
category: หมวดหมู่
|
|
||||||
tag: แท็ก
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: หน้าแรก
|
|
||||||
categories: หมวดหมู่
|
|
||||||
tags: แท็ก
|
|
||||||
archives: คลังเก็บ
|
|
||||||
about: เกี่ยวกับ
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: ค้นหา
|
|
||||||
cancel: ยกเลิก
|
|
||||||
no_results: โอ๊ะ! ไม่พบผลลัพธ์
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: อัปเดตล่าสุด
|
|
||||||
trending_tags: แท็กยอดนิยม
|
|
||||||
toc: เนื้อหา
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: โพสต์นี้อยู่ภายใต้การอนุญาต :LICENSE_NAME โดยผู้เขียน
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: สงวนลิขสิทธิ์เป็นบางส่วน
|
|
||||||
verbose: >-
|
|
||||||
เว้นแต่ว่าจะระบุเป็นอย่างอื่น โพสต์บนเว็บไซต์นี้อยู่ภายใต้
|
|
||||||
สัญญาอนุญาตครีเอทีฟคอมมอนส์แบบ 4.0 นานาชาติ (CC BY 4.0) โดยผู้เขียน
|
|
||||||
|
|
||||||
meta: กำลังใช้ธีมของ :PLATFORM ชื่อ :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: ขออภัย เราวาง URL นั้นไว้ผิดที่ หรือมันชี้ไปยังสิ่งที่ไม่มีอยู่
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: มีเวอร์ชันใหม่ของเนื้อหา
|
|
||||||
update: อัปเดต
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: โดย
|
|
||||||
posted: โพสต์เมื่อ
|
|
||||||
updated: อัปเดตเมื่อ
|
|
||||||
words: คำ
|
|
||||||
pageview_measure: ครั้ง
|
|
||||||
read_time:
|
|
||||||
unit: นาที
|
|
||||||
prompt: อ่าน
|
|
||||||
relate_posts: อ่านต่อ
|
|
||||||
share: แชร์
|
|
||||||
button:
|
|
||||||
next: ใหม่กว่า
|
|
||||||
previous: เก่ากว่า
|
|
||||||
copy_code:
|
|
||||||
succeed: คัดลอกแล้ว!
|
|
||||||
share_link:
|
|
||||||
title: คัดลอกลิงก์
|
|
||||||
succeed: คัดลอกลิงก์เรียบร้อยแล้ว!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%b %e, %Y"
|
|
||||||
dayjs: "ll"
|
|
||||||
archives:
|
|
||||||
strftime: "%b"
|
|
||||||
dayjs: "MMM"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure:
|
|
||||||
singular: หมวดหมู่
|
|
||||||
plural: หมวดหมู่
|
|
||||||
post_measure:
|
|
||||||
singular: โพสต์
|
|
||||||
plural: โพสต์
|
|
@ -1,77 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Gönderi
|
|
||||||
category: Kategori
|
|
||||||
tag: Etiket
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Ana Sayfa
|
|
||||||
categories: Kategoriler
|
|
||||||
tags: Etiketler
|
|
||||||
archives: Arşiv
|
|
||||||
about: Hakkında
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: Ara...
|
|
||||||
cancel: İptal
|
|
||||||
no_results: Hop! Öyle bir şey bulamadım.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Son Güncellenenler
|
|
||||||
trending_tags: Yükselen Etiketler
|
|
||||||
toc: İçindekiler
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Bu gönderi :LICENSE_NAME lisansı altındadır.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/deed.tr
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Bazı hakları saklıdır.
|
|
||||||
verbose: >-
|
|
||||||
Aksi belirtilmediği sürece, bu sitedeki gönderiler Creative Commons Atıf 4.0 Uluslararası (CC BY 4.0) Lisansı altındadır.
|
|
||||||
Kısaca sayfa linkini vererek değiştirebilir / paylaşabilirsiniz.
|
|
||||||
|
|
||||||
meta: :PLATFORM ve :THEME teması
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Üzgünüz, bu linki yanlış yerleştirdik veya var olmayan bir şeye işaret ediyor.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: İçeriğin yeni bir sürümü mevcut.
|
|
||||||
update: Güncelle
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Yazan
|
|
||||||
posted: Gönderim
|
|
||||||
updated: Güncelleme
|
|
||||||
words: sözcük
|
|
||||||
pageview_measure: görüntülenme
|
|
||||||
read_time:
|
|
||||||
unit: dakikada
|
|
||||||
prompt: okunabilir
|
|
||||||
relate_posts: Benzer Gönderiler
|
|
||||||
share: Paylaş
|
|
||||||
button:
|
|
||||||
next: İleri
|
|
||||||
previous: Geri
|
|
||||||
copy_code:
|
|
||||||
succeed: Kopyalandı.
|
|
||||||
share_link:
|
|
||||||
title: Linki kopyala
|
|
||||||
succeed: Link kopyalandı.
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: kategori
|
|
||||||
post_measure: gönderi
|
|
@ -1,77 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Публікація
|
|
||||||
category: Категорія
|
|
||||||
tag: Тег
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Домашня сторінка
|
|
||||||
categories: Категорії
|
|
||||||
tags: Теги
|
|
||||||
archives: Архів
|
|
||||||
about: Про сайт
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: пошук
|
|
||||||
cancel: Скасувати
|
|
||||||
no_results: Ох! Нічого не знайдено.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Нещодавно оновлено
|
|
||||||
trending_tags: Популярні теги
|
|
||||||
toc: Зміст
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Публікація захищена ліцензією :LICENSE_NAME.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Деякі права захищено.
|
|
||||||
verbose: >-
|
|
||||||
Публікації на сайті захищено ліцензією Creative Commons Attribution 4.0 International (CC BY 4.0),
|
|
||||||
якщо інше не вказано в тексті.
|
|
||||||
|
|
||||||
meta: Powered by :PLATFORM with :THEME theme
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Вибачте, це посилання вказує на ресурс, що не існує.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Доступна нова версія вмісту.
|
|
||||||
update: Оновлення
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Автор
|
|
||||||
posted: Час публікації
|
|
||||||
updated: Оновлено
|
|
||||||
words: слів
|
|
||||||
pageview_measure: переглядів
|
|
||||||
read_time:
|
|
||||||
unit: хвилин
|
|
||||||
prompt: читання
|
|
||||||
relate_posts: Вас також може зацікавити
|
|
||||||
share: Поділитися
|
|
||||||
button:
|
|
||||||
next: Попередня публікація
|
|
||||||
previous: Наступна публікація
|
|
||||||
copy_code:
|
|
||||||
succeed: Успішно скопійовано!
|
|
||||||
share_link:
|
|
||||||
title: Скопіювати посилання
|
|
||||||
succeed: Посилання успішно скопійовано!
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: категорії
|
|
||||||
post_measure: публікації
|
|
@ -1,76 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: Bài viết
|
|
||||||
category: Danh mục
|
|
||||||
tag: Thẻ
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: Trang chủ
|
|
||||||
categories: Các danh mục
|
|
||||||
tags: Các thẻ
|
|
||||||
archives: Lưu trữ
|
|
||||||
about: Giới thiệu
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: tìm kiếm
|
|
||||||
cancel: Hủy
|
|
||||||
no_results: Không có kết quả tìm kiếm.
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: Mới cập nhật
|
|
||||||
trending_tags: Các thẻ thịnh hành
|
|
||||||
toc: Mục lục
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: Bài viết này được cấp phép bởi tác giả theo giấy phép :LICENSE_NAME.
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: Một số quyền được bảo lưu.
|
|
||||||
verbose: >-
|
|
||||||
Trừ khi có ghi chú khác, các bài viết đăng trên trang này được cấp phép bởi tác giả theo giấy phép Creative Commons Attribution 4.0 International (CC BY 4.0).
|
|
||||||
|
|
||||||
meta: Trang web này được tạo bởi :PLATFORM với chủ đề :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: Xin lỗi, chúng tôi đã đặt nhầm URL hoặc đường dẫn trỏ đến một trang nào đó không tồn tại.
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: Đã có phiên bản mới của nội dung.
|
|
||||||
update: Cập nhật
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: Viết bởi
|
|
||||||
posted: Đăng lúc
|
|
||||||
updated: Cập nhật lúc
|
|
||||||
words: từ
|
|
||||||
pageview_measure: lượt xem
|
|
||||||
read_time:
|
|
||||||
unit: phút
|
|
||||||
prompt: đọc
|
|
||||||
relate_posts: Bài viết liên quan
|
|
||||||
share: Chia sẻ
|
|
||||||
button:
|
|
||||||
next: Mới hơn
|
|
||||||
previous: Cũ hơn
|
|
||||||
copy_code:
|
|
||||||
succeed: Đã sao chép!
|
|
||||||
share_link:
|
|
||||||
title: Sao chép đường dẫn
|
|
||||||
succeed: Đã sao chép đường dẫn thành công!
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: danh mục
|
|
||||||
post_measure: bài viết
|
|
@ -1,83 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: 文章
|
|
||||||
category: 分类
|
|
||||||
tag: 标签
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: 首页
|
|
||||||
categories: 分类
|
|
||||||
tags: 标签
|
|
||||||
archives: 归档
|
|
||||||
about: 关于
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: 搜索
|
|
||||||
cancel: 取消
|
|
||||||
no_results: 搜索结果为空
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: 最近更新
|
|
||||||
trending_tags: 热门标签
|
|
||||||
toc: 文章内容
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: 本文由作者按照 :LICENSE_NAME 进行授权
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: 保留部分权利。
|
|
||||||
verbose: >-
|
|
||||||
除非另有说明,本网站上的博客文章均由作者按照知识共享署名 4.0 国际 (CC BY 4.0) 许可协议进行授权。
|
|
||||||
|
|
||||||
meta: 本站采用 :PLATFORM 主题 :THEME
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: 发现新版本的内容。
|
|
||||||
update: 更新
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: 作者
|
|
||||||
posted: 发表于
|
|
||||||
updated: 更新于
|
|
||||||
words: 字
|
|
||||||
pageview_measure: 次浏览
|
|
||||||
read_time:
|
|
||||||
unit: 分钟
|
|
||||||
prompt: 阅读
|
|
||||||
relate_posts: 相关文章
|
|
||||||
share: 分享
|
|
||||||
button:
|
|
||||||
next: 下一篇
|
|
||||||
previous: 上一篇
|
|
||||||
copy_code:
|
|
||||||
succeed: 已复制!
|
|
||||||
share_link:
|
|
||||||
title: 分享链接
|
|
||||||
succeed: 链接已复制!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%Y/%m/%d"
|
|
||||||
dayjs: "YYYY/MM/DD"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: 个分类
|
|
||||||
post_measure: 篇文章
|
|
@ -1,83 +0,0 @@
|
|||||||
# The layout text of site
|
|
||||||
|
|
||||||
# ----- Commons label -----
|
|
||||||
|
|
||||||
layout:
|
|
||||||
post: 文章
|
|
||||||
category: 分類
|
|
||||||
tag: 標籤
|
|
||||||
|
|
||||||
# The tabs of sidebar
|
|
||||||
tabs:
|
|
||||||
# format: <filename_without_extension>: <value>
|
|
||||||
home: 首頁
|
|
||||||
categories: 分類
|
|
||||||
tags: 標籤
|
|
||||||
archives: 封存
|
|
||||||
about: 關於
|
|
||||||
|
|
||||||
# the text displayed in the search bar & search results
|
|
||||||
search:
|
|
||||||
hint: 搜尋
|
|
||||||
cancel: 取消
|
|
||||||
no_results: 沒有搜尋結果
|
|
||||||
|
|
||||||
panel:
|
|
||||||
lastmod: 最近更新
|
|
||||||
trending_tags: 熱門標籤
|
|
||||||
toc: 文章摘要
|
|
||||||
|
|
||||||
copyright:
|
|
||||||
# Shown at the bottom of the post
|
|
||||||
license:
|
|
||||||
template: 本文章以 :LICENSE_NAME 授權
|
|
||||||
name: CC BY 4.0
|
|
||||||
link: https://creativecommons.org/licenses/by/4.0/
|
|
||||||
|
|
||||||
# Displayed in the footer
|
|
||||||
brief: 保留部份權利。
|
|
||||||
verbose: >-
|
|
||||||
除非另有說明,否則本網誌的文章均由作者按照姓名標示 4.0 國際 (CC BY 4.0) 授權條款進行授權。
|
|
||||||
|
|
||||||
meta: 本網站使用 :PLATFORM 產生,採用 :THEME 主題
|
|
||||||
|
|
||||||
not_found:
|
|
||||||
statement: 抱歉,您可能正在存取一個已被移動的 URL,或者它從未存在。
|
|
||||||
|
|
||||||
notification:
|
|
||||||
update_found: 發現新版本更新。
|
|
||||||
update: 更新
|
|
||||||
|
|
||||||
# ----- Posts related labels -----
|
|
||||||
|
|
||||||
post:
|
|
||||||
written_by: 作者
|
|
||||||
posted: 發布於
|
|
||||||
updated: 更新於
|
|
||||||
words: 字
|
|
||||||
pageview_measure: 次瀏覽
|
|
||||||
read_time:
|
|
||||||
unit: 分鐘
|
|
||||||
prompt: 閱讀
|
|
||||||
relate_posts: 相關文章
|
|
||||||
share: 分享
|
|
||||||
button:
|
|
||||||
next: 下一篇
|
|
||||||
previous: 上一篇
|
|
||||||
copy_code:
|
|
||||||
succeed: 已複製!
|
|
||||||
share_link:
|
|
||||||
title: 分享連結
|
|
||||||
succeed: 已複製連結!
|
|
||||||
|
|
||||||
# Date time format.
|
|
||||||
# See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
|
|
||||||
df:
|
|
||||||
post:
|
|
||||||
strftime: "%Y/%m/%d"
|
|
||||||
dayjs: "YYYY/MM/DD"
|
|
||||||
|
|
||||||
# categories page
|
|
||||||
categories:
|
|
||||||
category_measure: 個分類
|
|
||||||
post_measure: 篇文章
|
|
@ -1,18 +0,0 @@
|
|||||||
- extension: mp3
|
|
||||||
mime_type: mpeg
|
|
||||||
- extension: mov
|
|
||||||
mime_type: quicktime
|
|
||||||
- extension: avi
|
|
||||||
mime_type: x-msvideo
|
|
||||||
- extension: mkv
|
|
||||||
mime_type: x-matroska
|
|
||||||
- extension: ogv
|
|
||||||
mime_type: ogg
|
|
||||||
- extension: weba
|
|
||||||
mime_type: webm
|
|
||||||
- extension: 3gp
|
|
||||||
mime_type: 3gpp
|
|
||||||
- extension: 3g2
|
|
||||||
mime_type: 3gpp2
|
|
||||||
- extension: mid
|
|
||||||
mime_type: midi
|
|
@ -1,39 +0,0 @@
|
|||||||
# fonts
|
|
||||||
|
|
||||||
webfonts: /assets/lib/fonts/main.css
|
|
||||||
|
|
||||||
# Libraries
|
|
||||||
|
|
||||||
toc:
|
|
||||||
css: /assets/lib/tocbot/tocbot.min.css
|
|
||||||
js: /assets/lib/tocbot/tocbot.min.js
|
|
||||||
|
|
||||||
fontawesome:
|
|
||||||
css: /assets/lib/fontawesome-free/css/all.min.css
|
|
||||||
|
|
||||||
search:
|
|
||||||
js: /assets/lib/simple-jekyll-search/simple-jekyll-search.min.js
|
|
||||||
|
|
||||||
mermaid:
|
|
||||||
js: /assets/lib/mermaid/mermaid.min.js
|
|
||||||
|
|
||||||
dayjs:
|
|
||||||
js:
|
|
||||||
common: /assets/lib/dayjs/dayjs.min.js
|
|
||||||
locale: /assets/lib/dayjs/locale/en.js
|
|
||||||
relativeTime: /assets/lib/dayjs/plugin/relativeTime.js
|
|
||||||
localizedFormat: /assets/lib/dayjs/plugin/localizedFormat.js
|
|
||||||
|
|
||||||
glightbox:
|
|
||||||
css: /assets/lib/glightbox/glightbox.min.css
|
|
||||||
js: /assets/lib/glightbox/glightbox.min.js
|
|
||||||
|
|
||||||
lazy-polyfill:
|
|
||||||
css: /assets/lib/loading-attribute-polyfill/loading-attribute-polyfill.min.css
|
|
||||||
js: /assets/lib/loading-attribute-polyfill/loading-attribute-polyfill.umd.min.js
|
|
||||||
|
|
||||||
clipboard:
|
|
||||||
js: /assets/lib/clipboard/clipboard.min.js
|
|
||||||
|
|
||||||
mathjax:
|
|
||||||
js: /assets/lib/mathjax/tex-chtml.js
|
|
@ -1,54 +0,0 @@
|
|||||||
# Resource Hints
|
|
||||||
resource_hints:
|
|
||||||
- url: https://fonts.googleapis.com
|
|
||||||
links:
|
|
||||||
- rel: preconnect
|
|
||||||
- rel: dns-prefetch
|
|
||||||
- url: https://fonts.gstatic.com
|
|
||||||
links:
|
|
||||||
- rel: preconnect
|
|
||||||
opts: [crossorigin]
|
|
||||||
- rel: dns-prefetch
|
|
||||||
- url: https://cdn.jsdelivr.net
|
|
||||||
links:
|
|
||||||
- rel: preconnect
|
|
||||||
- rel: dns-prefetch
|
|
||||||
|
|
||||||
# Web Fonts
|
|
||||||
webfonts: https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Source+Sans+Pro:wght@400;600;700;900&display=swap
|
|
||||||
|
|
||||||
# Libraries
|
|
||||||
|
|
||||||
toc:
|
|
||||||
css: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.css
|
|
||||||
js: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.js
|
|
||||||
|
|
||||||
fontawesome:
|
|
||||||
css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/all.min.css
|
|
||||||
|
|
||||||
search:
|
|
||||||
js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js
|
|
||||||
|
|
||||||
mermaid:
|
|
||||||
js: https://cdn.jsdelivr.net/npm/mermaid@11.0.2/dist/mermaid.min.js
|
|
||||||
|
|
||||||
dayjs:
|
|
||||||
js:
|
|
||||||
common: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/dayjs.min.js
|
|
||||||
locale: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/locale/:LOCALE.js
|
|
||||||
relativeTime: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/relativeTime.js
|
|
||||||
localizedFormat: https://cdn.jsdelivr.net/npm/dayjs@1.11.13/plugin/localizedFormat.js
|
|
||||||
|
|
||||||
glightbox:
|
|
||||||
css: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/css/glightbox.min.css
|
|
||||||
js: https://cdn.jsdelivr.net/npm/glightbox@3.3.0/dist/js/glightbox.min.js
|
|
||||||
|
|
||||||
lazy-polyfill:
|
|
||||||
css: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.min.css
|
|
||||||
js: https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2.1.1/dist/loading-attribute-polyfill.umd.min.js
|
|
||||||
|
|
||||||
clipboard:
|
|
||||||
js: https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js
|
|
||||||
|
|
||||||
mathjax:
|
|
||||||
js: https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-chtml.js
|
|
@ -1,50 +0,0 @@
|
|||||||
# Sharing options at the bottom of the post.
|
|
||||||
# Icons from <https://fontawesome.com/>
|
|
||||||
|
|
||||||
platforms: []
|
|
||||||
# - type: Twitter
|
|
||||||
# icon: "fa-brands fa-square-x-twitter"
|
|
||||||
# link: "https://twitter.com/intent/tweet?text=TITLE&url=URL"
|
|
||||||
|
|
||||||
# - type: Facebook
|
|
||||||
# icon: "fab fa-facebook-square"
|
|
||||||
# link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL"
|
|
||||||
|
|
||||||
# - type: Telegram
|
|
||||||
# icon: "fab fa-telegram"
|
|
||||||
# link: "https://t.me/share/url?url=URL&text=TITLE"
|
|
||||||
|
|
||||||
# Uncomment below if you need to.
|
|
||||||
#
|
|
||||||
# - type: Linkedin
|
|
||||||
# icon: "fab fa-linkedin"
|
|
||||||
# link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
|
|
||||||
#
|
|
||||||
# - type: Weibo
|
|
||||||
# icon: "fab fa-weibo"
|
|
||||||
# link: "https://service.weibo.com/share/share.php?title=TITLE&url=URL"
|
|
||||||
#
|
|
||||||
# - type: Mastodon
|
|
||||||
# icon: "fa-brands fa-mastodon"
|
|
||||||
# # See: https://github.com/justinribeiro/share-to-mastodon#properties
|
|
||||||
# instances:
|
|
||||||
# - label: mastodon.social
|
|
||||||
# link: "https://mastodon.social/"
|
|
||||||
# - label: mastodon.online
|
|
||||||
# link: "https://mastodon.online/"
|
|
||||||
# - label: fosstodon.org
|
|
||||||
# link: "https://fosstodon.org/"
|
|
||||||
# - label: photog.social
|
|
||||||
# link: "https://photog.social/"
|
|
||||||
#
|
|
||||||
# - type: Bluesky
|
|
||||||
# icon: "fa-brands fa-bluesky"
|
|
||||||
# link: "https://bsky.app/intent/compose?text=TITLE%20URL"
|
|
||||||
#
|
|
||||||
# - type: Reddit
|
|
||||||
# icon: "fa-brands fa-square-reddit"
|
|
||||||
# link: "https://www.reddit.com/submit?url=URL&title=TITLE"
|
|
||||||
#
|
|
||||||
# - type: Threads
|
|
||||||
# icon: "fa-brands fa-square-threads"
|
|
||||||
# link: "https://www.threads.net/intent/post?text=TITLE%20URL"
|
|
@ -1,7 +0,0 @@
|
|||||||
<!-- Cloudflare Web Analytics -->
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
src="https://static.cloudflareinsights.com/beacon.min.js"
|
|
||||||
data-cf-beacon='{"token": "{{ site.analytics.cloudflare.id }}"}'
|
|
||||||
></script>
|
|
||||||
<!-- End Cloudflare Web Analytics -->
|
|
@ -1,7 +0,0 @@
|
|||||||
<!-- Fathom -->
|
|
||||||
<script
|
|
||||||
src="https://cdn.usefathom.com/script.js"
|
|
||||||
data-site="{{ site.analytics.fathom.id }}"
|
|
||||||
defer>
|
|
||||||
</script>
|
|
||||||
<!-- End Fathom Code -->
|
|
@ -1,6 +0,0 @@
|
|||||||
<!-- GoatCounter -->
|
|
||||||
<script
|
|
||||||
async
|
|
||||||
src="https://gc.zgo.at/count.js"
|
|
||||||
data-goatcounter="https://{{ site.analytics.goatcounter.id }}.goatcounter.com/count"
|
|
||||||
></script>
|
|
@ -1,13 +0,0 @@
|
|||||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
|
||||||
<script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.id }}"></script>
|
|
||||||
<script>
|
|
||||||
document.addEventListener('DOMContentLoaded', function (event) {
|
|
||||||
window.dataLayer = window.dataLayer || [];
|
|
||||||
function gtag() {
|
|
||||||
dataLayer.push(arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtag('js', new Date());
|
|
||||||
gtag('config', '{{ site.analytics.google.id }}');
|
|
||||||
});
|
|
||||||
</script>
|
|
@ -1,14 +0,0 @@
|
|||||||
<!-- Matomo -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
var _paq = window._paq = window._paq || [];
|
|
||||||
_paq.push(['trackPageView']);
|
|
||||||
_paq.push(['enableLinkTracking']);
|
|
||||||
(function() {
|
|
||||||
var u="//{{ site.analytics.matomo.domain }}/";
|
|
||||||
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
|
||||||
_paq.push(['setSiteId', {{ site.analytics.matomo.id }}]);
|
|
||||||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
|
||||||
g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
<!-- End Matomo Code -->
|
|
@ -1,6 +0,0 @@
|
|||||||
<!-- Umami -->
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
src="{{ site.analytics.umami.domain }}/script.js"
|
|
||||||
data-website-id="{{ site.analytics.umami.id }}"
|
|
||||||
></script>
|
|
@ -1,5 +0,0 @@
|
|||||||
<!-- The comments switcher -->
|
|
||||||
{% if page.comments and site.comments.provider %}
|
|
||||||
{% capture path %}comments/{{ site.comments.provider }}.html{% endcapture %}
|
|
||||||
{% include {{ path }} %}
|
|
||||||
{% endif %}
|
|
@ -1,50 +0,0 @@
|
|||||||
<!-- The Disqus lazy loading. -->
|
|
||||||
|
|
||||||
<div id="disqus_thread">
|
|
||||||
<p class="text-center text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
var disqus_config = function () {
|
|
||||||
this.page.url = '{{ page.url | absolute_url }}';
|
|
||||||
this.page.identifier = '{{ page.url }}';
|
|
||||||
};
|
|
||||||
|
|
||||||
{%- comment -%} Lazy loading {%- endcomment -%}
|
|
||||||
var disqus_observer = new IntersectionObserver(
|
|
||||||
function (entries) {
|
|
||||||
if (entries[0].isIntersecting) {
|
|
||||||
(function () {
|
|
||||||
var d = document,
|
|
||||||
s = d.createElement('script');
|
|
||||||
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
|
|
||||||
s.setAttribute('data-timestamp', +new Date());
|
|
||||||
(d.head || d.body).appendChild(s);
|
|
||||||
})();
|
|
||||||
|
|
||||||
disqus_observer.disconnect();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ threshold: [0] }
|
|
||||||
);
|
|
||||||
|
|
||||||
disqus_observer.observe(document.getElementById('disqus_thread'));
|
|
||||||
|
|
||||||
{%- comment -%} Auto switch theme {%- endcomment -%}
|
|
||||||
function reloadDisqus() {
|
|
||||||
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
|
||||||
{%- comment -%} Disqus hasn't been loaded {%- endcomment -%}
|
|
||||||
if (typeof DISQUS === 'undefined') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (document.readyState == 'complete') {
|
|
||||||
DISQUS.reset({ reload: true, config: disqus_config });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (document.getElementById('mode-toggle')) {
|
|
||||||
window.addEventListener('message', reloadDisqus);
|
|
||||||
}
|
|
||||||
</script>
|
|
@ -1,71 +0,0 @@
|
|||||||
<!-- https://giscus.app/ -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
(function () {
|
|
||||||
const origin = 'https://giscus.app';
|
|
||||||
const lightTheme = 'light';
|
|
||||||
const darkTheme = 'dark_dimmed';
|
|
||||||
|
|
||||||
let initTheme = lightTheme;
|
|
||||||
const html = document.documentElement;
|
|
||||||
|
|
||||||
if (
|
|
||||||
(html.hasAttribute('data-mode') &&
|
|
||||||
html.getAttribute('data-mode') === 'dark') ||
|
|
||||||
(!html.hasAttribute('data-mode') &&
|
|
||||||
window.matchMedia('(prefers-color-scheme: dark)').matches)
|
|
||||||
) {
|
|
||||||
initTheme = darkTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
let lang = '{{ site.comments.giscus.lang | default: lang }}';
|
|
||||||
{%- comment -%} https://github.com/giscus/giscus/tree/main/locales {%- endcomment -%}
|
|
||||||
if (lang.length > 2 && !lang.startsWith('zh')) {
|
|
||||||
lang = lang.slice(0, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
let giscusAttributes = {
|
|
||||||
src: 'https://giscus.app/client.js',
|
|
||||||
'data-repo': '{{ site.comments.giscus.repo}}',
|
|
||||||
'data-repo-id': '{{ site.comments.giscus.repo_id }}',
|
|
||||||
'data-category': '{{ site.comments.giscus.category }}',
|
|
||||||
'data-category-id': '{{ site.comments.giscus.category_id }}',
|
|
||||||
'data-mapping': '{{ site.comments.giscus.mapping | default: 'pathname' }}',
|
|
||||||
'data-strict' : '{{ site.comments.giscus.strict | default: '0' }}',
|
|
||||||
'data-reactions-enabled': '{{ site.comments.giscus.reactions_enabled | default: '1' }}',
|
|
||||||
'data-emit-metadata': '0',
|
|
||||||
'data-theme': initTheme,
|
|
||||||
'data-input-position': '{{ site.comments.giscus.input_position | default: 'bottom' }}',
|
|
||||||
'data-lang': lang,
|
|
||||||
'data-loading': 'lazy',
|
|
||||||
crossorigin: 'anonymous',
|
|
||||||
async: ''
|
|
||||||
};
|
|
||||||
|
|
||||||
let giscusScript = document.createElement('script');
|
|
||||||
Object.entries(giscusAttributes).forEach(([key, value]) =>
|
|
||||||
giscusScript.setAttribute(key, value)
|
|
||||||
);
|
|
||||||
document.getElementById('tail-wrapper').appendChild(giscusScript);
|
|
||||||
|
|
||||||
addEventListener('message', (event) => {
|
|
||||||
if (
|
|
||||||
event.source === window &&
|
|
||||||
event.data &&
|
|
||||||
event.data.direction === ModeToggle.ID
|
|
||||||
) {
|
|
||||||
{%- comment -%} global theme mode changed {%- endcomment -%}
|
|
||||||
const mode = event.data.message;
|
|
||||||
const theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
|
|
||||||
|
|
||||||
const message = {
|
|
||||||
setConfig: {
|
|
||||||
theme: theme
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const giscus = document.getElementsByClassName('giscus-frame')[0].contentWindow;
|
|
||||||
giscus.postMessage({ giscus: message }, origin);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})();
|
|
||||||
</script>
|
|
@ -1,49 +0,0 @@
|
|||||||
<!-- https://utteranc.es/ -->
|
|
||||||
<script
|
|
||||||
src="https://utteranc.es/client.js"
|
|
||||||
repo="{{ site.comments.utterances.repo }}"
|
|
||||||
issue-term="{{ site.comments.utterances.issue_term }}"
|
|
||||||
crossorigin="anonymous"
|
|
||||||
async
|
|
||||||
></script>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
(function () {
|
|
||||||
const origin = 'https://utteranc.es';
|
|
||||||
const lightTheme = 'github-light';
|
|
||||||
const darkTheme = 'github-dark';
|
|
||||||
let initTheme = lightTheme;
|
|
||||||
const html = document.documentElement;
|
|
||||||
|
|
||||||
if (
|
|
||||||
(html.hasAttribute('data-mode') && html.getAttribute('data-mode') === 'dark') ||
|
|
||||||
(!html.hasAttribute('data-mode') && window.matchMedia('(prefers-color-scheme: dark)').matches)
|
|
||||||
) {
|
|
||||||
initTheme = darkTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
addEventListener('message', (event) => {
|
|
||||||
let theme;
|
|
||||||
|
|
||||||
{%- comment -%} credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> {%- endcomment -%}
|
|
||||||
if (event.origin === origin) {
|
|
||||||
{%- comment -%} page initial {%- endcomment -%}
|
|
||||||
theme = initTheme;
|
|
||||||
} else if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
|
||||||
{%- comment -%} global theme mode changed {%- endcomment -%}
|
|
||||||
const mode = event.data.message;
|
|
||||||
theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
|
|
||||||
} else {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const message = {
|
|
||||||
type: 'set-theme',
|
|
||||||
theme: theme
|
|
||||||
};
|
|
||||||
|
|
||||||
const utterances = document.getElementsByClassName('utterances-frame')[0].contentWindow;
|
|
||||||
utterances.postMessage(message, origin);
|
|
||||||
});
|
|
||||||
})();
|
|
||||||
</script>
|
|
@ -1,20 +0,0 @@
|
|||||||
<!--
|
|
||||||
Date format snippet
|
|
||||||
See: ${JS_ROOT}/utils/locale-dateime.js
|
|
||||||
-->
|
|
||||||
|
|
||||||
{% assign df_strftime = site.data.locales[include.lang].df.post.strftime | default: '%d/%m/%Y' %}
|
|
||||||
{% assign df_dayjs = site.data.locales[include.lang].df.post.dayjs | default: 'DD/MM/YYYY' %}
|
|
||||||
|
|
||||||
<time
|
|
||||||
{% if include.class %}
|
|
||||||
class="{{ include.class }}"
|
|
||||||
{% endif %}
|
|
||||||
data-ts="{{ include.date | date: '%s' }}"
|
|
||||||
data-df="{{ df_dayjs }}"
|
|
||||||
{% if include.tooltip %}
|
|
||||||
data-bs-toggle="tooltip" data-bs-placement="bottom"
|
|
||||||
{% endif %}
|
|
||||||
>
|
|
||||||
{{ include.date | date: df_strftime }}
|
|
||||||
</time>
|
|
@ -1,35 +0,0 @@
|
|||||||
{% assign src = include.src | strip %}
|
|
||||||
{% assign title = include.title | strip %}
|
|
||||||
{% assign types = include.types | default: '' | strip | split: '|' %}
|
|
||||||
|
|
||||||
{% unless src contains '://' %}
|
|
||||||
{%- capture src -%}
|
|
||||||
{% include media-url.html src=src subpath=page.media_subpath %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<audio class="embed-audio" controls>
|
|
||||||
{% assign extension = src | split: '.' | last %}
|
|
||||||
{% assign types = extension | concat: types %}
|
|
||||||
|
|
||||||
{% assign ext_size = extension | size %}
|
|
||||||
{% assign src_size = src | size %}
|
|
||||||
{% assign slice_size = src_size | minus: ext_size %}
|
|
||||||
|
|
||||||
{% assign filepath = src | slice: 0, slice_size %}
|
|
||||||
|
|
||||||
{% for type in types %}
|
|
||||||
{% assign src = filepath | append: type %}
|
|
||||||
{% assign media_item = site.data.media | find: 'extension', type %}
|
|
||||||
{% assign mime_type = media_item.mime_type | default: type %}
|
|
||||||
<source src="{{ src }}" type="audio/{{ mime_type }}">
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
Your browser does not support the audio tag. Here is a
|
|
||||||
<a href="{{ src | strip }}">link to the audio file</a> instead.
|
|
||||||
</audio>
|
|
||||||
{% if title %}
|
|
||||||
<em>{{ title }}</em>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
@ -1,9 +0,0 @@
|
|||||||
<iframe
|
|
||||||
class="embed-video"
|
|
||||||
loading="lazy"
|
|
||||||
src="https://player.bilibili.com/player.html?bvid={{ include.id }}"
|
|
||||||
scrolling="no"
|
|
||||||
frameborder="0"
|
|
||||||
framespacing="0"
|
|
||||||
allowfullscreen="true"
|
|
||||||
></iframe>
|
|
@ -1,8 +0,0 @@
|
|||||||
<iframe
|
|
||||||
class="embed-video twitch"
|
|
||||||
loading="lazy"
|
|
||||||
src="https://player.twitch.tv/?video={{ include.id }}&parent={{ site.url | split: '://' | last | remove: '/' }}"
|
|
||||||
frameborder="0"
|
|
||||||
allowfullscreen="true"
|
|
||||||
scrolling="no"
|
|
||||||
></iframe>
|
|
@ -1,59 +0,0 @@
|
|||||||
{% assign video_url = include.src %}
|
|
||||||
{% assign title = include.title %}
|
|
||||||
{% assign poster_url = include.poster %}
|
|
||||||
{% assign types = include.types | default: '' | strip | split: '|' %}
|
|
||||||
|
|
||||||
{% unless video_url contains '://' %}
|
|
||||||
{%- capture video_url -%}
|
|
||||||
{% include media-url.html src=video_url subpath=page.media_subpath %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% if poster_url %}
|
|
||||||
{% unless poster_url contains '://' %}
|
|
||||||
{%- capture poster_url -%}
|
|
||||||
{% include media-url.html src=poster_url subpath=page.media_subpath %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% endunless %}
|
|
||||||
{% assign poster = 'poster="' | append: poster_url | append: '"' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign attributes = 'controls' %}
|
|
||||||
|
|
||||||
{% if include.autoplay %}
|
|
||||||
{% assign attributes = attributes | append: ' ' | append: 'autoplay' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if include.loop %}
|
|
||||||
{% assign attributes = attributes | append: ' ' | append: 'loop' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if include.muted %}
|
|
||||||
{% assign attributes = attributes | append: ' ' | append: 'muted' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<video class="embed-video file" {{ poster }} {{ attributes }}>
|
|
||||||
{% assign extension = video_url | split: '.' | last %}
|
|
||||||
{% assign types = extension | concat: types %}
|
|
||||||
|
|
||||||
{% assign ext_size = extension | size %}
|
|
||||||
{% assign src_size = video_url | size %}
|
|
||||||
{% assign slice_size = src_size | minus: ext_size %}
|
|
||||||
|
|
||||||
{% assign filepath = video_url | slice: 0, slice_size %}
|
|
||||||
|
|
||||||
{% for type in types %}
|
|
||||||
{% assign src = filepath | append: type %}
|
|
||||||
{% assign media_item = site.data.media | find: 'extension', type %}
|
|
||||||
{% assign mime_type = media_item.mime_type | default: type %}
|
|
||||||
<source src="{{ src }}" type="video/{{ mime_type }}">
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
Your browser does not support the video tag. Here is a
|
|
||||||
<a href="{{ video_url | strip }}">link to the video file</a> instead.
|
|
||||||
</video>
|
|
||||||
{% if title %}
|
|
||||||
<em>{{ title }}</em>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
@ -1,9 +0,0 @@
|
|||||||
<iframe
|
|
||||||
class="embed-video"
|
|
||||||
loading="lazy"
|
|
||||||
src="https://www.youtube.com/embed/{{ include.id }}"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
@ -1,19 +0,0 @@
|
|||||||
<!--
|
|
||||||
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
|
||||||
Generated by: https://realfavicongenerator.net/
|
|
||||||
-->
|
|
||||||
|
|
||||||
{% capture favicon_path %}{{ '/assets/img/favicons' | relative_url }}{% endcapture %}
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="{{ favicon_path }}/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ favicon_path }}/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ favicon_path }}/favicon-16x16.png">
|
|
||||||
{% if site.pwa.enabled %}
|
|
||||||
<link rel="manifest" href="{{ favicon_path }}/site.webmanifest">
|
|
||||||
{% endif %}
|
|
||||||
<link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
|
|
||||||
<meta name="apple-mobile-web-app-title" content="{{ site.title }}">
|
|
||||||
<meta name="application-name" content="{{ site.title }}">
|
|
||||||
<meta name="msapplication-TileColor" content="#da532c">
|
|
||||||
<meta name="msapplication-config" content="{{ favicon_path }}/browserconfig.xml">
|
|
||||||
<meta name="theme-color" content="#ffffff">
|
|
@ -1,49 +0,0 @@
|
|||||||
<!-- The Footer -->
|
|
||||||
|
|
||||||
<footer
|
|
||||||
aria-label="Site Info"
|
|
||||||
class="
|
|
||||||
d-flex flex-column justify-content-center text-muted
|
|
||||||
flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<p>
|
|
||||||
{{- '©' }}
|
|
||||||
<time>{{ 'now' | date: '%Y' }}</time>
|
|
||||||
|
|
||||||
{% if site.social.links %}
|
|
||||||
<a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>.
|
|
||||||
{% else %}
|
|
||||||
<em class="fst-normal">{{ site.social.name }}</em>.
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if site.data.locales[include.lang].copyright.brief %}
|
|
||||||
<span
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-placement="top"
|
|
||||||
title="{{ site.data.locales[include.lang].copyright.verbose }}"
|
|
||||||
>
|
|
||||||
{{- site.data.locales[include.lang].copyright.brief -}}
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
{%- capture _platform -%}
|
|
||||||
<a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
{%- capture _theme -%}
|
|
||||||
<a
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-placement="top"
|
|
||||||
title="v{{ theme.version }}"
|
|
||||||
href="https://github.com/cotes2020/jekyll-theme-chirpy"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>Chirpy</a>
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
{{ site.data.locales[include.lang].meta | replace: ':PLATFORM', _platform | replace: ':THEME', _theme }}
|
|
||||||
</p>
|
|
||||||
</footer>
|
|
@ -1,107 +0,0 @@
|
|||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
||||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
|
|
||||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
|
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
||||||
<meta
|
|
||||||
name="viewport"
|
|
||||||
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
|
|
||||||
>
|
|
||||||
|
|
||||||
{%- capture seo_tags -%}
|
|
||||||
{% seo title=false %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
<!-- Setup Open Graph image -->
|
|
||||||
|
|
||||||
{% if page.image %}
|
|
||||||
{% assign src = page.image.path | default: page.image %}
|
|
||||||
|
|
||||||
{% unless src contains '://' %}
|
|
||||||
{%- capture img_url -%}
|
|
||||||
{% include media-url.html src=src subpath=page.media_subpath absolute=true %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
{%- capture old_url -%}{{ src | absolute_url }}{%- endcapture -%}
|
|
||||||
{%- capture new_url -%}{{ img_url }}{%- endcapture -%}
|
|
||||||
|
|
||||||
{% assign seo_tags = seo_tags | replace: old_url, new_url %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% elsif site.social_preview_image %}
|
|
||||||
{%- capture img_url -%}
|
|
||||||
{% include media-url.html src=site.social_preview_image absolute=true %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
{%- capture og_image -%}
|
|
||||||
<meta property="og:image" content="{{ img_url }}" />
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
{%- capture twitter_image -%}
|
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
|
||||||
<meta property="twitter:image" content="{{ img_url }}" />
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
{% assign old_meta_clip = '<meta name="twitter:card" content="summary" />' %}
|
|
||||||
{% assign new_meta_clip = og_image | append: twitter_image %}
|
|
||||||
{% assign seo_tags = seo_tags | replace: old_meta_clip, new_meta_clip %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{{ seo_tags }}
|
|
||||||
|
|
||||||
<title>
|
|
||||||
{%- unless page.layout == 'home' -%}
|
|
||||||
{{ page.title | append: ' | ' }}
|
|
||||||
{%- endunless -%}
|
|
||||||
{{ site.title }}
|
|
||||||
</title>
|
|
||||||
|
|
||||||
{% include_cached favicons.html %}
|
|
||||||
|
|
||||||
<!-- Resource Hints -->
|
|
||||||
{% unless site.assets.self_host.enabled %}
|
|
||||||
{% for hint in site.data.origin.cors.resource_hints %}
|
|
||||||
{% for link in hint.links %}
|
|
||||||
<link rel="{{ link.rel }}" href="{{ hint.url }}" {{ link.opts | join: ' ' }}>
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
<!-- Bootstrap -->
|
|
||||||
{% unless jekyll.environment == 'production' %}
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
<!-- Theme style -->
|
|
||||||
<link rel="stylesheet" href="{{ '/assets/css/:THEME.css' | replace: ':THEME', site.theme | relative_url }}">
|
|
||||||
|
|
||||||
<!-- Web Font -->
|
|
||||||
<link rel="stylesheet" href="{{ site.data.origin[type].webfonts | relative_url }}">
|
|
||||||
|
|
||||||
<!-- Font Awesome Icons -->
|
|
||||||
<link rel="stylesheet" href="{{ site.data.origin[type].fontawesome.css | relative_url }}">
|
|
||||||
|
|
||||||
<!-- 3rd-party Dependencies -->
|
|
||||||
|
|
||||||
{% if site.toc and page.toc %}
|
|
||||||
<link rel="stylesheet" href="{{ site.data.origin[type].toc.css | relative_url }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
|
|
||||||
<link rel="stylesheet" href="{{ site.data.origin[type]['lazy-polyfill'].css | relative_url }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.layout == 'page' or page.layout == 'post' %}
|
|
||||||
<!-- Image Popup -->
|
|
||||||
<link rel="stylesheet" href="{{ site.data.origin[type].glightbox.css | relative_url }}">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- JavaScript -->
|
|
||||||
|
|
||||||
{% unless site.theme_mode %}
|
|
||||||
{% include mode-toggle.html %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% include metadata-hook.html %}
|
|
||||||
</head>
|
|
@ -1,109 +0,0 @@
|
|||||||
<!-- JS selector for site. -->
|
|
||||||
|
|
||||||
<!-- commons -->
|
|
||||||
|
|
||||||
{% assign urls = site.data.origin[type].search.js %}
|
|
||||||
|
|
||||||
<!-- layout specified -->
|
|
||||||
|
|
||||||
{% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
|
|
||||||
{% assign urls = urls | append: ',' | append: site.data.origin[type]['lazy-polyfill'].js %}
|
|
||||||
|
|
||||||
{% unless page.layout == 'home' %}
|
|
||||||
<!-- image lazy-loading & popup & clipboard -->
|
|
||||||
{% assign urls = urls
|
|
||||||
| append: ','
|
|
||||||
| append: site.data.origin[type].glightbox.js
|
|
||||||
| append: ','
|
|
||||||
| append: site.data.origin[type].clipboard.js
|
|
||||||
%}
|
|
||||||
{% endunless %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.layout == 'home'
|
|
||||||
or page.layout == 'post'
|
|
||||||
or page.layout == 'archives'
|
|
||||||
or page.layout == 'category'
|
|
||||||
or page.layout == 'tag'
|
|
||||||
%}
|
|
||||||
{% assign locale = include.lang | split: '-' | first %}
|
|
||||||
|
|
||||||
{% assign urls = urls
|
|
||||||
| append: ','
|
|
||||||
| append: site.data.origin[type].dayjs.js.common
|
|
||||||
| append: ','
|
|
||||||
| append: site.data.origin[type].dayjs.js.locale
|
|
||||||
| replace: ':LOCALE', locale
|
|
||||||
| append: ','
|
|
||||||
| append: site.data.origin[type].dayjs.js.relativeTime
|
|
||||||
| append: ','
|
|
||||||
| append: site.data.origin[type].dayjs.js.localizedFormat
|
|
||||||
%}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.content contains '<h2' or page.content contains '<h3' and site.toc and page.toc %}
|
|
||||||
{% assign urls = urls | append: ',' | append: site.data.origin[type].toc.js %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.mermaid %}
|
|
||||||
{% assign urls = urls | append: ',' | append: site.data.origin[type].mermaid.js %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% include jsdelivr-combine.html urls=urls %}
|
|
||||||
|
|
||||||
{% case page.layout %}
|
|
||||||
{% when 'home', 'categories', 'post', 'page' %}
|
|
||||||
{% assign js = page.layout %}
|
|
||||||
{% when 'archives', 'category', 'tag' %}
|
|
||||||
{% assign js = 'misc' %}
|
|
||||||
{% else %}
|
|
||||||
{% assign js = 'commons' %}
|
|
||||||
{% endcase %}
|
|
||||||
|
|
||||||
{% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %}
|
|
||||||
|
|
||||||
<script src="{{ script | relative_url }}"></script>
|
|
||||||
|
|
||||||
{% if page.math %}
|
|
||||||
<!-- MathJax -->
|
|
||||||
<script src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
|
|
||||||
<script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- Pageviews -->
|
|
||||||
{% if page.layout == 'post' %}
|
|
||||||
{% assign provider = site.pageviews.provider %}
|
|
||||||
|
|
||||||
{% if provider and provider != empty %}
|
|
||||||
{% case provider %}
|
|
||||||
{% when 'goatcounter' %}
|
|
||||||
{% if site.analytics[provider].id != empty and site.analytics[provider].id %}
|
|
||||||
{% include pageviews/{{ provider }}.html %}
|
|
||||||
{% endif %}
|
|
||||||
{% endcase %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.mermaid %}
|
|
||||||
{% include mermaid.html %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if jekyll.environment == 'production' %}
|
|
||||||
<!-- PWA -->
|
|
||||||
{% if site.pwa.enabled %}
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
src="{{ 'app.min.js' | relative_url }}?baseurl={{ site.baseurl | default: '' }}®ister={{ site.pwa.cache.enabled }}"
|
|
||||||
></script>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- Web Analytics -->
|
|
||||||
{% for analytics in site.analytics %}
|
|
||||||
{% capture str %}{{ analytics }}{% endcapture %}
|
|
||||||
{% assign type = str | split: '{' | first %}
|
|
||||||
{% if site.analytics[type].id and site.analytics[type].id != empty %}
|
|
||||||
{% include analytics/{{ type }}.html %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
@ -1,26 +0,0 @@
|
|||||||
{% assign urls = include.urls | split: ',' %}
|
|
||||||
|
|
||||||
{% assign combined_urls = nil %}
|
|
||||||
|
|
||||||
{% assign domain = 'https://cdn.jsdelivr.net/' %}
|
|
||||||
|
|
||||||
{% for url in urls %}
|
|
||||||
{% if url contains domain %}
|
|
||||||
{% assign url_snippet = url | slice: domain.size, url.size %}
|
|
||||||
|
|
||||||
{% if combined_urls %}
|
|
||||||
{% assign combined_urls = combined_urls | append: ',' | append: url_snippet %}
|
|
||||||
{% else %}
|
|
||||||
{% assign combined_urls = domain | append: 'combine/' | append: url_snippet %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% elsif url contains '//' %}
|
|
||||||
<script src="{{ url }}"></script>
|
|
||||||
{% else %}
|
|
||||||
<script src="{{ url | relative_url }}"></script>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if combined_urls %}
|
|
||||||
<script src="{{ combined_urls }}"></script>
|
|
||||||
{% endif %}
|
|
@ -1,10 +0,0 @@
|
|||||||
{% comment %}
|
|
||||||
Detect appearance language and return it through variable "lang"
|
|
||||||
{% endcomment %}
|
|
||||||
{% if site.data.locales[page.lang] %}
|
|
||||||
{% assign lang = page.lang %}
|
|
||||||
{% elsif site.data.locales[site.lang] %}
|
|
||||||
{% assign lang = site.lang %}
|
|
||||||
{% else %}
|
|
||||||
{% assign lang = 'en' %}
|
|
||||||
{% endif %}
|
|
@ -1,70 +0,0 @@
|
|||||||
{% comment %}
|
|
||||||
|
|
||||||
Convert the alias of the syntax language to the official name
|
|
||||||
|
|
||||||
See: <https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers>
|
|
||||||
|
|
||||||
{% endcomment %}
|
|
||||||
|
|
||||||
{% assign _lang = include.language | default: '' %}
|
|
||||||
|
|
||||||
{% case _lang %}
|
|
||||||
{% when 'actionscript', 'as', 'as3' %}
|
|
||||||
{{ 'ActionScript' }}
|
|
||||||
{% when 'applescript' %}
|
|
||||||
{{ 'AppleScript' }}
|
|
||||||
{% when 'brightscript', 'bs', 'brs' %}
|
|
||||||
{{ 'BrightScript' }}
|
|
||||||
{% when 'cfscript', 'cfc' %}
|
|
||||||
{{ 'CFScript' }}
|
|
||||||
{% when 'coffeescript', 'coffee', 'coffee-script' %}
|
|
||||||
{{ 'CoffeeScript' }}
|
|
||||||
{% when 'cs', 'csharp' %}
|
|
||||||
{{ 'C#' }}
|
|
||||||
{% when 'erl' %}
|
|
||||||
{{ 'Erlang' }}
|
|
||||||
{% when 'graphql' %}
|
|
||||||
{{ 'GraphQL' }}
|
|
||||||
{% when 'haskell', 'hs' %}
|
|
||||||
{{ 'Haskell' }}
|
|
||||||
{% when 'javascript', 'js' %}
|
|
||||||
{{ 'JavaScript' }}
|
|
||||||
{% when 'make', 'mf', 'gnumake', 'bsdmake' %}
|
|
||||||
{{ 'Makefile' }}
|
|
||||||
{% when 'md', 'mkd' %}
|
|
||||||
{{ 'Markdown' }}
|
|
||||||
{% when 'm' %}
|
|
||||||
{{ 'Matlab' }}
|
|
||||||
{% when 'objective_c', 'objc', 'obj-c', 'obj_c', 'objectivec' %}
|
|
||||||
{{ 'Objective-C' }}
|
|
||||||
{% when 'perl', 'pl' %}
|
|
||||||
{{ 'Perl' }}
|
|
||||||
{% when 'php','php3','php4','php5' %}
|
|
||||||
{{ 'PHP' }}
|
|
||||||
{% when 'py' %}
|
|
||||||
{{ 'Python' }}
|
|
||||||
{% when 'rb' %}
|
|
||||||
{{ 'Ruby' }}
|
|
||||||
{% when 'rs','no_run','ignore','should_panic' %}
|
|
||||||
{{ 'Rust' }}
|
|
||||||
{% when 'bash', 'zsh', 'ksh', 'sh' %}
|
|
||||||
{{ 'Shell' }}
|
|
||||||
{% when 'st', 'squeak' %}
|
|
||||||
{{ 'Smalltalk' }}
|
|
||||||
{% when 'tex'%}
|
|
||||||
{{ 'TeX' }}
|
|
||||||
{% when 'latex' %}
|
|
||||||
{{ 'LaTex' }}
|
|
||||||
{% when 'ts', 'typescript' %}
|
|
||||||
{{ 'TypeScript' }}
|
|
||||||
{% when 'vb', 'visualbasic' %}
|
|
||||||
{{ 'Visual Basic' }}
|
|
||||||
{% when 'vue', 'vuejs' %}
|
|
||||||
{{ 'Vue.js' }}
|
|
||||||
{% when 'yml' %}
|
|
||||||
{{ 'YAML' }}
|
|
||||||
{% when 'css', 'html', 'scss', 'ssh', 'toml', 'xml', 'yaml', 'json' %}
|
|
||||||
{{ _lang | upcase }}
|
|
||||||
{% else %}
|
|
||||||
{{ _lang | capitalize }}
|
|
||||||
{% endcase %}
|
|
@ -1,37 +0,0 @@
|
|||||||
{%- comment -%}
|
|
||||||
Generate media resource final URL based on `site.cdn`, `page.media_subpath`
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
src - required, basic media resources path
|
|
||||||
subpath - optional, relative path of media resources
|
|
||||||
absolute - optional, boolean, if true, generate absolute URL
|
|
||||||
|
|
||||||
Return:
|
|
||||||
media resources URL
|
|
||||||
{%- endcomment -%}
|
|
||||||
|
|
||||||
{% assign url = include.src %}
|
|
||||||
|
|
||||||
{%- if url -%}
|
|
||||||
{% unless url contains ':' %}
|
|
||||||
{%- comment -%} Add media resources subpath prefix {%- endcomment -%}
|
|
||||||
{% assign url = include.subpath | default: '' | append: '/' | append: url %}
|
|
||||||
|
|
||||||
{%- comment -%} Prepend CND URL {%- endcomment -%}
|
|
||||||
{% if site.cdn %}
|
|
||||||
{% assign url = site.cdn | append: '/' | append: url %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign url = url | replace: '///', '/' | replace: '//', '/' | replace: ':/', '://' %}
|
|
||||||
|
|
||||||
{% unless url contains '://' %}
|
|
||||||
{% if include.absolute %}
|
|
||||||
{% assign url = site.url | append: site.baseurl | append: url %}
|
|
||||||
{% else %}
|
|
||||||
{% assign url = site.baseurl | append: url %}
|
|
||||||
{% endif %}
|
|
||||||
{% endunless %}
|
|
||||||
{% endunless %}
|
|
||||||
{%- endif -%}
|
|
||||||
|
|
||||||
{{- url -}}
|
|
@ -1,62 +0,0 @@
|
|||||||
<!-- mermaid-js loader -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
function updateMermaid(event) {
|
|
||||||
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
|
|
||||||
const mode = event.data.message;
|
|
||||||
|
|
||||||
if (typeof mermaid === 'undefined') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let expectedTheme = mode === ModeToggle.DARK_MODE ? 'dark' : 'default';
|
|
||||||
let config = { theme: expectedTheme };
|
|
||||||
|
|
||||||
{%- comment -%}
|
|
||||||
Re-render the SVG › <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344>
|
|
||||||
{%- endcomment -%}
|
|
||||||
const mermaidList = document.getElementsByClassName('mermaid');
|
|
||||||
|
|
||||||
[...mermaidList].forEach((elem) => {
|
|
||||||
const svgCode = elem.previousSibling.children.item(0).innerHTML;
|
|
||||||
elem.innerHTML = svgCode;
|
|
||||||
elem.removeAttribute('data-processed');
|
|
||||||
});
|
|
||||||
|
|
||||||
mermaid.initialize(config);
|
|
||||||
mermaid.init(undefined, '.mermaid');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
let initTheme = 'default';
|
|
||||||
const html = document.documentElement;
|
|
||||||
|
|
||||||
if (
|
|
||||||
(html.hasAttribute('data-mode') && html.getAttribute('data-mode') === 'dark') ||
|
|
||||||
(!html.hasAttribute('data-mode') && window.matchMedia('(prefers-color-scheme: dark)').matches)
|
|
||||||
) {
|
|
||||||
initTheme = 'dark';
|
|
||||||
}
|
|
||||||
|
|
||||||
let mermaidConf = {
|
|
||||||
theme: initTheme {%- comment -%} <default | dark | forest | neutral> {%- endcomment -%}
|
|
||||||
};
|
|
||||||
|
|
||||||
{%- comment -%} Create mermaid tag {%- endcomment -%}
|
|
||||||
const basicList = document.getElementsByClassName('language-mermaid');
|
|
||||||
[...basicList].forEach((elem) => {
|
|
||||||
const svgCode = elem.textContent;
|
|
||||||
const backup = elem.parentElement;
|
|
||||||
backup.classList.add('d-none');
|
|
||||||
{%- comment -%} create mermaid node {%- endcomment -%}
|
|
||||||
let mermaid = document.createElement('pre');
|
|
||||||
mermaid.classList.add('mermaid');
|
|
||||||
const text = document.createTextNode(svgCode);
|
|
||||||
mermaid.appendChild(text);
|
|
||||||
backup.after(mermaid);
|
|
||||||
});
|
|
||||||
|
|
||||||
mermaid.initialize(mermaidConf);
|
|
||||||
window.addEventListener('message', updateMermaid);
|
|
||||||
})();
|
|
||||||
</script>
|
|
@ -1 +0,0 @@
|
|||||||
<!-- A placeholder to allow defining custom metadata -->
|
|
@ -1,116 +0,0 @@
|
|||||||
<!-- Switch the mode between dark and light. -->
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
class ModeToggle {
|
|
||||||
static get MODE_KEY() {
|
|
||||||
return 'mode';
|
|
||||||
}
|
|
||||||
static get MODE_ATTR() {
|
|
||||||
return 'data-mode';
|
|
||||||
}
|
|
||||||
static get DARK_MODE() {
|
|
||||||
return 'dark';
|
|
||||||
}
|
|
||||||
static get LIGHT_MODE() {
|
|
||||||
return 'light';
|
|
||||||
}
|
|
||||||
static get ID() {
|
|
||||||
return 'mode-toggle';
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
let self = this;
|
|
||||||
|
|
||||||
{%- comment -%} always follow the system prefers {%- endcomment -%}
|
|
||||||
this.sysDarkPrefers.addEventListener('change', () => {
|
|
||||||
if (self.hasMode) {
|
|
||||||
self.clearMode();
|
|
||||||
}
|
|
||||||
self.notify();
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!this.hasMode) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.isDarkMode) {
|
|
||||||
this.setDark();
|
|
||||||
} else {
|
|
||||||
this.setLight();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
get sysDarkPrefers() {
|
|
||||||
return window.matchMedia('(prefers-color-scheme: dark)');
|
|
||||||
}
|
|
||||||
|
|
||||||
get isPreferDark() {
|
|
||||||
return this.sysDarkPrefers.matches;
|
|
||||||
}
|
|
||||||
|
|
||||||
get isDarkMode() {
|
|
||||||
return this.mode === ModeToggle.DARK_MODE;
|
|
||||||
}
|
|
||||||
|
|
||||||
get hasMode() {
|
|
||||||
return this.mode != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
get mode() {
|
|
||||||
return sessionStorage.getItem(ModeToggle.MODE_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
{%- comment -%} get the current mode on screen {%- endcomment -%}
|
|
||||||
get modeStatus() {
|
|
||||||
if (this.hasMode) {
|
|
||||||
return this.mode;
|
|
||||||
} else {
|
|
||||||
return this.isPreferDark ? ModeToggle.DARK_MODE : ModeToggle.LIGHT_MODE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setDark() {
|
|
||||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
|
|
||||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
|
|
||||||
}
|
|
||||||
|
|
||||||
setLight() {
|
|
||||||
document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
|
|
||||||
sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
|
|
||||||
}
|
|
||||||
|
|
||||||
clearMode() {
|
|
||||||
document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
|
|
||||||
sessionStorage.removeItem(ModeToggle.MODE_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
{%- comment -%}
|
|
||||||
Notify another plugins that the theme mode has changed
|
|
||||||
{%- endcomment -%}
|
|
||||||
notify() {
|
|
||||||
window.postMessage(
|
|
||||||
{
|
|
||||||
direction: ModeToggle.ID,
|
|
||||||
message: this.modeStatus
|
|
||||||
},
|
|
||||||
'*'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
flipMode() {
|
|
||||||
if (this.hasMode) {
|
|
||||||
this.clearMode();
|
|
||||||
} else {
|
|
||||||
if (this.isPreferDark) {
|
|
||||||
this.setLight();
|
|
||||||
} else {
|
|
||||||
this.setDark();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.notify();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const modeToggle = new ModeToggle();
|
|
||||||
</script>
|
|
@ -1,10 +0,0 @@
|
|||||||
{% comment %}
|
|
||||||
Remove the line number of the code snippet.
|
|
||||||
{% endcomment %}
|
|
||||||
|
|
||||||
{% assign content = include.content %}
|
|
||||||
|
|
||||||
{% if content contains '<td class="rouge-gutter gl"><pre class="lineno">' %}
|
|
||||||
{% assign content = content | replace: '<td class="rouge-gutter gl"><pre class="lineno">', '<!-- <td class="rouge-gutter gl"><pre class="lineno">'%}
|
|
||||||
{% assign content = content | replace: '</td><td class="rouge-code">', '</td> --><td class="rouge-code">' %}
|
|
||||||
{% endif %}
|
|
@ -1,24 +0,0 @@
|
|||||||
<aside
|
|
||||||
id="notification"
|
|
||||||
class="toast"
|
|
||||||
role="alert"
|
|
||||||
aria-live="assertive"
|
|
||||||
aria-atomic="true"
|
|
||||||
data-bs-animation="true"
|
|
||||||
data-bs-autohide="false"
|
|
||||||
>
|
|
||||||
<div class="toast-header">
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="btn-close ms-auto"
|
|
||||||
data-bs-dismiss="toast"
|
|
||||||
aria-label="Close"
|
|
||||||
></button>
|
|
||||||
</div>
|
|
||||||
<div class="toast-body text-center pt-0">
|
|
||||||
<p class="px-2 mb-3">{{ site.data.locales[include.lang].notification.update_found }}</p>
|
|
||||||
<button type="button" class="btn btn-primary" aria-label="Update">
|
|
||||||
{{ site.data.locales[include.lang].notification.update }}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</aside>
|
|
@ -1,13 +0,0 @@
|
|||||||
{% comment %} Site static assets origin type {% endcomment %}
|
|
||||||
|
|
||||||
{% assign type = 'cors' %}
|
|
||||||
|
|
||||||
{% if site.assets.self_host.enabled %}
|
|
||||||
{% if site.assets.self_host.env %}
|
|
||||||
{% if site.assets.self_host.env == jekyll.environment %}
|
|
||||||
{% assign type = 'basic' %}
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
{% assign type = 'basic' %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
@ -1,19 +0,0 @@
|
|||||||
<!-- Display GoatCounter pageviews -->
|
|
||||||
<script>
|
|
||||||
let pv = document.getElementById('pageviews');
|
|
||||||
|
|
||||||
if (pv !== null) {
|
|
||||||
const uri = location.pathname.replace(/\/$/, '');
|
|
||||||
const url = `https://{{ site.analytics.goatcounter.id }}.goatcounter.com/counter/${encodeURIComponent(uri)}.json`;
|
|
||||||
|
|
||||||
fetch(url)
|
|
||||||
.then((response) => response.json())
|
|
||||||
.then((data) => {
|
|
||||||
const count = data.count.replace(/\s/g, '');
|
|
||||||
pv.innerText = new Intl.NumberFormat().format(count);
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
pv.innerText = '1';
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
@ -1,16 +0,0 @@
|
|||||||
{%- comment -%}
|
|
||||||
Get post description or generate it from the post content.
|
|
||||||
{%- endcomment -%}
|
|
||||||
|
|
||||||
{%- assign max_length = include.max_length | default: 200 -%}
|
|
||||||
|
|
||||||
{%- capture description -%}
|
|
||||||
{%- if post.description -%}
|
|
||||||
{{- post.description -}}
|
|
||||||
{%- else -%}
|
|
||||||
{%- include no-linenos.html content=post.content -%}
|
|
||||||
{{- content | markdownify | strip_html -}}
|
|
||||||
{%- endif -%}
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
{{- description | strip | truncate: max_length | escape -}}
|
|
@ -1,34 +0,0 @@
|
|||||||
<!-- Navigation buttons at the bottom of the post. -->
|
|
||||||
|
|
||||||
<nav class="post-navigation d-flex justify-content-between" aria-label="Post Navigation">
|
|
||||||
{% assign previous = site.data.locales[include.lang].post.button.previous %}
|
|
||||||
{% assign next = site.data.locales[include.lang].post.button.next %}
|
|
||||||
|
|
||||||
{% if page.previous.url %}
|
|
||||||
<a
|
|
||||||
href="{{ site.baseurl }}{{ page.previous.url }}"
|
|
||||||
class="btn btn-outline-primary"
|
|
||||||
aria-label="{{ previous }}"
|
|
||||||
>
|
|
||||||
<p>{{ page.previous.title }}</p>
|
|
||||||
</a>
|
|
||||||
{% else %}
|
|
||||||
<div class="btn btn-outline-primary disabled" aria-label="{{ previous }}">
|
|
||||||
<p>-</p>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.next.url %}
|
|
||||||
<a
|
|
||||||
href="{{ site.baseurl }}{{page.next.url}}"
|
|
||||||
class="btn btn-outline-primary"
|
|
||||||
aria-label="{{ next }}"
|
|
||||||
>
|
|
||||||
<p>{{ page.next.title }}</p>
|
|
||||||
</a>
|
|
||||||
{% else %}
|
|
||||||
<div class="btn btn-outline-primary disabled" aria-label="{{ next }}">
|
|
||||||
<p>-</p>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</nav>
|
|
@ -1,91 +0,0 @@
|
|||||||
<!-- The paginator for post list on HomgPage. -->
|
|
||||||
|
|
||||||
<nav aria-label="Page Navigation">
|
|
||||||
<ul class="pagination align-items-center mt-4 mb-0">
|
|
||||||
<!-- left arrow -->
|
|
||||||
{% if paginator.previous_page %}
|
|
||||||
{% assign prev_url = paginator.previous_page_path | relative_url %}
|
|
||||||
{% else %}
|
|
||||||
{% assign prev_url = '#' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<li class="page-item {% unless paginator.previous_page %}disabled{% endunless %}">
|
|
||||||
<a class="page-link" href="{{ prev_url }}" aria-label="previous-page">
|
|
||||||
<i class="fas fa-angle-left"></i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<!-- page numbers -->
|
|
||||||
{% assign left_ellipsis = false %}
|
|
||||||
{% assign right_ellipsis = false %}
|
|
||||||
|
|
||||||
{% for i in (1..paginator.total_pages) %}
|
|
||||||
{% assign pre = paginator.page | minus: 1 %}
|
|
||||||
{% assign next = paginator.page | plus: 1 %}
|
|
||||||
{% assign pre_less = pre | minus: 1 %}
|
|
||||||
{% assign next_more = next | plus: 1 %}
|
|
||||||
{% assign show = false %}
|
|
||||||
|
|
||||||
{% if paginator.page == 1 %}
|
|
||||||
{% if i <= 3 or i == paginator.total_pages %}
|
|
||||||
{% assign show = true %}
|
|
||||||
{% endif %}
|
|
||||||
{% elsif paginator.page == paginator.total_pages %}
|
|
||||||
{% if i == 1 or i >= pre_less %}
|
|
||||||
{% assign show = true %}
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
{% if i == 1 or i == paginator.total_pages %}
|
|
||||||
{% assign show = true %}
|
|
||||||
{% elsif i >= pre and i <= next %}
|
|
||||||
{% assign show = true %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if show %}
|
|
||||||
<!-- show number -->
|
|
||||||
<li class="page-item {% if i == paginator.page %} active{% endif %}">
|
|
||||||
<a
|
|
||||||
class="page-link"
|
|
||||||
href="{% if i > 1 %}{{ site.paginate_path | replace: ':num', i | relative_url }}{% else %}{{ '/' | relative_url }}{% endif %}"
|
|
||||||
>
|
|
||||||
{{- i -}}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% else %}
|
|
||||||
<!-- hide number -->
|
|
||||||
{% if i < pre and left_ellipsis == false %}
|
|
||||||
<li class="page-item disabled">
|
|
||||||
<span class="page-link">...</span>
|
|
||||||
</li>
|
|
||||||
{% assign left_ellipsis = true %}
|
|
||||||
{% elsif i > next and right_ellipsis == false %}
|
|
||||||
<li class="page-item disabled">
|
|
||||||
<span class="page-link">...</span>
|
|
||||||
</li>
|
|
||||||
{% assign right_ellipsis = true %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<!-- mobile pagination -->
|
|
||||||
<li class="page-index align-middle">
|
|
||||||
<span>{{ paginator.page }}</span>
|
|
||||||
<span class="text-muted">/ {{ paginator.total_pages }}</span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<!-- right arrow -->
|
|
||||||
{% if paginator.next_page_path %}
|
|
||||||
{% assign next_url = paginator.next_page_path | relative_url %}
|
|
||||||
{% else %}
|
|
||||||
{% assign next_url = '#' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<li class="page-item {% unless paginator.next_page_path %}disabled{% endunless %}">
|
|
||||||
<a class="page-link" href="{{ next_url }}" aria-label="next-page">
|
|
||||||
<i class="fas fa-angle-right"></i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
<!-- .pagination -->
|
|
@ -1,52 +0,0 @@
|
|||||||
<!-- Post sharing snippet -->
|
|
||||||
|
|
||||||
<div class="share-wrapper d-flex align-items-center">
|
|
||||||
<span class="share-label text-muted">{{ site.data.locales[include.lang].post.share }}</span>
|
|
||||||
<span class="share-icons">
|
|
||||||
{% capture title %}{{ page.title }} - {{ site.title }}{% endcapture %}
|
|
||||||
{% assign title = title | uri_escape %}
|
|
||||||
{% assign url = page.url | absolute_url | url_encode %}
|
|
||||||
|
|
||||||
{% for share in site.data.share.platforms -%}
|
|
||||||
{%- capture tooltip -%}
|
|
||||||
data-bs-toggle="tooltip" data-bs-placement="top" title="{{ share.type }}" aria-label="{{ share.type }}"
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
{% if share.type == 'Mastodon' %}
|
|
||||||
<script defer type="module" src="https://cdn.jsdelivr.net/npm/@justinribeiro/share-to-mastodon/+esm"></script>
|
|
||||||
<button class="btn text-start" {{ tooltip }}>
|
|
||||||
<share-to-mastodon
|
|
||||||
class="share-mastodon"
|
|
||||||
message="{{ title }}"
|
|
||||||
url="{{ url }}"
|
|
||||||
{%- if share.instances -%}
|
|
||||||
customInstanceList="{{ share.instances | jsonify | xml_escape }}"
|
|
||||||
{%- endif %}
|
|
||||||
>
|
|
||||||
<i class="fa-fw {{ share.icon }}"></i>
|
|
||||||
</share-to-mastodon>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
{% continue %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign link = share.link | replace: 'TITLE', title | replace: 'URL', url %}
|
|
||||||
|
|
||||||
<a href="{{ link }}" target="_blank" rel="noopener" {{ tooltip }}>
|
|
||||||
<i class="fa-fw {{ share.icon }}"></i>
|
|
||||||
</a>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="copy-link"
|
|
||||||
aria-label="Copy link"
|
|
||||||
class="btn small"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-placement="top"
|
|
||||||
title="{{ site.data.locales[include.lang].post.button.share_link.title }}"
|
|
||||||
data-title-succeed="{{ site.data.locales[include.lang].post.button.share_link.succeed }}"
|
|
||||||
>
|
|
||||||
<i class="fa-fw fas fa-link pe-none fs-6"></i>
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
@ -1,37 +0,0 @@
|
|||||||
<!-- Calculate the post's reading time, and display the word count in tooltip -->
|
|
||||||
|
|
||||||
{% assign words = include.content | strip_html | number_of_words: 'auto' %}
|
|
||||||
|
|
||||||
<!-- words per minute -->
|
|
||||||
|
|
||||||
{% assign wpm = 180 %}
|
|
||||||
{% assign min_time = 1 %}
|
|
||||||
|
|
||||||
{% assign read_time = words | divided_by: wpm %}
|
|
||||||
|
|
||||||
{% unless read_time > 0 %}
|
|
||||||
{% assign read_time = min_time %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% capture read_prompt %}
|
|
||||||
{{- site.data.locales[include.lang].post.read_time.prompt -}}
|
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
<!-- return element -->
|
|
||||||
<span
|
|
||||||
class="readtime"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-placement="bottom"
|
|
||||||
title="{{ words }} {{ site.data.locales[include.lang].post.words }}"
|
|
||||||
>
|
|
||||||
<em>
|
|
||||||
{{- read_time -}}
|
|
||||||
{{ ' ' }}
|
|
||||||
{{- site.data.locales[include.lang].post.read_time.unit -}}
|
|
||||||
</em>
|
|
||||||
{%- if include.prompt -%}
|
|
||||||
{%- assign _prompt_words = read_prompt | number_of_words: 'auto' -%}
|
|
||||||
{%- unless _prompt_words > 1 -%}{{ ' ' }}{%- endunless -%}
|
|
||||||
{{ read_prompt }}
|
|
||||||
{%- endif -%}
|
|
||||||
</span>
|
|
@ -1,255 +0,0 @@
|
|||||||
<!-- Refactor the HTML structure -->
|
|
||||||
|
|
||||||
{% assign _content = include.content %}
|
|
||||||
|
|
||||||
<!--
|
|
||||||
In order to allow a wide table to scroll horizontally,
|
|
||||||
we suround the markdown table with `<div class="table-wrapper">` and `</div>`
|
|
||||||
-->
|
|
||||||
|
|
||||||
{% if _content contains '<table' %}
|
|
||||||
{% assign _content = _content
|
|
||||||
| replace: '<table', '<div class="table-wrapper"><table'
|
|
||||||
| replace: '</table>', '</table></div>'
|
|
||||||
| replace: '<code><div class="table-wrapper">', '<code>'
|
|
||||||
| replace: '</table></div></code>', '</table></code>'
|
|
||||||
%}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Fixed kramdown code highlight rendering:
|
|
||||||
https://github.com/penibelst/jekyll-compress-html/issues/101
|
|
||||||
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901
|
|
||||||
-->
|
|
||||||
|
|
||||||
{% if _content contains '<pre class="highlight">' %}
|
|
||||||
{% assign _content = _content
|
|
||||||
| replace: '<div class="highlight"><pre class="highlight"><code', '<div class="highlight"><code'
|
|
||||||
| replace: '</code></pre></div>', '</code></div>'
|
|
||||||
%}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- Change the icon of checkbox -->
|
|
||||||
|
|
||||||
{% if _content contains '<input type="checkbox"' %}
|
|
||||||
{% assign _content = _content
|
|
||||||
| replace: '<input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />',
|
|
||||||
'<i class="fas fa-check-circle fa-fw checked"></i>'
|
|
||||||
| replace: '<input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />',
|
|
||||||
'<i class="far fa-circle fa-fw"></i>'
|
|
||||||
%}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- Handle images -->
|
|
||||||
|
|
||||||
{% assign IMG_TAG = '<img ' %}
|
|
||||||
|
|
||||||
{% if _content contains IMG_TAG %}
|
|
||||||
{% assign _img_content = null %}
|
|
||||||
{% assign _img_snippets = _content | split: IMG_TAG %}
|
|
||||||
|
|
||||||
{% for _img_snippet in _img_snippets %}
|
|
||||||
{% if forloop.first %}
|
|
||||||
{% assign _img_content = _img_snippet %}
|
|
||||||
{% continue %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign _left = _img_snippet | split: '>' | first %}
|
|
||||||
{% assign _right = _img_snippet | remove: _left %}
|
|
||||||
|
|
||||||
{% unless _left contains 'src=' %}
|
|
||||||
{% continue %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% assign _left = _left | remove: ' /' | replace: ' w=', ' width=' | replace: ' h=', ' height=' %}
|
|
||||||
{% assign _attrs = _left | split: '" ' %}
|
|
||||||
|
|
||||||
{% assign _src = null %}
|
|
||||||
{% assign _lqip = null %}
|
|
||||||
{% assign _class = null %}
|
|
||||||
|
|
||||||
{% for _attr in _attrs %}
|
|
||||||
{% unless _attr contains '=' %}
|
|
||||||
{% continue %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% assign _pair = _attr | split: '="' %}
|
|
||||||
{% capture _key %}{{ _pair | first }}{% endcapture %}
|
|
||||||
{% capture _value %}{{ _pair | last | remove: '"' }}{% endcapture %}
|
|
||||||
|
|
||||||
{% case _key %}
|
|
||||||
{% when 'src' %}
|
|
||||||
{% assign _src = _value %}
|
|
||||||
{% when 'lqip' %}
|
|
||||||
{% assign _lqip = _value %}
|
|
||||||
{% when 'class' %}
|
|
||||||
{% assign _class = _value %}
|
|
||||||
{% endcase %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<!-- take out classes -->
|
|
||||||
{% if _class %}
|
|
||||||
{% capture _old_class %}class="{{ _class }}"{% endcapture %}
|
|
||||||
{% assign _left = _left | remove: _old_class %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign _final_src = null %}
|
|
||||||
{% assign _lazyload = true %}
|
|
||||||
|
|
||||||
{%- capture _img_url -%}
|
|
||||||
{% include media-url.html src=_src subpath=page.media_subpath %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
|
|
||||||
{% assign _path_prefix = _img_url | remove: _src %}
|
|
||||||
|
|
||||||
{% unless _src contains '//' %}
|
|
||||||
{% assign _final_src = _path_prefix | append: _src %}
|
|
||||||
{% assign _src_alt = 'src="' | append: _path_prefix %}
|
|
||||||
{% assign _left = _left | replace: 'src="', _src_alt %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% if _lqip %}
|
|
||||||
{% assign _lazyload = false %}
|
|
||||||
{% assign _class = _class | append: ' blur' %}
|
|
||||||
|
|
||||||
{% unless _lqip contains 'data:' %}
|
|
||||||
{% assign _lqip_alt = 'lqip="' | append: _path_prefix %}
|
|
||||||
{% assign _left = _left | replace: 'lqip="', _lqip_alt %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
<!-- add image placeholder -->
|
|
||||||
{% assign _left = _left | replace: 'src=', 'data-src=' | replace: ' lqip=', ' data-lqip="true" src=' %}
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
{% assign _class = _class | append: ' shimmer' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- lazy-load images -->
|
|
||||||
{% if _lazyload %}
|
|
||||||
{% assign _left = _left | append: ' loading="lazy"' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.layout == 'home' %}
|
|
||||||
<!-- create the image wrapper -->
|
|
||||||
{% assign _wrapper_start = '<div class="preview-img ' | append: _class | append: '">' %}
|
|
||||||
|
|
||||||
{% assign _img_content = _img_content | append: _wrapper_start %}
|
|
||||||
{% assign _right = _right | prepend: '></div' %}
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
<!-- make sure the `<img>` is wrapped by `<a>` -->
|
|
||||||
{% assign _parent = _right | slice: 1, 4 %}
|
|
||||||
|
|
||||||
{% if _parent == '</a>' %}
|
|
||||||
<!-- add class to exist <a> tag -->
|
|
||||||
{% assign _size = _img_content | size | minus: 1 %}
|
|
||||||
{% capture _class %}
|
|
||||||
class="img-link{% unless _lqip %} shimmer{% endunless %}"
|
|
||||||
{% endcapture %}
|
|
||||||
{% assign _img_content = _img_content | slice: 0, _size | append: _class | append: '>' %}
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
<!-- create the image wrapper -->
|
|
||||||
{% assign _wrapper_start = _final_src
|
|
||||||
| default: _src
|
|
||||||
| prepend: '<a href="'
|
|
||||||
| append: '" class="popup img-link '
|
|
||||||
| append: _class
|
|
||||||
| append: '">'
|
|
||||||
%}
|
|
||||||
|
|
||||||
{% assign _img_content = _img_content | append: _wrapper_start %}
|
|
||||||
{% assign _right = '></a' | append: _right %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- combine -->
|
|
||||||
{% assign _img_content = _img_content | append: IMG_TAG | append: _left | append: _right %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if _img_content %}
|
|
||||||
{% assign _content = _img_content %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- Add header for code snippets -->
|
|
||||||
|
|
||||||
{% if _content contains '<div class="highlight"><code>' %}
|
|
||||||
{% assign _code_spippets = _content | split: '<div class="highlight"><code>' %}
|
|
||||||
{% assign _new_content = '' %}
|
|
||||||
|
|
||||||
{% for _snippet in _code_spippets %}
|
|
||||||
{% if forloop.last %}
|
|
||||||
{% assign _new_content = _new_content | append: _snippet %}
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
{% assign _left = _snippet | split: '><' | last %}
|
|
||||||
|
|
||||||
{% if _left contains 'file="' %}
|
|
||||||
{% assign _label_text = _left | split: 'file="' | last | split: '"' | first %}
|
|
||||||
{% assign _label_icon = 'far fa-file-code fa-fw' %}
|
|
||||||
{% else %}
|
|
||||||
{% assign _lang = _left | split: 'language-' | last | split: ' ' | first %}
|
|
||||||
{% capture _label_text %}{% include language-alias.html language=_lang %}{% endcapture %}
|
|
||||||
{% assign _label_icon = 'fas fa-code fa-fw small' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% capture _label %}
|
|
||||||
<span data-label-text="{{ _label_text | strip }}"><i class="{{ _label_icon }}"></i></span>
|
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
{% assign _new_content = _new_content
|
|
||||||
| append: _snippet
|
|
||||||
| append: '<div class="code-header">'
|
|
||||||
| append: _label
|
|
||||||
| append: '<button aria-label="copy" data-title-succeed="'
|
|
||||||
| append: site.data.locales[include.lang].post.button.copy_code.succeed
|
|
||||||
| append: '"><i class="far fa-clipboard"></i></button></div>'
|
|
||||||
| append: '<div class="highlight"><code>'
|
|
||||||
%}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% assign _content = _new_content %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<!-- Create heading anchors -->
|
|
||||||
|
|
||||||
{% assign heading_levels = '2,3,4,5' | split: ',' %}
|
|
||||||
{% assign _heading_content = _content %}
|
|
||||||
|
|
||||||
{% for level in heading_levels %}
|
|
||||||
{% assign mark_start = '<h' | append: level | append: ' id="' %}
|
|
||||||
{% assign mark_end = '</h' | append: level | append: '>' %}
|
|
||||||
|
|
||||||
{% if _heading_content contains mark_start %}
|
|
||||||
{% assign _new_content = null %}
|
|
||||||
{% assign heading_snippets = _heading_content | split: mark_start %}
|
|
||||||
|
|
||||||
{% for snippet in heading_snippets %}
|
|
||||||
{% if forloop.first %}
|
|
||||||
{% assign _new_content = snippet %}
|
|
||||||
{% continue %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign id = snippet | split: '"' | first %}
|
|
||||||
{% assign anchor = '<a href="#'
|
|
||||||
| append: id
|
|
||||||
| append: '" class="anchor text-muted"><i class="fas fa-hashtag"></i></a>'
|
|
||||||
%}
|
|
||||||
|
|
||||||
{% assign left = snippet | split: mark_end | first %}
|
|
||||||
{% assign right = snippet | slice: left.size, snippet.size %}
|
|
||||||
{% assign left = left | replace_first: '">', '"><span class="me-2">' | append: '</span>' %}
|
|
||||||
|
|
||||||
{% assign _new_content = _new_content | append: mark_start | append: left | append: anchor | append: right %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% assign _heading_content = _new_content %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% assign _content = _heading_content %}
|
|
||||||
|
|
||||||
<!-- return -->
|
|
||||||
{{ _content }}
|
|
@ -1,94 +0,0 @@
|
|||||||
<!-- Recommend the other 3 posts according to the tags and categories of the current post. -->
|
|
||||||
|
|
||||||
<!-- The total size of related posts -->
|
|
||||||
{% assign TOTAL_SIZE = 3 %}
|
|
||||||
|
|
||||||
<!-- An random integer that bigger than 0 -->
|
|
||||||
{% assign TAG_SCORE = 1 %}
|
|
||||||
|
|
||||||
<!-- Equals to TAG_SCORE / {max_categories_hierarchy} -->
|
|
||||||
{% assign CATEGORY_SCORE = 0.5 %}
|
|
||||||
|
|
||||||
{% assign SEPARATOR = ':' %}
|
|
||||||
|
|
||||||
{% assign match_posts = '' | split: '' %}
|
|
||||||
|
|
||||||
{% for category in page.categories %}
|
|
||||||
{% assign match_posts = match_posts | push: site.categories[category] | uniq %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% for tag in page.tags %}
|
|
||||||
{% assign match_posts = match_posts | push: site.tags[tag] | uniq %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% assign match_posts = match_posts | reverse %}
|
|
||||||
{% assign last_index = match_posts.size | minus: 1 %}
|
|
||||||
{% assign score_list = '' | split: '' %}
|
|
||||||
|
|
||||||
{% for i in (0..last_index) %}
|
|
||||||
{% assign post = match_posts[i] %}
|
|
||||||
|
|
||||||
{% if post.url == page.url %}
|
|
||||||
{% continue %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign score = 0 %}
|
|
||||||
|
|
||||||
{% for tag in post.tags %}
|
|
||||||
{% if page.tags contains tag %}
|
|
||||||
{% assign score = score | plus: TAG_SCORE %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% for category in post.categories %}
|
|
||||||
{% if page.categories contains category %}
|
|
||||||
{% assign score = score | plus: CATEGORY_SCORE %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if score > 0 %}
|
|
||||||
{% capture score_item %}{{ score }}{{ SEPARATOR }}{{ i }}{% endcapture %}
|
|
||||||
{% assign score_list = score_list | push: score_item %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% assign index_list = '' | split: '' %}
|
|
||||||
|
|
||||||
{% if score_list.size > 0 %}
|
|
||||||
{% assign score_list = score_list | sort | reverse %}
|
|
||||||
{% for entry in score_list limit: TOTAL_SIZE %}
|
|
||||||
{% assign index = entry | split: SEPARATOR | last %}
|
|
||||||
{% assign index_list = index_list | push: index %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% assign relate_posts = '' | split: '' %}
|
|
||||||
|
|
||||||
{% for index in index_list %}
|
|
||||||
{% assign i = index | to_integer %}
|
|
||||||
{% assign relate_posts = relate_posts | push: match_posts[i] %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if relate_posts.size > 0 %}
|
|
||||||
<aside id="related-posts" aria-labelledby="related-label">
|
|
||||||
<h3 class="mb-4" id="related-label">
|
|
||||||
{{- site.data.locales[include.lang].post.relate_posts -}}
|
|
||||||
</h3>
|
|
||||||
<nav class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4">
|
|
||||||
{% for post in relate_posts %}
|
|
||||||
<article class="col">
|
|
||||||
<a href="{{ post.url | relative_url }}" class="post-preview card h-100">
|
|
||||||
<div class="card-body">
|
|
||||||
{% include datetime.html date=post.date lang=include.lang %}
|
|
||||||
<h4 class="pt-0 my-2">{{ post.title }}</h4>
|
|
||||||
<div class="text-muted">
|
|
||||||
<p>{% include post-description.html %}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</article>
|
|
||||||
{% endfor %}
|
|
||||||
</nav>
|
|
||||||
</aside>
|
|
||||||
<!-- #related-posts -->
|
|
||||||
{% endif %}
|
|
@ -1,47 +0,0 @@
|
|||||||
<!--
|
|
||||||
Jekyll Simple Search loader
|
|
||||||
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
|
|
||||||
-->
|
|
||||||
|
|
||||||
{% capture result_elem %}
|
|
||||||
<article class="px-1 px-sm-2 px-lg-4 px-xl-0">
|
|
||||||
<header>
|
|
||||||
<h2><a href="{url}">{title}</a></h2>
|
|
||||||
<div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1">
|
|
||||||
{categories}
|
|
||||||
{tags}
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<p>{snippet}</p>
|
|
||||||
</article>
|
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
{% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %}
|
|
||||||
|
|
||||||
<script>
|
|
||||||
{%- comment -%} Note: dependent library will be loaded in `js-selector.html` {%- endcomment -%}
|
|
||||||
SimpleJekyllSearch({
|
|
||||||
searchInput: document.getElementById('search-input'),
|
|
||||||
resultsContainer: document.getElementById('search-results'),
|
|
||||||
json: '{{ '/assets/js/data/search.json' | relative_url }}',
|
|
||||||
searchResultTemplate: '{{ result_elem | strip_newlines }}',
|
|
||||||
noResultsText: '{{ not_found }}',
|
|
||||||
templateMiddleware: function(prop, value, template) {
|
|
||||||
if (prop === 'categories') {
|
|
||||||
if (value === '') {
|
|
||||||
return `${value}`;
|
|
||||||
} else {
|
|
||||||
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prop === 'tags') {
|
|
||||||
if (value === '') {
|
|
||||||
return `${value}`;
|
|
||||||
} else {
|
|
||||||
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
@ -1,10 +0,0 @@
|
|||||||
<!-- The Search results -->
|
|
||||||
|
|
||||||
<div id="search-result-wrapper" class="d-flex justify-content-center d-none">
|
|
||||||
<div class="col-11 content">
|
|
||||||
<div id="search-hints">
|
|
||||||
{% include_cached trending-tags.html %}
|
|
||||||
</div>
|
|
||||||
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,97 +0,0 @@
|
|||||||
<!-- The Side Bar -->
|
|
||||||
|
|
||||||
<aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end">
|
|
||||||
<header class="profile-wrapper">
|
|
||||||
<a href="{{ '/' | relative_url }}" id="avatar" class="rounded-circle">
|
|
||||||
{%- if site.avatar != empty and site.avatar -%}
|
|
||||||
{%- capture avatar_url -%}
|
|
||||||
{% include media-url.html src=site.avatar %}
|
|
||||||
{%- endcapture -%}
|
|
||||||
<img src="{{- avatar_url -}}" width="112" height="112" alt="avatar" onerror="this.style.display='none'">
|
|
||||||
{%- endif -%}
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a class="site-title d-block" href="{{ '/' | relative_url }}">{{ site.title }}</a>
|
|
||||||
<p class="site-subtitle fst-italic mb-0">{{ site.tagline }}</p>
|
|
||||||
</header>
|
|
||||||
<!-- .profile-wrapper -->
|
|
||||||
|
|
||||||
<nav class="flex-column flex-grow-1 w-100 ps-0">
|
|
||||||
<ul class="nav">
|
|
||||||
<!-- home -->
|
|
||||||
<li class="nav-item{% if page.layout == 'home' %}{{ " active" }}{% endif %}">
|
|
||||||
<a href="{{ '/' | relative_url }}" class="nav-link">
|
|
||||||
<i class="fa-fw fas fa-home"></i>
|
|
||||||
<span>{{ site.data.locales[include.lang].tabs.home | upcase }}</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<!-- the real tabs -->
|
|
||||||
{% for tab in site.tabs %}
|
|
||||||
<li class="nav-item{% if tab.url == page.url %}{{ " active" }}{% endif %}">
|
|
||||||
<a href="{{ tab.url | relative_url }}" class="nav-link">
|
|
||||||
<i class="fa-fw {{ tab.icon }}"></i>
|
|
||||||
{% capture tab_name %}{{ tab.url | split: '/' }}{% endcapture %}
|
|
||||||
|
|
||||||
<span>{{ site.data.locales[include.lang].tabs.[tab_name] | default: tab.title | upcase }}</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<!-- .nav-item -->
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
|
|
||||||
{% unless site.theme_mode %}
|
|
||||||
<button type="button" class="btn btn-link nav-link" aria-label="Switch Mode" id="mode-toggle">
|
|
||||||
<i class="fas fa-adjust"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
{% if site.data.contact.size > 0 %}
|
|
||||||
<span class="icon-border"></span>
|
|
||||||
{% endif %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% for entry in site.data.contact %}
|
|
||||||
{% case entry.type %}
|
|
||||||
{% when 'github', 'twitter' %}
|
|
||||||
{%- capture url -%}
|
|
||||||
https://{{ entry.type }}.com/{{ site[entry.type].username }}
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% when 'email' %}
|
|
||||||
{% assign email = site.social.email | split: '@' %}
|
|
||||||
{%- capture url -%}
|
|
||||||
javascript:location.href = 'mailto:' + ['{{ email[0] }}','{{ email[1] }}'].join('@')
|
|
||||||
{%- endcapture -%}
|
|
||||||
{% when 'rss' %}
|
|
||||||
{% assign url = '/feed.xml' | relative_url %}
|
|
||||||
{% else %}
|
|
||||||
{% assign url = entry.url %}
|
|
||||||
{% endcase %}
|
|
||||||
|
|
||||||
{% if url %}
|
|
||||||
<a
|
|
||||||
href="{{ url }}"
|
|
||||||
aria-label="{{ entry.type }}"
|
|
||||||
{% assign link_types = '' %}
|
|
||||||
|
|
||||||
{% unless entry.noblank %}
|
|
||||||
target="_blank"
|
|
||||||
{% assign link_types = 'noopener noreferrer' %}
|
|
||||||
{% endunless %}
|
|
||||||
|
|
||||||
{% if entry.type == 'mastodon' %}
|
|
||||||
{% assign link_types = link_types | append: ' me' | strip %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% unless link_types == empty %}
|
|
||||||
rel="{{ link_types }}"
|
|
||||||
{% endunless %}
|
|
||||||
>
|
|
||||||
<i class="{{ entry.icon }}"></i>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
<!-- .sidebar-bottom -->
|
|
||||||
</aside>
|
|
||||||
<!-- #sidebar -->
|
|
@ -1,10 +0,0 @@
|
|||||||
{% comment %}
|
|
||||||
Determine TOC state and return it through variable "enable_toc"
|
|
||||||
{% endcomment %}
|
|
||||||
|
|
||||||
{% assign enable_toc = false %}
|
|
||||||
{% if site.toc and page.toc %}
|
|
||||||
{% if page.content contains '<h2' or page.content contains '<h3' %}
|
|
||||||
{% assign enable_toc = true %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
@ -1,8 +0,0 @@
|
|||||||
{% include toc-status.html %}
|
|
||||||
|
|
||||||
{% if enable_toc %}
|
|
||||||
<section id="toc-wrapper" class="ps-0 pe-4">
|
|
||||||
<h2 class="panel-heading ps-3 mb-2">{{- site.data.locales[include.lang].panel.toc -}}</h2>
|
|
||||||
<nav id="toc"></nav>
|
|
||||||
</section>
|
|
||||||
{% endif %}
|
|
@ -1,77 +0,0 @@
|
|||||||
<!-- The Top Bar -->
|
|
||||||
|
|
||||||
<header id="topbar-wrapper" aria-label="Top Bar">
|
|
||||||
<div
|
|
||||||
id="topbar"
|
|
||||||
class="d-flex align-items-center justify-content-between px-lg-3 h-100"
|
|
||||||
>
|
|
||||||
<nav id="breadcrumb" aria-label="Breadcrumb">
|
|
||||||
{% assign paths = page.url | split: '/' %}
|
|
||||||
|
|
||||||
{% if paths.size == 0 or page.layout == 'home' %}
|
|
||||||
<!-- index page -->
|
|
||||||
<span>{{ site.data.locales[include.lang].tabs.home | capitalize }}</span>
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
{% for item in paths %}
|
|
||||||
{% if forloop.first %}
|
|
||||||
<span>
|
|
||||||
<a href="{{ '/' | relative_url }}">
|
|
||||||
{{- site.data.locales[include.lang].tabs.home | capitalize -}}
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
{% elsif forloop.last %}
|
|
||||||
{% if page.collection == 'tabs' %}
|
|
||||||
<span>{{ site.data.locales[include.lang].tabs[item] | default: page.title }}</span>
|
|
||||||
{% else %}
|
|
||||||
<span>{{ page.title }}</span>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% elsif page.layout == 'category' or page.layout == 'tag' %}
|
|
||||||
<span>
|
|
||||||
<a href="{{ item | append: '/' | relative_url }}">
|
|
||||||
{{- site.data.locales[include.lang].tabs[item] | default: page.title -}}
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
</nav>
|
|
||||||
<!-- endof #breadcrumb -->
|
|
||||||
|
|
||||||
<button type="button" id="sidebar-trigger" class="btn btn-link">
|
|
||||||
<i class="fas fa-bars fa-fw"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div id="topbar-title">
|
|
||||||
{% if page.layout == 'home' %}
|
|
||||||
{{- site.data.locales[include.lang].title | default: site.title -}}
|
|
||||||
{% elsif page.collection == 'tabs' or page.layout == 'page' %}
|
|
||||||
{%- capture tab_key -%}{{ page.url | split: '/' }}{%- endcapture -%}
|
|
||||||
{{- site.data.locales[include.lang].tabs[tab_key] | default: page.title -}}
|
|
||||||
{% else %}
|
|
||||||
{{- site.data.locales[include.lang].layout[page.layout] | default: page.layout | capitalize -}}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button type="button" id="search-trigger" class="btn btn-link">
|
|
||||||
<i class="fas fa-search fa-fw"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<search id="search" class="align-items-center ms-3 ms-lg-0">
|
|
||||||
<i class="fas fa-search fa-fw"></i>
|
|
||||||
<input
|
|
||||||
class="form-control"
|
|
||||||
id="search-input"
|
|
||||||
type="search"
|
|
||||||
aria-label="search"
|
|
||||||
autocomplete="off"
|
|
||||||
placeholder="{{ site.data.locales[include.lang].search.hint | capitalize }}..."
|
|
||||||
>
|
|
||||||
</search>
|
|
||||||
<button type="button" class="btn btn-link text-decoration-none" id="search-cancel">
|
|
||||||
{{- site.data.locales[include.lang].search.cancel -}}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
@ -1,46 +0,0 @@
|
|||||||
<!-- The trending tags list -->
|
|
||||||
|
|
||||||
{% assign MAX = 10 %}
|
|
||||||
|
|
||||||
{% assign size_list = '' | split: '' %}
|
|
||||||
{% assign tag_list = '' | split: '' %}
|
|
||||||
|
|
||||||
{% for tag in site.tags %}
|
|
||||||
{% assign size = tag | last | size %}
|
|
||||||
{% assign size_list = size_list | push: size %}
|
|
||||||
|
|
||||||
{% assign tag_str = tag | first | append: '::' | append: size %}
|
|
||||||
{% assign tag_list = tag_list | push: tag_str %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% assign size_list = size_list | sort | reverse %}
|
|
||||||
|
|
||||||
{% assign tag_list = tag_list | sort_natural %}
|
|
||||||
|
|
||||||
{% assign trending_tags = '' | split: '' %}
|
|
||||||
|
|
||||||
{% for size in size_list limit: MAX %}
|
|
||||||
{% for tag_str in tag_list %}
|
|
||||||
{% assign tag = tag_str | split: '::' %}
|
|
||||||
{% assign tag_name = tag | first %}
|
|
||||||
{% assign tag_size = tag | last | plus: 0 %}
|
|
||||||
{% if tag_size == size %}
|
|
||||||
{% unless trending_tags contains tag_name %}
|
|
||||||
{% assign trending_tags = trending_tags | push: tag_name %}
|
|
||||||
{% break %}
|
|
||||||
{% endunless %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if trending_tags.size > 0 %}
|
|
||||||
<section>
|
|
||||||
<h2 class="panel-heading">{{- site.data.locales[include.lang].panel.trending_tags -}}</h2>
|
|
||||||
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
|
|
||||||
{% for tag_name in trending_tags %}
|
|
||||||
{% assign url = tag_name | slugify | url_encode | prepend: '/tags/' | append: '/' %}
|
|
||||||
<a class="post-tag btn btn-outline-primary" href="{{ url | relative_url }}">{{ tag_name }}</a>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
{% endif %}
|
|
@ -1,40 +0,0 @@
|
|||||||
<!-- Get 5 last posted/updated posts -->
|
|
||||||
|
|
||||||
{% assign MAX_SIZE = 5 %}
|
|
||||||
|
|
||||||
{% assign all_list = '' | split: '' %}
|
|
||||||
|
|
||||||
{% for post in site.posts %}
|
|
||||||
{% assign datetime = post.last_modified_at | default: post.date %}
|
|
||||||
|
|
||||||
{% capture elem %}
|
|
||||||
{{- datetime | date: "%Y%m%d%H%M%S" -}}::{{- forloop.index0 -}}
|
|
||||||
{% endcapture %}
|
|
||||||
|
|
||||||
{% assign all_list = all_list | push: elem %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% assign all_list = all_list | sort | reverse %}
|
|
||||||
|
|
||||||
{% assign update_list = '' | split: '' %}
|
|
||||||
|
|
||||||
{% for entry in all_list limit: MAX_SIZE %}
|
|
||||||
{% assign update_list = update_list | push: entry %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if update_list.size > 0 %}
|
|
||||||
<section id="access-lastmod">
|
|
||||||
<h2 class="panel-heading">{{- site.data.locales[include.lang].panel.lastmod -}}</h2>
|
|
||||||
<ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2">
|
|
||||||
{% for item in update_list %}
|
|
||||||
{% assign index = item | split: '::' | last | plus: 0 %}
|
|
||||||
{% assign post = site.posts[index] %}
|
|
||||||
{% assign url = post.url | relative_url %}
|
|
||||||
<li class="text-truncate lh-lg">
|
|
||||||
<a href="{{ url }}">{{ post.title }}</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
<!-- #access-lastmod -->
|
|
||||||
{% endif %}
|
|
@ -1,7 +0,0 @@
|
|||||||
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
|
||||||
import { categoryCollapse } from './modules/plugins';
|
|
||||||
|
|
||||||
basic();
|
|
||||||
initSidebar();
|
|
||||||
initTopbar();
|
|
||||||
categoryCollapse();
|
|
@ -1,5 +0,0 @@
|
|||||||
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
|
||||||
|
|
||||||
initSidebar();
|
|
||||||
initTopbar();
|
|
||||||
basic();
|
|
@ -1,8 +0,0 @@
|
|||||||
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
|
||||||
import { initLocaleDatetime, loadImg } from './modules/plugins';
|
|
||||||
|
|
||||||
loadImg();
|
|
||||||
initLocaleDatetime();
|
|
||||||
initSidebar();
|
|
||||||
initTopbar();
|
|
||||||
basic();
|
|
@ -1,7 +0,0 @@
|
|||||||
import { basic, initSidebar, initTopbar } from './modules/layouts';
|
|
||||||
import { initLocaleDatetime } from './modules/plugins';
|
|
||||||
|
|
||||||
initSidebar();
|
|
||||||
initTopbar();
|
|
||||||
initLocaleDatetime();
|
|
||||||
basic();
|
|
@ -1,19 +0,0 @@
|
|||||||
/**
|
|
||||||
* Reference: https://bootsnipp.com/snippets/featured/link-to-top-page
|
|
||||||
*/
|
|
||||||
|
|
||||||
export function back2top() {
|
|
||||||
const btn = document.getElementById('back-to-top');
|
|
||||||
|
|
||||||
window.addEventListener('scroll', () => {
|
|
||||||
if (window.scrollY > 50) {
|
|
||||||
btn.classList.add('show');
|
|
||||||
} else {
|
|
||||||
btn.classList.remove('show');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
btn.addEventListener('click', () => {
|
|
||||||
window.scrollTo({ top: 0 });
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
/**
|
|
||||||
* Tab 'Categories' expand/close effect.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import 'bootstrap/js/src/collapse.js';
|
|
||||||
|
|
||||||
const childPrefix = 'l_';
|
|
||||||
const parentPrefix = 'h_';
|
|
||||||
const children = document.getElementsByClassName('collapse');
|
|
||||||
|
|
||||||
export function categoryCollapse() {
|
|
||||||
[...children].forEach((elem) => {
|
|
||||||
const id = parentPrefix + elem.id.substring(childPrefix.length);
|
|
||||||
const parent = document.getElementById(id);
|
|
||||||
|
|
||||||
// collapse sub-categories
|
|
||||||
elem.addEventListener('hide.bs.collapse', () => {
|
|
||||||
if (parent) {
|
|
||||||
parent.querySelector('.far.fa-folder-open').className =
|
|
||||||
'far fa-folder fa-fw';
|
|
||||||
parent.querySelector('.fas.fa-angle-down').classList.add('rotate');
|
|
||||||
parent.classList.remove('hide-border-bottom');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// expand sub-categories
|
|
||||||
elem.addEventListener('show.bs.collapse', () => {
|
|
||||||
if (parent) {
|
|
||||||
parent.querySelector('.far.fa-folder').className =
|
|
||||||
'far fa-folder-open fa-fw';
|
|
||||||
parent.querySelector('.fas.fa-angle-down').classList.remove('rotate');
|
|
||||||
parent.classList.add('hide-border-bottom');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,143 +0,0 @@
|
|||||||
/**
|
|
||||||
* Clipboard functions
|
|
||||||
*
|
|
||||||
* Dependencies:
|
|
||||||
* clipboard.js (https://github.com/zenorocha/clipboard.js)
|
|
||||||
*/
|
|
||||||
|
|
||||||
import Tooltip from 'bootstrap/js/src/tooltip';
|
|
||||||
|
|
||||||
const clipboardSelector = '.code-header>button';
|
|
||||||
|
|
||||||
const ICON_DEFAULT = 'far fa-clipboard';
|
|
||||||
const ICON_SUCCESS = 'fas fa-check';
|
|
||||||
|
|
||||||
const ATTR_TIMEOUT = 'timeout';
|
|
||||||
const ATTR_TITLE_SUCCEED = 'data-title-succeed';
|
|
||||||
const ATTR_TITLE_ORIGIN = 'data-bs-original-title';
|
|
||||||
const TIMEOUT = 2000; // in milliseconds
|
|
||||||
|
|
||||||
function isLocked(node) {
|
|
||||||
if (node.hasAttribute(ATTR_TIMEOUT)) {
|
|
||||||
let timeout = node.getAttribute(ATTR_TIMEOUT);
|
|
||||||
if (Number(timeout) > Date.now()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function lock(node) {
|
|
||||||
node.setAttribute(ATTR_TIMEOUT, Date.now() + TIMEOUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
function unlock(node) {
|
|
||||||
node.removeAttribute(ATTR_TIMEOUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
function showTooltip(btn) {
|
|
||||||
const succeedTitle = btn.getAttribute(ATTR_TITLE_SUCCEED);
|
|
||||||
btn.setAttribute(ATTR_TITLE_ORIGIN, succeedTitle);
|
|
||||||
Tooltip.getInstance(btn).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
function hideTooltip(btn) {
|
|
||||||
Tooltip.getInstance(btn).hide();
|
|
||||||
btn.removeAttribute(ATTR_TITLE_ORIGIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setSuccessIcon(btn) {
|
|
||||||
const icon = btn.children[0];
|
|
||||||
icon.setAttribute('class', ICON_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
function resumeIcon(btn) {
|
|
||||||
const icon = btn.children[0];
|
|
||||||
icon.setAttribute('class', ICON_DEFAULT);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setCodeClipboard() {
|
|
||||||
const clipboardList = document.querySelectorAll(clipboardSelector);
|
|
||||||
|
|
||||||
if (clipboardList.length === 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initial the clipboard.js object
|
|
||||||
const clipboard = new ClipboardJS(clipboardSelector, {
|
|
||||||
target: (trigger) => {
|
|
||||||
const codeBlock = trigger.parentNode.nextElementSibling;
|
|
||||||
return codeBlock.querySelector('code .rouge-code');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
[...clipboardList].map(
|
|
||||||
(elem) =>
|
|
||||||
new Tooltip(elem, {
|
|
||||||
placement: 'left'
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
clipboard.on('success', (e) => {
|
|
||||||
const trigger = e.trigger;
|
|
||||||
|
|
||||||
e.clearSelection();
|
|
||||||
|
|
||||||
if (isLocked(trigger)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setSuccessIcon(trigger);
|
|
||||||
showTooltip(trigger);
|
|
||||||
lock(trigger);
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
hideTooltip(trigger);
|
|
||||||
resumeIcon(trigger);
|
|
||||||
unlock(trigger);
|
|
||||||
}, TIMEOUT);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function setLinkClipboard() {
|
|
||||||
const btnCopyLink = document.getElementById('copy-link');
|
|
||||||
|
|
||||||
if (btnCopyLink === null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
btnCopyLink.addEventListener('click', (e) => {
|
|
||||||
const target = e.target;
|
|
||||||
|
|
||||||
if (isLocked(target)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy URL to clipboard
|
|
||||||
navigator.clipboard.writeText(window.location.href).then(() => {
|
|
||||||
const defaultTitle = target.getAttribute(ATTR_TITLE_ORIGIN);
|
|
||||||
const succeedTitle = target.getAttribute(ATTR_TITLE_SUCCEED);
|
|
||||||
|
|
||||||
// Switch tooltip title
|
|
||||||
target.setAttribute(ATTR_TITLE_ORIGIN, succeedTitle);
|
|
||||||
Tooltip.getInstance(target).show();
|
|
||||||
|
|
||||||
lock(target);
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
target.setAttribute(ATTR_TITLE_ORIGIN, defaultTitle);
|
|
||||||
unlock(target);
|
|
||||||
}, TIMEOUT);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
btnCopyLink.addEventListener('mouseleave', (e) => {
|
|
||||||
Tooltip.getInstance(e.target).hide();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function initClipboard() {
|
|
||||||
setCodeClipboard();
|
|
||||||
setLinkClipboard();
|
|
||||||
}
|
|
@ -1,67 +0,0 @@
|
|||||||
/**
|
|
||||||
* Setting up image lazy loading and LQIP switching
|
|
||||||
*/
|
|
||||||
|
|
||||||
const ATTR_DATA_SRC = 'data-src';
|
|
||||||
const ATTR_DATA_LQIP = 'data-lqip';
|
|
||||||
|
|
||||||
const cover = {
|
|
||||||
SHIMMER: 'shimmer',
|
|
||||||
BLUR: 'blur'
|
|
||||||
};
|
|
||||||
|
|
||||||
function removeCover(clzss) {
|
|
||||||
this.parentElement.classList.remove(clzss);
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleImage() {
|
|
||||||
if (!this.complete) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.hasAttribute(ATTR_DATA_LQIP)) {
|
|
||||||
removeCover.call(this, cover.BLUR);
|
|
||||||
} else {
|
|
||||||
removeCover.call(this, cover.SHIMMER);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Switches the LQIP with the real image URL.
|
|
||||||
*/
|
|
||||||
function switchLQIP() {
|
|
||||||
const src = this.getAttribute(ATTR_DATA_SRC);
|
|
||||||
this.setAttribute('src', encodeURI(src));
|
|
||||||
this.removeAttribute(ATTR_DATA_SRC);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function loadImg() {
|
|
||||||
const images = document.querySelectorAll('article img');
|
|
||||||
|
|
||||||
if (images.length === 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
images.forEach((img) => {
|
|
||||||
img.addEventListener('load', handleImage);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Images loaded from the browser cache do not trigger the 'load' event
|
|
||||||
document.querySelectorAll('article img[loading="lazy"]').forEach((img) => {
|
|
||||||
if (img.complete) {
|
|
||||||
removeCover.call(img, cover.SHIMMER);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// LQIPs set by the data URI or WebP will not trigger the 'load' event,
|
|
||||||
// so manually convert the URI to the URL of a high-resolution image.
|
|
||||||
const lqips = document.querySelectorAll(
|
|
||||||
`article img[${ATTR_DATA_LQIP}="true"]`
|
|
||||||
);
|
|
||||||
|
|
||||||
if (lqips.length) {
|
|
||||||
lqips.forEach((lqip) => {
|
|
||||||
switchLQIP.call(lqip);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user