aboutsummaryrefslogtreecommitdiffstats
path: root/markdown/extensions/meta.py
diff options
context:
space:
mode:
Diffstat (limited to 'markdown/extensions/meta.py')
-rw-r--r--markdown/extensions/meta.py40
1 files changed, 6 insertions, 34 deletions
diff --git a/markdown/extensions/meta.py b/markdown/extensions/meta.py
index cf8074f..711235e 100644
--- a/markdown/extensions/meta.py
+++ b/markdown/extensions/meta.py
@@ -22,66 +22,40 @@ from ..preprocessors import Preprocessor
import re
import logging
-try: # pragma: no cover
- import yaml
- try:
- from yaml import CSafeLoader as SafeLoader
- except ImportError:
- from yaml import SafeLoader
-except ImportError:
- yaml = None
-
log = logging.getLogger('MARKDOWN')
# Global Vars
META_RE = re.compile(r'^[ ]{0,3}(?P<key>[A-Za-z0-9_-]+):\s*(?P<value>.*)')
META_MORE_RE = re.compile(r'^[ ]{4,}(?P<value>.*)')
-YAML_BEGIN_RE = re.compile(r'^-{3}(\s.*)?')
-YAML_END_RE = re.compile(r'^(-{3}|\.{3})(\s.*)?')
+BEGIN_RE = re.compile(r'^-{3}(\s.*)?')
+END_RE = re.compile(r'^(-{3}|\.{3})(\s.*)?')
class MetaExtension (Extension):
""" Meta-Data extension for Python-Markdown. """
- def __init__(self, *args, **kwargs):
- self.config = {
- 'yaml': [False, "Parse meta data specified as a "
- "'---' delimited YAML front matter"],
- }
- super(MetaExtension, self).__init__(*args, **kwargs)
def extendMarkdown(self, md, md_globals):
""" Add MetaPreprocessor to Markdown instance. """
md.preprocessors.add("meta",
- MetaPreprocessor(md, self.getConfigs()),
+ MetaPreprocessor(md),
">normalize_whitespace")
class MetaPreprocessor(Preprocessor):
""" Get Meta-Data. """
- def __init__(self, md, config):
- self.config = config
- super(MetaPreprocessor, self).__init__(md)
-
def run(self, lines):
""" Parse Meta-Data and store in Markdown.Meta. """
meta = {}
key = None
- yaml_block = []
- have_yaml = False
- if lines and YAML_BEGIN_RE.match(lines[0]):
- have_yaml = True
+ if lines and BEGIN_RE.match(lines[0]):
lines.pop(0)
- if self.config['yaml'] and not yaml: # pragma: no cover
- log.warning('Document with YAML header, but PyYAML unavailable')
while lines:
line = lines.pop(0)
m1 = META_RE.match(line)
- if line.strip() == '' or have_yaml and YAML_END_RE.match(line):
+ if line.strip() == '' or END_RE.match(line):
break # blank line or end of YAML header - done
- elif have_yaml and self.config['yaml'] and yaml:
- yaml_block.append(line)
- elif m1:
+ if m1:
key = m1.group('key').lower().strip()
value = m1.group('value').strip()
try:
@@ -96,8 +70,6 @@ class MetaPreprocessor(Preprocessor):
else:
lines.insert(0, line)
break # no meta data - done
- if yaml_block:
- meta = yaml.load('\n'.join(yaml_block), SafeLoader)
self.markdown.Meta = meta
return lines