diff --git a/pybadges/__init__.py b/pybadges/__init__.py index 84be744..34a9339 100644 --- a/pybadges/__init__.py +++ b/pybadges/__init__.py @@ -134,6 +134,7 @@ def badge( embed_right_image: bool = False, embed_center_image: bool = False, id_suffix: str = '', + style: str = 'flat', ) -> str: """Creates a github-style badge as an SVG image. @@ -184,6 +185,7 @@ def badge( id_suffix: The suffix of the id attributes used in the SVG's elements. Use to prevent duplicate ids if several badges are embedded on the same page. + style: The style of the badge. Can be "flat" or "flat-square". """ if measurer is None: measurer = ( @@ -239,6 +241,7 @@ def badge( right_image=right_image, center_image=center_image, id_suffix=id_suffix, + style=style, ) xml = minidom.parseString(svg) _remove_blanks(xml) diff --git a/pybadges/__main__.py b/pybadges/__main__.py index f47bfd1..55b50e1 100644 --- a/pybadges/__main__.py +++ b/pybadges/__main__.py @@ -151,6 +151,10 @@ def main(): 'the badge (this will prevent a URL fetch and may work around the ' 'fact that some browsers do not fetch external image references); ' 'only works if --logo is a HTTP/HTTPS URI or a file path') + parser.add_argument( + '--style', + default='flat', + help='the style of the badge (flat, flat-square)') parser.add_argument( '-v', '--version', @@ -194,7 +198,8 @@ def main(): center_image=args.center_image, embed_logo=args.embed_logo, embed_right_image=args.embed_right_image, - embed_center_image=args.embed_center_image) + embed_center_image=args.embed_center_image, + style=args.style) if args.browser: _, badge_path = tempfile.mkstemp(suffix='.svg') diff --git a/pybadges/badge-template-full.svg b/pybadges/badge-template-full.svg index d449a99..8c4b6f7 100644 --- a/pybadges/badge-template-full.svg +++ b/pybadges/badge-template-full.svg @@ -11,7 +11,7 @@ {{ whole_title }} {% endif %} - + @@ -19,20 +19,25 @@ - - - + + {% if left_title %} {{ left_title }} {% endif %} - + {% if center_image %} - - {% if center_title %} - {{ center_title }} - {% endif %} - + + {% if center_title %} + {{ center_title }} + {% endif %} + {% endif %} @@ -41,15 +46,22 @@ {% endif %} - + {% if style == "flat" %} + + {% endif %} - - + {% if logo %} - + {% endif %} - {{ left_text }} - {{ left_text }} + {% if style == "flat" %} + {{ left_text }} + {% endif %} + {{ left_text }} {% if center_image %} {% endif %} @@ -57,8 +69,10 @@ {% endif %} {% if right_text %} + {% if style == "flat" %} {{ right_text }} - {{ right_text }} + {% endif %} + {{ right_text }} {% endif %} {% if left_link or whole_link %} diff --git a/tests/golden-images/style-flat-square.svg b/tests/golden-images/style-flat-square.svg new file mode 100644 index 0000000..21be336 --- /dev/null +++ b/tests/golden-images/style-flat-square.svg @@ -0,0 +1 @@ +styleflat-square diff --git a/tests/test-badges.json b/tests/test-badges.json index 3911b39..52c74f6 100644 --- a/tests/test-badges.json +++ b/tests/test-badges.json @@ -129,6 +129,12 @@ "left_text": "commits", "right_text": "250", "center_image": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgIHdpZHRoPSIxMDciIGhlaWdodD0iMTMiIHZpZXdCb3g9IjAgLTEyIDEwNyAxMyI+CjxkZWZzPgo8L2RlZnM+CjxwYXRoIGQ9Ik03LjAsLTIuNzQzNTAyMzE1NTM3MTcyNyBMNy45NTg3NjI4ODY1OTc5MzgsLTIuMTIxMjEzMzA0Mzk3MDk2NCBMOC45MTc1MjU3NzMxOTU4NzcsLTIuNDA5ODg0OTkzNTgyNDQgTDkuODc2Mjg4NjU5NzkzODE1LC0yLjc1MTk5MjYyMzQ3NzI4IEwxMC44MzUwNTE1NDYzOTE3NTMsLTIuODY0MjQ4NjIwOTk5NDIzIEwxMS43OTM4MTQ0MzI5ODk2OTEsLTIuNzQ4OTY4NzAyMjc0MDMzNyBMMTIuNzUyNTc3MzE5NTg3NjMsLTIuNTE4NzE4OTQxMDA1NTIxMyBMMTMuNzExMzQwMjA2MTg1NTY4LC0yLjI5ODcyNTU1NTExMjA2OCBMMTQuNjcwMTAzMDkyNzgzNTA2LC0yLjE4MDUyNzQ2ODU1MDQ2OCBMMTUuNjI4ODY1OTc5MzgxNDQzLC0yLjIwNzUwMzg3NDExOTE5IEwxNi41ODc2Mjg4NjU5NzkzODMsLTIuMzc4NTE5NzY1OTYyMzQ1IEwxNy41NDYzOTE3NTI1NzczMiwtMi42NjAyNjY2NjQyMzYwMDU4IEwxOC41MDUxNTQ2MzkxNzUyNiwtMy4wMDIxNjI2NTYzODYzMTcgTDE5LjQ2MzkxNzUyNTc3MzE5OCwtMy4zNTAxMTI0NTk0MTM2NzQ0IEwyMC40MjI2ODA0MTIzNzExMzYsLTMuNjU3MTgyODAwNzQyNjE5NSBMMjEuMzgxNDQzMjk4OTY5MDc0LC0zLjg5MDQ2MzgyMjIwMjAzNTMgTDIyLjM0MDIwNjE4NTU2NzAxMywtNC4wMzQxODM1ODkxMTUzMzggTDIzLjI5ODk2OTA3MjE2NDk0NywtNC4wODk2MjAzNDU5MjQyMzk1IEwyNC4yNTc3MzE5NTg3NjI4ODYsLTQuMDcyNTk4NTc1MTA0NjI2IEwyNS4yMTY0OTQ4NDUzNjA4MjQsLTQuMDA5NDI3NTk5MDgzNTA2IEwyNi4xNzUyNTc3MzE5NTg3NjIsLTMuOTMyMDk5NTc1MjEyMDcxMyBMMjcuMTM0MDIwNjE4NTU2NywtMy44NzM0NTAwMjY4NjU0OTIgTDI4LjA5Mjc4MzUwNTE1NDY0LC0zLjg2MjgzMTU2Njg3NDYxNDcgTDI5LjA1MTU0NjM5MTc1MjU3NywtMy45MjI2ODUwMDk2NDA3MjMzIEwzMC4wMTAzMDkyNzgzNTA1MTUsLTQuMDY2MjI5NTYxMjIyOTQzNSBMMzAuOTY5MDcyMTY0OTQ4NDU0LC00LjI5NjM0NzQ1NzYwMTgwNSBMMzEuOTI3ODM1MDUxNTQ2MzkyLC00LjYwNTYxNTkzNTk2OTI4OCBMMzIuODg2NTk3OTM4MTQ0MzM0LC00Ljk3NzM0NDcwNzEyMTA5OSBMMzMuODQ1MzYwODI0NzQyMjcsLTUuMzg3NDExMjE3OTM4OTA5IEwzNC44MDQxMjM3MTEzNDAyMSwtNS44MDY2NDc5MDAzNjczNzcgTDM1Ljc2Mjg4NjU5NzkzODE1LC02LjIwMzUyMjY2MDQ3MzMzOCBMMzYuNzIxNjQ5NDg0NTM2MDksLTYuNTQ2ODYyMzk4NTU3OTY4IEwzNy42ODA0MTIzNzExMzQwMjUsLTYuODA4Mzk1MTQzOTU5NjY0IEwzOC42MzkxNzUyNTc3MzE5NjQsLTYuOTY0OTI0ODkwNjMxMDQzNSBMMzkuNTk3OTM4MTQ0MzI5ODk1LC03LjAgTDQwLjU1NjcwMTAzMDkyNzgzLC02LjkwNDk4Njg2MjgzMTA4MiBMNDEuNTE1NDYzOTE3NTI1NzcsLTYuNjc5NTExNjAzNDIxNzI5IEw0Mi40NzQyMjY4MDQxMjM3MSwtNi4zMzEyODA3MjI1ODkwNzQgTDQzLjQzMjk4OTY5MDcyMTY1LC01Ljg3NTMzNDExMTQxODg5MSBMNDQuMzkxNzUyNTc3MzE5NTg2LC01LjMzMjgxODgyMTU2MjgzMyBMNDUuMzUwNTE1NDYzOTE3NTI1LC00LjcyOTM5ODAyMDA3NzM5OCBMNDYuMzA5Mjc4MzUwNTE1NDYsLTQuMDkzNDI2MDc0NTI0MzI4IEw0Ny4yNjgwNDEyMzcxMTM0LC0zLjQ1NDAyNzUyMDgwNTEzMiBMNDguMjI2ODA0MTIzNzExMzQsLTIuODM5MjE1MjY5NjczMDE1MyBMNDkuMTg1NTY3MDEwMzA5MjgsLTIuMjc0MTcyNzQ5NDk2MTY0OCBMNTAuMTQ0MzI5ODk2OTA3MjE2LC0xLjc3OTgwNjU5NzM5MTYxMSBMNTEuMTAzMDkyNzgzNTA1MTU0LC0xLjM3MTY1MzI1MjU2OTM1MzQgTDUyLjA2MTg1NTY3MDEwMzA5LC0xLjA1OTE5NTcxNTI0MjQ4OTMgTDUzLjAyMDYxODU1NjcwMTAzLC0wLjg0NTYxNjY5MDIwNjQwOCBMNTMuOTc5MzgxNDQzMjk4OTcsLTAuNzI3OTg1NTk5ODY3MDQxIEw1NC45MzgxNDQzMjk4OTY5MSwtMC42OTc4NDgwMTgzMzAyODk4IEw1NS44OTY5MDcyMTY0OTQ4NDYsLTAuNzQyMTYxMTg5NDAzODMwNiBMNTYuODU1NjcwMTAzMDkyNzg0LC0wLjg0NDQ5ODgwNzM1ODk0MjggTDU3LjgxNDQzMjk4OTY5MDcyLC0wLjk4NjQzMjIzOTgyMjc4MyBMNTguNzczMTk1ODc2Mjg4NjYsLTEuMTQ4OTg2NjQwMTk5MDU0NyBMNTkuNzMxOTU4NzYyODg2NiwtMS4zMTQwNjc1MzU0NDcyNjk1IEw2MC42OTA3MjE2NDk0ODQ1NCwtMS40NjU3NTg4ODYxNzY1NDEgTDYxLjY0OTQ4NDUzNjA4MjQ3NSwtMS41OTE0MDA4NTk3OTI5OTAzIEw2Mi42MDgyNDc0MjI2ODA0MTQsLTEuNjgyMzc2MDYzNTg1NzMgTDYzLjU2NzAxMDMwOTI3ODM1LC0xLjczNDU1MTAyNzE4Nzc4MjYgTDY0LjUyNTc3MzE5NTg3NjMsLTEuNzQ4MzQ0MTgxNDgxNTQzNyBMNjUuNDg0NTM2MDgyNDc0MjIsLTEuNzI4NDIwNTE2ODAxNTQ2MyBMNjYuNDQzMjk4OTY5MDcyMTcsLTEuNjgzMDM4MjEwOTMxODg2MiBMNjcuNDAyMDYxODU1NjcwMSwtMS42MjMwOTg4MDY1NTIyODY3IEw2OC4zNjA4MjQ3NDIyNjgwNSwtMS41NjA5NzU1NDcwODk1OSBMNjkuMzE5NTg3NjI4ODY1OTcsLTEuNTA5MjEzODk4MDQyMzY3NSBMNzAuMjc4MzUwNTE1NDYzOTMsLTEuNDc5MjEwNDI4NzcwNDM2IEw3MS4yMzcxMTM0MDIwNjE4NSwtMS40Nzk5Nzg3NDQ1NDg1MDA5IEw3Mi4xOTU4NzYyODg2NTk3OSwtMS41MTcxMTY3MzA1Nzk4NDMgTDczLjE1NDYzOTE3NTI1NzczLC0xLjU5MjA2NTc0NzQ0NDE1MjQgTDc0LjExMzQwMjA2MTg1NTY3LC0xLjcwMTc0NzIyOTA2NjY1OSBMNzUuMDcyMTY0OTQ4NDUzNiwtMS44Mzg2MjYyNTQ0MjEzMjU3IEw3Ni4wMzA5Mjc4MzUwNTE1NCwtMS45OTEyMTY3NzkyMDMxMjgzIEw3Ni45ODk2OTA3MjE2NDk0OCwtMi4xNDUwMjAxNTI4NTMyNzA2IEw3Ny45NDg0NTM2MDgyNDc0MiwtMi4yODM4MTk2MTk3Mzk0NzY0IEw3OC45MDcyMTY0OTQ4NDUzNiwtMi4zOTEyNTc2OTkyMTQxNTYzIEw3OS44NjU5NzkzODE0NDMzLC0yLjQ1MjUzMzMzOTAzNTE0IEw4MC44MjQ3NDIyNjgwNDEyMywtMi40NTYwNzQ5NTI5NjkyMzQ3IEw4MS43ODM1MDUxNTQ2MzkxNywtMi4zOTUwMTE3ODM3MjcyOTE3IEw4Mi43NDIyNjgwNDEyMzcxMSwtMi4yNjgyNDU1NzUxNzA4MzkgTDgzLjcwMTAzMDkyNzgzNTA1LC0yLjA4MDk3ODY3NTc0MDM4OTQgTDg0LjY1OTc5MzgxNDQzMjk5LC0xLjg0NDU1OTAzODgyMTk0NDIgTDg1LjYxODU1NjcwMTAzMDkzLC0xLjU3NTU3ODYzNDY2ODQ1MyBMODYuNTc3MzE5NTg3NjI4ODYsLTEuMjk0MjM1NDM2MzQ1Njg3IEw4Ny41MzYwODI0NzQyMjY4LC0xLjAyMjA3MjgxNzk0Mjk3ODggTDg4LjQ5NDg0NTM2MDgyNDc0LC0wLjc3OTMxMjg1MzQyMzA1NTUgTDg5LjQ1MzYwODI0NzQyMjY4LC0wLjU4MjA5OTU5NjkzNTA0NzMgTDkwLjQxMjM3MTEzNDAyMDYyLC0wLjQ0MDExNzk2OTM2NjA1MDUgTDkxLjM3MTEzNDAyMDYxODU2LC0wLjM1NTAxMDE5NDAwMTg2MDUgTDkyLjMyOTg5NjkwNzIxNjUsLTAuMzIwMTMwMjc5MjczNjg1OCBMOTMuMjg4NjU5NzkzODE0NDMsLTAuMzIxOTcyNDkwOTA3MTA4OCBMOTQuMjQ3NDIyNjgwNDEyMzcsLTAuMzQzNDAzNTIzNjk3OTg4NCBMOTUuMjA2MTg1NTY3MDEwMzEsLTAuMzY4MzI3MzU4MDE0MDQ1MDQgTDk2LjE2NDk0ODQ1MzYwODI1LC0wLjM4NjY5Mjg5NDY2NjY1ODcgTDk3LjEyMzcxMTM0MDIwNjE5LC0wLjM5NzU5OTkwNjk5MTU4NDkzIEw5OC4wODI0NzQyMjY4MDQxMiwtMC40MDY2MzY5NTEwNTIwMjg3IEw5OS4wNDEyMzcxMTM0MDIwNiwtMC40MTE0MDA3NzYyMjkwODczMyBMMTAwLjAsLTAuMzY2MTM0NjcxODM4MTc0MiIgZmlsbD0idHJhbnNwYXJlbnQiIHN0cm9rZT0iIzAwN2VjNiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPgo8L3N2Zz4=", - "center_color": "#252525" + "center_color": "#252525" + }, + { + "file_name": "style-flat-square.svg", + "left_text": "style", + "right_text": "flat-square", + "style": "flat-square" } ]