module Nuggets::String::FormatMixin
Constants
- FORMAT_RE
- PREFIX
Public Instance Methods
format(hash) → aString
click to toggle source
format { |directive| ... } → aString
Replace format directives in str.
If hash
given, uses value of directive key (String
or Symbol) as replacement value. Raises KeyError if directive key not found.
If block given, uses result of directive
yielded to block as replacement value. Raises ArgumentError if block returns no value.
# File lib/nuggets/string/format_mixin.rb 46 def format(hash = nil) 47 replace = lambda { |&b| gsub(FORMAT_RE) { 48 (k = $1 || $2) == PREFIX ? k : b[k] } } 49 50 hash ? replace.() { |k| hash.fetch(k) { 51 hash.fetch(k.to_sym) { raise(KeyError, "key not found: #{k}") } } } : 52 block_given? ? replace.() { |k| yield k or 53 raise(ArgumentError, "malformed format string - #{$&}") } : 54 raise(ArgumentError, 'wrong number of arguments (given 0, expected 1)') 55 end