scrapbox-char-accessor-2
文字情報を取り出しやすくするScrapbox拡張API
scrapbox-char-accessorの次のver.
変更点
date-fnsのような関数型指向のinterfaceに変える
即時objectは使わない
独自のobjectも使わないか、使っても内部に隠蔽する
dependency
scrapbox-line-accessor-2
code:script.js
import {getIndex as getLineNo} from '../scrapbox-line-accessor-2/script.js';
export function getIndex(value) {
switch (typeof value) {
case 'number':
return value;
case 'object':
return parseInt(getDOM(value).className.match(/c-(\d)/)1);
default:
throw Error('Invalid argument');
}
}
export function getDOM(value) {
switch (typeof value) {
case 'object':
const dom = value.matches?.('spanclass^="c-"') ? value :
// 子要素をたどって、一番先頭の文字のDOMを使う
value.querySelector?.('spanclass^="c-"');
if (!dom) throw Error ('No char DOM found or invalid DOM object');
return dom;
default:
throw Error('Invalid argument');
}
}
export function getText(value) {
switch (typeof value) {
case 'object':
return scrapbox.Page.linesgetLineNo(value).textgetIndex(value);
default:
throw Error('Invalid argument');
}
}
export function isHead(value) {
return getIndex(value) === 0;
}