image-charts 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/image-charts.rb +514 -0
  3. metadata +64 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 65e5986726ffab66117e28d02fcbea41b7f09c57a261e3865efd4783ffa8e1c3
4
+ data.tar.gz: aea1e22c02eda5c92a05aaf3264c11c707ae928caa38a8807b29e3d5d3abaf07
5
+ SHA512:
6
+ metadata.gz: 5ccabdcba36a47496a8e07815e689f67d4d28a922261858d09f361740e3e8cced250ecd6ec3b170af8763674e09271c7a255f2ee054bf23d2c62b4dfe261bffd
7
+ data.tar.gz: f51abe91859f621cdd35e4e7582ecc1abf893dcc985412cffa7ed0b60a02a1b854954e64f53d3a69e0fd15c241ccc721a8f61d86d9eacbb2ce068391c17c2fab
@@ -0,0 +1,514 @@
1
+ # encoding: utf-8
2
+ # warn_indent: true
3
+
4
+ require 'uri'
5
+ require 'openssl'
6
+ require 'net/http'
7
+ require 'json'
8
+ require 'rubygems'
9
+ require 'base64'
10
+
11
+ #
12
+ # Image-Charts API URL builder
13
+ #
14
+ class ImageCharts
15
+ attr_reader :request_headers, :_protocol, :_host, :_port, :_pathname, :_timeout, :_query
16
+
17
+ def initialize(secret: nil, protocol: 'https', host: 'image-charts.com', port: 443, timeout: 5000, previous: nil)
18
+ @_protocol = protocol
19
+ @_host = host
20
+ @_port = port
21
+ @_pathname = '/chart'
22
+ @_timeout = timeout
23
+ @_query = if previous then previous else Hash.new(0) end
24
+ @_secret = secret
25
+ end
26
+
27
+ #
28
+ # Get the full Image-Charts API url (signed and encoded if necessary)
29
+ # @return {string} full generated url
30
+ #
31
+ def to_url()
32
+ search_params = URI.encode_www_form(@_query)
33
+
34
+ if @_query.has_key?("icac") && @_secret && @_secret.length > 1
35
+ signature = OpenSSL::HMAC.hexdigest('SHA256', @_secret, search_params)
36
+ search_params += "&ichm=#{signature}"
37
+ end
38
+
39
+ "#{@_protocol}://#{@_host}:#{@_port}#{@_pathname}?#{search_params}"
40
+ end
41
+
42
+ #
43
+ # Do a request to Image-Charts API with current configuration and yield a binary string
44
+ # @return {String} raw image data, binary string
45
+ #
46
+ def to_blob()
47
+
48
+ spec = Gem.loaded_specs["image-charts"]
49
+ @request_headers = {"user-agent" => "ruby-image-charts/" + (if spec then spec.version.to_s else 'latest' end) + (if @_query.has_key?('icac') then " (#{@_query['icac']})" else '' end)}
50
+
51
+ http = Net::HTTP.new(@_host, @_port)
52
+
53
+ http.read_timeout= @_timeout
54
+ http.open_timeout= @_timeout
55
+ http.use_ssl = true
56
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
57
+ res = http.request(Net::HTTP::Get.new(URI(to_url), @request_headers))
58
+
59
+ if (200..300).cover? res.code.to_i
60
+ return res.body
61
+ end
62
+
63
+
64
+ validation_message = res['x-ic-error-validation']
65
+ validation_code = res['x-ic-error-code']
66
+
67
+ message = if validation_message && validation_message.length > 0 then
68
+ JSON.parse(validation_message).map {|x| x['message']}.join("\n")
69
+ elsif validation_code.length > 0 then
70
+ validation_code
71
+ else
72
+ res.code.to_s
73
+ end
74
+
75
+ raise ImageChartsError.new(message, (validation_code || res.statusText), res.code)
76
+ end
77
+
78
+ #
79
+ # Do a request to Image-Charts API with current configuration and writes the content inside a file
80
+ # @return {Promise}
81
+ #
82
+ def to_file(file)
83
+ data = to_blob()
84
+ File.open(file, "wb") {
85
+ |file| file.puts data
86
+ }
87
+ end
88
+
89
+ #
90
+ # Do a request to Image-Charts API with current configuration and yield a promise of a base64 encoded data URI
91
+ # @return {Promise<String>} base64 data URI wrapped inside a promise
92
+ #
93
+ def to_data_uri()
94
+ encoding = 'base64'
95
+ mimetype = if @_query.has_key?('chan') then 'image/gif' else 'image/png' end
96
+ return "data:#{mimetype};#{encoding},#{Base64.encode64(to_blob())}"
97
+ end
98
+
99
+
100
+
101
+ # bvg= grouped bar chart, bvs= stacked bar chart, lc=line chart, ls=sparklines, p=pie chart. gv=graph viz
102
+ # Three-dimensional pie chart (p3) will be rendered in 2D, concentric pie chart are not supported.
103
+ # [Optional, line charts only] You can add :nda after the chart type in line charts to hide the default axes.
104
+ #
105
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-type/}
106
+ # # @example
107
+ # chart = ImageCharts().cht('bvg')
108
+ # chart = ImageCharts().cht('p')
109
+ #
110
+ # Chart type
111
+ def cht(value)
112
+ _clone 'cht', value
113
+ end
114
+
115
+ # chart data
116
+ #
117
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/data-format/}
118
+ # # @example
119
+ # chart = ImageCharts().chd('a:-100,200.5,75.55,110')
120
+ # chart = ImageCharts().chd('t:10,20,30|15,25,35')
121
+ # chart = ImageCharts().chd('s:BTb19_,Mn5tzb')
122
+ # chart = ImageCharts().chd('e:BaPoqM2s,-A__RMD6')
123
+ #
124
+ # chart data
125
+ def chd(value)
126
+ _clone 'chd', value
127
+ end
128
+
129
+ # You can configure some charts to scale automatically to fit their data with chds=a. The chart will be scaled so that the largest value is at the top of the chart and the smallest (or zero, if all values are greater than zero) will be at the bottom. Otherwise the &#34;&amp;lg;series_1_min&amp;gt;,&amp;lg;series_1_max&amp;gt;,...,&amp;lg;series_n_min&amp;gt;,&amp;lg;series_n_max&amp;gt;&#34; format set one or more minimum and maximum permitted values for each data series, separated by commas. You must supply both a max and a min. If you supply fewer pairs than there are data series, the last pair is applied to all remaining data series. Note that this does not change the axis range; to change the axis range, you must set the chxr parameter. Valid values range from (+/-)9.999e(+/-)199. You can specify values in either standard or E notation.
130
+ #
131
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/data-format/#text-format-with-custom-scaling}
132
+ # # @example
133
+ # chart = ImageCharts().chds('-80,140')
134
+ #
135
+ # data format with custom scaling
136
+ def chds(value)
137
+ _clone 'chds', value
138
+ end
139
+
140
+ # How to encode the data in the QR code. &#39;UTF-8&#39; is the default and only supported value. Contact our team if you wish to have support for Shift_JIS and/or ISO-8859-1.
141
+ #
142
+ # [Reference documentation]{@link https://documentation.image-charts.com/qr-codes/#data-encoding}
143
+ # # @example
144
+ # chart = ImageCharts().choe('UTF-8')
145
+ #
146
+ # QRCode data encoding
147
+ def choe(value)
148
+ _clone 'choe', value
149
+ end
150
+
151
+ # QRCode error correction level and optional margin
152
+ #
153
+ # [Reference documentation]{@link https://documentation.image-charts.com/qr-codes/#error-correction-level-and-margin}
154
+ # # @example
155
+ # chart = ImageCharts().chld('L|4')
156
+ # chart = ImageCharts().chld('M|10')
157
+ # chart = ImageCharts().chld('Q|5')
158
+ # chart = ImageCharts().chld('H|18')
159
+ # @default 'L|4'
160
+ # QRCode error correction level and optional margin
161
+ def chld(value)
162
+ _clone 'chld', value
163
+ end
164
+
165
+ # You can specify the range of values that appear on each axis independently, using the chxr parameter. Note that this does not change the scale of the chart elements (use chds for that), only the scale of the axis labels.
166
+ #
167
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-axis/#axis-range}
168
+ # # @example
169
+ # chart = ImageCharts().chxr('0,0,200')
170
+ # chart = ImageCharts().chxr('0,10,50,5')
171
+ # chart = ImageCharts().chxr('0,0,500|1,0,200')
172
+ #
173
+ # Axis data-range
174
+ def chxr(value)
175
+ _clone 'chxr', value
176
+ end
177
+
178
+ # Some clients like Flowdock/Facebook messenger and so on, needs an URL to ends with a valid image extension file to display the image, use this parameter at the end your URL to support them. Valid values are &#34;.png&#34; and &#34;.gif&#34;
179
+ #
180
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/output-format/}
181
+ # # @example
182
+ # chart = ImageCharts().chof('.png')
183
+ # @default '.png'
184
+ # Output fake format
185
+ def chof(value)
186
+ _clone 'chof', value
187
+ end
188
+
189
+ # Maximum chart size for all charts except maps is 998,001 pixels total (Google Image Charts was limited to 300,000), and maximum width or length is 999 pixels.
190
+ #
191
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-size/}
192
+ # # @example
193
+ # chart = ImageCharts().chs('400x400')
194
+ #
195
+ # Chart size (&lt;width&gt;x&lt;height&gt;)
196
+ def chs(value)
197
+ _clone 'chs', value
198
+ end
199
+
200
+ # Format: &amp;lt;data_series_1_label&amp;gt;|...|&amp;lt;data_series_n_label&amp;gt;. The text for the legend entries. Each label applies to the corresponding series in the chd array. Use a + mark for a space. If you do not specify this parameter, the chart will not get a legend. There is no way to specify a line break in a label. The legend will typically expand to hold your legend text, and the chart area will shrink to accommodate the legend.
201
+ #
202
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/legend-text-and-style/}
203
+ # # @example
204
+ # chart = ImageCharts().chdl('NASDAQ|FTSE100|DOW')
205
+ #
206
+ # Text for each series, to display in the legend
207
+ def chdl(value)
208
+ _clone 'chdl', value
209
+ end
210
+
211
+ # Specifies the color and font size of the legend text. &lt;color&gt;,&lt;size&gt;
212
+ #
213
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/legend-text-and-style/}
214
+ # # @example
215
+ # chart = ImageCharts().chdls('9e9e9e,17')
216
+ # @default '000000'
217
+ # Chart legend text and style
218
+ def chdls(value)
219
+ _clone 'chdls', value
220
+ end
221
+
222
+ # Solid or dotted grid lines
223
+ #
224
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/grid-lines/}
225
+ # # @example
226
+ # chart = ImageCharts().chg('1,1')
227
+ # chart = ImageCharts().chg('0,1,1,5')
228
+ #
229
+ # Solid or dotted grid lines
230
+ def chg(value)
231
+ _clone 'chg', value
232
+ end
233
+
234
+ # You can specify the colors of a specific series using the chco parameter.
235
+ # Format should be &amp;lt;series_2&amp;gt;,...,&amp;lt;series_m&amp;gt;, with each color in RRGGBB format hexadecimal number.
236
+ # The exact syntax and meaning can vary by chart type; see your specific chart type for details.
237
+ # Each entry in this string is an RRGGBB[AA] format hexadecimal number.
238
+ # If there are more series or elements in the chart than colors specified in your string, the API typically cycles through element colors from the start of that series (for elements) or for series colors from the start of the series list.
239
+ # Again, see individual chart documentation for details.
240
+ #
241
+ # [Reference documentation]{@link https://documentation.image-charts.com/bar-charts/#examples}
242
+ # # @example
243
+ # chart = ImageCharts().chco('FFC48C')
244
+ # chart = ImageCharts().chco('FF0000,00FF00,0000FF')
245
+ # @default 'F56991,FF9F80,FFC48C,D1F2A5,EFFAB4'
246
+ # series colors
247
+ def chco(value)
248
+ _clone 'chco', value
249
+ end
250
+
251
+ # chart title
252
+ #
253
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-title/}
254
+ # # @example
255
+ # chart = ImageCharts().chtt('My beautiful chart')
256
+ #
257
+ # chart title
258
+ def chtt(value)
259
+ _clone 'chtt', value
260
+ end
261
+
262
+ # Format should be &#34;&lt;color&gt;,&lt;font_size&gt;[,&lt;opt_alignment&gt;,&lt;opt_font_family&gt;,&lt;opt_font_style&gt;]&#34;, opt_alignement is not supported
263
+ #
264
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-title/}
265
+ # # @example
266
+ # chart = ImageCharts().chts('00FF00,17')
267
+ #
268
+ # chart title colors and font size
269
+ def chts(value)
270
+ _clone 'chts', value
271
+ end
272
+
273
+ # Specify which axes you want (from: &#34;x&#34;, &#34;y&#34;, &#34;t&#34; and &#34;r&#34;). You can use several of them, separated by a coma; for example: &#34;x,x,y,r&#34;. Order is important.
274
+ #
275
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-axis/#visible-axes}
276
+ # # @example
277
+ # chart = ImageCharts().chxt('y')
278
+ # chart = ImageCharts().chxt('x,y')
279
+ # chart = ImageCharts().chxt('x,x,y')
280
+ # chart = ImageCharts().chxt('x,y,t,r,t')
281
+ #
282
+ # Display values on your axis lines or change which axes are shown
283
+ def chxt(value)
284
+ _clone 'chxt', value
285
+ end
286
+
287
+ # Specify one parameter set for each axis that you want to label. Format &#34;&lt;axis_index&gt;:|&lt;label_1&gt;|...|&lt;label_n&gt;|...|&lt;axis_index&gt;:|&lt;label_1&gt;|...|&lt;label_n&gt;&#34;. Separate multiple sets of labels using the pipe character ( | ).
288
+ #
289
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-axis/#custom-axis-labels}
290
+ # # @example
291
+ # chart = ImageCharts().chxl('0:|Jan|July|Jan')
292
+ # chart = ImageCharts().chxl('0:|Jan|July|Jan|1|10|20|30')
293
+ #
294
+ # Custom string axis labels on any axis
295
+ def chxl(value)
296
+ _clone 'chxl', value
297
+ end
298
+
299
+ # You can specify the range of values that appear on each axis independently, using the chxr parameter. Note that this does not change the scale of the chart elements (use chds for that), only the scale of the axis labels.
300
+ #
301
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-axis/#axis-label-styles}
302
+ # # @example
303
+ # chart = ImageCharts().chxs('1,0000DD')
304
+ # chart = ImageCharts().chxs('1N*cUSD*Mil,FF0000')
305
+ # chart = ImageCharts().chxs('1N*cEUR*,FF0000')
306
+ # chart = ImageCharts().chxs('2,0000DD,13,0,t')
307
+ # chart = ImageCharts().chxs('0N*p*per-month,0000FF')
308
+ # chart = ImageCharts().chxs('0N*e*,000000|1N*cUSD*Mil,FF0000|2N*2sz*,0000FF')
309
+ #
310
+ # Font size, color for axis labels, both custom labels and default label values
311
+ def chxs(value)
312
+ _clone 'chxs', value
313
+ end
314
+
315
+ #
316
+ # format should be either:
317
+ # - line fills (fill the area below a data line with a solid color): chm=&lt;b_or_B&gt;,&lt;color&gt;,&lt;start_line_index&gt;,&lt;end_line_index&gt;,&lt;0&gt; |...| &lt;b_or_B&gt;,&lt;color&gt;,&lt;start_line_index&gt;,&lt;end_line_index&gt;,&lt;0&gt;
318
+ # - line marker (add a line that traces data in your chart): chm=D,&lt;color&gt;,&lt;series_index&gt;,&lt;which_points&gt;,&lt;width&gt;,&lt;opt_z_order&gt;
319
+ # - Text and Data Value Markers: chm=N&lt;formatting_string&gt;,&lt;color&gt;,&lt;series_index&gt;,&lt;which_points&gt;,&lt;width&gt;,&lt;opt_z_order&gt;,&lt;font_family&gt;,&lt;font_style&gt;
320
+ #
321
+ #
322
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/compound-charts/}
323
+ # # @example
324
+
325
+ #
326
+ # compound charts and line fills
327
+ def chm(value)
328
+ _clone 'chm', value
329
+ end
330
+
331
+ # line thickness and solid/dashed style
332
+ #
333
+ # [Reference documentation]{@link https://documentation.image-charts.com/line-charts/#line-styles}
334
+ # # @example
335
+ # chart = ImageCharts().chls('10')
336
+ # chart = ImageCharts().chls('3,6,3|5')
337
+ #
338
+ # line thickness and solid/dashed style
339
+ def chls(value)
340
+ _clone 'chls', value
341
+ end
342
+
343
+ # If specified it will override &#34;chdl&#34; values
344
+ #
345
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-label/}
346
+ # # @example
347
+ # chart = ImageCharts().chl('label1|label2')
348
+ # chart = ImageCharts().chl('multi# line# label1|label2')
349
+ #
350
+ # bar, pie slice, doughnut slice and polar slice chart labels
351
+ def chl(value)
352
+ _clone 'chl', value
353
+ end
354
+
355
+ # chart margins
356
+ #
357
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-margin/}
358
+ # # @example
359
+ # chart = ImageCharts().chma('30,30,30,30')
360
+ # chart = ImageCharts().chma('40,20')
361
+ #
362
+ # chart margins
363
+ def chma(value)
364
+ _clone 'chma', value
365
+ end
366
+
367
+ # Position of the legend and order of the legend entries
368
+ #
369
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/legend-text-and-style/}
370
+ # # @example
371
+
372
+ # @default 'r'
373
+ # Position of the legend and order of the legend entries
374
+ def chdlp(value)
375
+ _clone 'chdlp', value
376
+ end
377
+
378
+ # Background Fills
379
+ #
380
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/background-fill/}
381
+ # # @example
382
+ # chart = ImageCharts().chf('b0,lg,0,f44336,0.3,03a9f4,0.8')
383
+ # @default 'bg,s,FFFFFF'
384
+ # Background Fills
385
+ def chf(value)
386
+ _clone 'chf', value
387
+ end
388
+
389
+ # gif configuration
390
+ #
391
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/animation/}
392
+ # # @example
393
+ # chart = ImageCharts().chan('1200')
394
+ # chart = ImageCharts().chan('1300|easeInOutSine')
395
+ #
396
+ # gif configuration
397
+ def chan(value)
398
+ _clone 'chan', value
399
+ end
400
+
401
+ # doughnut chart inside label
402
+ #
403
+ # [Reference documentation]{@link https://documentation.image-charts.com/pie-charts/#inside-label}
404
+ # # @example
405
+ # chart = ImageCharts().chli('95K€')
406
+ # chart = ImageCharts().chli('45%')
407
+ #
408
+ # doughnut chart inside label
409
+ def chli(value)
410
+ _clone 'chli', value
411
+ end
412
+
413
+ # image-charts enterprise `account_id`
414
+ #
415
+ # [Reference documentation]{@link https://documentation.image-charts.com/enterprise/}
416
+ # # @example
417
+ # chart = ImageCharts().icac('accountId')
418
+ #
419
+ # image-charts enterprise `account_id`
420
+ def icac(value)
421
+ _clone 'icac', value
422
+ end
423
+
424
+ # HMAC-SHA256 signature required to activate paid features
425
+ #
426
+ # [Reference documentation]{@link https://documentation.image-charts.com/enterprise/}
427
+ # # @example
428
+ # chart = ImageCharts().ichm('0785cf22a0381c2e0239e27c126de4181f501d117c2c81745611e9db928b0376')
429
+ #
430
+ # HMAC-SHA256 signature required to activate paid features
431
+ def ichm(value)
432
+ _clone 'ichm', value
433
+ end
434
+
435
+ # How to use icff to define font family as Google Font : https://developers.google.com/fonts/docs/css2
436
+ #
437
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-font/}
438
+ # # @example
439
+ # chart = ImageCharts().icff('Abel')
440
+ # chart = ImageCharts().icff('Akronim')
441
+ # chart = ImageCharts().icff('Alfa Slab One')
442
+ #
443
+ # Default font family for all text from Google Fonts. Use same syntax as Google Font CSS API
444
+ def icff(value)
445
+ _clone 'icff', value
446
+ end
447
+
448
+ # Default font style for all text
449
+ #
450
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/chart-font/}
451
+ # # @example
452
+ # chart = ImageCharts().icfs('normal')
453
+ # chart = ImageCharts().icfs('italic')
454
+ #
455
+ # Default font style for all text
456
+ def icfs(value)
457
+ _clone 'icfs', value
458
+ end
459
+
460
+ # localization (ISO 639-1)
461
+ #
462
+ # [Reference documentation]{@link }
463
+ # # @example
464
+ # chart = ImageCharts().iclocale('en')
465
+ #
466
+ # localization (ISO 639-1)
467
+ def iclocale(value)
468
+ _clone 'iclocale', value
469
+ end
470
+
471
+ # Retina is a marketing term coined by Apple that refers to devices and monitors that have a resolution and pixel density so high — roughly 300 or more pixels per inch – that a person is unable to discern the individual pixels at a normal viewing distance.
472
+ # In order to generate beautiful charts for these Retina displays, Image-Charts supports a retina mode that can be activated through the icretina=1 parameter
473
+ #
474
+ # [Reference documentation]{@link https://documentation.image-charts.com/reference/retina/}
475
+ # # @example
476
+ # chart = ImageCharts().icretina('1')
477
+ #
478
+ # retina mode
479
+ def icretina(value)
480
+ _clone 'icretina', value
481
+ end
482
+
483
+
484
+ private
485
+
486
+ def _clone(param, value)
487
+ add = Hash[]
488
+ add.merge!(@_query)
489
+ add[param] = value
490
+ ImageCharts(
491
+ protocol: @_protocol,
492
+ host: @_host,
493
+ port: @_port,
494
+ timeout: @_timeout,
495
+ secret: @_secret,
496
+ previous: add)
497
+ end
498
+
499
+ end
500
+
501
+ class ImageChartsError < StandardError
502
+ attr_reader :validation_code, :status_code
503
+ def initialize(message, validation_code, status_code)
504
+ @exception_type = "custom"
505
+ @validation_code = validation_code
506
+ @status_code = status_code
507
+ super(message)
508
+ end
509
+ end
510
+
511
+
512
+ def ImageCharts(*args)
513
+ ImageCharts.new(*args)
514
+ end
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: image-charts
3
+ version: !ruby/object:Gem::Version
4
+ version: 5.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Francois-Guillaume Ribreau
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-05-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.14'
27
+ description: Generate static image charts and embed them into emails, pdf reports,
28
+ blog posts...
29
+ email:
30
+ - github@fgribreau.com
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - "./image-charts.rb"
36
+ homepage: https://www.image-charts.com
37
+ licenses:
38
+ - MIT
39
+ metadata:
40
+ bug_tracker_uri: https://github.com/image-charts/ruby/issues
41
+ documentation_uri: https://github.com/image-charts/ruby/README.md
42
+ homepage_uri: https://www.image-charts.com
43
+ source_code_uri: https://github.com/image-charts/ruby/
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - "."
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubyforge_project:
60
+ rubygems_version: 2.7.6
61
+ signing_key:
62
+ specification_version: 4
63
+ summary: Official Image-Charts.com API client library
64
+ test_files: []