guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

149/197: gurses: Add new procedure "word-endings".


From: Danny Milosavljevic
Subject: 149/197: gurses: Add new procedure "word-endings".
Date: Mon, 3 Jul 2017 20:37:16 -0400 (EDT)

dannym pushed a commit to branch wip-installer-2
in repository guix.

commit 441aff6bceabe5798dbfac1669dc2d7bf635e0c5
Author: John Darrington <address@hidden>
Date:   Fri Jan 27 22:04:55 2017 +0100

    gurses: Add new procedure "word-endings".
    
    * gurses/stexi.scm (word-endings): New procedure.
---
 gurses/stexi.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gurses/stexi.scm b/gurses/stexi.scm
index e85ed82..87a7572 100644
--- a/gurses/stexi.scm
+++ b/gurses/stexi.scm
@@ -158,6 +158,33 @@ cdr is the remainder"
   (reverse (paragraph-format text line-length )))
 
 
+(define-public (word-endings str)
+  "Return a list of all the indicies of all the word endings in STR.  The list 
is sorted in order of prefered padding location."
+  (let loop ((in str)
+             (x 0)
+             (n '())
+             (prev-white #t)
+             (prev-char #f)
+             )
+    (match
+     in
+     (() (map-in-order
+          (lambda (x) (car x))
+          (sort n (lambda (x y)
+                    (if (eqv? (cadr x) (cadr y))
+                        (> (caddr x) (caddr y))
+                        (> (cadr x) (cadr y)))))))
+     ((first . rest)
+      (let ((white (xchar-blank? first)))
+        (loop rest (1+ x) (if (and (not prev-white)  white)
+                              (cons (list x
+                                          (case (xchar->char prev-char)
+                                            ((#\.) 3)
+                                            ((#\,) 2)
+                                            (else 1))
+                                          (random 1.0)) n)
+                              n) white first))))))
+
 (define (pad-complex-string str len)
   "Return a complex string based on STR but with interword padding to make the
 string of length LEN"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]