Esempio n. 1
0
 def test_owns_tags_that_can_be_rendered(self):
     # Setup
     tag_pool.register_tag(FooTagAlt)
     tag_pool.register_tag(BarTag)
     _init_bbcode_tags(self.parser)
     # Run & check
     for bbcodes_text, expected_html_text in self.TAGS_TESTS:
         result = self.parser.render(bbcodes_text)
         self.assertEqual(result, expected_html_text)
Esempio n. 2
0
 def test_can_not_register_invalid_tags(self):
     # Setup
     number_of_tags_before = len(tag_pool.get_tags())
     # Run & check
     with self.assertRaises(ImproperlyConfigured):
         class ErrnoneousTag4:
             pass
         tag_pool.register_tag(ErrnoneousTag4)
     number_of_tags_after = len(tag_pool.get_tags())
     self.assertEqual(number_of_tags_before, number_of_tags_after)
 def test_cannot_register_tags_with_incorrect_parent_classes(self):
     # Setup
     number_of_tags_before = len(tag_pool.get_tags())
     # Run & check
     with pytest.raises(ImproperlyConfigured):
         class ErrnoneousTag4:
             pass
         tag_pool.register_tag(ErrnoneousTag4)
     number_of_tags_after = len(tag_pool.get_tags())
     assert number_of_tags_before == number_of_tags_after
 def test_tags_can_be_rendered(self):
     # Setup
     parser_loader = BBCodeParserLoader(parser=self.parser)
     tag_pool.register_tag(FooTagAlt)
     tag_pool.register_tag(BarTag)
     parser_loader.init_bbcode_tags()
     # Run & check
     for bbcodes_text, expected_html_text in self.TAGS_TESTS:
         result = self.parser.render(bbcodes_text)
         assert result == expected_html_text
 def test_tags_can_be_rendered(self):
     # Setup
     parser_loader = BBCodeParserLoader(parser=self.parser)
     tag_pool.register_tag(FooTagAlt)
     tag_pool.register_tag(BarTag)
     parser_loader.init_bbcode_tags()
     # Run & check
     for bbcodes_text, expected_html_text in self.TAGS_TESTS:
         result = self.parser.render(bbcodes_text)
         assert result == expected_html_text
 def test_cannot_register_tags_that_are_already_stored_in_the_database(self):
     # Setup
     BBCodeTag.objects.create(
         tag_definition='[tt]{TEXT}[/tt]', html_replacement='<span>{TEXT}</span>')
     # Run
     with pytest.raises(TagAlreadyCreated):
         class ErrnoneousTag9(ParserBBCodeTag):
             name = 'tt'
             definition_string = '[tt]{TEXT}[/tt]'
             format_string = '<span>{TEXT}</span>'
         tag_pool.register_tag(ErrnoneousTag9)
    def test_cannot_register_tags_with_incorrect_parent_classes(self):
        # Setup
        number_of_tags_before = len(tag_pool.get_tags())
        # Run & check
        with pytest.raises(ImproperlyConfigured):

            class ErrnoneousTag4:
                pass

            tag_pool.register_tag(ErrnoneousTag4)
        number_of_tags_after = len(tag_pool.get_tags())
        assert number_of_tags_before == number_of_tags_after
 def test_should_raise_if_a_tag_is_registered_twice(self):
     # Setup
     number_of_tags_before = len(tag_pool.get_tags())
     tag_pool.register_tag(FooTag)
     # Run & check
     # Let's add it a second time. We should catch an exception
     with pytest.raises(TagAlreadyRegistered):
         tag_pool.register_tag(FooTag)
     # Let's make sure we have the same number of tags as before
     tag_pool.unregister_tag(FooTag)
     number_of_tags_after = len(tag_pool.get_tags())
     assert number_of_tags_before == number_of_tags_after
 def test_should_raise_if_a_tag_is_registered_twice(self):
     # Setup
     number_of_tags_before = len(tag_pool.get_tags())
     tag_pool.register_tag(FooTag)
     # Run & check
     # Let's add it a second time. We should catch an exception
     with pytest.raises(TagAlreadyRegistered):
         tag_pool.register_tag(FooTag)
     # Let's make sure we have the same number of tags as before
     tag_pool.unregister_tag(FooTag)
     number_of_tags_after = len(tag_pool.get_tags())
     assert number_of_tags_before == number_of_tags_after
    def test_cannot_register_tags_that_are_already_stored_in_the_database(
            self):
        # Setup
        BBCodeTag.objects.create(tag_definition='[tt]{TEXT}[/tt]',
                                 html_replacement='<span>{TEXT}</span>')
        # Run
        with pytest.raises(TagAlreadyCreated):

            class ErrnoneousTag9(ParserBBCodeTag):
                name = 'tt'
                definition_string = '[tt]{TEXT}[/tt]'
                format_string = '<span>{TEXT}</span>'

            tag_pool.register_tag(ErrnoneousTag9)
Esempio n. 11
0
 def test_placeholders_can_be_used_with_tags(self):
     # Setup
     parser_loader = BBCodeParserLoader(parser=self.parser)
     placeholder_pool.register_placeholder(FooPlaceholder)
     placeholder_pool.register_placeholder(DummyPlaceholder)
     tag_pool.register_tag(FooBBCodeTag)
     tag_pool.register_tag(DummyBBCodeTag)
     parser_loader.init_bbcode_placeholders()
     parser_loader.init_bbcode_tags()
     # Run & check
     for bbcodes_text, expected_html_text in self.TAGS_TESTS:
         result = self.parser.render(bbcodes_text)
         assert result == expected_html_text
     placeholder_pool.unregister_placeholder(FooPlaceholder)
     placeholder_pool.unregister_placeholder(DummyPlaceholder)
        href = 'tel:{}'.format(value)
        return '<a href="{0}">{0}</a>'.format(href, value)


class StartsWithATag(BBCodeTag):
    name = 'startswitha'
    definition_string = '[startswitha]{STARTSWITH=a}[/startswitha]'
    format_string = '<span>{STARTSWITH=a}</span>'


class RoundedBBCodeTag(BBCodeTag):
    name = 'rounded'

    class Options:
        strip = False

    def render(self, value, option=None, parent=None):
        if option and re.search(color_re, option) is not None:
            return '<div class="rounded" style="border-color:{};">{}</div>'.format(
                option, value)
        return '<div class="rounded">{}</div>'.format(value)


tag_pool.register_tag(SubTag)
tag_pool.register_tag(PreTag)
tag_pool.register_tag(SizeTag)
tag_pool.register_tag(FruitTag)
tag_pool.register_tag(PhoneLinkTag)
tag_pool.register_tag(StartsWithATag)
tag_pool.register_tag(RoundedBBCodeTag)
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from precise_bbcode.bbcode.tag import BBCodeTag
from precise_bbcode.tag_pool import tag_pool


class LoadDummyTag(BBCodeTag):
    name = 'loaddummy02'
    definition_string = '[loaddummy02]{TEXT}[/loaddummy02]'
    format_string = '<loaddummy>{TEXT}</loaddummy>'


tag_pool.register_tag(LoadDummyTag)
Esempio n. 14
0
class QuoteTag(BBCodeTag):
    name = 'quote'

    class Options:
        strip = True
        swallow_trailing_newline = True

    def render(self, value, option=None, parent=None):
        if option:
            return """
                <div class="bbcode-quote">
                    <p class="mb-0">{}</p>
                    <footer class="blockquote-footer">{}</footer>
                </div>""".format(value, option)
        else:
            return """
                <div class="bbcode-quote">
                    <p class="mb-0">{}</p>
                </div>""".format(value)


tag_pool.register_tag(ImageTag)
tag_pool.register_tag(YoutubeTag)
tag_pool.register_tag(OlListTag)
tag_pool.register_tag(UlListTag)
tag_pool.register_tag(ListItemTag)
tag_pool.register_tag(QuoteTag)
tag_pool.register_tag(CodeTag)

Esempio n. 15
0
        newline_closes = True
        same_tag_closes = True
        end_tag_closes = True
        strip = True


class EscapeTag(BBCodeTag):
    name = 'escape'
    definition_string = '[escape]{TEXT}[/escape]'
    format_string = '{TEXT}'

    class Options:
        render_embedded = False


tag_pool.register_tag(SpoilerTag)
tag_pool.register_tag(SizeTag)
tag_pool.register_tag(UserTag)
tag_pool.register_tag(CodeTag)
tag_pool.register_tag(FontTag)
tag_pool.register_tag(UlTag)
tag_pool.register_tag(OlTag)
tag_pool.register_tag(LiTag)
tag_pool.register_tag(HrTag)
tag_pool.register_tag(ShadowTag)
tag_pool.register_tag(AnchorTag)
tag_pool.register_tag(QuoteTag)
tag_pool.register_tag(UncheckedBoxTag)
tag_pool.register_tag(CheckedBoxTag)
tag_pool.register_tag(EscapeTag)
        href = 'tel:{}'.format(value)
        # Render
        return '<a href="{0}">{0}</a>'.format(href, value)


class StartsWithATag(BBCodeTag):
    name = 'startswitha'
    definition_string = '[startswitha]{STARTSWITH=a}[/startswitha]'
    format_string = '<span>{STARTSWITH=a}</span>'


class RoundedBBCodeTag(BBCodeTag):
    name = 'rounded'

    class Options:
        strip = False

    def render(self, value, option=None, parent=None):
        if option and re.search(color_re, option) is not None:
            return '<div class="rounded" style="border-color:{};">{}</div>'.format(option, value)
        return '<div class="rounded">{}</div>'.format(value)


tag_pool.register_tag(SubTag)
tag_pool.register_tag(PreTag)
tag_pool.register_tag(SizeTag)
tag_pool.register_tag(FruitTag)
tag_pool.register_tag(PhoneLinkTag)
tag_pool.register_tag(StartsWithATag)
tag_pool.register_tag(RoundedBBCodeTag)
Esempio n. 17
0
from django.db import models
from django.utils.html import escape
from django import forms
import datetime
import hashlib
import re
from django.utils import timezone
from precise_bbcode.bbcode.tag import BBCodeTag
from precise_bbcode.tag_pool import tag_pool

"""
class SmallBBCodeTag(BBCodeTag):
    name = 'small'
    definition_string = '[small]{TEXT}[/small]'
    format_string = '<span style="font-size: 8px">{TEXT}</span>'

    class Options:
        render_embedded = True
        strip = False

tag_pool.register_tag(SmallBBCodeTag)


class BigBBCodeTag(BBCodeTag):
    name = 'big'
    definition_string = '[big]{TEXT}[/big]'
    format_string = '<span style="font-size: 28px">{TEXT}</span>'

    class Options:
        render_embedded = True
        strip = False
Esempio n. 18
0
from precise_bbcode.bbcode.tag import BBCodeTag
from precise_bbcode.tag_pool import tag_pool


class LoadDummyTag(BBCodeTag):
    name = 'loaddummy02'
    definition_string = '[loaddummy02]{TEXT}[/loaddummy02]'
    format_string = '<loaddummy>{TEXT}</loaddummy>'


tag_pool.register_tag(LoadDummyTag)
Esempio n. 19
0
# -*- coding: utf-8 -*-

# Standard library imports

# Third party imports
from precise_bbcode.tag_base import TagBase
from precise_bbcode.tag_pool import tag_pool

# Local application / specific library imports


class SubTag(TagBase):
    tag_name = "sub"

    def render(self, name, value, option=None, parent=None):
        return '<sub>%s</sub>' % value


class PreTag(TagBase):
    tag_name = "pre"
    render_embedded = False

    def render(self, name, value, option=None, parent=None):
        return '<pre>%s</pre>' % value


tag_pool.register_tag(SubTag)
tag_pool.register_tag(PreTag)
Esempio n. 20
0
from django.utils import timezone
from precise_bbcode.bbcode.tag import BBCodeTag
from precise_bbcode.tag_pool import tag_pool


class SmallBBCodeTag(BBCodeTag):
    name = 'small'
    definition_string = '[small]{TEXT}[/small]'
    format_string = '<span style="font-size: 8px">{TEXT}</span>'

    class Options:
        render_embedded = True
        strip = False


tag_pool.register_tag(SmallBBCodeTag)


class BigBBCodeTag(BBCodeTag):
    name = 'big'
    definition_string = '[big]{TEXT}[/big]'
    format_string = '<span style="font-size: 28px">{TEXT}</span>'

    class Options:
        render_embedded = True
        strip = False


tag_pool.register_tag(BigBBCodeTag)

Esempio n. 21
0

class QuoteBBCodeTag(BBCodeTag):
    name = 'quote'

    class Options:
        strip = True

    def render(self, value, option=None, parent=None):
        content = str(value)

        if option:
            username = str(option).replace('"', '')
            profile = get_object_or_None(UserProfile, user__username=username)
            if not profile:
                try:
                    profile = get_object_or_None(UserProfile,
                                                 real_name=username)
                except MultipleObjectsReturned:
                    return '<blockquote><em>{}</em>:<br/>{}</blockquote>'.format(
                        username, content)
            if profile:
                return '<blockquote><a href="/users/{}/">{}</a>:<br/>{}</blockquote>'.format(
                    profile.user.username, str(profile.get_display_name()),
                    content)

        return '<blockquote>{}</blockquote>'.format(content)


tag_pool.register_tag(QuoteBBCodeTag)