mirror of
https://github.com/Kozea/WeasyPrint.git
synced 2024-10-05 00:21:15 +03:00
Merge remote-tracking branch 'origin/master' into pydyf
This commit is contained in:
commit
8e9e6b6bfe
@ -518,9 +518,6 @@ def _content_list(computer, values):
|
|||||||
(attr,) + value[1][1:]))
|
(attr,) + value[1][1:]))
|
||||||
else:
|
else:
|
||||||
computed_value = value
|
computed_value = value
|
||||||
if computer['target_collector'] and computed_value:
|
|
||||||
computer['target_collector'].collect_computed_target(
|
|
||||||
computed_value[1][0])
|
|
||||||
if computed_value is None:
|
if computed_value is None:
|
||||||
LOGGER.warning('Unable to compute %s\'s value for content: %s' % (
|
LOGGER.warning('Unable to compute %s\'s value for content: %s' % (
|
||||||
computer['element'], ', '.join(str(item) for item in value)))
|
computer['element'], ', '.join(str(item) for item in value)))
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
The TargetCollector is a structure providing required targets'
|
The TargetCollector is a structure providing required targets'
|
||||||
counter_values and stuff needed to build pending targets later,
|
counter_values and stuff needed to build pending targets later,
|
||||||
when the layout of all targetted anchors has been done.
|
when the layout of all targeted anchors has been done.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ from ..logger import LOGGER
|
|||||||
class TargetLookupItem:
|
class TargetLookupItem:
|
||||||
"""Item controlling pending targets and page based target counters.
|
"""Item controlling pending targets and page based target counters.
|
||||||
|
|
||||||
Collected in the TargetCollector's ``items``.
|
Collected in the TargetCollector's ``target_lookup_items``.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
def __init__(self, state='pending'):
|
def __init__(self, state='pending'):
|
||||||
@ -83,9 +83,6 @@ class TargetCollector:
|
|||||||
# to call the needed parse_again functions.
|
# to call the needed parse_again functions.
|
||||||
self.had_pending_targets = False
|
self.had_pending_targets = False
|
||||||
|
|
||||||
# List of anchors that have already been seen during parsing.
|
|
||||||
self.existing_anchors = []
|
|
||||||
|
|
||||||
def anchor_name_from_token(self, anchor_token):
|
def anchor_name_from_token(self, anchor_token):
|
||||||
"""Get anchor name from string or uri token."""
|
"""Get anchor name from string or uri token."""
|
||||||
if anchor_token[0] == 'string' and anchor_token[1].startswith('#'):
|
if anchor_token[0] == 'string' and anchor_token[1].startswith('#'):
|
||||||
@ -94,23 +91,13 @@ class TargetCollector:
|
|||||||
return anchor_token[1][1]
|
return anchor_token[1][1]
|
||||||
|
|
||||||
def collect_anchor(self, anchor_name):
|
def collect_anchor(self, anchor_name):
|
||||||
"""Store ``anchor_name`` in ``existing_anchors``."""
|
"""Create a TargetLookupItem for the given `anchor_name``."""
|
||||||
if anchor_name and isinstance(anchor_name, str):
|
if anchor_name and isinstance(anchor_name, str):
|
||||||
if anchor_name in self.existing_anchors:
|
if self.target_lookup_items.get(anchor_name) is not None:
|
||||||
LOGGER.warning('Anchor defined twice: %s', anchor_name)
|
LOGGER.warning('Anchor defined twice: %s', anchor_name)
|
||||||
else:
|
else:
|
||||||
self.existing_anchors.append(anchor_name)
|
self.target_lookup_items.setdefault(
|
||||||
|
anchor_name, TargetLookupItem())
|
||||||
def collect_computed_target(self, anchor_token):
|
|
||||||
"""Store a computed internal target's ``anchor_name``.
|
|
||||||
|
|
||||||
``anchor_name`` must not start with '#' and be already unquoted.
|
|
||||||
|
|
||||||
"""
|
|
||||||
anchor_name = self.anchor_name_from_token(anchor_token)
|
|
||||||
if anchor_name:
|
|
||||||
self.target_lookup_items.setdefault(
|
|
||||||
anchor_name, TargetLookupItem())
|
|
||||||
|
|
||||||
def lookup_target(self, anchor_token, source_box, css_token, parse_again):
|
def lookup_target(self, anchor_token, source_box, css_token, parse_again):
|
||||||
"""Get a TargetLookupItem corresponding to ``anchor_token``.
|
"""Get a TargetLookupItem corresponding to ``anchor_token``.
|
||||||
@ -125,12 +112,9 @@ class TargetCollector:
|
|||||||
anchor_name, TargetLookupItem('undefined'))
|
anchor_name, TargetLookupItem('undefined'))
|
||||||
|
|
||||||
if item.state == 'pending':
|
if item.state == 'pending':
|
||||||
if anchor_name in self.existing_anchors:
|
self.had_pending_targets = True
|
||||||
self.had_pending_targets = True
|
item.parse_again_functions.setdefault(
|
||||||
item.parse_again_functions.setdefault(
|
(source_box, css_token), parse_again)
|
||||||
(source_box, css_token), parse_again)
|
|
||||||
else:
|
|
||||||
item.state = 'undefined'
|
|
||||||
|
|
||||||
if item.state == 'undefined':
|
if item.state == 'undefined':
|
||||||
LOGGER.error(
|
LOGGER.error(
|
||||||
|
Loading…
Reference in New Issue
Block a user