== HelperClasses
Some simple classes to help in everyday tasks
=== DPuts
Ever wanted to have detailed debug-output, but in the end even PRODUCING the string without printing it was too long? Here comes DPuts! It let's you define different debug-levels and the strings are only evaluated if they're about to be printed! Great for that 10MB-dump that you only want for debugging...
Usage:
include HelperClasses::DPuts
DEBUG_LVL = 5
dputs(5){ "String with some #{huge_db.inspect}" }
This will evaluate and print the huge_db
variable, while
include HelperClasses::DPuts
DEBUG_LVL = 4
dputs(5){ "String with some #{huge_db.inspect}" }
will NOT evaluate it! The debug-levels are arbitrarily chosen like this:
0 - Errors 1 - Info and warnings, important 2 - Often used debug-messages - limit of production-use 3 - More detailed debugging 4 5 - Dumping lots of raw data
==== Fine-grained debugging
If you have a function with lots of dputs in it, and you'd like to output all debugging messages just from that function, you simply add
dputs_func
at the beginning of your function.
If you want just one specific dputs to be evaluated, just change its name to ddputs:
DEBUG_LVL = 0
ddputs(5){"String with lots of data#{huge_var.inspect}"}
will be evaluated!
=== Arraysym
to_sym and to_sym! - calls .to_sym on all elements. Usage:
using HelperClasses::ArraySym
p [ "a", "b" ].to_sym
Produces "[ :a, :b ]"
=== HashAccessor
This should be standard ruby. Access all elements of an array by prepending a "_".
==== Getting a value
using HelperClasses::HashAccessor
p { :a => 2, "a" => 3 }._a
Will print "2". So symbols have precedence over string-keys.
==== Setting a value
using HelperClasses::HashAccessor
a = { :a => 2, "a" => 3 }
a._a = 4
a._b = 5
p a
Will print { :a => 4, "a" => 3, :b => "5" }