mirror of
https://github.com/kucherenko/jscpd.git
synced 2026-09-19 08:11:03 +08:00
64e471e2b0
Adds 92 new tests (178 → 270 total) with zero source-file modifications: - packages/finder: 13 new test files covering all reporters, subscribers, validators, hooks, utils, options, cloneFound, getFilesToDetect, and InFilesDetector; shared buildClone() factory helper - apps/jscpd: 3 new test files (options-unit, print, store) plus extensions to formats, modes, and options integration tests - vitest.config.ts added to both packages to restrict coverage.include to src/** only, eliminating bin/ and prism.js noise - Fixes 3 tokenizer bugs (trailing space in format lookup, tokenization edge cases) uncovered by the new format fixture suite - Adds fixture files for 40+ language formats to support formats.test.ts
36 lines
838 B
Scheme
36 lines
838 B
Scheme
;;; Common Scheme utility functions
|
|
|
|
(define (validate-input value)
|
|
(cond
|
|
((not (string? value))
|
|
(error "Input must be a string"))
|
|
((= (string-length value) 0)
|
|
(error "Input cannot be empty"))
|
|
((> (string-length value) 255)
|
|
(error "Input exceeds maximum length"))
|
|
(else value)))
|
|
|
|
(define (parse-int str)
|
|
(let ((n (string->number str)))
|
|
(and n (exact? n) n)))
|
|
|
|
(define (list-sum lst)
|
|
(fold-left + 0 lst))
|
|
|
|
(define (list-map fn lst)
|
|
(if (null? lst)
|
|
'()
|
|
(cons (fn (car lst))
|
|
(list-map fn (cdr lst)))))
|
|
|
|
(define (list-filter pred lst)
|
|
(cond
|
|
((null? lst) '())
|
|
((pred (car lst))
|
|
(cons (car lst) (list-filter pred (cdr lst))))
|
|
(else (list-filter pred (cdr lst)))))
|
|
|
|
;; File-specific: find minimum
|
|
(define (list-min lst)
|
|
(fold-left min (car lst) (cdr lst)))
|