Class: SPF::Mod
Defined Under Namespace
Classes: Exp, Redirect
Constant Summary
Constants inherited
from Term
Term::DOMAIN_END_PATTERN, Term::DOMAIN_SPEC_PATTERN, Term::HEXWORD_PATTERN, Term::IPV4_ADDRESS_PATTERN, Term::IPV6_ADDRESS_PATTERN, Term::MACRO_DELIMITER, Term::MACRO_EXPAND_PATTERN, Term::MACRO_LITERAL_PATTERN, Term::MACRO_STRING_PATTERN, Term::MACRO_TRANSFORMERS_PATTERN, Term::NAME_PATTERN, Term::QNUM_PATTERN, Term::TOPLABEL_PATTERN, Term::TWO_HEXWORDS_OR_IPV4_ADDRESS_PATTERN
Instance Attribute Summary
Attributes inherited from Term
#domain_spec, #errors, #ip_address, #ip_netblocks, #ip_network, #ipv4_prefix_length, #ipv6_prefix_length, #raw_params, #record_domain
Instance Method Summary
collapse
Methods inherited from Term
#domain, #error, new_from_string, #parse_domain_spec, #parse_ipv4_address, #parse_ipv4_ipv6_prefix_lengths, #parse_ipv4_network, #parse_ipv4_prefix_length, #parse_ipv6_address, #parse_ipv6_network, #parse_ipv6_prefix_length, #text
Constructor Details
#initialize(options = {}) ⇒ Mod
Returns a new instance of Mod.
662
663
664
665
666
667
668
669
670
671
672
673
674
|
# File 'lib/spf/model.rb', line 662
def initialize(options = {})
super
@parse_text = options[:parse_text]
@text = options[:text]
@domain_spec = options[:domain_spec]
@parse_text = @text.dup unless @parse_text
if @domain_spec and not SPF::MacroString === @domain_spec
@domain_spec = SPF::MacroString.new({:text => @domain_spec})
end
end
|
Instance Method Details
#parse ⇒ Object
676
677
678
679
680
681
|
# File 'lib/spf/model.rb', line 676
def parse
error(SPF::NothingToParseError('Nothing to parse for modifier')) unless @parse_text
self.parse_name if @errors.empty?
self.parse_params(true) if @errors.empty?
self.parse_end if @errors.empty?
end
|
#parse_end ⇒ Object
704
705
706
707
708
709
|
# File 'lib/spf/model.rb', line 704
def parse_end
unless @parse_text == ''
error(SPF::JunkInTermError.new("Junk encountered in modifier #{@text}", @text, @parse_text))
end
@parse_text = nil
end
|
#parse_name ⇒ Object
683
684
685
686
687
688
689
690
691
|
# File 'lib/spf/model.rb', line 683
def parse_name
@parse_text.sub!(/^(#{self.class::NAME})=/i, '')
if $1
@name = $1
else
error(SPF::InvalidModError.new(
"Unexpected modifier name encoutered in #{@text}"))
end
end
|
#parse_params(required = false) ⇒ Object
693
694
695
696
697
698
699
700
701
702
|
# File 'lib/spf/model.rb', line 693
def parse_params(required = false)
@parse_text.sub!(/^(#{MACRO_STRING_PATTERN})$/x, '')
if $1
@params_text = $1
elsif required
error(SPF::InvalidMacroStringError.new(
"Invalid macro string encountered in #{@text}"))
end
end
|
#to_s ⇒ Object
711
712
713
714
715
716
717
|
# File 'lib/spf/model.rb', line 711
def to_s
return sprintf(
'%s=%s',
@name,
@params ? @params : ''
)
end
|