Coverage for src/lektor_ng/types/formats.py: 96%
23 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-09-05 15:22 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-09-05 15:22 +0000
1from warnings import warn
3from lektor_ng.markdown import Markdown
4from lektor_ng.types.base import Type
7class MarkdownDescriptor:
8 def __init__(self, source, options):
9 self.source = source
10 self.options = options
12 def __get__(self, obj, type=None):
13 if obj is None:
14 return self
15 return Markdown(self.source, record=obj, field_options=self.options)
18class MarkdownType(Type):
19 widget = "multiline-text"
21 def __init__(self, env, options):
22 super().__init__(env, options)
23 _check_option(options, "resolve_links", ("always", "never", "when-possible"))
25 def value_from_raw(self, raw):
26 return MarkdownDescriptor(raw.value or "", self.options)
29def _check_option(options, name, choices):
30 value = options.get(name)
31 if value is not None and value not in choices:
32 message = (
33 f"Unrecognized value {value!r} for the {name!r} markdown field option. "
34 f"Valid values are: {', '.join(repr(_) for _ in choices)}."
35 )
36 warn(message, stacklevel=3)