Commit graph

2012 commits

Author SHA1 Message Date
The Respect Panda 5a0b53831f
Update list of top-level domains 2021-02-06 12:56:35 +01:00
Henrique Moody 44a60f67d9
Fix PHPStan issues
This commit will fix an issue but ignore two of them because it will
require some refactoring that won't be possible in a PATCH version.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2021-02-06 12:51:56 +01:00
Henrique Moody 5ba7646925
Fix wrong changelog in the Decimal's documentation
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-05 13:01:29 +02:00
Henrique Moody 1eb5b9d3c5
Add "Decimal" link to related rules
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-05 12:49:42 +02:00
Henrique Moody 6c3aed9213
Create "Decimal" rule
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-04 14:09:34 +02:00
Henrique Moody d532e942a5
Create mixin with rules names as methods
One of the reasons for this change is to spare some space on the
Validator class, leaving only real code there. However, the biggest
reason is that IDEs can auto-complete rules after Validator creates the
first rule.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-04 13:04:20 +02:00
Henrique Moody 1809e9f4c4
Make "HexRgbColor" rule case-insensitive
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-04 12:12:10 +02:00
The Respect Panda 444f105ea6
Update list of top-level domains 2020-10-04 12:11:09 +02:00
v0idpwn ff253c78b3
Allow file-related rules to validate PSR-7 interfaces
The PSR-7 has two interfaces that allow us to validate them as files.
This commit will allow some rules to validate those interfaces.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-04 12:03:22 +02:00
Olumide Samson 029fa7fe73
Remove "Key" prefix from KeyException message
Most Validation errors are sent to Users/Visitors or Clients and as such
might not need to know it was a Key their inputs are being validated
upon.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-04 11:42:51 +02:00
Henrique Moody 8b2819e9f8
Auto-resolve exception namespaces
After the refactoring on the Factory class [1], to throw exceptions of a
specific rule, it is necessary to add the exception namespace of that
rule. That change makes sense when someone wants to create rules from
the Validator class, but when using rules as classes, it's not as handy.

This commit will auto-resolve exception based on the rule namespace,
just as it used to be.

[1]: 1f217dda66

Co-authored-by: Casey McLaughlin <caseyamcl@gmail.com>
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-04 11:26:20 +02:00
Henrique Moody ed304f3406
Check "bcmath" extension before executing tests
Although BCMath is necessary to execute "Ip" and "Iban" rules, we not
required that in the "composer.json" file. That's because if someone
wants to use the library, but doesn't want to use those rules, they
would not need to install that extension.

However, when executing the tests, they will break. This commit will
verify whether the extension exists to test "Ip" and "Iban" rules.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-04 11:21:36 +02:00
Henrique Moody e0c6f33c01
Only define filter_var options when it is valid
The third argument of "filter_var" must be either an integer or an
array. On PHP 8 this "FilterVar" rule fails because we always pass that
argument, even if it is null.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-10-04 11:13:18 +02:00
Alexandre Gaigalas 2fad28b36b Allow optional space for greek postal codes 2020-08-31 22:54:04 -03:00
Henrique Moody f53b77a186
Add support for PHP 8.0
We already supported PHP 8.0 as our constrains in the "composer.json"
file was ">=7.3", but we were not testing it before.

Because of that, I found a bug on "EndsWith" which is fixed now.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-08-28 08:53:41 +02:00
Henrique Moody a65980ca45
Remove PHP 8.0 from the build matrix
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-08-27 19:22:13 +02:00
Henrique Moody 80ff37ca7f
Configure continuous integration with GitHub actions
This commit will also remove Travis and Scrutinizer and will configure
Codecov as a code coverage tool.

A few changes in the PHPUnit configuration already had to be made
before, but became more visible now. They're along with this commit.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-08-27 19:06:37 +02:00
Henrique Moody 72dd88144e
Update version of "respect/coding-standard"
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-08-27 16:21:02 +02:00
Henrique Moody 966c510559
Update version of PHPUnit package
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-08-26 09:47:59 +02:00
Henrique Moody 5150428b27
Drop support for PHP 7.2
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-08-26 09:47:48 +02:00
The Respect Panda 314aa36e37 Update list of top-level domains 2020-08-23 00:24:43 +00:00
Henrique Moody f7a57a7f89
Update list of files to be exported by Git
Also, remove "couscous.yml" that is not being used anymore.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-07-29 10:35:36 +02:00
Henrique Moody 642602fd43
Update version of PHPStan packages
Some amazing features had to be ignored because it conflicts with out
coring standards. I hope to soon fix them so we can use PHPStan to its
fullest potential.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-07-25 22:50:59 +02:00
Cameron Hall fc14c6c669
Do not overwrite pre-defined rule name
All the rules that extend the "AbstractRelated" class overwrite the name
of the inner-rule even when it already has a name. This leads to some
unexpected behavior, as messages won't show the name of the inner rule
but instead the name of the parent rule.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-07-25 20:34:16 +02:00
Chris Ramakers 44d0af4148
Allow validating domains with "FilterVar" rule
Even though using "filter_var()" to validate domains may is error-prone,
Validation should fully support "filter_var()" as long as the
"FilterVar" exists.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-07-21 23:09:18 +02:00
Henrique Moody 3145426472
Update version of "respect/coding-standard"
With that update, we will be fully following PSR-12.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-07-21 22:54:41 +02:00
bmorg 34cbed2c9b
Allow leading zeros when using "IntVal" rule
There is some confusion about integer literals (as we type them into
source code) and integer values (the actual value they represent).

When casting the integer 08 (without quotes), PHP triggers an error as
integers starting with 0 should have base 8. However, when casting the
string '08' as an integer PHP returns the integer 8.

This commit will change the behavior of the "IntVal" rule, allowing it
to accept any integer type and any representation of an integer as a
string.

Reviewed-by: Emmerson Siqueira <emmersonsiqueira@gmail.com>
Reviewed-by: Wesley Victhor Mendes Santiago <w.v.mendes.s@gmail.com>
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-07-21 21:40:38 +02:00
The Respect Panda 78d1ce404c Update list of top-level domains 2020-07-19 00:20:19 +00:00
Henrique Moody 6f3979cb51
Improve unit tests for "Call" rule
I can't explain why, but depending on the environment, some tests of the
"Call" rule was failing.

This commit will add a test for the "validate()" method, and also use a
more clean way to trigger and handle a PHP error.

Co-authored-by: Casey McLaughlin <caseyamcl@gmail.com>
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-07-14 21:47:22 +02:00
Casey McLaughlin f3faf50340
Set timezone to UTC when testing date-related rules
Set default timezone explicitly to UTC so that tests do not fail in
other time-zones.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-07-14 21:27:45 +02:00
Daniel Altenburg 0a3f4c6a4b
Update Serbian postal code validation
According to Wikipedia, also known as the most reliable source of
information on the whole Internet, Serbian postal codes consist of five
digits [1].

Even though it mentions that a six-digit postal code format has been in
place since 1 January 2005 [2], I have not found any Serbian postal code
which consists of six digits.

Maybe someone would prove us wrong, but we will keep the validation as
six-digits from now one.

[1]: https://en.wikipedia.org/wiki/Postal_codes_in_Serbia
[2]: https://web.archive.org/web/20090917083620/http://www.posta.rs/postanskamreza/postanskamreza.asp

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-07-14 21:02:53 +02:00
The Respect Panda e2783d4220 Update list of top-level domains 2020-07-12 00:19:29 +00:00
The Respect Panda 80f236bb90 Update list of top-level domains 2020-06-07 00:14:45 +00:00
The Respect Panda 83936a0c00
Update list of top-level domains 2020-06-03 09:40:10 +02:00
The Respect Panda 6eeacfce5a Update list of language codes 2020-05-31 00:11:47 +00:00
Henrique Moody 3be622a9fa
Configure GitHub workflow to update top-level domains
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-26 19:19:25 +02:00
Henrique Moody 83b515d0a3
Configure GitHub workflow to update language codes
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-26 18:33:23 +02:00
Henrique Moody bb9ff1dba0
Configure GitHub workflow to update currency codes
Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-26 18:32:18 +02:00
Henrique Moody e0fbed32c9
Update list of currency codes
Also updates the script that updates the currency codes.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-20 15:02:44 +02:00
Henrique Moody 6f92132874
Update list of top-level domains
This commit will add the LLP, XN--MGBCPQ6GPA1A, XN--Q7CE6A and XN--QXA6A
top-level domains, and remove BNL, CARTIER, CHRYSLER, DODGE, DUNS,
EVERBANK, HONEYWELL, ISELECT, LADBROKES, LANCOME, LIAISON, MOBILY,
MOPAR, MOVISTAR, NADEX, PIAGET, SRT, STARHUB, TELEFONICA, UCONNECT,
VISTAPRINT, WARMAN, XN--ESTV75G and XN--MGBB9FBPOB top-level domains.

Below the Bash command I used to generate the new list:

curl https://data.iana.org/TLD/tlds-alpha-by-domain.txt |
  grep --invert-match '^#' |
  sed --regexp-extended "s,^,',; s/$/', /" |
  tr --delete '\n' |
  fold --width=72 --spaces

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-19 11:31:43 +02:00
Henrique Moody 37746f3a6d
Update list of postal code validations
This commit will update the list of postal codes using the command
below:

curl -L http://download.geonames.org/export/dump/countryInfo.txt |
  sed 's,\t,\;,g' |
  sort --unique |
  cut --delimiter ';' --field 1,15 |
  sed --regexp-extended "/^#/d; /^[A-Z]{2}\;$/d; s,([A-Z]{2})\;(.+),'\1' => '/\2/'\,,g"

The changes that broke existing tests were reverted.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-18 22:22:38 +02:00
Daniel Altenburg 6e2b3e599e
Update validation for Armenian postal codes
According to Wikipedia[1]:

> Postal codes in Armenia consist of four digits. Until April 1, 2006,
> they consisted of six digits.

[1]: https://en.wikipedia.org/wiki/Postal_codes_in_Armenia

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-18 22:06:15 +02:00
Mateusz Burzyński a44f97f4b3
Add support for Caymanian postal code validation
According to Wikipedia[1]:

> A postal code typically consists of an island code, a hyphen
> separator, and a section code.
>
> There are only three island codes: KY1 for Grand Cayman, KY2 for
> Cayman Brac, and KY3 for Little Cayman.

[1]: https://en.wikipedia.org/wiki/Postal_codes_in_the_Cayman_Islands

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-18 21:59:02 +02:00
Bogus b7b67da31e
Update validation for Israeli postal codes
According to Wikipedia [1]:

> Until February 2013, Israel postal codes were 5-digit. Officially the
> 5-digit codes remained valid until 31 January 2013, though they
> continue to be widely used.

This commit changes the "PostalCode" rule to allow either 5 or 7 digits.

[1]: https://en.wikipedia.org/wiki/List_of_postal_codes

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-18 21:46:57 +02:00
Dylan T 3501192293
Report all errors when asserting with "Each" rule
The intention of the "assert()" method is to show all the errors that a
given input may have. The implementation of the "assert()" method in the
"Each" rule, on the other hand, only reports the first error of each
element of the input.

This commit makes "Each" show all the validation failures of each
element of the input. Also, the implementation of
"AbstractRule::check()" is simply a proxy for the "assert()" method,
and since the "Each" rule extends that class, this commit creates a
custom implementation of the "check()" method.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-18 21:18:13 +02:00
pathumhdes 7154e90522
Restore previous error handler when validation fails
The "Call" validator, the "assert()" and "check()" methods, define a
custom error handler so it can handle the validation in case of a PHP
error. However, it does not restor the previous error handler when the
validation fails.

Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-18 15:26:06 +02:00
Daniel Altenburg 3463343b14
Fix ecuador postal code format to 6 digits
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
2020-05-13 18:41:55 +02:00
Pierre-Antoine Guillaume 4d706b0845
Update docblock from "when" rule
The variable name in dynamic method when does not match variable name in When object.
2020-04-16 17:24:58 +02:00
Mikko Pesari 015e6d4a54 Fix Email validator when egulias/email-validator was not installed 2020-04-08 18:00:19 +03:00
Henrique Moody b4ad2f6413
Change the PHP support to version 7.2 or aboce
Since there will still be secutiry support until 30 Nov 2020 and there
was something happening in Travis when generating coverage with newer
versions of PHP which I'm not in the mood to debug, I decided to change
the support again, this time to version 7.2.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2020-04-04 23:55:05 +02:00