]> Lady’s Gitweb - Shushe/commitdiff
Use pipe as internal delimiter instead of colon
authorLady <redacted>
Tue, 16 Jan 2024 03:20:45 +0000 (22:20 -0500)
committerLady <redacted>
Thu, 18 Jan 2024 02:36:51 +0000 (21:36 -0500)
Colons are valid characters in u·r·i’s, whereas pipes are not. Both
characters are forbidden in filenames because they have special meaning
in make·files, so there’s no reason to use the more confusing option.

GNUmakefile

index a16e29c149ec0491ff5865a618b3d778d9f6208f..93a8a13dc05c0f106f5e23f57ecfdf092ef0f6b4 100644 (file)
@@ -208,7 +208,7 @@ override silent := $(if $(VERBOSE),,@)
 override sedesc = $(subst /,[/],$(subst $$,\$$,$(subst *,\*,$(subst .,\.,$(subst [,\[,$(subst ^,\^,$(subst \,\\,$1)))))))
 
 # (callable) Percent‐decode the given strings.
-override perdec = $(foreach encoded,$1,$(shell $(PRINTF) '%s\n' $(call quote,$(encoded)) | $(SED) 's/`/`%60`/g;s/[\]/`%5C`/g;s/%[0-9A-Fa-f]\{2\}/`&`/g' | $(TR) '`' '\n' | $(SED) '/^%[0-9A-Fa-f]\{2\}$$/!s/%/`%25`/' | $(TR) '`' '\n' | $(AWK) '$$0!~/%/{printf("%s",$$0)}/%/{sub("%","0x");printf("\\%04o",$$0)}' | $(XARGS) -0 $(PRINTF) '%b'))
+override perdec = $(foreach encoded,$1,$(shell $(PRINTF) '%s\n' $(call quote,$(encoded)) | $(SED) 's/|/|%7C|/g;s/[\]/|%5C|/g;s/%[0-9A-Fa-f]\{2\}/|&|/g' | $(TR) '|' '\n' | $(SED) '/^%[0-9A-Fa-f]\{2\}$$/!s/%/|%25|/' | $(TR) '|' '\n' | $(AWK) '$$0!~/%/{printf("%s",$$0)}/%/{sub("%","0x");printf("\\%04o",$$0)}' | $(XARGS) -0 $(PRINTF) '%b'))
 
 # (callable) Percent‐encode the given strings.
 #
@@ -232,7 +232,7 @@ sourcefiles := $(filter-out $(sourceincludes),$(shell $(FIND) $(FINDOPTS) $(SRCD
 
 # Figure out the file type of each source file and source include.
 ifneq ($(wildcard $(BUILDDIR)/magic.mgc),)
-override types := $(shell $(SED) 's/^ *//;s/ *$$//;s/ {2,}/ /g' <<< $(call quote,$(sourcefiles) $(sourceincludes)) | $(TR) ' ' '\n' | $(FILE) -m $(call quote,$(BUILDDIR)/magic.mgc) --mime-type --separator ':' --files-from - | $(SED) 's/: */:/g')
+override types := $(shell $(SED) 's/^ *//;s/ *$$//;s/ {2,}/ /g' <<< $(call quote,$(sourcefiles) $(sourceincludes)) | $(TR) ' ' '\n' | $(FILE) -m $(call quote,$(BUILDDIR)/magic.mgc) --mime-type --separator '|' --files-from - | $(SED) 's/| */|/g')
 endif
 
 # Get the list of supported plaintext file types from the parser.
@@ -242,7 +242,7 @@ endif
 
 # (callable) Get all of the files (source and includes) which have the
 # given types.
-override filesoftype = $(foreach type,$1,$(patsubst %:$(type),%,$(filter %:$(type),$(types))))
+override filesoftype = $(foreach type,$1,$(patsubst %|$(type),%,$(filter %|$(type),$(types))))
 
 # Build up collections of various file types.
 override xmlfiles := $(call filesoftype,$(XMLTYPES))
@@ -250,7 +250,7 @@ override plaintextfiles := $(filter-out $(xmlfiles),$(call filesoftype,$(plainte
 override assetfiles := $(filter-out $(xmlfiles) $(plaintextfiles),$(sourcefiles) $(sourceincludes))
 
 # (callable) Get the types of the given files.
-override typeoffile = $(patsubst $(foreach file,$1,$(file):%),%,$(filter $(foreach file,$1,$(file):%),$(types)))
+override typeoffile = $(patsubst $(foreach file,$1,$(file)|%),%,$(filter $(foreach file,$1,$(file)|%),$(types)))
 
 # (callable) Get the identifier for the given transform.
 override id = $(or $(shell $(XMLLINT) --xpath '/*/*[local-name()="id" and namespace-uri()="urn:fdc:ladys.computer:20231231:Shu1She4"]/text()[1]' $1),example:$(call pathenc,$(basename $(notdir $1))))
@@ -265,13 +265,13 @@ override includepath = $(firstword $(foreach directory,$(INCLUDEDIR),$(if $(filt
 override datauri = $(foreach file,$1,data:$(call typeoffile,$(file));base64,$(shell $(UUENCODE) -m -r $(call quote,$(file)) _ | tr -d ' \n'))
 
 # Pair each source file and include with its local u·r·i.
-override sourcelocalpair = $(foreach file,$(sourcefiles) $(sourceincludes),$(if $(filter $(file),$(sourceincludes)),$(file):about:shushe?include=$(call pathenc,$(call includepath,$(file))),$(file):about:shushe?source=$(call pathenc,$(call sourcepath,$(file)))))
+override sourcelocalpair := $(foreach file,$(sourcefiles) $(sourceincludes),$(file)|about:shushe?$(if $(filter $(file),$(sourceincludes)),include=$(call pathenc,$(call includepath,$(file))),source=$(call pathenc,$(call sourcepath,$(file)))))
 
 # (callable) Get local uris for the given files.
-override localuri = $(foreach file,$1,$(patsubst $(file):%,%,$(filter $(file):%,$(sourcelocalpair))))
+override localuri = $(foreach file,$1,$(patsubst $(file)|%,%,$(filter $(file)|%,$(sourcelocalpair))))
 
 # (callable) Get the source files for the given local uris.
-override sourcefile = $(foreach local,$1,$(patsubst %:$(local),%,$(filter %:$(local),$(sourcelocalpair))))
+override sourcefile = $(foreach local,$1,$(patsubst %|$(local),%,$(filter %|$(local),$(sourcelocalpair))))
 
 # Adds a requirement on `$(BUILDDIR)/.update-types´ if the file is
 # present.
@@ -281,25 +281,25 @@ override sourcefile = $(foreach local,$1,$(patsubst %:$(local),%,$(filter %:$(lo
 # up‐to‐date immediately after the reload.
 override typeupdates := $(wildcard $(BUILDDIR)/.update-types)
 
+# Pair each source file and include with its parsed location.
+override sourceparsedpair := $(foreach file,$(sourcefiles) $(sourceincludes),$(file)|$(BUILDDIR)/$(if $(filter $(file),$(sourceincludes)),includes/$(call includepath,$(file)),sources/$(call sourcepath,$(file))))
+
 # (callable) Get the location of the transformed X·M·L files for the
 # given source files.
-override parsed = $(foreach file,$1,$(if $(filter $(file),$(sourceincludes)),$(BUILDDIR)/includes/$(call includepath,$(file)),$(BUILDDIR)/sources/$(call sourcepath,$(file))))
-
-# Pair each source file and include with its parsed location.
-override sourceparsedpair = $(foreach file,$(sourcefiles) $(sourceincludes),$(file):$(call parsed,$(file)))
+override parsed = $(foreach file,$1,$(patsubst $(file)|%,%,$(filter $(file)|%,$(sourceparsedpair))))
 
 # (callable) Get the source files for the given parsed file.
-override unparsed = $(foreach file,$1,$(patsubst %:$(file),%,$(filter %:$(file),$(sourceparsedpair))))
+override unparsed = $(foreach file,$1,$(patsubst %|$(file),%,$(filter %|$(file),$(sourceparsedpair))))
 
 ifneq ($(wildcard $(BUILDDIR)/dependencies),)
 # Pair each file with a list of dependencies for it.
-override dependenciesforfile := $(foreach file,$(sourcefiles),$(file):$(subst $(space),:,$(shell $(CAT) $(call quote,$(BUILDDIR)/dependencies) | $(SED) $(call quote,/^$(call sedesc,$(call localuri,$(file)))$$/$(comma)/^[^  ]/!d;/^ /!d;s/^ //))))
+override dependenciesforfile := $(foreach file,$(sourcefiles),$(file)|$(subst $(space),|,$(shell $(CAT) $(call quote,$(BUILDDIR)/dependencies) | $(SED) $(call quote,/^$(call sedesc,$(call localuri,$(file)))$$/$(comma)/^[^  ]/!d;/^ /!d;s/^ //))))
 
 # (callable) Get the list of dependency leiris for the given source
 # files.
 #
 # Recursive dependencies are marked with a leading `-´.
-override dependencyuris = $(foreach file,$1,$(subst :, ,$(patsubst $(file):%,%,$(filter $(file):%,$(dependenciesforfile)))))
+override dependencyuris = $(foreach file,$1,$(subst |, ,$(patsubst $(file)|%,%,$(filter $(file)|%,$(dependenciesforfile)))))
 
 # (callable) Get the list of recursive dependencies for the given
 # source files.
@@ -318,14 +318,15 @@ override recursivefiles := $(foreach file,$(filter-out $(assetfiles),$(sourcefil
 # This is all of the non·asset, nonrecursive files.
 override compilablefiles := $(filter-out $(assetfiles) $(recursivefiles),$(sourcefiles))
 
-# (callable) Get the compiled locations for the given source files.
-override compiled = $(foreach file,$1,$(BUILDDIR)/public/$(call sourcepath,$(file)))
-
 # Pair each source file and include with its compiled location.
-override sourcecompiledpair = $(foreach file,$(sourcefiles) $(sourceincludes),$(file):$(call compiled,$(file)))
+override sourcecompiledpair := $(foreach file,$(sourcefiles) $(sourceincludes),$(file)|$(BUILDDIR)/public/$(call sourcepath,$(file)))
+
+# (callable) Get the location of the transformed X·M·L files for the
+# given source files.
+override compiled = $(foreach file,$1,$(patsubst $(file)|%,%,$(filter $(file)|%,$(sourcecompiledpair))))
 
 # (callable) Get the source files for the given compiled file.
-override uncompiled = $(foreach file,$1,$(patsubst %:$(file),%,$(filter %:$(file),$(sourcecompiledpair))))
+override uncompiled = $(foreach file,$1,$(patsubst %|$(file),%,$(filter %|$(file),$(sourcecompiledpair))))
 
 # (callable) Get the installed locations for the given source files.
 override installed = $(foreach file,$1,$(DESTDIR)/$(call sourcepath,$(file)))
@@ -362,12 +363,12 @@ install: $(call installed,$(recursivefiles) $(compilablefiles) $(filter $(source
 
 # List all source files and includes and their computed types.
 list:
-       $(silent)$(PRINTF) '%b' $(call quote,$(foreach file,$(sort $(sourcefiles)) $(sort $(sourceincludes)),\0033[1m$(file)\0033[22m:$(call typeoffile,$(file)):[\0033[3m$(if $(filter $(file),$(xmlfiles)),xml,$(if $(filter $(file),$(plaintextfiles)),text,asset))$(if $(filter $(file),$(sourceincludes)),:include,)\0033[23m]$(if $(call dependencies,$(file))$(call recursives,$(file)), $(strip $(foreach recursive,$(call recursives,$(file)),\0033[93;41m•:Recursive:Dependency:\0033[39;49m:$(recursive)) $(foreach dependency,$(call dependencies,$(file)),\0033[2m•:Dependency:\0033[22m:$(dependency)))) )) | $(TR) ' :' '\n '
+       $(silent)$(PRINTF) '%b' $(call quote,$(foreach file,$(sort $(sourcefiles)) $(sort $(sourceincludes)),\0033[1m$(file)\0033[22m|$(call typeoffile,$(file))|[\0033[3m$(if $(filter $(file),$(xmlfiles)),xml,$(if $(filter $(file),$(plaintextfiles)),text,asset))$(if $(filter $(file),$(sourceincludes)),|include,)\0033[23m]$(if $(call dependencies,$(file))$(call recursives,$(file)), $(strip $(foreach recursive,$(call recursives,$(file)),\0033[93;41m•|Recursive|Dependency|\0033[39;49m|$(recursive)) $(foreach dependency,$(call dependencies,$(file)),\0033[2m•|Dependency|\0033[22m|$(dependency)))) )) | $(TR) ' |' '\n '
 
 # Raise an error when attempting to build any files with recursive
 # dependencies.
 $(call compiled,$(recursivefiles)):
-       @$(PRINTF) '%b\n' $(call quote,\0033[93;41mError:\0033[39;49m `$(call uncompiled,$@)´ has recursive dependencies:\n$(subst :, ,$(subst $(space),$(newline),$(foreach recursive,$(call recursives,$(call uncompiled,$@)),•:$(recursive))))) && false
+       @$(PRINTF) '%b\n' $(call quote,\0033[93;41mError:\0033[39;49m `$(call uncompiled,$@)´ has recursive dependencies:\n$(subst |, ,$(subst $(space),$(newline),$(foreach recursive,$(call recursives,$(call uncompiled,$@)),•|$(recursive))))) && false
 
 # ─ ¶ Special Targets ─────────────────────────────────────────────────
 
This page took 0.030422 seconds and 4 git commands to generate.