Ara's main gem: validation with error message

Hi,

This request should probably be addressed directly to Ara but maybe others may have other ideas, so

Using Ara's main, I have something like the following,

Main do
  argument :user do
    required
    description "name or userid"
    validate{|user| check1(user)}
    validate{|user| check2(user,child)}
    validate{|user| check3(user,parent)}
  end

  def run
    p params[:user].value
  end
end

Currently, i only get one validation message like,

    invalid: argument(user)="botp"

It would be nice if i could specify/add an (optional) error message for each validation, like eg

    validate("user does not exist"){|user| check1(user)}
    validate("user must have child"){|user| check2(user,child)}
    validate("user need parent"){|user| check3(user,parent)}

Are you there, Ara? :wink:

Sorry for your time, Ara, as i'm fond of your main gem.
Thank you for main.

kind regards -botp

one idea:

cfp2:~ > cat a.rb
require 'main'

Main do
  argument(:user) do
    required
    description 'name or userid'

    message = 'YOU CAN USE A CLOSURE'

    validate do |user|
      if user == 'foo'
        message = 'message one'
        return false
      end

      if user == 'bar'
        message = 'message two'
        return false
      end

      true
    end

    error{ STDERR.puts message }
  end

  def run
    p param[:user].value
  end
end

cfp2:~ > ruby a.rb foo
message one

cfp2:~ > ruby a.rb bar
message two

cfp2:~ > ruby a.rb foobar
"foobar"

···

On Fri, Feb 29, 2008 at 9:53 PM, Peña, Botp <botp@delmonte-phil.com> wrote:

Hi,

This request should probably be addressed directly to Ara but maybe others may have other ideas, so

Using Ara's main, I have something like the following,

Main do
  argument :user do
    required
    description "name or userid"
    validate{|user| check1(user)}
    validate{|user| check2(user,child)}
    validate{|user| check3(user,parent)}
  end

  def run
    p params[:user].value
  end
end

Currently, i only get one validation message like,

    invalid: argument(user)="botp"

It would be nice if i could specify/add an (optional) error message for each validation, like eg

    validate("user does not exist"){|user| check1(user)}
    validate("user must have child"){|user| check2(user,child)}
    validate("user need parent"){|user| check3(user,parent)}

Are you there, Ara? :wink:

Sorry for your time, Ara, as i'm fond of your main gem.
Thank you for main.

kind regards -botp

--
-a
--
be kind whenever possible... it is always possible - h.h. the 14th dalai lama

# message = 'YOU CAN USE A CLOSURE'
# validate do |user|
# if user == 'foo'
# message = 'message one'
# return false

would it be possible to merge those last two lines? maybe something like raise_error 'message one' which then flags an error and sends the 'message one' to error(). see below question

# end
# if user == 'bar'
# message = 'message two'
# return false
# end

···

From: ara.t.howard [mailto:ara.t.howard@gmail.com]
#
# true
# end
#
# error{ STDERR.puts message }

standard format of error is error{|msg| ...}, how do i set an error message so that error can capture it and i can just generically call error{|msg| p msg}. no var declaration/tracking needed ie

kind regards -botp