From 9193b9e9ea69b0870412591daac2d0ccee687d98 Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Fri, 21 Jan 2022 19:52:46 +0500 Subject: [PATCH] Ruby: Add method KernAux.sprintf --- pkgs/ruby/lib/kernaux.rb | 10 ++++++++++ pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb | 11 +++++++++++ 2 files changed, 21 insertions(+) create mode 100644 pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb diff --git a/pkgs/ruby/lib/kernaux.rb b/pkgs/ruby/lib/kernaux.rb index 472ce5e..1975771 100644 --- a/pkgs/ruby/lib/kernaux.rb +++ b/pkgs/ruby/lib/kernaux.rb @@ -20,6 +20,16 @@ module KernAux assert_do file, Integer(line), msg end + def self.sprintf(*args) + args.map do |arg| + if arg.is_a? Array + sprintf1(*arg) + else + arg + end + end.join.freeze + end + def self.sprintf1(format, arg = nil) if arg.nil? snprintf1(SPRINTF1_BUFFER_SIZE, format).first diff --git a/pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb b/pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb new file mode 100644 index 0000000..2f5fd85 --- /dev/null +++ b/pkgs/ruby/spec/lib/kernaux/sprintf_spec.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe KernAux, '.sprintf' do + subject(:sprintf) { described_class.sprintf 'Hello, ', ['%s', 'World'], '!' } + + it { is_expected.to be_instance_of String } + it { is_expected.to be_frozen } + it { is_expected.to eq 'Hello, World!' } +end