module BitGirder::Core::BitGirderMethods
Constants
- PARAM_TYPE_ARG
Each constant corresponds to a prefix in an error message appropriate to that type
- PARAM_TYPE_ENVVAR
- PARAM_TYPE_KEY
Public Instance Methods
# File lib/bitgirder/core.rb, line 365 def argv_to_argh( argv, syms ) argv = unpack_argv_array( argv, syms, caller ) argh = {} argv.size.times { |i| argh[ syms[ i ] ] = argv[ i ] } argh end
# File lib/bitgirder/core.rb, line 190 def check_fail_prefix( name, param_type ) # Since we'll most often be using symbols instead of strings for arg # parameter names we special case displaying them as strings name_str = if param_type == PARAM_TYPE_ARG && name.is_a?( Symbol ) %{"#{name_str}"} else name.inspect end "#{param_type} #{name.inspect}" end
Changes SomeClass to :some_class
# File lib/bitgirder/core.rb, line 289 def class_name_to_sym( cls_name ) not_nil( cls_name, "cls_name" ) if cls_name.size == 0 raise "Name is empty string" else str = cls_name[ 0 ].downcase + cls_name[ 1 .. -1 ]. gsub( /([A-Z])/ ) { |m| "_#{m.downcase}" } str.to_sym end end
# File lib/bitgirder/core.rb, line 169 def code( *argv ) BitGirderLogger.get_logger.code( *argv ) end
# File lib/bitgirder/core.rb, line 217 def compares_to( val, comp_target, comp_type, name = nil, param_type = PARAM_TYPE_ARG ) if val.send( comp_type, comp_target ) val else raise "#{check_fail_prefix( name, param_type )}' is out of range " \ "(#{comp_target} #{comp_type} #{val})" end end
# File lib/bitgirder/core.rb, line 173 def console( *argv ) BitGirderLogger.get_logger.console( *argv ) end
changes “some-arg” to SomeArg (we can add in namespace qualifiers too if needed, for instance ‘some-mod/some-other-mod/some-class’ becomes SomeMod::SomeOtherMod::SomeClass)
# File lib/bitgirder/core.rb, line 272 def ext_to_class_name( str ) not_nil( str, "str" ) str = str.to_s res = "" if str.size > 0 res = str[ 0 ].upcase + str[ 1 .. -1 ].gsub( /-(.)/ ) { |m| m[ 1 ].upcase } end res end
changes “some-arg” to :some_arg
# File lib/bitgirder/core.rb, line 240 def ext_to_sym( str ) not_nil( str, "str" ) # do str.to_s in case it's some random string-ish thing (like a sym) but # not an actual String str.to_s.gsub( /-/, "_" ).to_sym end
# File lib/bitgirder/core.rb, line 331 def has_env( key ) has_key( ENV, key, PARAM_TYPE_ENVVAR ) end
It is assumed that map responds to []= and is not nil. The ‘key’ parameter may be nil. Returns the value if key is present and not nil
# File lib/bitgirder/core.rb, line 323 def has_key( map, key, param_typ = PARAM_TYPE_KEY ) not_nil( map[ key ], key, param_typ ) end
# File lib/bitgirder/core.rb, line 327 def has_keys( map, *keys ) keys.inject( [] ) { |arr, key| arr << has_key( map, key ) } end
# File lib/bitgirder/core.rb, line 231 def nonnegative( val, name = nil, param_type = PARAM_TYPE_ARG ) compares_to( val, 0, :>=, name, param_type ) end
# File lib/bitgirder/core.rb, line 204 def not_nil( val, name = nil, param_type = PARAM_TYPE_ARG ) if val.nil? if name raise "#{check_fail_prefix( name, param_type )} cannot be nil" else raise "Value is nil" end else val end end
# File lib/bitgirder/core.rb, line 235 def positive( val, name = nil, param_type = PARAM_TYPE_ARG ) compares_to( val, 0, :>, name, param_type ) end
# File lib/bitgirder/core.rb, line 388 def raisef( *argv ) raise if argv.empty? cls = nil case v = argv.first when Exception then raise v when Class then cls = argv.shift end argv2 = cls == nil ? [] : [ cls ] argv2 << sprintf( *argv ) unless argv.empty? raise *argv2 end
# File lib/bitgirder/core.rb, line 335 def set_from_key( map, *syms ) syms.each { |sym| set_var( sym, has_key( map, sym ) ) } end
helper method to do the sym-conversion part only (no validity checking done on either the sym or val)
# File lib/bitgirder/core.rb, line 316 def set_var( sym, val ) instance_variable_set( "@#{sym}".to_sym, val ) end
Returns two arrays (both possibly empty) of stuff in argv before the first ‘–’, if any, and stuff after, if any, including any subsequent appearances of ‘–’
# File lib/bitgirder/core.rb, line 252 def split_argv( argv ) not_nil( argv, :argv ) first, last = [], nil argv.each do |arg| if last then last << arg else if arg == "--" then last = []; else first << arg end end end [ first, last ] end
Changes :some_sym to –some-sym (‘cli’ == ‘command line interface’)
# File lib/bitgirder/core.rb, line 310 def sym_to_cli_switch( sym ) "--" + sym_to_ext_id( sym ) end
Changes :some_sym to “some-sym”
# File lib/bitgirder/core.rb, line 305 def sym_to_ext_id( sym ) not_nil( sym, "sym" ).to_s.gsub( /_/, "-" ) end
# File lib/bitgirder/core.rb, line 375 def to_bool( obj ) case obj when true then true when false then false when nil then false when /^\s*(true|yes)\s*$/i then true when /^\s*(false|no)\s*$/i then false else raise "Invalid boolean string: #{obj}" end end
# File lib/bitgirder/core.rb, line 355 def unpack_argv_array( arr, vars, trace ) if arr.size == vars.size arr else msg = "wrong number of arguments (#{arr.size} for #{vars.size})" raise( Exception, msg, trace ) end end
# File lib/bitgirder/core.rb, line 339 def unpack_argv_hash( argh, vars, expct = false ) vars.inject( [] ) do |arr, sym| val = argh[ sym ] if val != nil arr << val else raise "Missing parameter: #{sym} in arg hash" if expct end arr end end
# File lib/bitgirder/core.rb, line 179 def warn( *argv ) BitGirderLogger.get_logger.warn( *argv ) end