Sha256: 8f7ca62908a0c45723fd158adce4974c6caed5e694a84c37d47fef9a848b9b98
Contents?: true
Size: 990 Bytes
Versions: 396
Compression:
Stored size: 990 Bytes
Contents
(defpackage #:phone (:use #:common-lisp) (:export #:numbers #:area-code #:pretty-print)) (in-package #:phone) (defun is-digit-p (c) (char<= #\0 c #\9)) (defun strip-non-digits (string) (remove-if-not #'is-digit-p string)) (defun trim-leading-one (string) (if (and (= 11 (length string)) (equal #\1 (char string 0))) (subseq string 1) string)) (defun ensure-valid (string) (if (= 10 (length string)) string "0000000000")) (defun numbers (number-string) (reduce #'(lambda (s fn) (funcall fn s)) '(strip-non-digits trim-leading-one ensure-valid) :initial-value number-string)) (defun area-code (number-string) (subseq (numbers number-string) 0 3)) (defun exchange (number-string) (subseq (numbers number-string) 3 6)) (defun subscriber (number-string) (subseq (numbers number-string) 6 10)) (defun pretty-print (number-string) (format nil "(~D) ~D-~D" (area-code number-string) (exchange number-string) (subscriber number-string)))
Version data entries
396 entries across 396 versions & 1 rubygems