Skip to content

Instantly share code, notes, and snippets.

@hail2u
hail2u / index.js
Last active Jul 12, 2020
Hail2uの雑記記事をソースにランダムなアルファベットや数字がちょくちょく混ざる日本語のテキスト・データを作るスクリプト
View index.js
// node index.js --count=5 --format=html --type=paragraph
// --count: 1-32 (default; 5)
// --format: html, txt (default)
// --type: list, paragraph (default)
import fs from "fs";
import minimist from "minimist";
const select = (data) => data[Math.floor(Math.random() * data.length)];
View test-list-rendering.md
  • foo
    • bar
      • baz
        • qux
          • quux
            • quuz
              • corge
                • grault
                  • garply
                    • waldo
View split-promise-all.js
const to8Chunks = (previous, current, index) => {
const remainder = index % 8;
if (!previous[remainder]) {
previous.push([]);
}
previous[remainder].push(current);
return previous;
};
@hail2u
hail2u / inline-css.js
Last active May 8, 2020
HTMLファイルを渡すと、参照しているCSSファイルを読み、必要なルールだけインライン化するやつ
View inline-css.js
// $ node inline-css.js <path-to-html-file>
import fs from "fs/promises";
import jsdom from "jsdom";
import postcss from "postcss";
const { JSDOM } = jsdom;
const hasNode = (document, selector) => {
if (selector.includes(":")) {
@hail2u
hail2u / list-unused-custom-properties.js
Created Aug 29, 2019
List unused custom properties
View list-unused-custom-properties.js
// list unused custom properties
// $ node list-unused-custom-properties.js <FILENAME>
const fs = require("fs");
const postcss = require("postcss");
const css = postcss.parse(fs.readFileSync(process.argv[2], "utf8"));
const customProperties = {};
css.walkDecls(decl => {
if (decl.prop.startsWith("--")) {
@hail2u
hail2u / data.json
Last active Aug 27, 2019
mustache.js v3.0.2 and partial indentation
View postcss-wrap-with-support.js
const postcss = require("postcss");
module.exports = postcss.plugin("wrap-with-supports", () => css => {
const supports = postcss.parse("@supports(top:0){}");
css.each(n => {
supports.first.append(n);
});
css.append(supports);
});
View heading-break.js
/*!
* heading-break.js
* LICENSE: http://hail2u.mit-license.org/2018
*/
const addWordJoiner = (added, value, index) => {
if (index > 3) {
return `${value}${added}`;
}
View sectionning.md

見出しとテーマの区切りから自動セクショニング

ついにsectionタグを書くのが面倒になってきたので、自動でどうにかしようという試み。

  1. 現在のレベルが1で、見出しレベルも1
  2. 現在のレベルが1より上で、現在のレベルと見出しレベルが同じ
  3. 現在のレベルが1より上で、見出しレベルが現在のレベルより小さい
  4. 現在のレベルより見出しレベルが大きい

パターン1では見出しだけ出力する。パターン4ではsection開始タグだけを、パターン2ではsection終了タグと開始タグを、パターン3ではsection終了タグのみを、追加して出力すればよい。

View pre.md
indent
fence without language
<p>fence with language</p>
You can’t perform that action at this time.