From 67a1ebb9880057131408d082b6b3981d3e962ac1 Mon Sep 17 00:00:00 2001 From: m455 Date: Sun, 30 Jun 2019 17:07:33 -0400 Subject: [PATCH] made the number-prefixing a little easier to read code-wise --- util.rkt | 67 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/util.rkt b/util.rkt index 765a43f..c67d0fb 100644 --- a/util.rkt +++ b/util.rkt @@ -38,9 +38,9 @@ (list:empty? (file->string-list lst))) (define (get-removed-item lst args) - ;; Subtract one from what the user chose, because they are - ;; are actually viewing the list numbers as human numbers, - ;; so what they see is actual-number +1 + ;; Subtract one from what the user chose, because what they are actually + ;; viewing is a list starting from "1" rather than "0". Under the hood, + ;; the real list starts at 0. (list-ref (file->string-list lst) (sub1 (string->number args)))) (define (surround-item-in-quotation-marks args) @@ -50,21 +50,22 @@ (string-append lst ". ")) (define (prefix-item-with-number lst) + ;; Take the list made in the first (map), which is + ;; '(1 2 3 ...), and append that to each item in a list (map string-append ;; Note: compose starts from the last element in it's - ;; list, so that would be add1 here - (map (compose prefix-item-with-period number->string add1) - (list:range (length lst))) + ;; list. In this case, it starts at (number->string). + (map (compose1 prefix-item-with-period number->string) + (list:range 1 (add1 (length lst)))) lst)) (define (display-prettified-program-file) - (display - (string:string-join - (prefix-item-with-number (file->string-list config:path-to-file)) - "\n" - #:after-last "\n"))) + (display (string:string-join + (prefix-item-with-number (file->string-list config:path-to-file)) + "\n" + #:after-last "\n"))) -;; This one is pretty wild +;; Don't ask (define (append-item-to-end args lst) (reverse (cons args (reverse (file->string-list lst))))) @@ -80,45 +81,45 @@ (define (show-list-from-program-file) (cond [(and - (check-for-program-directory) - (check-for-program-file)) + (check-for-program-directory) + (check-for-program-file)) (if - (list-empty? config:path-to-file) - (display-hash-ref messages:messages 'empty-todo-list) - (display-prettified-program-file))] + (list-empty? config:path-to-file) + (display-hash-ref messages:messages 'empty-todo-list) + (display-prettified-program-file))] [else - (display-hash-ref messages:messages 'file-not-found) - (display-hash-ref messages:messages 'try-init)])) + (display-hash-ref messages:messages 'file-not-found) + (display-hash-ref messages:messages 'try-init)])) (define (write-item-to-program-file args) ;; Add an item to the end of a list and write to a file (let ([new-list (append-item-to-end args config:path-to-file)]) (file:display-to-file - (string:string-join new-list "\n") config:path-to-file - #:mode 'text - #:exists 'truncate) + (string:string-join new-list "\n") config:path-to-file + #:mode 'text + #:exists 'truncate) ;; After writing to the file, tell the user what was written (display-item-added args))) (define (add-item-to-list args) (if (and (check-for-program-directory) (check-for-program-file)) - ;; The cdr here prevents the first command line argument ("add") - ;; from being added to the file - (write-item-to-program-file (string:string-join (cdr (vector->list args)))) - ;; Else - (begin - (display-hash-ref messages:messages 'file-not-found) - (display-hash-ref messages:messages 'try-init)))) + ;; The cdr here prevents the first command line argument ("add") + ;; from being added to the file + (write-item-to-program-file (string:string-join (cdr (vector->list args)))) + ;; Else + (begin + (display-hash-ref messages:messages 'file-not-found) + (display-hash-ref messages:messages 'try-init)))) (define (remove-item-from-program-file args) (let* ([removed-item (get-removed-item config:path-to-file args)] [new-list (remove removed-item (file->string-list config:path-to-file))]) (file:display-to-file - (string:string-join new-list "\n") - config:path-to-file - #:mode 'text - #:exists 'truncate) + (string:string-join new-list "\n") + config:path-to-file + #:mode 'text + #:exists 'truncate) (display-item-removed removed-item))) (define (remove-item-from-list args)