diff options
author | Lars Kanis <lars@greiz-reinsdorf.de> | 2015-03-22 18:27:55 +0100 |
---|---|---|
committer | Lars Kanis <lars@greiz-reinsdorf.de> | 2015-03-25 15:05:24 +0100 |
commit | 647eb2cf1cd65b0391e3584361f0fc76246e64f3 (patch) | |
tree | 29ba4ebaabf3068cbc08ea52bcf5a87509c8c630 /activerecord/lib/active_record/connection_adapters/postgresql/array_parser.rb | |
parent | 9f2f268666e2f5d861905f4740943c85ea70f76e (diff) | |
download | rails-647eb2cf1cd65b0391e3584361f0fc76246e64f3.tar.gz rails-647eb2cf1cd65b0391e3584361f0fc76246e64f3.tar.bz2 rails-647eb2cf1cd65b0391e3584361f0fc76246e64f3.zip |
PostgreSQL, Use ruby-pg's built-in capabilities for array en-/decoding in C.
This obsoletes the ruby based implementations.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql/array_parser.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/array_parser.rb | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/array_parser.rb b/activerecord/lib/active_record/connection_adapters/postgresql/array_parser.rb deleted file mode 100644 index 1b74c039ce..0000000000 --- a/activerecord/lib/active_record/connection_adapters/postgresql/array_parser.rb +++ /dev/null @@ -1,93 +0,0 @@ -module ActiveRecord - module ConnectionAdapters - module PostgreSQL - module ArrayParser # :nodoc: - - DOUBLE_QUOTE = '"' - BACKSLASH = "\\" - COMMA = ',' - BRACKET_OPEN = '{' - BRACKET_CLOSE = '}' - - def parse_pg_array(string) # :nodoc: - local_index = 0 - array = [] - while(local_index < string.length) - case string[local_index] - when BRACKET_OPEN - local_index,array = parse_array_contents(array, string, local_index + 1) - when BRACKET_CLOSE - return array - end - local_index += 1 - end - - array - end - - private - - def parse_array_contents(array, string, index) - is_escaping = false - is_quoted = false - was_quoted = false - current_item = '' - - local_index = index - while local_index - token = string[local_index] - if is_escaping - current_item << token - is_escaping = false - else - if is_quoted - case token - when DOUBLE_QUOTE - is_quoted = false - was_quoted = true - when BACKSLASH - is_escaping = true - else - current_item << token - end - else - case token - when BACKSLASH - is_escaping = true - when COMMA - add_item_to_array(array, current_item, was_quoted) - current_item = '' - was_quoted = false - when DOUBLE_QUOTE - is_quoted = true - when BRACKET_OPEN - internal_items = [] - local_index,internal_items = parse_array_contents(internal_items, string, local_index + 1) - array.push(internal_items) - when BRACKET_CLOSE - add_item_to_array(array, current_item, was_quoted) - return local_index,array - else - current_item << token - end - end - end - - local_index += 1 - end - return local_index,array - end - - def add_item_to_array(array, current_item, quoted) - return if !quoted && current_item.length == 0 - - if !quoted && current_item == 'NULL' - array.push nil - else - array.push current_item - end - end - end - end - end -end |