Пример #1
0
def get_icon_kwargs(name, *args, **kwargs):
    """
    Build the kwargs for the icon function based on args and kwargs of the template tag
    """

    # Get kwargs from settings, name will always be set
    icon_kwargs = get_icon_kwargs_from_settings(name)

    # Remember the name, we do not allow this to be overwritten
    remember_name = icon_kwargs["name"]

    # Update with kwargs
    icon_kwargs.update(kwargs)

    # Merge args with extra_classes
    extra_classes = merge_css_list(args, kwargs.get("extra_classes", ""))
    if extra_classes:
        icon_kwargs["extra_classes"] = extra_classes

    # Check the name
    assert (icon_kwargs["name"] == remember_name
            ), "Overwriting the icon name is not allowed"

    # Return the dict
    return icon_kwargs
 def test_merge_css_list(self):
     # No arguments results in an empty list
     self.assertEqual(merge_css_list(), [])
     # Falsy arguments are ignores
     self.assertEqual(merge_css_list(None, False, ""), [])
     # Spaces don't matter without any other results
     self.assertEqual(merge_css_list("    "), [])
     # Spaces don't matter with other classes
     self.assertEqual(merge_css_list("  foo  "), ["foo"])
     # Spaces don't matter with other classes
     self.assertEqual(merge_css_list("  foo  ", "bar"), ["foo", "bar"])
     # Space separated classes are split
     self.assertEqual(merge_css_list("foo bar"), ["foo", "bar"])
     # Nested lists are fine
     self.assertEqual(merge_css_list(["foo", "bar"], "end"),
                      ["foo", "bar", "end"])
     # Duplicates are removed and first time class is encountered determines order
     self.assertEqual(merge_css_list(["foo", "bar"], "foo"), ["foo", "bar"])
     # Tabs and newlines are valid whitespace
     self.assertEqual(merge_css_list("foo\nbar\tend"),
                      ["foo", "bar", "end"])
     # Let's go crazy
     self.assertEqual(
         merge_css_list(
             "foo\nbar\tend",
             ["foo", ["bar", "bar", ["foo bar end"]]],
             "\n\t foo Foo",
             [[], [], [["Foo-Bar-End"]]],
             ("end", "bar", "foo", "Foo"),
         ),
         ["foo", "bar", "end", "Foo", "Foo-Bar-End"],
     )
     self.assertEqual(
         merge_css_text(
             "foo\nbar\tend",
             ["foo", ["bar", "bar", ["foo bar end"]]],
             "\n\t foo Foo",
             [[], [], [["Foo-Bar-End"]]],
             ("end", "bar", "foo", "Foo"),
         ),
         "foo bar end Foo Foo-Bar-End",
     )
Пример #3
0
 def test_merge_css_list(self):
     # No arguments results in an empty list
     self.assertEqual(
         merge_css_list(),
         [],
     )
     # Falsy arguments are ignores
     self.assertEqual(
         merge_css_list(None, False, ''),
         [],
     )
     # Spaces don't matter without any other results
     self.assertEqual(
         merge_css_list('    '),
         [],
     )
     # Spaces don't matter with other classes
     self.assertEqual(
         merge_css_list('  foo  '),
         ['foo'],
     )
     # Spaces don't matter with other classes
     self.assertEqual(
         merge_css_list('  foo  ', 'bar'),
         ['foo', 'bar'],
     )
     # Space separated classes are split
     self.assertEqual(
         merge_css_list('foo bar'),
         ['foo', 'bar'],
     )
     # Nested lists are fine
     self.assertEqual(
         merge_css_list(['foo', 'bar'], 'end'),
         ['foo', 'bar', 'end'],
     )
     # Duplicates are removed and first time class is encountered determines order
     self.assertEqual(
         merge_css_list(['foo', 'bar'], 'foo'),
         ['foo', 'bar'],
     )
     # Tabs and newlines are valid whitespace
     self.assertEqual(
         merge_css_list('foo\nbar\tend'),
         ['foo', 'bar', 'end'],
     )
     # Let's go crazy
     self.assertEqual(
         merge_css_list(
             'foo\nbar\tend',
             ['foo', ['bar', 'bar', ['foo bar end']]],
             '\n\t foo Foo',
             [[], [], [['Foo-Bar-End']]],
             ('end', 'bar', 'foo', 'Foo'),
         ),
         ['foo', 'bar', 'end', 'Foo', 'Foo-Bar-End'],
     )
     self.assertEqual(
         merge_css_text(
             'foo\nbar\tend',
             ['foo', ['bar', 'bar', ['foo bar end']]],
             '\n\t foo Foo',
             [[], [], [['Foo-Bar-End']]],
             ('end', 'bar', 'foo', 'Foo'),
         ),
         'foo bar end Foo Foo-Bar-End',
     )
Пример #4
0
 def get_css_classes(self):
     """Return list of all CSS classes for this icon."""
     return merge_css_list(self.get_class(), self.get_extra_classes())
Пример #5
0
 def get_extra_classes(self):
     """Return list of other classes for this icon."""
     return merge_css_list(self.kwargs.get("extra_classes", None))
Пример #6
0
 def get_css_classes(self):
     """
     List of class and extra classes
     """
     return merge_css_list(self.get_class(), self.get_extra_classes())
Пример #7
0
 def get_extra_classes(self):
     """
     List of other classes
     """
     return merge_css_list(self.kwargs.get("extra_classes", None))