Exemple #1
0
    def test__resolve_context__missing_tags_strict(self):
        """
        Check resolve_context(): missing_tags 'strict'.

        """
        renderer = Renderer()
        renderer.missing_tags = 'strict'

        engine = renderer._make_render_engine()

        stack = ContextStack({'foo': 'bar'})

        self.assertEqual('bar', engine.resolve_context(stack, 'foo'))
        self.assertException(KeyNotFoundError,
                             "Key 'missing' not found: first part",
                             engine.resolve_context, stack, 'missing')
    def _assert_render(self, expected, template, *context, **kwargs):
        """
        Test rendering the given template using the given context.

        """
        partials = kwargs.get('partials')
        engine = kwargs.get('engine', self._engine())

        if partials is not None:
            engine.load_partial = lambda key: unicode(partials[key])

        context = ContextStack(*context)

        actual = engine.render(template, context)

        self.assertString(actual=actual, expected=expected)
    def _assert_render(self, expected, template, *context, **kwargs):
        """
        Test rendering the given template using the given context.

        """
        partials = kwargs.get('partials')
        engine = kwargs.get('engine', self._engine())

        if partials is not None:
            engine.resolve_partial = lambda key: str(partials[key])

        context = ContextStack(*context)

        # RenderEngine.render() only accepts unicode template strings.
        actual = engine.render(str(template), context)

        self.assertString(actual=actual, expected=expected)
Exemple #4
0
 def test_dot_notation__mixed_dict_and_obj(self):
     name = "foo.bar.baz.bak"
     stack = ContextStack(
         {"foo": Attachable(bar={"baz": Attachable(bak=42)})})
     self.assertEqual(stack.get(name), 42)
Exemple #5
0
    def test_init__many_elements(self):
        """
        Check that passing more than two items to __init__() raises no exception.

        """
        context = ContextStack({}, {}, {})
Exemple #6
0
    def test_init__no_elements(self):
        """
        Check that passing nothing to __init__() raises no exception.

        """
        context = ContextStack()
Exemple #7
0
def main():
    args = docopt(__doc__)

    config = ConfigParser.SafeConfigParser()
    config.read(args['--config'])
    palette_urls = config.get('palettes', 'url')
    palette_ids = [
        int(x) for x in re.findall('palette/([0-9]+)/', palette_urls)
    ]

    renderer = Renderer()

    if config.has_option('palettes', 'template'):
        template_file = config.get('palettes', 'template')
        f = open(template_file, 'r')
        template = f.read()
        f.close()
    else:
        template = """
{{#palettes}}
/** Colourlovers Palette
    {{title}}
    {{url}}
    by: {{user_name}}
    {{description}}
**/
{{#colors}}
/* {{title}} */
@color-{{normalized_title}}: {{hex}};
{{/colors}}

{{/palettes}}
        """

    d = {'palettes': []}

    cl = ColourLovers()
    for palette_id in palette_ids:
        for palette in cl.palette(palette_id):
            colors = []
            for hexcolor in palette.colours:
                c = cl.color(hexcolor)[0]
                a_colour = {
                    'badge_url': c.badge_url,
                    'date_created': c.date_created,
                    'description': c.description,
                    'hex': c.hex,
                    'hsv': c.hsv,
                    'id': c.id,
                    'image_url': c.image_url,
                    'rgb': c.rgb,
                    'title': c.title,
                    'normalized_title': re.sub('[^a-z_-]', '',
                                               c.title.lower()),
                    'url': c.url,
                    'user_name': c.user_name,
                }
                colors.append(a_colour)
            d['palettes'].append({
                'badge_url':
                palette.badge_url,
                'date_created':
                palette.date_created,
                'description':
                palette.description,
                'id':
                palette.id,
                'image_url':
                palette.image_url,
                'title':
                palette.title,
                'normalized_title':
                re.sub('[^a-z_-]', '', palette.title.lower()),
                'url':
                palette.url,
                'user_name':
                palette.user_name,
                'colors':
                colors,
            })

    ctx = ContextStack(d)
    css_file = config.get('palettes', 'css')
    c = open(css_file, 'w')
    c.write(renderer.render(template, ctx))
    c.close()