diff options
Diffstat (limited to 'lulua/report.py')
| -rw-r--r-- | lulua/report.py | 18 | 
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: | 
