相关疑难解决方法(0)

如何从Ruby HEREDOC中删除前导空格字符?

我正在尝试制作一个Ruby heredoc的问题.它正在返回每行的前导空格,即使我包含 - 运算符,它应该抑制所有前导空白字符.我的方法看起来像这样:

    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
Run Code Online (Sandbox Code Playgroud)

我的输出如下:

    => "            \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"
Run Code Online (Sandbox Code Playgroud)

当然,这在这个特定的例子中是正确的,除了第一个"和\ t之间的所有空格.有没有人知道我在这里做错了什么?

ruby whitespace heredoc

83
推荐指数
6
解决办法
3万
查看次数

Ruby缩进多行字符串

这是一个最佳实践问题.有明显的方法可以做到这一点,其中没有一个看起来很正确.

我经常需要测试是否产生了一些多行字符串.这通常会打破缩进,使一切看起来像一团糟:

class TestHelloWorld < Test::Unit::TestCase
  def test_hello
    assert_equal <<EOS, hello_world
Hello, world!
  World greets you
EOS
  end
end
Run Code Online (Sandbox Code Playgroud)

随着<<-我在这里可以缩进文档的盯防,但是它不会删除里面定界符缩进,它仍然看起来太可怕了.

class TestHelloWorld < Test::Unit::TestCase
  def test_hello
    assert_equal <<-EOS, hello_world
Hello, world!
  World greets you
    EOS
  end
end
Run Code Online (Sandbox Code Playgroud)

这让我缩进,但测试线的可读性受到影响.这gsub真的感觉不对劲.

class TestHelloWorld < Test::Unit::TestCase
  def test_hello
    assert_equal <<-EOS.gsub(/^ {6}/, ""), hello_world
      Hello, world!
        World greets you
    EOS
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有办法测试这种真正可读的多行字符串?

ruby code-formatting

11
推荐指数
2
解决办法
9578
查看次数

标签 统计

ruby ×2

code-formatting ×1

heredoc ×1

whitespace ×1