我正在尝试创建一个CLI应用程序,我想将文本输出到控制台。我无法弄清楚如何格式化我的想法。
当您输入rails new app
时,您会收到以下输出:
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.keep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.keep
run bundle install
如何编写输出以确保所有命令都垂直对齐?
PS。我使用Thor是重要的。
由于
答案 0 :(得分:1)
我认为你是在思考这个问题。它们只是打印出文本行,间距介于两者之间。
puts " create tmp/cache"
puts " create tmp/cache/assets"
# ...
将以完全相同的方式输出。
Ruby中有一个函数可以帮助解决这个问题(String#rjust
),它会在字符串中填充左边的空格。因此,如果您希望第一列的宽度为10个字符,则可以rjust
值为10的字符串,并将它们对齐到右侧。例如,如果您正在迭代哈希,则可以运行以下代码:
hash = { "hello" => "world", "foo" => "bar" }
hash.each do |key, value|
puts "#{key.rjust(7)} #{value}"
end
# hello world
# foo bar
答案 1 :(得分:1)
您可以在案例中使用尊敬的sprintf
。有一个number of stylistic and utilitarian reasons why,但通常它会使代码更简洁。您还可以以编程方式指定所需的填充。在您的具体示例中:
output = {create: 'something.rb',
identical: 'something_else.rb',}
output.each do |key, value|
puts sprintf '%10s %3s', key.to_s, value
end
给你
create something.rb
identical something_else.rb