From 51198a14141b6afa0598ad1a2538945a43789e23 Mon Sep 17 00:00:00 2001 From: Charles Barbier Date: Fri, 30 Sep 2016 16:26:15 -0400 Subject: [PATCH] Allow default rule to be override --- lib/public_suffix/rule.rb | 10 +++++++++- test/unit/rule_test.rb | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/public_suffix/rule.rb b/lib/public_suffix/rule.rb index 85ea60ac..fc600c83 100644 --- a/lib/public_suffix/rule.rb +++ b/lib/public_suffix/rule.rb @@ -357,9 +357,17 @@ def self.factory(content, **options) # # @return [PublicSuffix::Rule::Wildcard] The default rule. def self.default - factory(STAR) + return @default if defined?(@default) + @default = factory(STAR) end + # Override the default rule. + # + # @param [PublicSuffix::Rule, nil] A rule instance or nil. + # @return [PublicSuffix::Rule, nil] The new default rule value. + def self.default=(rule) + @default = rule + end end end diff --git a/test/unit/rule_test.rb b/test/unit/rule_test.rb index 39ab28bd..bc916342 100644 --- a/test/unit/rule_test.rb +++ b/test/unit/rule_test.rb @@ -31,6 +31,13 @@ def test_default_returns_default_wildcard assert_equal %w( www.example tldnotlisted ), default.decompose("www.example.tldnotlisted") end + def test_self_default_setter + default_rule_was = PublicSuffix::Rule.default + assert_not_equal nil, PublicSuffix::Rule.default + PublicSuffix::Rule.default = nil + assert_equal nil, PublicSuffix::Rule.default + PublicSuffix::Rule.default = default_rule_was + end end