Class: Surus::Array::TextSerializer
- Inherits:
-
Object
- Object
- Surus::Array::TextSerializer
- Defined in:
- lib/surus/array/text_serializer.rb
Constant Summary collapse
- ARRAY_REGEX =
%r{ [{,] (?# All elements are prefixed with either the opening brace or a comma) (?: " (?<quoted_string>(?:[^"\\]|\\.)*) " | (?<null>NULL) | (?<unquoted_string>[^,}]+) ) }x
Instance Method Summary collapse
- #dump(array) ⇒ Object
- #escape(value) ⇒ Object
- #format(value) ⇒ Object
- #load(string) ⇒ Object
- #unescape(value) ⇒ Object
Instance Method Details
#dump(array) ⇒ Object
25 26 27 28 |
# File 'lib/surus/array/text_serializer.rb', line 25 def dump(array) return unless array '{' + array.map { |s| format(s) }.join(",") + '}' end |
#escape(value) ⇒ Object
34 35 36 37 38 |
# File 'lib/surus/array/text_serializer.rb', line 34 def escape(value) value .gsub('\\', '\\\\\\') .gsub('"', '\\"') end |
#format(value) ⇒ Object
30 31 32 |
# File 'lib/surus/array/text_serializer.rb', line 30 def format(value) value == nil ? "NULL" : '"' + escape(value) + '"' end |
#load(string) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/surus/array/text_serializer.rb', line 17 def load(string) return unless string string.scan(ARRAY_REGEX).map do |quoted_string, null, unquoted_string| element = quoted_string || unquoted_string element ? unescape(element) : nil end end |
#unescape(value) ⇒ Object
40 41 42 43 44 |
# File 'lib/surus/array/text_serializer.rb', line 40 def unescape(value) value .gsub('\\\\', '\\') .gsub('\\"', '"') end |