Module: MODL::UTIL
- Defined in:
- lib/modl/util/functions.rb
Overview
Helper functions for MODL.generate
Constant Summary collapse
- SHOULD_BE_GRAVE_QUOTED =
/.*[()\[\];{}="].*/.freeze
- IS_NUMERIC =
/^-?[0-9]*\.?[0-9]+(?:[Ee][+-]?[0-9]+)?$/.freeze
Class Method Summary collapse
- .double_quote_if_necessary(str) ⇒ Object
- .escape_and_quote(str) ⇒ Object
- .escape_double_quotes(str) ⇒ Object
- .escape_graves(str) ⇒ Object
- .grave_quote_if_necessary(str) ⇒ Object
- .non_string_primitive?(str) ⇒ Boolean
- .replace_nbsp(str) ⇒ Object
Class Method Details
.double_quote_if_necessary(str) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/modl/util/functions.rb', line 44 def self.double_quote_if_necessary(str) if str && str.include?('~`') "\"#{str}\"" else str end end |
.escape_and_quote(str) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/modl/util/functions.rb', line 56 def self.escape_and_quote(str) double_quote_if_necessary( grave_quote_if_necessary( escape_graves( UNICODE.escape( replace_nbsp( escape_double_quotes(str) ) ) ) ) ) end |
.escape_double_quotes(str) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/modl/util/functions.rb', line 15 def self.escape_double_quotes(str) return str unless str i = str.index('"', 1) # ignore the initial quote result = str # Don't affect the final quote in the string while !i.nil? && i < (result.length - 1) result = result.slice(0..(i - 1)) + '~u0022' + result.slice((i + 1)..) i = result.index('"', 1) end result end |
.escape_graves(str) ⇒ Object
9 10 11 12 13 |
# File 'lib/modl/util/functions.rb', line 9 def self.escape_graves(str) return str unless str str.gsub(/`/, '~`') end |
.grave_quote_if_necessary(str) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/modl/util/functions.rb', line 28 def self.grave_quote_if_necessary(str) return str unless str if str.match?(SHOULD_BE_GRAVE_QUOTED) || (str.match?(IS_NUMERIC) && str != '00' && str != '01' && str != '000') || (str.strip.empty? || str.match?(IS_NUMERIC) || str == 'true' || str == 'false' || str == 'null') "`#{str}`" else str end end |
.non_string_primitive?(str) ⇒ Boolean
70 71 72 |
# File 'lib/modl/util/functions.rb', line 70 def self.non_string_primitive?(str) str == 'true' || str == 'false' || str == 'null' || str.match?(IS_NUMERIC) end |
.replace_nbsp(str) ⇒ Object
52 53 54 |
# File 'lib/modl/util/functions.rb', line 52 def self.replace_nbsp(str) str.gsub('\u00a0', ' ') end |