valid_url?

in rb/lib/twitter-text/validation.rb [160:177]


      def valid_url?(url, unicode_domains=true, require_protocol=true)
        return false if !url || url.empty?

        url_parts = url.match(Twitter::TwitterText::Regex[:validate_url_unencoded])
        return false unless (url_parts && url_parts.to_s == url)

        scheme, authority, path, query, fragment = url_parts.captures

        return false unless ((!require_protocol ||
                              (valid_match?(scheme, Twitter::TwitterText::Regex[:validate_url_scheme]) && scheme.match(/\Ahttps?\Z/i))) &&
                             valid_match?(path, Twitter::TwitterText::Regex[:validate_url_path]) &&
                             valid_match?(query, Twitter::TwitterText::Regex[:validate_url_query], true) &&
                             valid_match?(fragment, Twitter::TwitterText::Regex[:validate_url_fragment], true))

        return (unicode_domains && valid_match?(authority, Twitter::TwitterText::Regex[:validate_url_unicode_authority])) ||
               (!unicode_domains && valid_match?(authority, Twitter::TwitterText::Regex[:validate_url_authority]))
      end