From 62c2e03409e8f7bc6f3f20df36603344afaf2b3a Mon Sep 17 00:00:00 2001 From: Shulhan Date: Fri, 23 Jan 2026 15:33:13 +0700 Subject: all: embed CSS and index HTML template using memfs Previously, with direct embed, every time we change the CSS or index template, we need to restart the "ciigo serve" command. Using memfs make us easy to update and see the changes directly, without restarting the server. --- testdata/goembed/GoEmbed_test.txt | 131 ------------------------------------- testdata/goembed/default.go | 133 ++++++++++++++++++++++++++++++++++++++ testdata/goembed/default.go.exp | 133 ++++++++++++++++++++++++++++++++++++++ testdata/goembed/out/.gitignore | 2 - testdata/goembed/out/default.go | 129 ++++++++++++++++++++++++++++++++++++ 5 files changed, 395 insertions(+), 133 deletions(-) delete mode 100644 testdata/goembed/GoEmbed_test.txt create mode 100644 testdata/goembed/default.go create mode 100644 testdata/goembed/default.go.exp delete mode 100644 testdata/goembed/out/.gitignore create mode 100644 testdata/goembed/out/default.go (limited to 'testdata/goembed') diff --git a/testdata/goembed/GoEmbed_test.txt b/testdata/goembed/GoEmbed_test.txt deleted file mode 100644 index d800731..0000000 --- a/testdata/goembed/GoEmbed_test.txt +++ /dev/null @@ -1,131 +0,0 @@ - -<<< default.go -// Code generated by git.sr.ht/~shulhan/pakakeh.go/lib/memfs DO NOT EDIT. - -package mypackage - -import ( - "git.sr.ht/~shulhan/pakakeh.go/lib/memfs" -) - -func generate_testdata_in() *memfs.Node { - var node = &memfs.Node{ - SysPath: "testdata/in", - Path: "/", - ContentType: "", - GenFuncName: "generate_testdata_in", - } - node.SetMode(0o20000000755) - node.SetName("/") - node.SetSize(0) - node.AddChild(_memfsIn_getNode(memfsIn, "/clu", generate_testdata_in_clu)) - return node -} - -func generate_testdata_in_clu() *memfs.Node { - var node = &memfs.Node{ - SysPath: "testdata/in/clu", - Path: "/clu", - ContentType: "", - GenFuncName: "generate_testdata_in_clu", - } - node.SetMode(0o20000000755) - node.SetName("clu") - node.SetSize(0) - node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de", generate_testdata_in_clu_de)) - return node -} - -func generate_testdata_in_clu_de() *memfs.Node { - var node = &memfs.Node{ - SysPath: "testdata/in/clu/de", - Path: "/clu/de", - ContentType: "", - GenFuncName: "generate_testdata_in_clu_de", - } - node.SetMode(0o20000000755) - node.SetName("de") - node.SetSize(0) - node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de/file.html", generate_testdata_in_clu_de_file_html)) - node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de/markdown.html", generate_testdata_in_clu_de_markdown_html)) - return node -} - -func generate_testdata_in_clu_de_file_html() *memfs.Node { - var node = &memfs.Node{ - SysPath: "testdata/in/clu/de/file.html", - Path: "/clu/de/file.html", - ContentType: "text/html; charset=utf-8", - GenFuncName: "generate_testdata_in_clu_de_file_html", - Content: []byte("\x3C\x21\x44\x4F\x43\x54\x59\x50\x45\x20\x68\x74\x6D\x6C\x3E\x0A\x3C\x68\x74\x6D\x6C\x3E\x0A\x09\x3C\x68\x65\x61\x64\x3E\x0A\x09\x09\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x75\x74\x66\x2D\x38\x22\x3E\x0A\x09\x09\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x76\x69\x65\x77\x70\x6F\x72\x74\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x77\x69\x64\x74\x68\x3D\x64\x65\x76\x69\x63\x65\x2D\x77\x69\x64\x74\x68\x2C\x20\x69\x6E\x69\x74\x69\x61\x6C\x2D\x73\x63\x61\x6C\x65\x3D\x31\x22\x3E\x0A\x09\x09\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x74\x68\x65\x6D\x65\x2D\x63\x6F\x6C\x6F\x72\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x23\x33\x37\x35\x45\x41\x42\x22\x3E\x0A\x09\x09\x3C\x74\x69\x74\x6C\x65\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x74\x69\x74\x6C\x65\x3E\x0A\x09\x09\x3C\x73\x74\x79\x6C\x65\x3E\x0A\x09\x09\x62\x6F\x64\x79\x7B\x7D\x0A\x09\x09\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x0A\x09\x3C\x2F\x68\x65\x61\x64\x3E\x0A\x09\x3C\x62\x6F\x64\x79\x3E\x0A\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x62\x61\x72\x22\x3E\x0A\x09\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x09\x09\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x2D\x68\x65\x61\x64\x69\x6E\x67\x22\x3E\x0A\x09\x09\x09\x09\x09\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x22\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x61\x3E\x0A\x09\x09\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x65\x6E\x75\x22\x3E\x0A\x09\x09\x09\x09\x09\x3C\x66\x6F\x72\x6D\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x74\x65\x6D\x22\x20\x61\x63\x74\x69\x6F\x6E\x3D\x22\x2F\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2F\x73\x65\x61\x72\x63\x68\x22\x3E\x0A\x09\x09\x09\x09\x09\x09\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x6E\x61\x6D\x65\x3D\x22\x71\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x53\x65\x61\x72\x63\x68\x22\x20\x2F\x3E\x0A\x09\x09\x09\x09\x09\x3C\x2F\x66\x6F\x72\x6D\x3E\x0A\x09\x09\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x70\x61\x67\x65\x22\x3E\x0A\x09\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x68\x65\x61\x64\x65\x72\x22\x3E\x0A\x3C\x68\x31\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x68\x31\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x63\x6F\x6E\x74\x65\x6E\x74\x22\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x66\x6F\x6F\x74\x65\x72\x2D\x74\x65\x78\x74\x22\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x09\x09\x09\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x3C\x61\x0A\x09\x09\x09\x09\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x67\x69\x74\x2E\x73\x72\x2E\x68\x74\x2F\x7E\x73\x68\x75\x6C\x68\x61\x6E\x2F\x63\x69\x69\x67\x6F\x22\x0A\x09\x09\x09\x3E\x0A\x09\x09\x09\x09\x63\x69\x69\x67\x6F\x0A\x09\x09\x09\x3C\x2F\x61\x3E\x0A\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x3C\x2F\x62\x6F\x64\x79\x3E\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E"), - } - node.SetMode(0o644) - node.SetName("file.html") - node.SetSize(902) - return node -} - -func generate_testdata_in_clu_de_markdown_html() *memfs.Node { - var node = &memfs.Node{ - SysPath: "testdata/in/clu/de/markdown.html", - Path: "/clu/de/markdown.html", - ContentType: "text/html; charset=utf-8", - GenFuncName: "generate_testdata_in_clu_de_markdown_html", - Content: []byte("\x3C\x21\x44\x4F\x43\x54\x59\x50\x45\x20\x68\x74\x6D\x6C\x3E\x0A\x3C\x68\x74\x6D\x6C\x3E\x0A\x09\x3C\x68\x65\x61\x64\x3E\x0A\x09\x09\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x75\x74\x66\x2D\x38\x22\x3E\x0A\x09\x09\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x76\x69\x65\x77\x70\x6F\x72\x74\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x77\x69\x64\x74\x68\x3D\x64\x65\x76\x69\x63\x65\x2D\x77\x69\x64\x74\x68\x2C\x20\x69\x6E\x69\x74\x69\x61\x6C\x2D\x73\x63\x61\x6C\x65\x3D\x31\x22\x3E\x0A\x09\x09\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x74\x68\x65\x6D\x65\x2D\x63\x6F\x6C\x6F\x72\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x23\x33\x37\x35\x45\x41\x42\x22\x3E\x0A\x09\x09\x3C\x74\x69\x74\x6C\x65\x3E\x3C\x2F\x74\x69\x74\x6C\x65\x3E\x0A\x09\x09\x3C\x73\x74\x79\x6C\x65\x3E\x0A\x09\x09\x62\x6F\x64\x79\x7B\x7D\x0A\x09\x09\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x0A\x09\x3C\x2F\x68\x65\x61\x64\x3E\x0A\x09\x3C\x62\x6F\x64\x79\x3E\x0A\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x62\x61\x72\x22\x3E\x0A\x09\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x09\x09\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x2D\x68\x65\x61\x64\x69\x6E\x67\x22\x3E\x0A\x09\x09\x09\x09\x09\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x22\x3E\x3C\x2F\x61\x3E\x0A\x09\x09\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x65\x6E\x75\x22\x3E\x0A\x09\x09\x09\x09\x09\x3C\x66\x6F\x72\x6D\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x74\x65\x6D\x22\x20\x61\x63\x74\x69\x6F\x6E\x3D\x22\x2F\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2F\x73\x65\x61\x72\x63\x68\x22\x3E\x0A\x09\x09\x09\x09\x09\x09\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x6E\x61\x6D\x65\x3D\x22\x71\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x53\x65\x61\x72\x63\x68\x22\x20\x2F\x3E\x0A\x09\x09\x09\x09\x09\x3C\x2F\x66\x6F\x72\x6D\x3E\x0A\x09\x09\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x70\x61\x67\x65\x22\x3E\x0A\x09\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x3C\x68\x31\x3E\x6D\x61\x72\x6B\x64\x6F\x77\x6E\x3C\x2F\x68\x31\x3E\x0A\x0A\x09\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x09\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x09\x09\x09\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x3C\x61\x0A\x09\x09\x09\x09\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x67\x69\x74\x2E\x73\x72\x2E\x68\x74\x2F\x7E\x73\x68\x75\x6C\x68\x61\x6E\x2F\x63\x69\x69\x67\x6F\x22\x0A\x09\x09\x09\x3E\x0A\x09\x09\x09\x09\x63\x69\x69\x67\x6F\x0A\x09\x09\x09\x3C\x2F\x61\x3E\x0A\x09\x09\x3C\x2F\x64\x69\x76\x3E\x0A\x09\x3C\x2F\x62\x6F\x64\x79\x3E\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E"), - } - node.SetMode(0o644) - node.SetName("markdown.html") - node.SetSize(790) - return node -} - -// _memfsIn_getNode is internal function to minimize duplicate node -// created on Node.AddChild() and on generatedPathNode.Set(). -func _memfsIn_getNode(mfs *memfs.MemFS, path string, fn func() *memfs.Node) (node *memfs.Node) { - node = mfs.PathNodes.Get(path) - if node != nil { - return node - } - return fn() -} - -func init() { - memfsIn = &memfs.MemFS{ - PathNodes: memfs.NewPathNode(), - Opts: &memfs.Options{ - Root: "testdata/in", - MaxFileSize: 5242880, - Includes: []string{ - }, - Excludes: []string{ - `.*\.adoc$`, - `.*\.md$`, - `^\..*`, - }, - Embed: memfs.EmbedOptions{ - CommentHeader: ``, - PackageName: "mypackage", - VarName: "memfsIn", - GoFileName: "testdata/goembed/out/default.go", - WithoutModTime: true, - }, - }, - } - memfsIn.PathNodes.Set("/", - _memfsIn_getNode(memfsIn, "/", generate_testdata_in)) - memfsIn.PathNodes.Set("/clu", - _memfsIn_getNode(memfsIn, "/clu", generate_testdata_in_clu)) - memfsIn.PathNodes.Set("/clu/de", - _memfsIn_getNode(memfsIn, "/clu/de", generate_testdata_in_clu_de)) - memfsIn.PathNodes.Set("/clu/de/file.html", - _memfsIn_getNode(memfsIn, "/clu/de/file.html", generate_testdata_in_clu_de_file_html)) - memfsIn.PathNodes.Set("/clu/de/markdown.html", - _memfsIn_getNode(memfsIn, "/clu/de/markdown.html", generate_testdata_in_clu_de_markdown_html)) - - memfsIn.Root = memfsIn.PathNodes.Get("/") - - var err = memfsIn.Init() - if err != nil { - panic("memfsIn: " + err.Error()) - } -} diff --git a/testdata/goembed/default.go b/testdata/goembed/default.go new file mode 100644 index 0000000..6f42697 --- /dev/null +++ b/testdata/goembed/default.go @@ -0,0 +1,133 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// SPDX-FileCopyrightText: 2026 Shulhan +// Code generated by git.sr.ht/~shulhan/pakakeh.go/lib/memfs DO NOT EDIT. + +package mypackage + +import ( + "git.sr.ht/~shulhan/pakakeh.go/lib/memfs" +) + +func generate_testdata_in() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in", + Path: "/", + ContentType: "", + GenFuncName: "generate_testdata_in", + } + node.SetMode(0o20000000755) + node.SetName("/") + node.SetSize(0) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu", generate_testdata_in_clu)) + return node +} + +func generate_testdata_in_clu() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu", + Path: "/clu", + ContentType: "", + GenFuncName: "generate_testdata_in_clu", + } + node.SetMode(0o20000000755) + node.SetName("clu") + node.SetSize(0) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de", generate_testdata_in_clu_de)) + return node +} + +func generate_testdata_in_clu_de() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu/de", + Path: "/clu/de", + ContentType: "", + GenFuncName: "generate_testdata_in_clu_de", + } + node.SetMode(0o20000000755) + node.SetName("de") + node.SetSize(0) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de/file.html", generate_testdata_in_clu_de_file_html)) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de/markdown.html", generate_testdata_in_clu_de_markdown_html)) + return node +} + +func generate_testdata_in_clu_de_file_html() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu/de/file.html", + Path: "/clu/de/file.html", + ContentType: "text/html; charset=utf-8", + GenFuncName: "generate_testdata_in_clu_de_file_html", + Content: []byte("\x0A\x0A\x3C\x21\x44\x4F\x43\x54\x59\x50\x45\x20\x68\x74\x6D\x6C\x3E\x0A\x3C\x68\x74\x6D\x6C\x3E\x0A\x20\x20\x3C\x68\x65\x61\x64\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x75\x74\x66\x2D\x38\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x76\x69\x65\x77\x70\x6F\x72\x74\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x77\x69\x64\x74\x68\x3D\x64\x65\x76\x69\x63\x65\x2D\x77\x69\x64\x74\x68\x2C\x20\x69\x6E\x69\x74\x69\x61\x6C\x2D\x73\x63\x61\x6C\x65\x3D\x31\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x74\x68\x65\x6D\x65\x2D\x63\x6F\x6C\x6F\x72\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x23\x33\x37\x35\x45\x41\x42\x22\x3E\x0A\x20\x20\x20\x20\x3C\x74\x69\x74\x6C\x65\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x74\x69\x74\x6C\x65\x3E\x0A\x20\x20\x20\x20\x3C\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x20\x20\x62\x6F\x64\x79\x7B\x7D\x0A\x20\x20\x20\x20\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x3C\x2F\x68\x65\x61\x64\x3E\x0A\x20\x20\x3C\x62\x6F\x64\x79\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x62\x61\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x2D\x68\x65\x61\x64\x69\x6E\x67\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x22\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x65\x6E\x75\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x66\x6F\x72\x6D\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x74\x65\x6D\x22\x20\x61\x63\x74\x69\x6F\x6E\x3D\x22\x2F\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2F\x73\x65\x61\x72\x63\x68\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x6E\x61\x6D\x65\x3D\x22\x71\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x53\x65\x61\x72\x63\x68\x22\x20\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x66\x6F\x72\x6D\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x70\x61\x67\x65\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x68\x65\x61\x64\x65\x72\x22\x3E\x0A\x3C\x68\x31\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x68\x31\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x63\x6F\x6E\x74\x65\x6E\x74\x22\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x66\x6F\x6F\x74\x65\x72\x2D\x74\x65\x78\x74\x22\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x3C\x61\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x67\x69\x74\x2E\x73\x72\x2E\x68\x74\x2F\x7E\x73\x68\x75\x6C\x68\x61\x6E\x2F\x63\x69\x69\x67\x6F\x22\x0A\x20\x20\x20\x20\x20\x20\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x69\x69\x67\x6F\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x3C\x2F\x62\x6F\x64\x79\x3E\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E\x0A\x0A"), + } + node.SetMode(0o644) + node.SetName("file.html") + node.SetSize(1002) + return node +} + +func generate_testdata_in_clu_de_markdown_html() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu/de/markdown.html", + Path: "/clu/de/markdown.html", + ContentType: "text/html; charset=utf-8", + GenFuncName: "generate_testdata_in_clu_de_markdown_html", + Content: []byte("\x0A\x0A\x3C\x21\x44\x4F\x43\x54\x59\x50\x45\x20\x68\x74\x6D\x6C\x3E\x0A\x3C\x68\x74\x6D\x6C\x3E\x0A\x20\x20\x3C\x68\x65\x61\x64\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x75\x74\x66\x2D\x38\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x76\x69\x65\x77\x70\x6F\x72\x74\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x77\x69\x64\x74\x68\x3D\x64\x65\x76\x69\x63\x65\x2D\x77\x69\x64\x74\x68\x2C\x20\x69\x6E\x69\x74\x69\x61\x6C\x2D\x73\x63\x61\x6C\x65\x3D\x31\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x74\x68\x65\x6D\x65\x2D\x63\x6F\x6C\x6F\x72\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x23\x33\x37\x35\x45\x41\x42\x22\x3E\x0A\x20\x20\x20\x20\x3C\x74\x69\x74\x6C\x65\x3E\x3C\x2F\x74\x69\x74\x6C\x65\x3E\x0A\x20\x20\x20\x20\x3C\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x20\x20\x62\x6F\x64\x79\x7B\x7D\x0A\x20\x20\x20\x20\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x3C\x2F\x68\x65\x61\x64\x3E\x0A\x20\x20\x3C\x62\x6F\x64\x79\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x62\x61\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x2D\x68\x65\x61\x64\x69\x6E\x67\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x22\x3E\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x65\x6E\x75\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x66\x6F\x72\x6D\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x74\x65\x6D\x22\x20\x61\x63\x74\x69\x6F\x6E\x3D\x22\x2F\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2F\x73\x65\x61\x72\x63\x68\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x6E\x61\x6D\x65\x3D\x22\x71\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x53\x65\x61\x72\x63\x68\x22\x20\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x66\x6F\x72\x6D\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x70\x61\x67\x65\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x3C\x68\x31\x3E\x6D\x61\x72\x6B\x64\x6F\x77\x6E\x3C\x2F\x68\x31\x3E\x0A\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x3C\x61\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x67\x69\x74\x2E\x73\x72\x2E\x68\x74\x2F\x7E\x73\x68\x75\x6C\x68\x61\x6E\x2F\x63\x69\x69\x67\x6F\x22\x0A\x20\x20\x20\x20\x20\x20\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x69\x69\x67\x6F\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x3C\x2F\x62\x6F\x64\x79\x3E\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E\x0A\x0A"), + } + node.SetMode(0o644) + node.SetName("markdown.html") + node.SetSize(890) + return node +} + +// _memfsIn_getNode is internal function to minimize duplicate node +// created on Node.AddChild() and on generatedPathNode.Set(). +func _memfsIn_getNode(mfs *memfs.MemFS, path string, fn func() *memfs.Node) (node *memfs.Node) { + node = mfs.PathNodes.Get(path) + if node != nil { + return node + } + return fn() +} + +func init() { + memfsIn = &memfs.MemFS{ + PathNodes: memfs.NewPathNode(), + Opts: &memfs.Options{ + Root: "testdata/in", + MaxFileSize: 5242880, + Includes: []string{ + }, + Excludes: []string{ + `.*\.adoc$`, + `.*\.md$`, + `^\..*`, + }, + Embed: memfs.EmbedOptions{ + CommentHeader: `// SPDX-License-Identifier: GPL-3.0-or-later +// SPDX-FileCopyrightText: 2026 Shulhan +`, + PackageName: "mypackage", + VarName: "memfsIn", + GoFileName: "testdata/goembed/default.go", + WithoutModTime: true, + }, + }, + } + memfsIn.PathNodes.Set("/", + _memfsIn_getNode(memfsIn, "/", generate_testdata_in)) + memfsIn.PathNodes.Set("/clu", + _memfsIn_getNode(memfsIn, "/clu", generate_testdata_in_clu)) + memfsIn.PathNodes.Set("/clu/de", + _memfsIn_getNode(memfsIn, "/clu/de", generate_testdata_in_clu_de)) + memfsIn.PathNodes.Set("/clu/de/file.html", + _memfsIn_getNode(memfsIn, "/clu/de/file.html", generate_testdata_in_clu_de_file_html)) + memfsIn.PathNodes.Set("/clu/de/markdown.html", + _memfsIn_getNode(memfsIn, "/clu/de/markdown.html", generate_testdata_in_clu_de_markdown_html)) + + memfsIn.Root = memfsIn.PathNodes.Get("/") + + var err = memfsIn.Init() + if err != nil { + panic("memfsIn: " + err.Error()) + } +} diff --git a/testdata/goembed/default.go.exp b/testdata/goembed/default.go.exp new file mode 100644 index 0000000..6f42697 --- /dev/null +++ b/testdata/goembed/default.go.exp @@ -0,0 +1,133 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// SPDX-FileCopyrightText: 2026 Shulhan +// Code generated by git.sr.ht/~shulhan/pakakeh.go/lib/memfs DO NOT EDIT. + +package mypackage + +import ( + "git.sr.ht/~shulhan/pakakeh.go/lib/memfs" +) + +func generate_testdata_in() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in", + Path: "/", + ContentType: "", + GenFuncName: "generate_testdata_in", + } + node.SetMode(0o20000000755) + node.SetName("/") + node.SetSize(0) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu", generate_testdata_in_clu)) + return node +} + +func generate_testdata_in_clu() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu", + Path: "/clu", + ContentType: "", + GenFuncName: "generate_testdata_in_clu", + } + node.SetMode(0o20000000755) + node.SetName("clu") + node.SetSize(0) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de", generate_testdata_in_clu_de)) + return node +} + +func generate_testdata_in_clu_de() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu/de", + Path: "/clu/de", + ContentType: "", + GenFuncName: "generate_testdata_in_clu_de", + } + node.SetMode(0o20000000755) + node.SetName("de") + node.SetSize(0) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de/file.html", generate_testdata_in_clu_de_file_html)) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de/markdown.html", generate_testdata_in_clu_de_markdown_html)) + return node +} + +func generate_testdata_in_clu_de_file_html() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu/de/file.html", + Path: "/clu/de/file.html", + ContentType: "text/html; charset=utf-8", + GenFuncName: "generate_testdata_in_clu_de_file_html", + Content: []byte("\x0A\x0A\x3C\x21\x44\x4F\x43\x54\x59\x50\x45\x20\x68\x74\x6D\x6C\x3E\x0A\x3C\x68\x74\x6D\x6C\x3E\x0A\x20\x20\x3C\x68\x65\x61\x64\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x75\x74\x66\x2D\x38\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x76\x69\x65\x77\x70\x6F\x72\x74\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x77\x69\x64\x74\x68\x3D\x64\x65\x76\x69\x63\x65\x2D\x77\x69\x64\x74\x68\x2C\x20\x69\x6E\x69\x74\x69\x61\x6C\x2D\x73\x63\x61\x6C\x65\x3D\x31\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x74\x68\x65\x6D\x65\x2D\x63\x6F\x6C\x6F\x72\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x23\x33\x37\x35\x45\x41\x42\x22\x3E\x0A\x20\x20\x20\x20\x3C\x74\x69\x74\x6C\x65\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x74\x69\x74\x6C\x65\x3E\x0A\x20\x20\x20\x20\x3C\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x20\x20\x62\x6F\x64\x79\x7B\x7D\x0A\x20\x20\x20\x20\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x3C\x2F\x68\x65\x61\x64\x3E\x0A\x20\x20\x3C\x62\x6F\x64\x79\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x62\x61\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x2D\x68\x65\x61\x64\x69\x6E\x67\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x22\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x65\x6E\x75\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x66\x6F\x72\x6D\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x74\x65\x6D\x22\x20\x61\x63\x74\x69\x6F\x6E\x3D\x22\x2F\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2F\x73\x65\x61\x72\x63\x68\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x6E\x61\x6D\x65\x3D\x22\x71\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x53\x65\x61\x72\x63\x68\x22\x20\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x66\x6F\x72\x6D\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x70\x61\x67\x65\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x68\x65\x61\x64\x65\x72\x22\x3E\x0A\x3C\x68\x31\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x68\x31\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x63\x6F\x6E\x74\x65\x6E\x74\x22\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x66\x6F\x6F\x74\x65\x72\x2D\x74\x65\x78\x74\x22\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x3C\x61\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x67\x69\x74\x2E\x73\x72\x2E\x68\x74\x2F\x7E\x73\x68\x75\x6C\x68\x61\x6E\x2F\x63\x69\x69\x67\x6F\x22\x0A\x20\x20\x20\x20\x20\x20\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x69\x69\x67\x6F\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x3C\x2F\x62\x6F\x64\x79\x3E\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E\x0A\x0A"), + } + node.SetMode(0o644) + node.SetName("file.html") + node.SetSize(1002) + return node +} + +func generate_testdata_in_clu_de_markdown_html() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu/de/markdown.html", + Path: "/clu/de/markdown.html", + ContentType: "text/html; charset=utf-8", + GenFuncName: "generate_testdata_in_clu_de_markdown_html", + Content: []byte("\x0A\x0A\x3C\x21\x44\x4F\x43\x54\x59\x50\x45\x20\x68\x74\x6D\x6C\x3E\x0A\x3C\x68\x74\x6D\x6C\x3E\x0A\x20\x20\x3C\x68\x65\x61\x64\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x75\x74\x66\x2D\x38\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x76\x69\x65\x77\x70\x6F\x72\x74\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x77\x69\x64\x74\x68\x3D\x64\x65\x76\x69\x63\x65\x2D\x77\x69\x64\x74\x68\x2C\x20\x69\x6E\x69\x74\x69\x61\x6C\x2D\x73\x63\x61\x6C\x65\x3D\x31\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x74\x68\x65\x6D\x65\x2D\x63\x6F\x6C\x6F\x72\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x23\x33\x37\x35\x45\x41\x42\x22\x3E\x0A\x20\x20\x20\x20\x3C\x74\x69\x74\x6C\x65\x3E\x3C\x2F\x74\x69\x74\x6C\x65\x3E\x0A\x20\x20\x20\x20\x3C\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x20\x20\x62\x6F\x64\x79\x7B\x7D\x0A\x20\x20\x20\x20\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x3C\x2F\x68\x65\x61\x64\x3E\x0A\x20\x20\x3C\x62\x6F\x64\x79\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x62\x61\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x2D\x68\x65\x61\x64\x69\x6E\x67\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x22\x3E\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x65\x6E\x75\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x66\x6F\x72\x6D\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x74\x65\x6D\x22\x20\x61\x63\x74\x69\x6F\x6E\x3D\x22\x2F\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2F\x73\x65\x61\x72\x63\x68\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x6E\x61\x6D\x65\x3D\x22\x71\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x53\x65\x61\x72\x63\x68\x22\x20\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x66\x6F\x72\x6D\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x70\x61\x67\x65\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x3C\x68\x31\x3E\x6D\x61\x72\x6B\x64\x6F\x77\x6E\x3C\x2F\x68\x31\x3E\x0A\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x3C\x61\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x67\x69\x74\x2E\x73\x72\x2E\x68\x74\x2F\x7E\x73\x68\x75\x6C\x68\x61\x6E\x2F\x63\x69\x69\x67\x6F\x22\x0A\x20\x20\x20\x20\x20\x20\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x69\x69\x67\x6F\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x3C\x2F\x62\x6F\x64\x79\x3E\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E\x0A\x0A"), + } + node.SetMode(0o644) + node.SetName("markdown.html") + node.SetSize(890) + return node +} + +// _memfsIn_getNode is internal function to minimize duplicate node +// created on Node.AddChild() and on generatedPathNode.Set(). +func _memfsIn_getNode(mfs *memfs.MemFS, path string, fn func() *memfs.Node) (node *memfs.Node) { + node = mfs.PathNodes.Get(path) + if node != nil { + return node + } + return fn() +} + +func init() { + memfsIn = &memfs.MemFS{ + PathNodes: memfs.NewPathNode(), + Opts: &memfs.Options{ + Root: "testdata/in", + MaxFileSize: 5242880, + Includes: []string{ + }, + Excludes: []string{ + `.*\.adoc$`, + `.*\.md$`, + `^\..*`, + }, + Embed: memfs.EmbedOptions{ + CommentHeader: `// SPDX-License-Identifier: GPL-3.0-or-later +// SPDX-FileCopyrightText: 2026 Shulhan +`, + PackageName: "mypackage", + VarName: "memfsIn", + GoFileName: "testdata/goembed/default.go", + WithoutModTime: true, + }, + }, + } + memfsIn.PathNodes.Set("/", + _memfsIn_getNode(memfsIn, "/", generate_testdata_in)) + memfsIn.PathNodes.Set("/clu", + _memfsIn_getNode(memfsIn, "/clu", generate_testdata_in_clu)) + memfsIn.PathNodes.Set("/clu/de", + _memfsIn_getNode(memfsIn, "/clu/de", generate_testdata_in_clu_de)) + memfsIn.PathNodes.Set("/clu/de/file.html", + _memfsIn_getNode(memfsIn, "/clu/de/file.html", generate_testdata_in_clu_de_file_html)) + memfsIn.PathNodes.Set("/clu/de/markdown.html", + _memfsIn_getNode(memfsIn, "/clu/de/markdown.html", generate_testdata_in_clu_de_markdown_html)) + + memfsIn.Root = memfsIn.PathNodes.Get("/") + + var err = memfsIn.Init() + if err != nil { + panic("memfsIn: " + err.Error()) + } +} diff --git a/testdata/goembed/out/.gitignore b/testdata/goembed/out/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/testdata/goembed/out/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/testdata/goembed/out/default.go b/testdata/goembed/out/default.go new file mode 100644 index 0000000..0c21721 --- /dev/null +++ b/testdata/goembed/out/default.go @@ -0,0 +1,129 @@ +// Code generated by git.sr.ht/~shulhan/pakakeh.go/lib/memfs DO NOT EDIT. + +package mypackage + +import ( + "git.sr.ht/~shulhan/pakakeh.go/lib/memfs" +) + +func generate_testdata_in() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in", + Path: "/", + ContentType: "", + GenFuncName: "generate_testdata_in", + } + node.SetMode(0o20000000755) + node.SetName("/") + node.SetSize(0) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu", generate_testdata_in_clu)) + return node +} + +func generate_testdata_in_clu() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu", + Path: "/clu", + ContentType: "", + GenFuncName: "generate_testdata_in_clu", + } + node.SetMode(0o20000000755) + node.SetName("clu") + node.SetSize(0) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de", generate_testdata_in_clu_de)) + return node +} + +func generate_testdata_in_clu_de() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu/de", + Path: "/clu/de", + ContentType: "", + GenFuncName: "generate_testdata_in_clu_de", + } + node.SetMode(0o20000000755) + node.SetName("de") + node.SetSize(0) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de/file.html", generate_testdata_in_clu_de_file_html)) + node.AddChild(_memfsIn_getNode(memfsIn, "/clu/de/markdown.html", generate_testdata_in_clu_de_markdown_html)) + return node +} + +func generate_testdata_in_clu_de_file_html() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu/de/file.html", + Path: "/clu/de/file.html", + ContentType: "text/html; charset=utf-8", + GenFuncName: "generate_testdata_in_clu_de_file_html", + Content: []byte("\x0A\x0A\x0A\x3C\x21\x44\x4F\x43\x54\x59\x50\x45\x20\x68\x74\x6D\x6C\x3E\x0A\x3C\x68\x74\x6D\x6C\x3E\x0A\x20\x20\x3C\x68\x65\x61\x64\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x75\x74\x66\x2D\x38\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x76\x69\x65\x77\x70\x6F\x72\x74\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x77\x69\x64\x74\x68\x3D\x64\x65\x76\x69\x63\x65\x2D\x77\x69\x64\x74\x68\x2C\x20\x69\x6E\x69\x74\x69\x61\x6C\x2D\x73\x63\x61\x6C\x65\x3D\x31\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x74\x68\x65\x6D\x65\x2D\x63\x6F\x6C\x6F\x72\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x23\x33\x37\x35\x45\x41\x42\x22\x3E\x0A\x20\x20\x20\x20\x3C\x74\x69\x74\x6C\x65\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x74\x69\x74\x6C\x65\x3E\x0A\x20\x20\x20\x20\x3C\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x20\x20\x62\x6F\x64\x79\x7B\x7D\x0A\x20\x20\x20\x20\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x0A\x20\x20\x3C\x2F\x68\x65\x61\x64\x3E\x0A\x20\x20\x3C\x62\x6F\x64\x79\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x62\x61\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x2D\x68\x65\x61\x64\x69\x6E\x67\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x22\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x65\x6E\x75\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x66\x6F\x72\x6D\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x74\x65\x6D\x22\x20\x61\x63\x74\x69\x6F\x6E\x3D\x22\x2F\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2F\x73\x65\x61\x72\x63\x68\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x6E\x61\x6D\x65\x3D\x22\x71\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x53\x65\x61\x72\x63\x68\x22\x20\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x66\x6F\x72\x6D\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x70\x61\x67\x65\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x68\x65\x61\x64\x65\x72\x22\x3E\x0A\x3C\x68\x31\x3E\x64\x75\x6D\x6D\x79\x3C\x2F\x68\x31\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x63\x6F\x6E\x74\x65\x6E\x74\x22\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x66\x6F\x6F\x74\x65\x72\x2D\x74\x65\x78\x74\x22\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x3C\x61\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x67\x69\x74\x2E\x73\x72\x2E\x68\x74\x2F\x7E\x73\x68\x75\x6C\x68\x61\x6E\x2F\x63\x69\x69\x67\x6F\x22\x0A\x20\x20\x20\x20\x20\x20\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x69\x69\x67\x6F\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x3C\x2F\x62\x6F\x64\x79\x3E\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E\x0A\x0A"), + } + node.SetMode(0o644) + node.SetName("file.html") + node.SetSize(1003) + return node +} + +func generate_testdata_in_clu_de_markdown_html() *memfs.Node { + var node = &memfs.Node{ + SysPath: "testdata/in/clu/de/markdown.html", + Path: "/clu/de/markdown.html", + ContentType: "text/html; charset=utf-8", + GenFuncName: "generate_testdata_in_clu_de_markdown_html", + Content: []byte("\x0A\x0A\x0A\x3C\x21\x44\x4F\x43\x54\x59\x50\x45\x20\x68\x74\x6D\x6C\x3E\x0A\x3C\x68\x74\x6D\x6C\x3E\x0A\x20\x20\x3C\x68\x65\x61\x64\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x75\x74\x66\x2D\x38\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x76\x69\x65\x77\x70\x6F\x72\x74\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x77\x69\x64\x74\x68\x3D\x64\x65\x76\x69\x63\x65\x2D\x77\x69\x64\x74\x68\x2C\x20\x69\x6E\x69\x74\x69\x61\x6C\x2D\x73\x63\x61\x6C\x65\x3D\x31\x22\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x74\x61\x20\x6E\x61\x6D\x65\x3D\x22\x74\x68\x65\x6D\x65\x2D\x63\x6F\x6C\x6F\x72\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x23\x33\x37\x35\x45\x41\x42\x22\x3E\x0A\x20\x20\x20\x20\x3C\x74\x69\x74\x6C\x65\x3E\x3C\x2F\x74\x69\x74\x6C\x65\x3E\x0A\x20\x20\x3C\x2F\x68\x65\x61\x64\x3E\x0A\x20\x20\x3C\x62\x6F\x64\x79\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x62\x61\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x70\x2D\x68\x65\x61\x64\x69\x6E\x67\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x22\x3E\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x65\x6E\x75\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x66\x6F\x72\x6D\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x74\x65\x6D\x22\x20\x61\x63\x74\x69\x6F\x6E\x3D\x22\x2F\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x2F\x73\x65\x61\x72\x63\x68\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x6E\x61\x6D\x65\x3D\x22\x71\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x53\x65\x61\x72\x63\x68\x22\x20\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x66\x6F\x72\x6D\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x70\x61\x67\x65\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x22\x3E\x0A\x3C\x68\x31\x3E\x6D\x61\x72\x6B\x64\x6F\x77\x6E\x3C\x2F\x68\x31\x3E\x0A\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x3C\x61\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x67\x69\x74\x2E\x73\x72\x2E\x68\x74\x2F\x7E\x73\x68\x75\x6C\x68\x61\x6E\x2F\x63\x69\x69\x67\x6F\x22\x0A\x20\x20\x20\x20\x20\x20\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x69\x69\x67\x6F\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x3C\x2F\x62\x6F\x64\x79\x3E\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E\x0A\x0A"), + } + node.SetMode(0o644) + node.SetName("markdown.html") + node.SetSize(855) + return node +} + +// _memfsIn_getNode is internal function to minimize duplicate node +// created on Node.AddChild() and on generatedPathNode.Set(). +func _memfsIn_getNode(mfs *memfs.MemFS, path string, fn func() *memfs.Node) (node *memfs.Node) { + node = mfs.PathNodes.Get(path) + if node != nil { + return node + } + return fn() +} + +func init() { + memfsIn = &memfs.MemFS{ + PathNodes: memfs.NewPathNode(), + Opts: &memfs.Options{ + Root: "testdata/in", + MaxFileSize: 5242880, + Includes: []string{ + }, + Excludes: []string{ + `.*\.adoc$`, + `.*\.md$`, + `^\..*`, + }, + Embed: memfs.EmbedOptions{ + CommentHeader: ``, + PackageName: "mypackage", + VarName: "memfsIn", + GoFileName: "testdata/goembed/out/default.go", + WithoutModTime: true, + }, + }, + } + memfsIn.PathNodes.Set("/", + _memfsIn_getNode(memfsIn, "/", generate_testdata_in)) + memfsIn.PathNodes.Set("/clu", + _memfsIn_getNode(memfsIn, "/clu", generate_testdata_in_clu)) + memfsIn.PathNodes.Set("/clu/de", + _memfsIn_getNode(memfsIn, "/clu/de", generate_testdata_in_clu_de)) + memfsIn.PathNodes.Set("/clu/de/file.html", + _memfsIn_getNode(memfsIn, "/clu/de/file.html", generate_testdata_in_clu_de_file_html)) + memfsIn.PathNodes.Set("/clu/de/markdown.html", + _memfsIn_getNode(memfsIn, "/clu/de/markdown.html", generate_testdata_in_clu_de_markdown_html)) + + memfsIn.Root = memfsIn.PathNodes.Get("/") + + var err = memfsIn.Init() + if err != nil { + panic("memfsIn: " + err.Error()) + } +} -- cgit v1.3