scrapbox-parser.min.js
bundle時の設定
babelの設定を削除
output.libraryTarget: commonjs
tsconfig.umd.jsonのtargetをESNextにした
使うときは、ES6のimport構文を使う
code:sample.js
import {ScrapboxParser} from '/api/code/customize/scrapbox-parser.min.js/parser.js';
// 開いているページを解析して結果をconsoleに表示する
scrapbox.PageMenu.addMenu({
title: 'Parser',
image: '/assets/img/logo.png',
onClick: () => {
console.log(start parsing /${scrapbox.Project.name}/${scrapbox.Page.title}...);
console.log(ScrapboxParser.parse(
scrapbox.Page.lines.map(line => line.text).join('\n')));
}
});
UserScript.icon
code:parser.js
export const ScrapboxParser=(()=>{"use strict";var t={322:(t,e,s)=>{s.r(e),s.d(e,{getTitle:()=>W,parse:()=>T});const n=(t,{parseOnNested:e,parseOnQuoted:s,patterns:n})=>(r,o,p)=>{var a,i,l;if(!e&&o.nested)return null!==(a=null==p?void 0:p())&&void 0!==a?a:[];if(!s&&o.quoted)return null!==(i=null==p?void 0:p())&&void 0!==i?i:[];for(const e of n){const s=e.exec(r);if(null===s)continue;const n=r.substring(0,s.index),p=r.substring(s.index+s0.length),a=t(s0,o);return[...Q(n,o),...Array.isArray(a)?a:a,...Q(p,o)]}return null!==(l=null==p?void 0:p())&&void 0!==l?l:[]},r=n(((t,e)=>({type:"quote",nodes:Q(t.substring(1),{...e,quoted:!0})})),{parseOnNested:!1,parseOnQuoted:!1,patterns:/^>.*$/}),o=n((t=>({type:"helpfeel",text:t.substring(2)})),{parseOnNested:!1,parseOnQuoted:!1,patterns:/^\? .+$/}),p=n((t=>{const e=t.substring(2,t.length-2);return{type:"strongImage",src:/^https?:\/\/(0-9a-z-\.)?gyazo\.com\/0-9a-f{32}$/.test(e)?e+"/thumb/1000":e}}),{parseOnNested:!1,parseOnQuoted:!0,patterns:[/\[\[https?:\/\/^\s\]+\.(?:png|jpe?g|gif|svg)\]\]/i,/\[\[https?:\/\/(?:0-9a-z-+\.)?gyazo\.com\/0-9a-f{32}\]\]/]});function a(t){return e=>{switch(t){case"icon":e=e.substring(1,e.length-1);break;case"strongIcon":e=e.substring(2,e.length-2)}const s=e.lastIndexOf(".icon"),n=e.substring(0,s),r=n.startsWith("/")?"root":"relative",o=e.substring(s+5,e.length),p=o.startsWith("*")?parseInt(o.substring(1),10):1;return new Array(p).fill({}).map((()=>({path:n,pathType:r,type:t})))}}const i=n(a("icon"),{parseOnNested:!1,parseOnQuoted:!0,patterns:[/\^[\*\.icon(?:\*1-9\d*)?\]/]}),l=n(a("strongIcon"),{parseOnNested:!1,parseOnQuoted:!0,patterns:[/\[\^[\*\.icon(?:\*\d+)?\]\]/]}),d=n(((t,e)=>({type:"strong",nodes:Q(t.substring(2,t.length-2),{...e,nested:!0})})),{parseOnNested:!1,parseOnQuoted:!0,patterns:[/\[\[.+?\]*\]\]/]}),u=n((t=>((t=t.substring(3,t.length-1)).endsWith(" ")&&(t=t.substring(0,t.length-1)),{type:"formula",formula:t})),{parseOnNested:!1,parseOnQuoted:!0,patterns:[/\\$ .+? \/,/\[\$ ^\]+\]/]}),c=n(((t,e)=>{const s=t.indexOf(" "),n=t.substring(1,s),r=t.substring(s+1,t.length-1),o=new Set(n);if(o.has("*")){const t=n.split("*").length-1;o.delete("*"),o.add("*-"+Math.min(t,10))}return{type:"decoration",decos:Array.from(o),nodes:Q(r,{...e,nested:!0})}}),{parseOnNested:!1,parseOnQuoted:!0,patterns:[/\!"#%&'()*+,-./{|}<>_~]+ (?:\[[^\+\]|^\])+\]/]}),g=n((t=>({type:"code",text:t.substring(1,t.length-1)})),{parseOnNested:!1,parseOnQuoted:!0,patterns:[/.*?/]}),h=n((t=>({type:"commandLine",symbol:t0,text:t.substring(2)})),{parseOnNested:!1,parseOnQuoted:!1,patterns:[/^$% .+$/]}),m=n((t=>({type:"blank",text:t.substring(1,t.length-1)})),{parseOnNested:!1,parseOnQuoted:!0,patterns:[/\\s+\/]}),y=n((t=>{const e=t.search(/\s/),s=-1!==e?t.substring(1,e):t.substring(1,t.length-1),n=-1!==e?t.substring(e,t.length-1).trimLeft():"",r,o=/^https?:\/\/^\s\]+\.(png|jpe?g|gif|svg)(\?^\\s]+)?$/i.test(p=n)||(t=>/^https?:\/\/(0-9a-z-\.)?gyazo\.com\/0-9a-f{32}(\/raw)?$/.test(t))(p)?n,s:s,n;var p;return{type:"image",src:/^https?:\/\/(0-9a-z-\.)?gyazo\.com\/0-9a-f{32}$/.test(r)?r+"/thumb/1000":r,link:o}}),{parseOnNested:!0,parseOnQuoted:!0,patterns:[/\[https?:\/\/^\s\]+\.(?:png|jpe?g|gif|svg)(?:\?^\\s]+)?(?:\s+https?:\/\/^\s\]+)?\]/i,/\[https?:\/\/^\s\]+\s+https?:\/\/^\s\]+\.(?:png|jpe?g|gif|svg)(?:\?^\\s]+)?\]/i,/\[https?:\/\/(?:0-9a-z-+\.)?gyazo\.com\/0-9a-f{32}(?:\/raw)?(?:\s+https?:\/\/^\s\]+)?\]/,/\[https?:\/\/^\s\]+\s+https?:\/\/(?:0-9a-z-+\.)?gyazo\.com\/0-9a-f{32}(?:\/raw)?\]/]}),b=n((t=>{t.startsWith("")&&t.endsWith("")&&(t=t.substring(1,t.length-1));const e=/^https?:\/\/^\s\]/.test(t),s=(e?/^https?:\/\/^\s\]+/:/https?:\/\/^\s\]+$/).exec(t);if(null===s)return[];const n=e?t.substring(s0.length):t.substring(0,s.index-1);return{type:"link",pathType:"absolute",href:s0,content:n.trim()}}),{parseOnNested:!0,parseOnQuoted:!0,patterns:[/\[https?:\/\/^\s\]+(?:\s+^\]*^\s)?\]/,/\^\*^\s\s+https?:\/\/^\s\]+\]/,/(?<=^| )https?:\/\/^\s\]+/]}),f=/\[(^\]*^\s)\s+(NS\d+(?:\.\d+)?,EW\d+(?:\.\d+)?(?:,Z\d+)?)\]/,O=/\[(NS\d+(?:\.\d+)?,EW\d+(?:\.\d+)?(?:,Z\d+)?)(?:\s+(^\]*^\s))?\]/,x=n((t=>{var e;const s=null!==(e=t.match(f))&&void 0!==e?e:t.match(O);if(null===s)return[];const n=t.startsWith("[N")||t.startsWith("[S"),,r,o=""=n?s:[s0,s2,s1],{latitude:p,longitude:a,zoom:i}=(t=>{conste,s,n=t.split(",");return{latitude:parseFloat(e.replace(/^N/,"").replace(/^S/,"-")),longitude:parseFloat(s.replace(/^E/,"").replace(/^W/,"-")),zoom:/^Z\d+$/.test(n)?parseInt(n.replace(/^Z/,""),10):14}})(r);return{type:"googleMap",latitude:p,longitude:a,zoom:i,place:o,url:""!==o?https://www.google.com/maps/place/${encodeURIComponent(o)}/@${p},${a},${i}z:https://www.google.com/maps/@${p},${a},${i}z}}),{parseOnNested:!1,parseOnQuoted:!0,patterns:f,O}),v=n((t=>{const e=t.substring(1,t.length-1);return{type:"link",pathType:e.startsWith("/")?"root":"relative",href:e,content:""}}),{parseOnNested:!0,parseOnQuoted:!0,patterns:[/\[\/?[^\]+\]/]}),N=n((t=>({type:"hashTag",href:t.substring(1)})),{parseOnNested:!1,parseOnQuoted:!0,patterns:/(?<=^| )#\S+/}),$=n((t=>({type:"plain",text:t})),{parseOnNested:!0,parseOnQuoted:!0,patterns:/^()(.*)()$/}),Q=((...t)=>(e="",s={nested:!1,quoted:!1})=>t.reduceRight(((t,n)=>()=>n(e,s,t)),(()=>$(e,s)))())(((t,e,s)=>{var n;return""===t?[]:null!==(n=null==s?void 0:s())&&void 0!==n?n:[]}),r,o,g,h,u,m,p,l,d,c,y,b,i,x,v,N),z=t=>"title"===t.type?{type:"title",text:t.text}:(t=>"codeBlock"===t.type)(t)?(t=>{const{components:e}=t,s,...n=e,{indent:r,text:o}=s,p=o.replace(/^\s*code:/,"");return{indent:r,type:"codeBlock",fileName:p,content:n.map((t=>t.text.substring(r+1))).join("\n")}})(t):"table"===t.type?(t=>{const{components:e}=t,s,...n=e,{indent:r,text:o}=s,p=o.replace(/^\s*table:/,"");return{indent:r,type:"table",fileName:p,cells:n.map((t=>t.text.substring(r+1))).map((t=>t.split("\t").map((t=>Q(t,{nested:!0,quoted:!1})))))}})(t):(t=>{const{indent:e,text:s}=t.component;return{indent:e,type:"line",nodes:Q(s.substring(e))}})(t),w=t=>{var e,s;return{indent:null!==(s=null===(e=/^\s+/.exec(t))||void 0===e?void 0:e0.length)&&void 0!==s?s:0,text:t}},S=(t,{hasTitle:e})=>{if(e){conste,...s=t;return{type:"title",text:e.text},...S(s,{hasTitle:!1})}return t.reduce(((t,e)=>{if(t.length>0){const s=tt.length-1;if(("codeBlock"===s.type||"table"===s.type)&&e.indent>s.components0.indent)return s.components.push(e),t}const s=/^\s*code:(.+)$/.test(e.text),n=/^\s*table:(.+)$/.test(e.text);return t.push(s||n?{type:s?"codeBlock":"table",components:e}:{type:"line",component:e}),t}),[])},T=(t,{hasTitle:e=!0}={})=>{const s=t.split("\n").map(w);return S(s,{hasTitle:e}).map(z)},W=t=>{const e=/^\s*\S.*\s*$/m.exec(t);return null!==e?e0.trim():"Untitled"}}},e={};function s(n){if(en)return en.exports;var r=en={exports:{}};return tn(r,r.exports,s),r.exports}return s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:en})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s(322)})();