改訂:これが改訂された回答です。うまくいけば、これはあなたが考えていた線に沿ったものになります。fmt
行のサイズを正しく設定するための Unix ツールがあることを前提としています。これは、少し手を加えるだけで、Ruby で実装できる可能性があります。
msg = <<MSG_END
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc tincidunt libero eget justo convallis tincidunt. Curabitur
augue arcu, eleifend sit amet porttitor a, porttitor ac purus.
Vivamus non leo nulla, vel pulvinar urna. Cum sociis natoque penatibus
et magnis dis parturient montes, nascetur ridiculus mus. In at purus
risus. Maecenas imperdiet commodo turpis ullamcorper porttitor. Sed
imperdiet porta rutrum. Proin sodales lorem et dui mattis accumsan.
Etiam fermentum magna sed justo tristique commodo. Nulla at purus
in leo dignissim ultrices. Mauris tincidunt egestas nunc, sit amet
placerat mauris hendrerit at. Vestibulum at vestibulum ante.
MSG_END
cols = 60 - 9 # subtract 9 to account for the extra `<!-- ` and ` -->`
sized = `echo '#{msg}' | fmt -w #{cols}`
centered = sized.split("\n").map do |l|
"<!-- #{l.center(cols)} -->\n"
end
puts centered
戻り値:
<!-- Lorem ipsum dolor sit amet, consectetur adipiscing -->
<!-- elit. Nunc tincidunt libero eget justo convallis -->
<!-- tincidunt. Curabitur augue arcu, eleifend sit amet -->
<!-- porttitor a, porttitor ac purus. Vivamus non leo -->
<!-- nulla, vel pulvinar urna. Cum sociis natoque -->
<!-- penatibus et magnis dis parturient montes, nascetur -->
<!-- ridiculus mus. In at purus risus. Maecenas -->
<!-- imperdiet commodo turpis ullamcorper porttitor. Sed -->
<!-- imperdiet porta rutrum. Proin sodales lorem et dui -->
<!-- mattis accumsan. Etiam fermentum magna sed justo -->
<!-- tristique commodo. Nulla at purus in leo dignissim -->
<!-- ultrices. Mauris tincidunt egestas nunc, sit amet -->
<!-- placerat mauris hendrerit at. Vestibulum at -->
<!-- vestibulum ante. -->