Theme cleanup
|
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019 Jonathan Janssens
|
||||
|
||||
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.
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
## Demo
|
||||
|
||||
A demo with feature images is available in the repository [jonathanjanssens/hugo-casper3-demo](https://github.com/jonathanjanssens/hugo-casper3-demo).
|
||||
|
||||
## Installation
|
||||
|
||||
```$ mkdir themes
|
||||
$ cd themes
|
||||
$ git clone git@github.com:jonathanjanssens/hugo-casper3.git
|
||||
```
|
||||
|
||||
Either set the theme in your config to `casper3` or build with the `-t casper3` flag.
|
||||
|
||||
## Using the theme
|
||||
|
||||
This theme is very image heavy so it is recommended to set a `feature_image` parameter in the front matter of any content.
|
||||
|
||||
Content types you wish to appear on the homepage should be set in your [mainSections](https://gohugo.io/functions/where/#mainsections).
|
||||
|
||||
## Development Roadmap
|
||||
|
||||
[ ] Use SCSS from original theme instead of compiled CSS - also needs Hugo Pipes setting up
|
||||
|
||||
[ ] Multi author support and author taxonomy
|
||||
|
||||
## Support
|
||||
|
||||
It would be nice if you leave the credit to me in the footer, unless you make a donation to show support. I can't really police this though, it's MIT licensed anyway so you can do whatever you want with the theme...
|
||||
|
||||
If you would like to show your appreciation to me for working on this theme you can <a href="https://paypal.me/JonathanJanssens">donate with Paypal</a> here.
|
||||
|
||||
BTC: 1812FGaAJ19hokDoUFP6kK22dzT6zttkw5
|
||||
|
||||
LTC: MQh5n9BzXAVzdreMo9ff3DxF7gqqmZkUNJ
|
||||
|
||||
ETH: 0x6c6DCa4cA98816Bb319A4B923b159991C97368B7
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
+++
|
||||
featured_image = ""
|
||||
+++
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
.post-content > div {
|
||||
width: 100%;
|
||||
}
|
||||
post-content:a {text-decoration: line; background-color:transparent; text-underline-position: under;color:green; background-color:blue}
|
||||
a:active,a:hover {outline:1; text-underline-position: above; color:hotpink;}
|
||||
|
|
@ -1 +0,0 @@
|
|||
a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{max-width:100%}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{overflow-y:scroll;font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{overflow-x:hidden}body{color:#313b3f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.6rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#cbeafb}::selection{text-shadow:none;background:#cbeafb}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #e3e9ed}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}blockquote,dl,ol,p,ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0 1em}ul{list-style:disc}ol{list-style:decimal}ol,ul{max-width:100%}li{margin:.5em 0;padding-left:.3em;line-height:1.6em}dt{float:left;margin:0 20px 0 0;width:120px;color:#15171a;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:.5em solid #e5eff5}blockquote p{margin:.8em 0;font-size:1.2em;font-weight:300}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#26a8ed;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-weight:600;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5.5rem;font-weight:600}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size:2.2rem}@media (max-width:500px){h2{font-size:1.8rem}}h3{margin:1.5em 0 .5em;font-size:1.8rem;font-weight:500}@media (max-width:500px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:1.6rem;font-weight:500}h5,h6{margin:1.5em 0 .5em;font-size:1.4rem;font-weight:500}
|
||||
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 760 KiB |
|
Before Width: | Height: | Size: 290 KiB |
|
|
@ -1,40 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.LanguageCode }}">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
|
||||
{{ $title := print .Title " · " .Site.Title }}
|
||||
{{ if .IsHome }}{{ $title = .Site.Title }}{{ end }}
|
||||
<title>{{ $title }}</title>
|
||||
|
||||
<meta name="HandheldFriendly" content="True" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
{{ $styles := resources.Get "scss/main.scss" | resources.ExecuteAsTemplate "style.main.scss" . | toCSS | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}" />
|
||||
|
||||
</head>
|
||||
<body class="{{ block "body_class" . }} {{ end }}">
|
||||
|
||||
<div class="site-wrapper">
|
||||
{{- block "main" . }}{{- end }}
|
||||
|
||||
|
||||
<footer class="site-footer outer">
|
||||
<div class="site-footer-content inner">
|
||||
<section class="copyright"><a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a> © {{ .Date.Format "2006" }}</section>
|
||||
<nav class="site-footer-nav">
|
||||
<a href="{{ .Site.BaseURL }}">Latest Posts</a>
|
||||
{{ if .Site.Params.facebook }}<a href="{{ .Site.Params.facebook }}" target="_blank" rel="noopener">Facebook</a>{{ end }}
|
||||
{{ if .Site.Params.twitter }}<a href="{{ .Site.Params.twitter }}" target="_blank" rel="noopener">Twitter</a>{{ end }}
|
||||
{{ if .Site.Params.github }}<a href="{{ .Site.Params.github }}" target="_blank" rel="noopener">Github</a>{{ end }}
|
||||
<a href="https://jonathanjanssens.com" target="_blank" rel="noopener" style="opacity: 0.5;">Hugo Casper3 by Jonathan Janssens</a>
|
||||
</nav>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
{{ define "body_class" }} tag-template {{ end }}
|
||||
|
||||
{{ define "main" }}
|
||||
|
||||
<header class="site-header">
|
||||
{{- partial "site-header.html" $ -}}
|
||||
|
||||
{{- partial "header-background.html" $ -}}
|
||||
<div class="inner site-header-content">
|
||||
<h1 class="site-title">{{ .Title }}</h1>
|
||||
<h2 class="site-description">
|
||||
{{ if .Param "description" }}
|
||||
{{ .Param "description" }}
|
||||
{{ else }}
|
||||
A collection of {{ len .Pages }} post{{ if gt (len .Pages) 1 }}s{{ end }}
|
||||
{{ end }}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="site-main" class="site-main outer">
|
||||
<div class="inner posts">
|
||||
<div class="post-feed">
|
||||
{{ range $index, $element := .Pages }}
|
||||
{{- partial "post-card.html" (dict "context" . "index" $index "home" $.IsHome) -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{{ end }}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
{{ define "body_class" }} post-template {{ end }}
|
||||
|
||||
{{ define "main" }}
|
||||
|
||||
<header class="site-header">
|
||||
{{- partial "site-header.html" $ -}}
|
||||
</header>
|
||||
|
||||
<main id="site-main" class="site-main outer">
|
||||
<div class="inner">
|
||||
|
||||
<article class="post-full post {{ if not (.Param "featured_image") }} no-image {{ end }}">
|
||||
|
||||
<header class="post-full-header">
|
||||
|
||||
{{ with .Params.tags }}
|
||||
{{ $primaryTag := (index . 0) }}
|
||||
<section class="post-full-tags">
|
||||
<a href="{{ "/tags/" | relLangURL }}{{ $primaryTag | urlize }}">{{ $primaryTag }}</a>
|
||||
</section>
|
||||
{{ end }}
|
||||
|
||||
<h1 class="post-full-title">{{ .Title }}</h1>
|
||||
|
||||
{{ if .Param "summary" }}
|
||||
<p class="post-full-custom-excerpt">{{ .Summary }}</p>
|
||||
{{ end }}
|
||||
|
||||
<div class="post-full-byline">
|
||||
<section class="post-full-byline-content">
|
||||
|
||||
{{ if .Param "author" }}
|
||||
{{- partial "post-author.html" . -}}
|
||||
{{ end }}
|
||||
|
||||
<section class="post-full-byline-meta">
|
||||
{{ if .Param "author" }}
|
||||
<h4 class="author-name">{{ .Param "author" }}</h4>
|
||||
{{ end }}
|
||||
<div class="byline-meta-content">
|
||||
<time class="byline-meta-date" datetime="{{.Date.Format "2006-31-01"}}">{{.Date.Format "2 January 2006"}}</time>
|
||||
<span class="byline-reading-time"><span class="bull">•</span> {{ .ReadingTime }} min read</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{ if .Param "featured_image" }}
|
||||
<figure class="post-full-image">
|
||||
<img src="{{ .Param "featured_image" }}" alt="{{ .Title }}" />
|
||||
</figure>
|
||||
{{ end }}
|
||||
|
||||
<section class="post-full-content">
|
||||
<div class="post-content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{{- partial "post-navigation.html" . -}}
|
||||
|
||||
{{ end }}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
{{ define "body_class" }} home-template {{ end }}
|
||||
|
||||
{{ define "main" }}
|
||||
|
||||
<header class="site-home-header">
|
||||
{{ .Scratch.Set "background" .Params.featured_image }}
|
||||
{{- partial "header-background.html" . -}}
|
||||
<div class="inner">
|
||||
{{- partial "site-nav.html" . -}}
|
||||
<div class="site-header-content">
|
||||
<h1 class="site-title">
|
||||
{{ if $.Site.Params.logo }}
|
||||
<img class="site-logo" src="{{ $.Site.Params.logo }}" alt="{{ .Site.Title }}" />
|
||||
{{ else }}
|
||||
{{ $.Site.Title }}
|
||||
{{ end }}
|
||||
</h1>
|
||||
<h2 class="site-description">{{ $.Site.Params.description }}</h2>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="site-main" class="site-main outer">
|
||||
<div class="inner posts">
|
||||
<div class="post-feed">
|
||||
{{ $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
|
||||
{{ range $index, $element := $pages }}
|
||||
{{- partial "post-card.html" (dict "context" . "index" $index "home" $.IsHome) -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{{ end }}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
{{ if .Scratch.Get "background" }}
|
||||
<style type="text/css">
|
||||
.responsive-header-img {
|
||||
background-image: url('{{ .Scratch.Get "background" }}');
|
||||
}
|
||||
</style>
|
||||
<div class="outer site-header-background responsive-header-img">
|
||||
{{ else }}
|
||||
<div class="outer site-header-background no-image">
|
||||
{{ end }}
|
||||
|
|
@ -1 +0,0 @@
|
|||
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M3.513 18.998C4.749 15.504 8.082 13 12 13s7.251 2.504 8.487 5.998C18.47 21.442 15.417 23 12 23s-6.47-1.558-8.487-4.002zM12 12c2.21 0 4-2.79 4-5s-1.79-4-4-4-4 1.79-4 4 1.79 5 4 5z" fill="#FFF"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 307 B |
|
|
@ -1 +0,0 @@
|
|||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="M16 0c8.837 0 16 7.163 16 16s-7.163 16-16 16S0 24.837 0 16 7.163 0 16 0zm5.204 4.911h-3.546c-2.103 0-4.443.885-4.443 3.934.01 1.062 0 2.08 0 3.225h-2.433v3.872h2.509v11.147h4.61v-11.22h3.042l.275-3.81h-3.397s.007-1.695 0-2.187c0-1.205 1.253-1.136 1.329-1.136h2.054V4.911z" /></svg>
|
||||
|
Before Width: | Height: | Size: 350 B |
|
|
@ -1,11 +0,0 @@
|
|||
<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
|
||||
<path opacity="0.2" fill="#000" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946
|
||||
s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634
|
||||
c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z" />
|
||||
<path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0
|
||||
C22.32,8.481,24.301,9.057,26.013,10.047z">
|
||||
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20"
|
||||
dur="0.5s" repeatCount="indefinite" />
|
||||
</path>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 923 B |
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="6.18" cy="17.82" r="2.18"/><path d="M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z"/></svg>
|
||||
|
Before Width: | Height: | Size: 262 B |
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M30.063 7.313c-.813 1.125-1.75 2.125-2.875 2.938v.75c0 1.563-.188 3.125-.688 4.625a15.088 15.088 0 0 1-2.063 4.438c-.875 1.438-2 2.688-3.25 3.813a15.015 15.015 0 0 1-4.625 2.563c-1.813.688-3.75 1-5.75 1-3.25 0-6.188-.875-8.875-2.625.438.063.875.125 1.375.125 2.688 0 5.063-.875 7.188-2.5-1.25 0-2.375-.375-3.375-1.125s-1.688-1.688-2.063-2.875c.438.063.813.125 1.125.125.5 0 1-.063 1.5-.25-1.313-.25-2.438-.938-3.313-1.938a5.673 5.673 0 0 1-1.313-3.688v-.063c.813.438 1.688.688 2.625.688a5.228 5.228 0 0 1-1.875-2c-.5-.875-.688-1.813-.688-2.75 0-1.063.25-2.063.75-2.938 1.438 1.75 3.188 3.188 5.25 4.25s4.313 1.688 6.688 1.813a5.579 5.579 0 0 1 1.5-5.438c1.125-1.125 2.5-1.688 4.125-1.688s3.063.625 4.188 1.813a11.48 11.48 0 0 0 3.688-1.375c-.438 1.375-1.313 2.438-2.563 3.188 1.125-.125 2.188-.438 3.313-.875z"/></svg>
|
||||
|
Before Width: | Height: | Size: 888 B |
|
|
@ -1,13 +0,0 @@
|
|||
<ul class="author-list">
|
||||
<li class="author-list-item">
|
||||
<div class="author-card">
|
||||
<div class="author-profile-image">{{- partial "icons/avatar.html" -}}</div>
|
||||
<div class="author-info">
|
||||
<div class="author-info">
|
||||
<h2>{{ .Param "author" }}</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a href="#" class="author-avatar author-profile-image">{{- partial "icons/avatar.html" -}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
<article class="post-card post
|
||||
{{ if not (.context.Param "featured_image") }} no-image
|
||||
{{ else }}
|
||||
{{ if (eq (mod .index 6) 0) }} post-card-large {{ end }}
|
||||
{{ end }} ">
|
||||
|
||||
{{ if .context.Param "featured_image" }}
|
||||
<a class="post-card-image-link" href="{{ .context.Permalink }}">
|
||||
<img class="post-card-image"src="{{ .context.Param "featured_image" }}" alt="{{ .context.Title }}"/>
|
||||
</a>
|
||||
{{ end }}
|
||||
|
||||
<div class="post-card-content">
|
||||
|
||||
<a class="post-card-content-link" href="{{ .context.Permalink }}">
|
||||
|
||||
<header class="post-card-header">
|
||||
{{ with .context.Params.tags }}
|
||||
{{ $primaryTag := (index . 0) }}
|
||||
<div class="post-card-primary-tag">{{ $primaryTag }}</div>
|
||||
{{ end }}
|
||||
|
||||
<h2 class="post-card-title">{{ .context.Title }}</h2>
|
||||
</header>
|
||||
|
||||
<section class="post-card-excerpt">
|
||||
<p>{{ .context.Summary }}</p>
|
||||
</section>
|
||||
|
||||
</a>
|
||||
|
||||
<footer class="post-card-meta">
|
||||
<ul class="author-list">
|
||||
<li class="author-list-item">
|
||||
<div class="author-name-tooltip">{{ .context.Param "author" }}</div>
|
||||
<a href="#" class="static-avatar author-profile-image">{{- partial "icons/avatar.html" -}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="post-card-byline-content">
|
||||
<span>{{ .context.Param "author" }}</span>
|
||||
<span class="post-card-byline-date"><time datetime="{{ .context.Date.Format "2006-31-01" }}">{{ .context.Date.Format "2 January 2006" }}</time>
|
||||
<span class="bull">•</span> {{ .context.ReadingTime }} min read</span>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
<aside class="read-next outer">
|
||||
<div class="inner">
|
||||
<div class="read-next-feed">
|
||||
|
||||
{{- partial "read-next.html" . -}}
|
||||
|
||||
{{ with .PrevInSection}}
|
||||
{{- partial "post-card.html" (dict "context" . "index" 1) -}}
|
||||
{{end}}
|
||||
|
||||
{{ with .NextInSection}}
|
||||
{{- partial "post-card.html" (dict "context" . "index" 1) -}}
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
{{ with .Params.tags }}
|
||||
{{ $primaryTag := (index . 0) }}
|
||||
<article class="read-next-card">
|
||||
<header class="read-next-card-header">
|
||||
<h3><span>More in</span> <a href="{{ "/tags/" | relLangURL }}{{ $primaryTag | urlize }}">{{ $primaryTag }}</a></h3>
|
||||
</header>
|
||||
<div class="read-next-card-content">
|
||||
<ul>
|
||||
{{ range first 3 (where (index $.Site.Taxonomies.tags $primaryTag).Pages "Section" "post") }}
|
||||
<li>
|
||||
<h4><a href="{{ .Permalink }}">{{ .Title }}</a></h4>
|
||||
<div class="read-next-card-meta">
|
||||
<p><time datetime="{{.Date.Format "2006-31-01"}}">{{.Date.Format "01 Jan 2006"}}</time>
|
||||
{{ if .Params.reading_time }} – {{ .Params.reading_time }} {{ end }}
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
{{ end }}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
<div class="outer site-nav-main">
|
||||
<div class="inner">
|
||||
{{- partial "site-nav.html" . -}}
|
||||
{{ partial "victorhugo.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
<nav class="site-nav">
|
||||
<div class="site-nav-left">
|
||||
{{ if eq $.Site.Params.logo "thisshouldfail" }}
|
||||
<a class="site-nav-logo" href="{{ $.Site.BaseURL }}"><img src="{{ $.Site.Params.logo }}" alt="{{ $.Site.Title }}" /></a>
|
||||
{{ else }}
|
||||
<a class="site-nav-logo" href="{{ $.Site.BaseURL }}">{{ $.Site.Title }}</a>
|
||||
{{ end }}
|
||||
|
||||
<div class="site-nav-content">
|
||||
<ul class="nav" role="menu">
|
||||
{{ range $.Site.Menus.main }}
|
||||
<li class="nav-home" role="menuitem"><a href="{{ .URL }}">{{- .Name -}}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
name = "casper3"
|
||||
license = "MIT"
|
||||
licenselink = "https://github.com/jonathanjanssens/hugo-casper3/blob/master/LICENSE"
|
||||
description = "The default Casper version 3 theme from Ghost CMS ported over to Hugo"
|
||||
tags = ["blog", "dark", "light"]
|
||||
features = ["darkmode"]
|
||||
min_version = "0.54.0"
|
||||
|
||||
[author]
|
||||
name = "Jonathan Janssens"
|
||||
homepage = "https://jonathanjanssens.com"
|
||||
repo = "https://github.com/jonathanjanssens/projects/hugo-casper3"
|
||||
|
||||
[original]
|
||||
name = "Ghost"
|
||||
homepage = "https://ghost.org"
|
||||
repo = "https://github.com/TryGhost/Casper"
|
||||
|
||||
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019 Rise
|
||||
|
||||
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.
|
||||
|
|
@ -1,126 +0,0 @@
|
|||
# hugo-theme-diary
|
||||

|
||||
|
||||
隻言片語・於此匯聚
|
||||
|
||||
Moments piled up.
|
||||
|
||||
A Hugo theme ported from [SumiMakito/hexo-theme-Journal](https://github.com/SumiMakito/hexo-theme-Journal/).
|
||||
|
||||
## Links
|
||||
|
||||
**Some useful links here:**
|
||||
|
||||
[Live Demo](https://amazingrise.net/)
|
||||
|
||||
[Intro Video](https://www.bilibili.com/video/av84273002)
|
||||
|
||||
[Changelog (Progress and TODO List)](https://github.com/AmazingRise/hugo-theme-diary/projects/)
|
||||
|
||||
[Project Wiki](https://github.com/amazingrise/hugo-theme-diary/wiki)
|
||||
|
||||
Original Author: [SumiMakito](https://github.com/SumiMakito)
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
Features in the ori.:
|
||||
|
||||
- Simple and easy to customize
|
||||
- Concentrated on reading <del>and writing (find a Markdown editor then)</del> experience
|
||||
- Mobile-friendly & widescreen-friendly
|
||||
- Flexible commenting control
|
||||
|
||||
Features in this ported version:
|
||||
|
||||
- Add Gitalk and Valine intergration.
|
||||
- Customizable color scheme. (Some bug in original version, fixed.)
|
||||
- Firefox-friendly. (CSS issue in original version, fixed.)
|
||||
- `featured_image` url bug is fixed.
|
||||
- Table of Contents with scroll spy and auto collapse.
|
||||
- Dark mode.
|
||||
- MathJax support. (Needs to be enabled manually, see [the project wiki](https://github.com/amazingrise/hugo-theme-diary/wiki) for details.)
|
||||
- Google Custom Search Engine support.
|
||||
- Internationalization(i18n) support, with English, French and Chinese(Simplified and Traditional).
|
||||
- Inserting figures more easily, see [wiki](https://github.com/AmazingRise/hugo-theme-diary/wiki/Inserting-Figures) for details.
|
||||
|
||||
## Quick Start
|
||||
|
||||
If your website is using Git as version control, please do as follows:
|
||||
|
||||
1. Fetch the theme dir.
|
||||
|
||||
From the root of your Hugo site, open the terminal and execute:
|
||||
```bash
|
||||
git submodule add https://github.com/AmazingRise/hugo-theme-diary.git themes/diary
|
||||
```
|
||||
2. Update git repository.
|
||||
|
||||
Then update the git repository from the root of your site:
|
||||
```bash
|
||||
git submodule update --remote --merge
|
||||
```
|
||||
|
||||
3. Run example site.
|
||||
|
||||
From the root of themes/diary/exampleSite:
|
||||
```bash
|
||||
hugo server --themesDir ../..
|
||||
```
|
||||
## Personalization
|
||||
|
||||
### Example config
|
||||
|
||||
See [/exampleSite/config.toml](https://github.com/AmazingRise/hugo-theme-diary/blob/master/exampleSite/config.toml)
|
||||
|
||||
### Customization
|
||||
|
||||
Please visit [the project wiki](https://github.com/amazingrise/hugo-theme-diary/wiki) for more details.
|
||||
|
||||
[Settings of Table of Contents](https://github.com/AmazingRise/hugo-theme-diary/wiki/Table-Of-Contents)
|
||||
|
||||
[Disable Dark Mode](https://github.com/AmazingRise/hugo-theme-diary/wiki/Dark-Mode)
|
||||
|
||||
[Enable MathJax](https://github.com/AmazingRise/hugo-theme-diary/wiki/MathJax)
|
||||
|
||||
[Add or disable comment area](https://github.com/AmazingRise/hugo-theme-diary/wiki/Comment-Area)
|
||||
|
||||
[Add Google Search Box on your site](https://github.com/AmazingRise/hugo-theme-diary/wiki/Customization#add-google-search-box-on-your-site)
|
||||
|
||||
[Customizations](https://github.com/AmazingRise/hugo-theme-diary/wiki/Customization)
|
||||
|
||||
[Taxonomies and Sections (Archive, Categories and Tags)](https://github.com/AmazingRise/hugo-theme-diary/wiki/Taxonomies-and-Sections-(Archive,-Categories-and-Tags))
|
||||
|
||||
[RSS Feed](https://github.com/AmazingRise/hugo-theme-diary/wiki/RSS-Feed)
|
||||
|
||||
[Meta Data of posts](https://github.com/AmazingRise/hugo-theme-diary/wiki/Post's-meta-data)
|
||||
|
||||
[Enable Reading Time](https://github.com/AmazingRise/hugo-theme-diary/wiki/Reading-Time)
|
||||
|
||||
[Internationalization](https://github.com/AmazingRise/hugo-theme-diary/wiki/Internationalization)
|
||||
|
||||
## Comparison
|
||||
|
||||
For details about the difference lies in the new version, please click [here.](https://github.com/AmazingRise/hugo-theme-diary/wiki/Comparison)
|
||||
|
||||
## Screenshots
|
||||
|
||||
Site Main Page
|
||||
|
||||

|
||||
|
||||
An essay with picture.
|
||||
|
||||

|
||||
|
||||
Table of Contents with scroll spy.
|
||||
|
||||

|
||||
|
||||
Mobile View: Main Page
|
||||
|
||||

|
||||
|
||||
Mobile View: Drawer
|
||||
|
||||

|
||||
|
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
title: ""
|
||||
date:
|
||||
description: ""
|
||||
tags: []
|
||||
featured_image: ""
|
||||
# images is optional, but needed for showing Twitter Card
|
||||
images: []
|
||||
categories:
|
||||
comment : true
|
||||
draft: true
|
||||
---
|
||||
|
|
@ -1,252 +0,0 @@
|
|||
@import "journal";
|
||||
|
||||
$light-accent: lighten($color-accent, 10%);
|
||||
$deep-light-accent: lighten($color-accent, 30%);
|
||||
$dark-mode-text: darken(#FFF, 10%);
|
||||
|
||||
$dark-mode-back-container-background: #212121;
|
||||
$dark-mode-front-container-background: #282828;
|
||||
|
||||
body.night {
|
||||
background: $dark-mode-back-container-background;
|
||||
:root{
|
||||
--color_555: #ccc;
|
||||
--color_ededed: #000;
|
||||
}
|
||||
|
||||
img {
|
||||
opacity: .8;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
* {
|
||||
color: $deep-light-accent !important;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: $light-accent;
|
||||
&:hover {
|
||||
color: $deep-light-accent !important;
|
||||
}
|
||||
@media screen and (max-width: $single-column-max-width) {
|
||||
&:hover {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
code:not([data-lang]) {
|
||||
color: $deep-light-accent !important;
|
||||
}
|
||||
|
||||
pre {
|
||||
code:not([data-lang]) {
|
||||
background: none !important;
|
||||
color: $dark-mode-text !important;
|
||||
}
|
||||
}
|
||||
|
||||
table * {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
|
||||
.side-container {
|
||||
$nav-item-hover-background-alpha: 0.02;
|
||||
$nav-item-hover-indicator-alpha: 0.6;
|
||||
$nav-item-hover-color-darken: 30%;
|
||||
$nav-item-active-background-alpha: 0.03;
|
||||
$nav-item-active-color-darken: 20%;
|
||||
* {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
.nav-head {
|
||||
//border-right: 4px solid $color-accent;
|
||||
&:hover {
|
||||
border-right: 2px solid
|
||||
rgba($color-accent, $nav-item-hover-indicator-alpha);
|
||||
background: rgba($color-accent, $nav-item-hover-background-alpha);
|
||||
color: lighten($color-accent, $nav-item-hover-color-darken);
|
||||
}
|
||||
&.active {
|
||||
border-right: 2px solid $color-accent;
|
||||
background: rgba($color-accent, $nav-item-active-background-alpha);
|
||||
color: lighten($color-accent, $nav-item-active-color-darken);
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link-list {
|
||||
$nav-item-hover-indicator-alpha: 0.6;
|
||||
$nav-item-hover-color-lighten: 30%;
|
||||
$nav-item-active-background-alpha: 0.1;
|
||||
$nav-item-active-color-lighten: 20%;
|
||||
flex-grow: 1;
|
||||
.nav-link-item {
|
||||
color: $dark-mode-text !important;
|
||||
//border-right: 4px solid transparent;
|
||||
&:hover {
|
||||
border-right: 2px solid
|
||||
rgba($color-accent, $nav-item-hover-indicator-alpha);
|
||||
color: lighten($color-accent, $nav-item-hover-color-lighten) !important;
|
||||
}
|
||||
&.active {
|
||||
border-right: 2px solid $color-accent;
|
||||
background: rgba($color-accent, $nav-item-active-background-alpha);
|
||||
color: lighten($color-accent, $nav-item-active-color-lighten) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.stream-container {
|
||||
.post-head-wrapper-text-only *{
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
.post{
|
||||
background: $dark-mode-front-container-background;
|
||||
@media screen and (max-width: $single-column-max-width) {
|
||||
background: $dark-mode-back-container-background;
|
||||
}
|
||||
.post-pagination a:not([href]){
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
.post-comment-wrapper * {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
}
|
||||
.post-list-container {
|
||||
-webkit-transition: all 0.5s ease;
|
||||
-moz-transition: all 0.5s ease;
|
||||
-o-transition: all 0.5s ease;
|
||||
transition: all 0.5s ease;
|
||||
background: $dark-mode-front-container-background;
|
||||
@media screen and (max-width: $single-column-max-width) {
|
||||
background: $dark-mode-back-container-background;
|
||||
}
|
||||
&,
|
||||
> * {
|
||||
.post-item-wrapper {
|
||||
* {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
.post-item-info-wrapper{
|
||||
@media screen and (max-width: $single-column-max-width) {
|
||||
box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
|
||||
background: $dark-mode-front-container-background;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: $single-column-max-width) {
|
||||
box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
|
||||
background: $dark-mode-front-container-background;
|
||||
}
|
||||
&:not(.post-item-wrapper-no-hover):hover {
|
||||
background: rgba(255,255,255, 0.03);
|
||||
* {
|
||||
color: $deep-light-accent !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.single-column-nav-container {
|
||||
* {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
@media screen and (max-width: $single-column-max-width) {
|
||||
.nav-dropdown-toggle {
|
||||
&:hover {
|
||||
color: #3f587d !important;
|
||||
}
|
||||
}
|
||||
.navbar-brand {
|
||||
color: $dark-mode-text;
|
||||
&:hover {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
}
|
||||
.nav-background {
|
||||
background: $dark-mode-front-container-background;
|
||||
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.single-column-header-container {
|
||||
@media screen and (max-width: $single-column-max-width) {
|
||||
* {
|
||||
font-family: $sans-preferred-font-list;
|
||||
color: $deep-light-accent;
|
||||
}
|
||||
.single-column-header-title {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
.single-column-header-subtitle {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.single-column-drawer-container {
|
||||
@media screen and (max-width: $single-column-max-width) {
|
||||
.drawer-content {
|
||||
background: $dark-mode-front-container-background;
|
||||
.toc{
|
||||
background-color: lighten($dark-mode-front-container-background,10%);
|
||||
}
|
||||
.drawer-menu {
|
||||
.drawer-menu-item {
|
||||
color: $dark-mode-text;
|
||||
&.active {
|
||||
border-right: 2px solid $color-accent;
|
||||
color: $light-accent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#single-column-footer {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
|
||||
.toc{
|
||||
background-color: $dark-mode-front-container-background;
|
||||
*{
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
a {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
.toc-active{
|
||||
color: $light-accent !important;
|
||||
}
|
||||
}
|
||||
|
||||
.post-body p,h1,h2,h3,h4,h5,h6,li {
|
||||
color: $dark-mode-text;
|
||||
*:not(a){
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
}
|
||||
.pagination * {
|
||||
color: $dark-mode-text;
|
||||
}
|
||||
|
||||
.vwrap * {
|
||||
color: $dark-mode-text !important;
|
||||
}
|
||||
|
||||
.vcontent p {
|
||||
color: $dark-mode-text !important;
|
||||
}
|
||||
|
||||
.gsc-control-searchbox-only table *{
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
baseURL = "http://example.org/"
|
||||
DefaultContentLanguage = "en" # Theme's display language, supports: en, fr, zh, zh-hant
|
||||
languageCode = "en-us"
|
||||
title = "A Hugo Site"
|
||||
copyright = "This is a customized copyright."
|
||||
theme = "diary"
|
||||
# googleAnalytics = "UA-123-45"
|
||||
|
||||
[markup]
|
||||
[markup.highlight]
|
||||
codeFences = true
|
||||
guessSyntax = false
|
||||
hl_Lines = ""
|
||||
lineNoStart = 1
|
||||
lineNos = false
|
||||
lineNumbersInTable = true
|
||||
noClasses = true
|
||||
style = "perldoc"
|
||||
tabWidth = 4
|
||||
|
||||
[params]
|
||||
subtitle = "Themed by Diary."
|
||||
enableGitalk = true
|
||||
|
||||
# Twitter Card and Open Graph settings
|
||||
enableOpenGraph = true
|
||||
enableTwitterCards = true
|
||||
title = "My Blog" # will set 'og:site_name'
|
||||
description = "My HomePage Description" # will set 'og:description'
|
||||
|
||||
[params.gitalk]
|
||||
owner = "user"
|
||||
repo = "repo name"
|
||||
client_id = "your client id"
|
||||
client_secret = "your client secret"
|
||||
[taxonomies]
|
||||
tag = "tags"
|
||||
category = "categories"
|
||||
|
||||
[[menu.main]]
|
||||
url = "/categories"
|
||||
name = "Categories"
|
||||
weight = 2
|
||||
[[menu.main]]
|
||||
url = "/tags"
|
||||
name = "Tags"
|
||||
weight = 3
|
||||
[[menu.main]]
|
||||
url = "/posts"
|
||||
name = "Archive"
|
||||
weight = 1
|
||||
[[menu.main]]
|
||||
url = "/index.xml"
|
||||
name = "RSS Feed"
|
||||
weight = 4
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
---
|
||||
date: 2017-04-09T10:58:08-04:00
|
||||
description: "The Grand Hall"
|
||||
featured_image: "/images/Pope-Edouard-de-Beaumont-1844.jpg"
|
||||
images: ["/images/Pope-Edouard-de-Beaumont-1844.jpg"]
|
||||
tags: ["scene"]
|
||||
categories: "Story"
|
||||
title: "Chapter I: The Grand Hall"
|
||||
---
|
||||
|
||||
Three hundred and forty-eight years, six months, and nineteen days ago
|
||||
to-day, the Parisians awoke to the sound of all the bells in the triple
|
||||
circuit of the city, the university, and the town ringing a full peal.
|
||||
|
||||
The sixth of January, 1482, is not, however, a day of which history has
|
||||
preserved the memory. There was nothing notable in the event which thus
|
||||
set the bells and the bourgeois of Paris in a ferment from early morning.
|
||||
It was neither an assault by the Picards nor the Burgundians, nor a hunt
|
||||
led along in procession, nor a revolt of scholars in the town of Laas, nor
|
||||
an entry of “our much dread lord, monsieur the king,” nor even a pretty
|
||||
hanging of male and female thieves by the courts of Paris. Neither was it
|
||||
the arrival, so frequent in the fifteenth century, of some plumed and
|
||||
bedizened embassy. It was barely two days since the last cavalcade of that
|
||||
nature, that of the Flemish ambassadors charged with concluding the
|
||||
marriage between the dauphin and Marguerite of Flanders, had made its
|
||||
entry into Paris, to the great annoyance of M. le Cardinal de Bourbon,
|
||||
who, for the sake of pleasing the king, had been obliged to assume an
|
||||
amiable mien towards this whole rustic rabble of Flemish burgomasters, and
|
||||
to regale them at his Hôtel de Bourbon, with a very “pretty morality,
|
||||
allegorical satire, and farce,” while a driving rain drenched the
|
||||
magnificent tapestries at his door.
|
||||
|
||||
What put the “whole population of Paris in commotion,” as Jehan de Troyes
|
||||
expresses it, on the sixth of January, was the double solemnity, united
|
||||
from time immemorial, of the Epiphany and the Feast of Fools.
|
||||
|
||||
On that day, there was to be a bonfire on the Place de Grève, a maypole at
|
||||
the Chapelle de Braque, and a mystery at the Palais de Justice. It had
|
||||
been cried, to the sound of the trumpet, the preceding evening at all the
|
||||
cross roads, by the provost’s men, clad in handsome, short, sleeveless
|
||||
coats of violet camelot, with large white crosses upon their breasts.
|
||||
|
||||
So the crowd of citizens, male and female, having closed their houses and
|
||||
shops, thronged from every direction, at early morn, towards some one of
|
||||
the three spots designated.
|
||||
|
||||
Each had made his choice; one, the bonfire; another, the maypole; another,
|
||||
the mystery play. It must be stated, in honor of the good sense of the
|
||||
loungers of Paris, that the greater part of this crowd directed their
|
||||
steps towards the bonfire, which was quite in season, or towards the
|
||||
mystery play, which was to be presented in the grand hall of the Palais de
|
||||
Justice (the courts of law), which was well roofed and walled; and that
|
||||
the curious left the poor, scantily flowered maypole to shiver all alone
|
||||
beneath the sky of January, in the cemetery of the Chapel of Braque.
|
||||
|
||||
The populace thronged the avenues of the law courts in particular, because
|
||||
they knew that the Flemish ambassadors, who had arrived two days
|
||||
previously, intended to be present at the representation of the mystery,
|
||||
and at the election of the Pope of the Fools, which was also to take place
|
||||
in the grand hall.
|
||||
|
||||
It was no easy matter on that day, to force one’s way into that grand
|
||||
hall, although it was then reputed to be the largest covered enclosure in
|
||||
the world (it is true that Sauval had not yet measured the grand hall of
|
||||
the Château of Montargis). The palace place, encumbered with people,
|
||||
offered to the curious gazers at the windows the aspect of a sea; into
|
||||
which five or six streets, like so many mouths of rivers, discharged every
|
||||
moment fresh floods of heads. The waves of this crowd, augmented
|
||||
incessantly, dashed against the angles of the houses which projected here
|
||||
and there, like so many promontories, into the irregular basin of the
|
||||
place. In the centre of the lofty Gothic* façade of the palace, the grand
|
||||
staircase, incessantly ascended and descended by a double current, which,
|
||||
after parting on the intermediate landing-place, flowed in broad waves
|
||||
along its lateral slopes,—the grand staircase, I say, trickled
|
||||
incessantly into the place, like a cascade into a lake. The cries, the
|
||||
laughter, the trampling of those thousands of feet, produced a great noise
|
||||
and a great clamor. From time to time, this noise and clamor redoubled;
|
||||
the current which drove the crowd towards the grand staircase flowed
|
||||
backwards, became troubled, formed whirlpools. This was produced by the
|
||||
buffet of an archer, or the horse of one of the provost’s sergeants, which
|
||||
kicked to restore order; an admirable tradition which the provostship has
|
||||
bequeathed to the constablery, the constablery to the _maréchaussée_,
|
||||
the _maréchaussée_ to our _gendarmeri_ of Paris.
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
---
|
||||
date: 2017-04-14T11:25:05-04:00
|
||||
description: "Esmeralda"
|
||||
featured_image: "/images/esmeralda.jpg"
|
||||
tags: []
|
||||
title: "Chapter VI: Esmeralda"
|
||||
categories: Story
|
||||
---
|
||||
We are delighted to be able to inform the reader, that during the whole of
|
||||
this scene, Gringoire and his piece had stood firm. His actors, spurred on
|
||||
by him, had not ceased to spout his comedy, and he had not ceased to
|
||||
listen to it. He had made up his mind about the tumult, and was determined
|
||||
to proceed to the end, not giving up the hope of a return of attention on
|
||||
the part of the public. This gleam of hope acquired fresh life, when he
|
||||
saw Quasimodo, Coppenole, and the deafening escort of the pope of the
|
||||
procession of fools quit the hall amid great uproar. The throng rushed
|
||||
eagerly after them. “Good,” he said to himself, “there go all the
|
||||
mischief-makers.” Unfortunately, all the mischief-makers constituted the
|
||||
entire audience. In the twinkling of an eye, the grand hall was empty.
|
||||
|
||||
To tell the truth, a few spectators still remained, some scattered, others
|
||||
in groups around the pillars, women, old men, or children, who had had
|
||||
enough of the uproar and tumult. Some scholars were still perched astride
|
||||
of the window-sills, engaged in gazing into the Place.
|
||||
|
||||
“Well,” thought Gringoire, “here are still as many as are required to hear
|
||||
the end of my mystery. They are few in number, but it is a choice
|
||||
audience, a lettered audience.”
|
||||
|
||||
An instant later, a symphony which had been intended to produce the
|
||||
greatest effect on the arrival of the Virgin, was lacking. Gringoire
|
||||
perceived that his music had been carried off by the procession of the
|
||||
Pope of the Fools. “Skip it,” said he, stoically.
|
||||
|
||||
He approached a group of bourgeois, who seemed to him to be discussing his
|
||||
piece. This is the fragment of conversation which he caught,—
|
||||
|
||||
“You know, Master Cheneteau, the Hôtel de Navarre, which belonged to
|
||||
Monsieur de Nemours?”
|
||||
|
||||
“Yes, opposite the Chapelle de Braque.”
|
||||
|
||||
“Well, the treasury has just let it to Guillaume Alixandre, historian, for
|
||||
six hivres, eight sols, parisian, a year.”
|
||||
|
||||
“How rents are going up!”
|
||||
|
||||
“Come,” said Gringoire to himself, with a sigh, “the others are
|
||||
listening.”
|
||||
|
||||
“Comrades,” suddenly shouted one of the young scamps from the window, “La
|
||||
Esmeralda! La Esmeralda in the Place!”
|
||||
|
||||
This word produced a magical effect. Every one who was left in the hall
|
||||
flew to the windows, climbing the walls in order to see, and repeating,
|
||||
“La Esmeralda! La Esmeralda?” At the same time, a great sound of applause
|
||||
was heard from without.
|
||||
|
||||
“What’s the meaning of this, of the Esmeralda?” said Gringoire, wringing
|
||||
his hands in despair. “Ah, good heavens! it seems to be the turn of the
|
||||
windows now.”
|
||||
|
||||
He returned towards the marble table, and saw that the representation had
|
||||
been interrupted. It was precisely at the instant when Jupiter should have
|
||||
appeared with his thunder. But Jupiter was standing motionless at the foot
|
||||
of the stage.
|
||||
|
||||
“Michel Giborne!” cried the irritated poet, “what are you doing there? Is
|
||||
that your part? Come up!”
|
||||
|
||||
“Alas!” said Jupiter, “a scholar has just seized the ladder.”
|
||||
|
||||
Gringoire looked. It was but too true. All communication between his plot
|
||||
and its solution was intercepted.
|
||||
|
||||
“The rascal,” he murmured. “And why did he take that ladder?”
|
||||
|
||||
“In order to go and see the Esmeralda,” replied Jupiter piteously. “He
|
||||
said, ‘Come, here’s a ladder that’s of no use!’ and he took it.”
|
||||
|
||||
This was the last blow. Gringoire received it with resignation.
|
||||
|
||||
“May the devil fly away with you!” he said to the comedian, “and if I get
|
||||
my pay, you shall receive yours.”
|
||||
|
||||
Then he beat a retreat, with drooping head, but the last in the field,
|
||||
like a general who has fought well.
|
||||
|
||||
And as he descended the winding stairs of the courts: “A fine rabble of
|
||||
asses and dolts these Parisians!” he muttered between his teeth; “they
|
||||
come to hear a mystery and don’t listen to it at all! They are engrossed
|
||||
by every one, by Chopin Trouillefou, by the cardinal, by Coppenole, by
|
||||
Quasimodo, by the devil! but by Madame the Virgin Mary, not at all. If I
|
||||
had known, I’d have given you Virgin Mary; you ninnies! And I! to come to
|
||||
see faces and behold only backs! to be a poet, and to reap the success of
|
||||
an apothecary! It is true that Homerus begged through the Greek towns, and
|
||||
that Naso died in exile among the Muscovites. But may the devil flay me if
|
||||
I understand what they mean with their Esmeralda! What is that word, in
|
||||
the first place?—‘tis Egyptian!”
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
date: 2019-11-14T11:25:05-04:00
|
||||
description: 本文章采用狗屁不通文章生成器生成,无任何实际含义.
|
||||
featured_image: "/images/chinese.jpg"
|
||||
tags: [Chinese,text]
|
||||
title: "中文文本测试"
|
||||
categories: Chinese
|
||||
---
|
||||
|
||||
|
||||
这样看来, 邓拓在不经意间这样说过,越是没有本领的就越加自命不凡。这不禁令我深思。 我们不得不面对一个非常尴尬的事实,那就是, 一般来说, 所谓中午吃什么,关键是中午吃什么需要如何写。 伏尔泰说过一句富有哲理的话,坚持意志伟大的事业需要始终不渝的精神。这启发了我, 那么, 对我个人而言,中午吃什么不仅仅是一个重大的事件,还可能会改变我的人生。 这样看来, 我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。 一般来讲,我们都必须务必慎重的考虑考虑。 黑格尔说过一句富有哲理的话,只有永远躺在泥坑里的人,才不会再掉进坑里。这启发了我, 我们不得不面对一个非常尴尬的事实,那就是, 既然如何, 在这种困难的抉择下,本人思来想去,寝食难安。
|
||||
|
||||
我认为, 而这些并不是完全重要,更加重要的问题是, 了解清楚中午吃什么到底是一种怎么样的存在,是解决一切问题的关键。 中午吃什么因何而发生? 而这些并不是完全重要,更加重要的问题是, 卢梭在不经意间这样说过,浪费时间是一桩大罪过。这启发了我, 既然如此, 从这个角度来看, 歌德在不经意间这样说过,意志坚强的人能把世界放在手中像泥块一样任意揉捏。我希望诸位也能好好地体会这句话。 我认为, 我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。 本人也是经过了深思熟虑,在每个日日夜夜思考这个问题。 这种事实对本人来说意义重大,相信对这个世界也是有一定意义的。 莎士比亚在不经意间这样说过,人的一生是短的,但如果卑劣地过这一生,就太长了。带着这句话,我们还要更加慎重的审视这个问题: 带着这些问题,我们来审视一下中午吃什么。 中午吃什么因何而发生? 我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。 布尔沃曾经说过,要掌握书,莫被书掌握;要为生而读,莫为读而生。这似乎解答了我的疑惑。 而这些并不是完全重要,更加重要的问题是, 生活中,若中午吃什么出现了,我们就不得不考虑它出现了的事实。 本人也是经过了深思熟虑,在每个日日夜夜思考这个问题。 带着这些问题,我们来审视一下中午吃什么。 生活中,若中午吃什么出现了,我们就不得不考虑它出现了的事实。 我认为, 一般来说, 中午吃什么,到底应该如何实现。 我们不得不面对一个非常尴尬的事实,那就是, 所谓中午吃什么,关键是中午吃什么需要如何写。 我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。 现在,解决中午吃什么的问题,是非常非常重要的。
|
||||
|
||||
我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。 可是,即使是这样,中午吃什么的出现仍然代表了一定的意义。 带着这些问题,我们来审视一下中午吃什么。 本人也是经过了深思熟虑,在每个日日夜夜思考这个问题。 我认为, 问题的关键究竟为何? 非洲曾经提到过,最灵繁的人也看不见自己的背脊。这启发了我, 易卜生说过一句富有哲理的话,伟大的事业,需要决心,能力,组织和责任感。这似乎解答了我的疑惑。 一般来说, 在这种困难的抉择下,本人思来想去,寝食难安。 中午吃什么,到底应该如何实现。 经过上述讨论, 我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。 中午吃什么因何而发生?
|
||||
带着这些问题,我们来审视一下中午吃什么。 对我个人而言,中午吃什么不仅仅是一个重大的事件,还可能会改变我的人生。
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
---
|
||||
title: "(No comment) When You Have Too Much to Do"
|
||||
date: 2018-03-18T02:01:58+05:30
|
||||
description: "You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more."
|
||||
tags: [Primer, todo]
|
||||
featured_image: "/images/notebook.jpg"
|
||||
categories: Todo
|
||||
comment : false
|
||||
---
|
||||
|
||||
You have a to-do list that scrolls on for days. You are managing multiple projects, getting lots of email and messages on different messaging systems, managing finances and personal health habits and so much more.
|
||||
|
||||
It all keeps piling up, and it can feel overwhelming.
|
||||
|
||||
How do you keep up with it all? How do you find focus and peace and get stuff accomplished when you have too much on your plate?
|
||||
|
||||
In this primer, I’ll look at some key strategies and tactics for taking on an overloaded life with an open heart, lots of energy, and a smile on your face.
|
||||
|
||||
## The First Step: Triage
|
||||
|
||||
Whether you’re just starting your day, or you’re in the middle of the chaos and just need to find some sanity … the first step is to get into triage mode.
|
||||
|
||||
Triage, as you probably know, is sorting through the chaos to prioritize: what needs to be done now, what needs to be done today, what needs to be done this week, and what can wait? You’re looking at urgency, but also what’s meaningful and important.
|
||||
|
||||
Here’s what you might do:
|
||||
|
||||
* Pick out the things that need to be done today. Start a Short List for things you’re going to do today. That might be important tasks for big projects, urgent tasks that could result in damage if you don’t act, smaller admin tasks that you really should take care of today, and responding to important messages. I would recommend being ruthless and cutting out as much as you can, having just 5 things on your plate if that’s at all possible. Not everything needs to be done today, and not every email needs to be responded to.
|
||||
* Push some things to tomorrow and the rest of the week. If you have deadlines that can be pushed back (or renegotiated), do that. Spread the work out over the week, even into next week. What needs to be done tomorrow? What can wait a day or two longer?
|
||||
* Eliminate what you can. That might mean just not replying to some messages that aren’t that important and don’t really require a reply. It might mean telling some people that you can’t take on this project after all, or that you need to get out of the commitment that you said you’d do. Yes, this is uncomfortable. For now, just put them on a list called, “To Not Do,” and plan to figure out how to get out of them later.
|
||||
|
||||
OK, you have some breathing room and a manageable list now! Let’s shrink that down even further and just pick one thing.
|
||||
|
||||
## Next: Focus on One Thing
|
||||
|
||||
With a lot on your plate, it’s hard to pick one thing to focus on. But that’s exactly what I’m going to ask you to do.
|
||||
|
||||
Pick one thing, and give it your focus. Yes, there are a lot of other things you can focus on. Yes, they’re stressing you out and making it hard to focus. But think about it this way: if you allow it all to be in your head all the time, that will always be your mode of being. You’ll always be thinking about everything, stressing out about it all, with a frazzled mind … unless you start shifting.
|
||||
|
||||
The shift:
|
||||
|
||||
* Pick something to focus on. Look at the triaged list from the first section … if you have 5-6 things on this Short List, you can assess whether there’s any super urgent, time-sensitive things you need to take care of. If there are, pick one of them. If not, pick the most important one — probably the one you have been putting off doing.
|
||||
* Clear everything else away. Just for a little bit. Close all browser tabs, turn off notifications, close open applications, put your phone away.
|
||||
* Put that one task before you, and allow yourself to be with it completely. Pour yourself into it. Think of it as a practice, of letting go (of everything else), of focus, of radical simplicity.
|
||||
|
||||
When you’re done (or after 15-20 minutes have gone by at least), you can switch to something else. But don’t allow yourself to switch until then.
|
||||
|
||||
By closing off all exits, by choosing one thing, by giving yourself completely to that thing … you’re now in a different mode that isn’t so stressful or spread thin. You’ve started a shift that will lead to focus and sanity.
|
||||
|
||||
## Third: Schedule Time to Simplify
|
||||
|
||||
Remember the To Not Do list above? Schedule some time this week to start reducing your projects, saying no to people, getting out of commitments, crossing stuff off your task list … so that you can have some sanity back.
|
||||
|
||||
There are lots of little things that you’ve said “yes” to that you probably shouldn’t have. That’s why you’re overloaded. Protect your more important work, and your time off, and your peace of mind, by saying “no” to things that aren’t as important.
|
||||
|
||||
Schedule the time to simplify — you don’t have to do it today, but sometime soon — and you can then not have to worry about the things on your To Not Do list until then.
|
||||
|
||||
## Fourth: Practice Mindful Focus
|
||||
|
||||
Go through the rest of the day with an attitude of “mindful focus.” That means that you are doing one thing at a time, being as present as you can, switching as little as you can.
|
||||
|
||||
Think of it as a settling of the mind. A new mode of being. A mindfulness practice (which means you won’t be perfect at it).
|
||||
|
||||
As you practice mindful focus, you’ll learn to practice doing things with an open heart, with curiosity and gratitude, and even joy. Try these one at a time as you get to do each task on your Short List.
|
||||
|
||||
You’ll find that you’re not so overloaded, but that each task is just perfect for that moment. And that’s a completely new relationship with the work that you do, and a new relationship with life.
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
---
|
||||
title: "Typography - Test for features"
|
||||
date: 2018-03-18T12:13:38+05:30
|
||||
description: Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad.
|
||||
tags: typography
|
||||
---
|
||||
|
||||
Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.
|
||||
|
||||
# Heading 1
|
||||
|
||||
Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.
|
||||
|
||||
## Heading 2
|
||||
|
||||
Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.
|
||||
|
||||
### Heading 3
|
||||
|
||||
Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.
|
||||
|
||||
#### Heading 4
|
||||
|
||||
Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.
|
||||
|
||||
##### Heading 5
|
||||
|
||||
Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.
|
||||
|
||||
###### Heading 6
|
||||
|
||||
Lid est laborum et dolorum fuga. Et harum quidem rerum facilis est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit quo minus id quod amets untra dolor amet sad. Sed ut perspser iciatis unde omnis iste natus error sit voluptatem accusantium doloremque laste. Dolores sadips ipsums sits.
|
||||
|
||||
## Typography
|
||||
|
||||
Lid est laborum et dolorum fuga, This is [an example](http://example.com/ "Title") inline link. Et harum quidem rerum facilis, **This is bold** and *emphasis* cumque nihilse impedit quo minus id quod amets untra dolor amet sad. While this is `code block()` and following is a `pre` tag
|
||||
|
||||
print 'this is pre tag'
|
||||
|
||||
Following is the syntax highlighted code block
|
||||
|
||||
```go
|
||||
func getCookie(name string, r interface{}) (*http.Cookie, error) {
|
||||
rd := r.(*http.Request)
|
||||
cookie, err := rd.Cookie(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return cookie, nil
|
||||
}
|
||||
|
||||
func setCookie(cookie *http.Cookie, w interface{}) error {
|
||||
// Get write interface registered using `Acquire` method in handlers.
|
||||
wr := w.(http.ResponseWriter)
|
||||
http.SetCookie(wr, cookie)
|
||||
return nil
|
||||
}
|
||||
```
|
||||
|
||||
This is blockquote, Will make it *better now*
|
||||
|
||||
> 'I want to do with you what spring does with the cherry trees.' <cite>cited ~Pablo Neruda</cite>*
|
||||
|
||||
|
||||
> Et harum quidem *rerum facilis* est et expeditasi distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihilse impedit
|
||||
|
||||
Unordered list
|
||||
|
||||
* Red
|
||||
* Green
|
||||
* Blue
|
||||
|
||||
Ordered list
|
||||
|
||||
1. Red
|
||||
2. Green
|
||||
3. Blue
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
- id: last_mod_on
|
||||
translation: Zuletzt bearbeitet am {{ .Format "02.01.2006" }}
|
||||
- id: format_date
|
||||
translation: '{{ .Format "02.01.2006" }}'
|
||||
- id: format_date_tosec
|
||||
translation: '{{ .Format "02.01.2006 15:04" }}'
|
||||
- id: next_link
|
||||
translation: Nächste
|
||||
- id: prev_link
|
||||
translation: Vorherige
|
||||
- id: no_newer_posts
|
||||
translation: Keine neueren Beiträge.
|
||||
- id: no_older_posts
|
||||
translation: Keine älteren Beiträge.
|
||||
- id: comments_disabled
|
||||
translation: Kommentare deaktiviert.
|
||||
- id: comments_activate_js
|
||||
translation: Bitte aktiviere JavaScript um Kommentare zu sehen.
|
||||
- id: hugo_theme
|
||||
translation: Hugo Theme
|
||||
- id: ported_from
|
||||
translation: Adaptiert von
|
||||
- id: by
|
||||
translation: von
|
||||
- id: draft
|
||||
translation: ENTWURF
|
||||
- id: toc_title
|
||||
translation: INHALTE
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
- id: last_mod_on
|
||||
translation: Last modified on {{ .Format "2006-01-02" }}
|
||||
- id: format_date
|
||||
translation: '{{ .Format "2006-01-02" }}'
|
||||
- id: format_date_tosec
|
||||
translation: '{{ .Format "2006-01-02 15:04" }}'
|
||||
- id: next_link
|
||||
translation: Next
|
||||
- id: prev_link
|
||||
translation: Previous
|
||||
- id: no_newer_posts
|
||||
translation: No newer posts.
|
||||
- id: no_older_posts
|
||||
translation: No older posts.
|
||||
- id: comments_disabled
|
||||
translation: Comments Disabled.
|
||||
- id: comments_activate_js
|
||||
translation: Please activate JavaScript to view comments.
|
||||
- id: hugo_theme
|
||||
translation: Hugo Theme
|
||||
- id: ported_from
|
||||
translation: Ported from
|
||||
- id: by
|
||||
translation: by
|
||||
- id: draft
|
||||
translation: DRAFT
|
||||
- id: toc_title
|
||||
translation: CATALOG
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
- id: last_mod_on
|
||||
translation: Dernière modification le {{ .Format "02/01/2006" }}
|
||||
- id: format_date
|
||||
translation: '{{ .Format "02/01/2006" }}'
|
||||
- id: format_date_tosec
|
||||
translation: '{{ .Format "02/01/2006 15h04" }}'
|
||||
- id: next_link
|
||||
translation: Suivant
|
||||
- id: prev_link
|
||||
translation: Précédent
|
||||
- id: no_newer_posts
|
||||
translation: Pas de post plus récent.
|
||||
- id: no_older_posts
|
||||
translation: Pas de post plus ancien.
|
||||
- id: comments_disabled
|
||||
translation: Commentaires Désactivés.
|
||||
- id: comments_activate_js
|
||||
translation: Veuillez activer JavaScript pour utiliser le système de commentaires.
|
||||
- id: hugo_theme
|
||||
translation: Theme Hugo
|
||||
- id: ported_from
|
||||
translation: Adapté de
|
||||
- id: by
|
||||
translation: par
|
||||
- id: draft
|
||||
translation: BROUILLON
|
||||
- id: toc_title
|
||||
translation: TABLE
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
- id: last_mod_on
|
||||
translation: 上次修改於 {{ .Format "2006-01-02" }}
|
||||
- id: format_date
|
||||
translation: '{{ .Format "2006-01-02" }}'
|
||||
- id: format_date_tosec
|
||||
translation: '{{ .Format "2006-01-02 15:04" }}'
|
||||
- id: next_link
|
||||
translation: 下回
|
||||
- id: prev_link
|
||||
translation: 上回
|
||||
- id: no_newer_posts
|
||||
translation: 已經到底啦。
|
||||
- id: no_older_posts
|
||||
translation: 這是最舊的文章了。
|
||||
- id: comments_disabled
|
||||
translation: 此篇文章的評論功能已經停用。
|
||||
- id: comments_activate_js
|
||||
translation: 請開啓 JavaScript 以便使用評論服務。
|
||||
- id: hugo_theme
|
||||
translation: Hugo Theme
|
||||
- id: ported_from
|
||||
translation: 移植自
|
||||
- id: by
|
||||
translation: by
|
||||
- id: draft
|
||||
translation: 草稿
|
||||
- id: toc_title
|
||||
translation: 目錄
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
- id: last_mod_on
|
||||
translation: 最后修改于 {{ .Format "2006-01-02" }}
|
||||
- id: format_date
|
||||
translation: '{{ .Format "2006-01-02" }}'
|
||||
- id: format_date_tosec
|
||||
translation: '{{ .Format "2006-01-02 15:04" }}'
|
||||
- id: next_link
|
||||
translation: '下回'
|
||||
- id: prev_link
|
||||
translation: '上回'
|
||||
- id: no_newer_posts
|
||||
translation: 已经到头啦。
|
||||
- id: no_older_posts
|
||||
translation: 这是最旧的文章了。
|
||||
- id: comments_disabled
|
||||
translation: 此篇文章的评论功能已经停用。
|
||||
- id: comments_activate_js
|
||||
translation: 请开启 JavaScript 以便使用评论服务。
|
||||
- id: hugo_theme
|
||||
translation: Hugo Theme
|
||||
- id: ported_from
|
||||
translation: 移植自
|
||||
- id: by
|
||||
translation: by
|
||||
- id: draft
|
||||
translation: 草稿
|
||||
- id: toc_title
|
||||
translation: 目录
|
||||
|
Before Width: | Height: | Size: 391 KiB |
|
Before Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 285 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
<div id="app">
|
||||
{{- partial "sidebar.html" . -}}
|
||||
{{- partial "extrabar.html" . -}}
|
||||
<!-- PC view -->
|
||||
|
||||
{{- partial "mobile-header.html" . -}}
|
||||
<!-- mobile header -->
|
||||
<div id="content">
|
||||
{{- block "main" . }}{{- end }}
|
||||
</div>
|
||||
|
||||
{{- partial "mobile-footer.html" . -}}
|
||||
<!-- mobile footer -->
|
||||
</div>
|
||||
{{ partial "journal.html" .}}
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
{{ define "main" }}
|
||||
<div ref="streamContainer" class="stream-container">
|
||||
<div class="post-list-container post-list-container-shadow">
|
||||
{{ range .Paginator.Pages.GroupByDate "2006" }}
|
||||
<a class="a-block">
|
||||
<div class="post-item-wrapper post-item-wrapper-no-hover">
|
||||
<div class="post-item post-item-no-gaps">
|
||||
<div class="post-item-info-wrapper">
|
||||
<div class="post-item-title post-item-title-small year">
|
||||
{{ .Key }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{{ range .Pages }}
|
||||
<a href="{{ .RelPermalink }}" class="a-block">
|
||||
<div class="post-item-wrapper">
|
||||
<div class="post-item post-item-no-gaps">
|
||||
<div class="post-item-info-wrapper">
|
||||
<div class="post-item-title">
|
||||
{{.Title}}
|
||||
</div>
|
||||
{{ partial "post-item-meta.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
|
|
@ -1,113 +0,0 @@
|
|||
{{ define "main" }}
|
||||
<div ref="streamContainer" class="stream-container">
|
||||
<div class="post-list-container post-list-container-shadow">
|
||||
<div class="post">
|
||||
{{ $post_class := "post-head-wrapper-text-only"}}
|
||||
{{ $featured_image := .Params.featured_image }}
|
||||
{{ if $featured_image }}
|
||||
{{ $post_class = "post-head-wrapper"}}
|
||||
{{ end }}
|
||||
|
||||
<div class="{{$post_class}}"
|
||||
{{ if $featured_image }}
|
||||
{{ $image := .Resources.GetMatch (.Params.featured_image) }}
|
||||
{{ if $image }}
|
||||
style="background-image: url('{{$image.Permalink }}')"
|
||||
{{ else }}
|
||||
style="background-image: url('{{ $featured_image | absURL}}')"
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
>
|
||||
<div class="post-title">
|
||||
{{ .Title }}
|
||||
{{ if .Params.description }}
|
||||
<div class="post-subtitle">
|
||||
{{ .Params.description }}
|
||||
</div>
|
||||
{{ end }}
|
||||
<div class="post-meta">
|
||||
{{ if .Params.date}}
|
||||
<time itemprop="datePublished">
|
||||
{{ i18n "format_date_tosec" .PublishDate }}
|
||||
</time>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.categories }}
|
||||
<i class="material-icons" style="">folder</i>
|
||||
<a href="{{ "/categories/" | relLangURL }}{{ .Params.categories | urlize }}">{{ .Params.categories }}</a>
|
||||
|
||||
{{ end }}
|
||||
|
||||
{{ if gt .Params.tags 0 }}
|
||||
<i class="material-icons" style="">label</i>
|
||||
{{ range .Params.tags }}
|
||||
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a>
|
||||
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if .Site.Params.enableReadingTime }}
|
||||
<i class="material-icons" style="">schedule</i>
|
||||
{{ $readTime := mul (div (countwords .Content) 220.0) 60 }}
|
||||
|
||||
{{ $minutes := math.Floor (div $readTime 60) }}
|
||||
{{ $seconds := mod $readTime 60 }}
|
||||
|
||||
{{ if gt $minutes 0}}
|
||||
{{ $minutes }} {{ cond (eq $minutes 1) "minute" "min" }}
|
||||
{{ end }}
|
||||
{{ $seconds }} {{ cond (eq $seconds 1) "second" "s" }}.
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="post-body-wrapper">
|
||||
{{ if .Params.enableVue }}
|
||||
<div class="post-body">
|
||||
{{ else }}
|
||||
<div class="post-body" v-pre>
|
||||
{{ end }}
|
||||
{{.Content}}
|
||||
{{ if not .Lastmod.IsZero }}
|
||||
<HR width="100%" id="EOF">
|
||||
<p style="color:#777;">{{ i18n "last_mod_on" .Page.Lastmod }}</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<nav class="post-pagination">
|
||||
|
||||
{{if .Next}}
|
||||
<a class="newer-posts" href="{{.Next.Permalink}}">
|
||||
{{ i18n "next_link" }}<br>{{.Next.Title}}
|
||||
</a>
|
||||
{{else}}
|
||||
<a class="newer-posts">
|
||||
{{ i18n "next_link" }}<br>{{ i18n "no_newer_posts"}}
|
||||
</a>
|
||||
{{end}}
|
||||
|
||||
{{if .Prev}}
|
||||
<a class="older-posts" href="{{.Prev.Permalink}}">
|
||||
{{ i18n "prev_link" }}<br>{{.Prev.Title}}
|
||||
</a>
|
||||
{{else}}
|
||||
<a class="older-posts">
|
||||
{{ i18n "prev_link" }}<br>{{ i18n "no_older_posts" }}
|
||||
</a>
|
||||
{{end}}
|
||||
</nav>
|
||||
<div class="post-comment-wrapper">
|
||||
{{ if eq .Params.comment false }}
|
||||
<p style="opacity: 0.6" align="center">
|
||||
<small>{{ i18n "comments_disabled" }}</small>
|
||||
</p>
|
||||
{{ else }}
|
||||
{{- partial "comment.html" . -}}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
{{ define "main" }}
|
||||
<div ref="streamContainer" class="stream-container">
|
||||
<div class="post-list-container post-list-container-shadow">
|
||||
<div class="post-item-wrapper post-item-wrapper-no-hover">
|
||||
<div class="post-item post-item-no-gaps">
|
||||
<div class="post-item-info-wrapper">
|
||||
<div class="post-item-title post-item-title-small">
|
||||
<a href="{{.FirstSection.Permalink}}">{{.FirstSection.Title}}</a> / {{ .Title }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{- range .Paginator.Pages -}}
|
||||
<a href="{{ .RelPermalink }}" class="a-block">
|
||||
<div class="post-item-wrapper">
|
||||
<div class="post-item post-item-no-gaps">
|
||||
<div class="post-item-info-wrapper">
|
||||
<div class="post-item-title">
|
||||
{{.Title}}
|
||||
</div>
|
||||
{{ partial "post-item-meta.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{{- end -}}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
{{ define "main" }}
|
||||
<div ref="streamContainer" class="stream-container">
|
||||
<div class="post-list-container post-list-container-shadow">
|
||||
<a class="a-block">
|
||||
<div class="post-item-wrapper post-item-wrapper-no-hover">
|
||||
<div class="post-item post-item-no-gaps">
|
||||
<div class="post-item-info-wrapper">
|
||||
<div class="post-item-title post-item-title-small">
|
||||
{{.Title}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
{{ range .Paginator.Pages }}
|
||||
<a href="{{.Permalink}}" class="a-block">
|
||||
<div class="post-item-wrapper">
|
||||
<div class="post-item post-item-no-gaps">
|
||||
<div class="post-item-info-wrapper">
|
||||
<div class="post-item-title">
|
||||
{{.Title}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
|
||||
{{ define "main" }}
|
||||
|
||||
<div ref="streamContainer" class="stream-container">
|
||||
<div class="post-list-container post-list-container-no-background">
|
||||
{{range .Paginator.Pages}}
|
||||
{{if and (.IsPage) (.Params.date)}}
|
||||
<a href="{{.Permalink}}" class="a-block">
|
||||
<div class="post-item-wrapper">
|
||||
<div class="post-item post-item-no-divider">
|
||||
<div class="post-item-info-wrapper">
|
||||
<div class="post-item-title">
|
||||
{{.Title}}
|
||||
</div>
|
||||
<div class="post-item-summary">
|
||||
{{.Description}}
|
||||
</div>
|
||||
{{ partial "post-item-meta.html" . }}
|
||||
</div>
|
||||
{{ $featured_image := .Params.featured_image }}
|
||||
{{ if $featured_image }}
|
||||
{{ $image := .Resources.GetMatch (.Params.featured_image) }}
|
||||
<div class="post-item-image-wrapper">
|
||||
<div class="post-item-image"
|
||||
{{ if $image }}
|
||||
style="background-image: url('{{ $image.Permalink }}')"
|
||||
{{ else }}
|
||||
style="background-image: url('{{ $featured_image | absURL}}')"
|
||||
{{ end }}
|
||||
></div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
||||
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||
{{ with .OutputFormats.Get "RSS" }}
|
||||
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
||||
{{ end }}
|
||||
{{ range .Paginator.Pages }}
|
||||
{{ if and (.IsPage) (.Params.date) }}
|
||||
<item>
|
||||
<title>{{ .Title }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||
<guid>{{ .Permalink }}</guid>
|
||||
<description>{{ .Site.Title }} {{ .Permalink }} - {{- .Content | html -}} - {{ .Permalink }} - {{.Site.Copyright}}</description>
|
||||
</item>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</channel>
|
||||
</rss>
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
{{ if .Site.Params.disqusShortname }}
|
||||
<div class="comments">
|
||||
<vue-disqus shortname="{{.Site.Params.disqusShortname}}"></vue-disqus>
|
||||
</div>
|
||||
<noscript><noscript>{{ i18n "comments_activate_js" }}</noscript></noscript>
|
||||
<a href="https://disqus.com/" class="dsq-brlink">Comments powered by <span class="logo-disqus">Disqus</span></a>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Site.Params.enableGitalk }}
|
||||
<div id="gitalk-container"></div>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Site.Params.enableValine }}
|
||||
<div id="vcomments"></div>
|
||||
<!-- Script moved to journal.html -->
|
||||
{{ end }}
|
||||
|
||||
{{ if .Site.Params.livereId }}
|
||||
<div id="lv-container" data-id="city" data-uid={{.Site.Params.livereId}}>
|
||||
<noscript>{{ i18n "comments_activate_js" }}</noscript>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<!-- Please don't remove the information of theme makers. -->
|
||||
{{ i18n "hugo_theme" }} <a href="https://github.com/amazingrise/hugo-theme-diary">Diary</a> {{ i18n "by" }} <a href="https://amazingrise.net">Rise</a>
|
||||
<br>
|
||||
{{ i18n "ported_from" }} <a href="https://mak1t0.cc/" target="_blank" rel="noreferrer noopener">Makito</a>'s <a href="https://github.com/SumiMakito/hexo-theme-journal/" target="_blank" rel="noreferrer noopener">Journal.</a> <br>
|
||||
<br>
|
||||
<!-- Because this project is under MIT licence. -->
|
||||
©
|
||||
{{ if .Site.Copyright }}
|
||||
{{ .Site.Copyright }}
|
||||
{{ else }}
|
||||
{{.Site.Home.Date.Year}} {{.Site.Title}}
|
||||
{{ end }}
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
<div ref="extraContainer" class="extra-container">
|
||||
{{ if and (isset .Site.Params "googlesearchcode") (.IsHome) }}
|
||||
<!--
|
||||
<script async src="https://cse.google.com/cse.js?cx={{.Site.Params.googleSearchCode}}"></script>
|
||||
-->
|
||||
<div class="gcse-searchbox-only" mobileLayout="true"></div>
|
||||
{{ end }}
|
||||
{{ if and (not (.Site.Params.disableToC) ) (.IsPage) }}
|
||||
<div class="toc animated-visibility" :class="{ invisible: scrollY <= 140 }">
|
||||
{{- partial "toc.html" . -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
<div class="pagination">
|
||||
<a id="globalBackToTop" class="pagination-action animated-visibility" href="#top" :class="{ invisible: scrollY == 0 }">
|
||||
<i class="material-icons pagination-action-icon">
|
||||
keyboard_arrow_up
|
||||
</i>
|
||||
</a>
|
||||
{{ if not .Site.Params.disableDarkMode }}
|
||||
<a class="pagination-action" v-on:click="toggleDarkMode">
|
||||
<i class="material-icons pagination-action-icon" v-if="isDarkMode">
|
||||
brightness_4
|
||||
</i>
|
||||
<i class="material-icons pagination-action-icon" v-else="isDarkMode">
|
||||
brightness_7
|
||||
</i>
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ if .Paginator }}
|
||||
{{ if gt .Paginator.TotalPages 1 }}
|
||||
<div class="pagination-indicator">
|
||||
<span style="text-align: center">
|
||||
{{.Paginator.PageNumber}}<br><div style="display: inline-block; transform: rotate(-28deg)">-</div><br>{{.Paginator.TotalPages}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{{ if .Paginator.HasPrev }}
|
||||
<a class="pagination-action" href="{{.Paginator.Prev.URL}}">
|
||||
<i class="material-icons pagination-action-icon">
|
||||
chevron_left
|
||||
</i>
|
||||
</a>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Paginator.HasNext }}
|
||||
<a class="pagination-action" href="{{.Paginator.Next.URL}}">
|
||||
<i class="material-icons pagination-action-icon">
|
||||
chevron_right
|
||||
</i>
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,123 +0,0 @@
|
|||
<head>
|
||||
<title>{{.Title}}</title>
|
||||
|
||||
{{ $description := .Params.description}}
|
||||
{{if .IsHome}}
|
||||
{{ $description = .Site.Params.description}}
|
||||
{{end}}
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="google-site-verification" content="{{ .Site.Params.googleSiteVerification }}">
|
||||
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
|
||||
<meta content="telephone=no" name="format-detection">
|
||||
<meta name="description" content="{{ $description }}">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<!-- open-graph -->
|
||||
{{if .Site.Params.enableOpenGraph}}
|
||||
{{ template "_internal/opengraph.html" . }}
|
||||
{{end}}
|
||||
|
||||
<!-- twitter-cards -->
|
||||
{{if .Site.Params.enableTwitterCards}}
|
||||
{{ template "_internal/twitter_cards.html" . }}
|
||||
{{end}}
|
||||
|
||||
<!-- metadata -->
|
||||
|
||||
{{ if .Site.GoogleAnalytics }}
|
||||
{{ template "_internal/google_analytics.html" . }}
|
||||
{{ end }}
|
||||
|
||||
<script src="{{"/vendor/js/jquery.min.js" | relURL}}" ></script>
|
||||
<script src="{{"/vendor/js/popper.min.js" | relURL}}" ></script>
|
||||
<script src="{{"/vendor/js/bootstrap.min.js" | relURL}}" ></script>
|
||||
<script src="{{"/vendor/js/smooth-scroll.polyfills.min.js" | relURL}}" ></script>
|
||||
<link type="text/css" rel="stylesheet" href="{{"/vendor/css/bootstrap.min.css" | relURL}}">
|
||||
<script src="{{"/vendor/js/vue.min.js" | relURL}}" ></script>
|
||||
|
||||
{{if .Site.Params.manifest}}
|
||||
<link rel="manifest" href="{{.Site.Params.manifest}}">
|
||||
{{end}}
|
||||
|
||||
{{ if .Site.Params.favicon }}
|
||||
<link rel="icon" href="{{ .Site.Params.favicon | absURL }}">
|
||||
<!-- favicon -->
|
||||
{{ end }}
|
||||
|
||||
{{ $styles := resources.Get "scss/journal.scss" | toCSS | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}" media="screen">
|
||||
|
||||
{{ if not .Site.Params.disableDarkmode }}
|
||||
{{ $darkmode := resources.Get "scss/dark-mode.scss" | toCSS | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ $darkmode.Permalink }}" integrity="{{ $darkmode.Data.Integrity }}" media="screen">
|
||||
{{ end }}
|
||||
|
||||
<script src="{{.Site.BaseURL}}/js/loadCSS.js"></script>
|
||||
<!--
|
||||
<script>
|
||||
loadCSS("https://fonts.googleapis.com/css?family=Lora|Montserrat|Fira+Mono|Noto+Serif+SC|Material+Icons");
|
||||
</script>
|
||||
-->
|
||||
|
||||
{{ if .Params.enableMathJax }}
|
||||
{{ partial "mathjax.html" . }}
|
||||
{{ end }}
|
||||
|
||||
{{ if and (not (.Params.disableToC) ) (.IsPage) }}
|
||||
{{ if .Site.Params.disableAutoCollapse }}
|
||||
<script src="{{.Site.BaseURL}}/js/toc.js"></script>
|
||||
{{ else }}
|
||||
<script src="{{.Site.BaseURL}}/js/toc-collapse.js"></script>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ if and (.Site.Params.enableGitalk) (.IsPage) }}
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
|
||||
<script src="{{"/vendor/js/md5.min.js" | relURL}}"></script>
|
||||
<script>
|
||||
var gitalk = new Gitalk({
|
||||
clientID: '{{ .Site.Params.Gitalk.client_id }}',
|
||||
clientSecret: '{{ .Site.Params.Gitalk.client_secret }}',
|
||||
repo: '{{ .Site.Params.Gitalk.repo }}',
|
||||
owner: '{{ .Site.Params.Gitalk.owner }}',
|
||||
admin: ['{{ .Site.Params.Gitalk.owner }}'],
|
||||
id: md5(location.pathname),
|
||||
distractionFreeMode: 'false'
|
||||
});
|
||||
window.onload = function () {
|
||||
gitalk.render('gitalk-container')
|
||||
}
|
||||
</script>
|
||||
{{ end }}
|
||||
|
||||
{{ if and (.Site.Params.livereId) (.IsPage) }}
|
||||
<script type="text/javascript">
|
||||
$(
|
||||
(function(d, s) {
|
||||
var j, e = d.getElementsByTagName(s)[0];
|
||||
|
||||
if (typeof LivereTower === 'function') { return; }
|
||||
|
||||
j = d.createElement(s);
|
||||
j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
|
||||
j.async = true;
|
||||
|
||||
e.parentNode.insertBefore(j, e);
|
||||
})(document, 'script'));
|
||||
</script>
|
||||
{{ end }}
|
||||
|
||||
{{ if and (.Site.Params.enableValine) (.IsPage) }}
|
||||
<script src='https://unpkg.com/valine@1.4.14/dist/Valine.min.js'></script>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Site.Params.disqusShortname }}
|
||||
<script src="https://cdn.jsdelivr.net/npm/vue-disqus@3/dist/vue-disqus.js"></script>
|
||||
{{ end }}
|
||||
{{ partial "victorhugo.html" . }}
|
||||
|
||||
</head>
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
<script>
|
||||
let app;
|
||||
|
||||
app = new Vue({
|
||||
el: '#app',
|
||||
data: {
|
||||
scrollY: 0,
|
||||
navOpacity: 0,
|
||||
isDrawerOpen: false,
|
||||
mounted: false,
|
||||
isDarkMode: false
|
||||
},
|
||||
methods: {
|
||||
sgn(t, x) {
|
||||
let k = 1. / (1. - 2 * t);
|
||||
if (x <= t) return 0;
|
||||
else if (x >= 1 - t) return 1;
|
||||
else {
|
||||
return k * (x - t);
|
||||
}
|
||||
},
|
||||
handleScroll() {
|
||||
this.scrollY = window.scrollY;
|
||||
this.navOpacity = this.sgn(.0, Math.min(1, Math.max(0, window.scrollY / (this.pageHeadHeight() - this.navBarHeight() * 0.8))));
|
||||
const {navBar, navBackground, navTitle, extraContainer, streamContainer} = this.$refs;
|
||||
|
||||
if (this.navOpacity >= 1) {
|
||||
navBackground.style.opacity = 1;
|
||||
navTitle.style.opacity = 1;
|
||||
} else {
|
||||
navBackground.style.opacity = 0;
|
||||
navTitle.style.opacity = 0;
|
||||
}
|
||||
},
|
||||
handleResize() {
|
||||
const {navBar, navBackground, navTitle, extraContainer, streamContainer} = this.$refs;
|
||||
extraContainer.style.left = (streamContainer.offsetWidth - extraContainer.offsetWidth) + 'px';
|
||||
},
|
||||
navBarHeight() {
|
||||
return this.$refs.navBar.offsetHeight;
|
||||
},
|
||||
pageHeadHeight() {
|
||||
return this.$refs.pageHead.offsetHeight;
|
||||
},
|
||||
toggleDrawer() {
|
||||
this.isDrawerOpen = !this.isDrawerOpen;
|
||||
document.getElementsByTagName('html')[0].style.overflow = this.isDrawerOpen ? 'hidden' : 'unset';
|
||||
},
|
||||
closeDrawer() {
|
||||
this.isDrawerOpen = false;
|
||||
document.getElementsByTagName('html')[0].style.overflow = this.isDrawerOpen ? 'hidden' : 'unset';
|
||||
},
|
||||
toggleDarkMode() {
|
||||
this.isDarkMode = !this.isDarkMode;
|
||||
if (this.isDarkMode==true){
|
||||
document.cookie = "night=1;path=/";
|
||||
document.body.classList.add("night");
|
||||
} else {
|
||||
document.cookie = "night=0;path=/";
|
||||
document.body.classList.remove("night");
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
window.addEventListener('scroll', this.handleScroll);
|
||||
window.addEventListener('resize', this.handleResize);
|
||||
window._nonDesktop = function () {
|
||||
let check = false;
|
||||
(function (a) {
|
||||
if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true;
|
||||
})(navigator.userAgent || navigator.vendor || window.opera);
|
||||
return check;
|
||||
};
|
||||
// From https://www.jdeal.cn/archives/Dark.html
|
||||
var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1");
|
||||
if (night==""){
|
||||
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
{{ if .Site.Params.enableAutoDarkMode }}
|
||||
this.toggleDarkMode();
|
||||
{{ end }}
|
||||
}
|
||||
}else{
|
||||
// If night is not empty
|
||||
if (night=="1") {
|
||||
this.toggleDarkMode();
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.handleScroll();
|
||||
this.handleResize();
|
||||
this.mounted = true;
|
||||
|
||||
{{ if and (.Site.Params.enableValine) (.IsPage) }}
|
||||
new Valine({
|
||||
el: '#vcomments',
|
||||
appId: {{.Site.Params.valine.appId}},
|
||||
appKey: {{.Site.Params.valine.appKey}},
|
||||
requiredFields: ['nick','mail'],
|
||||
enableQQ: true,
|
||||
recordIP: true,
|
||||
})
|
||||
{{ end }}
|
||||
},
|
||||
destroyed() {
|
||||
window.removeEventListener('scroll', this.handleScroll);
|
||||
window.removeEventListener('resize', this.handleResize);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="{{.Site.BaseURL}}/js/journal.js"></script>
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
<!-- From https://note.qidong.name/2018/03/hugo-mathjax/ -->
|
||||
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
tex: {
|
||||
inlineMath: [['$', '$'], ['\\(', '\\)']]
|
||||
},
|
||||
svg: {
|
||||
fontCache: 'global'
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" id="MathJax-script"
|
||||
async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
MathJax.Hub.Queue(function() {
|
||||
// Fix <code> tags after MathJax finishes running. This is a
|
||||
// hack to overcome a shortcoming of Markdown. Discussion at
|
||||
// https://github.com/mojombo/jekyll/issues/199
|
||||
var all = MathJax.Hub.getAllJax(), i;
|
||||
for(i = 0; i < all.length; i += 1) {
|
||||
all[i].SourceElement().parentNode.className += ' has-jax';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
code.has-jax {
|
||||
font: inherit;
|
||||
font-size: 100%;
|
||||
background: inherit;
|
||||
border: inherit;
|
||||
color: #515151;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{{- partial "mobile-paginator.html" . -}}
|
||||
<div id="single-column-footer">
|
||||
{{- partial "copyright.html" . -}}
|
||||
</div>
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
<div class="single-column-drawer-container" ref="drawer"
|
||||
v-bind:class="{ 'single-column-drawer-container-active': isDrawerOpen }">
|
||||
<div class="drawer-content">
|
||||
<div class="drawer-menu">
|
||||
{{ if and (isset .Site.Params "googlesearchcode") (.IsHome) }}
|
||||
<script async src="https://cse.google.com/cse.js?cx={{.Site.Params.googleSearchCode}}"></script>
|
||||
<div class="gcse-searchbox-only" mobileLayout="true"></div>
|
||||
{{ end }}
|
||||
{{ $current := .Permalink | absLangURL }}
|
||||
{{ range .Site.Menus.main }}
|
||||
{{$actived := "false"}}
|
||||
<!-- A problem caused by slash: if you use "eq" directly, you will get a result of "/tags/" and "/tags" -->
|
||||
{{if hasPrefix $current (.URL|absLangURL)}}
|
||||
{{$actived = "active"}}
|
||||
{{end}}
|
||||
{{ if .HasChildren }}
|
||||
<parent name="{{ .Name }}" type="drawer-menu-item {{$actived}}">
|
||||
{{ range .Children }}
|
||||
<li><a href="{{ .URL }}"> {{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
</parent>
|
||||
{{ else }}
|
||||
<!--<a class="a-block nav-link-item {{$actived}}" href="{{ .URL }}">-->
|
||||
<a class="a-block drawer-menu-item {{ $actived }}" href="{{ .URL }}">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if and (not (.Site.Params.disableToC) ) (.IsPage) }}
|
||||
<div class="toc">
|
||||
{{- partial "toc.html" . -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<transition name="fade">
|
||||
<div v-bind:class="{ 'single-column-drawer-mask': mounted }" v-if="isDrawerOpen" v-on:click="toggleDrawer"></div>
|
||||
</transition>
|
||||
<nav ref="navBar" class="navbar sticky-top navbar-light single-column-nav-container">
|
||||
<div ref="navBackground" class="nav-background"></div>
|
||||
<div class="container container-narrow nav-content">
|
||||
<button id="nav_dropdown_btn" class="nav-dropdown-toggle" type="button" v-on:click="toggleDrawer">
|
||||
<i class="material-icons">
|
||||
menu
|
||||
</i>
|
||||
</button>
|
||||
<a ref="navTitle" class="navbar-brand" href="{{.Site.BaseURL}}">
|
||||
{{.Site.Title}}
|
||||
</a>
|
||||
{{ if not .Site.Params.disableDarkMode }}
|
||||
<button type="button" class="nav-darkmode-toggle" v-on:click="toggleDarkMode">
|
||||
<i class="material-icons" v-if="isDarkMode">
|
||||
brightness_4
|
||||
</i>
|
||||
<i class="material-icons" v-else="isDarkMode">
|
||||
brightness_7
|
||||
</i>
|
||||
</button>
|
||||
{{ end }}
|
||||
</div>
|
||||
</nav>
|
||||
<div class="single-column-header-container" ref="pageHead"
|
||||
v-bind:style="{ transform: 'translateZ(0px) translateY('+.3*scrollY+'px)', opacity: 1-navOpacity }">
|
||||
<a href="{{.Site.BaseURL}}">
|
||||
<div class="single-column-header-title">{{.Site.Title}}</div>
|
||||
{{ with .Site.Params.subtitle }}
|
||||
<div class="single-column-header-subtitle">{{.}}</div>
|
||||
{{ end }}
|
||||
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
{{ if .Paginator }}
|
||||
{{ if gt .Paginator.TotalPages 1 }}
|
||||
<div class="pagination">
|
||||
{{ if .Paginator.HasPrev }}
|
||||
<a class="pagination-action" href="{{.Paginator.Prev.URL}}" style="opacity:1">
|
||||
{{ else }}
|
||||
<a class="pagination-action" style="opacity:0">
|
||||
{{ end }}
|
||||
<i class="material-icons pagination-action-icon">
|
||||
chevron_left
|
||||
</i>
|
||||
</a>
|
||||
|
||||
<div class="pagination-indicator">
|
||||
<span>{{.Paginator.PageNumber}}/{{.Paginator.TotalPages}}</span>
|
||||
</div>
|
||||
|
||||
{{ if .Paginator.HasNext }}
|
||||
<a class="pagination-action" href="{{.Paginator.Next.URL}}"
|
||||
style="opacity:1">
|
||||
{{ else }}
|
||||
<a class="pagination-action" style="opacity:0">
|
||||
{{ end }}
|
||||
<i class="material-icons pagination-action-icon">
|
||||
chevron_right
|
||||
</i>
|
||||
</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ end }}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<div class="post-item-meta">
|
||||
{{ i18n "format_date" .PublishDate }}
|
||||
 
|
||||
<!-- Reading Time Start -->
|
||||
{{ if .Site.Params.enableReadingTime }}
|
||||
<i class="material-icons" style="font-size:10px">schedule</i>
|
||||
{{ $readTime := mul (div (countwords .Content) 220.0) 60 }}
|
||||
|
||||
{{ $minutes := math.Floor (div $readTime 60) }}
|
||||
{{ $seconds := mod $readTime 60 }}
|
||||
|
||||
{{ if gt $minutes 0}}
|
||||
{{ $minutes }} {{ cond (eq $minutes 1) "minute" "min" }}
|
||||
{{ end }}
|
||||
{{ $seconds }} {{ cond (eq $seconds 1) "second" "s" }}
|
||||
{{ end }}
|
||||
<!-- Reading Time End -->
|
||||
 
|
||||
{{ if .Draft }}
|
||||
<span class="draft-label">{{ i18n "draft" }}</span>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
<div ref="sideContainer" class="side-container">
|
||||
{{ if eq .Title .Site.Title}}
|
||||
<a class="a-block nav-head active" href="{{.Site.BaseURL}}">
|
||||
{{ else }}
|
||||
<a class="a-block nav-head false" href="{{.Site.BaseURL}}">
|
||||
{{ end }}
|
||||
<div class="nav-title">
|
||||
{{.Site.Title}}
|
||||
</div>
|
||||
{{ with .Site.Params.subtitle }}
|
||||
<div class="nav-subtitle">
|
||||
{{.}}
|
||||
</div>
|
||||
{{ end }}
|
||||
</a>
|
||||
|
||||
<div class="nav-link-list">
|
||||
{{ $current := .Permalink | absLangURL }}
|
||||
{{ range .Site.Menus.main }}
|
||||
{{$actived := "false"}}
|
||||
<!-- A problem caused by slash: if you use "eq" directly, you will get a result of "/tags/" and "/tags" -->
|
||||
{{if hasPrefix $current (.URL|absLangURL)}}
|
||||
{{$actived = "active"}}
|
||||
{{end}}
|
||||
{{ if .HasChildren }}
|
||||
<parent name="{{ .Name }}" type="nav-link-item {{$actived}}">
|
||||
{{ range .Children }}
|
||||
<li><a href="{{ .URL }}"> {{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
</parent>
|
||||
{{ else }}
|
||||
<!--<a class="a-block nav-link-item {{$actived}}" href="{{ .URL }}">-->
|
||||
<a class="a-block nav-link-item {{ $actived }}" href="{{ .URL }}">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="nav-footer">
|
||||
{{partial "copyright.html" .}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
{{ $headers := findRE "<h[1-4].*?>(.|\n])+?</h[1-4]>" .Content }}
|
||||
<!-- at least one header to link to -->
|
||||
{{ if ge (len $headers) 1 }}
|
||||
<div class="toc-content">
|
||||
<!-- ignore empty links with + -->
|
||||
{{ $h1_n := len (findRE "(.|\n])+?" .Content) }}
|
||||
{{ $re := (cond (eq $h1_n 0) "<h[2-4]" "<h[1-4]") }}
|
||||
{{ $renum := (cond (eq $h1_n 0) "[2-4]" "[1-4]") }}
|
||||
<center>- {{ i18n "toc_title" }} -</center>
|
||||
{{ $scratch := newScratch }}
|
||||
{{ $scratch.Set "prev_heading" 1 }}
|
||||
<ul>
|
||||
{{ range $headers }}
|
||||
{{ $header := . }}
|
||||
{{ range first 1 (findRE $re $header 1) }}
|
||||
{{ range findRE $renum . 1 }}
|
||||
{{ $next_heading := (cond (eq $h1_n 0) (sub (int .) 1 ) (int . ) ) }}
|
||||
{{ $prev_heading := $scratch.Get "prev_heading"}}
|
||||
{{ if lt $next_heading $prev_heading }}
|
||||
{{ range seq (sub $prev_heading $next_heading) }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if gt $next_heading $prev_heading }}
|
||||
{{ range seq (sub $next_heading $prev_heading) }}
|
||||
<ul class="collapse" data-toggle="collapse">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $anchorId := (replaceRE ".* id=\"(.*?)\".*" "$1" $header ) }}
|
||||
<li>
|
||||
<a href="#{{ $anchorId }}" onclick="onNavClick(`#{{ $anchorId | safeJS}}-nav`)" id="{{ $anchorId }}-nav">
|
||||
{{ $header | plainify | htmlUnescape }}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{{ $scratch.Set "prev_heading" $next_heading }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<!--
|
||||
From "cupper-hugo-theme" by zwbetz-gh
|
||||
https://github.com/zwbetz-gh/cupper-hugo-theme/blob/master/layouts/shortcodes/figureCupper.html
|
||||
Under MIT License
|
||||
-->
|
||||
{{ $img := .Get "img" }}
|
||||
{{ $caption := .Get "caption" }}
|
||||
{{ $command := .Get "command" }}
|
||||
{{ $options := .Get "options" }}
|
||||
{{ $align := .Get "align" }}
|
||||
|
||||
{{ $original := .Page.Resources.GetMatch (printf "*%s*" $img) }}
|
||||
{{ $new := "" }}
|
||||
|
||||
{{ if eq $command "Fit" }}
|
||||
{{ $new = $original.Fit $options }}
|
||||
{{ else if eq $command "Fill" }}
|
||||
{{ $new = $original.Fill $options }}
|
||||
{{ else if eq $command "Resize" }}
|
||||
{{ $new = $original.Resize $options }}
|
||||
{{ else if eq $command "Original" }}
|
||||
{{ $new = $original }}
|
||||
{{ else }}
|
||||
{{ errorf "Invalid image processing command: Must be one of Fit, Fill, Resize, Original." }}
|
||||
{{ end }}
|
||||
|
||||
<figure align="{{$align}}" role="group" aria-describedby="caption-{{ $caption | md5 }}">
|
||||
<a href="{{ $original.Permalink }}" class="img-link">
|
||||
<img src="{{ $new.Permalink }}">
|
||||
</a>
|
||||
<figcaption id="caption-{{ $caption | md5 }}">
|
||||
{{ $caption | markdownify }}
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 947 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 1.5 MiB |
|
|
@ -1,28 +0,0 @@
|
|||
new SmoothScroll('a#globalBackToTop');
|
||||
|
||||
Vue.component('parent',{
|
||||
props:['name','type'],
|
||||
data: function () {
|
||||
return {
|
||||
isHidden: true
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<div class="a-block" :class="type" v-on:click="isHidden = !isHidden">
|
||||
{{ name }}
|
||||
<div class="nav-link-subitem" v-if="!isHidden">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
});
|
||||
|
||||
$().ready(function(){
|
||||
var elems = $("table");
|
||||
elems.each(function(idx){
|
||||
$(this).addClass('table-striped');
|
||||
$(this).addClass('table');
|
||||
$(this).addClass('table-responsive');
|
||||
$(this).addClass('table-hover');
|
||||
});
|
||||
});
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
|
||||
(function(w){
|
||||
"use strict";
|
||||
/* exported loadCSS */
|
||||
var loadCSS = function( href, before, media ){
|
||||
// Arguments explained:
|
||||
// `href` [REQUIRED] is the URL for your CSS file.
|
||||
// `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet <link> before
|
||||
// By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM. However, you might desire a more specific location in your document.
|
||||
// `media` [OPTIONAL] is the media type or query of the stylesheet. By default it will be 'all'
|
||||
var doc = w.document;
|
||||
var ss = doc.createElement( "link" );
|
||||
var ref;
|
||||
if( before ){
|
||||
ref = before;
|
||||
}
|
||||
else {
|
||||
var refs = ( doc.body || doc.getElementsByTagName( "head" )[ 0 ] ).childNodes;
|
||||
ref = refs[ refs.length - 1];
|
||||
}
|
||||
|
||||
var sheets = doc.styleSheets;
|
||||
ss.rel = "stylesheet";
|
||||
ss.href = href;
|
||||
// temporarily set media to something inapplicable to ensure it'll fetch without blocking render
|
||||
ss.media = "only x";
|
||||
|
||||
// wait until body is defined before injecting link. This ensures a non-blocking load in IE11.
|
||||
function ready( cb ){
|
||||
if( doc.body ){
|
||||
return cb();
|
||||
}
|
||||
setTimeout(function(){
|
||||
ready( cb );
|
||||
});
|
||||
}
|
||||
// Inject link
|
||||
// Note: the ternary preserves the existing behavior of "before" argument, but we could choose to change the argument to "after" in a later release and standardize on ref.nextSibling for all refs
|
||||
// Note: `insertBefore` is used instead of `appendChild`, for safety re: http://www.paulirish.com/2011/surefire-dom-element-insertion/
|
||||
ready( function(){
|
||||
ref.parentNode.insertBefore( ss, ( before ? ref : ref.nextSibling ) );
|
||||
});
|
||||
// A method (exposed on return object for external use) that mimics onload by polling document.styleSheets until it includes the new sheet.
|
||||
var onloadcssdefined = function( cb ){
|
||||
var resolvedHref = ss.href;
|
||||
var i = sheets.length;
|
||||
while( i-- ){
|
||||
if( sheets[ i ].href === resolvedHref ){
|
||||
return cb();
|
||||
}
|
||||
}
|
||||
setTimeout(function() {
|
||||
onloadcssdefined( cb );
|
||||
});
|
||||
};
|
||||
|
||||
function loadCB(){
|
||||
if( ss.addEventListener ){
|
||||
ss.removeEventListener( "load", loadCB );
|
||||
}
|
||||
ss.media = media || "all";
|
||||
}
|
||||
|
||||
// once loaded, set link's media back to `all` so that the stylesheet applies once it loads
|
||||
if( ss.addEventListener ){
|
||||
ss.addEventListener( "load", loadCB);
|
||||
}
|
||||
ss.onloadcssdefined = onloadcssdefined;
|
||||
onloadcssdefined( loadCB );
|
||||
return ss;
|
||||
};
|
||||
// commonjs
|
||||
if( typeof exports !== "undefined" ){
|
||||
exports.loadCSS = loadCSS;
|
||||
}
|
||||
else {
|
||||
w.loadCSS = loadCSS;
|
||||
}
|
||||
}( typeof global !== "undefined" ? global : this ));
|
||||
|
|
@ -1,224 +0,0 @@
|
|||
var spy = function () {
|
||||
var elems = $(":header");
|
||||
if (elems.length == 0) {
|
||||
return;
|
||||
}
|
||||
var currentTop = $(window).scrollTop();
|
||||
var currentBottom = $(window).scrollTop() + $(window).height();
|
||||
var pageBottom = $('#EOF').offset().top;
|
||||
|
||||
var meetUnread = false
|
||||
var currentIndex = elems.length - 1
|
||||
elems.each(function (idx) {
|
||||
var elemTop = $(this).offset().top;
|
||||
var id = $(this).attr('id');
|
||||
var navElem = $('#' + id + '-nav');
|
||||
if (currentTop + $(this).height() >= elemTop) {
|
||||
navElem.addClass('toc-active');
|
||||
} else {
|
||||
if (meetUnread == false) {
|
||||
meetUnread = true
|
||||
currentIndex = idx - 1
|
||||
}
|
||||
navElem.removeClass('toc-active');
|
||||
}
|
||||
})
|
||||
if (currentBottom >= pageBottom) {
|
||||
currentIndex = -1
|
||||
}
|
||||
//console.log(currentIndex);
|
||||
//Collapse them
|
||||
collapseOthers(currentIndex);
|
||||
}
|
||||
|
||||
var onNavClick = function (name) {
|
||||
var elems = $(":header");
|
||||
elems.each(function (idx) {
|
||||
var id = $(this).attr('id');
|
||||
if (name == '#' + id + '-nav'){
|
||||
collapseOthers(idx);
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var collapseOthers = function (currentIndex) {
|
||||
if (currentIndex == -1) {
|
||||
$(".collapse").each(function (idx) {
|
||||
$(this).collapse("hide");
|
||||
});
|
||||
return;
|
||||
}
|
||||
var elems = $(":header");
|
||||
//console.log(currentIndex);
|
||||
currentId = "#" + elems[currentIndex].id + "-nav";
|
||||
|
||||
$(currentId).parents(".collapse").each(function (idx) {
|
||||
$(this).collapse("show");
|
||||
});
|
||||
$(currentId).parent().next().filter(".collapse").collapse("show");
|
||||
$(".collapse").not($(currentId).parents()).not($(currentId).parent().next()).each(function (idx) {
|
||||
$(this).collapse("hide");
|
||||
});
|
||||
}
|
||||
$().ready(function () {
|
||||
spy();
|
||||
$(window).bind('scroll', debounce(spy, 250, { 'maxWait': 1000 }));
|
||||
});
|
||||
|
||||
|
||||
//From https://github.com/lodash/lodash/blob/master/debounce.js
|
||||
// and https://github.com/lodash/lodash/blob/master/isObject.js
|
||||
|
||||
function debounce(func, wait, options) {
|
||||
let lastArgs,
|
||||
lastThis,
|
||||
maxWait,
|
||||
result,
|
||||
timerId,
|
||||
lastCallTime
|
||||
|
||||
let lastInvokeTime = 0
|
||||
let leading = false
|
||||
let maxing = false
|
||||
let trailing = true
|
||||
|
||||
// Bypass `requestAnimationFrame` by explicitly setting `wait=0`.
|
||||
const useRAF = (!wait && wait !== 0 && typeof root.requestAnimationFrame === 'function')
|
||||
|
||||
if (typeof func !== 'function') {
|
||||
throw new TypeError('Expected a function')
|
||||
}
|
||||
function isObject(value) {
|
||||
const type = typeof value
|
||||
return value != null && (type === 'object' || type === 'function')
|
||||
}
|
||||
|
||||
wait = +wait || 0
|
||||
if (isObject(options)) {
|
||||
leading = !!options.leading
|
||||
maxing = 'maxWait' in options
|
||||
maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : maxWait
|
||||
trailing = 'trailing' in options ? !!options.trailing : trailing
|
||||
}
|
||||
|
||||
function invokeFunc(time) {
|
||||
const args = lastArgs
|
||||
const thisArg = lastThis
|
||||
|
||||
lastArgs = lastThis = undefined
|
||||
lastInvokeTime = time
|
||||
result = func.apply(thisArg, args)
|
||||
return result
|
||||
}
|
||||
|
||||
function startTimer(pendingFunc, wait) {
|
||||
if (useRAF) {
|
||||
root.cancelAnimationFrame(timerId)
|
||||
return root.requestAnimationFrame(pendingFunc)
|
||||
}
|
||||
return setTimeout(pendingFunc, wait)
|
||||
}
|
||||
|
||||
function cancelTimer(id) {
|
||||
if (useRAF) {
|
||||
return root.cancelAnimationFrame(id)
|
||||
}
|
||||
clearTimeout(id)
|
||||
}
|
||||
|
||||
function leadingEdge(time) {
|
||||
// Reset any `maxWait` timer.
|
||||
lastInvokeTime = time
|
||||
// Start the timer for the trailing edge.
|
||||
timerId = startTimer(timerExpired, wait)
|
||||
// Invoke the leading edge.
|
||||
return leading ? invokeFunc(time) : result
|
||||
}
|
||||
|
||||
function remainingWait(time) {
|
||||
const timeSinceLastCall = time - lastCallTime
|
||||
const timeSinceLastInvoke = time - lastInvokeTime
|
||||
const timeWaiting = wait - timeSinceLastCall
|
||||
|
||||
return maxing
|
||||
? Math.min(timeWaiting, maxWait - timeSinceLastInvoke)
|
||||
: timeWaiting
|
||||
}
|
||||
|
||||
function shouldInvoke(time) {
|
||||
const timeSinceLastCall = time - lastCallTime
|
||||
const timeSinceLastInvoke = time - lastInvokeTime
|
||||
|
||||
// Either this is the first call, activity has stopped and we're at the
|
||||
// trailing edge, the system time has gone backwards and we're treating
|
||||
// it as the trailing edge, or we've hit the `maxWait` limit.
|
||||
return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
|
||||
(timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait))
|
||||
}
|
||||
|
||||
function timerExpired() {
|
||||
const time = Date.now()
|
||||
if (shouldInvoke(time)) {
|
||||
return trailingEdge(time)
|
||||
}
|
||||
// Restart the timer.
|
||||
timerId = startTimer(timerExpired, remainingWait(time))
|
||||
}
|
||||
|
||||
function trailingEdge(time) {
|
||||
timerId = undefined
|
||||
|
||||
// Only invoke if we have `lastArgs` which means `func` has been
|
||||
// debounced at least once.
|
||||
if (trailing && lastArgs) {
|
||||
return invokeFunc(time)
|
||||
}
|
||||
lastArgs = lastThis = undefined
|
||||
return result
|
||||
}
|
||||
|
||||
function cancel() {
|
||||
if (timerId !== undefined) {
|
||||
cancelTimer(timerId)
|
||||
}
|
||||
lastInvokeTime = 0
|
||||
lastArgs = lastCallTime = lastThis = timerId = undefined
|
||||
}
|
||||
|
||||
function flush() {
|
||||
return timerId === undefined ? result : trailingEdge(Date.now())
|
||||
}
|
||||
|
||||
function pending() {
|
||||
return timerId !== undefined
|
||||
}
|
||||
|
||||
function debounced(...args) {
|
||||
const time = Date.now()
|
||||
const isInvoking = shouldInvoke(time)
|
||||
|
||||
lastArgs = args
|
||||
lastThis = this
|
||||
lastCallTime = time
|
||||
|
||||
if (isInvoking) {
|
||||
if (timerId === undefined) {
|
||||
return leadingEdge(lastCallTime)
|
||||
}
|
||||
if (maxing) {
|
||||
// Handle invocations in a tight loop.
|
||||
timerId = startTimer(timerExpired, wait)
|
||||
return invokeFunc(lastCallTime)
|
||||
}
|
||||
}
|
||||
if (timerId === undefined) {
|
||||
timerId = startTimer(timerExpired, wait)
|
||||
}
|
||||
return result
|
||||
}
|
||||
debounced.cancel = cancel
|
||||
debounced.flush = flush
|
||||
debounced.pending = pending
|
||||
return debounced
|
||||
}
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
var spy = function () {
|
||||
var elems = $(":header");
|
||||
if (elems.length == 0) {
|
||||
return;
|
||||
}
|
||||
var currentTop = $(window).scrollTop();
|
||||
var currentBottom = $(window).scrollTop() + $(window).height();
|
||||
var pageBottom = $('#EOF').offset().top;
|
||||
|
||||
var meetUnread = false
|
||||
var currentIndex = -1
|
||||
elems.each(function (idx) {
|
||||
var elemTop = $(this).offset().top;
|
||||
var id = $(this).attr('id');
|
||||
var navElem = $('#' + id + '-nav');
|
||||
if (currentTop + $(this).height() >= elemTop || currentBottom >= pageBottom) {
|
||||
navElem.addClass('toc-active');
|
||||
} else {
|
||||
if (meetUnread == false) {
|
||||
meetUnread = true
|
||||
currentIndex = idx - 1
|
||||
}
|
||||
navElem.removeClass('toc-active');
|
||||
}
|
||||
})
|
||||
}
|
||||
$().ready(function () {
|
||||
$(".collapse").each(function (idx) {
|
||||
$(this).collapse("show");
|
||||
});
|
||||
spy();
|
||||
$(window).bind('scroll', throttle(spy));
|
||||
});
|
||||
|
||||
function throttle(func, timeout = 250) {
|
||||
let last;
|
||||
let timer;
|
||||
|
||||
return function () {
|
||||
const context = this;
|
||||
const args = arguments;
|
||||
const now = +new Date();
|
||||
|
||||
if (last && now < last + timeout) {
|
||||
clearTimeout(timer)
|
||||
timer = setTimeout(function () {
|
||||
last = now
|
||||
func.apply(context, args)
|
||||
}, timeout)
|
||||
} else {
|
||||
last = now
|
||||
func.apply(context, args)
|
||||
}
|
||||
}
|
||||
}
|
||||
2
themes/diary/static/vendor/js/jquery.min.js
vendored
79
themes/diary/static/vendor/js/loadCSS.js
vendored
|
|
@ -1,79 +0,0 @@
|
|||
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
|
||||
(function(w){
|
||||
"use strict";
|
||||
/* exported loadCSS */
|
||||
var loadCSS = function( href, before, media ){
|
||||
// Arguments explained:
|
||||
// `href` [REQUIRED] is the URL for your CSS file.
|
||||
// `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet <link> before
|
||||
// By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM. However, you might desire a more specific location in your document.
|
||||
// `media` [OPTIONAL] is the media type or query of the stylesheet. By default it will be 'all'
|
||||
var doc = w.document;
|
||||
var ss = doc.createElement( "link" );
|
||||
var ref;
|
||||
if( before ){
|
||||
ref = before;
|
||||
}
|
||||
else {
|
||||
var refs = ( doc.body || doc.getElementsByTagName( "head" )[ 0 ] ).childNodes;
|
||||
ref = refs[ refs.length - 1];
|
||||
}
|
||||
|
||||
var sheets = doc.styleSheets;
|
||||
ss.rel = "stylesheet";
|
||||
ss.href = href;
|
||||
// temporarily set media to something inapplicable to ensure it'll fetch without blocking render
|
||||
ss.media = "only x";
|
||||
|
||||
// wait until body is defined before injecting link. This ensures a non-blocking load in IE11.
|
||||
function ready( cb ){
|
||||
if( doc.body ){
|
||||
return cb();
|
||||
}
|
||||
setTimeout(function(){
|
||||
ready( cb );
|
||||
});
|
||||
}
|
||||
// Inject link
|
||||
// Note: the ternary preserves the existing behavior of "before" argument, but we could choose to change the argument to "after" in a later release and standardize on ref.nextSibling for all refs
|
||||
// Note: `insertBefore` is used instead of `appendChild`, for safety re: http://www.paulirish.com/2011/surefire-dom-element-insertion/
|
||||
ready( function(){
|
||||
ref.parentNode.insertBefore( ss, ( before ? ref : ref.nextSibling ) );
|
||||
});
|
||||
// A method (exposed on return object for external use) that mimics onload by polling document.styleSheets until it includes the new sheet.
|
||||
var onloadcssdefined = function( cb ){
|
||||
var resolvedHref = ss.href;
|
||||
var i = sheets.length;
|
||||
while( i-- ){
|
||||
if( sheets[ i ].href === resolvedHref ){
|
||||
return cb();
|
||||
}
|
||||
}
|
||||
setTimeout(function() {
|
||||
onloadcssdefined( cb );
|
||||
});
|
||||
};
|
||||
|
||||
function loadCB(){
|
||||
if( ss.addEventListener ){
|
||||
ss.removeEventListener( "load", loadCB );
|
||||
}
|
||||
ss.media = media || "all";
|
||||
}
|
||||
|
||||
// once loaded, set link's media back to `all` so that the stylesheet applies once it loads
|
||||
if( ss.addEventListener ){
|
||||
ss.addEventListener( "load", loadCB);
|
||||
}
|
||||
ss.onloadcssdefined = onloadcssdefined;
|
||||
onloadcssdefined( loadCB );
|
||||
return ss;
|
||||
};
|
||||
// commonjs
|
||||
if( typeof exports !== "undefined" ){
|
||||
exports.loadCSS = loadCSS;
|
||||
}
|
||||
else {
|
||||
w.loadCSS = loadCSS;
|
||||
}
|
||||
}( typeof global !== "undefined" ? global : this ));
|
||||
2
themes/diary/static/vendor/js/md5.min.js
vendored
|
|
@ -1,2 +0,0 @@
|
|||
!function(n){"use strict";function d(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(n,t,r,e,o,u){return d(function(n,t){return n<<t|n>>>32-t}(d(d(t,n),d(e,u)),o),r)}function l(n,t,r,e,o,u,c){return f(t&r|~t&e,n,t,o,u,c)}function g(n,t,r,e,o,u,c){return f(t&e|r&~e,n,t,o,u,c)}function v(n,t,r,e,o,u,c){return f(t^r^e,n,t,o,u,c)}function m(n,t,r,e,o,u,c){return f(r^(t|~e),n,t,o,u,c)}function i(n,t){var r,e,o,u,c;n[t>>5]|=128<<t%32,n[14+(t+64>>>9<<4)]=t;var f=1732584193,i=-271733879,a=-1732584194,h=271733878;for(r=0;r<n.length;r+=16)i=m(i=m(i=m(i=m(i=v(i=v(i=v(i=v(i=g(i=g(i=g(i=g(i=l(i=l(i=l(i=l(o=i,a=l(u=a,h=l(c=h,f=l(e=f,i,a,h,n[r],7,-680876936),i,a,n[r+1],12,-389564586),f,i,n[r+2],17,606105819),h,f,n[r+3],22,-1044525330),a=l(a,h=l(h,f=l(f,i,a,h,n[r+4],7,-176418897),i,a,n[r+5],12,1200080426),f,i,n[r+6],17,-1473231341),h,f,n[r+7],22,-45705983),a=l(a,h=l(h,f=l(f,i,a,h,n[r+8],7,1770035416),i,a,n[r+9],12,-1958414417),f,i,n[r+10],17,-42063),h,f,n[r+11],22,-1990404162),a=l(a,h=l(h,f=l(f,i,a,h,n[r+12],7,1804603682),i,a,n[r+13],12,-40341101),f,i,n[r+14],17,-1502002290),h,f,n[r+15],22,1236535329),a=g(a,h=g(h,f=g(f,i,a,h,n[r+1],5,-165796510),i,a,n[r+6],9,-1069501632),f,i,n[r+11],14,643717713),h,f,n[r],20,-373897302),a=g(a,h=g(h,f=g(f,i,a,h,n[r+5],5,-701558691),i,a,n[r+10],9,38016083),f,i,n[r+15],14,-660478335),h,f,n[r+4],20,-405537848),a=g(a,h=g(h,f=g(f,i,a,h,n[r+9],5,568446438),i,a,n[r+14],9,-1019803690),f,i,n[r+3],14,-187363961),h,f,n[r+8],20,1163531501),a=g(a,h=g(h,f=g(f,i,a,h,n[r+13],5,-1444681467),i,a,n[r+2],9,-51403784),f,i,n[r+7],14,1735328473),h,f,n[r+12],20,-1926607734),a=v(a,h=v(h,f=v(f,i,a,h,n[r+5],4,-378558),i,a,n[r+8],11,-2022574463),f,i,n[r+11],16,1839030562),h,f,n[r+14],23,-35309556),a=v(a,h=v(h,f=v(f,i,a,h,n[r+1],4,-1530992060),i,a,n[r+4],11,1272893353),f,i,n[r+7],16,-155497632),h,f,n[r+10],23,-1094730640),a=v(a,h=v(h,f=v(f,i,a,h,n[r+13],4,681279174),i,a,n[r],11,-358537222),f,i,n[r+3],16,-722521979),h,f,n[r+6],23,76029189),a=v(a,h=v(h,f=v(f,i,a,h,n[r+9],4,-640364487),i,a,n[r+12],11,-421815835),f,i,n[r+15],16,530742520),h,f,n[r+2],23,-995338651),a=m(a,h=m(h,f=m(f,i,a,h,n[r],6,-198630844),i,a,n[r+7],10,1126891415),f,i,n[r+14],15,-1416354905),h,f,n[r+5],21,-57434055),a=m(a,h=m(h,f=m(f,i,a,h,n[r+12],6,1700485571),i,a,n[r+3],10,-1894986606),f,i,n[r+10],15,-1051523),h,f,n[r+1],21,-2054922799),a=m(a,h=m(h,f=m(f,i,a,h,n[r+8],6,1873313359),i,a,n[r+15],10,-30611744),f,i,n[r+6],15,-1560198380),h,f,n[r+13],21,1309151649),a=m(a,h=m(h,f=m(f,i,a,h,n[r+4],6,-145523070),i,a,n[r+11],10,-1120210379),f,i,n[r+2],15,718787259),h,f,n[r+9],21,-343485551),f=d(f,e),i=d(i,o),a=d(a,u),h=d(h,c);return[f,i,a,h]}function a(n){var t,r="",e=32*n.length;for(t=0;t<e;t+=8)r+=String.fromCharCode(n[t>>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;var e=8*n.length;for(t=0;t<e;t+=8)r[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return r}function e(n){var t,r,e="0123456789abcdef",o="";for(r=0;r<n.length;r+=1)t=n.charCodeAt(r),o+=e.charAt(t>>>4&15)+e.charAt(15&t);return o}function r(n){return unescape(encodeURIComponent(n))}function o(n){return function(n){return a(i(h(n),8*n.length))}(r(n))}function u(n,t){return function(n,t){var r,e,o=h(n),u=[],c=[];for(u[15]=c[15]=void 0,16<o.length&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}(r(n),r(t))}function t(n,t,r){return t?r?u(t,n):function(n,t){return e(u(n,t))}(t,n):r?o(n):function(n){return e(o(n))}(n)}"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:n.md5=t}(this);
|
||||
//# sourceMappingURL=md5.min.js.map
|
||||
5
themes/diary/static/vendor/js/popper.min.js
vendored
6
themes/diary/static/vendor/js/vue.min.js
vendored
|
|
@ -1,19 +0,0 @@
|
|||
name = "Diary"
|
||||
license = "MIT"
|
||||
licenselink = "https://github.com/amazingrise/hugo-theme-diary/blob/master/LICENSE"
|
||||
description = "Moments piled up. A simple, elegant blog theme."
|
||||
homepage = "https://amazingrise.net/"
|
||||
tags = ["blog"]
|
||||
features = ["mobile","elegant"]
|
||||
min_version = "0.59.0"
|
||||
|
||||
[author]
|
||||
name = "amazingrise"
|
||||
homepage = "https://amazingrise.net/"
|
||||
|
||||
|
||||
# If porting an existing theme
|
||||
[original]
|
||||
name = "SumiMakito"
|
||||
homepage = "https://mak1t0.cc"
|
||||
repo = "https://github.com/SumiMakito/hexo-theme-Journal/"
|
||||