動機
已經有一年沒有動過這邊了,想來翻新一下。 但是想到過去與nodejs和hexo對抗的經驗,另外build一個site真的很久(超過10秒),所以決定換到hugo來
同時把架構簡化一下,之前category太複雜了
第一次嘗試: Stack
當下看theme覺得是最潮的,但是配置不好用(複雜),雖然後面有找到template直接改,但還是不懂怎麼加新的頁面,同時build site還是要花到好幾秒,我就放棄了
Now: PaperMod
配置簡單很多,但還是有一點坑
用module吧
主要是不想上submodule XD
加上
module:
imports:
path: github.com/adityatelange/hugo-PaperMod
之後拉mod
archive出現404
要自己生對應page的md
---
title: "Archive"
layout: "archives"
url: "/archives/"
summary: archives
---
自動把md改成page bundle
改成page bundle只要拿原本md的檔名改成folder name,之後mv md到folder/index.md就好
之前寫的leetcode要換category
之前寫的header大概長這樣
title: leetcode-61 - Rotate List
tags:
- Two Pointers
- Linked List
categories:
- [Algorithm, Leetcode, seanprashad]
date: 2021-08-05 22:58:21
categories太複雜了,想把它放到tags去,變成
title: leetcode-61 - Rotate List
tags:
- Two Pointers
- Linked List
- seanprashad
categories:
- Leetcode
date: 2021-08-05 22:58:21
找了一輪沒有方便的md parser幫我做事,只好自己寫了 line by line處理的話就是就可以當成finite state machine來處理了
import re, sys
def trans(f,header, seenTop, cate):
s = f.readline().strip()
if s == '---':
if seenTop:
return
else:
trans(f,header, True, None)
elif not s:
trans(f,header, seenTop, cate)
elif s[-1] == ':': # tags: , categories:
header[s[:-1]] = []
trans(f,header, seenTop, s[:-1])
elif s[0] == ' ' or s[0] == '-':
if ', Leetcode,' in s:
pattern = r'\[.*,\s*([^]]*)\]'
else:
pattern = r'-\s*(.*)'
header[cate].append(re.search(pattern, s).group(1))
trans(f,header, seenTop, cate)
else:
ss = s.split(": ")
header[ss[0]] = ss[1]
trans(f,header, seenTop, None)
def mkHeader(h):
title = f'title: {h["title"]}'
date = f'date: {h["date"]}'
tags = '\n'.join(["tags:"] + list(map(lambda x: " - "+x, h["tags"]+h["categories"])))
cate = f'categories:\n - Leetcode'
return f'---\n{title}\n{date}\n{cate}\n{tags}\n---'
with open(sys.argv[1]) as f:
h={}
trans(f, h, False, None)
print(mkHeader(h))
之後就可以把新生出來的header用bash接到原本的檔案去了~~
等等,為什麼不在python直接append就好?
因為不知道為什麼python吐出來的東西會動到text encoding,會出現類似U+00a0
之類的東西
所以只能用bash自己append
for p in $(ls *.md); do
name=$(echo $p | cut -d'.' -f1)
mkdir $name
if [[ $name == leetcode* ]]; then
python3 hi.py $p >> $p.tmp
cat $p | awk '/^---$/ {if (!p) p=1; else p=0; next} !p' >> $p.tmp
rm $p
mv $p.tmp $p
fi
mv $p $name/index.md
done