  
      {% upper %}This will appear in uppercase, {{ your_name }}.{% endupper %}
  
  As in the previous example, we'll use ``parser.parse()``. But this time, we
  pass the resulting ``nodelist`` to the ``Node``::
  
      def do_upper(parser, token):
          nodelist = parser.parse(('endupper',))
          parser.delete_first_token()
          return UpperNode(nodelist)
 
</s> remove As with filter registration, it is also possible to use this as a decorator::
 </s> add As with filter registration, it is also possible to use this as a decorator:

.. code-block:: python </s> remove Here's how the standard ``{% comment %}`` tag is implemented::
 </s> add Here's how the standard :ttag:`{% comment %}<comment>` tag is implemented:

.. code-block:: python </s> remove The ``takes_context`` parameter defaults to ``False``. When it's set to *True*,
the tag is passed the context object, as in this example. That's the only
difference between this case and the previous ``inclusion_tag`` example.
 </s> add The ``takes_context`` parameter defaults to ``False``. When it's set to
``True``, the tag is passed the context object, as in this example. That's the
only difference between this case and the previous ``inclusion_tag`` example. </s> remove returned the string, suppose you wanted to pass in a ``DateTimeField`` from an
object and have the template tag format that date-time:
 </s> add returned the string, suppose you wanted to pass in a
:class:`~django.db.models.DateTimeField` from an object and have the template
tag format that date-time: </s> remove tag is used inside a ``{% autoescape off %}`` block.
 </s> add tag is used inside a :ttag:`{% autoescape off %}<autoescape>` block.
pass the resulting ``nodelist`` to the ``Node``:

.. code-block:: python
  
      {% upper %}This will appear in uppercase, {{ your_name }}.{% endupper %}
  
  As in the previous example, we'll use ``parser.parse()``. But this time, we
pass the resulting ``nodelist`` to the ``Node``:

.. code-block:: python
  
      def do_upper(parser, token):
          nodelist = parser.parse(('endupper',))
          parser.delete_first_token()
          return UpperNode(nodelist)
keep keep keep keep replace keep keep keep keep keep
 Brushed up the custom template tag 'howto' guide by moving the assignment_tag doc to a more appropriate place (i.e. under the "Setting a variable in the context" section), adding cross references, fixing a few minor inaccuracies and doing a little PEP8 cleanup.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16909 bcc190cf-cafb-0310-a4f2-bffc1f526a37 
docs/howto/custom-template-tags.txt