diff --git a/docs/index.txt b/docs/index.txt index f1adfa4..7cb58f2 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -43,5 +43,6 @@ Contents behind-the-scenes jinja2 django-sekizai + reactjs contributing changelog diff --git a/docs/reactjs.txt b/docs/reactjs.txt new file mode 100644 index 0000000..384e2e6 --- /dev/null +++ b/docs/reactjs.txt @@ -0,0 +1,57 @@ +.. _reactjs_support: + +Facebook React Support +====================== + +Compiling React's jsx files can be done by creating a custom precompressor + +Requirements +------------ +* PyReact>=0.5.2 for compiling jsx files +* PyExecJS>=1.1.0 required by PyReact (automatically installed when using pip) +* A Javascript runtime : options include PyV8, Node.js, PhantomJS among others + + +Full list of supported javascript engines found here https://github.com/doloopwhile/PyExecJS + + +Installation +------------ +1. Place the following code in a python file (ex: third_party/react_compressor.py) also make sure third_party/__init__.py exists + +.. code-block:: django + + from compressor.filters import FilterBase + from react import jsx + + + class ReactFilter(FilterBase): + + def __init__(self, content, *args, **kwargs): + self.content = content + kwargs.pop('filter_type') + super(ReactFilter, self).__init__(content, *args, **kwargs) + + def input(self, **kwargs): + return jsx.transform_string(self.content) + + +2. In your django settings file add the following line + +.. code-block:: django + + COMPRESS_PRECOMPILERS = ( + ('text/jsx', 'third_party.react_compressor.ReactFilter'), + ) + +Where ``third_party.react_compressor.ReactFilter`` is the full name of your ``ReactFilter`` class + + +Troubleshooting +-------------- +If you get file not found errors open your python command line and make sure +you are able to import your ``ReactFilter`` class + +.. code-block:: django + + __import__('third_party.react_compressor.ReactFilter')