Как удалить пробелы HTML в шаблонах ERB? - PullRequest
1 голос
/ 12 января 2012

Есть ли способ убрать пробелы HTML в шаблонах ERB, используя Sinatra?

Двигатель Slim делает это из коробки, но я не знаю, как ERB может сделать то же самое.

Ответы [ 3 ]

2 голосов
/ 12 января 2012

Используйте регулярное выражение ниже, чтобы убрать пробелы из HTML.Это не предпочтительный метод (из-за природы HTML, которая не подходит для регулярных выражений).Но это хорошо работает.

(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}
1 голос
/ 12 января 2012

Используйте промежуточное ПО Rack :: Deflater для сжатия gzip (обычный HTTP).

Как использовать промежуточное ПО: http://www.sinatrarb.com/intro#Rack%20Middleware

0 голосов
/ 12 января 2012

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
...