]> Lady’s Gitweb - Caudex/commitdiff
Update β›©πŸ“° δΉ¦η€Ύ; use πŸ’„πŸ“ LesΒ·MΒ·L as markup format
authorLady <redacted>
Thu, 15 Aug 2024 00:18:47 +0000 (20:18 -0400)
committerLady <redacted>
Thu, 15 Aug 2024 00:38:14 +0000 (20:38 -0400)
There are a lot of open questions about whether this catalog‐based
build process is the correct approach given newer β›©πŸ“° δΉ¦η€Ύ features
like expanded archives; more radical changes maybe to come. This commit
mostly just removes work which has now been taken elseΒ·where.

12 files changed:
.gitmodules
.Ò\9b©ï¸\8fð\9f\93° [deleted submodule]
.Ò\9b©ð\9f\93° [new submodule]
.Γ°\9f\92\84Γ°\9f\93\9d [new submodule]
GNUmakefile
README.markdown
lib/split.xslt [deleted file]
magic/codex-entry [deleted file]
parsers/codex-entry.xslt [deleted file]
transforms/entry.xslt
transforms/index.xslt
transforms/metadata.xslt

index 51a8c8e537655a723b97eb9127fc07fb241d2158..357a9aea6f7bb9ea8df1fcb578c11c6ed6c4859d 100644 (file)
@@ -1,3 +1,6 @@
 [submodule "δΉ¦η€Ύ"]
 [submodule "δΉ¦η€Ύ"]
-       path = .β›©οΈπŸ“°
+       path = .β›©πŸ“°
        url = https://git.ladys.computer/Shushe.git
        url = https://git.ladys.computer/Shushe.git
+[submodule "LesML"]
+       path = .πŸ’„πŸ“
+       url = https://git.ladys.computer/LesML.git
diff --git a/.Ò\9b©ï¸\8fð\9f\93° b/.Ò\9b©ï¸\8fð\9f\93°
deleted file mode 160000 (submodule)
index 2a4b2ff..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 2a4b2ff1cb88305fb662deda701ee23afbf56498
diff --git a/.Ò\9b©ð\9f\93° b/.Ò\9b©ð\9f\93°
new file mode 160000 (submodule)
index 0000000..84e79eb
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 84e79eb9ea63d28dfa93dfe7d3acd457905cc53e
diff --git a/.Γ°\9f\92\84Γ°\9f\93\9d b/.Γ°\9f\92\84Γ°\9f\93\9d
new file mode 160000 (submodule)
index 0000000..608a140
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 608a1404e5b5f27df451d8a4c50c1c356a39a8d5
index 8fa6dfc5f79c7cc2ab828a0b0de8bc5a2c55a491..274a0b448814b2e30b2ed8bac762ab80ba1d257e 100644 (file)
@@ -8,7 +8,7 @@ override define makefileinfo
 β•Ÿβ”¬ ΒΆ Prerequisites β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β•’
 β•‘β”‚                                                            β”‚β•‘
 β•‘β”‚ Requires GΒ·NΒ·U Make, at least version 3.81, and all of the β”‚β•‘
 β•Ÿβ”¬ ΒΆ Prerequisites β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β•’
 β•‘β”‚                                                            β”‚β•‘
 β•‘β”‚ Requires GΒ·NΒ·U Make, at least version 3.81, and all of the β”‚β•‘
-β•‘β”‚ requirements of β›©οΈπŸ“° δΉ¦η€Ύ, which is included as a git      β”‚β•‘
+β•‘β”‚ requirements of β›©πŸ“° δΉ¦η€Ύ, which is included as a git      β”‚β•‘
 β•‘β”‚ submodule. Run `make help-shusheΒ΄ for more information.    β”‚β•‘
 β•‘╰────────────────────────────────────────────────────────────╯║
 β•Ÿβ”¬ ΒΆ Usage β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β•’
 β•‘β”‚ submodule. Run `make help-shusheΒ΄ for more information.    β”‚β•‘
 β•‘╰────────────────────────────────────────────────────────────╯║
 β•Ÿβ”¬ ΒΆ Usage β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β•’
@@ -44,7 +44,7 @@ override define makefileinfo
 β•‘╰────────────────────────────────────────────────────────────╯║
 β•Ÿβ”¬ ΒΆ Copyright & License β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β•’
 β•‘β”‚                                                            β”‚β•‘
 β•‘╰────────────────────────────────────────────────────────────╯║
 β•Ÿβ”¬ ΒΆ Copyright & License β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β•’
 β•‘β”‚                                                            β”‚β•‘
-β•‘β”‚ Copyright Β© 2024 Lady [@ Lady’s Computer].                 β”‚β•‘
+β•‘β”‚ Copyright Β© 2024 Lady [@ Ladys Computer].                  β”‚β•‘
 β•‘β”‚                                                            β”‚β•‘
 β•‘β”‚ This Source Code Form is subject to the terms of the       β”‚β•‘
 β•‘β”‚ Mozilla Public License, v 2.0. If a copy of the MΒ·PΒ·L was  β”‚β•‘
 β•‘β”‚                                                            β”‚β•‘
 β•‘β”‚ This Source Code Form is subject to the terms of the       β”‚β•‘
 β•‘β”‚ Mozilla Public License, v 2.0. If a copy of the MΒ·PΒ·L was  β”‚β•‘
@@ -60,10 +60,9 @@ endef
 #
 # If these are not installed on your computer, or you need to use a different implementation, you can override the appropriate variable.
 #
 #
 # If these are not installed on your computer, or you need to use a different implementation, you can override the appropriate variable.
 #
-# See also the documentation for β›©οΈπŸ“° δΉ¦η€Ύ, which specifies additional programs.
+# See also the documentation for β›©πŸ“° δΉ¦η€Ύ, which specifies additional programs.
 AWK := awk
 CAT := cat
 AWK := awk
 CAT := cat
-ECHO := echo
 GIT := git
 MKDIR := mkdir
 OD := od
 GIT := git
 MKDIR := mkdir
 OD := od
@@ -90,38 +89,40 @@ BUILDDIR := build
 # The directory into which to output files on `makeΒ΄.
 DESTDIR := public
 
 # The directory into which to output files on `makeΒ΄.
 DESTDIR := public
 
-# The location of this Makefile (and related β›©οΈπŸ“° δΉ¦η€Ύ files), relative to the current working directory.
+# The location of this Makefile, relative to the current working directory.
+#
+# It is expected that other files packaged as a part of πŸͺΎπŸ“° Caudex can also be found in this directory.
 #
 # By default, this is inferred from the variable `MAKEFILE_LISTΒ΄.
 THISDIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
 
 #
 # By default, this is inferred from the variable `MAKEFILE_LISTΒ΄.
 THISDIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
 
-# Extra magic files to forward to β›©οΈπŸ“° δΉ¦η€Ύ.
+# Extra magic files to forward to β›©πŸ“° δΉ¦η€Ύ.
 #
 # Your computer probably has several already installed at `/usr/share/file/magicΒ΄.
 EXTRAMAGIC :=
 
 #
 # Your computer probably has several already installed at `/usr/share/file/magicΒ΄.
 EXTRAMAGIC :=
 
-# Extra parsers to forward to β›©οΈπŸ“° δΉ¦η€Ύ.
+# Extra parsers to forward to β›©πŸ“° δΉ¦η€Ύ.
 #
 # Which parsers are provided will influence which kinds of files are recognized as plaintext.
 EXTRAPARSERS :=
 
 #
 # Which parsers are provided will influence which kinds of files are recognized as plaintext.
 EXTRAPARSERS :=
 
-# Extra transforms to forward to β›©οΈπŸ“° δΉ¦η€Ύ.
+# Extra transforms to forward to β›©πŸ“° δΉ¦η€Ύ.
 EXTRATRANSFORMS :=
 
 EXTRATRANSFORMS :=
 
+# A description of the current git revision of πŸͺΎπŸ“° Caudex.
+THISREV := $(shell cd $(THISDIR); $(GIT) describe 2> /dev/null || $(GIT) rev-parse HEAD 2> /dev/null || true)
+
 # Variables to communicate to further calls to Make.
 #
 # By default, `MAKEOVERRIDESΒ΄ contains all variable overrides specified on the commandline.
 # However, some values are specific to πŸͺΎπŸ“° Caudex and may have different meaning in other makeΒ·files; filter these out.
 # Variables to communicate to further calls to Make.
 #
 # By default, `MAKEOVERRIDESΒ΄ contains all variable overrides specified on the commandline.
 # However, some values are specific to πŸͺΎπŸ“° Caudex and may have different meaning in other makeΒ·files; filter these out.
-MAKEOVERRIDES := $(filter-out SRCDIR=% ASSETDIR=% BUILDDIR=% DESTDIR=% THISDIR=% EXTRAMAGIC=% EXTRAPARSERS=% EXTRATRANSFORMS=%,$(MAKEOVERRIDES))
+MAKEOVERRIDES := $(filter-out SRCDIR=% ASSETDIR=% BUILDDIR=% DESTDIR=% THISDIR=% EXTRAMAGIC=% EXTRAPARSERS=% EXTRATRANSFORMS=% THISREV=%,$(MAKEOVERRIDES))
 
 
-# The location of β›©οΈπŸ“° δΉ¦η€Ύ.
-SHUSHE := $(THISDIR)/.β›©οΈπŸ“°
+# The location of πŸ’„πŸ“ LesΒ·MΒ·L.
+LESML := $(THISDIR)/.πŸ’„πŸ“
 
 
-# The name of the generator program.
-GENERATOR := πŸͺΎπŸ“°Β Caudex
-
-# A description of the current git revision of πŸͺΎπŸ“° Caudex.
-VERSION := $(shell cd $(THISDIR); $(GIT) describe 2> /dev/null || $(GIT) rev-parse HEAD 2> /dev/null || true)
+# The location of β›©πŸ“° δΉ¦η€Ύ.
+SHUSHE := $(THISDIR)/.β›©πŸ“°
 
 # Set to a nonΒ·empty value to print all commands as they run.
 VERBOSE :=
 
 # Set to a nonΒ·empty value to print all commands as they run.
 VERBOSE :=
@@ -160,7 +161,7 @@ override entriesforcategory = $(sort $(foreach category,$1,$(wildcard $(SRCDIR)/
 override wrmg = $(foreach attempt,$(shell $(OD) -t u4 -N 4 /dev/random | $(SED) 's/^[0-9]* *//' | $(TR) -d ' \n' | $(AWK) 'BEGIN{chars="0123456789ABCDEFGHJKMNPQRSTVWXYZ&~@=U"}{d=32^5;r=$$0%(32^6);printf("%s",substr(chars,r%37,1));while(d>0){printf("%s", substr(chars,int(r/d),1));if(d==32^4)printf("%s", "-");r%=d;d=int(d/32)}}'),$(if $(wildcard $(SRCDIR)/*/($(attempt))*),$(call wrmg),$(attempt)))
 
 # (callable) Returns the identifiers of the provided entries.
 override wrmg = $(foreach attempt,$(shell $(OD) -t u4 -N 4 /dev/random | $(SED) 's/^[0-9]* *//' | $(TR) -d ' \n' | $(AWK) 'BEGIN{chars="0123456789ABCDEFGHJKMNPQRSTVWXYZ&~@=U"}{d=32^5;r=$$0%(32^6);printf("%s",substr(chars,r%37,1));while(d>0){printf("%s", substr(chars,int(r/d),1));if(d==32^4)printf("%s", "-");r%=d;d=int(d/32)}}'),$(if $(wildcard $(SRCDIR)/*/($(attempt))*),$(call wrmg),$(attempt)))
 
 # (callable) Returns the identifiers of the provided entries.
-override identifier = $(shell $(TR) ' ' '\n' <<< $(call quote,$1) | $(SED) 's/^\(.*[/]\)\{0,1\}\(.\{3\}-.\{4\}\)\(,[^/]*\)\{0,1\}$$/\2/')
+override identifier = $(shell $(PRINTF) '%s\n' $(call quote,$1) | $(TR) ' ' '\n' | $(SED) 's/^\(.*[/]\)\{0,1\}\(.\{3\}-.\{4\}\)\(,[^/]*\)\{0,1\}$$/\2/')
 
 # Output locations for compiled catalog files for categories.
 override categorycatalogs := $(patsubst %,$(BUILDDIR)/catalogs/categories/%/index,$(categories))
 
 # Output locations for compiled catalog files for categories.
 override categorycatalogs := $(patsubst %,$(BUILDDIR)/catalogs/categories/%/index,$(categories))
@@ -171,8 +172,8 @@ override entrycatalogs := $(foreach entry,$(call entriesforcategory,$(categories
 # Output locations for all compiled catalog files.
 override allcatalogs := $(BUILDDIR)/catalogs/indices/index $(BUILDDIR)/catalogs/indices/fullindex $(categorycatalogs) $(entrycatalogs)
 
 # Output locations for all compiled catalog files.
 override allcatalogs := $(BUILDDIR)/catalogs/indices/index $(BUILDDIR)/catalogs/indices/fullindex $(categorycatalogs) $(entrycatalogs)
 
-# (overridable) Options to pass to β›©οΈπŸ“° δΉ¦η€Ύ.
-override shusheopts := SRCDIR=$(call quote,$(if $(wildcard $(ASSETDIR)),$(ASSETDIR),) $(if $(entrycatalogs),$(BUILDDIR)/catalogs/entries,) $(BUILDDIR)/catalogs/indices) BUILDDIR=$(call quote,$(BUILDDIR)/β›©οΈπŸ“°) INCLUDEDIR=$(call quote,$(SRCDIR) $(if $(wildcard $(ASSETINCLUDEDIR)),$(ASSETINCLUDEDIR),) $(if $(categorycatalogs),$(BUILDDIR)/catalogs/categories,)) DESTDIR=$(call quote,$(DESTDIR)) EXTRAMAGIC=$(call quote,$(sort $(patsubst ./%,%,$(wildcard $(THISDIR)/magic/*)) $(EXTRAMAGIC))) EXTRAPARSERS=$(call quote,$(sort $(patsubst ./%,%,$(wildcard $(THISDIR)/parsers/*.xslt)) $(EXTRAPARSERS))) EXTRATRANSFORMS=$(call quote,$(sort $(patsubst ./%,%,$(wildcard $(THISDIR)/transforms/*.xslt)) $(EXTRATRANSFORMS))) GENERATOR=$(call quote,$(GENERATOR)) VERSION=$(call quote,$(VERSION))
+# (overridable) Options to pass to β›©πŸ“° δΉ¦η€Ύ.
+override shusheopts := SRCDIR=$(call quote,$(if $(wildcard $(ASSETDIR)),$(ASSETDIR),) $(if $(entrycatalogs),$(BUILDDIR)/catalogs/entries,) $(BUILDDIR)/catalogs/indices) BUILDDIR=$(call quote,$(BUILDDIR)/β›©πŸ“°) INCLUDEDIR=$(call quote,$(SRCDIR) $(if $(wildcard $(ASSETINCLUDEDIR)),$(ASSETINCLUDEDIR),) $(if $(categorycatalogs),$(BUILDDIR)/catalogs/categories,)) DESTDIR=$(call quote,$(DESTDIR)) EXTRAMAGIC=$(call quote,$(sort $(patsubst ./%,%,$(wildcard $(THISDIR)/magic/*)) $(LESML)/magic $(EXTRAMAGIC))) EXTRAPARSERS=$(call quote,$(sort $(patsubst ./%,%,$(wildcard $(THISDIR)/parsers/*.xslt)) $(LESML)/parser.xslt $(EXTRAPARSERS))) EXTRATRANSFORMS=$(call quote,$(sort $(patsubst ./%,%,$(wildcard $(THISDIR)/transforms/*.xslt)) $(EXTRATRANSFORMS)))
 
 # β”€ ΒΆ Recipe Variable Definitions β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
 
 
 # β”€ ΒΆ Recipe Variable Definitions β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
 
@@ -206,14 +207,14 @@ $(silent)$(XMLCATALOG) --add uri '@' '@' --noout $(call quote,$(BUILDDIR)/catalo
 $(foreach category,$(categories),$(silent)$(XMLCATALOG) --add uri $(call quote,$(category)) $(call quote,$(category)/index) --noout $(call quote,$(BUILDDIR)/catalogs/indices/$(if $1,full,)index)$(newline))
 endef
 
 $(foreach category,$(categories),$(silent)$(XMLCATALOG) --add uri $(call quote,$(category)) $(call quote,$(category)/index) --noout $(call quote,$(BUILDDIR)/catalogs/indices/$(if $1,full,)index)$(newline))
 endef
 
-# β”€ ΒΆ β›©οΈπŸ“° δΉ¦η€Ύ Targets β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
+# β”€ ΒΆ β›©πŸ“° δΉ¦η€Ύ Targets β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
 
 
-# Targets to forward to β›©οΈπŸ“° δΉ¦η€Ύ.
+# Targets to forward to β›©πŸ“° δΉ¦η€Ύ.
 all install list uninstall : $(SHUSHE)/GNUmakefile catalogs
        $(silent)$(MAKE) -f $(call quote,$<) $(call quote,$@) $(shusheopts)
 %-shushe : $(SHUSHE)/GNUmakefile FORCE
        $(silent)$(MAKE) -f $(call quote,$<) $(call quote,$*) $(shusheopts)
 all install list uninstall : $(SHUSHE)/GNUmakefile catalogs
        $(silent)$(MAKE) -f $(call quote,$<) $(call quote,$@) $(shusheopts)
 %-shushe : $(SHUSHE)/GNUmakefile FORCE
        $(silent)$(MAKE) -f $(call quote,$<) $(call quote,$*) $(shusheopts)
-build/β›©οΈπŸ“°/% : $(SHUSHE)/GNUmakefile catalogs FORCE
+build/β›©πŸ“°/% : $(SHUSHE)/GNUmakefile catalogs FORCE
        $(SILENT)$(MAKE) -f $(call quote,$<) $(call quote,$@) $(shusheopts)
 public/% : $(SHUSHE)/GNUmakefile catalogs FORCE
        $(SILENT)$(MAKE) -f $(call quote,$<) $(call quote,$@) $(shusheopts)
        $(SILENT)$(MAKE) -f $(call quote,$<) $(call quote,$@) $(shusheopts)
 public/% : $(SHUSHE)/GNUmakefile catalogs FORCE
        $(SILENT)$(MAKE) -f $(call quote,$<) $(call quote,$@) $(shusheopts)
@@ -243,13 +244,13 @@ listids :
 
 # Output a random unused identifier.
 wrmg :
 
 # Output a random unused identifier.
 wrmg :
-       @$(ECHO) $(wrmg)
+       @$(PRINTF) '%s\n' $(wrmg)
 
 # Create a new entry in the provided category and output its path.
 +% : FORCE
        $(silent)$(call ensuredirectory,$(SRCDIR)/$*)
        $(if $(wildcard $(SRCDIR)/$*/@),,$(silent)$(PRINTF) '%b' '%%\nCATEGORY : $*\n%%\n' > '$(SRCDIR)/$*/@')
 
 # Create a new entry in the provided category and output its path.
 +% : FORCE
        $(silent)$(call ensuredirectory,$(SRCDIR)/$*)
        $(if $(wildcard $(SRCDIR)/$*/@),,$(silent)$(PRINTF) '%b' '%%\nCATEGORY : $*\n%%\n' > '$(SRCDIR)/$*/@')
-       $(foreach identifier,$(wrmg),@$(PRINTF) '%b' '%%\nENTRY : $(identifier)\n%%\n\n' > '$(SRCDIR)/$*/$(identifier)'$(newline)@$(ECHO) '$(SRCDIR)/$*/$(identifier)')
+       $(foreach identifier,$(wrmg),@$(PRINTF) '%b' '\0043!lesml\nENTRY : $(identifier)\n%%\n\n' > '$(SRCDIR)/$*/$(identifier)'$(newline)@$(PRINTF) '%s\n' '$(SRCDIR)/$*/$(identifier)')
 
 # β”€ ΒΆ Special Targets β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
 
 
 # β”€ ΒΆ Special Targets β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
 
@@ -269,14 +270,19 @@ FORCE : ;
 
 # β”€ ΒΆ Build Targets β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
 
 
 # β”€ ΒΆ Build Targets β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
 
-# Initialize the β›©οΈπŸ“° δΉ¦η€Ύ repository if it is empty.
+# Initialize the β›©πŸ“° δΉ¦η€Ύ repository if it is empty.
+ifneq ($(filter $(THISDIR)/%,$(SHUSHE)),)
 $(SHUSHE)/GNUmakefile : $(THISDIR)/%/GNUmakefile :
        @$(PRINTF) '%s\n' $(call quote,Initializing git submodule at `$*Β΄)
        $(silent)cd $(THISDIR) && $(GIT) submodule update --init $(call quote,$*)
 $(SHUSHE)/GNUmakefile : $(THISDIR)/%/GNUmakefile :
        @$(PRINTF) '%s\n' $(call quote,Initializing git submodule at `$*Β΄)
        $(silent)cd $(THISDIR) && $(GIT) submodule update --init $(call quote,$*)
+endif
 
 
-# Touch parsers and transforms if the files in `lib/Β΄ have changed.
-$(PARSERS) $(TRANSFORMS) : $(wildcard lib/*.xslt)
-       $(silent)$(TOUCH) $(call quote,$@)
+# Initialize the πŸ’„πŸ“ LesΒ·MΒ·L repository if it is empty.
+ifneq ($(filter $(THISDIR)/%,$(LESML)),)
+$(LESML)/parser.xslt : $(THISDIR)/%/parser.xslt :
+       @$(PRINTF) '%s\n' $(call quote,Initializing git submodule at `$*Β΄)
+       $(silent)cd $(THISDIR) && $(GIT) submodule update --init $(call quote,$*)
+endif
 
 # Create an empty codex metadata file if none exists.
 $(SRCDIR)/@ :
 
 # Create an empty codex metadata file if none exists.
 $(SRCDIR)/@ :
index d0c0d0d6b9fee8b875c3a387b5debe8c20ff3325..90470f6934b5300340d5fdb384ff797ecd5f1377 100644 (file)
@@ -5,7 +5,7 @@
 <dfn>πŸͺΎπŸ“°Β Caudex</dfn> is a static website generator aimed at
   generating simple, categoryβΉ€based lists of documents akin to the
   β€œCodex” feature of games like <cite>Dragon Age</cite>.
 <dfn>πŸͺΎπŸ“°Β Caudex</dfn> is a static website generator aimed at
   generating simple, categoryβΉ€based lists of documents akin to the
   β€œCodex” feature of games like <cite>Dragon Age</cite>.
-It is built on top of [β›©οΈπŸ“°Β δΉ¦η€Ύ][Shushe] and consequently inherits
+It is built on top of [β›©πŸ“°Β δΉ¦η€Ύ][Shushe] and consequently inherits
   all of the (few) dependencies and prerequisites of the latter.
 
 Using πŸͺΎπŸ“°Β Caudex is fairly straightforward, but customizing its
   all of the (few) dependencies and prerequisites of the latter.
 
 Using πŸͺΎπŸ“°Β Caudex is fairly straightforward, but customizing its
@@ -73,10 +73,10 @@ $(CAUDEX)/GNUmakefile:
 
 ## Setup and Configuration
 
 
 ## Setup and Configuration
 
-πŸͺΎπŸ“°Β Caudex inherits all of the dependencies of β›©οΈπŸ“°Β δΉ¦η€Ύ and enables
+πŸͺΎπŸ“°Β Caudex inherits all of the dependencies of β›©πŸ“°Β δΉ¦η€Ύ and enables
   you to override them in the same way.
 
   you to override them in the same way.
 
-In addition to the configuration variables for β›©οΈπŸ“°Β δΉ¦η€Ύ, the
+In addition to the configuration variables for β›©πŸ“°Β δΉ¦η€Ύ, the
   following variables are recognized and treated specially by
   πŸͺΎπŸ“°Β Caudexβ€―:⁠—
 
   following variables are recognized and treated specially by
   πŸͺΎπŸ“°Β Caudexβ€―:⁠—
 
@@ -108,7 +108,7 @@ In addition to the configuration variables for β›©οΈπŸ“°Β δΉ¦η€Ύ, the
   It *will not* touch other files, including those generated from files
     in `SRCDIR` which have since been deleted.
 
   It *will not* touch other files, including those generated from files
     in `SRCDIR` which have since been deleted.
 
-  Files are first compiled to `$(BUILDDIR)/β›©οΈπŸ“°/public` before they
+  Files are first compiled to `$(BUILDDIR)/β›©πŸ“°/public` before they
     are copied to `DESTDIR`, so this folder is relatively quick and
     inexpensive to reΒ·create.
   It’s reasonable to simply delete it before every `make install` to
     are copied to `DESTDIR`, so this folder is relatively quick and
     inexpensive to reΒ·create.
   It’s reasonable to simply delete it before every `make install` to
@@ -120,13 +120,13 @@ In addition to the configuration variables for β›©οΈπŸ“°Β δΉ¦η€Ύ, the
     need to be set manually.
 
 - **`EXTRAMAGIC`:**
     need to be set manually.
 
 - **`EXTRAMAGIC`:**
-  Additional magic files for β›©οΈπŸ“°Β δΉ¦η€Ύ.
+  Additional magic files for β›©πŸ“°Β δΉ¦η€Ύ.
 
 - **`EXTRAPARSERS`:**
 
 - **`EXTRAPARSERS`:**
-  Additional parsers for β›©οΈπŸ“°Β δΉ¦η€Ύ.
+  Additional parsers for β›©πŸ“°Β δΉ¦η€Ύ.
 
 - **`EXTRATRANSFORMS`:**
 
 - **`EXTRATRANSFORMS`:**
-  Additional transforms for β›©οΈπŸ“°Β δΉ¦η€Ύ.
+  Additional transforms for β›©πŸ“°Β δΉ¦η€Ύ.
 
 - **`GENERATOR`:**
   The name of the generator program (default: `πŸͺΎπŸ“°Β Caudex`).
 
 - **`GENERATOR`:**
   The name of the generator program (default: `πŸͺΎπŸ“°Β Caudex`).
@@ -156,44 +156,18 @@ The command `make +⟨category⟩` is provided as a convenience to create
 If the identifier is followed by a comma, the remainder of the
   fileΒ·name may be used to provide a humanβΉ€friendly description of the
   file’s contents.
 If the identifier is followed by a comma, the remainder of the
   fileΒ·name may be used to provide a humanβΉ€friendly description of the
   file’s contents.
-Remember: The fileΒ·name still needs to be compatible with β›©οΈπŸ“°Β δΉ¦η€Ύ
+Remember: The fileΒ·name still needs to be compatible with β›©πŸ“°Β δΉ¦η€Ύ
   and Make (it must not contain spaces or other fraught Ascii
   characters).
 
   and Make (it must not contain spaces or other fraught Ascii
   characters).
 
-Entries should be of the `text/x.codex-entry` format, which is defined
-  as followsβ€―:⁠—
-
-1. The string `%%`, followed by a newline and
-
-2. A [Record Jar][draft-phillips-record-jar-01] record starting with
-     `ENTRY :`, followed by
-
-3. Any number of additional records, followed by
-
-4. Zero or more lines of (mostlyβΉ€)plain text.
-
-For exampleβ€―:⁠—
-
-```txt
-%%
-ENTRY : 30W-5M41
-TITLE : My Amazing Entry
-%%
-
-This is the text of my amazing entry.
-```
-
-The text of the entry is processed minimally:
-It is broken into paragraphs on blank lines, and paragraphs for which
-  each line begins with whiteΒ·space are considered block quotations.
-All other whitespace is trimmed and collapsed.
+Entries need to be in [πŸ’„πŸ“Β LesΒ·MΒ·L][LesML] format.
 
 ## Metadata
 
 Codices, categories, and entries should all have metadata.
 For entries, the metadata is provided by the record which begins the
 
 ## Metadata
 
 Codices, categories, and entries should all have metadata.
 For entries, the metadata is provided by the record which begins the
-  `text/x.codex-entry` format.
-For codicies and categories, the metadata is provided by a special file
+  document.
+For codices and categories, the metadata is provided by a special file
   named `@` in `SRCDIR` or the category directory, respectively.
 In all cases, metadata is kept in the Record Jar format.
 
   named `@` in `SRCDIR` or the category directory, respectively.
 In all cases, metadata is kept in the Record Jar format.
 
@@ -230,7 +204,7 @@ Two index files are createdβ€―:⁠— `index.xhtml` loads entries
   entries and does not require a network connection.
 
 Output can be customized by supplying additional transforms, β…Œ normal
   entries and does not require a network connection.
 
 Output can be customized by supplying additional transforms, β…Œ normal
-  β›©οΈπŸ“°Β δΉ¦η€Ύ conventions.
+  β›©πŸ“°Β δΉ¦η€Ύ conventions.
 The easiest way to customize the transform is to introduce new
   templates which operate in the `δΉ¦η€Ύ:header`, `δΉ¦η€Ύ:footer`, or
   `δΉ¦η€Ύ:metadata` modes.
 The easiest way to customize the transform is to introduce new
   templates which operate in the `δΉ¦η€Ύ:header`, `δΉ¦η€Ύ:footer`, or
   `δΉ¦η€Ύ:metadata` modes.
@@ -270,5 +244,6 @@ If you want to customize the actual main body output of πŸͺΎπŸ“°Β Caudex,
 </transform>
 ```
 
 </transform>
 ```
 
+[LesML]: <https://git.ladys.computer/LesML>
 [Shushe]: <https://git.ladys.computer/Shushe>
 [draft-phillips-record-jar-01]: <https://datatracker.ietf.org/doc/html/draft-phillips-record-jar-01>
 [Shushe]: <https://git.ladys.computer/Shushe>
 [draft-phillips-record-jar-01]: <https://datatracker.ietf.org/doc/html/draft-phillips-record-jar-01>
diff --git a/lib/split.xslt b/lib/split.xslt
deleted file mode 100644 (file)
index bf05118..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-⁌ πŸͺΎπŸ“° Caudex βˆ· lib/split.xslt
-
-Β© 2024 Lady [@ Lady’s Computer]
-
-This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
-If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
--->
-<transform
-       xmlns="http://www.w3.org/1999/XSL/Transform"
-       xmlns:Caudex="urn:fdc:ladys.computer:20240204:Caudex"
-       xmlns:html="http://www.w3.org/1999/xhtml"
-       exclude-result-prefixes="Caudex"
-       version="1.0"
->
-       <template name="Caudex:split">
-               <param name="source"/>
-               <param name="separator" select="'&#xA;'"/>
-               <choose>
-                       <when test="contains($source, $separator)">
-                               <html:span>
-                                       <value-of select="substring-before($source, $separator)"/>
-                               </html:span>
-                               <call-template name="Caudex:split">
-                                       <with-param name="source" select="substring-after($source, $separator)"/>
-                                       <with-param name="separator" select="$separator"/>
-                               </call-template>
-                       </when>
-                       <otherwise>
-                               <html:span>
-                                       <value-of select="$source"/>
-                               </html:span>
-                       </otherwise>
-               </choose>
-       </template>
-</transform>
diff --git a/magic/codex-entry b/magic/codex-entry
deleted file mode 100644 (file)
index 2eca487..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-0  string  %%\nENTRY\ :  codex entry text
-!:mime text/x.codex-entry
-!:strength + 100
diff --git a/parsers/codex-entry.xslt b/parsers/codex-entry.xslt
deleted file mode 100644 (file)
index d854ebe..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<!--
-⁌ πŸͺΎπŸ“° Caudex βˆ· parsers/codex-entry.xslt
-
-Β© 2024 Lady [@ Lady’s Computer]
-
-This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
-If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
--->
-<transform
-       xmlns="http://www.w3.org/1999/XSL/Transform"
-       xmlns:Caudex="urn:fdc:ladys.computer:20240204:Caudex"
-       xmlns:exsl="http://exslt.org/common"
-       xmlns:html="http://www.w3.org/1999/xhtml"
-       xmlns:δΉ¦η€Ύ="urn:fdc:ladys.computer:20231231:Shu1She4"
-       exclude-result-prefixes="exsl Caudex"
-       version="1.0"
->
-       <import href="../lib/split.xslt"/>
-       <δΉ¦η€Ύ:id>urn:fdc:ladys.computer:20240204:Caudex:codex-entry.xslt</δΉ¦η€Ύ:id>
-       <template match="html:script[@type='text/x.codex-entry']">
-               <variable name="lines">
-                       <call-template name="Caudex:split">
-                               <with-param name="source" select="string()"/>
-                       </call-template>
-               </variable>
-               <variable name="linespans" select="exsl:node-set($lines)/*"/>
-               <variable name="record-end" select="$linespans[starts-with(., '%%')][last()]"/>
-               <variable name="text-start" select="$record-end/following-sibling::*[string()!=''][1]"/>
-               <html:div>
-                       <html:script type="text/record-jar">
-                               <for-each select="$record-end/preceding-sibling::*|$record-end">
-                                       <value-of select="."/>
-                                       <text>&#xA;</text>
-                               </for-each>
-                       </html:script>
-                       <html:script type="text/plain">
-                               <for-each select="$text-start|$text-start/following-sibling::*">
-                                       <value-of select="."/>
-                                       <text>&#xA;</text>
-                               </for-each>
-                       </html:script>
-               </html:div>
-       </template>
-</transform>
index 96cd637acbad2c27fe2584afe52aaeda7173ab17..82bbf21bb92e57928df1dbf5f38b641642c4da99 100644 (file)
@@ -9,6 +9,7 @@ If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one
 -->
 <!DOCTYPE transform [
        <!ENTITY Caudex "urn:fdc:ladys.computer:20240204:Caudex:">
 -->
 <!DOCTYPE transform [
        <!ENTITY Caudex "urn:fdc:ladys.computer:20240204:Caudex:">
+       <!ENTITY LesML "urn:fdc:ladys.computer:20240512:LesML:">
        <!ENTITY δΉ¦η€Ύ "urn:fdc:ladys.computer:20231231:Shu1She4:">
 ]>
 <transform
        <!ENTITY δΉ¦η€Ύ "urn:fdc:ladys.computer:20231231:Shu1She4:">
 ]>
 <transform
@@ -20,15 +21,14 @@ If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one
        exclude-result-prefixes="exsl Caudex"
        version="1.0"
 >
        exclude-result-prefixes="exsl Caudex"
        version="1.0"
 >
-       <import href="../lib/split.xslt"/>
        <δΉ¦η€Ύ:id>&Caudex;entry.xslt</δΉ¦η€Ύ:id>
        <template match="/html:div[@δΉ¦η€Ύ:parsed-by='&Caudex;catalog.xslt'][@class='entry']">
                <html:body>
                        <for-each select="@*[namespace-uri()!='urn:fdc:ladys.computer:20231231:Shu1She4']">
                                <copy/>
                        </for-each>
        <δΉ¦η€Ύ:id>&Caudex;entry.xslt</δΉ¦η€Ύ:id>
        <template match="/html:div[@δΉ¦η€Ύ:parsed-by='&Caudex;catalog.xslt'][@class='entry']">
                <html:body>
                        <for-each select="@*[namespace-uri()!='urn:fdc:ladys.computer:20231231:Shu1She4']">
                                <copy/>
                        </for-each>
-                       <for-each select="html:div[@id='@']/html:div[@δΉ¦η€Ύ:parsed-by='&Caudex;codex-entry.xslt']">
-                               <variable name="metadata" select="html:div[@δΉ¦η€Ύ:parsed-by='&δΉ¦η€Ύ;record-jar.xslt']/html:dl[1]"/>
+                       <for-each select="html:div[@id='@']/html:article[@δΉ¦η€Ύ:parsed-by='&LesML;parser.xslt']">
+                               <variable name="metadata" select="html:footer[@class='head']/html:dl[1]"/>
                                <html:meta itemprop="&δΉ¦η€Ύ;title">
                                        <attribute name="content">
                                                <value-of select="$metadata//html:dt[string()='TITLE']/following-sibling::html:dd"/>
                                <html:meta itemprop="&δΉ¦η€Ύ;title">
                                        <attribute name="content">
                                                <value-of select="$metadata//html:dt[string()='TITLE']/following-sibling::html:dd"/>
@@ -48,42 +48,7 @@ If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one
                                                        <value-of select="$metadata//html:dt[string()='TITLE']/following-sibling::html:dd"/>
                                                </html:h1>
                                        </if>
                                                        <value-of select="$metadata//html:dt[string()='TITLE']/following-sibling::html:dd"/>
                                                </html:h1>
                                        </if>
-                                       <variable name="paragraphs">
-                                               <call-template name="Caudex:split">
-                                                       <with-param name="source" select="string(html:pre[@δΉ¦η€Ύ:parsed-by='&δΉ¦η€Ύ;plain.xslt'])"/>
-                                                       <with-param name="separator" select="'&#xA;&#xA;'"/>
-                                               </call-template>
-                                       </variable>
-                                       <for-each select="exsl:node-set($paragraphs)/*">
-                                               <variable name="lines">
-                                                       <call-template name="Caudex:split">
-                                                               <with-param name="source" select="string()"/>
-                                                       </call-template>
-                                               </variable>
-                                               <variable name="linespans" select="exsl:node-set($lines)/*"/>
-                                               <variable name="partype">
-                                                       <choose>
-                                                               <when test="not($linespans[not(starts-with(., ' ') or starts-with(., '&#x9;'))])">
-                                                                       <text>blockquote</text>
-                                                               </when>
-                                                               <otherwise>
-                                                                       <text>p</text>
-                                                               </otherwise>
-                                                       </choose>
-                                               </variable>
-                                               <if test="$linespans[normalize-space()!='']">
-                                                       <element name="html:{$partype}">
-                                                               <for-each select="$linespans">
-                                                                       <if test="normalize-space()!=''">
-                                                                               <value-of select="normalize-space()"/>
-                                                                               <if test="following-sibling::*[normalize-space()!='']">
-                                                                                       <text> </text>
-                                                                               </if>
-                                                                       </if>
-                                                               </for-each>
-                                                       </element>
-                                               </if>
-                                       </for-each>
+                                       <apply-templates select="node()[not(self::html:footer[@class='head'])]"/>
                                </html:article>
                        </for-each>
                </html:body>
                                </html:article>
                        </for-each>
                </html:body>
index 7bb1ef85096983fc965c13be8a3734b5b69b33ba..3810b66138c980db6a65a63a0957c971a7f91d7a 100644 (file)
@@ -9,6 +9,7 @@ If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one
 -->
 <!DOCTYPE transform [
        <!ENTITY Caudex "urn:fdc:ladys.computer:20240204:Caudex:">
 -->
 <!DOCTYPE transform [
        <!ENTITY Caudex "urn:fdc:ladys.computer:20240204:Caudex:">
+       <!ENTITY LesML "urn:fdc:ladys.computer:20240512:LesML:">
        <!ENTITY δΉ¦η€Ύ "urn:fdc:ladys.computer:20231231:Shu1She4:">
 ]>
 <transform
        <!ENTITY δΉ¦η€Ύ "urn:fdc:ladys.computer:20231231:Shu1She4:">
 ]>
 <transform
@@ -20,7 +21,6 @@ If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one
        exclude-result-prefixes="exsl"
        version="1.0"
 >
        exclude-result-prefixes="exsl"
        version="1.0"
 >
-       <import href="../lib/split.xslt"/>
        <δΉ¦η€Ύ:id>&Caudex;index.xslt</δΉ¦η€Ύ:id>
        <template match="/html:div[@δΉ¦η€Ύ:parsed-by='&Caudex;catalog.xslt'][@class='index' or @class='fullindex']">
                <html:body>
        <δΉ¦η€Ύ:id>&Caudex;index.xslt</δΉ¦η€Ύ:id>
        <template match="/html:div[@δΉ¦η€Ύ:parsed-by='&Caudex;catalog.xslt'][@class='index' or @class='fullindex']">
                <html:body>
@@ -46,10 +46,10 @@ If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one
                                                                        </choose>
                                                                </html:strong>
                                                                <html:ul>
                                                                        </choose>
                                                                </html:strong>
                                                                <html:ul>
-                                                                       <for-each select="html:div[@id!='@']/html:div[@δΉ¦η€Ύ:parsed-by='&Caudex;codex-entry.xslt']">
-                                                                               <sort select="html:div[@δΉ¦η€Ύ:parsed-by='&δΉ¦η€Ύ;record-jar.xslt']/html:dl[1]//html:dt[string()='TITLE']/following-sibling::html:dd"/>
+                                                                       <for-each select="html:div[@id!='@']/html:article[@δΉ¦η€Ύ:parsed-by='&LesML;parser.xslt']">
+                                                                               <sort select="html:footer[@class='head']/html:dl[1]//html:dt[string()='TITLE']/following-sibling::html:dd"/>
                                                                                <sort select="../@id"/>
                                                                                <sort select="../@id"/>
-                                                                               <variable name="entry-metadata" select="html:div[@δΉ¦η€Ύ:parsed-by='&δΉ¦η€Ύ;record-jar.xslt']/html:dl[1]"/>
+                                                                               <variable name="entry-metadata" select="html:footer[@class='head']/html:dl[1]"/>
                                                                                <html:li>
                                                                                        <html:a href="{../@id}.xhtml" data-identifier="{../@id}" data-cksum="{@δΉ¦η€Ύ:cksum}">
                                                                                                <value-of select="$entry-metadata//html:dt[string()='TITLE']/following-sibling::html:dd"/>
                                                                                <html:li>
                                                                                        <html:a href="{../@id}.xhtml" data-identifier="{../@id}" data-cksum="{@δΉ¦η€Ύ:cksum}">
                                                                                                <value-of select="$entry-metadata//html:dt[string()='TITLE']/following-sibling::html:dd"/>
@@ -69,7 +69,7 @@ If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one
                                </html:nav>
                                <html:div id="pane">
                                        <if test="@class='fullindex'">
                                </html:nav>
                                <html:div id="pane">
                                        <if test="@class='fullindex'">
-                                               <for-each select=".//html:div[@δΉ¦η€Ύ:parsed-by='&Caudex;catalog.xslt'][@class='category']/html:div[@id!='@']/html:div[@δΉ¦η€Ύ:parsed-by='&Caudex;codex-entry.xslt']">
+                                               <for-each select=".//html:div[@δΉ¦η€Ύ:parsed-by='&Caudex;catalog.xslt'][@class='category']/html:div[@id!='@']/html:article[@δΉ¦η€Ύ:parsed-by='&LesML;parser.xslt']">
                                                        <variable name="context" select="."/>
                                                        <variable name="entry">
                                                                <html:div δΉ¦η€Ύ:parsed-by="&Caudex;catalog.xslt" class="entry">
                                                        <variable name="context" select="."/>
                                                        <variable name="entry">
                                                                <html:div δΉ¦η€Ύ:parsed-by="&Caudex;catalog.xslt" class="entry">
index 158b5d797f3a3eba413cd5a8908af222c9210bac..e132898d669ffa54c4399eab1738099fe24f30bf 100644 (file)
@@ -15,7 +15,7 @@ If a copy of the MΒ·PΒ·L was not distributed with this file, You can obtain one
        version="1.0"
 >
        <δΉ¦η€Ύ:id>urn:fdc:ladys.computer:20240204:Caudex:metadata.xslt</δΉ¦η€Ύ:id>
        version="1.0"
 >
        <δΉ¦η€Ύ:id>urn:fdc:ladys.computer:20240204:Caudex:metadata.xslt</δΉ¦η€Ύ:id>
-       <template match="xslt:include[@δΉ¦η€Ύ:id='urn:fdc:ladys.computer:20240204:Caudex:metadata.xslt']" mode="δΉ¦η€Ύ:metadata">
+       <template match="δΉ¦η€Ύ:id[string()='urn:fdc:ladys.computer:20240204:Caudex:metadata.xslt']" mode="δΉ¦η€Ύ:metadata">
                <html:style type="text/css">
                        <text><![CDATA[@charset "UTF-8";
 @namespace html "http://www.w3.org/1999/xhtml";
                <html:style type="text/css">
                        <text><![CDATA[@charset "UTF-8";
 @namespace html "http://www.w3.org/1999/xhtml";
This page took 0.043103 seconds and 4 git commands to generate.