OCaml library for Crockford's Base32

Prepare for opam release

- Add Crockford Base32 spec link to OCaml documentation
- Add source and documentation fields to dune-project
- Fix OCaml doc references to Random module
- Update .gitignore for common build artifacts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

+14 -3
+3
.gitignore
··· 1 1 _build 2 2 .claude 3 + *.install 4 + .merlin 5 + .DS_Store
+1
crockford.opam
··· 7 7 authors: ["Anil Madhavapeddy"] 8 8 license: "MIT" 9 9 homepage: "https://tangled.org/@anil.recoil.org/ocaml-crockford" 10 + doc: "https://tangled.org/@anil.recoil.org/ocaml-crockford" 10 11 bug-reports: "https://tangled.org/@anil.recoil.org/ocaml-crockford/issues" 11 12 depends: [ 12 13 "dune" {>= "3.18"}
+2
dune-project
··· 10 10 (maintainers "Anil Madhavapeddy <anil@recoil.org>") 11 11 (bug_reports "https://tangled.org/@anil.recoil.org/ocaml-crockford/issues") 12 12 (maintenance_intent "(latest)") 13 + (source (uri "git+https://tangled.sh/@anil.recoil.org/ocaml-crockford")) 14 + (documentation "https://tangled.org/@anil.recoil.org/ocaml-crockford") 13 15 14 16 (package 15 17 (name crockford)
+8 -3
lib/crockford.mli
··· 10 10 Crockford Base32 is a base-32 encoding scheme designed by Douglas Crockford 11 11 for human-readable identifiers. It is particularly well-suited for use in URLs, 12 12 user-facing identifiers, and systems where humans need to transcribe or 13 - communicate encoded values. It features: 13 + communicate encoded values. 14 + 15 + See the {{:https://www.crockford.com/base32.html}Crockford Base32 Specification} 16 + for complete details of the encoding scheme. 17 + 18 + It features: 14 19 15 20 {ul 16 21 {- {b Human-optimized alphabet}: Uses 32 characters (0-9, A-Z) but excludes ··· 102 107 for use as database keys, URL-safe identifiers, or user-visible reference numbers. 103 108 104 109 When using the default [Random.float] generator, you must initialize the 105 - random number generator with {!Random.self_init} before calling this function. 110 + random number generator with [Random.self_init] before calling this function. 106 111 107 112 @param length The target length of the generated string. When [checksum:false], 108 113 this is the exact output length. When [checksum:true], this is the ··· 117 122 Default: [false]. 118 123 @param rng Custom random number generator function that takes a float bound and 119 124 returns a random float in the range [0,bound]. This allows for 120 - deterministic testing or custom entropy sources. Defaults to using {!Random.float}. 125 + deterministic testing or custom entropy sources. Defaults to using [Random.float]. 121 126 @raise Decode_error with [Invalid_length] if [checksum] is [true] and [length < 3] 122 127 as at least 1 character is needed for the ID and 2 for the checksum. *) 123 128