Skip to content
@go-ruby-strscan

go-ruby-strscan

go-ruby-strscan

go-ruby-strscan

Ruby's StringScanner in pure Go — MRI-compatible, no cgo.

🌐 Website · 📚 Documentation

Docs License: BSD-3-Clause Go 1.26.4+ Coverage 100%


go-ruby-strscan is a pure-Go (no cgo) reimplementation of Ruby's StringScanner (the strscan library) — a cursor over a string that advances by matching patterns at the current position. It implements the full method surface: scan / scan_until / skip, match? / check / check_until, peek / getch, the pos / charpos cursors, capture access ([] / captures) and unscan — matching reference Ruby byte-for-byte. Its pattern matching is backed by go-ruby-regexp, the sibling pure-Go Onigmo. It was extracted from rbgo's prelude/internals into a reusable standalone library: no dependency on the Ruby runtime, the dependency runs the other way. It is the StringScanner backend for go-embedded-ruby, bound by rbgo as a native module just like go-ruby-regexp and go-ruby-erb — differential-tested against MRI, 100% coverage, CI green across 6 arches and 3 OSes.

Repositories

Repo What it is
strscan the library: Ruby's StringScanner in pure Go
docs MkDocs Material documentation, versioned with mike, served at /docs/
go-ruby-strscan.github.io the Hugo landing page
brand logos and brand assets

Principles

  • Pure Go, zero cgo. Cross-compiles and embeds anywhere; a static binary by default.
  • Extracted from rbgo, reusable by anyone. A standalone library lifted from rbgo's prelude/internals; rbgo binds it as a native module, the same pattern as go-ruby-regexp and go-ruby-erb.
  • MRI byte-exact. Output matches reference Ruby exactly, validated by a differential oracle against the ruby binary.
  • Standalone & reusable. No dependency on the Ruby runtime; the dependency runs the other way.
  • 100% test coverage is the target, enforced as a CI gate.

Status

Complete — MRI byte-exact. Faithful port of MRI's strscan.c: the full method surface — scan / scan_until / skip, match? / check / check_until, peek / getch, pos / charpos, captures ([] / captures) and unscan — with pattern matching backed by go-ruby-regexp. Validated by a differential oracle against the system ruby — scan results compared byte-for-byte — at 100% coverage, gofmt + go vet clean, CI green across the six 64-bit Go targets and three OSes. Differential-tested against MRI at 100% coverage, gofmt + go vet clean, CI green across the six 64-bit Go targets (amd64, arm64, riscv64, loong64, ppc64le, s390x) and three operating systems. It is bound into the go-embedded-ruby (rbgo) ecosystem as a native module.

BSD-3-Clause.

Popular repositories Loading

  1. strscan strscan Public

    Pure-Go MRI-compatible Ruby strscan, CGO=0 — bound by go-embedded-ruby/rbgo

    Go

  2. docs docs Public

    Documentation for go-ruby-strscan

    Go

  3. brand brand Public

    Brand assets for go-ruby-strscan

  4. go-ruby-strscan.github.io go-ruby-strscan.github.io Public

    Landing page for go-ruby-strscan

    HTML

  5. .github .github Public

    Org profile for go-ruby-strscan

Repositories

Showing 5 of 5 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…