naughty_or_nice 2.0.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +1 -1
- data/lib/naughty_or_nice.rb +33 -25
- data/lib/naughty_or_nice/version.rb +3 -1
- metadata +48 -22
- data/Rakefile +0 -13
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 76bf0044478e435776c91bdb769f30517f71832a44d6c5091ac9ef5b4f76823c
         | 
| 4 | 
            +
              data.tar.gz: a426c8e77324a8fd72e652c2f9fc0ace6b35e3bc60d901edd049c241c150f226
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 65e4e117e1b6cf2a0825ef65c11807b1e238b02894ab8a6f07065bc2dc7410a863cb7b10021702cec8ed33f644db0ebce89997a773036573af33c8ee7e052216
         | 
| 7 | 
            +
              data.tar.gz: 4ed85b6546a1d2520759a2d5e4c35f7de6e4fc2c448dbf452cb1ade23d6ca2491c809908cb00ec5866b2cbd9bd5e88ab1679dadbb4faea78290e75ace8968759
         | 
    
        data/README.md
    CHANGED
    
    
    
        data/lib/naughty_or_nice.rb
    CHANGED
    
    | @@ -1,18 +1,20 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            require 'public_suffix'
         | 
| 2 | 
            -
            require  | 
| 4 | 
            +
            require 'addressable/uri'
         | 
| 3 5 | 
             
            require_relative './naughty_or_nice/version'
         | 
| 4 6 |  | 
| 7 | 
            +
            # Primary module to be mixed into the child class
         | 
| 5 8 | 
             
            module NaughtyOrNice
         | 
| 6 | 
            -
             | 
| 7 9 | 
             
              # Source: http://bit.ly/1n2X9iv
         | 
| 8 10 | 
             
              EMAIL_REGEX = %r{
         | 
| 9 11 | 
             
                    ^
         | 
| 10 12 | 
             
                    (
         | 
| 11 | 
            -
                      [\w | 
| 13 | 
            +
                      [\w!\#$%&'*+\-/=?\^`\{|\}~]+
         | 
| 12 14 | 
             
                      \.
         | 
| 13 15 | 
             
                    )
         | 
| 14 16 | 
             
                    *
         | 
| 15 | 
            -
                    [\w | 
| 17 | 
            +
                    [\w!\#$%&'*+\-/=?\^`\{|\}~]+
         | 
| 16 18 | 
             
                    @
         | 
| 17 19 | 
             
                    (
         | 
| 18 20 | 
             
                      (
         | 
| @@ -37,19 +39,19 @@ module NaughtyOrNice | |
| 37 39 | 
             
                      ){3}
         | 
| 38 40 | 
             
                      \d{1,3}
         | 
| 39 41 | 
             
                      (
         | 
| 40 | 
            -
                         | 
| 42 | 
            +
                        :\d{1,5}
         | 
| 41 43 | 
             
                      )?
         | 
| 42 44 | 
             
                    )
         | 
| 43 45 | 
             
                    $
         | 
| 44 | 
            -
                  }xi
         | 
| 46 | 
            +
                  }xi.freeze
         | 
| 45 47 |  | 
| 48 | 
            +
              # Ruby idiom that allows `include` to create class methods
         | 
| 46 49 | 
             
              module ClassMethods
         | 
| 47 50 | 
             
                def valid?(text)
         | 
| 48 | 
            -
                   | 
| 51 | 
            +
                  new(text).valid?
         | 
| 49 52 | 
             
                end
         | 
| 50 53 | 
             
              end
         | 
| 51 54 |  | 
| 52 | 
            -
              # Ruby idiom that allows `include` to create class methods
         | 
| 53 55 | 
             
              def self.included(base)
         | 
| 54 56 | 
             
                base.extend(ClassMethods)
         | 
| 55 57 | 
             
              end
         | 
| @@ -69,28 +71,32 @@ module NaughtyOrNice | |
| 69 71 | 
             
              #
         | 
| 70 72 | 
             
              # Returns the domain object or nil, but no errors, never an error
         | 
| 71 73 | 
             
              def domain
         | 
| 72 | 
            -
                @domain  | 
| 73 | 
            -
             | 
| 74 | 
            -
                 | 
| 74 | 
            +
                return @domain if defined? @domain
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                @domain = begin
         | 
| 77 | 
            +
                  PublicSuffix.parse(normalized_domain, default_rule: nil)
         | 
| 78 | 
            +
                rescue PublicSuffix::DomainInvalid, PublicSuffix::DomainNotAllowed
         | 
| 79 | 
            +
                  nil
         | 
| 80 | 
            +
                end
         | 
| 75 81 | 
             
              end
         | 
| 76 82 |  | 
| 77 83 | 
             
              # Checks if the input string represents a valid domain
         | 
| 78 84 | 
             
              #
         | 
| 79 85 | 
             
              # Returns boolean true if a valid domain, otherwise false
         | 
| 80 86 | 
             
              def valid?
         | 
| 81 | 
            -
                 | 
| 87 | 
            +
                !domain.nil?
         | 
| 82 88 | 
             
              end
         | 
| 83 89 |  | 
| 84 90 | 
             
              # Is the input text in the form of a valid email address?
         | 
| 85 91 | 
             
              #
         | 
| 86 92 | 
             
              # Returns true if email, otherwise false
         | 
| 87 93 | 
             
              def email?
         | 
| 88 | 
            -
                 | 
| 94 | 
            +
                !(@text =~ EMAIL_REGEX).nil?
         | 
| 89 95 | 
             
              end
         | 
| 90 96 |  | 
| 91 97 | 
             
              # Return the parsed domain as a string
         | 
| 92 98 | 
             
              def to_s
         | 
| 93 | 
            -
                domain.to_s if domain
         | 
| 99 | 
            +
                @to_s ||= domain.to_s if domain
         | 
| 94 100 | 
             
              end
         | 
| 95 101 |  | 
| 96 102 | 
             
              def inspect
         | 
| @@ -104,20 +110,22 @@ module NaughtyOrNice | |
| 104 110 | 
             
              # Can handle urls, domains, or emails
         | 
| 105 111 | 
             
              #
         | 
| 106 112 | 
             
              # Returns the domain string
         | 
| 107 | 
            -
              def  | 
| 108 | 
            -
                 | 
| 109 | 
            -
             | 
| 110 | 
            -
                 | 
| 113 | 
            +
              def normalized_domain
         | 
| 114 | 
            +
                if @text.empty?
         | 
| 115 | 
            +
                  nil
         | 
| 116 | 
            +
                elsif parsed_domain
         | 
| 117 | 
            +
                  parsed_domain.host
         | 
| 118 | 
            +
                end
         | 
| 119 | 
            +
              end
         | 
| 111 120 |  | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
                   | 
| 116 | 
            -
             | 
| 117 | 
            -
                  uri = Addressable::URI.parse("http://#{@text}")
         | 
| 121 | 
            +
              def parsed_domain
         | 
| 122 | 
            +
                @parsed_domain ||= begin
         | 
| 123 | 
            +
                  text = @text.dup
         | 
| 124 | 
            +
                  text.prepend('http://') unless %r{\Ahttps?://}.match?(text)
         | 
| 125 | 
            +
                  uri = Addressable::URI.parse(text)
         | 
| 118 126 | 
             
                  # properly parse http://foo edge cases
         | 
| 119 127 | 
             
                  # see https://github.com/sporkmonger/addressable/issues/145
         | 
| 120 | 
            -
                  uri | 
| 128 | 
            +
                  uri if uri.host.include?('.')
         | 
| 121 129 | 
             
                end
         | 
| 122 130 | 
             
              rescue Addressable::URI::InvalidURIError
         | 
| 123 131 | 
             
                nil
         | 
    
        metadata
    CHANGED
    
    | @@ -1,43 +1,43 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: naughty_or_nice
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.1.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ben Balter
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2020-11-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name:  | 
| 14 | 
            +
              name: addressable
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - - " | 
| 17 | 
            +
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: ' | 
| 19 | 
            +
                    version: '2.3'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - - " | 
| 24 | 
            +
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: ' | 
| 26 | 
            +
                    version: '2.3'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name:  | 
| 28 | 
            +
              name: public_suffix
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - - " | 
| 31 | 
            +
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: ' | 
| 33 | 
            +
                    version: '3.0'
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 | 
            -
                - - " | 
| 38 | 
            +
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: ' | 
| 40 | 
            +
                    version: '3.0'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: pry
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -53,7 +53,7 @@ dependencies: | |
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0.9'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name:  | 
| 56 | 
            +
              name: rspec
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - "~>"
         | 
| @@ -67,19 +67,47 @@ dependencies: | |
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 68 | 
             
                    version: '3.5'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name:  | 
| 70 | 
            +
              name: rubocop
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - "~>"
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: '1.0'
         | 
| 76 | 
            +
              type: :development
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - "~>"
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: '1.0'
         | 
| 83 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            +
              name: rubocop-performance
         | 
| 85 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            +
                requirements:
         | 
| 87 | 
            +
                - - "~>"
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: '1.5'
         | 
| 90 | 
            +
              type: :development
         | 
| 91 | 
            +
              prerelease: false
         | 
| 92 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            +
                requirements:
         | 
| 94 | 
            +
                - - "~>"
         | 
| 95 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            +
                    version: '1.5'
         | 
| 97 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            +
              name: rubocop-rspec
         | 
| 71 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 100 | 
             
                requirements:
         | 
| 73 101 | 
             
                - - "~>"
         | 
| 74 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: ' | 
| 103 | 
            +
                    version: '2.0'
         | 
| 76 104 | 
             
              type: :development
         | 
| 77 105 | 
             
              prerelease: false
         | 
| 78 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 107 | 
             
                requirements:
         | 
| 80 108 | 
             
                - - "~>"
         | 
| 81 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: ' | 
| 110 | 
            +
                    version: '2.0'
         | 
| 83 111 | 
             
            description: Naughty or Nice simplifies the process of extracting domain information
         | 
| 84 112 | 
             
              from a domain-like string (an email, a URL, etc.) and checking whether it meets
         | 
| 85 113 | 
             
              criteria you specify.
         | 
| @@ -90,14 +118,13 @@ extra_rdoc_files: [] | |
| 90 118 | 
             
            files:
         | 
| 91 119 | 
             
            - LICENSE.md
         | 
| 92 120 | 
             
            - README.md
         | 
| 93 | 
            -
            - Rakefile
         | 
| 94 121 | 
             
            - lib/naughty_or_nice.rb
         | 
| 95 122 | 
             
            - lib/naughty_or_nice/version.rb
         | 
| 96 123 | 
             
            homepage: http://github.com/benbalter/naughty_or_nice
         | 
| 97 124 | 
             
            licenses:
         | 
| 98 125 | 
             
            - MIT
         | 
| 99 126 | 
             
            metadata: {}
         | 
| 100 | 
            -
            post_install_message: | 
| 127 | 
            +
            post_install_message:
         | 
| 101 128 | 
             
            rdoc_options: []
         | 
| 102 129 | 
             
            require_paths:
         | 
| 103 130 | 
             
            - lib
         | 
| @@ -112,9 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 112 139 | 
             
                - !ruby/object:Gem::Version
         | 
| 113 140 | 
             
                  version: '0'
         | 
| 114 141 | 
             
            requirements: []
         | 
| 115 | 
            -
             | 
| 116 | 
            -
             | 
| 117 | 
            -
            signing_key: 
         | 
| 142 | 
            +
            rubygems_version: 3.1.4
         | 
| 143 | 
            +
            signing_key:
         | 
| 118 144 | 
             
            specification_version: 4
         | 
| 119 145 | 
             
            summary: You've made the list. We'll help you check it twice. Given a domain-like
         | 
| 120 146 | 
             
              string, verifies inclusion in a list you provide.
         | 
    
        data/Rakefile
    DELETED
    
    | @@ -1,13 +0,0 @@ | |
| 1 | 
            -
            require 'rake'
         | 
| 2 | 
            -
            require 'rake/testtask'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            Rake::TestTask.new(:test) do |test|
         | 
| 5 | 
            -
              test.libs << 'lib' << 'test'
         | 
| 6 | 
            -
              test.pattern = 'test/**/test_naughty_or_nice*.rb'
         | 
| 7 | 
            -
              test.verbose = true
         | 
| 8 | 
            -
            end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            desc "Open console with Naughty Or Nice loaded"
         | 
| 11 | 
            -
            task :console do
         | 
| 12 | 
            -
              exec "pry -r ./lib/naughty_or_nice.rb"
         | 
| 13 | 
            -
            end
         |