class PublicSuffix::Rule::Base

Abstract rule class

This represent the base class for a Rule definition in the Public Suffix List.

This is intended to be an Abstract class and you shouldn’t create a direct instance. The only purpose of this class is to expose a common interface for all the available subclasses.

## Properties

A rule is composed by 4 properties:

value - A normalized version of the rule name.

The normalization process depends on rule tpe.

Here’s an example

PublicSuffix::Rule.factory("*.google.com")
#<PublicSuffix::Rule::Wildcard:0x1015c14b0
    @value="google.com"
>

## Rule Creation

The best way to create a new rule is passing the rule name to the PublicSuffix::Rule.factory method.

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

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

This method will detect the rule type and create an instance from the proper rule class.

## Rule Usage

A rule describes the composition of a domain name and explains how to tokenize the name into tld, sld and trd.

To use a rule, you first need to be sure the name you want to tokenize can be handled by the current rule. You can use the match? method.

rule = PublicSuffix::Rule.factory("com")

rule.match?("google.com")
# => true

rule.match?("google.com")
# => false

Rule order is significant. A name can match more than one rule. See the Public Suffix Documentation to learn more about rule priority.

When you have the right rule, you can use it to tokenize the domain name.

rule = PublicSuffix::Rule.factory("com")

rule.decompose("google.com")
# => ["google", "com"]

rule.decompose("www.google.com")
# => ["www.google", "com"]

@abstract