Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
660c8d5
commit 1250a08
Showing
3 changed files
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
HTML Entities for reStructuredText | ||
################################## | ||
|
||
This plugin allows you to enter HTML entities such as ©, <, • inline in a RST document, as opposed | ||
to the tedious method of creating substitution definitions. | ||
|
||
Roles | ||
===== | ||
|
||
Adds one inline role: | ||
|
||
:: | ||
|
||
:html_entity: | ||
|
||
Usage | ||
===== | ||
|
||
:: | ||
|
||
:html_entity:`copy` 2013 :html_entity:`lt` Pelican :html_entity:`gt` Industries :html_entity:`149` All Rights Reserved | ||
|
||
produces: | ||
|
||
|copy| 2013 |lt| Pelican |gt| Industries |bullet| All Rights Reserved | ||
|
||
.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN | ||
.. |lt| unicode:: U+003C .. LESS THAN | ||
.. |gt| unicode:: U+003E .. GREATER THAN | ||
.. |bullet| unicode:: U+2022 .. BULLET |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
""" | ||
HTML Entities for reStructured Text | ||
=================================== | ||
Allows user to use HTML entities (©, •, etc.) in RST documents. | ||
Usage: | ||
:html_entity:`copy` | ||
:html_entity:`149` | ||
:html_entity:`#149` | ||
""" | ||
from __future__ import unicode_literals | ||
from docutils import nodes, utils | ||
from docutils.parsers.rst import roles | ||
from pelican.readers import PelicanHTMLTranslator | ||
import six | ||
|
||
|
||
class html_entity(nodes.Inline, nodes.Node): | ||
# Subclassing Node directly since TextElement automatically appends the escaped element | ||
def __init__(self, rawsource, text): | ||
self.rawsource = rawsource | ||
self.text = text | ||
self.children = [] | ||
self.attributes = {} | ||
|
||
def astext(self): | ||
return self.text | ||
|
||
|
||
def entity_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): | ||
text = utils.unescape(text) | ||
entity_code = text | ||
try: | ||
entity_code = "#{}".format(six.u(int(entity_code))) | ||
except ValueError: | ||
pass | ||
entity_code = "&{};".format(entity_code) | ||
return [html_entity(text, entity_code)], [] | ||
|
||
|
||
def register(): | ||
roles.register_local_role('html_entity', entity_role) | ||
|
||
PelicanHTMLTranslator.visit_html_entity = lambda self, node: self.body.append(node.astext()) | ||
PelicanHTMLTranslator.depart_html_entity = lambda self, node: None |