Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8904365

Browse files
committed
Start to update AAA. This gets the tests passing.
However, all the comments should be updated.
1 parenta0415f2 commit8904365

File tree

2 files changed

+41
-6
lines changed

2 files changed

+41
-6
lines changed

‎html5lib/constants.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@
180180
"adoption-agency-1.3":
181181
_("End tag (%(name)s) violates step 1, "
182182
"paragraph 3 of the adoption agency algorithm."),
183+
"adoption-agency-4.4":
184+
_("End tag (%(name)s) violates step 4, "
185+
"paragraph 4 of the adoption agency algorithm."),
183186
"unexpected-end-tag-treated-as":
184187
_("Unexpected end tag (%(originalName)s). Treated as %(newName)s."),
185188
"no-end-tag":

‎html5lib/html5parser.py

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1404,28 +1404,60 @@ def endTagFormatting(self, token):
14041404
# XXX Better parseError messages appreciated.
14051405
name=token["name"]
14061406

1407+
# Step 1
14071408
outerLoopCounter=0
1409+
1410+
# Step 2
14081411
whileouterLoopCounter<8:
1412+
1413+
# Step 3
14091414
outerLoopCounter+=1
14101415

1411-
# Step 1 paragraph 1
1416+
# Step 4:
1417+
1418+
# Let the formatting element be the last element in
1419+
# the list of active formatting elements that:
1420+
# - is between the end of the list and the last scope
1421+
# marker in the list, if any, or the start of the list
1422+
# otherwise, and
1423+
# - has the same tag name as the token.
14121424
formattingElement=self.tree.elementInActiveFormattingElements(
14131425
token["name"])
14141426
if (notformattingElementor
14151427
(formattingElementinself.tree.openElementsand
14161428
notself.tree.elementInScope(formattingElement.name))):
1417-
self.parser.parseError("adoption-agency-1.1", {"name":token["name"]})
1429+
# If there is no such node, then abort these steps
1430+
# and instead act as described in the "any other
1431+
# end tag" entry below.
1432+
self.endTagOther(token)
14181433
return
14191434

1420-
# Step 1 paragraph 2
1435+
# Otherwise, if there is such a node, but that node is
1436+
# not in the stack of open elements, then this is a
1437+
# parse error; remove the element from the list, and
1438+
# abort these steps.
14211439
elifformattingElementnotinself.tree.openElements:
14221440
self.parser.parseError("adoption-agency-1.2", {"name":token["name"]})
14231441
self.tree.activeFormattingElements.remove(formattingElement)
14241442
return
1443+
1444+
1445+
# Otherwise, if there is such a node, and that node is
1446+
# also in the stack of open elements, but the element
1447+
# is not in scope, then this is a parse error; ignore
1448+
# the token, and abort these steps.
1449+
elifnotself.tree.elementInScope(formattingElement.name):
1450+
self.parser.parseError("adoption-agency-4.4", {"name":token["name"]})
1451+
return
14251452

1426-
# Step 1 paragraph 3
1427-
ifformattingElement!=self.tree.openElements[-1]:
1428-
self.parser.parseError("adoption-agency-1.3", {"name":token["name"]})
1453+
# Otherwise, there is a formatting element and that
1454+
# element is in the stack and is in scope. If the
1455+
# element is not the current node, this is a parse
1456+
# error. In any case, proceed with the algorithm as
1457+
# written in the following steps.
1458+
else:
1459+
ifformattingElement!=self.tree.openElements[-1]:
1460+
self.parser.parseError("adoption-agency-1.3", {"name":token["name"]})
14291461

14301462
# Step 2
14311463
# Start of the adoption agency algorithm proper

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp