chartkick 3.4.0 → 3.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5afacd4c10d0cfddc6a2a660efead206ee042e80d48dd749f9de79feb365c1fd
4
- data.tar.gz: c7fc99b0b2b467a6326df99f5832de2b3674f5f80415749cf57177142eecfc45
3
+ metadata.gz: 5791c4748533e3fa0eaa1b2e1c6fbbffc726f8ab663f4590edfd0b9555894909
4
+ data.tar.gz: fb3e99507dcdf7934cf1bfc25052ba14f8c109af05379a45b47fda728c2eb3b7
5
5
  SHA512:
6
- metadata.gz: 75b1793b427c5d9d4604b813773253adb864b6134fad48f952c72377f75da40c8daa19eaf06fd7ce0b2da31a1ba436cfe54bde318ac849ec2080652582ac7076
7
- data.tar.gz: 8f47e12f6e9c746871d02f0d5bd3093da1017c5a222837696b5b0d7b7e4008c400c8556e4f85ec7b0ccd79c15a9cb510a91a7d9ecf896d1a106b7c82e68ddc36
6
+ metadata.gz: e417d6dcc2ae547cd63c7ded309329b112cfc9b6195c29c08d6192e3dbba4c630695815cc65f3d23e3b3833bdafc46bb04809b708362de8d98ee5f04568fbca3
7
+ data.tar.gz: 730f4f49ced271c3f7e15e3a3e57d5f3f81c08d5a2bd0de3792ec6e2747c433bd37b185bd38db2dfaede7aa0c5ab0ad63255d30a675379e7035182df898bf836
@@ -1,6 +1,10 @@
1
+ ## 3.4.1 (2020-10-06)
2
+
3
+ - Relaxed validation for `width` and `height` options
4
+
1
5
  ## 3.4.0 (2020-08-04)
2
6
 
3
- - Fixed CSS injection with `width` and `height` options
7
+ - Fixed CSS injection with `width` and `height` options - [more info](https://github.com/ankane/chartkick/issues/546)
4
8
 
5
9
  ## 3.3.2 (2020-07-23)
6
10
 
@@ -9,7 +13,7 @@
9
13
  ## 3.3.1 (2019-12-26)
10
14
 
11
15
  - Updated Chart.js to 2.9.3
12
- - Fixed deprecating warnings in Ruby 2.7
16
+ - Fixed deprecation warnings in Ruby 2.7
13
17
 
14
18
  ## 3.3.0 (2019-11-09)
15
19
 
@@ -27,7 +31,7 @@
27
31
 
28
32
  ## 3.2.0 (2019-06-04)
29
33
 
30
- - Fixed XSS vulnerability - see [#488](https://github.com/ankane/chartkick/issues/488)
34
+ - Fixed XSS vulnerability - [more info](https://github.com/ankane/chartkick/issues/488)
31
35
 
32
36
  ## 3.1.0 (2019-05-26)
33
37
 
data/README.md CHANGED
@@ -4,7 +4,7 @@ Create beautiful JavaScript charts with one line of Ruby. No more fighting with
4
4
 
5
5
  [See it in action](https://chartkick.com)
6
6
 
7
- :fire: For admin charts and dashboards, check out [Blazer](https://github.com/ankane/blazer/)
7
+ :fire: For admin charts and dashboards, check out [Blazer](https://github.com/ankane/blazer/), and for advanced visualizations, check out [Vega](https://github.com/ankane/vega)
8
8
 
9
9
  :two_hearts: A perfect companion to [Groupdate](https://github.com/ankane/groupdate), [Hightop](https://github.com/ankane/hightop), and [ActiveMedian](https://github.com/ankane/active_median)
10
10
 
@@ -1,3 +1,5 @@
1
+ # modules
2
+ require "chartkick/enumerable"
1
3
  require "chartkick/helper"
2
4
  require "chartkick/version"
3
5
 
@@ -18,29 +20,3 @@ module Chartkick
18
20
  end
19
21
  self.options = {}
20
22
  end
21
-
22
- # for multiple series
23
- # use Enumerable so it can be called on arrays
24
- module Enumerable
25
- def chart_json
26
- if is_a?(Hash)
27
- if (key = keys.first) && key.is_a?(Array) && key.size == 2
28
- group_by { |k, _v| k[0] }.map do |name, data|
29
- {name: name, data: data.map { |k, v| [k[1], v] }}
30
- end
31
- else
32
- to_a
33
- end
34
- elsif is_a?(Array)
35
- map do |v|
36
- if v.is_a?(Hash) && v[:data].is_a?(Hash)
37
- v = v.dup
38
- v[:data] = v[:data].to_a
39
- end
40
- v
41
- end
42
- else
43
- self
44
- end.to_json
45
- end
46
- end
@@ -0,0 +1,25 @@
1
+ # for both multiple series and
2
+ # making sure hash order is preserved in JavaScript
3
+ module Enumerable
4
+ def chart_json
5
+ if is_a?(Hash)
6
+ if (key = keys.first) && key.is_a?(Array) && key.size == 2
7
+ group_by { |k, _v| k[0] }.map do |name, data|
8
+ {name: name, data: data.map { |k, v| [k[1], v] }}
9
+ end
10
+ else
11
+ to_a
12
+ end
13
+ elsif is_a?(Array)
14
+ map do |v|
15
+ if v.is_a?(Hash) && v[:data].is_a?(Hash)
16
+ v = v.dup
17
+ v[:data] = v[:data].to_a
18
+ end
19
+ v
20
+ end
21
+ else
22
+ self
23
+ end.to_json
24
+ end
25
+ end
@@ -77,7 +77,8 @@ module Chartkick
77
77
  css_vars.each_key do |k|
78
78
  # limit to alphanumeric and % for simplicity
79
79
  # this prevents things like calc() but safety is the priority
80
- raise ArgumentError, "Invalid #{k}" unless css_vars[k] =~ /\A[a-zA-Z0-9%]*\z/
80
+ # dot does not need escaped in square brackets
81
+ raise ArgumentError, "Invalid #{k}" unless css_vars[k] =~ /\A[a-zA-Z0-9%.]*\z/
81
82
  # we limit above, but escape for safety as fail-safe
82
83
  # to prevent XSS injection in worse-case scenario
83
84
  css_vars[k] = ERB::Util.html_escape(css_vars[k])
@@ -1,3 +1,3 @@
1
1
  module Chartkick
2
- VERSION = "3.4.0"
2
+ VERSION = "3.4.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chartkick
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-04 00:00:00.000000000 Z
11
+ date: 2020-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,7 +52,7 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- description:
55
+ description:
56
56
  email: andrew@chartkick.com
57
57
  executables: []
58
58
  extensions: []
@@ -63,6 +63,7 @@ files:
63
63
  - README.md
64
64
  - lib/chartkick.rb
65
65
  - lib/chartkick/engine.rb
66
+ - lib/chartkick/enumerable.rb
66
67
  - lib/chartkick/helper.rb
67
68
  - lib/chartkick/sinatra.rb
68
69
  - lib/chartkick/version.rb
@@ -72,7 +73,7 @@ homepage: https://chartkick.com
72
73
  licenses:
73
74
  - MIT
74
75
  metadata: {}
75
- post_install_message:
76
+ post_install_message:
76
77
  rdoc_options: []
77
78
  require_paths:
78
79
  - lib
@@ -87,8 +88,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
88
  - !ruby/object:Gem::Version
88
89
  version: '0'
89
90
  requirements: []
90
- rubygems_version: 3.1.2
91
- signing_key:
91
+ rubygems_version: 3.0.3
92
+ signing_key:
92
93
  specification_version: 4
93
94
  summary: Create beautiful JavaScript charts with one line of Ruby
94
95
  test_files: []