Module TMail::TextUtils
In: lib/tmail/utils.rb

Text Utils provides a namespace to define TOKENs, ATOMs, PHRASEs and CONTROL characters that are OK per RFC 2822.

It also provides methods you can call to determine if a string is safe

Methods

Constants

CONTROL_CHAR = /[#{control}]/n
ATOM_UNSAFE = /[#{Regexp.quote aspecial}#{control}#{lwsp}]/n
PHRASE_UNSAFE = /[#{Regexp.quote aspecial}#{control}]/n
TOKEN_UNSAFE = /[#{Regexp.quote tspecial}#{control}#{lwsp}]/n

Public Instance methods

Returns true if the string supplied is free from characters not allowed as an ATOM

[Source]

# File lib/tmail/utils.rb, line 123
    def atom_safe?( str )
      not ATOM_UNSAFE === str
    end

Provides a method to join a domain name by it‘s parts and also makes it ATOM safe by quoting it as needed

[Source]

# File lib/tmail/utils.rb, line 169
    def join_domain( arr )
      arr.map {|i|
          if /\A\[.*\]\z/ === i
            i
          else
            quote_atom(i)
          end
      }.join('.')
    end

If the string supplied has ATOM unsafe characters in it, will return the string quoted in double quotes, otherwise returns the string unmodified

[Source]

# File lib/tmail/utils.rb, line 129
    def quote_atom( str )
      (ATOM_UNSAFE === str) ? dquote(str) : str
    end

If the string supplied has PHRASE unsafe characters in it, will return the string quoted in double quotes, otherwise returns the string unmodified

[Source]

# File lib/tmail/utils.rb, line 135
    def quote_phrase( str )
      (PHRASE_UNSAFE === str) ? dquote(str) : str
    end

If the string supplied has TOKEN unsafe characters in it, will return the string quoted in double quotes, otherwise returns the string unmodified

[Source]

# File lib/tmail/utils.rb, line 146
    def quote_token( str )
      (TOKEN_UNSAFE === str) ? dquote(str) : str
    end

Takes a time zone string from an EMail and converts it to Unix Time (seconds)

[Source]

# File lib/tmail/utils.rb, line 228
    def timezone_string_to_unixtime( str )
      if m = /([\+\-])(\d\d?)(\d\d)/.match(str)
        sec = (m[2].to_i * 60 + m[3].to_i) * 60
        m[1] == '-' ? -sec : sec
      else
        min = ZONESTR_TABLE[str.downcase] or
                raise SyntaxError, "wrong timezone format '#{str}'"
        min * 60
      end
    end

Returns true if the string supplied is free from characters not allowed as a TOKEN

[Source]

# File lib/tmail/utils.rb, line 140
    def token_safe?( str )
      not TOKEN_UNSAFE === str
    end

Unwraps supplied string from inside double quotes Returns unquoted string

[Source]

# File lib/tmail/utils.rb, line 163
    def unquote( str )
      str =~ /^"(.*?)"$/m ? $1 : str
    end

[Validate]