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.



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

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.



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

def request
  @request
end

#serverObject (readonly)

Returns the value of attribute server.



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

def server
  @server
end

#textObject (readonly)

Returns the value of attribute text.



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

def text
  @text
end

Class Method Details

.default_join_delimiterObject



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

def self.default_join_delimiter
  '.'
end

.default_split_delimitersObject



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

def self.default_split_delimiters
  '.'
end

.uri_unreserved_charsObject



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

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

Instance Method Details

#context(server, request) ⇒ Object



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

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

#expand(context = nil) ⇒ Object



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

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



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

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

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



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

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