From b449d13bd9b989e6427a0486925176a6b28b63f1 Mon Sep 17 00:00:00 2001 From: Wills Bithrey Date: Tue, 8 Sep 2015 19:35:31 +0100 Subject: [PATCH] Add support for --ratio-delimter option. Fixes #202 --- glue/formats/base.py | 5 +++-- glue/formats/img.py | 6 ++++++ tests.py | 47 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/glue/formats/base.py b/glue/formats/base.py index e0abb4b..1ae78dd 100644 --- a/glue/formats/base.py +++ b/glue/formats/base.py @@ -26,8 +26,9 @@ def output_filename(self, ratio=None, *args, **kwargs): if self.build_per_ratio: if ratio is None: raise AttributeError("Format {0} output_filename requires a ratio.".format(self.__class__)) - ratio_suffix = '@%.1fx' % ratio if int(ratio) != ratio else '@%ix' % ratio - if ratio_suffix == '@1x': + delimiter = self.sprite.config.get('ratio_delimiter') + ratio_suffix = delimiter + '%.1fx' % ratio if int(ratio) != ratio else delimiter + '%ix' % ratio + if ratio_suffix == delimiter + '1x': ratio_suffix = '' return '{0}{1}'.format(self.sprite.name, ratio_suffix) return self.sprite.name diff --git a/glue/formats/img.py b/glue/formats/img.py index eb72ecd..8fdf664 100644 --- a/glue/formats/img.py +++ b/glue/formats/img.py @@ -68,6 +68,12 @@ def populate_argument_parser(cls, parser): const='2,1', help="Shortcut for --ratios=2,1") + group.add_argument("--ratio-delimiter", + dest="ratio_delimiter", + type=unicode, + default="@", + help="Ratio symbol delimiter") + def output_filename(self, *args, **kwargs): filename = super(ImageFormat, self).output_filename(*args, **kwargs) if self.sprite.config['css_cachebuster_filename'] or self.sprite.config['css_cachebuster_only_sprites']: diff --git a/tests.py b/tests.py index 556ec5a..98836ac 100644 --- a/tests.py +++ b/tests.py @@ -1801,5 +1801,52 @@ def test_caat_ratios(self): data = json.loads(f.read()) assert isinstance(data['sprites'], dict) + + def test_delimiter(self): + self.create_image("simple/red.png", RED) + self.create_image("simple/blue.png", BLUE) + + # Custom ratio delimiter + code = self.call('glue simple output --retina --ratio-delimiter=-') + self.assertEqual(code, 0) + + self.assertExists("output/simple.png") + self.assertExists("output/simple-2x.png") + self.assertExists("output/simple.css") + + self.assertCSS(u"output/simple.css", u'.sprite-simple-red', + {u'background-image': u"url(simple.png)", + u'background-repeat': u'no-repeat', + u'background-position': u'0 0', + u'width': u'32px', + u'height': u'32px'}) + + self.assertCSS(u"output/simple.css", u'.sprite-simple-blue', + {u'background-image': u"url(simple.png)", + u'background-repeat': u'no-repeat', + u'background-position': u'-32px 0', + u'width': u'32px', + u'height': u'32px'}) + + self.assertCSS(u"output/simple.css", u'.sprite-simple-red', + {u'background-image': u"url(simple-2x.png)", + u'background-repeat': u'no-repeat', + u'background-position': u'0 0', + u'background-size': u'64px 32px', + u'-webkit-background-size': u'64px 32px', + u'-moz-background-size': u'64px 32px', + u'width': u'32px', + u'height': u'32px'}, ratio=2) + + self.assertCSS(u"output/simple.css", u'.sprite-simple-blue', + {u'background-image': u"url(simple-2x.png)", + u'background-repeat': u'no-repeat', + u'background-position': u'-32px 0', + u'background-size': u'64px 32px', + u'-webkit-background-size': u'64px 32px', + u'-moz-background-size': u'64px 32px', + u'width': u'32px', + u'height': u'32px'}, ratio=2) + if __name__ == '__main__': unittest.main()