require "chartkick/version"
require "chartkick/helper"
require "chartkick/rails" if defined?(Rails)
require "chartkick/sinatra" if defined?(Sinatra)

module Chartkick
  class << self
    attr_accessor :content_for
    attr_accessor :options
  end
  self.options = {}
end

# for multiple series
# use Enumerable so it can be called on arrays
module Enumerable
  def chart_json
    if is_a?(Hash)
      if (key = keys.first) && key.is_a?(Array) && key.size == 2
        group_by { |k, _v| k[0] }.map do |name, data|
          {name: name, data: data.map { |k, v| [k[1], v] }}
        end
      else
        to_a
      end
    elsif is_a?(Array)
      map do |v|
        if v[:data].is_a?(Hash)
          v = v.dup
          v[:data] = v[:data].to_a
        end
        v
      end
    else
      self
    end.to_json
  end
end

require "chartkick/version"
require "chartkick/helper"
require "chartkick/rails" if defined?(Rails)
require "chartkick/sinatra" if defined?(Sinatra)

module Chartkick
  class << self
    attr_accessor :content_for
    attr_accessor :options
  end
  self.options = {}
end

# for multiple series
# use Enumerable so it can be called on arrays
module Enumerable
  def chart_json
    if is_a?(Hash) && (key = keys.first) && key.is_a?(Array) && key.size == 2
      group_by { |k, _v| k[0] }.map do |name, data|
        {name: name, data: data.map { |k, v| [k[1], v] }}
      end
    else
      self
    end.to_json
  end
end

--- 
+++ 
@@ -15,9 +15,21 @@
 # use Enumerable so it can be called on arrays
 module Enumerable
   def chart_json
-    if is_a?(Hash) && (key = keys.first) && key.is_a?(Array) && key.size == 2
-      group_by { |k, _v| k[0] }.map do |name, data|
-        {name: name, data: data.map { |k, v| [k[1], v] }}
+    if is_a?(Hash)
+      if (key = keys.first) && key.is_a?(Array) && key.size == 2
+        group_by { |k, _v| k[0] }.map do |name, data|
+          {name: name, data: data.map { |k, v| [k[1], v] }}
+        end
+      else
+        to_a
+      end
+    elsif is_a?(Array)
+      map do |v|
+        if v[:data].is_a?(Hash)
+          v = v.dup
+          v[:data] = v[:data].to_a
+        end
+        v
       end
     else
       self
Use arrays instead of hashes to preserve order when converting to json
