1

文字列を中央に配置して空白を埋め込むことができるルビ印刷機能があるかどうか疑問に思っています。次のようなさまざまなテキストを含むプログラムのバナーを作成する必要があります。

<!-- ======================================================================= --> 
<!--                     Whatever text is in the string....                  --> 
<!-- ======================================================================= --> 

私は実際に <= 90 - 2 文字の文字列に対してこれを行う方法を見つけました..:

len = 90
msg = "random_string" 

str = msg.center( msg.length + (len - msg.length) )
print "<!-- " + str +  "-->"

しかし今は、メッセージのサイズが 90 を超える可能性をサポートし、その場合は新しい行に進むことができるようにしたいと考えています。単語の分割を回避できればなおさらです (論理が複雑になり始めます)。これを行うためのアイデア、または既存の宝石/ライブラリはありますか?

ありがとう、テッド

4

1 に答える 1

2

改訂:これが改訂された回答です。うまくいけば、これはあなたが考えていた線に沿ったものになります。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.                   -->
于 2012-10-16T22:51:30.047 に答える