|
31 | 31 | from moin.utils.iri import Iri |
32 | 32 | from moin.utils.tree import html, moin_page, xlink, xinclude |
33 | 33 | from moin.utils.mime import Type, type_moin_document |
34 | | -from moin.wikiutil import anchor_name_from_text, normalize_pagename |
| 34 | +from moin.wikiutil import anchor_name_from_text |
35 | 35 |
|
36 | 36 | from . import default_registry |
37 | 37 | from ._util import allowed_uri_scheme, decode_data, normalize_split_text |
@@ -410,7 +410,8 @@ def visit_image(self, node): |
410 | 410 | "left": "left", |
411 | 411 | "center": "center", |
412 | 412 | "right": "right", |
413 | | - "top": "top", # rst parser creates error messages for top, bottom, and middle |
| 413 | + # only for inline images: |
| 414 | + "top": "top", |
414 | 415 | "bottom": "bottom", |
415 | 416 | "middle": "middle", |
416 | 417 | } |
@@ -825,28 +826,29 @@ def get_transforms(self): |
825 | 826 | class WikiReferences(transforms.Transform): |
826 | 827 | """Resolve references without matching target as local wiki references. |
827 | 828 |
|
828 | | - Set the "refuri" attribute to refer to a local wiki item. |
829 | | - The value is derived from the node's text content with |
830 | | - `moin.wikiutil.normalize_pagename()`. |
| 829 | + Set the "refuri" attribute to the whitespace-normalized (but NOT case |
| 830 | + normalized) link text (`visit_reference()` adds the "wiki.local" scheme.) |
831 | 831 |
|
832 | | - Cf. https://docutils.sourceforge.io/docs/api/transforms.html#docinfo. |
| 832 | + Cf. https://docutils.sourceforge.io/docs/api/transforms.html. |
833 | 833 | """ |
834 | 834 |
|
835 | 835 | default_priority = 775 |
836 | 836 | # Apply between `InternalTargets` (660) and `DanglingReferences` (850) |
837 | 837 |
|
838 | 838 | def apply(self) -> None: |
839 | 839 | for node in self.document.findall(nodes.reference): |
840 | | - # Skip resolved references, unresolvable references, and references with matching target: |
| 840 | + # Skip resolved references, unresolvable references, |
| 841 | + # and references with matching target: |
841 | 842 | if node.resolved or "refname" not in node or self.document.nameids.get(node["refname"]): |
842 | 843 | continue |
843 | | - # Get the name from the link text (the "refname" attribute is lowercased). |
844 | | - wikiname = normalize_pagename(node.astext(), None) # second arg is ignored |
845 | | - # Skip references whose "refname" attribute differs from the wikiname (exept for case): |
846 | | - if normalize_pagename(node["refname"], None) != wikiname.lower(): |
| 844 | + # Get the refuri from the link text (keep case) |
| 845 | + refuri = nodes.whitespace_normalize_name(node.astext()) |
| 846 | + # Skip references whose "refname" attribute differs from the |
| 847 | + # refuri by more than case: |
| 848 | + if node["refname"] != refuri.lower(): |
847 | 849 | continue |
848 | | - # Resolve the reference: |
849 | | - node["refuri"] = wikiname |
| 850 | + node["refuri"] = refuri |
| 851 | + # Mark as resolved: |
850 | 852 | del node["refname"] |
851 | 853 | node.resolved = True |
852 | 854 |
|
|
0 commit comments