lib/string_tools.rb in string_tools-0.10.0 vs lib/string_tools.rb in string_tools-0.10.1

- old
+ new

@@ -157,24 +157,22 @@ 'td' => %w(align width valign colspan rowspan style), 'th' => %w(align width valign colspan rowspan style), 'a' => %w(href target name style), 'table' => %w(cellpadding cellspacing width border align style), 'img' => %w(src width height style) - } + }.freeze - TAGS_WITHOUT_ATTRIBUTES = %w(b strong i em sup sub ul ol li blockquote br tr u caption thead) + TAGS_WITHOUT_ATTRIBUTES = %w(b strong i em sup sub ul ol li blockquote br tr u caption thead).freeze - def sanitize(str, attr = {}) + 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 - # Мерджим добавочные теги и атрибуты - attributes.merge!(attr) + attributes = TAGS_WITH_ATTRIBUTES.merge(attrs) elements = attributes.keys | TAGS_WITHOUT_ATTRIBUTES transformers = [LINK_NORMALIZER] transformers << IframeNormalizer.new(attributes['iframe']) if attributes.key?('iframe')