= ParamChecker ParamChecker is a small library for validation and parsing of user provided parameters. It is a handy way to check GET/POST params in Ruby webframeworks (like Rails or Sinatra). == Installation gem install param_checker or add ParamChecker to your Gemfile gem 'param_checker' and afterwards (when using the Gemfile) execute bundle install == Usage Include the ParamChecker module where ever you like. I usually put it into my Rails +ApplicationController.rb+ class ApplicationController < ActionController::Base include ParamChecker end You can then simply call +check_string_param(param_to_check, "my default", ["foo", "bar"])+ in every controller. Instead of including the module you could also call all functions of the module directly. ParamChecker.check_string_param(param_to_check, "my default", ["foo", "bar"]) There are currently 5 supported functions: * +check_integer_param(param, default, min, max)+ * +check_float_param(param, default, min, max)+ * +check_string_param(param, default, allowed)+ * +check_symbol_param(param, default, allowed)+ * +check_boolean_param(param, default)+ +param+ is always the string parameter to check. +default+ is a value that is returned when +param+ does not succeed the check. +min+ and +max+ in +check_integer_param+ and +check_float_param+ are the minimum and maximum allowed values of param. Both +min+ and +max+ options are optional. If they are not provided then no range is checked at all. +allowed+ in +check_string_param+ and +check_symbol_param+ represent the allowed values of +param+. They can be either a string (resp. a symbol for +check_symbol_param+), a regular expression, or an array of strings (resp. symbols for +check_symbol_param+). +check_boolean_param+ evaluates "1" or "true" string as true and "0" or "false" string to false. All functions return the parsed and type cast value (check_integer_param returns an integer, check_symbol_param returns a symbol, and so on). == Examples Below are some simple examples how I use those function in my controllers. # +max+ is not provided in this case. I just want to ensure that page is bigger than 1 and otherwise return 1. page = check_integer_param(params[:page], 1, 1) # Returns "name" if params[:field] is not "name" or "address" field = check_string_param(params[:field], "name", ["name", "address"]) # Return the boolean if params[:accepted] is a valid boolean representation, and the default false otherwise. accepted = check_boolean_param(params[:accepted], false) == Testing ParamChecker uses RSpec for testing and has a rake task for executing the provided specs rake spec Copyright © 2010-2011 Kai Schlamp (http://www.medihack.org), released under the MIT license