made the number-prefixing a little easier to read code-wise

main
m455 2019-06-30 17:07:33 -04:00
parent 9adb25c4a2
commit 67a1ebb988
1 changed files with 34 additions and 33 deletions

View File

@ -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)