@@ -17,10 +17,13 @@ (sorted (sort name-time (lambda (a b)(> (cdr a)(cdr b))))) (last-name (if (null? sorted) #f (caar sorted)))) last-name)))) + +(define (str-first-char->number str) + (char->integer (string-ref str 0))) ;; example of how to set up and write target mappers ;; (hash-table-set! *target-mappers* 'prefix-contour @@ -32,19 +35,33 @@ (conc area "/" contour "/" target))) (hash-table-set! *runname-mappers* 'corporate-ww (lambda (target run-name area area-path reason contour mode-patt) + (print "corporate-ww called with: target=" target " run-name=" run-name " area=" area " area-path=" area-path " reason=" reason " contour=" contour " mode-patt=" mode-patt) (let* ((last-name (get-last-runname area-path target)) - (last-letter (if (string? last-name) - (let ((len (string-length last-name))) - (substring last-name (- len 1) len)) - "a")) - (next-letter (list->string - (list - (integer->char - (+ (char->integer (string-ref last-letter 0)) 1)))))) ;; surely there is an easier way? + (last-letter (let* ((ch (if (string? last-name) + (let ((len (string-length last-name))) + (substring last-name (- len 1) len)) + "a")) + (chnum (str-first-char->number ch)) + (a (str-first-char->number "a")) + (z (str-first-char->number "z"))) + (if (and (>= chnum a)(<= chnum z)) + chnum + #f))) + (next-letter (if last-letter + (list->string + (list + (integer->char + (+ last-letter 1)))) ;; surely there is an easier way? + "a"))) ;; (print "last-name: " last-name " last-letter: " last-letter " next-letter: " next-letter) (conc (seconds->wwdate (current-seconds)) next-letter)))) + +(hash-table-set! *runname-mappers* + 'auto + (lambda (target run-name area area-path reason contour mode-patt) + "auto-eh")) (print "Got here!")