Class: SPF::MacroString

Inherits:
Object
  • Object
show all
Defined in:
lib/spf/macro_string.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ MacroString

Returns a new instance of MacroString.



18
19
20
21
22
23
24
25
26
# File 'lib/spf/macro_string.rb', line 18

def initialize(options = {})
  super()
  @text     = options[:text] \
    or raise ArgumentError, "Missing required 'text' option"
  @server   = options[:server]
  @request  = options[:request]
  @expanded = nil
  self.expand
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



28
29
30
# File 'lib/spf/macro_string.rb', line 28

def request
  @request
end

#serverObject (readonly)

Returns the value of attribute server.



28
29
30
# File 'lib/spf/macro_string.rb', line 28

def server
  @server
end

#textObject (readonly)

Returns the value of attribute text.



28
29
30
# File 'lib/spf/macro_string.rb', line 28

def text
  @text
end

Class Method Details

.default_join_delimiterObject



10
11
12
# File 'lib/spf/macro_string.rb', line 10

def self.default_join_delimiter
  '.'
end

.default_split_delimitersObject



6
7
8
# File 'lib/spf/macro_string.rb', line 6

def self.default_split_delimiters
  '.'
end

.uri_unreserved_charsObject



14
15
16
# File 'lib/spf/macro_string.rb', line 14

def self.uri_unreserved_chars
  'A-Za-z0-9\-._~'
end

Instance Method Details

#context(server, request) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/spf/macro_string.rb', line 30

def context(server, request)
  valid_context(true, server, request)
  @server   = server
  @request  = request
  @expanded = nil
  return
end

#expand(context = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/spf/macro_string.rb', line 38

def expand(context = nil)
  return @expanded if @expanded

  return nil unless @text
  return (@expanded = @text) unless @text =~ /%/
    # Short-circuit expansion if text has no '%' characters.

  expanded = ''
  # TODO
  return (@expanded = @text)
end

#to_sObject



50
51
52
53
54
55
56
# File 'lib/spf/macro_string.rb', line 50

def to_s
  if valid_context(false)
    return expand
  else
    return @text
  end
end

#valid_context(required, server = self.server, request = self.request) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/spf/macro_string.rb', line 58

def valid_context(required, server = self.server, request = self.request)
  if not SPF::Server === server
    raise MacroExpansionCtxRequired, 'SPF server object required' if required
    return false
  end
  if not SPF::Request === request
    raise MacroExpansionCtxRequired, 'SPF request object required' if required
    return false
  end
  return true
end