aam-ruby

Ruby bindings for aam-rs, built with magnus.

Features

  • Parse AAM from string input.
  • Direct lookup, key/value find, deep search, reverse search.
  • Lightweight native extension with tiny Ruby API surface.

Build extension

cargo build --manifest-path ruby/ext/aam_rb/Cargo.toml --release

Build gem

cp ruby/ext/aam_rs/target/release/libaam_rs_ruby.so ruby/lib/aam_rs_ruby.so
gem build ruby/aam-ruby.gemspec

Usage

require_relative 'ruby/lib/aam_rb'

doc = AamRb::AAM.parse("host = localhost\nport = 8080")
value = doc.get('host')
puts value

More examples

require_relative 'ruby/lib/aam_rb'

doc = AamRb::AAM.parse("host = localhost\nalias = localhost")
puts doc.reverse_search('localhost').inspect
puts doc.find('host').inspect

# missing values return nil
missing = doc.get('missing')
puts missing.nil?

Tests

cargo test --manifest-path ruby/ext/aam_rb/Cargo.toml
ruby ruby/tests/test_aam_rs.rb

Ruby tests now cover successful lookups, reverse search behavior, missing key handling, and parse errors.