Files
kucherenko__jscpd/fixtures/scheme/file2.scm
apk 64e471e2b0 test: raise coverage to 96%+ on @jscpd/finder and 98%+ on apps/jscpd
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
2026-05-09 15:00:38 +02:00

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