#lang racket/base
(require racket/contract/base
syntax/readerr
"errors-and-warnings.rkt")
(provide/contract
[parser-error
(->* (port?) () #:rest list? any)]
[ssax:warn
(->* (port?) () #:rest list? any)])
(define (parser-error p . args)
(let-values ([(line col pos) (port-next-location p)])
(raise-read-error (format "SXML parser error: ~a" (args->display-string args))
(object-name p)
line col pos #f)))
(define (args->display-string args)
(apply string-append (map (lambda (x) (format "~a" x)) args)))
(define (ssax:warn p . args)
(sxml:warn 'ssax:warn
"warning at position ~a: ~a"
(file-position p)
(args->display-string args)))