# File lib/gmp.rb, line 13 def self.sprintf(format, *args) first_pct = format.index '%' result = format[0...first_pct] #format.gsub(/(?<!%)%[0#+ ']*[0-9]*.?[0-9]*[a-zA-Z][^%]*/) do |fragment| format.gsub(Regexp.new('(?<!%)%[0#+ \']*[0-9]*.?[0-9]*[a-zA-Z][^%]*')) do |fragment| arg = args.shift if fragment =~ /%[0#+ ']*[0-9]*.?[0-9]*[ZQF]/ result << sprintf2(fragment, arg) elsif fragment =~ /%[0#+ ']*[0-9]*.?[0-9]*[PR]/ && GMP.const_defined?(:MPFR_VERSION) result << GMP::F.sprintf2(fragment, arg) else result << (fragment % arg) end end result end