SORU
22 EYLÜL 2010, ÇARŞAMBA


Nasıl Ruby HEREDOC önde gelen beyaz boşluk karakter kaldırabilirim?

Yapmaya çalışıyorum Ruby bir yorumlu metin olarak bir sorun yaşıyorum. - Tüm önde gelen boşluk bastırmak gerekiyordu operatör, karakterler dahil olmama rağmen her satırından önde gelen boşluk dönüyor. benim yöntem bu gibi görünüyor:

    def distinct_count
    <<-EOF
        \tSELECT
        \t CAST('#{name}' AS VARCHAR(30)) as COLUMN_NAME
        \t,COUNT(DISTINCT #{name}) AS DISTINCT_COUNT
        \tFROM #{table.call}
    EOF
end

ve benim çıkış bu gibi görünüyor:

    => "            \tSELECT\n            \t CAST('SRC_ACCT_NUM' AS VARCHAR(30)) as
COLUMN_NAME\n            \t,COUNT(DISTINCT SRC_ACCT_NUM) AS DISTINCT_COUNT\n
        \tFROM UD461.MGMT_REPORT_HNB\n"

bu, tabii ki, ilk " ve \t. arasındaki tüm boşluklar dışında bu özel durumda değil. herkes burada yanlış ne yapıyorum biliyor mu?

CEVAP
11 Mart 2012, Pazar


Eğer Raylar 3.0 veya daha yeni bir sürümünü kullanıyorsanız, #strip_heredoc deneyin. This example from the docs son iki satır' iki boşluk girinti: . koruyarak, hiçbir girinti ile ilk üç satırı yazdırır

if options[:usage]
  puts <<-USAGE.strip_heredoc
    This command does such and such.
 
    Supported options are:
      -h         This message
      ...
  USAGE
end

Belgeleri de notları: "Teknik olarak, bütün dizesinde az girintili satırı arar ve baştaki boşluk miktarını kaldırır."

İşte active_support/core_ext/string/strip.rb uygulama:

class String
  def strip_heredoc
    indent = scan(/^[ \t]*(?=\S)/).min.try(:size) || 0
    gsub(/^[ \t]{#{indent}}/, '')
  end
end

Ve test/core_ext/string_ext_test.rb testleri bulabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Rhapsody

    Rhapsody

    7 ŞUBAT 2008
  • SuperPrincessjo

    SuperPrinces

    1 EKİM 2010
  • Tahir Jahi

    Tahir Jahi

    6 Mart 2006