Module: Token::Resolver

Defined in:
lib/token/resolver.rb,
lib/token/resolver/node.rb,
lib/token/resolver/config.rb,
lib/token/resolver/grammar.rb,
lib/token/resolver/resolve.rb,
lib/token/resolver/version.rb,
lib/token/resolver/document.rb,
lib/token/resolver/node/text.rb,
lib/token/resolver/transform.rb,
lib/token/resolver/node/token.rb

Overview

Token::Resolver provides configurable PEG-based (parslet) parsing and resolution
of structured tokens in arbitrary text.

Tokens are configurable structured patterns like {KJ|GEM_NAME} that can be
detected in any file format and resolved against a replacement map.

Examples:

Parse a document to find tokens

doc = Token::Resolver.parse("Hello {KJ|NAME}!")
doc.token_keys  # => ["KJ|NAME"]

Resolve tokens in one step

result = Token::Resolver.resolve(
  "Hello {KJ|NAME}, welcome to {KJ|PROJECT}!",
  {"KJ|NAME" => "World", "KJ|PROJECT" => "token-resolver"}
)
# => "Hello World, welcome to token-resolver!"

Defined Under Namespace

Modules: Node, Version Classes: Config, Document, Error, Grammar, Resolve, Transform, UnresolvedTokenError

Constant Summary collapse

VERSION =

traditional location

Version::VERSION

Class Method Summary collapse

Class Method Details

.parse(input, config: Config.default) ⇒ Document

Parse input text and return a Document.

Examples:

doc = Token::Resolver.parse("Hello {KJ|NAME}!")
doc.tokens.first.key  # => "KJ|NAME"

Parameters:

  • input (String)

    Text to parse for tokens

  • config (Config) (defaults to: Config.default)

    Token configuration (default: Config.default)

Returns:

  • (Document)

    Parsed document with text and token nodes



64
65
66
# File 'lib/token/resolver.rb', line 64

def parse(input, config: Config.default)
  Document.new(input, config: config)
end

.resolve(input, replacements, config: Config.default, on_missing: :raise) ⇒ String

Parse and resolve tokens in one step.

Examples:

Token::Resolver.resolve("{KJ|NAME}", {"KJ|NAME" => "World"})
# => "World"

Parameters:

  • input (String)

    Text containing tokens to resolve

  • replacements (Hash{String => String})

    Map of token keys to replacement values

  • config (Config) (defaults to: Config.default)

    Token configuration (default: Config.default)

  • on_missing (Symbol) (defaults to: :raise)

    Behavior for unresolved tokens (:raise, :keep, :remove)

Returns:

  • (String)

    Resolved text with tokens replaced



79
80
81
82
83
# File 'lib/token/resolver.rb', line 79

def resolve(input, replacements, config: Config.default, on_missing: :raise)
  doc = parse(input, config: config)
  resolver = Resolve.new(on_missing: on_missing)
  resolver.resolve(doc, replacements)
end