module PublicSuffix::Rule

A Rule is a special object which holds a single definition of the Public Suffix List.

There are 3 types of rules, each one represented by a specific subclass within the PublicSuffix::Rule namespace.

To create a new Rule, use the {PublicSuffix::Rule#factory} method.

PublicSuffix::Rule.factory("ar")
# => #<PublicSuffix::Rule::Normal>

Constants

Entry

@api internal

Public Class Methods

The default rule to use if no rule match.

The default rule is “*”. From publicsuffix.org/list/:

> If no rules match, the prevailing rule is “*”.

@return [PublicSuffix::Rule::Wildcard] The default rule.

# File lib/public_suffix/rule.rb, line 344
def self.default
  factory(STAR)
end

Takes the name of the rule, detects the specific rule class and creates a new instance of that class. The name becomes the rule value.

@example Creates a Normal rule

PublicSuffix::Rule.factory("ar")
# => #<PublicSuffix::Rule::Normal>

@example Creates a Wildcard rule

PublicSuffix::Rule.factory("*.ar")
# => #<PublicSuffix::Rule::Wildcard>

@example Creates an Exception rule

PublicSuffix::Rule.factory("!congresodelalengua3.ar")
# => #<PublicSuffix::Rule::Exception>

@param content [#to_s] the content of the rule @return [PublicSuffix::Rule::*] A rule instance.

# File lib/public_suffix/rule.rb, line 326
def self.factory(content, private: false)
  case content.to_s[0, 1]
  when STAR
    Wildcard
  when BANG
    Exception
  else
    Normal
  end.build(content, private: private)
end