Module: Binxtils::InputNormalizer
- Extended by:
- Functionable
- Defined in:
- lib/binxtils/input_normalizer.rb
Instance Method Summary collapse
- #boolean(param = nil) ⇒ Object
-
#normalize_whitespace(value = nil) ⇒ Object
An HTML email's "blank" lines are often a , which String#strip doesn't count as whitespace.
-
#plain_text(value = nil) ⇒ Object
Plain text, so unlike sanitize: every entity is decoded and angle brackets stay literal.
- #present_or_false?(val) ⇒ Boolean
- #regex_escape(val) ⇒ Object
- #sanitize(str = nil) ⇒ Object
- #string(val) ⇒ Object
Instance Method Details
#boolean(param = nil) ⇒ Object
7 8 9 10 11 |
# File 'lib/binxtils/input_normalizer.rb', line 7 def boolean(param = nil) return false if param.blank? ActiveRecord::Type::Boolean.new.cast(param.to_s.strip) end |
#normalize_whitespace(value = nil) ⇒ Object
An HTML email's "blank" lines are often a , which String#strip doesn't count as whitespace
41 42 43 |
# File 'lib/binxtils/input_normalizer.rb', line 41 def normalize_whitespace(value = nil) value.to_s.tr(" ", " ").lines.map(&:strip).join("\n").gsub(/\n{3,}/, "\n\n").strip end |
#plain_text(value = nil) ⇒ Object
Plain text, so unlike sanitize: every entity is decoded and angle brackets stay literal
36 37 38 |
# File 'lib/binxtils/input_normalizer.rb', line 36 def plain_text(value = nil) normalize_whitespace(CGI.unescapeHTML(Rails::Html::Sanitizer.full_sanitizer.new.sanitize(value.to_s))) end |
#present_or_false?(val) ⇒ Boolean
19 20 21 |
# File 'lib/binxtils/input_normalizer.rb', line 19 def present_or_false?(val) val.to_s.present? end |
#regex_escape(val) ⇒ Object
23 24 25 26 |
# File 'lib/binxtils/input_normalizer.rb', line 23 def regex_escape(val) # Lazy hack, good enough for current purposes. Improve if required! string(val)&.gsub(/\W/, ".") end |
#sanitize(str = nil) ⇒ Object
28 29 30 31 32 33 |
# File 'lib/binxtils/input_normalizer.rb', line 28 def sanitize(str = nil) Rails::Html::Sanitizer.full_sanitizer.new.sanitize(str.to_s, encode_special_chars: true) .strip .gsub("&", "&") # ampersands are commonly used - keep them normal .gsub(/\s+/, " ") # remove extra whitespace end |
#string(val) ⇒ Object
13 14 15 16 17 |
# File 'lib/binxtils/input_normalizer.rb', line 13 def string(val) return nil if val.blank? val.to_s.delete("\u0000").strip.gsub(/\s+/, " ") end |