如何在ERB模板中删除HTML空格?

时间:2012-01-11 22:46:15

标签: ruby sinatra erb

有没有办法在ERB模板中使用Sinatra剥离HTML空格?

Slim引擎开箱即用,但我不知道ERB如何做到这一点。

3 个答案:

答案 0 :(得分:2)

使用下面的正则表达式从HTML中去除空格。这不是更好的方法(由于HTML的性质不适合正则表达式)。但是,它运作良好。

(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}

答案 1 :(得分:1)

使用Rack::Deflater中间件进行gzip压缩(常规HTTP内容)。

如何使用中间件:http://www.sinatrarb.com/intro#Rack%20Middleware

答案 2 :(得分:0)

Sinatra允许您创建自己的中间件,可能的解决方案(对我有用)是创建自定义类(Sinatra术语中的中间件)并使用它。自定义类使用正则表达式删除所有空格,尊重内容:

class ObfuscateHTML
  def initialize(app, options = {})
    @app = app
  end

  def call(env)
    status, headers, response = @app.call(env)

    if headers["Content-Type"] =~ /\bhtml\b/
      response[0] = response[0].gsub(/\s*(<[^>]+>)\s*/, '\1')
      headers["Content-Length"] = response[0].size.to_s
    end

    [status, headers, response]
  end
end

use ObfuscateHTML