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.



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

def initialize(context = Context.new, options = {})
  if context.kind_of?(Hash) and options.empty?
    options = context
    context = options[:context] || options['context'] || Context.new
  end
  options = Util.symbolize_keys(options)
  @context = context
  @tag_prefix = options[:tag_prefix]
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

#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.



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

def parse(string)
  @stack = [ParseContainerTag.new { |t| t.contents.to_s }]
  tokenize(string)
  stack_up
  @stack.last.to_s
end