Nim: Nikolaのtags-categories出力を修正するスクリプト例
nikolaの出力で、 articles.html には
各年の記事数が出力されますが、
tags-categoriesには記事数がでません。
2023年 (100)
の100みたいな感じ
nikolaのプラグインを改造したら修正できるかもしれませんが、
ファイルの数を数えてちょっと修正するだけのスクリプトとして組んでみます。
code::
proc parse_articles(dname, key: string): int = let dname = os.joinPath(dname, key) let rex_item = re("^<time class=\"listdate") result = 0 for line in lines(dname & "/index.html"): if re.find(line, rex_item) < 0: continue result += 1 return result proc main3(fname, dname: string): int = ##[summarize tags or categories ]## let rex_item = re("<a class=\"reference.* href=\"[-/A-Za-z0-9]+\">" & "([-A-Za-z0-9]+)</a>") var fs = newStringStream("") for line in lines(fname): var mo: array[1, string] if re.find(line, rex_item, mo) < 0: fs.write(line & "\n"); continue let key = mo[0].strip() let n = parse_articles(dname, key.toLower()) let l = line.replace(">" & key & "</a>", ">" & key & "(" & $n & ")</a>") fs.write(l & "\n") let fo = if f_ovr: open(fname, fmWrite) else: stdout fs.setPosition(0) for line in lines(fs): fo.write(line & "\n") fs.close() fo.close() return 0
修正対象のmarkup::
<ul class="postlist"> <li><a class="reference listtitle" href="3dprint/">3Dprint(3)</a></li> <li><a class="reference listtitle" href="account/">account</a></li> <li><a class="reference listtitle" href="android/">android</a></li> <li><a class="reference listtitle" href="arcade/">arcade</a></li> <li><a class="reference listtitle" href="armbian/">armbian</a></li> <li><a class="reference listtitle" href="az/">AZ</a></li> <li><a class="reference listtitle" href="bb10/">BB10</a></li> </ul>
nikolaで記事をbuildするときに走るようにMakefileに記述して使います
tools/numbers: tools/numbers.nim nim c -o:$@ $< numbers: tools/numbers $< output/categories/index.html build: $(nikola) build make numbers
コメント
Comments powered by Disqus