chez-uri 0.8.0

An RFC 3986 URI parser for Chez Scheme, in portable R6RS

Parse, validate, resolve and normalize URIs as RFC 3986 defines them. (uri easy) takes a URI as a string and answers with strings: the host, the port as a number, decoded path segments and query pairs.

Underneath is a byte-level parser for servers: it reads bytevectors, accepts input in any number of chunks, and reuses its memory from one request to the next.

$ akku update
$ akku install chez-uri
$ .akku/env
Authors

Kiyomi Computation Systems LLC

License

BSD-3-Clause

Dependencies

Source code

https://github.com/Kiyomi-Computation-Systems/uriparse.git git
94162999e7b91568a0925bd95a9d5ff2b6353476
Tag: v0.8.0

Package contents

  • (generated uri-scanner) R6
    • → uri-scanner-machine
    • ← (rnrs) R6
    • ← (byte-machine runtime)
  • (uri charset) R6
    • → uri-charset-error-codes uri-charset-error-code? validate-component
    • ← (rnrs) R6
    • ← (uri percent)
    • ← (uri range)
  • (uri collect) R6
    • → make-uri-collector uri-collect-feed! uri-collect-finish! uri-collector-reset! uri-parse uri-parse-result? uri-parse-ok? uri-parse-components uri-parse-error-code uri-parse-error-offset uri-parse-component-offset uri-parse-validate uri-parse-result-validate uri-parse-authority-form uri-parse-authority-form-validate uri-authority-form-error-codes uri-authority-form-error-code?
    • ← (rnrs) R6
    • ← (byte-machine runtime)
    • ← (generated uri-scanner)
    • ← (uri components)
    • ← (uri vocabulary)
    • ← (uri charset)
    • ← (uri host)
  • (uri components) R6
    • → make-uri-components uri-components? uri-components-scheme uri-components-authority uri-components-path uri-components-query uri-components-fragment uri-component-absent? uri-component-present? uri-component-empty? uri-component-present-nonempty? uri-components=? uri-components-error? uri-components-error-detail
    • ← (rnrs) R6
  • (uri easy) R6
    • → string->uri string->uri-reference string->relative-ref uri-string? uri? uri-scheme uri-authority uri-userinfo uri-host uri-port uri-path uri-query uri-fragment uri-path-segments uri-query-pairs uri-form-pairs uri-decode uri-encode uri->string uri-resolve uri-normalize uri=? uri->components components->uri uri-error? uri-error-reason uri-error-offset uri-error-input uri-error-reasons
    • ← (rnrs) R6
    • ← (uri components)
    • ← (uri collect)
    • ← (uri host)
    • ← (uri normalize)
    • ← (uri percent)
    • ← (uri query)
    • ← (uri path)
    • ← (uri resolve)
    • ← (uri recompose)
  • (uri grammar) R6
    • → make-uri-scanner-machine
    • ← (rnrs) R6
    • ← (byte-machine graph)
    • ← (uri vocabulary)
  • (uri host) R6
    • → uri-host-error-codes uri-host-error-code? validate-authority authority-host-span
    • ← (rnrs) R6
    • ← (uri percent)
    • ← (uri range)
  • (uri normalize) R6
    • → normalize-scheme pct-normalize normalize-components
    • ← (rnrs) R6
    • ← (uri percent)
    • ← (uri components)
    • ← (uri host)
  • (uri path) R6
    • → remove-dot-segments remove-dot-segments-trace merge
    • ← (rnrs) R6
  • (uri percent) R6
    • → pct-decode pct-encode unreserved-byte? hex-digit-value nibble->hex-digit
    • ← (rnrs) R6
  • (uri query) R6
    • → query-pairs form-pairs
    • ← (rnrs) R6
    • ← (uri percent)
  • (uri range) R6
    • → check-range
    • ← (rnrs) R6
  • (uri recompose) R6
    • → recompose
    • ← (rnrs) R6
    • ← (uri components)
  • (uri resolve) R6
    • → resolve-components
    • ← (rnrs) R6
    • ← (uri components)
    • ← (uri path)
  • (uri vocabulary) R6
    • → uri-mode-table uri-mode-names uri-mode-value uri-mode-width uri-span-names uri-span-name? uri-span-data-callback uri-span-complete-callback uri-event-callback-names uri-callback-names uri-callback-name? uri-error-codes uri-error-code? uri-vocabulary-error? uri-vocabulary-error-detail
    • ← (rnrs) R6
  • (uri test harness) R6 Chez Scheme Test
    • → harness-begin harness-finish harness-summary harness-exit-status harness-status-pass harness-status-failed harness-status-harness-error harness-status-provenance harness-empty-selection-error harness-empty-selection-diagnosis harness-group harness-case check check-equal check-not-equal check-fail check-raises with-cleanup harness-probe harness-set-filter! probe-cases probe-failed-cases probe-checks probe-failures probe-errors probe-skipped probe-cleanup-failures probe-raised? probe-failure-records failure-record-id failure-record-what failure-record-detail harness-string-contains? harness-join harness-split harness-take harness-member? harness-failure-context harness-normalize-filter harness-counters harness-restore-counters! harness-capture-state harness-fingerprint-bytevector harness-fingerprint-combine harness-fingerprint->string harness-fingerprint-file harness-bytes->string harness-provenance-diagnosis harness-verify-provenance! harness-provenance-reachability-diagnosis adapter-runtime-name adapter-runtime-version adapter-machine-type adapter-os adapter-architecture adapter-execution-mode adapter-environment-variable adapter-exit adapter-value->string adapter-describe-condition adapter-file-bytes adapter-run-command adapter-bytes-allocated adapter-real-time adapter-flush-output adapter-machine-type->os adapter-machine-type->architecture modulo quotient remainder
    • ← (rnrs) R6
    • ← (uri test fingerprint)
    • ← (rnrs r5rs) R6
    • ← (chezscheme) Built-in
  • (uri test abnf-oracle) R6 Test
    • → oracle-recognize? oracle-recognize-string? abnf-oracle-error? abnf-oracle-error-detail
    • ← (rnrs) R6
    • ← (uri test charset-oracle)
    • ← (uri test host-oracle)
  • (uri test api-reference) R6 Test
    • → library-datum->api markdown->reference-analysis reference-analysis? reference-analysis-modules reference-analysis-entries reference-analysis-problems reference-entry? reference-entry-name reference-entry-kind reference-entry-modules reference-entry-body? reference-entry-availability-count reference-diagnostics
    • ← (rnrs) R6
  • (uri test charset-oracle) R6 Test
    • → oracle-alpha? oracle-digit? oracle-hexdig? oracle-unreserved? oracle-sub-delim? oracle-pchar-literal? oracle-component-literal? oracle-scan negative-load negative-parse nv? nv-mode nv-input nv-component nv-code nv-offset nv-note negative-cross-check charset-oracle-error? charset-oracle-error-detail
    • ← (rnrs) R6
  • (uri test corpus) R6 Test
    • → corpus-load-resolution corpus-parse-resolution resolution-base resolution-vectors resolution-ref rv? rv-id rv-section rv-reference rv-target corpus-load-dot-segments corpus-parse-dot-segments ds? ds-trace ds-step ds-output ds-input corpus-load-examples corpus-parse-examples corpus-load-adversarial corpus-parse-adversarial av? av-mode av-input av-expect av-note compare-target corpus-error? corpus-error-detail
    • ← (rnrs) R6
  • (uri test fingerprint) R6 Test
    • → harness-fingerprint-bytevector harness-fingerprint-file harness-fingerprint-combine harness-fingerprint->string
    • ← (rnrs) R6
    • ← (rnrs r5rs) R6
  • (uri test harness) R6 Chez Scheme Test
    • → harness-begin harness-finish harness-summary harness-exit-status harness-status-pass harness-status-failed harness-status-harness-error harness-status-provenance harness-empty-selection-error harness-empty-selection-diagnosis harness-group harness-case check check-equal check-not-equal check-fail check-raises with-cleanup harness-probe harness-set-filter! probe-cases probe-failed-cases probe-checks probe-failures probe-errors probe-skipped probe-cleanup-failures probe-raised? probe-failure-records failure-record-id failure-record-what failure-record-detail harness-string-contains? harness-join harness-split harness-take harness-member? harness-failure-context harness-normalize-filter harness-counters harness-restore-counters! harness-capture-state harness-fingerprint-bytevector harness-fingerprint-combine harness-fingerprint->string harness-fingerprint-file harness-bytes->string harness-provenance-diagnosis harness-verify-provenance! harness-provenance-reachability-diagnosis adapter-runtime-name adapter-runtime-version adapter-machine-type adapter-os adapter-architecture adapter-execution-mode adapter-environment-variable adapter-exit adapter-value->string adapter-describe-condition adapter-file-bytes adapter-run-command adapter-bytes-allocated adapter-real-time adapter-flush-output adapter-machine-type->os adapter-machine-type->architecture modulo quotient remainder
    • ← (rnrs) R6
    • ← (uri test fingerprint)
    • ← (rnrs r5rs) R6
    • ← (chezscheme) Built-in
  • (uri test host-oracle) R6 Test
    • → oracle-alpha? oracle-digit? oracle-hexdig? oracle-unreserved? oracle-sub-delim? oracle-userinfo-literal? oracle-reg-name-literal? oracle-scan-authority authority-of negative-load negative-parse nv? nv-mode nv-input nv-component nv-code nv-offset nv-note negative-cross-check host-oracle-error? host-oracle-error-detail
    • ← (rnrs) R6
  • (uri test prng) R6 Test
    • → make-prng prng-next
    • ← (rnrs) R6
  • (uri test query-oracle) R6 Test
    • → oracle-query-pairs oracle-form-pairs
    • ← (rnrs) R6
  • (uri test raised) R6 Test
    • → raised check-raised check-refuses
    • ← (rnrs) R6
    • ← (uri test harness)
  • (uri test ranged) R6 Test
    • → results-of raised-by? least-allocation for-each-placement
    • ← (rnrs) R6
    • ← (uri test harness)
  • (uri test ratchet) R6 Test
    • → ratchet-parse ratchet-load ratchet-entries ratchet-entry? ratchet-entry-id ratchet-entry-status ratchet-status ratchet-violations ratchet-statuses ratchet-error? ratchet-error-detail
    • ← (rnrs) R6

Version history

  • 2026-10-16 ~ 0.8.0