Class: Radius::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/radius/parser.rb

Overview

The Radius parser. Initialize a parser with a Context object that defines how tags should be expanded. See the QUICKSTART for a detailed explaination of its usage.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context = Context.new, options = {}) ⇒ Parser

Creates a new parser object initialized with a Context.



19
20
21
22
23
24
25
# File 'lib/radius/parser.rb', line 19

def initialize(context = Context.new, options = {})
  context, options = normalize_initialization_params(context, options)
  @context = context ? context.dup : Context.new
  @tag_prefix = options[:tag_prefix] || 'radius'
  @scanner = options[:scanner] || default_scanner
  @stack = nil # Pre-initialize stack
end

Instance Attribute Details

#contextObject

The Context object used to expand template tags.



9
10
11
# File 'lib/radius/parser.rb', line 9

def context
  @context
end

#scannerObject

The class that performs tokenization of the input string



16
17
18
# File 'lib/radius/parser.rb', line 16

def scanner
  @scanner
end

#tag_prefixObject

The string that prefixes all tags that are expanded by a parser (the part in the tag name before the first colon).



13
14
15
# File 'lib/radius/parser.rb', line 13

def tag_prefix
  @tag_prefix
end

Instance Method Details

#parse(string) ⇒ Object

Parses string for tags, expands them, and returns the result.



28
29
30
31
32
# File 'lib/radius/parser.rb', line 28

def parse(string)
  @stack = [create_root_container]
  process_tokens(scanner.operate(tag_prefix, string))
  @stack.last.to_s
end