Sha256: f187cec0ff3f7566af24249722b4af816ca39732c672b367574877821fc8dc27
Contents?: true
Size: 1.18 KB
Versions: 1
Compression:
Stored size: 1.18 KB
Contents
# -*- encoding : utf-8 -*- require "readable_ident/model_addition" module ReadableIdent @@regex_prefix = /[a-zA-Z0-9]+|^$/ @@regex_seperator = /[~-]+|^$/ def self.generate_readable_ident(options={}) options[:length] ||= 4 options[:prefix] ||= '' if options[:prefix].empty? options[:seperator] ||= '' else options[:seperator] ||= '-' end self.validate_options(options) options[:prefix].to_s + options[:seperator].to_s + random_alphanumeric(options[:length].to_i).to_s end private def self.random_alphanumeric(length) ident = "" length.times { ident << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr } return ident end def self.validate_options(options) raise ArgumentError, 'length must be numeric' \ unless options[:length].is_a? Numeric raise ArgumentError, 'seperator length must be 1' \ unless options[:seperator].length < 2 raise ArgumentError, 'prefix is not in specified regex' \ if options[:prefix].match(@@regex_prefix).nil? raise ArgumentError, 'seperator is not in specified regex' \ if options[:seperator].match(@@regex_seperator).nil? end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
readable_ident-0.0.1 | lib/readable_ident.rb |