class StringTools::Sanitizer::Base
Constants
- TAGS_WITHOUT_ATTRIBUTES
- TAGS_WITH_ATTRIBUTES
Public Instance Methods
sanitize(str, attrs = {})
click to toggle source
# File lib/string_tools.rb, line 158 def sanitize(str, attrs = {}) # для корректного обрезания utf строчек режем через mb_chars # для защиты от перегрузки парсера пропускаем максимум 1 мегабайт текста # длина русского символа в utf-8 - 2 байта, 1Мб/2б = 524288 = 2**19 символов # длина по символам с перестраховкой, т.к. латинские символы(теги, например) занимают 1 байт str = str.mb_chars.slice(0..(2**19)).to_s # Мерджим добавочные теги и атрибуты attributes = TAGS_WITH_ATTRIBUTES.merge(attrs) elements = attributes.keys | TAGS_WITHOUT_ATTRIBUTES transformers = [LINK_NORMALIZER] transformers << IframeNormalizer.new(attributes['iframe']) if attributes.key?('iframe') Sanitize.fragment( str, :attributes => attributes, :elements => elements, :css => {:properties => Sanitize::Config::RELAXED[:css][:properties]}, :remove_contents => %w(style script), :allow_comments => false, :transformers => transformers ) end