Log message #4054231

# At Username Text
# Jul 19th 2017, 16:04 inoas ah you mean that you can use the validator... hum
# Jul 19th 2017, 16:04 jeremyharris if you want some help on it at any point, hit me up :slightly_smiling_face:
# Jul 19th 2017, 16:03 inoas it could in many occasions
# Jul 19th 2017, 16:02 jeremyharris would love to see it use the existing validation class if it can
# Jul 19th 2017, 16:02 inoas (or returns all fields invalid or true)
# Jul 19th 2017, 16:02 jeremyharris a PR might help others understand what you’re getting at :slightly_smiling_face: although, don’t get discouraged if it’s not accepted. It would be a PR a bit ahead of the finished discussion
# Jul 19th 2017, 16:02 inoas basically implement Options::validate() (returns true/false) and Options::validateOrFail()
# Jul 19th 2017, 16:01 inoas jeremyharris while my coding foo is mediocre if there is enough support in the core to consider this I would be willing to create a PR
# Jul 19th 2017, 16:00 inoas but rather real parameters
# Jul 19th 2017, 16:00 inoas but I think if you want that you should not use $options
# Jul 19th 2017, 16:00 inoas the only gripe is, it does not do IDE stuff very well
# Jul 19th 2017, 15:59 jeremyharris I think i’m on the same page now
# Jul 19th 2017, 15:59 inoas however you are then "on your own" (aka as $options are right now)
# Jul 19th 2017, 15:59 inoas that should be still possible through using type array and making it optional
# Jul 19th 2017, 15:58 jeremyharris I prefer that idea to the object one. I wonder if someone will come up with a use case where they want to provide an N amount of custom keys that aren’t defined in the schema, but still validate other options
# Jul 19th 2017, 15:58 inoas basically take a look at function overloading in elixir ... pattern match against different sets of parameters
# Jul 19th 2017, 15:58 inoas but not when calling the function
# Jul 19th 2017, 15:57 inoas there is verbosity in the validator
# Jul 19th 2017, 15:57 inoas that usage should be disencouraged as much as possible
# Jul 19th 2017, 15:57 inoas ['types'] => ['array', 'string'], ['isOptional' => true]
# Jul 19th 2017, 15:57 jeremyharris hmm, so kind of how shells work atm
# Jul 19th 2017, 15:57 inoas well you would need to list all, or mark that as optional
# Jul 19th 2017, 15:56 jeremyharris so you can’t have option arrays that accept user defined options, like in customer finders
# Jul 19th 2017, 15:56 inoas and you would build the array but before it is consumed you would validateOrFail()
# Jul 19th 2017, 15:56 inoas yes obviously
# Jul 19th 2017, 15:56 inoas well the latter Elm like exception could work ;)
# Jul 19th 2017, 15:56 jeremyharris oh so the validator rejects all keys that aren’t in the schema?
# Jul 19th 2017, 15:56 inoas (did you mean category ;)
# Jul 19th 2017, 15:55 inoas 'cagetory' hash key exists but was not expected
# Jul 19th 2017, 15:55 jeremyharris how would you alert the dev that this is a problem: foo(‘argAhere’, ‘argBhere’, [‘cagetory’ => ‘foo’, ‘link’ => [‘action’ => ‘bar’], ‘filters’ => ‘onSale’]);
# Jul 19th 2017, 15:55 inoas "consumable"
# Jul 19th 2017, 15:55 inoas it just makes sure the $options you pass to a method/function are processable/valid datatype
# Jul 19th 2017, 15:54 inoas it allows for deeply nested structures, optionality, default values, data type checks ... sure it doesn't (and should not do) application state checks (does this id exist in the database)
# Jul 19th 2017, 15:54 inoas https://gist.github.com/ionas/94e961bf414c78362442041081dad3ca lists all the possible options, the mandatory and optional onces... if you specify something other than that you should get an exception
# Jul 19th 2017, 15:53 inoas and give it another valid data type value
# Jul 19th 2017, 15:53 inoas as long as you do not accidentially type another valid hash key ;)
# Jul 19th 2017, 15:53 inoas jeremyharris but it DOES solve the miss-spelling
# Jul 19th 2017, 15:52 inoas set to throw an exception by default
# Jul 19th 2017, 15:52 inoas so maybe you are right... bool should do
# Jul 19th 2017, 15:52 inoas but meh... future apps
# Jul 19th 2017, 15:52 inoas if you set it to true/exception by default, apps will break