Browse Source

Document compat, nodes.extras, Attribute, Parameter

tags/v0.1
Ben Kurtovic 11 years ago
parent
commit
aeb214acb5
7 changed files with 36 additions and 1 deletions
  1. +1
    -0
      mwparserfromhell/__init__.py
  2. +5
    -1
      mwparserfromhell/compat.py
  3. +6
    -0
      mwparserfromhell/nodes/extras/__init__.py
  4. +10
    -0
      mwparserfromhell/nodes/extras/attribute.py
  5. +11
    -0
      mwparserfromhell/nodes/extras/parameter.py
  6. +2
    -0
      mwparserfromhell/smart_list.py
  7. +1
    -0
      mwparserfromhell/string_mixin.py

+ 1
- 0
mwparserfromhell/__init__.py View File

@@ -37,3 +37,4 @@ __email__ = "ben.kurtovic@verizon.net"
from . import nodes, parser, smart_list, string_mixin, wikicode from . import nodes, parser, smart_list, string_mixin, wikicode


parse = lambda text: parser.Parser(text).parse() parse = lambda text: parser.Parser(text).parse()
parse.__doc__ = """Short for mwparserfromhell.parser.Parser(text).parse()."""

+ 5
- 1
mwparserfromhell/compat.py View File

@@ -1,7 +1,11 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
""" """
Implements support for both Python 2 and Python 3.
Implements support for both Python 2 and Python 3 by defining common types in
terms of their Python 2/3 variants. For example, :py:class:`str` is set to
:py:class:`unicode` on Python 2 but :py:class:`str` on Python 3; likewise,
:py;class:`bytes` is :py:class:`str` on 2 but :py:class:`bytes` on 3. These
types are meant to be imported directly from within the parser's modules.
""" """
import sys import sys


+ 6
- 0
mwparserfromhell/nodes/extras/__init__.py View File

@@ -20,5 +20,11 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.


"""
This package contains objects used by
:py:class:`~mwparserfromhell.nodes.Node`\ s, but are not nodes themselves.
This includes the parameters of Templates or the attributes of HTML tags.
"""

from .attribute import Attribute from .attribute import Attribute
from .parameter import Parameter from .parameter import Parameter

+ 10
- 0
mwparserfromhell/nodes/extras/attribute.py View File

@@ -28,6 +28,13 @@ from ...string_mixin import StringMixIn
__all__ = ["Attribute"] __all__ = ["Attribute"]


class Attribute(StringMixIn): class Attribute(StringMixIn):
"""Represents an attribute of an HTML tag.

This is used by :py:class:`~mwparserfromhell.nodes.tag.Tag` objects. For
example, the tag ``<ref name="foo">`` contains an Attribute whose name is
``"name"`` and whose value is ``"foo"``.
"""

def __init__(self, name, value=None, quoted=True): def __init__(self, name, value=None, quoted=True):
super(Attribute, self).__init__() super(Attribute, self).__init__()
self._name = name self._name = name
@@ -43,12 +50,15 @@ class Attribute(StringMixIn):


@property @property
def name(self): def name(self):
"""The name of the attribute as a ``Wikicode`` object."""
return self._name return self._name


@property @property
def value(self): def value(self):
"""The value of the attribute as a ``Wikicode`` object."""
return self._value return self._value


@property @property
def quoted(self): def quoted(self):
"""Whether the attribute's value is quoted with double quotes."""
return self._quoted return self._quoted

+ 11
- 0
mwparserfromhell/nodes/extras/parameter.py View File

@@ -29,6 +29,14 @@ from ...utils import parse_anything
__all__ = ["Parameter"] __all__ = ["Parameter"]


class Parameter(StringMixIn): class Parameter(StringMixIn):
"""Represents a paramater of a template.

For example, the template ``{{foo|bar|spam=eggs}}`` contains two
Parameters: one whose name is ``"1"``, value is ``"bar"``, and ``showkey``
is ``False``, and one whose name is ``"spam"``, value is ``"eggs"``, and
``showkey`` is ``True``.
"""

def __init__(self, name, value, showkey=True): def __init__(self, name, value, showkey=True):
super(Parameter, self).__init__() super(Parameter, self).__init__()
self._name = name self._name = name
@@ -42,14 +50,17 @@ class Parameter(StringMixIn):


@property @property
def name(self): def name(self):
"""The name of the parameter as a ``Wikicode`` object."""
return self._name return self._name


@property @property
def value(self): def value(self):
"""The value of the parameter as a ``Wikicode`` object."""
return self._value return self._value


@property @property
def showkey(self): def showkey(self):
"""Whether to show the parameter's key (i.e., its "name")."""
return self._showkey return self._showkey


@name.setter @name.setter


+ 2
- 0
mwparserfromhell/smart_list.py View File

@@ -68,6 +68,7 @@ class SmartList(list):
>>> parent >>> parent
[0, 1, 2, 3, 4] [0, 1, 2, 3, 4]
""" """

def __init__(self, iterable=None): def __init__(self, iterable=None):
if iterable: if iterable:
super(SmartList, self).__init__(iterable) super(SmartList, self).__init__(iterable)
@@ -187,6 +188,7 @@ class _ListProxy(list):
instead, whenever the list is needed, it builds it dynamically using the instead, whenever the list is needed, it builds it dynamically using the
:py:meth:`_render` method. :py:meth:`_render` method.
""" """

def __init__(self, parent, sliceinfo): def __init__(self, parent, sliceinfo):
super(_ListProxy, self).__init__() super(_ListProxy, self).__init__()
self._parent = parent self._parent = parent


+ 1
- 0
mwparserfromhell/string_mixin.py View File

@@ -52,6 +52,7 @@ class StringMixIn(object):
:py:meth:`__unicode__` instead of the immutable ``self`` like the regular :py:meth:`__unicode__` instead of the immutable ``self`` like the regular
``str`` type. ``str`` type.
""" """

if py3k: if py3k:
def __str__(self): def __str__(self):
return self.__unicode__() return self.__unicode__()


Loading…
Cancel
Save