summaryrefslogtreecommitdiff
path: root/lulua/report.py
diff options
context:
space:
mode:
Diffstat (limited to 'lulua/report.py')
-rw-r--r--lulua/report.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/lulua/report.py b/lulua/report.py
index 06bb724..8a50681 100644
--- a/lulua/report.py
+++ b/lulua/report.py
@@ -18,7 +18,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-import sys, argparse, logging, pickle
+import sys, argparse, logging, pickle, math
from gettext import GNUTranslations, NullTranslations
from decimal import Decimal
@@ -54,6 +54,21 @@ def arabnum (s):
m = {'0': '٠', '1': '١', '2': '٢', '3': '٣', '4': '٤', '5': '٥', '6': '٦', '7': '٧', '8': '٨', '9': '٩', ',': '٬', '.': '٫'}
return ''.join (map (lambda x: m.get (x, x), s))
+def clamp (v, lower, upper):
+ return max (min (v, upper), lower)
+
+def blend (v, a, b):
+ v = clamp (v, 0, 1)
+ return (b-a)*v+a
+
+def blendn (v, *l):
+ assert 0 <= v <= 1
+ n = len (l)
+ step = 1/(n-1)
+ i = min (int (math.floor (v/step)), n-2)
+ stretchedv = (v-i*step)/step
+ return [blend (stretchedv, x, y) for x, y in zip (l[i], l[i+1])]
+
def render ():
parser = argparse.ArgumentParser(description='Create lulua report.')
parser.add_argument('-c', '--corpus', nargs='+', metavar='FILE', help='Corpus metadata files')
@@ -67,6 +82,7 @@ def render ():
env.filters['approx'] = approx
env.filters['numspace'] = numspace
env.filters['arabnum'] = arabnum
+ env.filters['blendn'] = blendn
corpus = []
for x in args.corpus: