<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tpl, branch main</title>
<subtitle>Simple templating script</subtitle>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/'/>
<entry>
<title>Update readme</title>
<updated>2026-06-13T05:38:38+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-13T05:38:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=b240709d3e2b978f99716e61b05fc40b3f06c2d9'/>
<id>b240709d3e2b978f99716e61b05fc40b3f06c2d9</id>
<content type='text'>
Fixed program name in main header, improved and expanded some text,
fixed some inacurate specification details, fixed a typo, and improved
formatting.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixed program name in main header, improved and expanded some text,
fixed some inacurate specification details, fixed a typo, and improved
formatting.
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump version to 1.0.1</title>
<updated>2026-06-11T11:07:25+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-11T08:21:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=fc2504a18b81a35a700dae09409dd003ba8d8d6d'/>
<id>fc2504a18b81a35a700dae09409dd003ba8d8d6d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve variable substitution efficiency</title>
<updated>2026-06-11T11:07:02+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-11T10:52:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=ffd126df6dd6821d2b2b02d847abab6638aca2c1'/>
<id>ffd126df6dd6821d2b2b02d847abab6638aca2c1</id>
<content type='text'>
If a value in the variables file contains multiple instances of the same
variable, they will all be replaced in a single function call,
eliminating the need to loop over the same block of code multiple times.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a value in the variables file contains multiple instances of the same
variable, they will all be replaced in a single function call,
eliminating the need to loop over the same block of code multiple times.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove a period from a comment header</title>
<updated>2026-06-11T11:02:09+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-11T08:19:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=c1fedee8569ed98979c36d4e0803cd61ff5504fa'/>
<id>c1fedee8569ed98979c36d4e0803cd61ff5504fa</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix brace escaping in regexes</title>
<updated>2026-06-11T11:02:09+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-11T07:23:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=b10392c52dc06489b65e638b8ca71771b763bf03'/>
<id>b10392c52dc06489b65e638b8ca71771b763bf03</id>
<content type='text'>
The POSIX extended regular expression spec requires that the left brace
character be escaped when it appears outside of an interval expression.
The results are undefined if the brace is not escaped.[^1]

The ERE spec permits right braces to be escaped, though this isn't
required.[^2] But the standard ERE escaping rules are superseded in the
POSIX awk specification. The awk spec does not specify a right brace
escape sequence, so the meaning of an escaped right brace is
undefined.[^3]

We have a number of escaped right braces and one instance of a string
variable containing unescaped left braces being passed to a function as
a regex. These don't cause any problems in practice, but to ensure
maximum portability and pedantry, we bring everything into strict
compliance with the spec here.

[^1]: POSIX.1-2024 XBD 9.4.3:
     &lt;https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap09.html#tag_09_04_03&gt;

[^2]: POSIX.1-2024 XBD 9.4.2:
     &lt;https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap09.html#tag_09_04_02&gt;

[^3]: POSIX.1-2024 awk:
     &lt;https://pubs.opengroup.org/onlinepubs/9799919799/utilities/awk.html#tag_20_06_13_04&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The POSIX extended regular expression spec requires that the left brace
character be escaped when it appears outside of an interval expression.
The results are undefined if the brace is not escaped.[^1]

The ERE spec permits right braces to be escaped, though this isn't
required.[^2] But the standard ERE escaping rules are superseded in the
POSIX awk specification. The awk spec does not specify a right brace
escape sequence, so the meaning of an escaped right brace is
undefined.[^3]

We have a number of escaped right braces and one instance of a string
variable containing unescaped left braces being passed to a function as
a regex. These don't cause any problems in practice, but to ensure
maximum portability and pedantry, we bring everything into strict
compliance with the spec here.

[^1]: POSIX.1-2024 XBD 9.4.3:
     &lt;https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap09.html#tag_09_04_03&gt;

[^2]: POSIX.1-2024 XBD 9.4.2:
     &lt;https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap09.html#tag_09_04_02&gt;

[^3]: POSIX.1-2024 awk:
     &lt;https://pubs.opengroup.org/onlinepubs/9799919799/utilities/awk.html#tag_20_06_13_04&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add version number</title>
<updated>2026-06-07T23:50:56+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-07T19:40:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=653365c2366785a7fb3b012fe39dbd3ca9707606'/>
<id>653365c2366785a7fb3b012fe39dbd3ca9707606</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add a note about regex metacharacter escaping</title>
<updated>2026-06-07T23:50:56+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-07T16:51:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=1cedfb65dc3a2a6428e7492ed61c2060a9844810'/>
<id>1cedfb65dc3a2a6428e7492ed61c2060a9844810</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename command to "tpl"</title>
<updated>2026-06-07T23:50:56+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-07T16:39:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=2aa8ed870cb212328563b8a300b3a3b6754ce4e6'/>
<id>2aa8ed870cb212328563b8a300b3a3b6754ce4e6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add header comment to script</title>
<updated>2026-06-07T23:50:56+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-07T08:14:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=17f146903eb94c930371a40a5f018520fe9a9f6b'/>
<id>17f146903eb94c930371a40a5f018520fe9a9f6b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add license</title>
<updated>2026-06-07T23:50:56+00:00</updated>
<author>
<name>Benjamin Linskey</name>
</author>
<published>2026-06-07T08:11:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.linskey.org/tpl/commit/?id=e68c0e195916ee5d90a2d375433c433b456f80fa'/>
<id>e68c0e195916ee5d90a2d375433c433b456f80fa</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
