1
0
mirror of https://github.com/ryanoasis/nerd-fonts.git synced 2025-07-12 23:37:56 +02:00

CI: Fix codeclimate issues

[why]
Cognitive burden of shorten_style_name() is 13 (allowed 9).

Duplicate code
        if self.use_short_families[1]:
            weights = FontnameTools.short_styles(weights)
            styles = FontnameTools.short_styles(styles)

[how]
I do not really buy the duplicate code issue (but circumvent it anyway).

shorten_style_name() was really hard to grasp, maybe use of a helper
function makes it more readable.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
This commit is contained in:
Fini Jastrow
2023-04-07 23:57:49 +02:00
parent f4515ac301
commit 0558b14525
2 changed files with 28 additions and 19 deletions

View File

@ -84,30 +84,41 @@ class FontnameTools:
return known_names[style_name.lower()]
return style_name
@staticmethod
def find_in_dicts(key, dicts):
"""Find an entry in a list of dicts"""
for d in dicts:
if key in d:
return d[key]
return None
@staticmethod
def shorten_style_name(name):
"""Substitude some known styles to short form"""
name_rest = name
name_pre = ''
for mod in FontnameTools.known_modifiers:
if not name.startswith(mod) or len(name) <= len(mod):
continue
name_pre = FontnameTools.known_modifiers[mod]
name_rest = name[len(mod):]
break
for known_names in [ FontnameTools.known_weights2, FontnameTools.known_widths ]:
if name_rest in known_names:
return name_pre + known_names[name_rest]
if len(name_pre) < 1:
for known_names in [ FontnameTools.known_weights1, FontnameTools.known_slopes ]:
if name_rest in known_names:
return known_names[name_rest]
if name.startswith(mod) and len(name) > len(mod): # Second condition specifically for 'Demi'
name_pre = FontnameTools.known_modifiers[mod]
name_rest = name[len(mod):]
break
subst = FontnameTools.find_in_dicts(name_rest, [ FontnameTools.known_weights2, FontnameTools.known_widths ])
if isinstance(subst, str):
return name_pre + subst
if not len(name_pre):
# The following sets do not allow modifiers
subst = FontnameTools.find_in_dicts(name_rest, [ FontnameTools.known_weights1, FontnameTools.known_slopes ])
if isinstance(subst, str):
return subst
return name
@staticmethod
def short_styles(styles):
"""Shorten all style names in a list"""
return list(map(FontnameTools.shorten_style_name, styles))
def short_styles(lists):
"""Shorten all style names in a list or a list of lists"""
if not len(lists) or not isinstance(lists[0], list):
return list(map(FontnameTools.shorten_style_name, lists))
return [ list(map(FontnameTools.shorten_style_name, styles)) for styles in lists ]
@staticmethod
def make_oblique_style(weights, styles):
"""Move "Oblique" from weights to styles for font naming purposes"""