const pluginTailwind = require('eleventy-plugin-tailwindcss'); const { url } = require('./src/_data/site'); // ocoge start const md = require('markdown-it')({ html: true }); // const EleventyFetch = require("@11ty/eleventy-fetch"); const metascraper = require('metascraper')([ require('metascraper-description')(), require('metascraper-image')(), require('metascraper-logo')(), require('metascraper-logo-favicon')(), require('metascraper-publisher')(), require('metascraper-title')(), require('metascraper-url')() ]); const got = require('got'); // ocoge end module.exports = (config) => { config.addPlugin(pluginTailwind, { src: 'src/assets/css/*' }); config.setDataDeepMerge(true); config.addPassthroughCopy('src/assets/img/**/*'); config.addPassthroughCopy({ 'src/posts/img/**/*': 'assets/img/' }); config.addWatchTarget("src/assets/js/"); config.addLayoutAlias('default', 'layouts/default.njk'); config.addLayoutAlias('post', 'layouts/post.njk'); config.addFilter('readableDate', require('./lib/filters/readableDate')); config.addFilter('minifyJs', require('./lib/filters/minifyJs')); config.addTransform('minifyHtml', require('./lib/transforms/minifyHtml')); config.addCollection('posts', require('./lib/collections/posts')); config.addCollection('tagList', require('./lib/collections/tagList')); config.addCollection('pagedPosts', require('./lib/collections/pagedPosts')); config.addCollection('pagedPostsByTag', require('./lib/collections/pagedPostsByTag')); // ocoge start config.addPassthroughCopy({ 'src/assets/oc-css/**/*': 'assets/css/' }); config.addPassthroughCopy('src/assets/floatbox/**/*'); // Shortcodes // 注釈 var ann = 0; config.addShortcode('annotate', conf => { if (conf) ann = 1; else ann++; let n = String(ann); return `${n}`; }); var sm = 0; config.addPairedShortcode('small', (content, conf) => { if (conf) sm = 1; else sm++; content = md.renderInline(content); return `${sm}. ${content}`; }); // キャプション付きセンタリング画像 config.addPairedShortcode('centerimg', (content, img) => { content = md.renderInline(content); return `
${content}
`; }); // インライン画像 config.addShortcode('inlineimg', conf => { return ``; }); // 単純なボックス config.addPairedShortcode('simplebox', (content, cls) => { content = md.renderInline(content); return `

${content}

`; }); // 現在の年(footerで使用) config.addShortcode("year", () => `${new Date().getFullYear()}`); // Youtube 埋め込み config.addPairedShortcode("youtube", (content, conf) => { content = md.renderInline(content); return `
${content}
`; }); // 強調表示(インライン) config.addPairedShortcode("strong", (content, conf) => { content = md.renderInline(content); return `${content}`; }); // IconBox config.addPairedShortcode("iconbox", (content, conf) => { content = md.renderInline(content); return `

${content}

`; }); // Blog Card config.addAsyncShortcode("blogcard", async (conf) => { try { var { body: html, url } = await got(conf.link); } catch (error) { console.error('MyTryCatchError: ' + error); return '

404

'; } const metadata = await metascraper({ html, url }); // uri に "localhost" を使えるようにする:ポート80 でローカルwebサーバを立てておく // なんか勝手に localhost が ocoge.club に書き換わるのでそちらも対策 if (metadata.url) { metadata.url = metadata.url.replace('http://localhost', ''); metadata.url = metadata.url.replace('https://ocoge.club', ''); } if (metadata.image) { metadata.image = metadata.image.replace('http://localhost', ''); metadata.image = metadata.image.replace('https://ocoge.club', ''); } if (metadata.logo) { metadata.logo = metadata.logo.replace('http://localhost', ''); metadata.logo = metadata.logo.replace('https://ocoge.club', ''); } return `

${metadata.title}

${metadata.image ? `` : ``}${metadata.description ? `

${metadata.description}

` : ""}
${metadata.logo ? `` : ""}${metadata.publisher ? `${metadata.publisher}` : ""}
`; // const metadata = await EleventyFetch(`https://api.microlink.io/?url=${conf.link}`, { // duration: "1w", // type: "json", // }); // return `
//

${metadata.data.title}

// ${metadata.data.image ? `` : ``} // ${metadata.data.description ? `

${metadata.data.description}

` : ""} // // ${metadata.data.logo ? `` : ""} // ${metadata.data.publisher ? `${metadata.data.publisher}` : ""} //
`; }); // FloatBox config.addPairedShortcode("floatbox", (content, conf) => { content = md.renderInline(content); w = conf.width ? conf.width : 'auto' return `
${content}
`; }); // 別窓リンク config.addPairedShortcode("link_new", (content, conf) => { content = md.renderInline(content); return `${content} ` }); // マーカー config.addPairedShortcode("span", (content, clss) => { content = md.renderInline(content); return `${content}`; }); // レッスン(アコーディオン) config.addPairedShortcode("lesson", (content, conf) => { content = md.renderInline(content); return `
レッスン:${conf.summary}
${content}
`; }); // ブロックプログラム(アコーディオン) config.addPairedShortcode("blockprogram", (content, conf) => { content = md.renderInline(content); return `
『オコゲ』ブロックプログラム:${conf.summary}
${content}
`; }); // 吹き出し // 話者アイコン(左) config.addShortcode("talkicon_l", function (conf) { return `

${conf.name ? conf.name : ''}

`; }); //吹き出し(左) config.addPairedShortcode("says_l", function (content) { content = md.renderInline(content); return `
${content}
`; }); //話者アイコン(右) config.addShortcode("talkicon_r", function (conf) { return `

${conf.name ? conf.name : ''}

`; }); //吹き出し(右) config.addPairedShortcode("says_r", function (content) { content = md.renderInline(content); return `

${content}

`; }); // 考える吹き出し config.addPairedShortcode("think_l", content => { content = md.renderInline(content); return `

${content}

`; }); // ocoge end return { dir: { input: 'src', output: 'htdocs' }, // pathPrefix: "/subfolder/", templateFormats: ['md', 'njk', 'html'], dataTemplateEngine: 'njk', markdownTemplateEngine: 'njk' }; };