Publish_Source.Py
Writes the final modified markdown and frontmatter to the output directory. Replacing the trailing slash if its there and adding .md will bring up the raw source.
Configuration
The only configuration for the publish_source plugin is to make sure its in your list of hooks.
[markata] # make sure its in your list of hooks hooks=[ "markata.plugins.publish_source", ]
Note
publish_source is included by default, but if you have not included the default set of hooks you will need to explicitly add it.
!! function
_save function
saves the article to the output directory at its specified slug._save source
def _save(output_dir: Path, article: frontmatter.Post) -> None: """ saves the article to the output directory at its specified slug. """ path = Path( output_dir / Path(article["slug"]).parent / Path(article["path"]).name, ) path.parent.mkdir(parents=True, exist_ok=True) path.write_text(article.dumps())
!! function
_strip_unserializable_values function
Returns an article with only yaml serializable frontmatter._strip_unserializable_values source
def _strip_unserializable_values( markata: "Markata", article: frontmatter.Post, ) -> frontmatter.Post: """ Returns an article with only yaml serializable frontmatter. """ _article = frontmatter.Post( article.content, **{k: v for k, v in article.metadata.items() if k != "content"}, ) kwargs = { "Dumper": yaml.cyaml.CSafeDumper, "default_flow_style": False, "allow_unicode": True, } for key, value in article.metadata.items(): try: yaml.dump({key: value}, **kwargs) except RepresenterError: del _article[key] if markata.Post: _article = markata.Post(**_article.metadata, path=str(article.path)) return _article
!! function
save function
Saves the final modified post to the output site as markdown.!!! note
Any keys that are not yaml serializable will be stripped.
save source
def save(markata: "Markata") -> None: """ Saves the final modified post to the output site as markdown. !!! note Any keys that are not yaml serializable will be stripped. """ output_dir = Path(str(markata.config["output_dir"])) for ( article ) in markata.articles: # iter_articles(description="saving source documents"): try: _save(output_dir, article) except RepresenterError: _article = _strip_unserializable_values(markata, article) _save(output_dir, _article)