--- /srv/reproducible-results/rbuild-debian/r-b-build.Y73bU5hC/b1/htp_1.19-8_armhf.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.Y73bU5hC/b2/htp_1.19-8_armhf.changes ├── Files │ @@ -1,3 +1,3 @@ │ │ 99e4411beeaf72f5790311747192a416 69848 debug optional htp-dbgsym_1.19-8_armhf.deb │ - 718e6b8c697fc83dc86887ac4c1c68eb 113884 web optional htp_1.19-8_armhf.deb │ + 8d9d17631ef2e9b218143509d6b724c0 112676 web optional htp_1.19-8_armhf.deb ├── htp_1.19-8_armhf.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2020-06-14 23:21:19.000000 debian-binary │ │ --rw-r--r-- 0 0 0 3620 2020-06-14 23:21:19.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 110072 2020-06-14 23:21:19.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 3616 2020-06-14 23:21:19.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 108868 2020-06-14 23:21:19.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./control │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ Package: htp │ │ │ │ Version: 1.19-8 │ │ │ │ Architecture: armhf │ │ │ │ Maintainer: Marcelo Soares Mota │ │ │ │ -Installed-Size: 642 │ │ │ │ +Installed-Size: 608 │ │ │ │ Depends: libc6 (>= 2.38) │ │ │ │ Section: web │ │ │ │ Priority: optional │ │ │ │ Homepage: http://htp.sourceforge.net │ │ │ │ Description: nice HTML pre-processor │ │ │ │ htp is an HTML pre-processor. It is designed to be a flexible authoring tool │ │ │ │ that can easily be integrated into the HTML design process. │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -1,27 +1,27 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/bin/ │ │ │ │ -rwxr-xr-x 0 root (0) root (0) 42560 2020-06-14 23:21:19.000000 ./usr/bin/htp │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 10728 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/alttext.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9546 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/alttext.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1418 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/alttext.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9462 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/block.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8850 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/block.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 781 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/block.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9584 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/blockdef.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9484 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/blockdef.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1075 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/blockdef.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4763 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/bugs.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 737 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/bugs.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 878 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/changelog.Debian.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 15347 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/comment.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9245 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/comment.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 676 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/comment.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 13083 2020-06-14 23:16:46.000000 ./usr/share/doc/htp/copyright │ │ │ │ --rw-r--r-- 0 root (0) root (0) 20695 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/def.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12541 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/def.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3601 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/def.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 8030 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/default.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3149 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/default.htp │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/examples/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 536 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/Makefile.sub │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2404 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/album.hti │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1087 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/album.htt │ │ │ │ @@ -32,64 +32,64 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 818 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/prime.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1576 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/examples/quine.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1576 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/quine.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 604 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/section.def │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1189 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/examples/section.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 918 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/section.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 375 2015-05-16 17:04:11.000000 ./usr/share/doc/htp/examples/section.htt │ │ │ │ --rw-r--r-- 0 root (0) root (0) 17673 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/expand.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8684 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/expand.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3702 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/expand.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 13923 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/file.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 15147 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/file.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2490 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/file.htp.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 14293 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/history.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3946 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/history.htp.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3911 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/hlhtp.pl │ │ │ │ -rw-r--r-- 0 root (0) root (0) 165 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/htp.def │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4049 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/htp.htt │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9828 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/if.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8677 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/if.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 932 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/if.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12301 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/imageurl.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 9424 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/imageurl.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2507 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/imageurl.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8898 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/img.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8277 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/img.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1168 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/img.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 11607 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/inc.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8760 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/inc.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1092 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/inc.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 9881 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/include.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1894 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/include.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4874 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 78 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/index.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7733 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/intro.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3489 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/intro.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 10774 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/license.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 454 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/license.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3782 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/macros.def │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5088 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/macros.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 388 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/macros.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 16003 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/metatag.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 14083 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/metatag.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2439 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/metatag.htp.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9793 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/opt.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8141 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/opt.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 608 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/opt.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7809 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/options.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3100 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/options.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9260 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/output.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8851 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/output.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 695 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/output.htp │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 171 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/arrow.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 262 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/download.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 708 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/htpicon.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 25563 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/logo.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 455 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/manbig.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 491 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/manual.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1313 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/poweredbyhtp.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 679 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/sficon.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 492 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pic/source.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 523 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/pphtp.pl │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8986 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/quote.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7748 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/quote.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 390 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/quote.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9189 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/set.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 10039 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/set.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1200 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/set.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 500 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/styles.css │ │ │ │ -rw-r--r-- 0 root (0) root (0) 27219 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/template.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2235 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/template.htp.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1914 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/toc.def │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 146 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/footer.hti │ │ │ │ @@ -102,23 +102,23 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 192 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/tut2.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 501 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/tut3.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 191 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/tut3.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 356 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/tut3.htt │ │ │ │ -rw-r--r-- 0 root (0) root (0) 297 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tut/tut4.htt │ │ │ │ -rw-r--r-- 0 root (0) root (0) 10517 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tutorial.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3393 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/tutorial.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8009 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/undef.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8015 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/undef.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 460 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/undef.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8967 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/unset.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8827 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/unset.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 658 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/unset.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7681 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/usage.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2959 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/usage.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12554 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/use.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12893 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/use.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3300 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/use.htp │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9304 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/while.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 10319 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/while.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 938 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/while.htp │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5288 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/wishlist.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1311 2020-06-14 23:21:19.000000 ./usr/share/doc/htp/wishlist.htp │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/doc-base/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 235 2020-06-14 17:36:12.000000 ./usr/share/doc-base/htp.htp │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/lintian/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-06-14 23:21:19.000000 ./usr/share/lintian/overrides/ │ │ │ ├── ./usr/share/doc/htp/alttext.html │ │ │ │ @@ -114,41 +114,35 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -<[ref]blockdef name="tagname" [option="option1 [option2 ...]" ] [global] [expand]>
│ │ │ │ -  ... <[ref]use block> ...
│ │ │ │ -<[ref]/blockdef>
│ │ │ │ +<[ref]BLOCK NAME="blockname" [GLOBAL] [EXPAND]>
│ │ │ │ +text block
│ │ │ │ +<[ref]/BLOCK>
│ │ │ │
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ ALTTEXT declares an ALT attribute for any IMG tag with a SRC matching the ALTTEXT NAME. │ │ │ │ Since relative paths can be used to point to the same image, only the │ │ │ │ filename is considered in all comparisons. │ │ │ │

│ │ │ │ When an IMG tag with a matching source is encountered, htp will add an ALT │ │ │ │ attribute only if one is not already present. This allows for ALT text to │ │ │ │ be overridden on specific images and default text on all others. │ │ │ │

│ │ │ │ For example: │ │ │ │

│ │ │ │ -  <[ref]alttext name="logo.gif" text="Company logo">
│ │ │ │ -
│ │ │ │ -  this line: <[ref]img src="logo.gif">
│ │ │ │ -  becomes this after processing: <[ref]img src="logo.gif" alt="Company logo">
│ │ │ │ -
│ │ │ │ -  this line: <[ref]img src="../image/logo.gif">
│ │ │ │ -  will also have an ALT attribute appended to it
│ │ │ │ +<[ref]blockdef name="tagname" [option="option1 [option2 ...]" ] [global] [expand]>
│ │ │ │ +  ... <[ref]use block> ...
│ │ │ │ +<[ref]/blockdef>
│ │ │ │
│ │ │ │ -  this line: <[ref]img src="logo.gif" alt="Click here for more information!">
│ │ │ │ -  remains unchanged.
│ │ │ │

│ │ │ │

│ │ │ │ An ALTTEXT tag with a name but no text attribute removes any ALT │ │ │ │ mapping for this image. Successing IMG tags with a matching SRC name are not │ │ │ │ changed. │ │ │ │

│ │ │ │ Since this is useful for an image used throughout a set of documents, │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,45 +1,36 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: AALLTTTTEEXXTT ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_b_l_o_c_k_d_e_f name="tagname" [option="option1 │ │ │ │ │ -  _L_i_c_e_n_s_e [option2 ...]" ] [global] [expand]> │ │ │ │ │ -  _T_u_t_o_r_i_a_l   ... <_[_[_r_e_f_]_]_u_s_e block> ... │ │ │ │ │ -  _U_s_a_g_e <_[_[_r_e_f_]_]_/_b_l_o_c_k_d_e_f> │ │ │ │ │ -  HTP Tags │ │ │ │ │ -  [>] _A_L_T_T_E_X_T ********** ssyynnooppssiiss ********** │ │ │ │ │ -    _B_L_O_C_K AALLTTTTEEXXTT declares an ALT attribute for any _I_M_G tag │ │ │ │ │ -    _B_L_O_C_K_D_E_F with a SRC matching the ALTTEXT NAME. Since │ │ │ │ │ -    _D_E_F relative paths can be used to point to the same │ │ │ │ │ -    _F_I_L_E image, only the filename is considered in all │ │ │ │ │ -    _I_F comparisons. │ │ │ │ │ -    _I_N_C When an IMG tag with a matching source is │ │ │ │ │ -    _I_M_G encountered, htp will add an ALT attribute only if │ │ │ │ │ -    _I_M_A_G_E_U_R_L one is not already present. This allows for ALT │ │ │ │ │ -    _O_P_T text to be overridden on specific images and │ │ │ │ │ -    _O_U_T_P_U_T default text on all others. │ │ │ │ │ -    _Q_U_O_T_E For example: │ │ │ │ │ -    _S_E_T   <_[_[_r_e_f_]_]_a_l_t_t_e_x_t name="logo.gif" text="Company │ │ │ │ │ -    _U_N_D_E_F logo"> │ │ │ │ │ -    _U_N_S_E_T │ │ │ │ │ -    _U_S_E_,_ _$   this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif"> │ │ │ │ │ -    _W_H_I_L_E   becomes this after processing: <_[_[_r_e_f_]_]_i_m_g │ │ │ │ │ -    _<_!_-_-_- src="logo.gif" alt="Company logo"> │ │ │ │ │ -  _H_i_s_t_o_r_y │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t   this line: <_[_[_r_e_f_]_]_i_m_g src="../image/logo.gif"> │ │ │ │ │ -  _B_u_g_s   will also have an ALT attribute appended to it │ │ │ │ │ - │ │ │ │ │ -   this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif" alt="Click │ │ │ │ │ - here for more information!"> │ │ │ │ │ -   remains unchanged. │ │ │ │ │ - An ALTTEXT tag with a name but no text attribute │ │ │ │ │ - removes any ALT mapping for this image. Successing │ │ │ │ │ - IMG tags with a matching SRC name are not changed. │ │ │ │ │ - Since this is useful for an image used throughout a │ │ │ │ │ - set of documents, ALTTEXT is most appropriate in an │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_B_L_O_C_K NAME="blockname" [GLOBAL] [EXPAND]> │ │ │ │ │ +  _L_i_c_e_n_s_e text block │ │ │ │ │ +  _T_u_t_o_r_i_a_l <_[_[_r_e_f_]_]_/_B_L_O_C_K> │ │ │ │ │ +  _U_s_a_g_e │ │ │ │ │ +  HTP Tags ********** ssyynnooppssiiss ********** │ │ │ │ │ +  [>] _A_L_T_T_E_X_T AALLTTTTEEXXTT declares an ALT attribute for any _I_M_G tag │ │ │ │ │ +    _B_L_O_C_K with a SRC matching the ALTTEXT NAME. Since │ │ │ │ │ +    _B_L_O_C_K_D_E_F relative paths can be used to point to the same │ │ │ │ │ +    _D_E_F image, only the filename is considered in all │ │ │ │ │ +    _F_I_L_E comparisons. │ │ │ │ │ +    _I_F When an IMG tag with a matching source is │ │ │ │ │ +    _I_N_C encountered, htp will add an ALT attribute only if │ │ │ │ │ +    _I_M_G one is not already present. This allows for ALT │ │ │ │ │ +    _I_M_A_G_E_U_R_L text to be overridden on specific images and │ │ │ │ │ +    _O_P_T default text on all others. │ │ │ │ │ +    _O_U_T_P_U_T For example: │ │ │ │ │ +    _Q_U_O_T_E <_[_[_r_e_f_]_]_b_l_o_c_k_d_e_f name="tagname" [option="option1 │ │ │ │ │ +    _S_E_T [option2 ...]" ] [global] [expand]> │ │ │ │ │ +    _U_N_D_E_F   ... <_[_[_r_e_f_]_]_u_s_e block> ... │ │ │ │ │ +    _U_N_S_E_T <_[_[_r_e_f_]_]_/_b_l_o_c_k_d_e_f> │ │ │ │ │ +    _U_S_E_,_ _$ │ │ │ │ │ +    _W_H_I_L_E An ALTTEXT tag with a name but no text attribute │ │ │ │ │ +    _<_!_-_-_- removes any ALT mapping for this image. Successing │ │ │ │ │ +  _H_i_s_t_o_r_y IMG tags with a matching SRC name are not changed. │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t Since this is useful for an image used throughout a │ │ │ │ │ +  _B_u_g_s set of documents, ALTTEXT is most appropriate in an │ │ │ │ │ _i_n_c_l_u_d_e_ _f_i_l_e or a _d_e_f_a_u_l_t_ _f_i_l_e. │ │ │ │ │ In addition to ALTTEXT, htp can also automatically │ │ │ │ │ add WIDTH and HEIGHT attributes to _I_M_G tags. │ │ │ ├── ./usr/share/doc/htp/block.html │ │ │ │ @@ -114,24 +114,18 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -  <[ref]alttext name="logo.gif" text="Company logo">
│ │ │ │ +<[ref]blockdef name="tagname" [option="option1 [option2 ...]" ] [global] [expand]>
│ │ │ │ +  ... <[ref]use block> ...
│ │ │ │ +<[ref]/blockdef>
│ │ │ │
│ │ │ │ -  this line: <[ref]img src="logo.gif">
│ │ │ │ -  becomes this after processing: <[ref]img src="logo.gif" alt="Company logo">
│ │ │ │ -
│ │ │ │ -  this line: <[ref]img src="../image/logo.gif">
│ │ │ │ -  will also have an ALT attribute appended to it
│ │ │ │ -
│ │ │ │ -  this line: <[ref]img src="logo.gif" alt="Click here for more information!">
│ │ │ │ -  remains unchanged.
│ │ │ │

│ │ │ │

synopsis

│ │ │ │

│ │ │ │ BLOCK and /BLOCK are used to create block macros, which │ │ │ │ are similar in use to SET macros, but can be │ │ │ │ multi-line definitions. │ │ │ │

│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,51 +1,43 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: BBLLOOCCKK,, //BBLLOOCCKK ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n   <_[_[_r_e_f_]_]_a_l_t_t_e_x_t name="logo.gif" text="Company │ │ │ │ │ -  _L_i_c_e_n_s_e logo"> │ │ │ │ │ -  _T_u_t_o_r_i_a_l │ │ │ │ │ -  _U_s_a_g_e   this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif"> │ │ │ │ │ -  HTP Tags   becomes this after processing: <_[_[_r_e_f_]_]_i_m_g │ │ │ │ │ -    _A_L_T_T_E_X_T src="logo.gif" alt="Company logo"> │ │ │ │ │ -  [>] _B_L_O_C_K │ │ │ │ │ -    _B_L_O_C_K_D_E_F   this line: <_[_[_r_e_f_]_]_i_m_g src="../image/logo.gif"> │ │ │ │ │ -    _D_E_F   will also have an ALT attribute appended to it │ │ │ │ │ -    _F_I_L_E │ │ │ │ │ -    _I_F   this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif" alt="Click │ │ │ │ │ -    _I_N_C here for more information!"> │ │ │ │ │ -    _I_M_G   remains unchanged. │ │ │ │ │ -    _I_M_A_G_E_U_R_L ********** ssyynnooppssiiss ********** │ │ │ │ │ -    _O_P_T BBLLOOCCKK aanndd //BBLLOOCCKK are used to create block macros, │ │ │ │ │ -    _O_U_T_P_U_T which are similar in use to _S_E_T macros, but can be │ │ │ │ │ -    _Q_U_O_T_E multi-line definitions. │ │ │ │ │ -    _S_E_T Any text and formatting may be set inside the │ │ │ │ │ -    _U_N_D_E_F block. You can use any htp or user defined metatag │ │ │ │ │ -    _U_N_S_E_T including _F_I_L_E_ _I_N_C_L_U_D_E. The metatags won't be │ │ │ │ │ -    _U_S_E_,_ _$ expanded before the block is USEd except if you │ │ │ │ │ -    _W_H_I_L_E give the _E_X_P_A_N_D parameter. │ │ │ │ │ -    _<_!_-_-_- The block macro is dereferenced (expanded) with the │ │ │ │ │ -  _H_i_s_t_o_r_y _U_S_E_ _t_a_g_ _o_r_ _t_h_e_ _'_$_'_ _o_p_e_r_a_t_o_r. See the notes on the │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t _U_S_E tag on how to pass parameters to a block macro. │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_b_l_o_c_k_d_e_f name="tagname" [option="option1 │ │ │ │ │ +  _L_i_c_e_n_s_e [option2 ...]" ] [global] [expand]> │ │ │ │ │ +  _T_u_t_o_r_i_a_l   ... <_[_[_r_e_f_]_]_u_s_e block> ... │ │ │ │ │ +  _U_s_a_g_e <_[_[_r_e_f_]_]_/_b_l_o_c_k_d_e_f> │ │ │ │ │ +  HTP Tags │ │ │ │ │ +    _A_L_T_T_E_X_T ********** ssyynnooppssiiss ********** │ │ │ │ │ +  [>] _B_L_O_C_K BBLLOOCCKK aanndd //BBLLOOCCKK are used to create block macros, │ │ │ │ │ +    _B_L_O_C_K_D_E_F which are similar in use to _S_E_T macros, but can be │ │ │ │ │ +    _D_E_F multi-line definitions. │ │ │ │ │ +    _F_I_L_E Any text and formatting may be set inside the │ │ │ │ │ +    _I_F block. You can use any htp or user defined metatag │ │ │ │ │ +    _I_N_C including _F_I_L_E_ _I_N_C_L_U_D_E. The metatags won't be │ │ │ │ │ +    _I_M_G expanded before the block is USEd except if you │ │ │ │ │ +    _I_M_A_G_E_U_R_L give the _E_X_P_A_N_D parameter. │ │ │ │ │ +    _O_P_T The block macro is dereferenced (expanded) with the │ │ │ │ │ +    _O_U_T_P_U_T _U_S_E_ _t_a_g_ _o_r_ _t_h_e_ _'_$_'_ _o_p_e_r_a_t_o_r. See the notes on the │ │ │ │ │ +    _Q_U_O_T_E _U_S_E tag on how to pass parameters to a block macro. │ │ │ │ │ +    _S_E_T │ │ │ │ │ +    _U_N_D_E_F │ │ │ │ │ +    _U_N_S_E_T │ │ │ │ │ +    _U_S_E_,_ _$ │ │ │ │ │ +    _W_H_I_L_E │ │ │ │ │ +    _<_!_-_-_- │ │ │ │ │ +  _H_i_s_t_o_r_y │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t │ │ │ │ │   _B_u_g_s │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │   _p_a_g_e_ _s_o_u_r_c_e │ │ │ │ │   _h_t_p_ _p_r_o_j_e_c_t │ │ │ │ │   _h_t_p_ _h_o_m_e_p_a_g_e │ │ │ ├── ./usr/share/doc/htp/blockdef.html │ │ │ │ @@ -114,35 +114,30 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -  <[ref]alttext name="logo.gif" text="Company logo">
│ │ │ │ +<[ref]blockdef name="tagname" [option="option1 [option2 ...]" ] [global] [expand]>
│ │ │ │ +  ... <[ref]use block> ...
│ │ │ │ +<[ref]/blockdef>
│ │ │ │
│ │ │ │ -  this line: <[ref]img src="logo.gif">
│ │ │ │ -  becomes this after processing: <[ref]img src="logo.gif" alt="Company logo">
│ │ │ │ -
│ │ │ │ -  this line: <[ref]img src="../image/logo.gif">
│ │ │ │ -  will also have an ALT attribute appended to it
│ │ │ │ -
│ │ │ │ -  this line: <[ref]img src="logo.gif" alt="Click here for more information!">
│ │ │ │ -  remains unchanged.
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ BLOCKDEF creates block metatags, which is a fancy way of saying it │ │ │ │ creates new block tags. A block tag is a tag that takes a whole block │ │ │ │ as additional parameter. This block is surrounded by <tagname> and │ │ │ │ </tagname>. The contents of this block are automatically stored │ │ │ │ in the block macro named BLOCK. │ │ │ │

For example:

│ │ │ │

│ │ │ │ -<!--- comment --->
│ │ │ │ +<[ref]def name="tagname" [option="option1 [option2 ...]" ] [global] [expand]>
│ │ │ │ +<[ref]/def>
│ │ │ │
│ │ │ │

│ │ │ │

│ │ │ │ All block metatags have the implicit option EXPAND, which tells htp to expand the contents │ │ │ │ of the block before the definition is expanded. │ │ │ │

│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,42 +1,36 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: BBLLOOCCKKDDEEFF,, //BBLLOOCCKKDDEEFF ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n   <_[_[_r_e_f_]_]_a_l_t_t_e_x_t name="logo.gif" text="Company │ │ │ │ │ -  _L_i_c_e_n_s_e logo"> │ │ │ │ │ -  _T_u_t_o_r_i_a_l │ │ │ │ │ -  _U_s_a_g_e   this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif"> │ │ │ │ │ -  HTP Tags   becomes this after processing: <_[_[_r_e_f_]_]_i_m_g │ │ │ │ │ -    _A_L_T_T_E_X_T src="logo.gif" alt="Company logo"> │ │ │ │ │ -    _B_L_O_C_K │ │ │ │ │ -  [>] _B_L_O_C_K_D_E_F   this line: <_[_[_r_e_f_]_]_i_m_g src="../image/logo.gif"> │ │ │ │ │ -    _D_E_F   will also have an ALT attribute appended to it │ │ │ │ │ -    _F_I_L_E │ │ │ │ │ -    _I_F   this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif" alt="Click │ │ │ │ │ -    _I_N_C here for more information!"> │ │ │ │ │ -    _I_M_G   remains unchanged. │ │ │ │ │ -    _I_M_A_G_E_U_R_L ********** ssyynnooppssiiss ********** │ │ │ │ │ -    _O_P_T BBLLOOCCKKDDEEFF creates block _m_e_t_a_t_a_g_s, which is a fancy │ │ │ │ │ -    _O_U_T_P_U_T way of saying it creates new block tags. A block │ │ │ │ │ -    _Q_U_O_T_E tag is a tag that takes a whole block as additional │ │ │ │ │ -    _S_E_T parameter. This block is surrounded by │ │ │ │ │ -    _U_N_D_E_F and . The contents of this block are │ │ │ │ │ -    _U_N_S_E_T automatically stored in the block macro named │ │ │ │ │ -    _U_S_E_,_ _$ BLOCK. │ │ │ │ │ -    _W_H_I_L_E For example: │ │ │ │ │ -    _<_!_-_-_- │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_b_l_o_c_k_d_e_f name="tagname" [option="option1 │ │ │ │ │ +  _L_i_c_e_n_s_e [option2 ...]" ] [global] [expand]> │ │ │ │ │ +  _T_u_t_o_r_i_a_l   ... <_[_[_r_e_f_]_]_u_s_e block> ... │ │ │ │ │ +  _U_s_a_g_e <_[_[_r_e_f_]_]_/_b_l_o_c_k_d_e_f> │ │ │ │ │ +  HTP Tags │ │ │ │ │ +    _A_L_T_T_E_X_T ********** ssyynnooppssiiss ********** │ │ │ │ │ +    _B_L_O_C_K BBLLOOCCKKDDEEFF creates block _m_e_t_a_t_a_g_s, which is a fancy │ │ │ │ │ +  [>] _B_L_O_C_K_D_E_F way of saying it creates new block tags. A block │ │ │ │ │ +    _D_E_F tag is a tag that takes a whole block as additional │ │ │ │ │ +    _F_I_L_E parameter. This block is surrounded by │ │ │ │ │ +    _I_F and . The contents of this block are │ │ │ │ │ +    _I_N_C automatically stored in the block macro named │ │ │ │ │ +    _I_M_G BLOCK. │ │ │ │ │ +    _I_M_A_G_E_U_R_L For example: │ │ │ │ │ +    _O_P_T <_[_[_r_e_f_]_]_d_e_f name="tagname" [option="option1 │ │ │ │ │ +    _O_U_T_P_U_T [option2 ...]" ] [global] [expand]> │ │ │ │ │ +    _Q_U_O_T_E <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │ +    _S_E_T │ │ │ │ │ +    _U_N_D_E_F All block metatags have the implicit option _E_X_P_A_N_D, │ │ │ │ │ +    _U_N_S_E_T which tells htp to expand the contents of the block │ │ │ │ │ +    _U_S_E_,_ _$ before the definition is expanded. │ │ │ │ │ +    _W_H_I_L_E A more thorough discussion and more elaborate │ │ │ │ │ +    _<_!_-_-_- examples are discussed in the _m_e_t_a_t_a_g section. │ │ │ │ │   _H_i_s_t_o_r_y │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t All block metatags have the implicit option _E_X_P_A_N_D, │ │ │ │ │ -  _B_u_g_s which tells htp to expand the contents of the block │ │ │ │ │ - before the definition is expanded. │ │ │ │ │ - A more thorough discussion and more elaborate │ │ │ │ │ - examples are discussed in the _m_e_t_a_t_a_g section. │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t │ │ │ │ │ +  _B_u_g_s │ │ │ ├── ./usr/share/doc/htp/comment.html │ │ │ │ @@ -125,55 +125,28 @@ │ │ │ │

synopsis

│ │ │ │

│ │ │ │ This is a simple comment that is not included in the output. This is useful │ │ │ │ when commenting metatags, since the metatags do not appear the output either. │ │ │ │ Example: │ │ │ │

│ │ │ │

│ │ │ │ -    <[ref]def name="centered">
│ │ │ │ -    <p align=center>
│ │ │ │ -    <[ref]/def>
│ │ │ │ -
│ │ │ │ -    <centered>
│ │ │ │ -    This text is centered.
│ │ │ │

│ │ │ │

│ │ │ │ Note that these comments should not include < or >, that is you │ │ │ │ should not use it to comment out htp code. For that purpose use something │ │ │ │ like this: │ │ │ │

│ │ │ │

│ │ │ │ -  <[ref]set time="0">
│ │ │ │ -  <[ref]block name=a>
│ │ │ │ -    a is expanded at time <[ref]use time>.
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]block name=b expand>
│ │ │ │ -    b is expanded at time <[ref]use time>.
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]set time="1">
│ │ │ │ -  <[ref]use a>
│ │ │ │ -  <[ref]use b>
│ │ │ │ -  contents of a: <[ref]use a noexpand>
│ │ │ │ -  contents of b: <[ref]use b noexpand>
│ │ │ │ -  <[ref]block name=c expand>
│ │ │ │ -    c is expanded at time <[ref]use time>; <[ref]use a>
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]block name=d expand>
│ │ │ │ -    d is expanded at time <[ref]use time>; <[ref]use a noexpand>
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]block name=e>
│ │ │ │ -    e is expanded at time <[ref]use time>; <[ref]use a noexpand>
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]set time="2">
│ │ │ │ -  <[ref]block name=a>
│ │ │ │ -    a is defined for the 2nd time <[ref]use time>.
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]use c>
│ │ │ │ -  <[ref]use d>
│ │ │ │ -  <[ref]use e>
│ │ │ │ +    a is expanded at time 1.
│ │ │ │ +    b is expanded at time 0.
│ │ │ │ +  contents of a:   a is expanded at time <[ref]use time>.
│ │ │ │ +  contents of b:   b is expanded at time 0.
│ │ │ │ +    c is expanded at time 1;   a is expanded at time 1.
│ │ │ │ +    d is expanded at time 1;   a is expanded at time 2.
│ │ │ │ +    e is expanded at time 2;   a is defined for the 2nd time <[ref]use time>.
│ │ │ │

│ │ │ │

Make sure that the variable is never defined and xyz should be the │ │ │ │ reason why you don't want to include this block

│ │ │ │

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -6,58 +6,31 @@ │ │ │ │ │   _T_u_t_o_r_i_a_l <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │   _U_s_a_g_e │ │ │ │ │   HTP Tags ********** ssyynnooppssiiss ********** │ │ │ │ │     _A_L_T_T_E_X_T This is a simple comment that is not included in │ │ │ │ │     _B_L_O_C_K the output. This is useful when commenting │ │ │ │ │     _B_L_O_C_K_D_E_F metatags, since the metatags do not appear the │ │ │ │ │     _D_E_F output either. Example: │ │ │ │ │ -    _F_I_L_E     <_[_[_r_e_f_]_]_d_e_f name="centered"> │ │ │ │ │ -    _I_F    

│ │ │ │ │ -    _I_N_C     <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │ -    _I_M_G │ │ │ │ │ -    _I_M_A_G_E_U_R_L     │ │ │ │ │ -    _O_P_T     This text is centered. │ │ │ │ │ -    _O_U_T_P_U_T Note that these comments should not include < or >, │ │ │ │ │ -    _Q_U_O_T_E that is you should not use it to comment out htp │ │ │ │ │ -    _S_E_T code. For that purpose use something like this: │ │ │ │ │ -    _U_N_D_E_F   <_[_[_r_e_f_]_]_s_e_t time="0"> │ │ │ │ │ -    _U_N_S_E_T   <_[_[_r_e_f_]_]_b_l_o_c_k name=a> │ │ │ │ │ -    _U_S_E_,_ _$     a is expanded at time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ -    _W_H_I_L_E   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -  [>] _<_!_-_-_-   <_[_[_r_e_f_]_]_b_l_o_c_k name=b expand> │ │ │ │ │ -  _H_i_s_t_o_r_y     b is expanded at time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -  _B_u_g_s   <_[_[_r_e_f_]_]_s_e_t time="1"> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e a> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e b> │ │ │ │ │ -   contents of a: <_[_[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ │ -   contents of b: <_[_[_r_e_f_]_]_u_s_e b noexpand> │ │ │ │ │ -   <_[_[_r_e_f_]_]_b_l_o_c_k name=c expand> │ │ │ │ │ -     c is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ │ - _[_r_e_f_]_]_u_s_e a> │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -   <_[_[_r_e_f_]_]_b_l_o_c_k name=d expand> │ │ │ │ │ -     d is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ │ - _[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -   <_[_[_r_e_f_]_]_b_l_o_c_k name=e> │ │ │ │ │ -     e is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ │ - _[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -   <_[_[_r_e_f_]_]_s_e_t time="2"> │ │ │ │ │ -   <_[_[_r_e_f_]_]_b_l_o_c_k name=a> │ │ │ │ │ -     a is defined for the 2nd time <_[_[_r_e_f_]_]_u_s_e │ │ │ │ │ - time>. │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e c> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e d> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e e> │ │ │ │ │ - Make sure that the variable is never defined and │ │ │ │ │ - xyz should be the reason why you don't want to │ │ │ │ │ - include this block │ │ │ │ │ +    _F_I_L_E Note that these comments should not include < or >, │ │ │ │ │ +    _I_F that is you should not use it to comment out htp │ │ │ │ │ +    _I_N_C code. For that purpose use something like this: │ │ │ │ │ +    _I_M_G     a is expanded at time 1. │ │ │ │ │ +    _I_M_A_G_E_U_R_L     b is expanded at time 0. │ │ │ │ │ +    _O_P_T   contents of a:   a is expanded at time <_[ │ │ │ │ │ +    _O_U_T_P_U_T _[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ +    _Q_U_O_T_E   contents of b:   b is expanded at time 0. │ │ │ │ │ +    _S_E_T     c is expanded at time 1;   a is expanded at │ │ │ │ │ +    _U_N_D_E_F time 1. │ │ │ │ │ +    _U_N_S_E_T     d is expanded at time 1;   a is expanded at │ │ │ │ │ +    _U_S_E_,_ _$ time 2. │ │ │ │ │ +    _W_H_I_L_E     e is expanded at time 2;   a is defined for the │ │ │ │ │ +  [>] _<_!_-_-_- 2nd time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ +  _H_i_s_t_o_r_y Make sure that the variable is never defined and │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t xyz should be the reason why you don't want to │ │ │ │ │ +  _B_u_g_s include this block │ │ │ ├── ./usr/share/doc/htp/def.html │ │ │ │ @@ -125,91 +125,62 @@ │ │ │ │ DEF creates metatags, which is a │ │ │ │ fancy way of saying it creates new tags. The mechanism is very similar to │ │ │ │ BLOCK macros, except that the USE │ │ │ │ tag is not used to expand them. Instead, they are expanded by their own name. │ │ │ │ For example: │ │ │ │

│ │ │ │

│ │ │ │ -    <[ref]def name="centered">
│ │ │ │ -    <p align=center>
│ │ │ │ -    <[ref]/def>
│ │ │ │ -
│ │ │ │ -    <centered>
│ │ │ │ -    This text is centered.
│ │ │ │ +    a is expanded at time 1.
│ │ │ │ +    b is expanded at time 0.
│ │ │ │ +  contents of a:   a is expanded at time <[ref]use time>.
│ │ │ │ +  contents of b:   b is expanded at time 0.
│ │ │ │ +    c is expanded at time 1;   a is expanded at time 1.
│ │ │ │ +    d is expanded at time 1;   a is expanded at time 2.
│ │ │ │ +    e is expanded at time 2;   a is defined for the 2nd time <[ref]use time>.
│ │ │ │

│ │ │ │

│ │ │ │ Some metatags will require an opening and closing tag (comparable to │ │ │ │ and ). In this case, you should use the BLOCKDEF macro. Another slightly faster │ │ │ │ alternative is to use two metatags, the opening tag and the closing │ │ │ │ tag with a preceding slash. For example: │ │ │ │

│ │ │ │

│ │ │ │ -  <[ref]set time="0">
│ │ │ │ -  <[ref]block name=a>
│ │ │ │ -    a is expanded at time <[ref]use time>.
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]block name=b expand>
│ │ │ │ -    b is expanded at time <[ref]use time>.
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]set time="1">
│ │ │ │ -  <[ref]use a>
│ │ │ │ -  <[ref]use b>
│ │ │ │ -  contents of a: <[ref]use a noexpand>
│ │ │ │ -  contents of b: <[ref]use b noexpand>
│ │ │ │ -  <[ref]block name=c expand>
│ │ │ │ -    c is expanded at time <[ref]use time>; <[ref]use a>
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]block name=d expand>
│ │ │ │ -    d is expanded at time <[ref]use time>; <[ref]use a noexpand>
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]block name=e>
│ │ │ │ -    e is expanded at time <[ref]use time>; <[ref]use a noexpand>
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]set time="2">
│ │ │ │ -  <[ref]block name=a>
│ │ │ │ -    a is defined for the 2nd time <[ref]use time>.
│ │ │ │ -  <[ref]/block>
│ │ │ │ -  <[ref]use c>
│ │ │ │ -  <[ref]use d>
│ │ │ │ -  <[ref]use e>
│ │ │ │ +  <[ref]def name="bigfont">
│ │ │ │ +    <font size="+4">
│ │ │ │ +  <[ref]/def>
│ │ │ │ +
│ │ │ │ +  <[ref]def name="/bigfont">
│ │ │ │ +    </font>
│ │ │ │ +  <[ref]/def>
│ │ │ │ +
│ │ │ │ +  <bigfont>Some large text</bigfont>
│ │ │ │

│ │ │ │

You should really use BLOCKDEF, though, │ │ │ │ as it will check for matching end tag. It is not that slower.

│ │ │ │

│ │ │ │ Options can be passed to a metatag, which can then expand as if it were │ │ │ │ a SET macro. Option names are parameterized with │ │ │ │ the OPTION attribute. Multiple options can be listed by separating their │ │ │ │ name with a space (which therefore requires they be surrounded by quotes.) │ │ │ │

│ │ │ │

│ │ │ │ -  <[ref]DEF NAME="HEADERIMG" OPTION="SRC TITLE SIZE">
│ │ │ │ -    <[ref]IF size>
│ │ │ │ -        <FONT SIZE=${size}>
│ │ │ │ -    <[ref]/IF>
│ │ │ │ -    <[ref]IMG SRC=pics/${src}>
│ │ │ │ -    <[ref]USE title>
│ │ │ │ -    <[ref]IF size>
│ │ │ │ -        </FONT>
│ │ │ │ -    <[ref]/IF>
│ │ │ │ -  <[ref]/DEF>
│ │ │ │ -
│ │ │ │ -  <HEADERIMG SRC="logo.gif" SIZE="+2" TITLE="A title">
│ │ │ │ -
│ │ │ │ -  <HEADERIMG SRC="logo.gif" TITLE="Normal sized title">
│ │ │ │ -
│ │ │ │ -  This will fail:
│ │ │ │ -  <HEADERIMG SRC="logo.gif" ALT="Our logo" TITLE="Another title">
│ │ │ │ +<[ref]IF [NOT] conditional>
│ │ │ │ +    block #1
│ │ │ │ +[
│ │ │ │ +<ELSEIF [NOT] conditional>
│ │ │ │ +    block #2
│ │ │ │ +...
│ │ │ │ +]
│ │ │ │ +[
│ │ │ │ +<ELSE>
│ │ │ │ +    block #3
│ │ │ │ +]
│ │ │ │ +<[ref]/IF>
│ │ │ │
│ │ │ │ -  Instead, use * like this:
│ │ │ │ -  <[ref]DEF NAME="MYIMG" OPTION="SRC *">
│ │ │ │ -    <[ref]IMG SRC="pics/${src}" $*>
│ │ │ │ -  <[ref]/DEF>
│ │ │ │ -   
│ │ │ │ -  <MYIMG SRC="logo.gif" ALT="Our logo">
│ │ │ │

│ │ │ │

│ │ │ │ htp will do very specific checking of parameters when a metatag is │ │ │ │ invoked. htp assumes that all parameter options to the metatag are │ │ │ │ optional. This is why the HEADERIMG definition uses IF to verify the │ │ │ │ SIZE option is defined before expanding it in the block. If a │ │ │ │ parameter is required, simply expand it without first checking. When │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -5,95 +5,62 @@ │ │ │ │ │   _L_i_c_e_n_s_e ---> │ │ │ │ │   _T_u_t_o_r_i_a_l ********** ssyynnooppssiiss ********** │ │ │ │ │   _U_s_a_g_e DDEEFF creates _m_e_t_a_t_a_g_s, which is a fancy way of │ │ │ │ │   HTP Tags saying it creates new tags. The mechanism is very │ │ │ │ │     _A_L_T_T_E_X_T similar to _B_L_O_C_K macros, except that the _U_S_E tag is │ │ │ │ │     _B_L_O_C_K not used to expand them. Instead, they are expanded │ │ │ │ │     _B_L_O_C_K_D_E_F by their own name. For example: │ │ │ │ │ -  [>] _D_E_F     <_[_[_r_e_f_]_]_d_e_f name="centered"> │ │ │ │ │ -    _F_I_L_E    

│ │ │ │ │ -    _I_F     <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │ -    _I_N_C │ │ │ │ │ -    _I_M_G     │ │ │ │ │ -    _I_M_A_G_E_U_R_L     This text is centered. │ │ │ │ │ -    _O_P_T Some metatags will require an opening and closing │ │ │ │ │ -    _O_U_T_P_U_T tag (comparable to │ │ │ │ │ -    _Q_U_O_T_E and │ │ │ │ │ -    _S_E_T ). In this case, you should use the _B_L_O_C_K_D_E_F macro. │ │ │ │ │ -    _U_N_D_E_F Another slightly faster alternative is to use two │ │ │ │ │ -    _U_N_S_E_T metatags, the opening tag and the closing tag with │ │ │ │ │ -    _U_S_E_,_ _$ a preceding slash. For example: │ │ │ │ │ -    _W_H_I_L_E   <_[_[_r_e_f_]_]_s_e_t time="0"> │ │ │ │ │ -    _<_!_-_-_-   <_[_[_r_e_f_]_]_b_l_o_c_k name=a> │ │ │ │ │ -  _H_i_s_t_o_r_y     a is expanded at time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -  _B_u_g_s   <_[_[_r_e_f_]_]_b_l_o_c_k name=b expand> │ │ │ │ │ -     b is expanded at time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -   <_[_[_r_e_f_]_]_s_e_t time="1"> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e a> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e b> │ │ │ │ │ -   contents of a: <_[_[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ │ -   contents of b: <_[_[_r_e_f_]_]_u_s_e b noexpand> │ │ │ │ │ -   <_[_[_r_e_f_]_]_b_l_o_c_k name=c expand> │ │ │ │ │ -     c is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ │ - _[_r_e_f_]_]_u_s_e a> │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -   <_[_[_r_e_f_]_]_b_l_o_c_k name=d expand> │ │ │ │ │ -     d is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ │ - _[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -   <_[_[_r_e_f_]_]_b_l_o_c_k name=e> │ │ │ │ │ -     e is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ │ - _[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -   <_[_[_r_e_f_]_]_s_e_t time="2"> │ │ │ │ │ -   <_[_[_r_e_f_]_]_b_l_o_c_k name=a> │ │ │ │ │ -     a is defined for the 2nd time <_[_[_r_e_f_]_]_u_s_e │ │ │ │ │ - time>. │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e c> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e d> │ │ │ │ │ -   <_[_[_r_e_f_]_]_u_s_e e> │ │ │ │ │ +  [>] _D_E_F     a is expanded at time 1. │ │ │ │ │ +    _F_I_L_E     b is expanded at time 0. │ │ │ │ │ +    _I_F   contents of a:   a is expanded at time <_[ │ │ │ │ │ +    _I_N_C _[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ +    _I_M_G   contents of b:   b is expanded at time 0. │ │ │ │ │ +    _I_M_A_G_E_U_R_L     c is expanded at time 1;   a is expanded at │ │ │ │ │ +    _O_P_T time 1. │ │ │ │ │ +    _O_U_T_P_U_T     d is expanded at time 1;   a is expanded at │ │ │ │ │ +    _Q_U_O_T_E time 2. │ │ │ │ │ +    _S_E_T     e is expanded at time 2;   a is defined for the │ │ │ │ │ +    _U_N_D_E_F 2nd time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ +    _U_N_S_E_T Some metatags will require an opening and closing │ │ │ │ │ +    _U_S_E_,_ _$ tag (comparable to │ │ │ │ │ +    _W_H_I_L_E and │ │ │ │ │ +    _<_!_-_-_- ). In this case, you should use the _B_L_O_C_K_D_E_F macro. │ │ │ │ │ +  _H_i_s_t_o_r_y Another slightly faster alternative is to use two │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t metatags, the opening tag and the closing tag with │ │ │ │ │ +  _B_u_g_s a preceding slash. For example: │ │ │ │ │ +   <_[_[_r_e_f_]_]_d_e_f name="bigfont"> │ │ │ │ │ +     │ │ │ │ │ +   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │ + │ │ │ │ │ +   <_[_[_r_e_f_]_]_d_e_f name="/bigfont"> │ │ │ │ │ +     │ │ │ │ │ +   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │ + │ │ │ │ │ +   Some large text │ │ │ │ │ You should really use _B_L_O_C_K_D_E_F, though, as it will │ │ │ │ │ check for matching end tag. It is not that slower. │ │ │ │ │ Options can be passed to a metatag, which can then │ │ │ │ │ expand as if it were a _S_E_T macro. Option names are │ │ │ │ │ parameterized with the OPTION attribute. Multiple │ │ │ │ │ options can be listed by separating their name with │ │ │ │ │ a space (which therefore requires they be │ │ │ │ │ surrounded by quotes.) │ │ │ │ │ -   <_[_[_r_e_f_]_]_D_E_F NAME="HEADERIMG" OPTION="SRC TITLE │ │ │ │ │ - SIZE"> │ │ │ │ │ -     <_[_[_r_e_f_]_]_I_F size> │ │ │ │ │ -         │ │ │ │ │ -     <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ │ -     <_[_[_r_e_f_]_]_I_M_G SRC=pics/${src}> │ │ │ │ │ -     <_[_[_r_e_f_]_]_U_S_E title> │ │ │ │ │ -     <_[_[_r_e_f_]_]_I_F size> │ │ │ │ │ -         │ │ │ │ │ -     <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_D_E_F> │ │ │ │ │ - │ │ │ │ │ -   │ │ │ │ │ - │ │ │ │ │ -   │ │ │ │ │ - │ │ │ │ │ -   This will fail: │ │ │ │ │ -   │ │ │ │ │ + <_[_[_r_e_f_]_]_I_F [NOT] conditional> │ │ │ │ │ +     block #1 │ │ │ │ │ + [ │ │ │ │ │ + │ │ │ │ │ +     block #2 │ │ │ │ │ + ... │ │ │ │ │ + ] │ │ │ │ │ + [ │ │ │ │ │ + │ │ │ │ │ +     block #3 │ │ │ │ │ + ] │ │ │ │ │ + <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ │ │ │ │ │ │ -   Instead, use * like this: │ │ │ │ │ -   <_[_[_r_e_f_]_]_D_E_F NAME="MYIMG" OPTION="SRC *"> │ │ │ │ │ -     <_[_[_r_e_f_]_]_I_M_G SRC="pics/${src}" $*> │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_D_E_F> │ │ │ │ │ -     │ │ │ │ │ -   │ │ │ │ │ htp will do very specific checking of parameters │ │ │ │ │ when a metatag is invoked. htp assumes that all │ │ │ │ │ parameter options to the metatag are optional. This │ │ │ │ │ is why the HEADERIMG definition uses IF to verify │ │ │ │ │ the SIZE option is defined before expanding it in │ │ │ │ │ the block. If a parameter is required, simply │ │ │ │ │ expand it without first checking. When htp expands │ │ │ ├── ./usr/share/doc/htp/expand.html │ │ │ │ @@ -98,54 +98,24 @@ │ │ │ │

However, if the block tag is marked with the expand │ │ │ │ modifier it is expanded immediately. This is useful if you want to │ │ │ │ store something in a block macro, that depends on the current value of │ │ │ │ another macro. This other macro may no longer have the correct value │ │ │ │ when the macro is expanded. Here is some code that demonstrate when │ │ │ │ the htp tags are expanded:

│ │ │ │

│ │ │ │ - 1.   <[ref]set time="0">
│ │ │ │ - 2.   <[ref]block name=a>
│ │ │ │ - 3.     a is expanded at time <[ref]use time>.
│ │ │ │ - 4.   <[ref]/block>
│ │ │ │ - 5.   <[ref]block name=b expand>
│ │ │ │ - 6.     b is expanded at time <[ref]use time>.
│ │ │ │ - 7.   <[ref]/block>
│ │ │ │ - 8.   <[ref]set time="1">
│ │ │ │ - 9.   <[ref]use a>
│ │ │ │ -10.   <[ref]use b>
│ │ │ │ -11.   contents of a: <[ref]use a noexpand>
│ │ │ │ -12.   contents of b: <[ref]use b noexpand>
│ │ │ │ -13.   <[ref]block name=c expand>
│ │ │ │ -14.     c is expanded at time <[ref]use time>; <[ref]use a>
│ │ │ │ -15.   <[ref]/block>
│ │ │ │ -16.   <[ref]block name=d expand>
│ │ │ │ -17.     d is expanded at time <[ref]use time>; <[ref]use a noexpand>
│ │ │ │ -18.   <[ref]/block>
│ │ │ │ -19.   <[ref]block name=e>
│ │ │ │ -20.     e is expanded at time <[ref]use time>; <[ref]use a noexpand>
│ │ │ │ -21.   <[ref]/block>
│ │ │ │ -22.   <[ref]set time="2">
│ │ │ │ -23.   <[ref]block name=a>
│ │ │ │ -24.     a is defined for the 2nd time <[ref]use time>.
│ │ │ │ -25.   <[ref]/block>
│ │ │ │ -26.   <[ref]use c>
│ │ │ │ -27.   <[ref]use d>
│ │ │ │ -28.   <[ref]use e>
│ │ │ │

│ │ │ │ This produces the following: │ │ │ │

│ │ │ │ -<[ref]file execute="command-line" (output="filename" | redirect) [noerror]>
│ │ │ │ -<[ref]file include="includefilename" [parameters ...]>
│ │ │ │ -<[ref]file name>
│ │ │ │ -<[ref]file [ name="filename" ] size[ = (byte|kbyte|mbyte|gbyte) ] [precision=n]>
│ │ │ │ -<[ref]file [ name="filename" ] time[ ="format" ]>
│ │ │ │ -<[ref]file [ name="filename" ] date[ ="format" ]>
│ │ │ │ -<[ref]file search="searchpath">
│ │ │ │ -<[ref]file template="templatefilename">
│ │ │ │ -
│ │ │ │ +    a is expanded at time 1.
│ │ │ │ +    b is expanded at time 0.
│ │ │ │ +  contents of a:   a is expanded at time <[ref]use time>.
│ │ │ │ +  contents of b:   b is expanded at time 0.
│ │ │ │ +    c is expanded at time 1;   a is expanded at time 1.
│ │ │ │ +    d is expanded at time 1;   a is expanded at time 2.
│ │ │ │ +    e is expanded at time 2;   a is defined for the 2nd time <[ref]use time>.
│ │ │ │

│ │ │ │

│ │ │ │ When block a and block b are defined in lines 2-7 the contents of a │ │ │ │ are taken literally, however, the contents for b are already expanded │ │ │ │ so the macro time is evaluated. So a is expanded when it │ │ │ │ is used, while the contents of b are already expanded. │ │ │ │

│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -24,59 +24,26 @@ │ │ │ │ │ However, if the block tag is marked with the expand │ │ │ │ │ modifier it is expanded immediately. This is useful │ │ │ │ │ if you want to store something in a block macro, │ │ │ │ │ that depends on the current value of another macro. │ │ │ │ │ This other macro may no longer have the correct │ │ │ │ │ value when the macro is expanded. Here is some code │ │ │ │ │ that demonstrate when the htp tags are expanded: │ │ │ │ │ -  1.   <_[_[_r_e_f_]_]_s_e_t time="0"> │ │ │ │ │ -  2.   <_[_[_r_e_f_]_]_b_l_o_c_k name=a> │ │ │ │ │ -  3.     a is expanded at time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ -  4.   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -  5.   <_[_[_r_e_f_]_]_b_l_o_c_k name=b expand> │ │ │ │ │ -  6.     b is expanded at time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ -  7.   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ -  8.   <_[_[_r_e_f_]_]_s_e_t time="1"> │ │ │ │ │ -  9.   <_[_[_r_e_f_]_]_u_s_e a> │ │ │ │ │ - 10.   <_[_[_r_e_f_]_]_u_s_e b> │ │ │ │ │ - 11.   contents of a: <_[_[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ │ - 12.   contents of b: <_[_[_r_e_f_]_]_u_s_e b noexpand> │ │ │ │ │ - 13.   <_[_[_r_e_f_]_]_b_l_o_c_k name=c expand> │ │ │ │ │ - 14.     c is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ │ - _[_r_e_f_]_]_u_s_e a> │ │ │ │ │ - 15.   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ - 16.   <_[_[_r_e_f_]_]_b_l_o_c_k name=d expand> │ │ │ │ │ - 17.     d is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ │ - _[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ │ - 18.   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ - 19.   <_[_[_r_e_f_]_]_b_l_o_c_k name=e> │ │ │ │ │ - 20.     e is expanded at time <_[_[_r_e_f_]_]_u_s_e time>; <_[ │ │ │ │ │ - _[_r_e_f_]_]_u_s_e a noexpand> │ │ │ │ │ - 21.   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ - 22.   <_[_[_r_e_f_]_]_s_e_t time="2"> │ │ │ │ │ - 23.   <_[_[_r_e_f_]_]_b_l_o_c_k name=a> │ │ │ │ │ - 24.     a is defined for the 2nd time <_[_[_r_e_f_]_]_u_s_e │ │ │ │ │ - time>. │ │ │ │ │ - 25.   <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ - 26.   <_[_[_r_e_f_]_]_u_s_e c> │ │ │ │ │ - 27.   <_[_[_r_e_f_]_]_u_s_e d> │ │ │ │ │ - 28.   <_[_[_r_e_f_]_]_u_s_e e> │ │ │ │ │ This produces the following: │ │ │ │ │ - <_[_[_r_e_f_]_]_f_i_l_e execute="command-line" │ │ │ │ │ - (output="filename" | redirect) [noerror]> │ │ │ │ │ - <_[_[_r_e_f_]_]_f_i_l_e include="includefilename" [parameters │ │ │ │ │ - ...]> │ │ │ │ │ - <_[_[_r_e_f_]_]_f_i_l_e name> │ │ │ │ │ - <_[_[_r_e_f_]_]_f_i_l_e [ name="filename" ] size[ = │ │ │ │ │ - (byte|kbyte|mbyte|gbyte) ] [precision=n]> │ │ │ │ │ - <_[_[_r_e_f_]_]_f_i_l_e [ name="filename" ] time[ ="format" ]> │ │ │ │ │ - <_[_[_r_e_f_]_]_f_i_l_e [ name="filename" ] date[ ="format" ]> │ │ │ │ │ - <_[_[_r_e_f_]_]_f_i_l_e search="searchpath"> │ │ │ │ │ - <_[_[_r_e_f_]_]_f_i_l_e template="templatefilename"> │ │ │ │ │ - │ │ │ │ │ +     a is expanded at time 1. │ │ │ │ │ +     b is expanded at time 0. │ │ │ │ │ +   contents of a:   a is expanded at time <_[ │ │ │ │ │ + _[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ +   contents of b:   b is expanded at time 0. │ │ │ │ │ +     c is expanded at time 1;   a is expanded at │ │ │ │ │ + time 1. │ │ │ │ │ +     d is expanded at time 1;   a is expanded at │ │ │ │ │ + time 2. │ │ │ │ │ +     e is expanded at time 2;   a is defined for the │ │ │ │ │ + 2nd time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ When block a and block b are defined in lines 2- │ │ │ │ │ 7 the contents of a are taken literally, however, │ │ │ │ │ the contents for b are already expanded so the │ │ │ │ │ macro time is evaluated. So a is expanded when it │ │ │ │ │ is used, while the contents of b are already │ │ │ │ │ expanded. │ │ │ │ │ In line 10 and 12 the _[_[_r_e_f_]_]_u_s_e tag is used with │ │ │ ├── ./usr/share/doc/htp/file.html │ │ │ │ @@ -114,48 +114,61 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -<[ref]IF [NOT] conditional>
│ │ │ │ -    block #1
│ │ │ │ -[
│ │ │ │ -<ELSEIF [NOT] conditional>
│ │ │ │ -    block #2
│ │ │ │ -...
│ │ │ │ -]
│ │ │ │ -[
│ │ │ │ -<ELSE>
│ │ │ │ -    block #3
│ │ │ │ -]
│ │ │ │ -<[ref]/IF>
│ │ │ │ -
│ │ │ │ +    a is expanded at time 1.
│ │ │ │ +    b is expanded at time 0.
│ │ │ │ +  contents of a:   a is expanded at time <[ref]use time>.
│ │ │ │ +  contents of b:   b is expanded at time 0.
│ │ │ │ +    c is expanded at time 1;   a is expanded at time 1.
│ │ │ │ +    d is expanded at time 1;   a is expanded at time 2.
│ │ │ │ +    e is expanded at time 2;   a is defined for the 2nd time <[ref]use time>.
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ FILE has several optional parameters of differing purpose. │ │ │ │ The output file's name, the current date and time, and the contents of │ │ │ │ another file may be included. Another file's time, date, or size may be │ │ │ │ added to the output file as well. │ │ │ │

│ │ │ │ As with all HTML, these tags do not have to be on their own line, so the │ │ │ │ following is perfectly acceptable: │ │ │ │

│ │ │ │ -<[ref]img src="filename" ...>
│ │ │ │ +  <[ref]def name="bigfont">
│ │ │ │ +    <font size="+4">
│ │ │ │ +  <[ref]/def>
│ │ │ │ +
│ │ │ │ +  <[ref]def name="/bigfont">
│ │ │ │ +    </font>
│ │ │ │ +  <[ref]/def>
│ │ │ │
│ │ │ │ +  <bigfont>Some large text</bigfont>
│ │ │ │

│ │ │ │

│ │ │ │

NAME, TIME, SIZE

│ │ │ │

│ │ │ │ To include information about another file, such as an archive file or │ │ │ │ graphic image, specify its name with the NAME attribute followed by the │ │ │ │ type of information to be displayed: │ │ │ │

│ │ │ │ -    <[ref]IF name="Jim">...<[ref]/IF>
│ │ │ │ +<[ref]IF [NOT] conditional>
│ │ │ │ +    block #1
│ │ │ │ +[
│ │ │ │ +<ELSEIF [NOT] conditional>
│ │ │ │ +    block #2
│ │ │ │ +...
│ │ │ │ +]
│ │ │ │ +[
│ │ │ │ +<ELSE>
│ │ │ │ +    block #3
│ │ │ │ +]
│ │ │ │ +<[ref]/IF>
│ │ │ │ +
│ │ │ │

│ │ │ │

│ │ │ │ For file size information, the value BYTE, KBYTE, etc. dictates how the │ │ │ │ information is displayed. In anything other than byte format, the information │ │ │ │ is displayed in floating-point notation. The amount of precision (the number │ │ │ │ of digits to the right of the decimal point) can be set with the optional │ │ │ │ PRECISION attribute. The default precision is zero (0), which means no │ │ │ │ @@ -184,15 +197,16 @@ │ │ │ │

│ │ │ │ Additional parameters can be set in the FILE INCLUDE tag, which are │ │ │ │ interpreted as macros that are "passed" to the included file. The macros │ │ │ │ are available only to the include file (and any macros or included files it │ │ │ │ holds). After the file is completely included, the macros are no longer │ │ │ │ available. So: │ │ │ │

│ │ │ │ -    <[ref]IF name>...<[ref]/IF>
│ │ │ │ +<[ref]INC macroname1="increment1" [macroname2="increment2" ... ] [GLOBAL]>
│ │ │ │ +
│ │ │ │

│ │ │ │

│ │ │ │ Macros named "name" and "email" are set, and available inside the included │ │ │ │ file. They are not available, however, past the tag (which is why the │ │ │ │ second statement will fail.) │ │ │ │

│ │ │ │

TEMPLATE

│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,40 +1,57 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: FFIILLEE ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_I_F [NOT] conditional> │ │ │ │ │ -  _L_i_c_e_n_s_e     block #1 │ │ │ │ │ -  _T_u_t_o_r_i_a_l [ │ │ │ │ │ -  _U_s_a_g_e │ │ │ │ │ -  HTP Tags     block #2 │ │ │ │ │ -    _A_L_T_T_E_X_T ... │ │ │ │ │ -    _B_L_O_C_K ] │ │ │ │ │ -    _B_L_O_C_K_D_E_F [ │ │ │ │ │ -    _D_E_F │ │ │ │ │ -  [>] _F_I_L_E     block #3 │ │ │ │ │ -    _I_F ] │ │ │ │ │ -    _I_N_C <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ │ -    _I_M_G │ │ │ │ │ -    _I_M_A_G_E_U_R_L ********** ssyynnooppssiiss ********** │ │ │ │ │ -    _O_P_T FFIILLEE has several optional parameters of differing │ │ │ │ │ -    _O_U_T_P_U_T purpose. The output file's name, the current date │ │ │ │ │ -    _Q_U_O_T_E and time, and the contents of another file may be │ │ │ │ │ -    _S_E_T included. Another file's time, date, or size may be │ │ │ │ │ -    _U_N_D_E_F added to the output file as well. │ │ │ │ │ -    _U_N_S_E_T As with all HTML, these tags do not have to be on │ │ │ │ │ -    _U_S_E_,_ _$ their own line, so the following is perfectly │ │ │ │ │ -    _W_H_I_L_E acceptable: │ │ │ │ │ -    _<_!_-_-_- <_[_[_r_e_f_]_]_i_m_g src="filename" ...> │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n     a is expanded at time 1. │ │ │ │ │ +  _L_i_c_e_n_s_e     b is expanded at time 0. │ │ │ │ │ +  _T_u_t_o_r_i_a_l   contents of a:   a is expanded at time <_[ │ │ │ │ │ +  _U_s_a_g_e _[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ +  HTP Tags   contents of b:   b is expanded at time 0. │ │ │ │ │ +    _A_L_T_T_E_X_T     c is expanded at time 1;   a is expanded at │ │ │ │ │ +    _B_L_O_C_K time 1. │ │ │ │ │ +    _B_L_O_C_K_D_E_F     d is expanded at time 1;   a is expanded at │ │ │ │ │ +    _D_E_F time 2. │ │ │ │ │ +  [>] _F_I_L_E     e is expanded at time 2;   a is defined for the │ │ │ │ │ +    _I_F 2nd time <_[_[_r_e_f_]_]_u_s_e time>. │ │ │ │ │ +    _I_N_C ********** ssyynnooppssiiss ********** │ │ │ │ │ +    _I_M_G FFIILLEE has several optional parameters of differing │ │ │ │ │ +    _I_M_A_G_E_U_R_L purpose. The output file's name, the current date │ │ │ │ │ +    _O_P_T and time, and the contents of another file may be │ │ │ │ │ +    _O_U_T_P_U_T included. Another file's time, date, or size may be │ │ │ │ │ +    _Q_U_O_T_E added to the output file as well. │ │ │ │ │ +    _S_E_T As with all HTML, these tags do not have to be on │ │ │ │ │ +    _U_N_D_E_F their own line, so the following is perfectly │ │ │ │ │ +    _U_N_S_E_T acceptable: │ │ │ │ │ +    _U_S_E_,_ _$   <_[_[_r_e_f_]_]_d_e_f name="bigfont"> │ │ │ │ │ +    _W_H_I_L_E     │ │ │ │ │ +    _<_!_-_-_-   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │   _H_i_s_t_o_r_y │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t ******** NNAAMMEE,, TTIIMMEE,, SSIIZZEE ******** │ │ │ │ │ -  _B_u_g_s To include information about another file, such as │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t   <_[_[_r_e_f_]_]_d_e_f name="/bigfont"> │ │ │ │ │ +  _B_u_g_s     │ │ │ │ │ +   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │ + │ │ │ │ │ +   Some large text │ │ │ │ │ + ******** NNAAMMEE,, TTIIMMEE,, SSIIZZEE ******** │ │ │ │ │ + To include information about another file, such as │ │ │ │ │ an archive file or graphic image, specify its name │ │ │ │ │ with the NAME attribute followed by the type of │ │ │ │ │ information to be displayed: │ │ │ │ │ -     <_[_[_r_e_f_]_]_I_F name="Jim">...<_[_[_r_e_f_]_]_/_I_F> │ │ │ │ │ + <_[_[_r_e_f_]_]_I_F [NOT] conditional> │ │ │ │ │ +     block #1 │ │ │ │ │ + [ │ │ │ │ │ + │ │ │ │ │ +     block #2 │ │ │ │ │ + ... │ │ │ │ │ + ] │ │ │ │ │ + [ │ │ │ │ │ + │ │ │ │ │ +     block #3 │ │ │ │ │ + ] │ │ │ │ │ + <_[_[_r_e_f_]_]_/_I_F> │ │ │ │ │ + │ │ │ │ │ For file size information, the value BYTE, KBYTE, │ │ │ │ │ etc. dictates how the information is displayed. In │ │ │ │ │ anything other than byte format, the information is │ │ │ │ │ displayed in floating-point notation. The amount of │ │ │ │ │ precision (the number of digits to the right of the │ │ │ │ │ decimal point) can be set with the optional │ │ │ │ │ PRECISION attribute. The default precision is zero │ │ │ │ │ @@ -65,15 +82,17 @@ │ │ │ │ │ Additional parameters can be set in the FILE │ │ │ │ │ INCLUDE tag, which are interpreted as macros that │ │ │ │ │ are "passed" to the included file. The macros are │ │ │ │ │ available only to the include file (and any macros │ │ │ │ │ or included files it holds). After the file is │ │ │ │ │ completely included, the macros are no longer │ │ │ │ │ available. So: │ │ │ │ │ -     <_[_[_r_e_f_]_]_I_F name>...<_[_[_r_e_f_]_]_/_I_F> │ │ │ │ │ + <_[_[_r_e_f_]_]_I_N_C macroname1="increment1" │ │ │ │ │ + [macroname2="increment2" ... ] [GLOBAL]> │ │ │ │ │ + │ │ │ │ │ Macros named "name" and "email" are set, and │ │ │ │ │ available inside the included file. They are not │ │ │ │ │ available, however, past the tag (which is why the │ │ │ │ │ second statement will fail.) │ │ │ │ │ ******** TTEEMMPPLLAATTEE ******** │ │ │ │ │ A template file is nothing more than a default │ │ │ │ │ include file, one that is included once the input │ │ │ ├── ./usr/share/doc/htp/if.html │ │ │ │ @@ -114,34 +114,30 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -    File image.gif <[ref]FILE NAME="image.gif" SIZE=KBYTE> kilobytes
│ │ │ │ -    Last modified <[ref]FILE NAME="image.gif" TIME>, <[ref]FILE NAME="image.gif" DATE>
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ IF, NOT, ELSEIF, ELSE, and /IF are the building │ │ │ │ blocks for conditional processing. The basic form is shown above. │ │ │ │

"Conditional" is either a "compare" or "is defined" operation. A │ │ │ │ compare operator is a test of the value of a macro against a literal │ │ │ │ string: │ │ │ │

│ │ │ │ -    <[ref]FILE INCLUDE="include.hti" name="Jim Nelson" email="jnelson@crl.com">
│ │ │ │ -    This tag will fail: <[ref]USE name>
│ │ │ │ +<[ref]INC macroname1="increment1" [macroname2="increment2" ... ] [GLOBAL]>
│ │ │ │ +
│ │ │ │

│ │ │ │

│ │ │ │ and a defined operator is a test of a macro's existance: │ │ │ │

│ │ │ │

│ │ │ │ -    <[ref]IF name>...<[ref]/IF>
│ │ │ │ -l" [ path="path/in/local/filesystem" ]>
│ │ │ │ -
│ │ │ │ +    <[ref]INC i="1" j="-1">
│ │ │ │

│ │ │ │

│ │ │ │ If the NOT tag is present in the IF markup, the evaluation of the │ │ │ │ conditional is reversed. The first IF or ELSEIF condition that │ │ │ │ evaluates to true is chosen. If none of the conditions is true the │ │ │ │ ELSE block is taken if it is present. A conditional block │ │ │ │ must be closed with the /IF tag. IF tags can be nested. │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,42 +1,36 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: IIFF,, EELLSSEEIIFF,, EELLSSEE,, //IIFF ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n     File image.gif <_[_[_r_e_f_]_]_F_I_L_E NAME="image.gif" │ │ │ │ │ -  _L_i_c_e_n_s_e SIZE=KBYTE> kilobytes │ │ │ │ │ -  _T_u_t_o_r_i_a_l     Last modified <_[_[_r_e_f_]_]_F_I_L_E NAME="image.gif" │ │ │ │ │ -  _U_s_a_g_e TIME>, <_[_[_r_e_f_]_]_F_I_L_E NAME="image.gif" DATE> │ │ │ │ │ -  HTP Tags ********** ssyynnooppssiiss ********** │ │ │ │ │ -    _A_L_T_T_E_X_T IIFF,, NNOOTT,, EELLSSEEIIFF,, EELLSSEE,, aanndd //IIFF are the building │ │ │ │ │ -    _B_L_O_C_K blocks for conditional processing. The basic form │ │ │ │ │ -    _B_L_O_C_K_D_E_F is shown above. │ │ │ │ │ -    _D_E_F "Conditional" is either a "compare" or "is defined" │ │ │ │ │ -    _F_I_L_E operation. A compare operator is a test of the │ │ │ │ │ -  [>] _I_F value of a macro against a literal string: │ │ │ │ │ -    _I_N_C     <_[_[_r_e_f_]_]_F_I_L_E INCLUDE="include.hti" name="Jim │ │ │ │ │ -    _I_M_G Nelson" email="jnelson@crl.com"> │ │ │ │ │ -    _I_M_A_G_E_U_R_L     This tag will fail: <_[_[_r_e_f_]_]_U_S_E name> │ │ │ │ │ -    _O_P_T and a defined operator is a test of a macro's │ │ │ │ │ -    _O_U_T_P_U_T existance: │ │ │ │ │ -    _Q_U_O_T_E     <_[_[_r_e_f_]_]_I_F name>...<_[_[_r_e_f_]_]_/_I_F> │ │ │ │ │ -    _S_E_T l" [ path="path/in/local/filesystem" ]> │ │ │ │ │ -    _U_N_D_E_F │ │ │ │ │ -    _U_N_S_E_T If the NOT tag is present in the IF markup, the │ │ │ │ │ -    _U_S_E_,_ _$ evaluation of the conditional is reversed. The │ │ │ │ │ -    _W_H_I_L_E first IF or ELSEIF condition that evaluates to true │ │ │ │ │ -    _<_!_-_-_- is chosen. If none of the conditions is true the │ │ │ │ │ -  _H_i_s_t_o_r_y ELSE block is taken if it is present. A conditional │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t block mmuusstt be closed with the /IF tag. IF tags can │ │ │ │ │ -  _B_u_g_s be nested. │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n ********** ssyynnooppssiiss ********** │ │ │ │ │ +  _L_i_c_e_n_s_e IIFF,, NNOOTT,, EELLSSEEIIFF,, EELLSSEE,, aanndd //IIFF are the building │ │ │ │ │ +  _T_u_t_o_r_i_a_l blocks for conditional processing. The basic form │ │ │ │ │ +  _U_s_a_g_e is shown above. │ │ │ │ │ +  HTP Tags "Conditional" is either a "compare" or "is defined" │ │ │ │ │ +    _A_L_T_T_E_X_T operation. A compare operator is a test of the │ │ │ │ │ +    _B_L_O_C_K value of a macro against a literal string: │ │ │ │ │ +    _B_L_O_C_K_D_E_F <_[_[_r_e_f_]_]_I_N_C macroname1="increment1" │ │ │ │ │ +    _D_E_F [macroname2="increment2" ... ] [GLOBAL]> │ │ │ │ │ +    _F_I_L_E │ │ │ │ │ +  [>] _I_F and a defined operator is a test of a macro's │ │ │ │ │ +    _I_N_C existance: │ │ │ │ │ +    _I_M_G     <_[_[_r_e_f_]_]_I_N_C i="1" j="-1"> │ │ │ │ │ +    _I_M_A_G_E_U_R_L If the NOT tag is present in the IF markup, the │ │ │ │ │ +    _O_P_T evaluation of the conditional is reversed. The │ │ │ │ │ +    _O_U_T_P_U_T first IF or ELSEIF condition that evaluates to true │ │ │ │ │ +    _Q_U_O_T_E is chosen. If none of the conditions is true the │ │ │ │ │ +    _S_E_T ELSE block is taken if it is present. A conditional │ │ │ │ │ +    _U_N_D_E_F block mmuusstt be closed with the /IF tag. IF tags can │ │ │ │ │ +    _U_N_S_E_T be nested. │ │ │ │ │ +    _U_S_E_,_ _$ │ │ │ │ │ +    _W_H_I_L_E │ │ │ │ │ +    _<_!_-_-_- │ │ │ │ │ +  _H_i_s_t_o_r_y │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t │ │ │ │ │ +  _B_u_g_s │ │ │ ├── ./usr/share/doc/htp/imageurl.html │ │ │ │ @@ -137,36 +137,15 @@ │ │ │ │ checks (case-insensitive) if it is a prefix of the image's SRC │ │ │ │ attribute. If it matches this prefix is replaced by the given PATH. │ │ │ │ If no IMAGEURL matches the SRC is considered as relative link and │ │ │ │ looked up in the current directory.

│ │ │ │

│ │ │ │ For example:

│ │ │ │

│ │ │ │ -  <[ref]imageurl url="http://my.domain.org/" path="/var/www/my.domain/">
│ │ │ │ -  <[ref]imageurl url="other.domain.org/" path="/var/www/other.domain/">
│ │ │ │ -
│ │ │ │ -  For this line: <[ref]img src="logo.gif">
│ │ │ │ -  the local filename "logo.gif" will be used to determine image dimensions
│ │ │ │ -  (no URL replacement).
│ │ │ │ -
│ │ │ │ -  For this line: <[ref]img src="http://my.domain.org/logo.gif">
│ │ │ │ -  the local filename "/var/www/my.domain/logo.gif" will be used.
│ │ │ │ -
│ │ │ │ -  But for this line: <[ref]img src="http://other.domain.org/logo.gif">
│ │ │ │ -  the local file cannot be found (no prefix match), so the image dimensions
│ │ │ │ -  will not be added.
│ │ │ │ -
│ │ │ │ -  Order is important; last IMAGEURL tag takes precedence:
│ │ │ │ -  <[ref]imageurl url="/" path="/var/www/htdocs/">
│ │ │ │ -  <[ref]imageurl url="/test/" path="/var/www/test/">
│ │ │ │ -
│ │ │ │ -  <[ref]img src="/image.gif"> and <[ref]img src="/test/image.gif"> are mapped to
│ │ │ │ -  /var/www/htdocs/image.gif and /var/www/test/image.gif, resp.
│ │ │ │ -  If the order of the imageurl lines would be swapped, the second
│ │ │ │ -  image would be mapped to /var/www/htdocs/test/image.gif.
│ │ │ │ +    <[ref]INC i="1" j="-1">
│ │ │ │

│ │ │ │

│ │ │ │ If IMAGEURL is specified with a URL but no PATH attribute, it is treated as │ │ │ │ an undefine, and is removed.

│ │ │ │

│ │ │ │ Since you usually need the url mapping for a number of images used throughout │ │ │ │ a set of documents, IMAGEURL is most appropriately put into an │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -19,52 +19,18 @@ │ │ │ │ │     _O_U_T_P_U_T defined imageurl it checks (case-insensitive) if it │ │ │ │ │     _Q_U_O_T_E is a prefix of the image's SRC attribute. If it │ │ │ │ │     _S_E_T matches this prefix is replaced by the given PATH. │ │ │ │ │     _U_N_D_E_F If no IMAGEURL matches the SRC is considered as │ │ │ │ │     _U_N_S_E_T relative link and looked up in the current │ │ │ │ │     _U_S_E_,_ _$ directory. │ │ │ │ │     _W_H_I_L_E For example: │ │ │ │ │ -    _<_!_-_-_-   <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="http://my.domain.org/ │ │ │ │ │ -  _H_i_s_t_o_r_y " path="/var/www/my.domain/"> │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t   <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="other.domain.org/" path="/ │ │ │ │ │ -  _B_u_g_s var/www/other.domain/"> │ │ │ │ │ - │ │ │ │ │ -   For this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif"> │ │ │ │ │ -   the local filename "logo.gif" will be used to │ │ │ │ │ - determine image dimensions │ │ │ │ │ -   (no URL replacement). │ │ │ │ │ - │ │ │ │ │ -   For this line: <_[_[_r_e_f_]_]_i_m_g src="http:// │ │ │ │ │ - my.domain.org/logo.gif"> │ │ │ │ │ -   the local filename "/var/www/my.domain/logo.gif" │ │ │ │ │ - will be used. │ │ │ │ │ - │ │ │ │ │ -   But for this line: <_[_[_r_e_f_]_]_i_m_g src="http:// │ │ │ │ │ - other.domain.org/logo.gif"> │ │ │ │ │ -   the local file cannot be found (no prefix match), │ │ │ │ │ - so the image dimensions │ │ │ │ │ -   will not be added. │ │ │ │ │ - │ │ │ │ │ -   Order is important; last IMAGEURL tag takes │ │ │ │ │ - precedence: │ │ │ │ │ -   <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="/" path="/var/www/htdocs/"> │ │ │ │ │ -   <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="/test/" path="/var/www/ │ │ │ │ │ - test/"> │ │ │ │ │ - │ │ │ │ │ -   <_[_[_r_e_f_]_]_i_m_g src="/image.gif"> and <_[_[_r_e_f_]_]_i_m_g │ │ │ │ │ - src="/test/image.gif"> are mapped to │ │ │ │ │ -   /var/www/htdocs/image.gif and /var/www/test/ │ │ │ │ │ - image.gif, resp. │ │ │ │ │ -   If the order of the imageurl lines would be │ │ │ │ │ - swapped, the second │ │ │ │ │ -   image would be mapped to /var/www/htdocs/test/ │ │ │ │ │ - image.gif. │ │ │ │ │ - If IMAGEURL is specified with a URL but no PATH │ │ │ │ │ - attribute, it is treated as an undefine, and is │ │ │ │ │ - removed. │ │ │ │ │ +    _<_!_-_-_-     <_[_[_r_e_f_]_]_I_N_C i="1" j="-1"> │ │ │ │ │ +  _H_i_s_t_o_r_y If IMAGEURL is specified with a URL but no PATH │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t attribute, it is treated as an undefine, and is │ │ │ │ │ +  _B_u_g_s removed. │ │ │ │ │ Since you usually need the url mapping for a number │ │ │ │ │ of images used throughout a set of documents, │ │ │ │ │ IMAGEURL is most appropriately put into an _i_n_c_l_u_d_e │ │ │ │ │ _f_i_l_e or the _h_t_p_._d_e_f file. │ │ │ │ │ In addition to WIDTH and HEIGHT, htp can also │ │ │ │ │ (semi-)automatically add an _A_L_T_ _t_e_x_t attribute to │ │ │ │ │ _I_M_G tags. │ │ │ ├── ./usr/share/doc/htp/img.html │ │ │ │ @@ -114,16 +114,14 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -    <[ref]FILE INCLUDE="include.hti" name="Jim Nelson" email="jnelson@crl.com">
│ │ │ │ -    This tag will fail: <[ref]USE name>
│ │ │ │

│ │ │ │

synopsis

│ │ │ │

img is a standard HTML tag. htp can add the specified │ │ │ │ image's width and height to the tag automatically. This has the advantage │ │ │ │ of not having to determine each image's size manually, which is especially │ │ │ │ useful if the image may change frequently.

│ │ │ │

htp adds this information with the WIDTH and HEIGHT markup │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,39 +1,36 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: IIMMGG ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n     <_[_[_r_e_f_]_]_F_I_L_E INCLUDE="include.hti" name="Jim │ │ │ │ │ -  _L_i_c_e_n_s_e Nelson" email="jnelson@crl.com"> │ │ │ │ │ -  _T_u_t_o_r_i_a_l     This tag will fail: <_[_[_r_e_f_]_]_U_S_E name> │ │ │ │ │ -  _U_s_a_g_e ********** ssyynnooppssiiss ********** │ │ │ │ │ -  HTP Tags iimmgg is a standard HTML tag. htp can add the │ │ │ │ │ -    _A_L_T_T_E_X_T specified image's width and height to the tag │ │ │ │ │ -    _B_L_O_C_K automatically. This has the advantage of not having │ │ │ │ │ -    _B_L_O_C_K_D_E_F to determine each image's size manually, which is │ │ │ │ │ -    _D_E_F especially useful if the image may change │ │ │ │ │ -    _F_I_L_E frequently. │ │ │ │ │ -    _I_F htp adds this information with the WIDTH and HEIGHT │ │ │ │ │ -    _I_N_C markup attributes. If htp detects these attributes │ │ │ │ │ -  [>] _I_M_G are already present in the tag, it will nnoott modify │ │ │ │ │ -    _I_M_A_G_E_U_R_L the values. If htp cannot find the image file, it │ │ │ │ │ -    _O_P_T will issue a warning but not halt processing. │ │ │ │ │ -    _O_U_T_P_U_T At this time, GIF (Graphic Interchange Format), PNG │ │ │ │ │ -    _Q_U_O_T_E (Portable Network Graphics), and JFIF (JPEG File │ │ │ │ │ -    _S_E_T Interchange Format) are supported. │ │ │ │ │ -    _U_N_D_E_F The _I_M_G_X_Y_ _a_n_d_ _N_O_I_M_G_X_Y options control whether or │ │ │ │ │ -    _U_N_S_E_T not htp actually adds this information as it │ │ │ │ │ -    _U_S_E_,_ _$ executes. │ │ │ │ │ -    _W_H_I_L_E Since htp is able to lookup files only in the local │ │ │ │ │ -    _<_!_-_-_- filesystem, the _I_M_A_G_E_U_R_L tag may be used to map │ │ │ │ │ -  _H_i_s_t_o_r_y URLs to local files. │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t htp can also add default ALT text to IMG tags using │ │ │ │ │ -  _B_u_g_s _A_L_T_T_E_X_T. │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n ********** ssyynnooppssiiss ********** │ │ │ │ │ +  _L_i_c_e_n_s_e iimmgg is a standard HTML tag. htp can add the │ │ │ │ │ +  _T_u_t_o_r_i_a_l specified image's width and height to the tag │ │ │ │ │ +  _U_s_a_g_e automatically. This has the advantage of not having │ │ │ │ │ +  HTP Tags to determine each image's size manually, which is │ │ │ │ │ +    _A_L_T_T_E_X_T especially useful if the image may change │ │ │ │ │ +    _B_L_O_C_K frequently. │ │ │ │ │ +    _B_L_O_C_K_D_E_F htp adds this information with the WIDTH and HEIGHT │ │ │ │ │ +    _D_E_F markup attributes. If htp detects these attributes │ │ │ │ │ +    _F_I_L_E are already present in the tag, it will nnoott modify │ │ │ │ │ +    _I_F the values. If htp cannot find the image file, it │ │ │ │ │ +    _I_N_C will issue a warning but not halt processing. │ │ │ │ │ +  [>] _I_M_G At this time, GIF (Graphic Interchange Format), PNG │ │ │ │ │ +    _I_M_A_G_E_U_R_L (Portable Network Graphics), and JFIF (JPEG File │ │ │ │ │ +    _O_P_T Interchange Format) are supported. │ │ │ │ │ +    _O_U_T_P_U_T The _I_M_G_X_Y_ _a_n_d_ _N_O_I_M_G_X_Y options control whether or │ │ │ │ │ +    _Q_U_O_T_E not htp actually adds this information as it │ │ │ │ │ +    _S_E_T executes. │ │ │ │ │ +    _U_N_D_E_F Since htp is able to lookup files only in the local │ │ │ │ │ +    _U_N_S_E_T filesystem, the _I_M_A_G_E_U_R_L tag may be used to map │ │ │ │ │ +    _U_S_E_,_ _$ URLs to local files. │ │ │ │ │ +    _W_H_I_L_E htp can also add default ALT text to IMG tags using │ │ │ │ │ +    _<_!_-_-_- _A_L_T_T_E_X_T. │ │ │ │ │ +  _H_i_s_t_o_r_y │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t │ │ │ │ │ +  _B_u_g_s │ │ │ ├── ./usr/share/doc/htp/inc.html │ │ │ │ @@ -114,36 +114,15 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -  <[ref]imageurl url="http://my.domain.org/" path="/var/www/my.domain/">
│ │ │ │ -  <[ref]imageurl url="other.domain.org/" path="/var/www/other.domain/">
│ │ │ │ -
│ │ │ │ -  For this line: <[ref]img src="logo.gif">
│ │ │ │ -  the local filename "logo.gif" will be used to determine image dimensions
│ │ │ │ -  (no URL replacement).
│ │ │ │ -
│ │ │ │ -  For this line: <[ref]img src="http://my.domain.org/logo.gif">
│ │ │ │ -  the local filename "/var/www/my.domain/logo.gif" will be used.
│ │ │ │ -
│ │ │ │ -  But for this line: <[ref]img src="http://other.domain.org/logo.gif">
│ │ │ │ -  the local file cannot be found (no prefix match), so the image dimensions
│ │ │ │ -  will not be added.
│ │ │ │ -
│ │ │ │ -  Order is important; last IMAGEURL tag takes precedence:
│ │ │ │ -  <[ref]imageurl url="/" path="/var/www/htdocs/">
│ │ │ │ -  <[ref]imageurl url="/test/" path="/var/www/test/">
│ │ │ │ -
│ │ │ │ -  <[ref]img src="/image.gif"> and <[ref]img src="/test/image.gif"> are mapped to
│ │ │ │ -  /var/www/htdocs/image.gif and /var/www/test/image.gif, resp.
│ │ │ │ -  If the order of the imageurl lines would be swapped, the second
│ │ │ │ -  image would be mapped to /var/www/htdocs/test/image.gif.
│ │ │ │ +    <[ref]IF name>...<[ref]/IF>
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ The INC can be used for incrementing/decrementing a │ │ │ │ variable or for variable addition. The basic form is shown above. │ │ │ │

│ │ │ │ The "increment" is anything that evaluates to a integer. It can be a │ │ │ │ literal string or a macro preceeded by the '$'-operator. The │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,70 +1,36 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: IINNCC ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n   <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="http://my.domain.org/ │ │ │ │ │ -  _L_i_c_e_n_s_e " path="/var/www/my.domain/"> │ │ │ │ │ -  _T_u_t_o_r_i_a_l   <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="other.domain.org/" path="/ │ │ │ │ │ -  _U_s_a_g_e var/www/other.domain/"> │ │ │ │ │ -  HTP Tags │ │ │ │ │ -    _A_L_T_T_E_X_T   For this line: <_[_[_r_e_f_]_]_i_m_g src="logo.gif"> │ │ │ │ │ -    _B_L_O_C_K   the local filename "logo.gif" will be used to │ │ │ │ │ -    _B_L_O_C_K_D_E_F determine image dimensions │ │ │ │ │ -    _D_E_F   (no URL replacement). │ │ │ │ │ -    _F_I_L_E │ │ │ │ │ -    _I_F   For this line: <_[_[_r_e_f_]_]_i_m_g src="http:// │ │ │ │ │ -  [>] _I_N_C my.domain.org/logo.gif"> │ │ │ │ │ -    _I_M_G   the local filename "/var/www/my.domain/logo.gif" │ │ │ │ │ -    _I_M_A_G_E_U_R_L will be used. │ │ │ │ │ -    _O_P_T │ │ │ │ │ -    _O_U_T_P_U_T   But for this line: <_[_[_r_e_f_]_]_i_m_g src="http:// │ │ │ │ │ -    _Q_U_O_T_E other.domain.org/logo.gif"> │ │ │ │ │ -    _S_E_T   the local file cannot be found (no prefix match), │ │ │ │ │ -    _U_N_D_E_F so the image dimensions │ │ │ │ │ -    _U_N_S_E_T   will not be added. │ │ │ │ │ -    _U_S_E_,_ _$ │ │ │ │ │ -    _W_H_I_L_E   Order is important; last IMAGEURL tag takes │ │ │ │ │ -    _<_!_-_-_- precedence: │ │ │ │ │ -  _H_i_s_t_o_r_y   <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="/" path="/var/www/htdocs/"> │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t   <_[_[_r_e_f_]_]_i_m_a_g_e_u_r_l url="/test/" path="/var/www/ │ │ │ │ │ -  _B_u_g_s test/"> │ │ │ │ │ - │ │ │ │ │ -   <_[_[_r_e_f_]_]_i_m_g src="/image.gif"> and <_[_[_r_e_f_]_]_i_m_g │ │ │ │ │ - src="/test/image.gif"> are mapped to │ │ │ │ │ -   /var/www/htdocs/image.gif and /var/www/test/ │ │ │ │ │ - image.gif, resp. │ │ │ │ │ -   If the order of the imageurl lines would be │ │ │ │ │ - swapped, the second │ │ │ │ │ -   image would be mapped to /var/www/htdocs/test/ │ │ │ │ │ - image.gif. │ │ │ │ │ - ********** ssyynnooppssiiss ********** │ │ │ │ │ - The IINNCC can be used for incrementing/decrementing a │ │ │ │ │ - variable or for variable addition. The basic form │ │ │ │ │ - is shown above. │ │ │ │ │ - The "increment" is anything that evaluates to a │ │ │ │ │ - integer. It can be a literal string or a macro │ │ │ │ │ - preceeded by the '$'-operator. The macroname must │ │ │ │ │ - be the name of a defined macro that contains an │ │ │ │ │ - integer. If the increment is ommitted it defaults │ │ │ │ │ - to 1. The effect of this operation is that the │ │ │ │ │ - macro is redefined to contain the sum of its │ │ │ │ │ - previous value and its increment. │ │ │ │ │ - To increment or decrement a variable you can use │ │ │ │ │ - this form: │ │ │ │ │ -     <_[_[_r_e_f_]_]_I_N_C i="1" j="-1"> │ │ │ │ │ - Note that INC doesn't check if the strings really │ │ │ │ │ - denote integers. It may give weired results when │ │ │ │ │ - used on arbitrary strings. The integer values are │ │ │ │ │ - limited to the range -2^31..2^31. │ │ │ │ │ - Note further that htp wasn't designed to do │ │ │ │ │ - extensive calculations. The INC tag is useful in │ │ │ │ │ - conjunction with WHILE to iterate over the defined │ │ │ │ │ - blocks. │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n     <_[_[_r_e_f_]_]_I_F name>...<_[_[_r_e_f_]_]_/_I_F> │ │ │ │ │ +  _L_i_c_e_n_s_e ********** ssyynnooppssiiss ********** │ │ │ │ │ +  _T_u_t_o_r_i_a_l The IINNCC can be used for incrementing/decrementing a │ │ │ │ │ +  _U_s_a_g_e variable or for variable addition. The basic form │ │ │ │ │ +  HTP Tags is shown above. │ │ │ │ │ +    _A_L_T_T_E_X_T The "increment" is anything that evaluates to a │ │ │ │ │ +    _B_L_O_C_K integer. It can be a literal string or a macro │ │ │ │ │ +    _B_L_O_C_K_D_E_F preceeded by the '$'-operator. The macroname must │ │ │ │ │ +    _D_E_F be the name of a defined macro that contains an │ │ │ │ │ +    _F_I_L_E integer. If the increment is ommitted it defaults │ │ │ │ │ +    _I_F to 1. The effect of this operation is that the │ │ │ │ │ +  [>] _I_N_C macro is redefined to contain the sum of its │ │ │ │ │ +    _I_M_G previous value and its increment. │ │ │ │ │ +    _I_M_A_G_E_U_R_L To increment or decrement a variable you can use │ │ │ │ │ +    _O_P_T this form: │ │ │ │ │ +    _O_U_T_P_U_T     <_[_[_r_e_f_]_]_I_N_C i="1" j="-1"> │ │ │ │ │ +    _Q_U_O_T_E Note that INC doesn't check if the strings really │ │ │ │ │ +    _S_E_T denote integers. It may give weired results when │ │ │ │ │ +    _U_N_D_E_F used on arbitrary strings. The integer values are │ │ │ │ │ +    _U_N_S_E_T limited to the range -2^31..2^31. │ │ │ │ │ +    _U_S_E_,_ _$ Note further that htp wasn't designed to do │ │ │ │ │ +    _W_H_I_L_E extensive calculations. The INC tag is useful in │ │ │ │ │ +    _<_!_-_-_- conjunction with WHILE to iterate over the defined │ │ │ │ │ +  _H_i_s_t_o_r_y blocks. │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t │ │ │ │ │ +  _B_u_g_s │ │ │ ├── ./usr/share/doc/htp/metatag.html │ │ │ │ @@ -88,27 +88,22 @@ │ │ │ │

Metatags are defined with the [ref]def and [ref]blockdef tags and │ │ │ │ undefined with the [ref]undef tag.

│ │ │ │

│ │ │ │ As an example we show how to define a tag that builds a │ │ │ │ fancy horizontal rule out of several images. │ │ │ │

│ │ │ │

│ │ │ │ - 1.  <[ref]def name="imghr">
│ │ │ │ - 2.    <table border="0" cellspacing="0" cellpadding="0">
│ │ │ │ - 3.    <tr>
│ │ │ │ - 4.     <td width=10><[ref]img src="leftsep.png"></td>
│ │ │ │ - 5.     <td width="95%" background="midsep.png">&nbsp;</td>
│ │ │ │ - 6.     <td width=10><[ref]img src="rightsep.png"></td>
│ │ │ │ - 7.    </tr>
│ │ │ │ - 8.    </table>
│ │ │ │ - 9.  <[ref]/def>
│ │ │ │ -10.
│ │ │ │ -11.  paragraph
│ │ │ │ -12.  <imghr>
│ │ │ │ -13.  paragraph
│ │ │ │ + 1. <[ref]OPT (IMGXY|NOIMGXY)>
│ │ │ │ + 2. <[ref]OPT (QUIET|VERBOSE)>
│ │ │ │ + 3. <[ref]OPT (DEPEND|NODEPEND)>
│ │ │ │ + 4. <[ref]OPT (PRECIOUS|NOPRECIOUS)>
│ │ │ │ + 5. <[ref]OPT (CONDENSE|SEMICONDENSE|NOCONDENSE)>
│ │ │ │ + 6. <[ref]OPT DELIM=(HTML|SQUARE|CURLY)>
│ │ │ │ + 7. <[ref]OPT (XML|XML=FALSE)>
│ │ │ │ + 8.
│ │ │ │

│ │ │ │

In line 1 of the above example a new tag named imghr is defined. │ │ │ │ The html code which implements this rule is following in lines 2-8. │ │ │ │ between the [ref]def and │ │ │ │ /def tags. You don't have to understand this │ │ │ │ html code, but you should understand that this is just pure html to │ │ │ │ draw the fancy rule. Every time you write <imghr> │ │ │ │ @@ -118,44 +113,37 @@ │ │ │ │ file.

│ │ │ │

Often you want to define tags that have an opening and a closing │ │ │ │ variant. For this purpose you should use the [ref]blockdef tag. When htp │ │ │ │ encounters a blockdef tag it will automatically search for the │ │ │ │ matching closing tag and put everything between these tags in a block │ │ │ │ macro named block. Here is an example for this.

│ │ │ │

│ │ │ │ - 1. <[ref]OPT (IMGXY|NOIMGXY)>
│ │ │ │ - 2. <[ref]OPT (QUIET|VERBOSE)>
│ │ │ │ - 3. <[ref]OPT (DEPEND|NODEPEND)>
│ │ │ │ - 4. <[ref]OPT (PRECIOUS|NOPRECIOUS)>
│ │ │ │ - 5. <[ref]OPT (CONDENSE|SEMICONDENSE|NOCONDENSE)>
│ │ │ │ - 6. <[ref]OPT DELIM=(HTML|SQUARE|CURLY)>
│ │ │ │ - 7. <[ref]OPT (XML|XML=FALSE)>
│ │ │ │ - 8.
│ │ │ │ + 1. <[ref]OUTPUT FILE="outputfilename" [APPEND] [EXPAND]>
│ │ │ │ + 2. text block
│ │ │ │ + 3. <[ref]/OUTPUT>
│ │ │ │ + 4.
│ │ │ │

│ │ │ │

Using parameters

│ │ │ │

More sophisticated tags accept parameters. The │ │ │ │ option parameter lets multiple metatag parameters be │ │ │ │ named and expanded inside the def or │ │ │ │ blockdef block:

│ │ │ │

│ │ │ │ - 1. <[ref]OUTPUT FILE="outputfilename" [APPEND] [EXPAND]>
│ │ │ │ - 2. text block
│ │ │ │ - 3. <[ref]/OUTPUT>
│ │ │ │ - 4.
│ │ │ │ + 1. <[ref]SET macroname1="macrovalue1" [macroname2="macrovalue2" ...] [GLOBAL]>
│ │ │ │ + 2.
│ │ │ │

│ │ │ │

Saving blocks for later

│ │ │ │

When you are using templates, the html should only be written by │ │ │ │ the template file. The normal htp files should just define macros │ │ │ │ that are used later in the template. So you may want to write block │ │ │ │ tags that just save the block in a macro for later use. Although this │ │ │ │ is possible with htp it is quite tricky, so here we present the way to │ │ │ │ do this:

│ │ │ │

│ │ │ │ - 1. <[ref]QUOTE TAG [ATTRIBUTE=VALUE ...]>
│ │ │ │ - 2.
│ │ │ │ + 1.     <[ref]SET emailaddr="jnelson@crl.com">
│ │ │ │

│ │ │ │

This defines a block macro named section. This macro uses a │ │ │ │ counter sect-ctr that enumerates the sections. It is │ │ │ │ increased for every section (line 3) and then the block macro name is │ │ │ │ build from this counter. So the first section is stored in block │ │ │ │ sect-1, the second in sect-2 and so on. The [ref]global flag │ │ │ │ in line 4 tells htp that these macros should be defined globally │ │ │ │ @@ -174,16 +162,17 @@ │ │ │ │ contents of block to be expanded twice. If you omit it, it would be │ │ │ │ expanded when defining the sect-1 macro and when using it later in the │ │ │ │ template. Generally it is a good idea to use noexpand whenever you │ │ │ │ use expand in a block around it.

│ │ │ │

To close this example we show how to expand the │ │ │ │ sect-${sect-ctr} blocks in the template:

│ │ │ │

│ │ │ │ - 1. <[ref]SET macroname1="macrovalue1" [macroname2="macrovalue2" ...] [GLOBAL]>
│ │ │ │ - 2.
│ │ │ │ + 1. <[ref]UNDEF tagname>
│ │ │ │ + 2. <[ref]UNDEF tagname1 tagname2 ... >
│ │ │ │ + 3.
│ │ │ │

│ │ │ │

│ │ │ │ The [ref]while tag in line 3 checks whether │ │ │ │ the macro sect-${sect-ctr} is defined. If it is defined the body is │ │ │ │ evaluated, which expands the macro and increases sect-ctr. Afterwards │ │ │ │ the while condition is checked again to check for sect-2 macro. This │ │ │ │ repeats until sect-${sect-ctr} is not defined. │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -9,31 +9,22 @@ │ │ │ │ │     _T_e_m_p_l_a_t_e_s functionality. │ │ │ │ │     _F_i_l_e_s Metatags are defined with the _[_[_r_e_f_]_]_d_e_f and _[ │ │ │ │ │   [>] _M_e_t_a_t_a_g_s _[_r_e_f_]_]_b_l_o_c_k_d_e_f tags and undefined with the _[ │ │ │ │ │   _U_s_a_g_e _[_r_e_f_]_]_u_n_d_e_f tag. │ │ │ │ │   _H_T_P_ _T_a_g_s As an example we show how to define a tag that │ │ │ │ │   _H_i_s_t_o_r_y builds a fancy horizontal rule out of several │ │ │ │ │   _W_i_s_h_ _l_i_s_t images. │ │ │ │ │ -  _B_u_g_s  1.  <_[_[_r_e_f_]_]_d_e_f name="imghr"> │ │ │ │ │ -  2.     │ │ │ │ │ -  3.     │ │ │ │ │ -  4.     │ │ │ │ │ -  5.     │ │ │ │ │ -  6.     │ │ │ │ │ -  7.     │ │ │ │ │ -  8.    
<_[_[_r_e_f_]_]_i_m_g │ │ │ │ │ - src="leftsep.png"> <_[_[_r_e_f_]_]_i_m_g │ │ │ │ │ - src="rightsep.png">
│ │ │ │ │ -  9.  <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │ - 10. │ │ │ │ │ - 11.  paragraph │ │ │ │ │ - 12.   │ │ │ │ │ - 13.  paragraph │ │ │ │ │ +  _B_u_g_s  1. <_[_[_r_e_f_]_]_O_P_T (IMGXY|NOIMGXY)> │ │ │ │ │ +  2. <_[_[_r_e_f_]_]_O_P_T (QUIET|VERBOSE)> │ │ │ │ │ +  3. <_[_[_r_e_f_]_]_O_P_T (DEPEND|NODEPEND)> │ │ │ │ │ +  4. <_[_[_r_e_f_]_]_O_P_T (PRECIOUS|NOPRECIOUS)> │ │ │ │ │ +  5. <_[_[_r_e_f_]_]_O_P_T (CONDENSE|SEMICONDENSE|NOCONDENSE)> │ │ │ │ │ +  6. <_[_[_r_e_f_]_]_O_P_T DELIM=(HTML|SQUARE|CURLY)> │ │ │ │ │ +  7. <_[_[_r_e_f_]_]_O_P_T (XML|XML=FALSE)> │ │ │ │ │ +  8. │ │ │ │ │ In line 1 of the above example a new tag named │ │ │ │ │ imghr is defined. The html code which implements │ │ │ │ │ this rule is following in lines 2-8. between the _[ │ │ │ │ │ _[_r_e_f_]_]_d_e_f_ _a_n_d_ _/_d_e_f tags. You don't have to │ │ │ │ │ understand this html code, but you should │ │ │ │ │ understand that this is just pure html to draw the │ │ │ │ │ fancy rule. Every time you write as in line │ │ │ │ │ @@ -44,42 +35,36 @@ │ │ │ │ │ Often you want to define tags that have an opening │ │ │ │ │ and a closing variant. For this purpose you should │ │ │ │ │ use the _[_[_r_e_f_]_]_b_l_o_c_k_d_e_f tag. When htp encounters a │ │ │ │ │ blockdef tag it will automatically search for the │ │ │ │ │ matching closing tag and put everything between │ │ │ │ │ these tags in a block macro named block. Here is an │ │ │ │ │ example for this. │ │ │ │ │ -  1. <_[_[_r_e_f_]_]_O_P_T (IMGXY|NOIMGXY)> │ │ │ │ │ -  2. <_[_[_r_e_f_]_]_O_P_T (QUIET|VERBOSE)> │ │ │ │ │ -  3. <_[_[_r_e_f_]_]_O_P_T (DEPEND|NODEPEND)> │ │ │ │ │ -  4. <_[_[_r_e_f_]_]_O_P_T (PRECIOUS|NOPRECIOUS)> │ │ │ │ │ -  5. <_[_[_r_e_f_]_]_O_P_T (CONDENSE|SEMICONDENSE|NOCONDENSE)> │ │ │ │ │ -  6. <_[_[_r_e_f_]_]_O_P_T DELIM=(HTML|SQUARE|CURLY)> │ │ │ │ │ -  7. <_[_[_r_e_f_]_]_O_P_T (XML|XML=FALSE)> │ │ │ │ │ -  8. │ │ │ │ │ - ********** UUssiinngg ppaarraammeetteerrss ********** │ │ │ │ │ - More sophisticated tags accept parameters. The │ │ │ │ │ - option parameter lets multiple metatag parameters │ │ │ │ │ - be named and expanded inside the def or blockdef │ │ │ │ │ - block: │ │ │ │ │  1. <_[_[_r_e_f_]_]_O_U_T_P_U_T FILE="outputfilename" [APPEND] │ │ │ │ │ [EXPAND]> │ │ │ │ │  2. text block │ │ │ │ │  3. <_[_[_r_e_f_]_]_/_O_U_T_P_U_T> │ │ │ │ │  4. │ │ │ │ │ + ********** UUssiinngg ppaarraammeetteerrss ********** │ │ │ │ │ + More sophisticated tags accept parameters. The │ │ │ │ │ + option parameter lets multiple metatag parameters │ │ │ │ │ + be named and expanded inside the def or blockdef │ │ │ │ │ + block: │ │ │ │ │ +  1. <_[_[_r_e_f_]_]_S_E_T macroname1="macrovalue1" │ │ │ │ │ + [macroname2="macrovalue2" ...] [GLOBAL]> │ │ │ │ │ +  2. │ │ │ │ │ ********** SSaavviinngg bblloocckkss ffoorr llaatteerr ********** │ │ │ │ │ When you are using templates, the html should only │ │ │ │ │ be written by the template file. The normal htp │ │ │ │ │ files should just define macros that are used later │ │ │ │ │ in the template. So you may want to write block │ │ │ │ │ tags that just save the block in a macro for later │ │ │ │ │ use. Although this is possible with htp it is quite │ │ │ │ │ tricky, so here we present the way to do this: │ │ │ │ │ -  1. <_[_[_r_e_f_]_]_Q_U_O_T_E TAG [ATTRIBUTE=VALUE ...]> │ │ │ │ │ -  2. │ │ │ │ │ +  1.     <_[_[_r_e_f_]_]_S_E_T emailaddr="jnelson@crl.com"> │ │ │ │ │ This defines a block macro named section. This │ │ │ │ │ macro uses a counter sect-ctr that enumerates the │ │ │ │ │ sections. It is increased for every section (line │ │ │ │ │ 3) and then the block macro name is build from this │ │ │ │ │ counter. So the first section is stored in block │ │ │ │ │ sect-1, the second in sect-2 and so on. The _[ │ │ │ │ │ _[_r_e_f_]_]_g_l_o_b_a_l flag in line 4 tells htp that these │ │ │ │ │ @@ -102,17 +87,17 @@ │ │ │ │ │ block to be expanded twice. If you omit it, it │ │ │ │ │ would be expanded when defining the sect-1 macro │ │ │ │ │ and when using it later in the template. Generally │ │ │ │ │ it is a good idea to use noexpand whenever you use │ │ │ │ │ expand in a block around it. │ │ │ │ │ To close this example we show how to expand the │ │ │ │ │ sect-${sect-ctr} blocks in the template: │ │ │ │ │ -  1. <_[_[_r_e_f_]_]_S_E_T macroname1="macrovalue1" │ │ │ │ │ - [macroname2="macrovalue2" ...] [GLOBAL]> │ │ │ │ │ -  2. │ │ │ │ │ +  1. <_[_[_r_e_f_]_]_U_N_D_E_F tagname> │ │ │ │ │ +  2. <_[_[_r_e_f_]_]_U_N_D_E_F tagname1 tagname2 ... > │ │ │ │ │ +  3. │ │ │ │ │ The _[_[_r_e_f_]_]_w_h_i_l_e tag in line 3 checks whether the │ │ │ │ │ macro sect-${sect-ctr} is defined. If it is defined │ │ │ │ │ the body is evaluated, which expands the macro and │ │ │ │ │ increases sect-ctr. Afterwards the while condition │ │ │ │ │ is checked again to check for sect-2 macro. This │ │ │ │ │ repeats until sect-${sect-ctr} is not defined. │ │ │ │ │ ********** CCoonncclluussiioonnss ********** │ │ │ ├── ./usr/share/doc/htp/opt.html │ │ │ │ @@ -114,21 +114,17 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -<[ref]OPT (IMGXY|NOIMGXY)>
│ │ │ │ -<[ref]OPT (QUIET|VERBOSE)>
│ │ │ │ -<[ref]OPT (DEPEND|NODEPEND)>
│ │ │ │ -<[ref]OPT (PRECIOUS|NOPRECIOUS)>
│ │ │ │ -<[ref]OPT (CONDENSE|SEMICONDENSE|NOCONDENSE)>
│ │ │ │ -<[ref]OPT DELIM=(HTML|SQUARE|CURLY)>
│ │ │ │ -<[ref]OPT (XML|XML=FALSE)>
│ │ │ │ +<[ref]OUTPUT FILE="outputfilename" [APPEND] [EXPAND]>
│ │ │ │ +text block
│ │ │ │ +<[ref]/OUTPUT>
│ │ │ │
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ OPT is an htp tag that can be used to specify processing │ │ │ │ options inside the actual document being processed. The options are │ │ │ │ used exactly as they would be on the command-line, although they are not │ │ │ │ preceded by a ‘-’ character. │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,26 +1,26 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: OOPPTT ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_O_P_T (IMGXY|NOIMGXY)> │ │ │ │ │ -  _L_i_c_e_n_s_e <_[_[_r_e_f_]_]_O_P_T (QUIET|VERBOSE)> │ │ │ │ │ -  _T_u_t_o_r_i_a_l <_[_[_r_e_f_]_]_O_P_T (DEPEND|NODEPEND)> │ │ │ │ │ -  _U_s_a_g_e <_[_[_r_e_f_]_]_O_P_T (PRECIOUS|NOPRECIOUS)> │ │ │ │ │ -  HTP Tags <_[_[_r_e_f_]_]_O_P_T (CONDENSE|SEMICONDENSE|NOCONDENSE)> │ │ │ │ │ -    _A_L_T_T_E_X_T <_[_[_r_e_f_]_]_O_P_T DELIM=(HTML|SQUARE|CURLY)> │ │ │ │ │ -    _B_L_O_C_K <_[_[_r_e_f_]_]_O_P_T (XML|XML=FALSE)> │ │ │ │ │ -    _B_L_O_C_K_D_E_F │ │ │ │ │ -    _D_E_F ********** ssyynnooppssiiss ********** │ │ │ │ │ -    _F_I_L_E OOPPTT is an htp tag that can be used to specify │ │ │ │ │ -    _I_F processing options inside the actual document being │ │ │ │ │ -    _I_N_C processed. The options are used exactly as they │ │ │ │ │ -    _I_M_G would be on the command-line, although they are not │ │ │ │ │ -    _I_M_A_G_E_U_R_L preceded by a ‘-’ character. │ │ │ │ │ -  [>] _O_P_T Click here for _m_o_r_e_ _i_n_f_o_r_m_a_t_i_o_n_ _o_n_ _u_s_i_n_g │ │ │ │ │ -    _O_U_T_P_U_T _c_u_s_t_o_m_i_z_a_t_i_o_n_ _o_p_t_i_o_n_s_ _w_i_t_h_ _h_t_p. │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_O_U_T_P_U_T FILE="outputfilename" [APPEND] │ │ │ │ │ +  _L_i_c_e_n_s_e [EXPAND]> │ │ │ │ │ +  _T_u_t_o_r_i_a_l text block │ │ │ │ │ +  _U_s_a_g_e <_[_[_r_e_f_]_]_/_O_U_T_P_U_T> │ │ │ │ │ +  HTP Tags │ │ │ │ │ +    _A_L_T_T_E_X_T ********** ssyynnooppssiiss ********** │ │ │ │ │ +    _B_L_O_C_K OOPPTT is an htp tag that can be used to specify │ │ │ │ │ +    _B_L_O_C_K_D_E_F processing options inside the actual document being │ │ │ │ │ +    _D_E_F processed. The options are used exactly as they │ │ │ │ │ +    _F_I_L_E would be on the command-line, although they are not │ │ │ │ │ +    _I_F preceded by a ‘-’ character. │ │ │ │ │ +    _I_N_C Click here for _m_o_r_e_ _i_n_f_o_r_m_a_t_i_o_n_ _o_n_ _u_s_i_n_g │ │ │ │ │ +    _I_M_G _c_u_s_t_o_m_i_z_a_t_i_o_n_ _o_p_t_i_o_n_s_ _w_i_t_h_ _h_t_p. │ │ │ │ │ +    _I_M_A_G_E_U_R_L │ │ │ │ │ +  [>] _O_P_T │ │ │ │ │ +    _O_U_T_P_U_T │ │ │ │ │     _Q_U_O_T_E │ │ │ │ │     _S_E_T │ │ │ │ │     _U_N_D_E_F │ │ │ │ │     _U_N_S_E_T │ │ │ │ │     _U_S_E_,_ _$ │ │ │ │ │     _W_H_I_L_E │ │ │ │ │     _<_!_-_-_- │ │ │ │ │ @@ -30,17 +30,14 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │   _p_a_g_e_ _s_o_u_r_c_e │ │ │ │ │   _h_t_p_ _p_r_o_j_e_c_t │ │ │ │ │   _h_t_p_ _h_o_m_e_p_a_g_e │ │ │ │ │ hosted by │ │ │ │ │ _S_o_u_r_c_e_f_o_r_g_e │ │ │ │ │ HTML coding_[_P_o_w_e_r_e_d_ _b_y │ │ │ │ │ _h_t_p_] │ │ │ ├── ./usr/share/doc/htp/output.html │ │ │ │ @@ -114,21 +114,19 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -<[ref]file include="header.hti">
│ │ │ │ -  <[ref]set sect-ctr="1">
│ │ │ │ -  <[ref]while sect-${sect-ctr}>
│ │ │ │ -    <[ref]use sect-${sect-ctr}>
│ │ │ │ -    <[ref]inc sect-ctr>
│ │ │ │ -  <[ref]/while>
│ │ │ │ -<[ref]file include="footer.hti">
│ │ │ │ +  <[ref]def name="sharedimg" option="name alt">
│ │ │ │ +    <[ref]img src="/home/sharedimages/${name}" alt="${alt}">;
│ │ │ │ +  <[ref]/def>
│ │ │ │ +
│ │ │ │ +  <sharedimg name="bubble.gif" alt="Bubble image">
│ │ │ │

│ │ │ │

synopsis

│ │ │ │

The OUTPUT tag can be used to create auxillary │ │ │ │ files besides the main HTML file. The text between this tag and the │ │ │ │ corresponding </OUTPUT> tag is written to output file.

│ │ │ │

Normally the outputfile is cleared before writing to it, but you │ │ │ │ can use the APPEND attribute to extend an existing file. The text │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,44 +1,43 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: OOUUTTPPUUTT ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_f_i_l_e include="header.hti"> │ │ │ │ │ -  _L_i_c_e_n_s_e   <_[_[_r_e_f_]_]_s_e_t sect-ctr="1"> │ │ │ │ │ -  _T_u_t_o_r_i_a_l   <_[_[_r_e_f_]_]_w_h_i_l_e sect-${sect-ctr}> │ │ │ │ │ -  _U_s_a_g_e     <_[_[_r_e_f_]_]_u_s_e sect-${sect-ctr}> │ │ │ │ │ -  HTP Tags     <_[_[_r_e_f_]_]_i_n_c sect-ctr> │ │ │ │ │ -    _A_L_T_T_E_X_T   <_[_[_r_e_f_]_]_/_w_h_i_l_e> │ │ │ │ │ -    _B_L_O_C_K <_[_[_r_e_f_]_]_f_i_l_e include="footer.hti"> │ │ │ │ │ -    _B_L_O_C_K_D_E_F ********** ssyynnooppssiiss ********** │ │ │ │ │ -    _D_E_F The OOUUTTPPUUTT tag can be used to create auxillary │ │ │ │ │ -    _F_I_L_E files besides the main HTML file. The text between │ │ │ │ │ -    _I_F this tag and the corresponding tag is │ │ │ │ │ -    _I_N_C written to output file. │ │ │ │ │ -    _I_M_G Normally the outputfile is cleared before writing │ │ │ │ │ -    _I_M_A_G_E_U_R_L to it, but you can use the APPEND attribute to │ │ │ │ │ -    _O_P_T extend an existing file. The text written to the │ │ │ │ │ -  [>] _O_U_T_P_U_T file is normally not expanded, i.e. all tags inside │ │ │ │ │ -    _Q_U_O_T_E this block are not executed but written unmodified │ │ │ │ │ -    _S_E_T to the file. However, you can use the _E_X_P_A_N_D │ │ │ │ │ -    _U_N_D_E_F attribute to override this behaviour. │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n   <_[_[_r_e_f_]_]_d_e_f name="sharedimg" option="name alt"> │ │ │ │ │ +  _L_i_c_e_n_s_e     <_[_[_r_e_f_]_]_i_m_g src="/home/sharedimages/${name}" │ │ │ │ │ +  _T_u_t_o_r_i_a_l alt="${alt}">; │ │ │ │ │ +  _U_s_a_g_e   <_[_[_r_e_f_]_]_/_d_e_f> │ │ │ │ │ +  HTP Tags │ │ │ │ │ +    _A_L_T_T_E_X_T   │ │ │ │ │ +    _B_L_O_C_K ********** ssyynnooppssiiss ********** │ │ │ │ │ +    _B_L_O_C_K_D_E_F The OOUUTTPPUUTT tag can be used to create auxillary │ │ │ │ │ +    _D_E_F files besides the main HTML file. The text between │ │ │ │ │ +    _F_I_L_E this tag and the corresponding tag is │ │ │ │ │ +    _I_F written to output file. │ │ │ │ │ +    _I_N_C Normally the outputfile is cleared before writing │ │ │ │ │ +    _I_M_G to it, but you can use the APPEND attribute to │ │ │ │ │ +    _I_M_A_G_E_U_R_L extend an existing file. The text written to the │ │ │ │ │ +    _O_P_T file is normally not expanded, i.e. all tags inside │ │ │ │ │ +  [>] _O_U_T_P_U_T this block are not executed but written unmodified │ │ │ │ │ +    _Q_U_O_T_E to the file. However, you can use the _E_X_P_A_N_D │ │ │ │ │ +    _S_E_T attribute to override this behaviour. │ │ │ │ │ +    _U_N_D_E_F │ │ │ │ │     _U_N_S_E_T │ │ │ │ │     _U_S_E_,_ _$ │ │ │ │ │     _W_H_I_L_E │ │ │ │ │     _<_!_-_-_- │ │ │ │ │   _H_i_s_t_o_r_y │ │ │ │ │   _W_i_s_h_ _l_i_s_t │ │ │ │ │   _B_u_g_s │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │   _p_a_g_e_ _s_o_u_r_c_e │ │ │ │ │   _h_t_p_ _p_r_o_j_e_c_t │ │ │ ├── ./usr/share/doc/htp/quote.html │ │ │ │ @@ -114,21 +114,15 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -<[ref]file include="header.hti">
│ │ │ │ -  <[ref]set sect-ctr="1">
│ │ │ │ -  <[ref]while sect-${sect-ctr}>
│ │ │ │ -    <[ref]use sect-${sect-ctr}>
│ │ │ │ -    <[ref]inc sect-ctr>
│ │ │ │ -  <[ref]/while>
│ │ │ │ -<[ref]file include="footer.hti">
│ │ │ │ +    <[ref]SET emailaddr="jnelson@crl.com">
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ QUOTE is used to quote a macro that would otherwise │ │ │ │ be interpreted by HTP. It may be useful in conjunction with a │ │ │ │ surrounding EXPANDed block to prevent early │ │ │ │ expansion of some contained blocks. Note that '$' evaluation is still │ │ │ │ done inside a quote block. │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,44 +1,38 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: QQUUOOTTEE ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_f_i_l_e include="header.hti"> │ │ │ │ │ -  _L_i_c_e_n_s_e   <_[_[_r_e_f_]_]_s_e_t sect-ctr="1"> │ │ │ │ │ -  _T_u_t_o_r_i_a_l   <_[_[_r_e_f_]_]_w_h_i_l_e sect-${sect-ctr}> │ │ │ │ │ -  _U_s_a_g_e     <_[_[_r_e_f_]_]_u_s_e sect-${sect-ctr}> │ │ │ │ │ -  HTP Tags     <_[_[_r_e_f_]_]_i_n_c sect-ctr> │ │ │ │ │ -    _A_L_T_T_E_X_T   <_[_[_r_e_f_]_]_/_w_h_i_l_e> │ │ │ │ │ -    _B_L_O_C_K <_[_[_r_e_f_]_]_f_i_l_e include="footer.hti"> │ │ │ │ │ -    _B_L_O_C_K_D_E_F ********** ssyynnooppssiiss ********** │ │ │ │ │ -    _D_E_F QQUUOOTTEE is used to quote a macro that would otherwise │ │ │ │ │ -    _F_I_L_E be interpreted by HTP. It may be useful in │ │ │ │ │ -    _I_F conjunction with a surrounding _E_X_P_A_N_Ded block to │ │ │ │ │ -    _I_N_C prevent early expansion of some contained blocks. │ │ │ │ │ -    _I_M_G Note that '$' evaluation is still done inside a │ │ │ │ │ -    _I_M_A_G_E_U_R_L quote block. │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n     <_[_[_r_e_f_]_]_S_E_T emailaddr="jnelson@crl.com"> │ │ │ │ │ +  _L_i_c_e_n_s_e ********** ssyynnooppssiiss ********** │ │ │ │ │ +  _T_u_t_o_r_i_a_l QQUUOOTTEE is used to quote a macro that would otherwise │ │ │ │ │ +  _U_s_a_g_e be interpreted by HTP. It may be useful in │ │ │ │ │ +  HTP Tags conjunction with a surrounding _E_X_P_A_N_Ded block to │ │ │ │ │ +    _A_L_T_T_E_X_T prevent early expansion of some contained blocks. │ │ │ │ │ +    _B_L_O_C_K Note that '$' evaluation is still done inside a │ │ │ │ │ +    _B_L_O_C_K_D_E_F quote block. │ │ │ │ │ +    _D_E_F │ │ │ │ │ +    _F_I_L_E │ │ │ │ │ +    _I_F │ │ │ │ │ +    _I_N_C │ │ │ │ │ +    _I_M_G │ │ │ │ │ +    _I_M_A_G_E_U_R_L │ │ │ │ │     _O_P_T │ │ │ │ │     _O_U_T_P_U_T │ │ │ │ │   [>] _Q_U_O_T_E │ │ │ │ │     _S_E_T │ │ │ │ │     _U_N_D_E_F │ │ │ │ │     _U_N_S_E_T │ │ │ │ │     _U_S_E_,_ _$ │ │ │ │ │     _W_H_I_L_E │ │ │ │ │     _<_!_-_-_- │ │ │ │ │   _H_i_s_t_o_r_y │ │ │ │ │   _W_i_s_h_ _l_i_s_t │ │ │ │ │   _B_u_g_s │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │ - │ │ │ │ │   _p_a_g_e_ _s_o_u_r_c_e │ │ │ │ │   _h_t_p_ _p_r_o_j_e_c_t │ │ │ │ │   _h_t_p_ _h_o_m_e_p_a_g_e │ │ │ │ │ hosted by │ │ │ │ │ _S_o_u_r_c_e_f_o_r_g_e │ │ │ │ │ HTML coding_[_P_o_w_e_r_e_d_ _b_y │ │ │ │ │ _h_t_p_] │ │ │ ├── ./usr/share/doc/htp/set.html │ │ │ │ @@ -114,24 +114,27 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -<[ref]SET macroname1="macrovalue1" [macroname2="macrovalue2" ...] [GLOBAL]>
│ │ │ │ -
│ │ │ │ +  <[ref]set sect-ctr="0">
│ │ │ │ +  <[ref]blockdef name="section">
│ │ │ │ +    <[ref]inc sect-ctr>
│ │ │ │ +    <[ref]block name="sect-${sect-ctr}" expand global>
│ │ │ │ +      <[ref]use block noexpand>
│ │ │ │ +    <[ref]/block>
│ │ │ │ +  <[ref]/blockdef>
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ SET creates a macro definition that can later be expanded │ │ │ │ anywhere in the HTML document. To create a macro: │ │ │ │

│ │ │ │ -<[ref]UNDEF tagname>
│ │ │ │ -<[ref]UNDEF tagname1 tagname2 ... >
│ │ │ │ -
│ │ │ │ +    <[ref]SET emailaddr="jnelson@crl.com">
│ │ │ │

│ │ │ │

│ │ │ │ The macro "emailaddr" can then be expanded later. The │ │ │ │ USE tag is used to expand the macro outside a tag (i.e., into the regular │ │ │ │ text). If the macro needs to be expanded inside a markup tag, use the │ │ │ │ '$' operator. │ │ │ │

│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,36 +1,39 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: SSEETT ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_S_E_T macroname1="macrovalue1" │ │ │ │ │ -  _L_i_c_e_n_s_e [macroname2="macrovalue2" ...] [GLOBAL]> │ │ │ │ │ -  _T_u_t_o_r_i_a_l │ │ │ │ │ -  _U_s_a_g_e ********** ssyynnooppssiiss ********** │ │ │ │ │ -  HTP Tags SSEETT creates a macro definition that can later be │ │ │ │ │ -    _A_L_T_T_E_X_T expanded anywhere in the HTML document. To create a │ │ │ │ │ -    _B_L_O_C_K macro: │ │ │ │ │ -    _B_L_O_C_K_D_E_F <_[_[_r_e_f_]_]_U_N_D_E_F tagname> │ │ │ │ │ -    _D_E_F <_[_[_r_e_f_]_]_U_N_D_E_F tagname1 tagname2 ... > │ │ │ │ │ -    _F_I_L_E │ │ │ │ │ -    _I_F The macro "emailaddr" can then be expanded later. │ │ │ │ │ -    _I_N_C The _U_S_E tag is used to expand the macro outside a │ │ │ │ │ -    _I_M_G tag (i.e., into the regular text). If the macro │ │ │ │ │ -    _I_M_A_G_E_U_R_L needs to be expanded inside a markup tag, use the │ │ │ │ │ -    _O_P_T _'_$_' operator. │ │ │ │ │ -    _O_U_T_P_U_T Multiple macros can be declared in a single markup │ │ │ │ │ -    _Q_U_O_T_E tag, as the second syntax line shows. │ │ │ │ │ -  [>] _S_E_T SET should only be used for a single line's worth │ │ │ │ │ -    _U_N_D_E_F of text. Multi-line macros can be defined with the │ │ │ │ │ -    _U_N_S_E_T _B_L_O_C_K tag. The _B_L_O_C_K tag is also useful if the │ │ │ │ │ -    _U_S_E_,_ _$ macro contains a quotation character and you don't │ │ │ │ │ -    _W_H_I_L_E want to fool around with special escape characters. │ │ │ │ │ -    _<_!_-_-_- Macros can be redefined by using another SET │ │ │ │ │ -  _H_i_s_t_o_r_y command with the same macro name. The prior │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t definition will be destroyed, however. Also, the │ │ │ │ │ -  _B_u_g_s macro can be removed (destroyed) with the _U_N_S_E_T │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n   <_[_[_r_e_f_]_]_s_e_t sect-ctr="0"> │ │ │ │ │ +  _L_i_c_e_n_s_e   <_[_[_r_e_f_]_]_b_l_o_c_k_d_e_f name="section"> │ │ │ │ │ +  _T_u_t_o_r_i_a_l     <_[_[_r_e_f_]_]_i_n_c sect-ctr> │ │ │ │ │ +  _U_s_a_g_e     <_[_[_r_e_f_]_]_b_l_o_c_k name="sect-${sect-ctr}" expand │ │ │ │ │ +  HTP Tags global> │ │ │ │ │ +    _A_L_T_T_E_X_T       <_[_[_r_e_f_]_]_u_s_e block noexpand> │ │ │ │ │ +    _B_L_O_C_K     <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ +    _B_L_O_C_K_D_E_F   <_[_[_r_e_f_]_]_/_b_l_o_c_k_d_e_f> │ │ │ │ │ +    _D_E_F ********** ssyynnooppssiiss ********** │ │ │ │ │ +    _F_I_L_E SSEETT creates a macro definition that can later be │ │ │ │ │ +    _I_F expanded anywhere in the HTML document. To create a │ │ │ │ │ +    _I_N_C macro: │ │ │ │ │ +    _I_M_G     <_[_[_r_e_f_]_]_S_E_T emailaddr="jnelson@crl.com"> │ │ │ │ │ +    _I_M_A_G_E_U_R_L The macro "emailaddr" can then be expanded later. │ │ │ │ │ +    _O_P_T The _U_S_E tag is used to expand the macro outside a │ │ │ │ │ +    _O_U_T_P_U_T tag (i.e., into the regular text). If the macro │ │ │ │ │ +    _Q_U_O_T_E needs to be expanded inside a markup tag, use the │ │ │ │ │ +  [>] _S_E_T _'_$_' operator. │ │ │ │ │ +    _U_N_D_E_F Multiple macros can be declared in a single markup │ │ │ │ │ +    _U_N_S_E_T tag, as the second syntax line shows. │ │ │ │ │ +    _U_S_E_,_ _$ SET should only be used for a single line's worth │ │ │ │ │ +    _W_H_I_L_E of text. Multi-line macros can be defined with the │ │ │ │ │ +    _<_!_-_-_- _B_L_O_C_K tag. The _B_L_O_C_K tag is also useful if the │ │ │ │ │ +  _H_i_s_t_o_r_y macro contains a quotation character and you don't │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t want to fool around with special escape characters. │ │ │ │ │ +  _B_u_g_s Macros can be redefined by using another SET │ │ │ │ │ + command with the same macro name. The prior │ │ │ │ │ + definition will be destroyed, however. Also, the │ │ │ │ │ + macro can be removed (destroyed) with the _U_N_S_E_T │ │ │ │ │ tag. │ │ │ ├── ./usr/share/doc/htp/undef.html │ │ │ │ @@ -114,16 +114,16 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -<[ref]UNDEF tagname>
│ │ │ │ -<[ref]UNDEF tagname1 tagname2 ... >
│ │ │ │ +<[ref]unset macroname>
│ │ │ │ +<[ref]unset macroname1 macroname2 ... >
│ │ │ │
│ │ │ │

│ │ │ │

synopsis

│ │ │ │

UNDEF removes a metatag definition. Metatags │ │ │ │ created by DEF and BLOCKDEF can be removed with the UNDEF │ │ │ │ command. Once removed, the metatag will no longer be recognized by │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: UUNNDDEEFF ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_U_N_D_E_F tagname> │ │ │ │ │ -  _L_i_c_e_n_s_e <_[_[_r_e_f_]_]_U_N_D_E_F tagname1 tagname2 ... > │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_u_n_s_e_t macroname> │ │ │ │ │ +  _L_i_c_e_n_s_e <_[_[_r_e_f_]_]_u_n_s_e_t macroname1 macroname2 ... > │ │ │ │ │   _T_u_t_o_r_i_a_l │ │ │ │ │   _U_s_a_g_e ********** ssyynnooppssiiss ********** │ │ │ │ │   HTP Tags UUNNDDEEFF removes a metatag definition. Metatags │ │ │ │ │     _A_L_T_T_E_X_T created by _D_E_F and _B_L_O_C_K_D_E_F can be removed with the │ │ │ │ │     _B_L_O_C_K UNDEF command. Once removed, the metatag will no │ │ │ │ │     _B_L_O_C_K_D_E_F longer be recognized by htp until it is reassigned. │ │ │ │ │     _D_E_F Multiple metatags can be removed by placing each │ │ │ ├── ./usr/share/doc/htp/unset.html │ │ │ │ @@ -127,23 +127,23 @@ │ │ │ │ The macro is subsequently not available for use in the pre-processed files. │ │ │ │ (Note that simply redefining the macro with another SET or │ │ │ │ BLOCK definition with the same name is acceptable. The │ │ │ │ old macro definition will be removed automatically.) │ │ │ │

│ │ │ │ For example: │ │ │ │

│ │ │ │ -    <[ref]unset email_addr>
│ │ │ │ +<[ref]WHILE [NOT] conditional>
│ │ │ │ +    block
│ │ │ │ +<[ref]/WHILE>
│ │ │ │ +
│ │ │ │

│ │ │ │

│ │ │ │ More than one macro may be removed in the same tag: │ │ │ │

│ │ │ │ -<[ref]use macroname [parameters ...] [noexpand]>
│ │ │ │ -<... $macroname ...>
│ │ │ │ -<... ${macroname} ...>
│ │ │ │ -
│ │ │ │ +    <[ref]unset email_addr home_url login_name>
│ │ │ │

│ │ │ │

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -9,20 +9,20 @@ │ │ │ │ │     _A_L_T_T_E_X_T definition. The macro is subsequently not available │ │ │ │ │     _B_L_O_C_K for use in the pre-processed files. (Note that │ │ │ │ │     _B_L_O_C_K_D_E_F simply redefining the macro with another _S_E_T or │ │ │ │ │     _D_E_F _B_L_O_C_K definition with the same name is acceptable. │ │ │ │ │     _F_I_L_E The old macro definition will be removed │ │ │ │ │     _I_F automatically.) │ │ │ │ │     _I_N_C For example: │ │ │ │ │ -    _I_M_G     <_[_[_r_e_f_]_]_u_n_s_e_t email_addr> │ │ │ │ │ -    _I_M_A_G_E_U_R_L More than one macro may be removed in the same tag: │ │ │ │ │ -    _O_P_T <_[_[_r_e_f_]_]_u_s_e macroname [parameters ...] [noexpand]> │ │ │ │ │ -    _O_U_T_P_U_T <... $macroname ...> │ │ │ │ │ -    _Q_U_O_T_E <... ${macroname} ...> │ │ │ │ │ -    _S_E_T │ │ │ │ │ +    _I_M_G <_[_[_r_e_f_]_]_W_H_I_L_E [NOT] conditional> │ │ │ │ │ +    _I_M_A_G_E_U_R_L     block │ │ │ │ │ +    _O_P_T <_[_[_r_e_f_]_]_/_W_H_I_L_E> │ │ │ │ │ +    _O_U_T_P_U_T │ │ │ │ │ +    _Q_U_O_T_E More than one macro may be removed in the same tag: │ │ │ │ │ +    _S_E_T     <_[_[_r_e_f_]_]_u_n_s_e_t email_addr home_url login_name> │ │ │ │ │     _U_N_D_E_F │ │ │ │ │   [>] _U_N_S_E_T │ │ │ │ │     _U_S_E_,_ _$ │ │ │ │ │     _W_H_I_L_E │ │ │ │ │     _<_!_-_-_- │ │ │ │ │   _H_i_s_t_o_r_y │ │ │ │ │   _W_i_s_h_ _l_i_s_t │ │ │ ├── ./usr/share/doc/htp/use.html │ │ │ │ @@ -114,18 +114,15 @@ │ │ │ │ Bugs │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -<[ref]use macroname [parameters ...] [noexpand]>
│ │ │ │ -<... $macroname ...>
│ │ │ │ -<... ${macroname} ...>
│ │ │ │ -
│ │ │ │ +    <[ref]unset email_addr home_url login_name>
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ USE will expand macros that have been previously │ │ │ │ declared with either SET or BLOCK. USE can only be used outside of other │ │ │ │ markup tags. │ │ │ │

If you USE a block macro the value of expanded block macros will │ │ │ │ @@ -135,18 +132,23 @@ │ │ │ │ attribute to prevent further expansion.

│ │ │ │

USE will accept additional parameters, which are "local" macros │ │ │ │ for the expanded macro. This is only valid for BLOCK macros. Macros created using SET cannot have parameters passed. For │ │ │ │ example:

│ │ │ │

│ │ │ │ - 1. <[ref]WHILE [NOT] conditional>
│ │ │ │ - 2.     block
│ │ │ │ - 3. <[ref]/WHILE>
│ │ │ │ + 1. <[ref]block stuff>
│ │ │ │ + 2.   <a href=$email>send email</a>
│ │ │ │ + 3. <[ref]/block>
│ │ │ │  4.
│ │ │ │ + 5. <[ref]set morestuff=$email>
│ │ │ │ + 6.
│ │ │ │ + 7. This works:     <[ref]use stuff email="jnelson@crl.com">
│ │ │ │ + 8. But this fails: <[ref]use email>
│ │ │ │ + 9. And this fails: <[ref]use morestuff email="jnelson@crl.com">
│ │ │ │

│ │ │ │

│ │ │ │ (See below for a description of the '$' operator.) The example on │ │ │ │ line 7 works because "stuff" has been declared as a block macro, and │ │ │ │ the tag is passing the "email" macro to the "stuff" macro. Line 8 │ │ │ │ fails because the "email" macro is unavailable once the block macro is │ │ │ │ completely expanded, and cannot be passed to a SET macro. │ │ │ │ @@ -157,18 +159,16 @@ │ │ │ │ Inside a markup tag, like IMG, A (anchor), or │ │ │ │ any other standard HTML or htp tag, the '$' operator must be used. │ │ │ │ The '$' should be immediately followed by the macro name, which may or │ │ │ │ may not be surrounded by curly braces. When htp encounters this it │ │ │ │ replaces the macro name by the contents of the macro without further │ │ │ │ processing the contents. │ │ │ │

│ │ │ │ - 1.   <[ref]WHILE NOT i="10">
│ │ │ │ - 2.     ...
│ │ │ │ - 3.     <[ref]INC i>
│ │ │ │ - 4.   <[ref]/WHILE>
│ │ │ │ + 1. <a href="mailto:$email">mailto hyperlink</a>
│ │ │ │ + 2. <a href="http://$domain/~${username}/">another hyperlink</a>
│ │ │ │

│ │ │ │

│ │ │ │ The use of curly braces is encouraged, since it is more robust and │ │ │ │ should never cause confusion with surrounding text. If no curly │ │ │ │ braces are used the macro name consists either of a single punctuation │ │ │ │ character or the maximum sequence of letters, digits, "-" │ │ │ │ and "_" that follows it. │ │ │ │ @@ -182,18 +182,15 @@ │ │ │ │ delimiting the text as if it were additional markup attributes. │ │ │ │ If the '$' macro is surrounded by other text (as in the two examples above), │ │ │ │ quotation marks are not automatically supplied. │ │ │ │

│ │ │ │ Note that a '$' macro can be placed anywhere in a markup tag and can │ │ │ │ be nested. This is valid: │ │ │ │

│ │ │ │ -  <[ref]WHILE sect-$i>
│ │ │ │ -    ...
│ │ │ │ -    <[ref]INC i>
│ │ │ │ -  <[ref]/WHILE>
│ │ │ │ +    <${tagName} ${attrName}=${value$ctr}>
│ │ │ │

│ │ │ │

The tagName macro can contain any tag name, even a self-defined │ │ │ │ metatag. Note that $ctr is expanded before the valueX │ │ │ │ macro is expanded, so assuming that ctr was set to 1 it will expand │ │ │ │ value1. │ │ │ │

│ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,53 +1,56 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: UUSSEE,, $$ ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n <_[_[_r_e_f_]_]_u_s_e macroname [parameters ...] [noexpand]> │ │ │ │ │ -  _L_i_c_e_n_s_e <... $macroname ...> │ │ │ │ │ -  _T_u_t_o_r_i_a_l <... ${macroname} ...> │ │ │ │ │ -  _U_s_a_g_e │ │ │ │ │ -  HTP Tags ********** ssyynnooppssiiss ********** │ │ │ │ │ -    _A_L_T_T_E_X_T UUSSEE will expand macros that have been previously │ │ │ │ │ -    _B_L_O_C_K declared with either _S_E_T or _B_L_O_C_K. USE can only be │ │ │ │ │ -    _B_L_O_C_K_D_E_F used outside of other markup tags. │ │ │ │ │ -    _D_E_F If you USE a block macro the value of expanded │ │ │ │ │ -    _F_I_L_E block macros will be further parsed by htp. This is │ │ │ │ │ -    _I_F maybe not what you want, for example, if the use is │ │ │ │ │ -    _I_N_C inside a block which _e_x_p_a_n_d_s itself. You can use │ │ │ │ │ -    _I_M_G the noexpand attribute to prevent further │ │ │ │ │ -    _I_M_A_G_E_U_R_L expansion. │ │ │ │ │ -    _O_P_T USE will accept additional parameters, which are │ │ │ │ │ -    _O_U_T_P_U_T "local" macros for the expanded macro. This is only │ │ │ │ │ -    _Q_U_O_T_E valid for _B_L_O_C_K macros. Macros created using _S_E_T │ │ │ │ │ -    _S_E_T cannot have parameters passed. For example: │ │ │ │ │ -    _U_N_D_E_F  1. <_[_[_r_e_f_]_]_W_H_I_L_E [NOT] conditional> │ │ │ │ │ -    _U_N_S_E_T  2.     block │ │ │ │ │ -  [>] _U_S_E_,_ _$  3. <_[_[_r_e_f_]_]_/_W_H_I_L_E> │ │ │ │ │ -    _W_H_I_L_E  4. │ │ │ │ │ -    _<_!_-_-_- (See below for a description of the '$' operator.) │ │ │ │ │ -  _H_i_s_t_o_r_y The example on line 7 works because "stuff" has │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t been declared as a block macro, and the tag is │ │ │ │ │ -  _B_u_g_s passing the "email" macro to the "stuff" macro. │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n     <_[_[_r_e_f_]_]_u_n_s_e_t email_addr home_url login_name> │ │ │ │ │ +  _L_i_c_e_n_s_e ********** ssyynnooppssiiss ********** │ │ │ │ │ +  _T_u_t_o_r_i_a_l UUSSEE will expand macros that have been previously │ │ │ │ │ +  _U_s_a_g_e declared with either _S_E_T or _B_L_O_C_K. USE can only be │ │ │ │ │ +  HTP Tags used outside of other markup tags. │ │ │ │ │ +    _A_L_T_T_E_X_T If you USE a block macro the value of expanded │ │ │ │ │ +    _B_L_O_C_K block macros will be further parsed by htp. This is │ │ │ │ │ +    _B_L_O_C_K_D_E_F maybe not what you want, for example, if the use is │ │ │ │ │ +    _D_E_F inside a block which _e_x_p_a_n_d_s itself. You can use │ │ │ │ │ +    _F_I_L_E the noexpand attribute to prevent further │ │ │ │ │ +    _I_F expansion. │ │ │ │ │ +    _I_N_C USE will accept additional parameters, which are │ │ │ │ │ +    _I_M_G "local" macros for the expanded macro. This is only │ │ │ │ │ +    _I_M_A_G_E_U_R_L valid for _B_L_O_C_K macros. Macros created using _S_E_T │ │ │ │ │ +    _O_P_T cannot have parameters passed. For example: │ │ │ │ │ +    _O_U_T_P_U_T  1. <_[_[_r_e_f_]_]_b_l_o_c_k stuff> │ │ │ │ │ +    _Q_U_O_T_E  2.   send email │ │ │ │ │ +    _S_E_T  3. <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ +    _U_N_D_E_F  4. │ │ │ │ │ +    _U_N_S_E_T  5. <_[_[_r_e_f_]_]_s_e_t morestuff=$email> │ │ │ │ │ +  [>] _U_S_E_,_ _$  6. │ │ │ │ │ +    _W_H_I_L_E  7. This works:     <_[_[_r_e_f_]_]_u_s_e stuff │ │ │ │ │ +    _<_!_-_-_- email="jnelson@crl.com"> │ │ │ │ │ +  _H_i_s_t_o_r_y  8. But this fails: <_[_[_r_e_f_]_]_u_s_e email> │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t  9. And this fails: <_[_[_r_e_f_]_]_u_s_e morestuff │ │ │ │ │ +  _B_u_g_s email="jnelson@crl.com"> │ │ │ │ │ + (See below for a description of the '$' operator.) │ │ │ │ │ + The example on line 7 works because "stuff" has │ │ │ │ │ + been declared as a block macro, and the tag is │ │ │ │ │ + passing the "email" macro to the "stuff" macro. │ │ │ │ │ Line 8 fails because the "email" macro is │ │ │ │ │ unavailable once the block macro is completely │ │ │ │ │ expanded, and cannot be passed to a SET macro. │ │ │ │ │ Note that the "email" macro is available to other │ │ │ │ │ macros or included files called within the "stuff" │ │ │ │ │ block. │ │ │ │ │ Inside a markup tag, like _I_M_G, A (anchor), or any │ │ │ │ │ other standard HTML or htp tag, the '$' operator │ │ │ │ │ must be used. The '$' should be immediately │ │ │ │ │ followed by the macro name, which may or may not be │ │ │ │ │ surrounded by curly braces. When htp encounters │ │ │ │ │ this it replaces the macro name by the contents of │ │ │ │ │ the macro without further processing the contents. │ │ │ │ │ -  1.   <_[_[_r_e_f_]_]_W_H_I_L_E NOT i="10"> │ │ │ │ │ -  2.     ... │ │ │ │ │ -  3.     <_[_[_r_e_f_]_]_I_N_C i> │ │ │ │ │ -  4.   <_[_[_r_e_f_]_]_/_W_H_I_L_E> │ │ │ │ │ +  1. mailto hyperlink │ │ │ │ │ +  2. another │ │ │ │ │ + hyperlink │ │ │ │ │ The use of curly braces is encouraged, since it is │ │ │ │ │ more robust and should never cause confusion with │ │ │ │ │ surrounding text. If no curly braces are used the │ │ │ │ │ macro name consists either of a single punctuation │ │ │ │ │ character or the maximum sequence of letters, │ │ │ │ │ digits, "-" and "_" that follows it. │ │ │ │ │ If a '$' character needs to be kept in the final │ │ │ │ │ @@ -59,18 +62,15 @@ │ │ │ │ │ it with quotation marks to prevent spaces from │ │ │ │ │ delimiting the text as if it were additional markup │ │ │ │ │ attributes. If the '$' macro is surrounded by other │ │ │ │ │ text (as in the two examples above), quotation │ │ │ │ │ marks are not automatically supplied. │ │ │ │ │ Note that a '$' macro can be placed anywhere in a │ │ │ │ │ markup tag and can be nested. This is valid: │ │ │ │ │ -   <_[_[_r_e_f_]_]_W_H_I_L_E sect-$i> │ │ │ │ │ -     ... │ │ │ │ │ -     <_[_[_r_e_f_]_]_I_N_C i> │ │ │ │ │ -   <_[_[_r_e_f_]_]_/_W_H_I_L_E> │ │ │ │ │ +     <${tagName} ${attrName}=${value$ctr}> │ │ │ │ │ The tagName macro can contain any tag name, even a │ │ │ │ │ self-defined metatag. Note that $ctr is expanded │ │ │ │ │ before the valueX macro is expanded, so assuming │ │ │ │ │ that ctr was set to 1 it will expand value1. │ │ │ ├── ./usr/share/doc/htp/while.html │ │ │ │ @@ -114,36 +114,41 @@ │ │ │ │ Bugs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

syntax

│ │ │ │

│ │ │ │ -<a href="mailto:$email">mailto hyperlink</a>
│ │ │ │ -<a href="http://$domain/~${username}/">another hyperlink</a>
│ │ │ │ +    <[ref]unset email_addr home_url login_name>
│ │ │ │

│ │ │ │

synopsis

│ │ │ │ WHILE is the building block for repeated processing. │ │ │ │ The basic form is shown above. │ │ │ │

│ │ │ │ "Conditional" is either a "compare" or "is defined" operation. │ │ │ │ A compare operator is a test of the value of a macro against a literal string. │ │ │ │ If the NOT tag is present in the WHILE markup, the evaluation of the │ │ │ │ conditional is reversed: │ │ │ │

│ │ │ │ -    <${tagName} ${attrName}=${value$ctr}>
│ │ │ │ +<[ref]block stuff>
│ │ │ │ +  <a href=$email>send email</a>
│ │ │ │ +<[ref]/block>
│ │ │ │ +
│ │ │ │ +<[ref]set morestuff=$email>
│ │ │ │ +
│ │ │ │ +This works:     <[ref]use stuff email="jnelson@crl.com">
│ │ │ │ +But this fails: <[ref]use email>
│ │ │ │ +And this fails: <[ref]use morestuff email="jnelson@crl.com">
│ │ │ │

│ │ │ │

│ │ │ │ Just as with [ref]IF you can also check for a │ │ │ │ macro's existance: │ │ │ │

│ │ │ │ -  <[ref]WHILE sect-$i>
│ │ │ │ -    ...
│ │ │ │ -    <[ref]INC i>
│ │ │ │ -  <[ref]/WHILE>
│ │ │ │ +<a href="mailto:$email">mailto hyperlink</a>
│ │ │ │ +<a href="http://$domain/~${username}/">another hyperlink</a>
│ │ │ │

│ │ │ │

│ │ │ │ If the condition is true, the block is evaluated and afterwards the │ │ │ │ WHILE tag is evaluated again. If the '$'-operator is used in the │ │ │ │ WHILE tag it is also reevaluated on each iteration. │ │ │ │

│ │ │ │ A loop block must be closed with the /WHILE tag. │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,36 +1,43 @@ │ │ │ │ │ [HTP] │ │ │ │ │ ************ hhttpp oonn--lliinnee rreeffeerreennccee :: WWHHIILLEE ************ │ │ │ │ │ _T_a_b_l_e_ _o_f_ _C_o_n_t_e_n_t_s ********** ssyynnttaaxx ********** │ │ │ │ │ -  _I_n_t_r_o_d_u_c_t_i_o_n mailto hyperlink │ │ │ │ │ -  _L_i_c_e_n_s_e another │ │ │ │ │ -  _T_u_t_o_r_i_a_l hyperlink │ │ │ │ │ -  _U_s_a_g_e ********** ssyynnooppssiiss ********** │ │ │ │ │ -  HTP Tags WWHHIILLEE is the building block for repeated │ │ │ │ │ -    _A_L_T_T_E_X_T processing. The basic form is shown above. │ │ │ │ │ -    _B_L_O_C_K "Conditional" is either a "compare" or "is defined" │ │ │ │ │ -    _B_L_O_C_K_D_E_F operation. A compare operator is a test of the │ │ │ │ │ -    _D_E_F value of a macro against a literal string. If the │ │ │ │ │ -    _F_I_L_E NOT tag is present in the WHILE markup, the │ │ │ │ │ -    _I_F evaluation of the conditional is reversed: │ │ │ │ │ -    _I_N_C     <${tagName} ${attrName}=${value$ctr}> │ │ │ │ │ -    _I_M_G Just as with _[_[_r_e_f_]_]_I_F you can also check for a │ │ │ │ │ -    _I_M_A_G_E_U_R_L macro's existance: │ │ │ │ │ -    _O_P_T   <_[_[_r_e_f_]_]_W_H_I_L_E sect-$i> │ │ │ │ │ -    _O_U_T_P_U_T     ... │ │ │ │ │ -    _Q_U_O_T_E     <_[_[_r_e_f_]_]_I_N_C i> │ │ │ │ │ -    _S_E_T   <_[_[_r_e_f_]_]_/_W_H_I_L_E> │ │ │ │ │ -    _U_N_D_E_F If the condition is true, the block is evaluated │ │ │ │ │ -    _U_N_S_E_T and afterwards the WHILE tag is evaluated again. If │ │ │ │ │ -    _U_S_E_,_ _$ the '$'-operator is used in the WHILE tag it is │ │ │ │ │ -  [>] _W_H_I_L_E also reevaluated on each iteration. │ │ │ │ │ -    _<_!_-_-_- A loop block mmuusstt be closed with the /WHILE tag. │ │ │ │ │ -  _H_i_s_t_o_r_y │ │ │ │ │ -  _W_i_s_h_ _l_i_s_t │ │ │ │ │ -  _B_u_g_s │ │ │ │ │ +  _I_n_t_r_o_d_u_c_t_i_o_n     <_[_[_r_e_f_]_]_u_n_s_e_t email_addr home_url login_name> │ │ │ │ │ +  _L_i_c_e_n_s_e ********** ssyynnooppssiiss ********** │ │ │ │ │ +  _T_u_t_o_r_i_a_l WWHHIILLEE is the building block for repeated │ │ │ │ │ +  _U_s_a_g_e processing. The basic form is shown above. │ │ │ │ │ +  HTP Tags "Conditional" is either a "compare" or "is defined" │ │ │ │ │ +    _A_L_T_T_E_X_T operation. A compare operator is a test of the │ │ │ │ │ +    _B_L_O_C_K value of a macro against a literal string. If the │ │ │ │ │ +    _B_L_O_C_K_D_E_F NOT tag is present in the WHILE markup, the │ │ │ │ │ +    _D_E_F evaluation of the conditional is reversed: │ │ │ │ │ +    _F_I_L_E <_[_[_r_e_f_]_]_b_l_o_c_k stuff> │ │ │ │ │ +    _I_F   send email │ │ │ │ │ +    _I_N_C <_[_[_r_e_f_]_]_/_b_l_o_c_k> │ │ │ │ │ +    _I_M_G │ │ │ │ │ +    _I_M_A_G_E_U_R_L <_[_[_r_e_f_]_]_s_e_t morestuff=$email> │ │ │ │ │ +    _O_P_T │ │ │ │ │ +    _O_U_T_P_U_T This works:     <_[_[_r_e_f_]_]_u_s_e stuff │ │ │ │ │ +    _Q_U_O_T_E email="jnelson@crl.com"> │ │ │ │ │ +    _S_E_T But this fails: <_[_[_r_e_f_]_]_u_s_e email> │ │ │ │ │ +    _U_N_D_E_F And this fails: <_[_[_r_e_f_]_]_u_s_e morestuff │ │ │ │ │ +    _U_N_S_E_T email="jnelson@crl.com"> │ │ │ │ │ +    _U_S_E_,_ _$ Just as with _[_[_r_e_f_]_]_I_F you can also check for a │ │ │ │ │ +  [>] _W_H_I_L_E macro's existance: │ │ │ │ │ +    _<_!_-_-_- mailto hyperlink │ │ │ │ │ +  _H_i_s_t_o_r_y another │ │ │ │ │ +  _W_i_s_h_ _l_i_s_t hyperlink │ │ │ │ │ +  _B_u_g_s If the condition is true, the block is evaluated │ │ │ │ │ + and afterwards the WHILE tag is evaluated again. If │ │ │ │ │ + the '$'-operator is used in the WHILE tag it is │ │ │ │ │ + also reevaluated on each iteration. │ │ │ │ │ + A loop block mmuusstt be closed with the /WHILE tag. │ │ │ │ │ + │ │ │ │ │ + │ │ │ │ │ +