Module: MMMD::EntityUtils
- Defined in:
 - lib/mmmd/util.rb
 
Overview
Utils for working with entities in strings
Constant Summary collapse
- ENTITY_DATA =
 JSON.parse(File.read("#{__dir__}/entities.json"))
Class Method Summary collapse
- 
  
    
      .decode_entities(string)  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    
Decode html entities in string.
 - 
  
    
      .encode_entities(string)  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    
Encode unsafe html entities in string @sg-ignore.
 - 
  
    
      .encode_entities_ascii(string)  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    
Encode unsafe html entities in string (ASCII-compatible) @sg-ignore.
 - 
  
    
      .encode_uri(string)  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    
Encode uri components that may break HTML syntax.
 
Class Method Details
.decode_entities(string) ⇒ String
Decode html entities in string
      13 14 15 16 17 18 19 20 21 22 23  | 
    
      # File 'lib/mmmd/util.rb', line 13 def self.decode_entities(string) string = string.gsub(/&#\d{1,7};/) do |match| match[1..-2].to_i.chr("UTF-8") end string = string.gsub(/&#[xX][\dA-Fa-f]{1,6};/) do |match| match[3..-2].to_i(16).chr("UTF-8") end string.gsub(/&\w+;/) do |match| ENTITY_DATA[match] ? ENTITY_DATA[match]["characters"] : match end end  | 
  
.encode_entities(string) ⇒ String
Encode unsafe html entities in string @sg-ignore
      44 45 46 47 48 49 50  | 
    
      # File 'lib/mmmd/util.rb', line 44 def self.encode_entities(string) string.gsub("&", "&") .gsub("<", "<") .gsub(">", ">") .gsub('"', """) .gsub("'", "'") end  | 
  
.encode_entities_ascii(string) ⇒ String
Encode unsafe html entities in string (ASCII-compatible) @sg-ignore
      29 30 31 32 33 34 35 36 37 38  | 
    
      # File 'lib/mmmd/util.rb', line 29 def self.encode_entities_ascii(string) string.gsub("&", "&") .gsub("<", "<") .gsub(">", ">") .gsub('"', """) .gsub("'", "'") .gsub(/[^\x00-\x7F]/) do |match| "&#x#{match.codepoints[0]};" end end  | 
  
.encode_uri(string) ⇒ String
Encode uri components that may break HTML syntax
      55 56 57 58 59  | 
    
      # File 'lib/mmmd/util.rb', line 55 def self.encode_uri(string) string.gsub('"', "%22") .gsub("'", "%27") .gsub(" ", "%20") end  |