move cmd to nunjucks & update hexo to 6.0.0

Other changes:
* minor fix to the display for code blocks
* remove floating when hover on cards
* replace the list of tags and categories to the index page one
* small change on the title of tags' and categories' pages
This commit is contained in:
thisLight 2021-12-31 18:07:40 +08:00
parent 4abb723445
commit 781759d545
23 changed files with 440 additions and 547 deletions

View file

@ -9,19 +9,18 @@
"server": "hexo server" "server": "hexo server"
}, },
"hexo": { "hexo": {
"version": "5.4.0" "version": "6.0.0"
}, },
"dependencies": { "dependencies": {
"hexo": "^5.0.0", "hexo": "^6.0.0",
"hexo-feed": "^1.1.0", "hexo-feed": "^1.1.0",
"hexo-generator-archive": "^1.0.0", "hexo-generator-archive": "^1.0.0",
"hexo-generator-category": "^1.0.0", "hexo-generator-category": "^1.0.0",
"hexo-generator-index": "^2.0.0", "hexo-generator-index": "^2.0.0",
"hexo-generator-tag": "^1.0.0", "hexo-generator-tag": "^1.0.0",
"hexo-renderer-ejs": "^1.0.0", "hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-marked": "^3.1.0", "hexo-renderer-marked": "^3.1.0",
"hexo-renderer-stylus": "^2.0.0", "hexo-renderer-stylus": "^2.0.0",
"hexo-renderer-swig": "^1.1.0",
"hexo-server": "^2.0.0", "hexo-server": "^2.0.0",
"hexo-tag-steamgame": "^1.0.0", "hexo-tag-steamgame": "^1.0.0",
"hexo-theme-landscape": "^0.0.3" "hexo-theme-landscape": "^0.0.3"

View file

@ -24,26 +24,10 @@ copyright_year_string: "2020-2021"
theme_self_claim: true theme_self_claim: true
about_this_blog: This blog is created with Classical Material Desgin theme, which is a original taste of Material Design for hexo. about_this_blog: This blog is created with Classical Material Desgin, which try to keep the original taste of Material Design for hexo.
my_mastodon: https://mastodon.example.com/@example my_mastodon: https://mastodon.example.com/@example
footer_links: footer_links:
Link 1: "https://example.org" Link 1: "https://example.org"
Link 2: "https://example.com" Link 2: "https://example.com"
site_rss:
atom: /atom.xml
rss: /rss.xml
topic_rss:
tag:
prefix: "/feeds/by-tag/"
atom_suffix: /atom.xml
rss_suffix: /rss.xml
name_lowercase: true
category:
prefix: /feeds/by-category/
atom_suffix: /atom.xml
rss_suffix: /rss.xml
name_lowercase: true

View file

@ -1,11 +1,11 @@
{% extends 'includes/layout.swig' %} {% extends 'includes/layout.njk' %}
{% block body %} {% block body %}
{% set categoriesList = list_categories({ show_count: false }) %} {% set categoriesList = list_categories({ show_count: false }) %}
{% set tagsList = list_tags({ show_count: false }) %} {% set tagsList = list_tags({ show_count: false }) %}
{% set archivesList = list_archives({ show_count: false }) %} {% set archivesList = list_archives({ show_count: false }) %}
{% if !is_year() %} {% if not is_year() %}
<div id="archive"> <div id="archive">
<h1>Archives</h1> <h1>Archives</h1>
{% if theme.atom %} {% if theme.atom %}
@ -27,7 +27,7 @@
<aside> <aside>
<h2>Categories</h2> <h2>Categories</h2>
{% if categoriesList %} {% if categoriesList %}
{% autoescape false %}{{ categoriesList }}{% endautoescape %} {{ categoriesList | safe}}
{% else %} {% else %}
<p>None.</p> <p>None.</p>
{% endif %} {% endif %}
@ -37,7 +37,7 @@
<aside> <aside>
<h2>Tags</h2> <h2>Tags</h2>
{% if tagsList %} {% if tagsList %}
{% autoescape false %}{{ tagsList }}{% endautoescape %} {{ tagsList | safe }}
{% else %} {% else %}
<p>None.</p> <p>None.</p>
{% endif %} {% endif %}
@ -47,7 +47,7 @@
<aside> <aside>
<h2>Archives</h2> <h2>Archives</h2>
{% if archivesList %} {% if archivesList %}
{% autoescape false %}{{ archivesList }}{% endautoescape %} {{ archivesList | safe }}
{% else %} {% else %}
<p>None.</p> <p>None.</p>
{% endif %} {% endif %}

View file

@ -0,0 +1,13 @@
{% extends 'includes/layout.njk' %}
{% import "includes/paginator.njk" as P with context%}
{% import "includes/postlist.njk" as PostList with context %}
{% block body %}
<h2 style="margin-left: 1rem">Category::{{page.category}}</h2>
{{ PostList.PostList(page.posts.toArray()) }}
<div id="center">
{{ P.Paginiation() }}
</div>
{% endblock %}

View file

@ -1,55 +0,0 @@
{% extends 'includes/layout.swig' %}
{% import "includes/paginator.swig" as P %}
{% import "includes/tags.swig" as T %}
{% block body %}
<div id="category">
<div class="card z-depth-0">
<h2 style="margin-left: 1rem; margin-bottom: 0;">{{page.category}}<i class="mdi mdi-tag" style="font-size: 2rem; color: #ee6e73;"></i></h2>
{% if site.data.theme.topic_rss and site.data.theme.topic_rss.category %}
{% set category_rss = site.data.theme.topic_rss.category %}
{% if category_rss.name_lowercase %}
{% set rss_name = page.category.toLowerCase() %}
{% else %}
{% set rss_name = page.category %}
{% endif %}
<div class="card-action">
{% if category_rss.atom_suffix %}
<a href="{{ full_url_for(category_rss.prefix + rss_name + category_rss.atom_suffix) }}">Feed (Atom)</a>
{% endif %}
{% if category_rss.rss_suffix %}
<a href="{{ full_url_for(category_rss.prefix + rss_name + category_rss.rss_suffix) }}">Feed (RSS)</a>
{% endif %}
</div>
{% endif %}
</div>
<ul class="collapsible popout">
{% for article in page.posts.toArray() %}
<li>
<div class="collapsible-header">
<div class="row" style="margin: 0;">
<div class="row" style="margin-left: 4px; margin-bottom: 0.5rem;"><div class="col s12"><h3 style="font-size: 1.2rem; margin: 0; margin-top: 8px;">{{article.title}}</h3></div></div>
<div class="row" style="margin-left: 0; margin-bottom: 0;"><div class="col s12">{{ T.PostTags(article) }}</div></div>
</div>
</div>
<div class="collapsible-body small-padding">
<div style="padding-left: 1rem">
<div class="mdi mdi-clock" style="padding-bottom: 8px">{{ date(article.date) }}</div>
</div>
<div class="entry">{{article.excerpt}}</div>
<div class="card z-depth-0">
<div class="card-action" style="padding-bottom: 0; padding-left: 14px;">
<a href="{% if article.link %}{{article.link}}{% else %}{{url_for(article.path)}}{% endif %}">Go To "{{article.title}}"</a>
</div>
</div>
</div>
</li>
{% endfor %}
</ul>
<div id="center">
{{ P.Paginiation() }}
</div>
</div>
{% endblock %}

View file

@ -0,0 +1,24 @@
{% macro Me(name, email, description) %}
<div class="card">
<div class="row" style="margin-bottom: 0">
<div class="col" style="padding: 12px; padding-left: 20px;">
<img class="circle responsive-img" src="{{ gravatar(email if email else 'example@foo.bar') }}"/>
</div>
<div class="col" style="padding-top: 12px; padding-left: 12px">
{% if name %}
<div class="row" style="margin-bottom: 0">
<h6>{{ name }}</h6>
</div>
{% endif %}
<div class="row" style="margin-bottom: 0">
<p>
{% if description %}
{{ description }}{% else %}Nothing to say.{% endif %}
</p>
</div>
</div>
</div>
</div>
{% endmacro %}

View file

@ -0,0 +1,132 @@
{% set pageTitle = page.title or config.subtitle or '' %}
{% if is_archive() %}
{% set pageTitle = 'Archives' %}
{% elif is_tag() %}
{% set pageTitle = 'Tag: ' + page.tag %}
{% elif is_category() %}
{% set pageTitle = 'Category: ' + page.category %}
{% endif %}
{% if is_month() %}
{% set pageTitle = pageTitle + ': ' + page.month + '/' + page.year %}
{% elif is_year() %}
{% set pageTitle = pageTitle + ': ' + page.year %}
{% endif %}
{% if pageTitle == '' %}
{% set pageTitle = config.title %}
{% endif %}
<!doctype html>
<html lang="{{ config.language }}">
<head>
<meta charset="UTF-8">
<title>{{ pageTitle }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
{% if theme.stylesheets !== undefined and theme.stylesheets.length > 0 %}
{# stylesheet list from _config.yml #}
{% for url in theme.stylesheets %}
<link rel="stylesheet" href="{{ url }}" media="print" onload="this.media='all'; this.onload=null;">
<noscript><link rel="stylesheet" href="{{ url }}"></noscript>
{% endfor %}
{% endif %}
<link rel="stylesheet" href="{{url_for('/materialize/css/materialize.css')}}"/>
{% block add_head %}{% endblock %}
</head>
<body>
<ul id="nav-mobile" class="sidenav">
{% if site.data.theme.menu %}
{% for key, path in site.data.theme.menu %}
<li>
<a href="{{ path }}">{{ key }}</a>
</li>
{% endfor %}
{% else %}
{% for key, path in theme.menu %}
<li>
<a href="{{ path }}">{{ key }}</a>
</li>
{% endfor %}
{% endif %}
</ul>
<nav class="light-blue lighten-1" role="navigation">
<a href="#" data-target="nav-mobile" class="sidenav-trigger">
<div class="mdi mdi-menu"></div>
</a>
<div class="nav-wrapper">
<ul class="right hide-on-med-and-down">
{% if site.data.theme.menu %}
{% for key, path in site.data.theme.menu %}
<li>
<a href="{{ path }}">{{ key }}</a>
</li>
{% endfor %}
{% else %}
{% for key, path in theme.menu %}
<li>
<a href="{{ path }}">{{ key }}</a>
</li>
{% endfor %}
{% endif %}
</ul>
</div>
</nav>
<main id="content" class="container xscontainer">
{% block body %}{% endblock %}
</main>
<footer class="page-footer light-blue darken-4">
<div class="container">
<div class="row">
{% if site.data.theme.about_this_blog %}
<div class="col s12 m4">
<h5 class="white-text">About {{ config.title }}</h5>
<p>{{ site.data.theme.about_this_blog }}</p>
</div>
{% endif %}
{% if site.data.theme.footer_links %}
<div class="col s6 m4">
<h5 class="white-text">
Links
</h5>
<ul>
{% for name, link in site.data.theme.footer_links %}
<li>
<a class="grey-text text-lighten-3" href="{{ link }}">{{ name }}</a>
</li>
{% endfor %}
{% if theme.my_mastodon %}
<li>
<a class="grey-text text-lighten-3" rel="me" href="{{ site.data.theme.my_mastodon }}">My Mastodon</a>
</li>
{% endif %}
</ul>
</div>
{% endif %}
{% if theme.theme_self_claim %}
<div class="col s6 m4">
<p>This blog uses Classical Material Design theme.</p>
</div>
{% endif %}
</div>
</div>
<div class="footer-copyright">
<div class="container truncate">
© Copyright {{ site.data.theme.copyright_year_string }}
{{ config.author }}.
{{ site.data.theme.copyright_addtional }}
</div>
</div>
</footer>
{% if theme.scripts !== undefined and theme.scripts.length > 0 %}
{# scripts list from config.yml #}
{% for url in theme.scripts %}
<script src="{{ url }}"></script>
{% endfor %}
{% endif %}
{% block add_scripts %}{% endblock %}
</body>
</html>

View file

@ -1,135 +0,0 @@
{% set pageTitle = page.title || config.subtitle || '' %}
{% if is_archive() %}
{% set pageTitle = 'Archives' %}
{% endif %}
{% if is_tag() %}
{% set pageTitle = 'Tag: ' + page.tag %}
{% endif %}
{% if is_category() %}
{% set pageTitle = 'Category: ' + page.category %}
{% endif %}
{% if is_month() %}
{% set pageTitle = pageTitle + ': ' + page.month + '/' + page.year %}
{% endif %}
{% if is_year() %}
{% set pageTitle = pageTitle + ': ' + page.year %}
{% endif %}
{% if pageTitle == '' %}
{% set pageTitle = config.title %}
{% endif %}
<!doctype html>
<html lang="{{ config.language }}">
<head>
<meta charset="UTF-8">
<title>{{ pageTitle }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
{% if theme.stylesheets !== undefined && theme.stylesheets.length > 0 %}
{# stylesheet list from _config.yml #}
{% for url in theme.stylesheets %}
<link rel="stylesheet" href="{{ url }}" media="print" onload="this.media='all'; this.onload=null;">
<noscript><link rel="stylesheet" href="{{ url }}"></noscript>
{% endfor %}
{% endif %}
<link rel="stylesheet" href="/materialize/css/materialize.css">
{% if site.data.theme.site_rss %}
{% if site.data.theme.site_rss.rss %}
<link rel="alternate" type="application/rss+xml" title="{{ config.title }}" href="{{ full_url_for(site.data.theme.site_rss.rss) }}" />
{% endif %}
{% if site.data.theme.site_rss.atom %}
<link rel="alternate" type="application/atom+xml" title="{{ config.title }}" href="{{ full_url_for(site.data.theme.site_rss.atom) }}" />
{% endif %}
{% endif %}
{% block add_head %}{% endblock %}
</head>
<body>
<ul id="nav-mobile" class="sidenav">
{% if site.data.theme.menu %}
{% for key in Object.keys(site.data.theme.menu) %}
<li><a href="{{ site.data.theme.menu[key] }}">{{ key }}</a></li>
{% endfor %}
{% else %}
{% for key in Object.keys(theme.menu) %}
<li><a href="{{ theme.menu[key] }}">{{ key }}</a></li>
{% endfor %}
{% endif %}
</ul>
<nav class="light-blue lighten-1" role="navigation">
<a href="#" data-target="nav-mobile" class="sidenav-trigger"><div class="mdi mdi-menu"></div></a>
<div class="nav-wrapper">
<ul class="right hide-on-med-and-down">
{% if site.data.theme.menu %}
{% for key in Object.keys(site.data.theme.menu) %}
<li><a href="{{ site.data.theme.menu[key] }}">{{ key }}</a></li>
{% endfor %}
{% else %}
{% for key in Object.keys(theme.menu) %}
<li><a href="{{ theme.menu[key] }}">{{ key }}</a></li>
{% endfor %}
{% endif %}
</ul>
</div>
</nav>
<main id="content" class="container xscontainer">
{% block body %}{% endblock %}
</main>
<footer class="page-footer light-blue darken-4">
<div class="container">
<div class="row">
{% if site.data.theme.about_this_blog %}
<div class="col s12 m4">
<h5 class="white-text">About {{config.title}}</h5>
<p>{{site.data.theme.about_this_blog}}</p>
</div>
{% endif %}
{% if site.data.theme.footer_links %}
<div class="col s6 m4">
<h5 class="white-text"> Links </h5>
<ul>
{% for name in Object.keys(site.data.theme.footer_links) %}
<li><a class="grey-text text-lighten-3" href="{{site.data.theme.footer_links[name]}}">{{name}}</a></li>
{% endfor %}
{% if theme.my_mastodon %}
<li><a class="grey-text text-lighten-3" rel="me" href="{{site.data.theme.my_mastodon}}">My Mastodon</a></li>
{% endif %}
</ul>
</div>
{% endif %}
{% if theme.theme_self_claim %}
<div class="col s6 m4">
<p>This blog uses Classical Material Design theme.</p>
</div>
{% endif %}
</div>
</div>
<div class="footer-copyright">
<div class="container truncate">
© Copyright {{ site.data.theme.copyright_year_string }} {{ config.author }}. {{ site.data.theme.copyright_addtional }}
</div>
</div>
</footer>
{% if theme.scripts !== undefined && theme.scripts.length > 0 %}
{# scripts list from config.yml #}
{% for url in theme.scripts %}
<script src="{{ url }}"></script>
{% endfor %}
{% endif %}
{% block add_scripts %}{% endblock %}
</body>
</html>

View file

@ -0,0 +1,23 @@
{% macro Paginiation() %}
<ul class="pagination center">
{% if page.prev %}
<li class="waves-effect">
<a href="{{ page.prev_link }}">
<i class="mdi mdi-chevron-left"></i>
</a>
</li>
{% endif %}
{% for n in range(1, page.total, 1) %}
<li class="{{ 'active' if page.current == n else 'waves-effect' }}">
<a href="{{ url_for('page/'+n+'/') }}">{{ n }}</a>
</li>
{% endfor %}
{% if page.next %}
<li class="waves-effect">
<a href="{{ page.next_link }}">
<i class="mdi mdi-chevron-right"></i>
</a>
</li>
{% endif %}
</ul>
{% endmacro %}

View file

@ -1,11 +0,0 @@
{% macro Paginiation() %}
<ul class="pagination center">
<li class="{% if page.current == 1 %}disabled{% else %}waves-effect{% endif %}"><a href="{% if (page.current-1) == 1 %}{{url_for('/')}}{% else %}{{ page.prev_link }}{% endif %}"><i class="mdi mdi-chevron-left"></i></a></li>
<li class="{% if page.current == 1 %}active{% else %}waves-effect{% endif %}"><a href="{{ url_for('/') }}">1</a></li>
{% for n in range(2, page.total, 1) %}
<li class="{% if page.current == n %}active{% else %}waves-effect{% endif %}"><a href="{{ url_for('page/'+n+'/') }}">{{n}}</a></li>
{% endfor %}
<li class="{% if page.current == page.total %}disabled{% else %}waves-effect{% endif %}"><a href="{{ page.next_link }}"><i class="mdi mdi-chevron-right"></i></a></li>
</ul>
{% endmacro %}

View file

@ -0,0 +1,43 @@
{%from 'includes/tags.njk' import PostTags with context%}
{% macro PostList(posts) %}
<ul class="collection">
{% for post in posts %}
<li class="collection-item no-padding">
<div class="card z-depth-0 card-small-margin">
{% if post.photos and post.photos.length > 0 %}
<a href="{{ url_for(post.path) }}">
<div class="card-image">
<img class="responsive-img" src="{{ post.photos[0] }}"/>
<span class="card-title">{{ post.title }}</span>
</div>
</a>
{% if (post.tags.length > 0) or post.excerpt != "" %}
<div class="card-content">
{{ PostTags(post) }}
{% if post.excerpt != "" %}
<p class="entry">{{ post.excerpt }}</p>
{% endif %}
</div>
{% endif %}
{% else %}
<div class="card-content">
<a href="{{ post.link if post.link else url_for(post.path) }}" {% if post.link %} target="_blank" {% endif %}>
<span class="card-title">
{% if (post.title != '' and post.title !== null and post.title !== undefined) %}
{{ post.title }}
{% else %}
{{ post.path }}
{% endif %}
</span>
</a>
<p class="entry">{{ post.excerpt }}</p>
{{ PostTags(post) }}
</div>
{% endif %}
</div>
</li>
{% endfor %}
</ul>
{% endmacro %}

View file

@ -0,0 +1,9 @@
{% macro PostTags(post) %}
<div>
{% for tag in post.tags.data %}
<a href="{{ url_for(tag.path) }}"><div class="chip">
{{tag.name}}
</div></a>
{% endfor %}
</div>
{% endmacro %}

View file

@ -1,9 +0,0 @@
{% macro PostTags(post) %}
<div>
{% for k in Object.keys(post.tags.data) %}
<a href="{{ url_for(post.tags.data[k].path)}}"><div class="chip">
{{post.tags.data[k].name}}
</div></a>
{% endfor %}
</div>
{% endmacro %}

View file

@ -0,0 +1,41 @@
{% extends 'includes/layout.njk' %}
{% from "includes/paginator.njk" import Paginiation with context %}
{% from "includes/postlist.njk" import PostList with context %}
{% import "includes/cards.njk" as cards with context %}
{% macro TagPanel(tags) %}
<div class="card-panel" style="padding-top: 12px; padding-bottom: 12px;">
<span class="chip transparent">Tags</span>
{% for tag in tags %}
<a href="{{ url_for(tag.path) }}">
<div class="chip">
{{ tag.name }}
</div>
</a>
{% endfor %}
</div>
{% endmacro %}
{% block body %}
<div class="row">
<div class="col m8 l9">
{% if page.current == 1 %}
{{ cards.Me(config.author, config.email, config.description) }}
{% endif %}
{% if page.posts.length > 0 %}
{{ PostList(page.posts.toArray()) }}
{% else %}
<span>No Posts Here...</span>
{% endif %}
<div class="center">
{{ Paginiation() }}
</div>
</div>
<div class="col m4 l3 hide-on-small-only">
{{ TagPanel(site.tags.data) }}
</div>
</div>
{% endblock %}
{% block add_head %}
<link rel="stylesheet" href="/css/index.css"/>
{% endblock %}

View file

@ -1,105 +0,0 @@
{% extends 'includes/layout.swig' %}
{% macro PostTags(post) %}
<div>
{% for k in Object.keys(post.tags.data) %}
<a href="{{ url_for(post.tags.data[k].path)}}"><div class="chip">
{{post.tags.data[k].name}}
</div></a>
{% endfor %}
</div>
{% endmacro %}
{% macro PostList(posts) %}
<ul class="collection">
{% for post in posts %}
<li class="collection-item hoverable no-padding">
<div class="card z-depth-0 card-small-margin">
{% if post.photos && post.photos.length > 0 %}
<div class="card-image">
<img class="responsive-img" src="{{ post.photos[0] }}" />
<span class="card-title">{{ post.title }}</span>
</div>
{% if (post.tags.length > 0) || post.excerpt != "" %}
<div class="card-content">
{{ PostTags(post) }}
{% if post.excerpt != "" %}
<p class="entry">{{ post.excerpt }}</p>
{% endif %}
</div>
{% endif %}
<div class="card-action">
<a href="{{ url_for(post.path) }}">Go to "{{post.title}}"</a>
</div>
{% else %}
<div class="card-content">
<a href="{% if post.link %}{{ post.link }}{% else %}{{ url_for(post.path) }}{% endif %}" {%if post.link%}target="_blank"{%endif%}><span class="card-title">{% if (post.title != '' && post.title !== null && post.title !== undefined) %}{{ post.title }}{% else %}{{ post.path }}{% endif %}</span></a>
<p class="entry">{{ post.excerpt }}</p>
{{ PostTags(post) }}
</div>
{% endif %}
</div>
</li>
{% endfor %}
</ul>
{% endmacro %}
{% macro MeCard(name, email, description) %}
<div class="card">
<div class="row" style="margin-bottom: 0" >
{% if email %}
<div class="col" style="padding: 12px; padding-left: 20px;">
<img class="circle responsive-img" src="{{ gravatar(email) }}" async />
</div>
{% else %}
<div class="col" style="padding: 12px; padding-left: 20px;">
<img class="circle responsive-img" src="{{ gravatar('example@foo.bar') }}" />
</div>
{% endif %}
<div class="col" style="padding-top: 12px; padding-left: 12px">
{% if name %}
<div class="row" style="margin-bottom: 0"><h6>{{ name }}</h6></div>
{% endif %}
<div class="row" style="margin-bottom: 0"><p>{%if description %}{{description}}{% else %}Nothing to say.{%endif%}</p></div>
</div>
</div>
</div>
{% endmacro %}
{% macro TagPanel(tags) %}
<div class="card-panel" style="padding-top: 12px; padding-bottom: 12px;">
<span class="chip transparent">Tags</span>
{% for tag in tags %}
<a href="{{ url_for(tag.path)}}"><div class="chip">
{{tag.name}}
</div></a>
{% endfor %}
</div>
{% endmacro %}
{% import "includes/paginator.swig" as P%}
{% block body %}
<div class="row">
<div class="col m8 l9">
{% if page.current == 1 %}
{{ MeCard(config.author, config.email, config.description) }}
{% endif %}
{% if page.posts.length > 0 %}
{{ PostList(page.posts.toArray()) }}
{% else %}
<span>No Post Here...</span>
{% endif %}
<div class="center">
{{ P.Paginiation() }}
</div>
</div>
<div class="col m4 l3 hide-on-small-only">
{{ TagPanel(site.tags) }}
</div>
</div>
{% endblock %}
{% block add_head %}
<link rel="stylesheet" href="/css/index.css">
{% endblock %}

View file

@ -1,14 +1,6 @@
{% extends 'includes/layout.swig' %} {% extends 'includes/layout.njk' %}
{% macro PostTags(post) %} {% from 'includes/tags.njk' import PostTags with context%}
<div>
{% for k in Object.keys(post.tags.data) %}
<a href="{{ url_for(post.tags.data[k].path)}}"><div class="chip">
{{post.tags.data[k].name}}
</div></a>
{% endfor %}
</div>
{% endmacro %}
{% macro Gallery(photos) %} {% macro Gallery(photos) %}
<div class="row"> <div class="row">

View file

@ -1,14 +1,6 @@
{% extends 'includes/layout.swig' %} {% extends 'includes/layout.njk' %}
{% macro PostTags(post) %} {% from 'includes/tags.njk' import PostTags with context%}
<div>
{% for k in Object.keys(post.tags.data) %}
<a href="{{ url_for(post.tags.data[k].path)}}"><div class="chip">
{{post.tags.data[k].name}}
</div></a>
{% endfor %}
</div>
{% endmacro %}
{% macro Gallery(photos) %} {% macro Gallery(photos) %}
<div class="row"> <div class="row">
@ -32,11 +24,11 @@
<div class="col"><span class="mdi mdi-clock">{{date(page.date, 'YYYY/M/D')}}</span></div> <div class="col"><span class="mdi mdi-clock">{{date(page.date, 'YYYY/M/D')}}</span></div>
</div> </div>
{{ PostTags(page) }} {{ PostTags(page) }}
{% if page.photos && page.photos.length > 0%} {% if page.photos and page.photos.length > 0 %}
{{Gallery(page.photos)}} {{Gallery(page.photos)}}
{% endif %} {% endif %}
<div class="entry"> <div class="entry">
{% autoescape false %}{{ page.content }}{% endautoescape %} {{ page.content | safe }}
</div> </div>
</div> </div>
</div> </div>

13
themes/cmd/layout/tag.njk Normal file
View file

@ -0,0 +1,13 @@
{% extends 'includes/layout.njk' %}
{% import "includes/paginator.njk" as P with context%}
{% import "includes/postlist.njk" as PostList with context%}
{% block body %}
<h2 style="margin-left: 1rem"><i class="mdi mdi-tag" style="font-size: 2rem;"></i>::{{page.tag}}</h2>
{{ PostList.PostList(page.posts.toArray()) }}
<div id="center">
{{ P.Paginiation() }}
</div>
{% endblock %}

View file

@ -1,53 +0,0 @@
{% extends 'includes/layout.swig' %}
{% import "includes/paginator.swig" as P %}
{% import "includes/tags.swig" as T %}
{% block body %}
<div class="card z-depth-0">
<h2 style="margin-left: 1rem; margin-bottom: 0;">{{page.tag}}<i class="mdi mdi-tag" style="font-size: 2rem; color: #ee6e73;"></i></h2>
{% if site.data.theme.topic_rss and site.data.theme.topic_rss.tag %}
{% set tag_rss = site.data.theme.topic_rss.tag %}
{% if tag_rss.name_lowercase %}
{% set rss_name = page.tag.toLowerCase() %}
{% else %}
{% set rss_name = page.tag %}
{% endif %}
<div class="card-action">
{% if tag_rss.atom_suffix %}
<a href="{{ full_url_for(tag_rss.prefix + rss_name + tag_rss.atom_suffix) }}">Feed (Atom)</a>
{% endif %}
{% if tag_rss.rss_suffix %}
<a href="{{ full_url_for(tag_rss.prefix + rss_name + tag_rss.rss_suffix) }}">Feed (RSS)</a>
{% endif %}
</div>
{% endif %}
</div>
<ul class="collapsible popout">
{% for article in page.posts.toArray() %}
<li>
<div class="collapsible-header">
<div class="row" style="margin: 0;">
<div class="row" style="margin-left: 4px; margin-bottom: 0.5rem;"><div class="col s12"><h3 style="font-size: 1.2rem; margin: 0; margin-top: 8px;">{{article.title}}</h3></div></div>
<div class="row" style="margin-left: 0; margin-bottom: 0;"><div class="col s12">{{ T.PostTags(article) }}</div></div>
</div>
</div>
<div class="collapsible-body small-padding">
<div style="padding-left: 1rem">
<div class="mdi mdi-clock" style="padding-bottom: 8px">{{ date(article.date) }}</div>
</div>
<div class="entry">{{article.excerpt}}</div>
<div class="card z-depth-0">
<div class="card-action" style="padding-bottom: 0; padding-left: 14px;">
<a href="{% if article.link %}{{article.link}}{% else %}{{url_for(article.path)}}{% endif %}">Go To "{{article.title}}"</a>
</div>
</div>
</div>
</li>
{% endfor %}
</ul>
<div id="center">
{{ P.Paginiation() }}
</div>
{% endblock %}

View file

@ -1,4 +0,0 @@
hexo.extend.helper.register("range", function(start, stop, step){
return Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));
});

View file

@ -32,3 +32,10 @@ main
.entry ul li .entry ul li
list-style-type: square !important list-style-type: square !important
/* Override code block */
figure.highlight > table > tbody > tr > td
padding: 0
figure.highlight table tbody tr:last-child td
padding-bottom: 0

245
yarn.lock
View file

@ -15,7 +15,7 @@ a-sync-waterfall@^1.0.0:
resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7"
integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==
abbrev@1, abbrev@^1.1.1: abbrev@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
@ -38,6 +38,13 @@ ansi-regex@^5.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
ansi-styles@^4.1.0: ansi-styles@^4.1.0:
version "4.3.0" version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
@ -75,10 +82,10 @@ asap@^2.0.3:
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
async@~0.2.6: async@0.9.x:
version "0.2.10" version "0.9.2"
resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
atob@^2.1.2: atob@^2.1.2:
version "2.1.2" version "2.1.2"
@ -135,10 +142,14 @@ camel-case@^4.0.0:
pascal-case "^3.1.2" pascal-case "^3.1.2"
tslib "^2.0.3" tslib "^2.0.3"
camelcase@^1.0.2: chalk@^2.4.2:
version "1.2.1" version "2.4.2"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^4.0.0: chalk@^4.0.0:
version "4.1.2" version "4.1.2"
@ -163,6 +174,13 @@ chokidar@^3.0.0:
optionalDependencies: optionalDependencies:
fsevents "~2.3.2" fsevents "~2.3.2"
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
color-convert@^2.0.1: color-convert@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
@ -170,6 +188,11 @@ color-convert@^2.0.1:
dependencies: dependencies:
color-name "~1.1.4" color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
color-name@~1.1.4: color-name@~1.1.4:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
@ -277,11 +300,6 @@ debug@~3.1.0:
dependencies: dependencies:
ms "2.0.0" ms "2.0.0"
decamelize@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
decode-uri-component@^0.2.0: decode-uri-component@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
@ -342,10 +360,12 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
ejs@^2.6.1: ejs@^3.1.6:
version "2.7.4" version "3.1.6"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a"
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==
dependencies:
jake "^10.6.1"
encodeurl@~1.0.2: encodeurl@~1.0.2:
version "1.0.2" version "1.0.2"
@ -362,6 +382,11 @@ escape-html@~1.0.3:
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
esprima@^4.0.0: esprima@^4.0.0:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
@ -372,6 +397,18 @@ etag@~1.8.1:
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
fast-equals@^2.0.1:
version "2.0.4"
resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-2.0.4.tgz#3add9410585e2d7364c2deeb6a707beadb24b927"
integrity sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w==
filelist@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b"
integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==
dependencies:
minimatch "^3.0.4"
fill-range@^7.0.1: fill-range@^7.0.1:
version "7.0.1" version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@ -448,6 +485,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.3:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
has-flag@^4.0.0: has-flag@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
@ -541,17 +583,24 @@ hexo-log@^2.0.0:
dependencies: dependencies:
chalk "^4.0.0" chalk "^4.0.0"
hexo-log@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/hexo-log/-/hexo-log-3.0.0.tgz#bbdb75eabef3bf7aee83400a3969db06d5539b61"
integrity sha512-fd87qXYznpNTa8SLov+wjDsrPssk4yKSgdIQg1wJPcuthy8ngvbXYdqaJ4vWMSADZ+D257EmKXTJHJyaxJQhVw==
dependencies:
nanocolors "^0.2.12"
hexo-pagination@1.0.0: hexo-pagination@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/hexo-pagination/-/hexo-pagination-1.0.0.tgz#c9c0ca3665267b9e9d0a89fc3edcaf3276907dc1" resolved "https://registry.yarnpkg.com/hexo-pagination/-/hexo-pagination-1.0.0.tgz#c9c0ca3665267b9e9d0a89fc3edcaf3276907dc1"
integrity sha512-miEVFgxchPr2qNWxw0JWpJ9R/Yaf7HjHBZVjvCCcqfbsLyYtCvIfJDxcEwz1sDOC/fLzYPqNnhUI73uNxBHRSA== integrity sha512-miEVFgxchPr2qNWxw0JWpJ9R/Yaf7HjHBZVjvCCcqfbsLyYtCvIfJDxcEwz1sDOC/fLzYPqNnhUI73uNxBHRSA==
hexo-renderer-ejs@^1.0.0: hexo-renderer-ejs@^2.0.0:
version "1.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/hexo-renderer-ejs/-/hexo-renderer-ejs-1.0.0.tgz#43c4de49eeae224036a457df860eb1c14c68b4b4" resolved "https://registry.yarnpkg.com/hexo-renderer-ejs/-/hexo-renderer-ejs-2.0.0.tgz#56e0c3de5f6b0e1e68b923c65a7c8bfe9ff715eb"
integrity sha512-O925i69FG4NYO62oWORcPhRZZX0sPx1SXGKUS5DaR/lzajyiXH5i2sqnkj0ya0rNLXIy/D7Xmt7WbFyuQx/kKQ== integrity sha512-qCjE1IdwgDgv65qyb0KMVCwCdSVAkH0vwAe9XihjvaKWkmb9dtt8DgErOdqCXn0HReSyWiEVP2BrLRj3gyHwOQ==
dependencies: dependencies:
ejs "^2.6.1" ejs "^3.1.6"
hexo-renderer-marked@^3.1.0: hexo-renderer-marked@^3.1.0:
version "3.3.0" version "3.3.0"
@ -569,14 +618,6 @@ hexo-renderer-stylus@^2.0.0:
nib "^1.1.2" nib "^1.1.2"
stylus "^0.54.8" stylus "^0.54.8"
hexo-renderer-swig@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/hexo-renderer-swig/-/hexo-renderer-swig-1.1.0.tgz#f4937649aedf25304ac51b7fa132d2fe246650b7"
integrity sha1-9JN2Sa7fJTBKxRt/oTLS/iRmULc=
dependencies:
swig "^1.4.2"
swig-extras "0.0.1"
hexo-server@^2.0.0: hexo-server@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/hexo-server/-/hexo-server-2.0.0.tgz#1ad92cc8a7d3528fec6ffa65ff8453f242f7983f" resolved "https://registry.yarnpkg.com/hexo-server/-/hexo-server-2.0.0.tgz#1ad92cc8a7d3528fec6ffa65ff8453f242f7983f"
@ -615,26 +656,27 @@ hexo-util@^2.0.0, hexo-util@^2.1.0, hexo-util@^2.4.0:
prismjs "^1.17.1" prismjs "^1.17.1"
strip-indent "^3.0.0" strip-indent "^3.0.0"
hexo@^5.0.0: hexo@^6.0.0:
version "5.4.0" version "6.0.0"
resolved "https://registry.yarnpkg.com/hexo/-/hexo-5.4.0.tgz#77d57fa1c29f3ab05964fe4ebd9c44e23df51b37" resolved "https://registry.yarnpkg.com/hexo/-/hexo-6.0.0.tgz#1f2d3971069a32e97ca2e89d96d96a375fba5cea"
integrity sha512-4vMDle5GjpMeOVrx0NKoTZCqrmpJVg3wNiNNUVjcoFfcpYcMzQUCZHBtQqLl7BzjJ8x2gs002VQ5yv0ZKtj8Jg== integrity sha512-ffSOhOEwPCJt2Ch4DdCdX39WBv8IX8I8I7md08RMDYc6jqxmE2mpuU8wzFYEJ/FQVjrt/EsQ/qfKAz3zAW/hvw==
dependencies: dependencies:
abbrev "^1.1.1" abbrev "^1.1.1"
archy "^1.0.0" archy "^1.0.0"
bluebird "^3.5.2" bluebird "^3.5.2"
chalk "^4.0.0"
hexo-cli "^4.0.0" hexo-cli "^4.0.0"
hexo-front-matter "^2.0.0" hexo-front-matter "^2.0.0"
hexo-fs "^3.1.0" hexo-fs "^3.1.0"
hexo-i18n "^1.0.0" hexo-i18n "^1.0.0"
hexo-log "^2.0.0" hexo-log "^3.0.0"
hexo-util "^2.4.0" hexo-util "^2.4.0"
js-yaml "^4.0.0" js-yaml "^4.0.0"
micromatch "^4.0.2" micromatch "^4.0.2"
moize "^6.1.0"
moment "^2.22.2" moment "^2.22.2"
moment-timezone "^0.5.21" moment-timezone "^0.5.21"
nunjucks "^3.2.1" nunjucks "^3.2.1"
picocolors "^1.0.0"
pretty-hrtime "^1.0.3" pretty-hrtime "^1.0.3"
resolve "^1.8.1" resolve "^1.8.1"
strip-ansi "^6.0.0" strip-ansi "^6.0.0"
@ -735,6 +777,16 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
jake@^10.6.1:
version "10.8.2"
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b"
integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==
dependencies:
async "0.9.x"
chalk "^2.4.2"
filelist "^1.0.1"
minimatch "^3.0.4"
js-yaml@^3.13.1: js-yaml@^3.13.1:
version "3.14.1" version "3.14.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
@ -762,18 +814,16 @@ lower-case@^2.0.2:
dependencies: dependencies:
tslib "^2.0.3" tslib "^2.0.3"
markdown@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/markdown/-/markdown-0.5.0.tgz#28205b565a8ae7592de207463d6637dc182722b2"
integrity sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=
dependencies:
nopt "~2.1.1"
marked@^1.0.0: marked@^1.0.0:
version "1.2.9" version "1.2.9"
resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.9.tgz#53786f8b05d4c01a2a5a76b7d1ec9943d29d72dc" resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.9.tgz#53786f8b05d4c01a2a5a76b7d1ec9943d29d72dc"
integrity sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw== integrity sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==
micro-memoize@^4.0.9:
version "4.0.9"
resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.0.9.tgz#b44a38c9dffbee1cefc2fd139bc8947952268b62"
integrity sha512-Z2uZi/IUMGQDCXASdujXRqrXXEwSY0XffUrAOllhqzQI3wpUyZbiZTiE2JuYC0HSG2G7DbCS5jZmsEKEGZuemg==
micromatch@^4.0.2: micromatch@^4.0.2:
version "4.0.4" version "4.0.4"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
@ -821,11 +871,6 @@ minimist@^1.2.5:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
mkdirp@0.5.x: mkdirp@0.5.x:
version "0.5.5" version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
@ -838,6 +883,14 @@ mkdirp@~1.0.4:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
moize@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/moize/-/moize-6.1.0.tgz#736e505d30d0ff7751005ed2c66c74cf52941b87"
integrity sha512-WrMcM+C2Jy+qyOC/UMhA3BCHGowxV34dhDZnDNfxsREW/8N+33SFjmc23Q61Xv1WUthUA1vYopTitP1sZ5jkeg==
dependencies:
fast-equals "^2.0.1"
micro-memoize "^4.0.9"
moment-timezone@^0.5.21: moment-timezone@^0.5.21:
version "0.5.34" version "0.5.34"
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c"
@ -876,6 +929,11 @@ ms@2.1.3:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
nanocolors@^0.2.12:
version "0.2.13"
resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b"
integrity sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==
negotiator@0.6.2: negotiator@0.6.2:
version "0.6.2" version "0.6.2"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
@ -896,13 +954,6 @@ no-case@^3.0.4:
lower-case "^2.0.2" lower-case "^2.0.2"
tslib "^2.0.3" tslib "^2.0.3"
nopt@~2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.1.2.tgz#6cccd977b80132a07731d6e8ce58c2c8303cf9af"
integrity sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=
dependencies:
abbrev "1"
normalize-path@^3.0.0, normalize-path@~3.0.0: normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
@ -944,14 +995,6 @@ open@^7.0.0:
is-docker "^2.0.0" is-docker "^2.0.0"
is-wsl "^2.1.1" is-wsl "^2.1.1"
optimist@~0.6:
version "0.6.1"
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
dependencies:
minimist "~0.0.1"
wordwrap "~0.0.2"
parseurl@~1.3.3: parseurl@~1.3.3:
version "1.3.3" version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
@ -980,6 +1023,11 @@ path-parse@^1.0.6:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
@ -1112,13 +1160,6 @@ source-map-url@^0.4.0:
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
source-map@0.1.34:
version "0.1.34"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz#a7cfe89aec7b1682c3b198d0acfb47d7d090566b"
integrity sha1-p8/omux7FoLDsZjQrPtH19CQVms=
dependencies:
amdefine ">=0.0.4"
source-map@0.1.x: source-map@0.1.x:
version "0.1.43" version "0.1.43"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
@ -1191,6 +1232,13 @@ stylus@^0.54.8:
semver "^6.3.0" semver "^6.3.0"
source-map "^0.7.3" source-map "^0.7.3"
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
supports-color@^7.1.0: supports-color@^7.1.0:
version "7.2.0" version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
@ -1198,21 +1246,6 @@ supports-color@^7.1.0:
dependencies: dependencies:
has-flag "^4.0.0" has-flag "^4.0.0"
swig-extras@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/swig-extras/-/swig-extras-0.0.1.tgz#b503fede372ab9c24c6ac68caf656bcef1872328"
integrity sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=
dependencies:
markdown "~0.5.0"
swig@^1.4.2:
version "1.4.2"
resolved "https://registry.yarnpkg.com/swig/-/swig-1.4.2.tgz#4085ca0453369104b5d483e2841b39b7ae1aaba5"
integrity sha1-QIXKBFM2kQS11IPihBs5t64aq6U=
dependencies:
optimist "~0.6"
uglify-js "~2.4"
text-table@^0.2.0: text-table@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@ -1255,21 +1288,6 @@ tslib@^2.0.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
uglify-js@~2.4:
version "2.4.24"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.24.tgz#fad5755c1e1577658bb06ff9ab6e548c95bebd6e"
integrity sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=
dependencies:
async "~0.2.6"
source-map "0.1.34"
uglify-to-browserify "~1.0.0"
yargs "~3.5.4"
uglify-to-browserify@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
unpipe@~1.0.0: unpipe@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@ -1309,32 +1327,7 @@ which@^2.0.1:
dependencies: dependencies:
isexe "^2.0.0" isexe "^2.0.0"
window-size@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
wordwrap@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
wrappy@1: wrappy@1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
yargs@~3.5.4:
version "3.5.4"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.5.4.tgz#d8aff8f665e94c34bd259bdebd1bfaf0ddd35361"
integrity sha1-2K/49mXpTDS9JZvevRv68N3TU2E=
dependencies:
camelcase "^1.0.2"
decamelize "^1.0.0"
window-size "0.1.0"
wordwrap "0.0.2"