Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
Andy Holland
@AMHOL
I think it's just unfamiliar territory, from what I've seen you don't tend to touch AST until you start looking at compilers and sth?
Piotr Solnica
@solnic
Yeah only compilers deal with then
Them even
Krzysztof Wawer
@wafcio
How in dry-validation can I construct rule for attribute which is optional but if exists then it should be in specific format ? I am trying to do it in this way: id.nil? | (id.str? & id.format?(/.../)) but I receive NoMethodError: undefined method `to_ary' for true:TrueClass
Piotr Solnica
@solnic
@wafcio id.filled? & id.format?(/.../) should suffice
Although your example should work too
So pls report an issue
Krzysztof Wawer
@wafcio
I used str? because I checked examples: a) without id b) with number id - incorrect c) with id as uuid (text) - correct
Krzysztof Wawer
@wafcio
issue added dryrb/dry-validation#13
Piotr Solnica
@solnic
@wafcio thanks. I'll fix that
Krzysztof Wawer
@wafcio
ok thanks, I will bypass this problem with write own predicate
Krzysztof Wawer
@wafcio
I think it will be good to add optional attribute, right now each time key method is forcing to have specific key in attributes
Piotr Solnica
@solnic
@wafcio optional attribute or optional value? Those two are not the same
For optional attribute/key we could have sth like key(:foo).optional do ... end
Please report an issue about that
Krzysztof Wawer
@wafcio
I mean optional key, ok I will report some use case
Hannes Nevalainen
@kwando
This message was deleted
class UserSchema < Dry::Validation::Schema
  key(:age) do |age|
    age.filled? & age.int? & age.gt?(18) & age.lt?(100)
  end
end
@solnic ^^ that should work right?
Krzysztof Wawer
@wafcio
@kwando how do you invoke this schema ?
Hannes Nevalainen
@kwando
UserSchema.new.messages(user)
Krzysztof Wawer
@wafcio
what is user ?
Hannes Nevalainen
@kwando
a hash
Krzysztof Wawer
@wafcio
ok but can you give example how this hash looks ?
Hannes Nevalainen
@kwando
though the input is not there problem, it blows up when compiling the rules
the* problem
/dry-validation-185ec9d6959d/lib/dry/validation/rule_compiler.rb:48:in `visit_and': undefined method `&' for #<Dry::Validation::Rule::Conjunction:0x007fc95b01ef10> (NoMethodError)
Krzysztof Wawer
@wafcio
in 0.1.0 I don’t have this problem
Hannes Nevalainen
@kwando
ok, I use master.. probably not a very good idea =P
Krzysztof Wawer
@wafcio
I am not fun of using version from master because it can be unstable. For me stable versions are tagged versions
Hannes Nevalainen
@kwando
I do not really think there is a "stable" version yet though =P
Piotr Solnica
@solnic
@kwando there was an issue with nil? predicate, I had to rename it to none? to avoid conflicts with the built-in nil? method on Object
btw I just added support for optional values
Hannes Nevalainen
@kwando
Dry::Rule::Composite is missing & | methods
Piotr Solnica
@solnic
so ie key(:age) { |age| age.none? | (age.int? & age.gt?(18)) } this is translated to a coercion that will turn empty strings to nils
in Schema::Form
this is an explicit way of handling nil and optional values
@kwando oh, lemme fix that
I need to do it properly though, we have a very specific rule interface but I haven’t added shared specs for that, so we have some holes like you found :)
lemme brew some coffee and fix this situation :)
btw thanks guys for testing this so early, I appreciate that a lot <3
Hannes Nevalainen
@kwando
np really, thanks for "fixing" ruby =) <3
Piotr Solnica
@solnic
@kwando I’m afraid I can’t fix that part, my C skills don’t exist :joy:
@kwando anyhow, I can’t repro issue with missing & and | in composite
it inherits from Rule so it has these interfaces
@kwando do you have a repro?
Hannes Nevalainen
@kwando
hmm, I must have used a old version somehow =S
173a2e407ff9e652c3cb26932474375f5bcfa482 had the error
Hannes Nevalainen
@kwando
@solnic sneaky, you fixed it while splitting rules to separate files =P
Piotr Solnica
@solnic
@kwando huh?