guix-commits
[Top][All Lists]
Advanced

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

14/21: gurses: Add predicate to test if a complex char is blank.


From: John Darrington
Subject: 14/21: gurses: Add predicate to test if a complex char is blank.
Date: Sun, 29 Jan 2017 07:35:02 +0000 (UTC)

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

commit 5944670c47acf5dcde87bad1097fe047075615a9
Author: John Darrington <address@hidden>
Date:   Fri Jan 27 08:59:15 2017 +0100

    gurses: Add predicate to test if a complex char is blank.
    
    * gurses/stexi.scm (xchar-blank?): New procedure.
---
 gurses/stexi.scm |   31 +++++++++++++++++--------------
 1 file changed, 17 insertions(+), 14 deletions(-)

diff --git a/gurses/stexi.scm b/gurses/stexi.scm
index 2f04e7e..6174d73 100644
--- a/gurses/stexi.scm
+++ b/gurses/stexi.scm
@@ -102,9 +102,14 @@ described by the stexi STXI"
                       (parse-fragment (car in) acc normal))))))))
 
 
+
 (define (xchar->char ch)
   (car (xchar-chars ch)))
 
+(define (xchar-blank? ch)
+  "Return #f if ch is not a blank character"
+  (char-set-contains? char-set:blank (xchar->char ch)))
+
 (define (offset-to-end-of-word ccs)
   "Return the number of xchars until the end of the current word."
 
@@ -113,14 +118,14 @@ described by the stexi STXI"
      cs
      ('() dist)
      (((? xchar? first) . rest)
-      (if (char-set-contains? char-set:blank (xchar->char first))
+      (if (xchar-blank? first)
           dist
           (offset-to-end-of-word' rest (1+ dist))))))
 
   (offset-to-end-of-word' ccs 0))
 
 (define (remove-leading-whitespace cs)
-  (if (char-set-contains? char-set:blank (xchar->char (car cs)))
+  (if (xchar-blank? (car cs))
       (cdr cs)
       cs))
 
@@ -163,11 +168,10 @@ string of length LEN"
               (prev-white #t))
       (if (null? in)
          n
-         (let ((white (char-set-contains? char-set:blank
-                                          (xchar->char (car in)))))
-           (loop (cdr in) (1+ x) (if (and prev-white (not white))
-                                     (1+ n)
-                                     n) white)))))
+         (let ((white (xchar-blank? (car in))))
+            (loop (cdr in) (1+ x) (if (and prev-white (not white))
+                                      (1+ n)
+                                      n) white)))))
 
   (let* ((underflow (- len (length str)))
         (word-count (count-words str))
@@ -192,16 +196,15 @@ string of length LEN"
                          (prev-white #t))
                 (if (null? in)
                     (reverse out)
-                    (let* ((white (char-set-contains? char-set:blank
-                                                      (xchar->char (car in))))
+                    (let* ((white (xchar-blank? (car in)))
                            (end-of-word (and white (not prev-white)))
                            (words-processed (if end-of-word (1+ words) words))
                            (spaces-inserted (if end-of-word
-                                                (truncate (- (*
-                                                              (/ underflow 
inter-word-space-count)
-                                                              words-processed)
-                                                             spaces))
-                                                0)))
+                                           (truncate (- (*
+                                                         (/ underflow 
inter-word-space-count)
+                                                         words-processed)
+                                                        spaces))
+                                           0)))
                       (loop (cdr in)
                             ;; FIXME: Use a more intelligent algorithm.
                             ;; (prefer spaces at sentence endings for example)



reply via email to

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