[latex3-commits] [latex3/tagpdf] develop: test existence of props, latex3/latex3#1455 (3d5c4d7)
github at latex-project.org
github at latex-project.org
Mon Feb 19 14:32:01 CET 2024
Repository : https://github.com/latex3/tagpdf
On branch : develop
Link : https://github.com/latex3/tagpdf/commit/3d5c4d7edaaafb287a45a33c75acb8984e76126c
>---------------------------------------------------------------
commit 3d5c4d7edaaafb287a45a33c75acb8984e76126c
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date: Mon Feb 19 14:32:01 2024 +0100
test existence of props, latex3/latex3#1455
>---------------------------------------------------------------
3d5c4d7edaaafb287a45a33c75acb8984e76126c
CHANGELOG.md | 1 +
tagpdf-checks.dtx | 5 +-
tagpdf-roles.dtx | 102 ++++++++------
testfiles-pdftex/test-get_role-20.lvt | 6 +-
testfiles-pdftex/test-get_role-20.tlg | 243 ++--------------------------------
5 files changed, 83 insertions(+), 274 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 58c7547..37ef0b2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ this project uses date-based 'snapshot' version identifiers.
### Fixed
- missing slashes in dvilualatex backend, issue #96
- lua error with large object numbers, issue #97
+ - existence tests for unknown props (issue latex3/latex3#1455)
### Changed
- speed gain by using linked properties
diff --git a/tagpdf-checks.dtx b/tagpdf-checks.dtx
index c95b9d8..48a3b63 100644
--- a/tagpdf-checks.dtx
+++ b/tagpdf-checks.dtx
@@ -306,7 +306,7 @@
% Message if an attribute i sunknown.
% \end{function}
%
-% \begin{function}{role-missing,role-unknown,role-unknown-tag,role-tag,new-tag,
+% \begin{function}{role-missing,role-unknown,role-unknown-tag,role-unknown-NS,role-tag,new-tag,
% role-parent-child,role-remapping}
% Messages related to role mapping.
% \end{function}
@@ -500,12 +500,13 @@
% \end{macro}
%
% \subsection{Roles}
-% \begin{macro}{role-missing,role-unknown,role-unknown-tag}
+% \begin{macro}{role-missing,role-unknown,role-unknown-tag,role-unknown-NS}
% Warning message if either the tag or the role is missing
% \begin{macrocode}
\msg_new:nnn { tag } {role-missing} { tag~#1~has~no~role~assigned }
\msg_new:nnn { tag } {role-unknown} { role~#1~is~not~known }
\msg_new:nnn { tag } {role-unknown-tag} { tag~#1~is~not~known }
+\msg_new:nnn { tag } {role-unknown-NS} { \tl_if_empty:nTF{#1}{Empty~NS}{NS~#1~is~not~known} }
% \end{macrocode}
% \end{macro}
% \begin{macro}{role-parent-child}
diff --git a/tagpdf-roles.dtx b/tagpdf-roles.dtx
index 47a1f40..9b4b9c1 100644
--- a/tagpdf-roles.dtx
+++ b/tagpdf-roles.dtx
@@ -505,11 +505,16 @@
{
\msg_info:nnn { tag }{new-tag}{#1}
}
- \prop_get:cnN { g_@@_role_NS_#4_class_prop } {#3}\l_@@_tmpa_tl
- \quark_if_no_value:NT \l_@@_tmpa_tl
- {
- \tl_set:Nn\l_@@_tmpa_tl{--UNKNOWN--}
- }
+ \prop_if_exist:cTF
+ { g_@@_role_NS_#4_class_prop }
+ {
+ \prop_get:cnN { g_@@_role_NS_#4_class_prop } {#3}\l_@@_tmpa_tl
+ \quark_if_no_value:NT \l_@@_tmpa_tl
+ {
+ \tl_set:Nn\l_@@_tmpa_tl{--UNKNOWN--}
+ }
+ }
+ { \tl_set:Nn\l_@@_tmpa_tl{--UNKNOWN--} }
\@@_role_alloctag:nnV {#1}{#2}\l_@@_tmpa_tl
% \end{macrocode}
% Do not remap standard tags. TODO add warning?
@@ -579,15 +584,24 @@
%#3 tlvar which hold the role tag
%#4 tlvar which hold the name of the target NS
{
- \prop_get:cnNTF {g_@@_role_NS_#2_prop} {#1}\l_@@_tmpa_tl
- {
- \tl_set:Ne #3 {\exp_last_unbraced:NV\use_i:nn \l_@@_tmpa_tl}
- \tl_set:Ne #4 {\exp_last_unbraced:NV\use_ii:nn \l_@@_tmpa_tl}
- }
- {
- \tl_set:Nn #3 {#1}
- \tl_set:Nn #4 {#2}
- }
+ \prop_if_exist:cTF {g_@@_role_NS_#2_prop}
+ {
+ \prop_get:cnNTF {g_@@_role_NS_#2_prop} {#1}\l_@@_tmpa_tl
+ {
+ \tl_set:Ne #3 {\exp_last_unbraced:NV\use_i:nn \l_@@_tmpa_tl}
+ \tl_set:Ne #4 {\exp_last_unbraced:NV\use_ii:nn \l_@@_tmpa_tl}
+ }
+ {
+ \msg_warning:nnn { tag } {role-unknown-tag} { #1 }
+ \tl_set:Nn #3 {#1}
+ \tl_set:Nn #4 {#2}
+ }
+ }
+ {
+ \msg_warning:nnn { tag } {role-unknown-NS} { #2 }
+ \tl_set:Nn #3 {#1}
+ \tl_set:Nn #4 {#2}
+ }
}
\cs_generate_variant:Nn \@@_role_get:nnNN {VVNN}
}
@@ -1106,20 +1120,27 @@
\tl_set:Nn \l_@@_tmpa_tl {#1}
}
{
- \prop_get:cnNTF
- { g_@@_role_NS_#2_prop }
- {#1}
- \l_@@_tmpa_tl
- {
- \tl_set:Ne \l_@@_tmpa_tl {\tl_head:N\l_@@_tmpa_tl}
- \tl_if_empty:NT\l_@@_tmpa_tl
- {
- \tl_set:Nn \l_@@_tmpa_tl {#1}
- }
- }
- {
- \tl_set:Nn \l_@@_tmpa_tl {\q_no_value}
- }
+ \prop_if_exist:cTF { g_@@_role_NS_#2_prop }
+ {
+ \prop_get:cnNTF
+ { g_@@_role_NS_#2_prop }
+ {#1}
+ \l_@@_tmpa_tl
+ {
+ \tl_set:Ne \l_@@_tmpa_tl {\tl_head:N\l_@@_tmpa_tl}
+ \tl_if_empty:NT\l_@@_tmpa_tl
+ {
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
+ }
+ }
+ {
+ \tl_set:Nn \l_@@_tmpa_tl {\q_no_value}
+ }
+ }
+ {
+ \msg_warning:nnn { tag } {role-unknown-NS} { #2}
+ \tl_set:Nn \l_@@_tmpa_tl {\q_no_value}
+ }
}
% \end{macrocode}
% and the same for the child
@@ -1131,18 +1152,25 @@
\tl_set:Nn \l_@@_tmpb_tl {#3}
}
{
- \prop_get:cnNTF
- { g_@@_role_NS_#4_prop }
- {#3}
- \l_@@_tmpb_tl
+ \prop_if_exist:cTF { g_@@_role_NS_#4_prop }
{
- \tl_set:Ne \l_@@_tmpb_tl { \tl_head:N\l_@@_tmpb_tl }
- \tl_if_empty:NT\l_@@_tmpb_tl
- {
- \tl_set:Nn \l_@@_tmpb_tl {#3}
- }
+ \prop_get:cnNTF
+ { g_@@_role_NS_#4_prop }
+ {#3}
+ \l_@@_tmpb_tl
+ {
+ \tl_set:Ne \l_@@_tmpb_tl { \tl_head:N\l_@@_tmpb_tl }
+ \tl_if_empty:NT\l_@@_tmpb_tl
+ {
+ \tl_set:Nn \l_@@_tmpb_tl {#3}
+ }
+ }
+ {
+ \tl_set:Nn \l_@@_tmpb_tl {\q_no_value}
+ }
}
{
+ \msg_warning:nnn { tag } {role-unknown-NS} { #4}
\tl_set:Nn \l_@@_tmpb_tl {\q_no_value}
}
}
diff --git a/testfiles-pdftex/test-get_role-20.lvt b/testfiles-pdftex/test-get_role-20.lvt
index 0be84a5..4b51bae 100644
--- a/testfiles-pdftex/test-get_role-20.lvt
+++ b/testfiles-pdftex/test-get_role-20.lvt
@@ -29,15 +29,15 @@ xxx
\tl_show:N \l_tmpa_tl\tl_show:N \l_tmpb_tl
}
-\TEST{get~standard~role:~Sect}
+\TEST{get~standard~role:~Sect,~unknown~NS}
{
\__tag_role_get:nnNN {Sect}{xxx}\l_tmpa_tl\l_tmpb_tl
\tl_show:N \l_tmpa_tl\tl_show:N \l_tmpb_tl
}
-\TEST{get~standard~role:~Aside}
+\TEST{get~standard~role:~Aside,~empty~NS}
{
- \__tag_role_get:nnNN {Aside}{xxx}\l_tmpa_tl\l_tmpb_tl
+ \__tag_role_get:nnNN {Aside}{}\l_tmpa_tl\l_tmpb_tl
\tl_show:N \l_tmpa_tl\tl_show:N \l_tmpb_tl
}
\ExplSyntaxOff
diff --git a/testfiles-pdftex/test-get_role-20.tlg b/testfiles-pdftex/test-get_role-20.tlg
index e22f85b..7e0fe3a 100644
--- a/testfiles-pdftex/test-get_role-20.tlg
+++ b/testfiles-pdftex/test-get_role-20.tlg
@@ -17,91 +17,18 @@ l. ... }
============================================================
TEST 3: get known role title, unknown name space
============================================================
-! Use of \__prop_get_linked:w doesn't match its definition.
-<recently read> \g__tag_role_NS_blub_prop
-l. ... }
-If you say, e.g., `\def\a1{...}', then you must always
-put `1' after `\a', since control sequence names are
-made up of letters only. The macro here has not been
-followed by the required stuff, so I'm ignoring it.
-! Argument of \tl_set:Nn has an extra }.
-<inserted text>
- \par
-l. ... }
-I've run across a `}' that doesn't seem to match anything.
-For example, `\def\a#1{...}' and `\a}' would produce
-this error. If you simply proceed now, the `\par' that
-I've just inserted will cause me to report a runaway
-argument that might be the root of the problem. But if
-your `}' was spurious, just type `2' and it will go away.
-Runaway argument?
-! Paragraph ended before \tl_set:Nn was complete.
-<to be read again>
- \par
-l. ... }
-I suspect you've forgotten a `}', causing me to apply this
-control sequence to too much text. How can we recover?
-My plan is to forget the whole thing and hope for the best.
-! Missing number, treated as zero.
-<to be read again>
- }
-l. ... }
-A number should have been here; I inserted `0'.
-(If you can't figure out why I needed to see a number,
-look up `weird error' in the index to The TeXbook.)
-! Argument of \use_i:nn has an extra }.
-<inserted text>
- \par
-l. ... }
-I've run across a `}' that doesn't seem to match anything.
-For example, `\def\a#1{...}' and `\a}' would produce
-this error. If you simply proceed now, the `\par' that
-I've just inserted will cause me to report a runaway
-argument that might be the root of the problem. But if
-your `}' was spurious, just type `2' and it will go away.
-Runaway argument?
-! Paragraph ended before \use_i:nn was complete.
-<to be read again>
- \par
-l. ... }
-I suspect you've forgotten a `}', causing me to apply this
-control sequence to too much text. How can we recover?
-My plan is to forget the whole thing and hope for the best.
-! Missing number, treated as zero.
-<to be read again>
- }
-l. ... }
-A number should have been here; I inserted `0'.
-(If you can't figure out why I needed to see a number,
-look up `weird error' in the index to The TeXbook.)
-! Argument of \use_ii:nn has an extra }.
-<inserted text>
- \par
-l. ... }
-I've run across a `}' that doesn't seem to match anything.
-For example, `\def\a#1{...}' and `\a}' would produce
-this error. If you simply proceed now, the `\par' that
-I've just inserted will cause me to report a runaway
-argument that might be the root of the problem. But if
-your `}' was spurious, just type `2' and it will go away.
-Runaway argument?
-! Paragraph ended before \use_ii:nn was complete.
-<to be read again>
- \par
-l. ... }
-I suspect you've forgotten a `}', causing me to apply this
-control sequence to too much text. How can we recover?
-My plan is to forget the whole thing and hope for the best.
-> \l_tmpa_tl={Span}{pdf}.
+Package tagpdf Warning: NS blub is not known
+> \l_tmpa_tl=title.
<recently read> }
l. ... }
-> \l_tmpb_tl=.
+> \l_tmpb_tl=blub.
<recently read> }
l. ... }
============================================================
============================================================
TEST 4: get unknown role: blub
============================================================
+Package tagpdf Warning: tag blub is not known
> \l_tmpa_tl=blub.
<recently read> }
l. ... }
@@ -110,169 +37,21 @@ l. ... }
l. ... }
============================================================
============================================================
-TEST 5: get standard role: Sect
+TEST 5: get standard role: Sect, unknown NS
============================================================
-! Use of \__prop_get_linked:w doesn't match its definition.
-<recently read> \g__tag_role_NS_xxx_prop
-l. ... }
-If you say, e.g., `\def\a1{...}', then you must always
-put `1' after `\a', since control sequence names are
-made up of letters only. The macro here has not been
-followed by the required stuff, so I'm ignoring it.
-! Argument of \tl_set:Nn has an extra }.
-<inserted text>
- \par
-l. ... }
-I've run across a `}' that doesn't seem to match anything.
-For example, `\def\a#1{...}' and `\a}' would produce
-this error. If you simply proceed now, the `\par' that
-I've just inserted will cause me to report a runaway
-argument that might be the root of the problem. But if
-your `}' was spurious, just type `2' and it will go away.
-Runaway argument?
-! Paragraph ended before \tl_set:Nn was complete.
-<to be read again>
- \par
-l. ... }
-I suspect you've forgotten a `}', causing me to apply this
-control sequence to too much text. How can we recover?
-My plan is to forget the whole thing and hope for the best.
-! Missing number, treated as zero.
-<to be read again>
- }
-l. ... }
-A number should have been here; I inserted `0'.
-(If you can't figure out why I needed to see a number,
-look up `weird error' in the index to The TeXbook.)
-! Argument of \use_i:nn has an extra }.
-<inserted text>
- \par
-l. ... }
-I've run across a `}' that doesn't seem to match anything.
-For example, `\def\a#1{...}' and `\a}' would produce
-this error. If you simply proceed now, the `\par' that
-I've just inserted will cause me to report a runaway
-argument that might be the root of the problem. But if
-your `}' was spurious, just type `2' and it will go away.
-Runaway argument?
-! Paragraph ended before \use_i:nn was complete.
-<to be read again>
- \par
-l. ... }
-I suspect you've forgotten a `}', causing me to apply this
-control sequence to too much text. How can we recover?
-My plan is to forget the whole thing and hope for the best.
-! Missing number, treated as zero.
-<to be read again>
- }
-l. ... }
-A number should have been here; I inserted `0'.
-(If you can't figure out why I needed to see a number,
-look up `weird error' in the index to The TeXbook.)
-! Argument of \use_ii:nn has an extra }.
-<inserted text>
- \par
-l. ... }
-I've run across a `}' that doesn't seem to match anything.
-For example, `\def\a#1{...}' and `\a}' would produce
-this error. If you simply proceed now, the `\par' that
-I've just inserted will cause me to report a runaway
-argument that might be the root of the problem. But if
-your `}' was spurious, just type `2' and it will go away.
-Runaway argument?
-! Paragraph ended before \use_ii:nn was complete.
-<to be read again>
- \par
-l. ... }
-I suspect you've forgotten a `}', causing me to apply this
-control sequence to too much text. How can we recover?
-My plan is to forget the whole thing and hope for the best.
-> \l_tmpa_tl={Span}{pdf}.
+Package tagpdf Warning: NS xxx is not known
+> \l_tmpa_tl=Sect.
<recently read> }
l. ... }
-> \l_tmpb_tl=.
+> \l_tmpb_tl=xxx.
<recently read> }
l. ... }
============================================================
============================================================
-TEST 6: get standard role: Aside
+TEST 6: get standard role: Aside, empty NS
============================================================
-! Use of \__prop_get_linked:w doesn't match its definition.
-<recently read> \g__tag_role_NS_xxx_prop
-l. ... }
-If you say, e.g., `\def\a1{...}', then you must always
-put `1' after `\a', since control sequence names are
-made up of letters only. The macro here has not been
-followed by the required stuff, so I'm ignoring it.
-! Argument of \tl_set:Nn has an extra }.
-<inserted text>
- \par
-l. ... }
-I've run across a `}' that doesn't seem to match anything.
-For example, `\def\a#1{...}' and `\a}' would produce
-this error. If you simply proceed now, the `\par' that
-I've just inserted will cause me to report a runaway
-argument that might be the root of the problem. But if
-your `}' was spurious, just type `2' and it will go away.
-Runaway argument?
-! Paragraph ended before \tl_set:Nn was complete.
-<to be read again>
- \par
-l. ... }
-I suspect you've forgotten a `}', causing me to apply this
-control sequence to too much text. How can we recover?
-My plan is to forget the whole thing and hope for the best.
-! Missing number, treated as zero.
-<to be read again>
- }
-l. ... }
-A number should have been here; I inserted `0'.
-(If you can't figure out why I needed to see a number,
-look up `weird error' in the index to The TeXbook.)
-! Argument of \use_i:nn has an extra }.
-<inserted text>
- \par
-l. ... }
-I've run across a `}' that doesn't seem to match anything.
-For example, `\def\a#1{...}' and `\a}' would produce
-this error. If you simply proceed now, the `\par' that
-I've just inserted will cause me to report a runaway
-argument that might be the root of the problem. But if
-your `}' was spurious, just type `2' and it will go away.
-Runaway argument?
-! Paragraph ended before \use_i:nn was complete.
-<to be read again>
- \par
-l. ... }
-I suspect you've forgotten a `}', causing me to apply this
-control sequence to too much text. How can we recover?
-My plan is to forget the whole thing and hope for the best.
-! Missing number, treated as zero.
-<to be read again>
- }
-l. ... }
-A number should have been here; I inserted `0'.
-(If you can't figure out why I needed to see a number,
-look up `weird error' in the index to The TeXbook.)
-! Argument of \use_ii:nn has an extra }.
-<inserted text>
- \par
-l. ... }
-I've run across a `}' that doesn't seem to match anything.
-For example, `\def\a#1{...}' and `\a}' would produce
-this error. If you simply proceed now, the `\par' that
-I've just inserted will cause me to report a runaway
-argument that might be the root of the problem. But if
-your `}' was spurious, just type `2' and it will go away.
-Runaway argument?
-! Paragraph ended before \use_ii:nn was complete.
-<to be read again>
- \par
-l. ... }
-I suspect you've forgotten a `}', causing me to apply this
-control sequence to too much text. How can we recover?
-My plan is to forget the whole thing and hope for the best.
-> \l_tmpa_tl={Span}{pdf}.
+Package tagpdf Warning: Empty NS
+> \l_tmpa_tl=Aside.
<recently read> }
l. ... }
> \l_tmpb_tl=.
More information about the latex3-commits
mailing list.