Improved battery segment:
- Ignore `steps` if gamify is False. - Add `full_heart` and `empty_heart` keywords. - Document `format` keyword. - Replace `draw_soft_divider` with `draw_inner_divider`.
This commit is contained in:
parent
cce6d26670
commit
66d98e7def
|
@ -1,6 +1,6 @@
|
||||||
# vim:fileencoding=utf-8:noet
|
# vim:fileencoding=utf-8:noet
|
||||||
|
|
||||||
from __future__ import unicode_literals, absolute_import
|
from __future__ import unicode_literals, absolute_import, division
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -1090,13 +1090,21 @@ else:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
def battery(pl, format='{batt:3.0%}', steps=5, gamify=False):
|
def battery(pl, format='{capacity:3.0%}', steps=5, gamify=False, full_heart='♥', empty_heart='♥'):
|
||||||
'''Return battery charge status.
|
'''Return battery charge status.
|
||||||
|
|
||||||
|
:param str format:
|
||||||
|
Percent format in case gamify is False.
|
||||||
:param int steps:
|
:param int steps:
|
||||||
number of discrete steps to show between 0% and 100% capacity
|
Number of discrete steps to show between 0% and 100% capacity if gamify
|
||||||
|
is True.
|
||||||
:param bool gamify:
|
:param bool gamify:
|
||||||
measure in hearts (♥) instead of percentages
|
Measure in hearts (♥) instead of percentages.
|
||||||
|
:param str full_heart:
|
||||||
|
Heart displayed for “full” part of battery.
|
||||||
|
:param str empty_heart:
|
||||||
|
Heart displayed for “used” part of battery. It is also displayed using
|
||||||
|
another gradient level, so it is OK for it to be the same as full_heart.
|
||||||
|
|
||||||
Highlight groups used: ``battery_gradient`` (gradient), ``battery``.
|
Highlight groups used: ``battery_gradient`` (gradient), ``battery``.
|
||||||
'''
|
'''
|
||||||
|
@ -1106,27 +1114,25 @@ def battery(pl, format='{batt:3.0%}', steps=5, gamify=False):
|
||||||
pl.warn('Unable to get battery capacity.')
|
pl.warn('Unable to get battery capacity.')
|
||||||
return None
|
return None
|
||||||
ret = []
|
ret = []
|
||||||
|
if gamify:
|
||||||
denom = int(steps)
|
denom = int(steps)
|
||||||
numer = int(denom * capacity / 100)
|
numer = int(denom * capacity / 100)
|
||||||
full_heart = '♥'
|
|
||||||
if gamify:
|
|
||||||
ret.append({
|
ret.append({
|
||||||
'contents': full_heart * numer,
|
'contents': full_heart * numer,
|
||||||
'draw_soft_divider': False,
|
'draw_inner_divider': False,
|
||||||
'highlight_group': ['battery_gradient', 'battery'],
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
'gradient_level': 99
|
'gradient_level': 99,
|
||||||
})
|
})
|
||||||
ret.append({
|
ret.append({
|
||||||
'contents': full_heart * (denom - numer),
|
'contents': empty_heart * (denom - numer),
|
||||||
'draw_soft_divider': False,
|
'draw_inner_divider': False,
|
||||||
'highlight_group': ['battery_gradient', 'battery'],
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
'gradient_level': 1
|
'gradient_level': 1,
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
batt = numer / float(denom)
|
|
||||||
ret.append({
|
ret.append({
|
||||||
'contents': format.format(batt=batt),
|
'contents': format.format(capacity=(capacity / 100.0)),
|
||||||
'highlight_group': ['battery_gradient', 'battery'],
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
'gradient_level': batt * 100
|
'gradient_level': capacity,
|
||||||
})
|
})
|
||||||
return ret
|
return ret
|
||||||
|
|
|
@ -391,30 +391,44 @@ class TestCommon(TestCase):
|
||||||
|
|
||||||
with replace_attr(common, '_get_capacity', _get_capacity):
|
with replace_attr(common, '_get_capacity', _get_capacity):
|
||||||
self.assertEqual(common.battery(pl=pl), [{
|
self.assertEqual(common.battery(pl=pl), [{
|
||||||
'contents': '80%',
|
'contents': '86%',
|
||||||
'highlight_group': ['battery_gradient', 'battery'],
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
'gradient_level': 80.0
|
'gradient_level': 86
|
||||||
}])
|
}])
|
||||||
self.assertEqual(common.battery(pl=pl, format='{batt:.2f}'), [{
|
self.assertEqual(common.battery(pl=pl, format='{capacity:.2f}'), [{
|
||||||
'contents': '0.80',
|
'contents': '0.86',
|
||||||
'highlight_group': ['battery_gradient', 'battery'],
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
'gradient_level': 80.0
|
'gradient_level': 86
|
||||||
}])
|
}])
|
||||||
self.assertEqual(common.battery(pl=pl, steps=7), [{
|
self.assertEqual(common.battery(pl=pl, steps=7), [{
|
||||||
'contents': '86%',
|
'contents': '86%',
|
||||||
'highlight_group': ['battery_gradient', 'battery'],
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
'gradient_level': 85.71428571428571
|
'gradient_level': 86
|
||||||
}])
|
}])
|
||||||
self.assertEqual(common.battery(pl=pl, gamify=True), [
|
self.assertEqual(common.battery(pl=pl, gamify=True), [
|
||||||
{
|
{
|
||||||
'contents': '♥♥♥♥',
|
'contents': '♥♥♥♥',
|
||||||
'draw_soft_divider': False,
|
'draw_inner_divider': False,
|
||||||
'highlight_group': ['battery_gradient', 'battery'],
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
'gradient_level': 99
|
'gradient_level': 99
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'contents': '♥',
|
'contents': '♥',
|
||||||
'draw_soft_divider': False,
|
'draw_inner_divider': False,
|
||||||
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
|
'gradient_level': 1
|
||||||
|
}
|
||||||
|
])
|
||||||
|
self.assertEqual(common.battery(pl=pl, gamify=True, full_heart='+', empty_heart='-', steps='10'), [
|
||||||
|
{
|
||||||
|
'contents': '++++++++',
|
||||||
|
'draw_inner_divider': False,
|
||||||
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
|
'gradient_level': 99
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'contents': '--',
|
||||||
|
'draw_inner_divider': False,
|
||||||
'highlight_group': ['battery_gradient', 'battery'],
|
'highlight_group': ['battery_gradient', 'battery'],
|
||||||
'gradient_level': 1
|
'gradient_level': 1
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue