onigleam

Types

Result of a successful conversion with details

pub type ConversionResult {
  ConversionResult(
    pattern: String,
    regexp_options: regexp.Options,
    capture_names: dict.Dict(String, Int),
    warnings: List(String),
  )
}

Constructors

  • ConversionResult(
      pattern: String,
      regexp_options: regexp.Options,
      capture_names: dict.Dict(String, Int),
      warnings: List(String),
    )

    Arguments

    pattern

    The generated pattern string

    regexp_options

    Options to pass to gleam_regexp

    capture_names

    Mapping of capture group names to their 1-based index

    warnings

    Any warnings generated during conversion

pub type ParseError =
  errors.ParseError
pub type TokenizeError =
  errors.TokenizeError
pub type TransformError =
  errors.TransformError

Values

pub fn convert(
  pattern: String,
) -> Result(ConversionResult, errors.ConversionError)

Convert with default options

Convenience function using default options. Use this for simple conversions.

Example

import onigleam

let assert Ok(result) = onigleam.convert("[a-z]+")
result.pattern  // "[a-z]+"
pub fn convert_textmate(
  pattern: String,
) -> Result(ConversionResult, errors.ConversionError)

Convert for TextMate grammar use

TextMate grammars often have patterns with orphan backreferences (references to capture groups that may not exist in the current pattern). This function enables the allow_orphan_backrefs option which treats these as warnings instead of errors.

Example

import onigleam

// This pattern references group 1 which doesn't exist
let assert Ok(result) = onigleam.convert_textmate("\\1")
// Returns Ok with a warning instead of an error
pub fn convert_with_flags(
  pattern: String,
  flags: String,
) -> Result(ConversionResult, errors.ConversionError)

Convert with flags

Convenience function that sets Oniguruma flags.

Example

// Case-insensitive matching
let assert Ok(result) = onigleam.convert_with_flags("abc", "i")
pub fn format_error(error: errors.ConversionError) -> String

Format a conversion error as a human-readable string

Example

import onigleam

case onigleam.convert("(?>atomic)") {
  Ok(result) -> result.pattern
  Error(err) -> onigleam.format_error(err)
  // "Atomic groups (?>...) cannot be emulated in gleam_regexp"
}
pub fn to_regexp(
  pattern: String,
  opts: options.ToRegexpOptions,
) -> Result(regexp.Regexp, errors.ConversionError)

Convert an Oniguruma pattern directly to a compiled gleam_regexp

This is a convenience function that combines to_regexp_details with regexp.compile.

Example

import onigleam
import onigleam/options

let assert Ok(re) = onigleam.to_regexp(
  "\\d+",
  options.default_options(),
)
pub fn to_regexp_details(
  pattern: String,
  options: options.ToRegexpOptions,
) -> Result(ConversionResult, errors.ConversionError)

Convert an Oniguruma pattern to a gleam_regexp pattern string with details

Returns the pattern string, regexp options, capture name mapping, and any warnings.

Example

import onigleam
import onigleam/options
import gleam/regexp

let assert Ok(result) = onigleam.to_regexp_details(
  "(?<name>\\w+)",
  options.default_options(),
)

// Use the pattern with gleam_regexp
let assert Ok(re) = regexp.compile(result.pattern, result.regexp_options)
Search Document