Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从代码中删除缩进_Ruby_String_Metaprogramming - Fatal编程技术网

Ruby 从代码中删除缩进

Ruby 从代码中删除缩进,ruby,string,metaprogramming,Ruby,String,Metaprogramming,我正在尝试创建一个函数,从代码中删除无关的起始选项卡,使其显示更加整洁。如中所述,我希望我的函数将此转换为: <div> <div> <p>Blah</p> </div> </div> 有什么想法吗?来自我个人图书馆的一个(稍作修改): 它比你所要求的更一般。它不仅处理制表符,还处理空格,并且不调整到第一行,而是调整到缩进最少的行 puts <<X.unin

我正在尝试创建一个函数,从代码中删除无关的起始选项卡,使其显示更加整洁。如中所述,我希望我的函数将此转换为:

    <div>
      <div>
       <p>Blah</p>
      </div>
    </div>

有什么想法吗?

来自我个人图书馆的一个(稍作修改):

它比你所要求的更一般。它不仅处理制表符,还处理空格,并且不调整到第一行,而是调整到缩进最少的行

puts <<X.unindent
    <div>
      <div>
       <p>Blah</p>
      </div>
    </div>
X

从我的个人库中放入一个(稍作修改):

它比你所要求的更一般。它不仅处理制表符,还处理空格,并且不调整到第一行,而是调整到缩进最少的行

puts <<X.unindent
    <div>
      <div>
       <p>Blah</p>
      </div>
    </div>
X

认为这是一件美好的事情,尤其是与我上面的混乱相比。谢谢注意,这在混合前导制表符和空格的情况下无法正常工作,这在源代码中经常出现。许多编辑器允许制表符显示为不同数量的空格,并在可能的情况下将前导空格替换为制表符。@通常情况下,即使空格和制表符混合使用,只要是一致的,例如,如果每个缩进都以
“\t\t”
开头,则可以正常工作。如果一些行以
“\t”
开头,而另一些行以
开头,那么它将无法正常工作,但我会为此责怪程序员,在这种情况下,源代码应该被修复。这是一件美妙的事情,尤其是与我上面的混乱相比。谢谢注意,这在混合前导制表符和空格的情况下无法正常工作,这在源代码中经常出现。许多编辑器允许制表符显示为不同数量的空格,并在可能的情况下将前导空格替换为制表符。@通常情况下,即使空格和制表符混合使用,只要是一致的,例如,如果每个缩进都以
“\t\t”
开头,则可以正常工作。如果一些行以
“\t”
开头,而另一些行以
开头,那么它将无法正常工作,但我会为此责怪程序员,在这种情况下,源代码应该是固定的。
class String
  def unindent; gsub(/^#{scan(/^\s+/).min}/, "") end
end
puts <<X.unindent
    <div>
      <div>
       <p>Blah</p>
      </div>
    </div>
X
<div>
  <div>
   <p>Blah</p>
  </div>
</div>