middleman-gnuplot 0.2.1 → 0.2.2

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: 76c651dec2492e3bb75494cb89e3e31478fd7676d3a56964afef202716e7e233
4
- data.tar.gz: 77ff5468d77b178341d2981ffb1bc7fc810440423835173a8d6af5fa24d567b0
3
+ metadata.gz: 5c17a392a4f1cc289766f0b40a56555db9f5db6da02f1a14a32cbf9034c28a47
4
+ data.tar.gz: 9ed89c1e1414bbf4a65b22b4c5cc85fcc44464dd964cada51ab9c882b7848eb7
5
5
  SHA512:
6
- metadata.gz: cba0f5baeb6e693bdda4d44cd3686a2e6cc79372cf4fc8e687cf86aa139f7d2acf1606b0c02cbe98cdc12a559c801276977c416acc99d04e274635e4e2ce7952
7
- data.tar.gz: e135f54970b188f1c0b97bcafc90a8b03df34414042c65c78ab0a3731116a661f5f8352cd0fb89badb91f784329393cc707db3237db1711f5ce055519c79c497
6
+ metadata.gz: 8f4532fd93a3c31c0173726e2dc38c0cb1eeece4d32671768916ed696841857e78e36fe473a9a69a8e123d12d13b41cd395f0b4ba484f7c1f5606b58ec2e1130
7
+ data.tar.gz: 03f440a898cb902302433edfa303736cc38769eece7d228cc159ae3494b3757989cccaddc9e198a1e3efc52124dff7c0b707ea9af97788ac31eeafd51b98e088
@@ -3,6 +3,7 @@ require "middleman-gnuplot/gp_helpers"
3
3
  require "middleman-core"
4
4
  require "numo/gnuplot"
5
5
  require "fileutils"
6
+ require "time"
6
7
 
7
8
  module Middleman
8
9
  class GnuplotExtension < Middleman::Extension
@@ -39,6 +40,9 @@ module Middleman
39
40
  end
40
41
 
41
42
  # Generates a plot via gnuplot using a given expression.
43
+ #
44
+ # @deprecated Will be deprecated in the next version in favor of {#plot}.
45
+ #
42
46
  # The function must be provided as hash using the following fields:
43
47
  # @param [Array<Hash>] functions function definition hash
44
48
  # @option functions [String] expression expression hat can be processed by gnuplot (e.g. sin(x))
@@ -86,6 +90,8 @@ module Middleman
86
90
 
87
91
  helpers do
88
92
  def plot_functions functions=[], filename=nil, title=nil
93
+ warn "plot_functions will be deprecated in the next version in favor of the new function plot"
94
+
89
95
  filename = random_filename_if_nil(filename)
90
96
 
91
97
  if title.nil?
@@ -130,6 +136,76 @@ module Middleman
130
136
  return outfile
131
137
  end
132
138
 
139
+ def plot functions=[], filename=nil, title=nil, options={}
140
+ filename = random_filename_if_nil(filename)
141
+
142
+ if title.nil?
143
+ title = ""
144
+ end
145
+
146
+ outfile = "#{app.config[:gp_outdir]}/#{filename}.#{app.config[:gp_format]}"
147
+
148
+ @@gp.set output:"./#{@@base_dir}/#{outfile}"
149
+ @@gp.set title:"#{title}"
150
+
151
+ if options.nil? == false
152
+ process_options options
153
+ end
154
+
155
+
156
+ gp_command = []
157
+
158
+ functions.each_with_index do |function,i|
159
+ if function[:expression].nil? == false
160
+ gp_command << function[:expression]
161
+ else
162
+ if function[:file].nil? == false and
163
+ function[:colx].nil? == false and
164
+ function[:coly].nil? == false
165
+ gp_command << "'#{function[:file]}' using #{function[:colx]}:#{function[:coly]} "
166
+ end
167
+ end
168
+
169
+ if function[:style].nil? == false
170
+ gp_command << {w:function[:style]}
171
+ else
172
+ gp_command << {w:'lines'}
173
+ end
174
+
175
+ if function[:dashtype].nil? == false
176
+ gp_command << "dt #{function[:dashtype]}"
177
+ end
178
+
179
+ if function[:width].nil? == false
180
+ gp_command << "lw #{function[:width]}"
181
+ end
182
+
183
+ if function[:color].nil? == false
184
+ gp_command << {lc:"rgb '#{function[:color]}'"}
185
+ end
186
+
187
+ if function[:title].nil? == false
188
+ gp_command << {t:"#{function[:title]}"}
189
+ else
190
+ gp_command << {t:''}
191
+ end
192
+
193
+ if function[:ymin].nil? == false
194
+ gp_command << "y1=#{function[:ymin]}"
195
+ end
196
+
197
+ gp_command << ", "
198
+ end
199
+
200
+ gp_command[-1] = ''
201
+
202
+ @@gp.plot gp_command
203
+
204
+ register_filename(filename)
205
+
206
+ return outfile
207
+ end
208
+
133
209
  def plot_script script, filename=nil, title=nil
134
210
  filename = random_filename_if_nil(filename)
135
211
 
@@ -150,23 +226,23 @@ module Middleman
150
226
  return outfile
151
227
  end
152
228
 
153
- def plot_data data, series=nil, filename=nil, title=nil
154
- unless series.nil?
155
- filename = random_filename_if_nil(filename)
229
+ def plot_data data, series=nil, filename=nil, title=nil
230
+ unless series.nil?
231
+ filename = random_filename_if_nil(filename)
156
232
 
157
- if title.nil?
158
- title = ""
159
- end
233
+ if title.nil?
234
+ title = ""
235
+ end
160
236
 
161
- outfile = "#{app.config[:gp_outdir]}/#{filename}.#{app.config[:gp_format]}"
237
+ outfile = "#{app.config[:gp_outdir]}/#{filename}.#{app.config[:gp_format]}"
162
238
 
163
- @@gp.set output:"./#{@@base_dir}/#{outfile}"
164
- @@gp.set title:"#{title}"
239
+ @@gp.set output:"./#{@@base_dir}/#{outfile}"
240
+ @@gp.set title:"#{title}"
165
241
 
166
- gp_command = []
242
+ gp_command = []
167
243
 
168
- series.each do |ser|
169
- gp_command << "\"-\" u #{ser[:x]}:#{ser[:y]}"
244
+ series.each do |ser|
245
+ gp_command << "\"-\" u #{ser[:x]}:#{ser[:y]}"
170
246
 
171
247
  if ser[:style].nil? == false
172
248
  gp_command << "w #{ser[:style]}"
@@ -175,71 +251,74 @@ module Middleman
175
251
  end
176
252
 
177
253
  if ser[:color].nil? == false
178
- gp_command << {lc:"rgb '#{ser[:color]}'"}
254
+ gp_command << {lc:"rgb '#{ser[:color]}'"}
179
255
  end
180
256
 
181
257
  if ser[:title].nil? == false
182
- gp_command << "t \"#{ser[:title]}\""
258
+ gp_command << "t \"#{ser[:title]}\""
183
259
  else
184
- gp_command << "notitle"
260
+ gp_command << "notitle"
185
261
  end
186
262
 
263
+ if ser[:width].nil? == false
264
+ gp_command << "lw #{ser[:width]}"
265
+ end
266
+
187
267
  gp_command << ", "
188
- end
268
+ end
189
269
 
190
- gp_command[-1] = ''
191
- gp_command << "\n"
270
+ gp_command[-1] = ''
271
+ gp_command << "\n"
192
272
 
193
- (1..series.size).each do
194
- data.each do |line|
195
- tmpstring = ""
273
+ (1..series.size).each do
274
+ data.each do |line|
275
+ tmpstring = ""
196
276
 
197
- line.each do |col|
198
- tmpstring << "#{col}\t"
199
- end
277
+ line.each do |col|
278
+ tmpstring << "#{col}\t"
279
+ end
200
280
 
201
- gp_command << "#{tmpstring}\n"
202
- end
281
+ gp_command << "#{tmpstring}\n"
282
+ end
203
283
 
204
- gp_command << "e\n"
205
- end
284
+ gp_command << "e\n"
285
+ end
206
286
 
207
- gp_command = gp_command.join(" ")
287
+ gp_command = gp_command.join(" ")
208
288
 
209
- puts "GP cmd: #{gp_command}"
289
+ puts "GP cmd: #{gp_command}"
210
290
 
211
- @@gp.plot gp_command
291
+ @@gp.plot gp_command
212
292
 
213
293
 
214
- register_filename(filename)
294
+ register_filename(filename)
215
295
 
216
- return outfile
217
- end
218
- end
296
+ return outfile
297
+ end
298
+ end
219
299
 
220
300
 
221
301
  private
222
302
 
223
303
  # Generates a random filename, if the given paramter is nil or empty.
224
- # The length of the random string can be overridden by setting
225
- # app.config[:gp_rndfilelength] in config.rb of the middleman project.
226
- #
304
+ # The length of the random string can be overridden by setting
305
+ # app.config[:gp_rndfilelength] in config.rb of the middleman project.
306
+ #
227
307
  # Returns filename (given or random)
228
308
  # Params.
229
309
  # +filename+:: input filename
230
- # +length+:: length of random filename
310
+ # +length+:: length of random filename
231
311
  def random_filename_if_nil filename=nil, length=6
232
312
  if filename.nil? or filename == ""
313
+ length = app.config[:gp_rndfilelength] unless app.config[:gp_rndfilelength].nil?
233
314
 
234
- length = app.config[:gp_rndfilelength] unless app.config[:gp_rndfilelength].nil?
235
-
236
- puts "Length of random filename: #{length}"
315
+ puts "Length of random filename: #{length}"
237
316
 
238
- loop do
239
- filename = ([*('A'..'Z'),*('0'..'9')]).sample(length).join
317
+ loop do
318
+ filename = ([*('A'..'Z'),*('0'..'9')]).sample(length).join
240
319
 
241
- break if @@plot_names.include?(filename) == false
242
- end
320
+ break if @@plot_names.include?(filename) == false
321
+ end
243
322
  end
244
323
 
245
324
  return filename
@@ -253,7 +332,7 @@ module Middleman
253
332
  # +filename+:: filename to be added to array
254
333
  def register_filename filename
255
334
  if @@plot_names.include?(filename)
256
- message "Warning: Filename #{filename} for plot already in use!", :warning
335
+ message "Warning: Filename #{filename} for plot already in use!", :warning
257
336
  end
258
337
 
259
338
  @@plot_names.append(filename)
@@ -270,15 +349,127 @@ module Middleman
270
349
 
271
350
  case type
272
351
  when :warning
273
- colString = "\033[1;33m"
352
+ colString = "\033[1;33m"
274
353
  when :error
275
- colString = "\033[1;31m"
354
+ colString = "\033[1;31m"
276
355
  end
277
356
 
278
357
  message = "#{colString}#{offset}middleman-gnuplot: #{text}#{colReset}"
279
358
 
280
359
  puts message
281
360
  end
361
+
362
+ # Processes a set of options that should be passed to gnuplot.
363
+ # Params.
364
+ # @param [array of hashes] an array of hashes that contain the options
365
+ # @option :datafilesep data file separator (e.g. '\t' or ' ')
366
+ # @option :timefmt a string indicating the time format that should be used
367
+ # @option :xtype only required if it should be set to :date
368
+ # @option :ytype only required if it should be set to :date
369
+ # @option :xrange a string indicating the x-axis range
370
+ # @option :yrange a string indicating the y-axis range
371
+ # @option :xformat a string indicating the x-axis format
372
+ # @option :yformat a string indicating the y-axis format
373
+ # @option :key a string to place or modify the key
374
+ def process_options options={}
375
+ if options[:term].nil? == false
376
+ @@gp.set term:"#{options[:term]}"
377
+ end
378
+
379
+ if options[:datafilesep].nil? == false
380
+ @@gp.set "datafile separator '#{options[:datafilesep]}'"
381
+ end
382
+
383
+ if ((options[:xtype].nil? == false and options[:xtype] == :date) or
384
+ (options[:ytype].nil? == false and options[:ytype] == :date)) and
385
+ (options[:timefmt].nil? == false)
386
+ if options[:xtype] == :date
387
+ @@gp.set "xdata time"
388
+ end
389
+
390
+ if options[:ytype] == :date
391
+ @@gp.set "ydata time"
392
+ end
393
+
394
+ @@gp.set "timefmt '#{options[:timefmt]}'"
395
+ end
396
+
397
+ if options[:xrange].nil? == false
398
+ if options[:xtype].nil? == false and options[:xtype] == :date
399
+ @@gp.set "xrange ['#{Time.at(options[:xrange].begin).strftime("%Y-%m-%d %H:%M:%S")}':'#{Time.at(options[:xrange].end).strftime("%Y-%m-%d %H:%M:%S")}']"
400
+ else
401
+ @@gp.set "xrange [#{options[:xrange].begin}:#{options[:xrange].end}]"
402
+ end
403
+ else
404
+ @@gp.unset "xrange"
405
+ end
406
+
407
+ if options[:yrange].nil? == false
408
+ if options[:ytype].nil? == false and options[:ytype] == :date
409
+ @@gp.set "yrange ['#{Time.at(options[:yrange].begin).strftime("%Y-%m-%d %H:%M:%S")}':'#{Time.at(options[:yrange].end).strftime("%Y-%m-%d %H:%M:%S")}']"
410
+ else
411
+ @@gp.set "yrange [#{options[:yrange].begin}:#{options[:yrange].end}]"
412
+ end
413
+ else
414
+ @@gp.unset "yrange"
415
+ end
416
+
417
+ if options[:xtics].nil? == false
418
+ @@gp.set "xtics #{options[:xtics]}"
419
+ end
420
+
421
+ if options[:ytics].nil? == false
422
+ @@gp.set "ytics #{options[:ytics]}"
423
+ end
424
+
425
+ if options[:mxtics].nil? == false
426
+ @@gp.set "mxtics #{options[:mxtics]}"
427
+ end
428
+
429
+ if options[:mytics].nil? == false
430
+ @@gp.set "mytics #{options[:mytics]}"
431
+ end
432
+
433
+ if options[:logx].nil? == false and options[:logx] == true
434
+ @@gp.set "log x"
435
+ else
436
+ @@gp.unset "log x"
437
+ end
438
+
439
+ if options[:logy].nil? == false and options[:logy] == true
440
+ @@gp.set "log y"
441
+ else
442
+ @@gp.unset "log y"
443
+ end
444
+
445
+ if options[:xformat].nil? == false
446
+ @@gp.set "format x '#{options[:xformat]}'"
447
+ end
448
+
449
+ if options[:yformat].nil? == false
450
+ @@gp.set "format y '#{options[:yformat]}'"
451
+ end
452
+
453
+ if options[:xlabel].nil? == false
454
+ @@gp.set "xlabel '#{options[:xlabel]}'"
455
+ else
456
+ @@gp.unset "xlabel"
457
+ end
458
+
459
+ if options[:ylabel].nil? == false
460
+ @@gp.set "ylabel '#{options[:ylabel]}'"
461
+ else
462
+ @@gp.unset "ylabel"
463
+ end
464
+
465
+ if options[:key].nil? == false
466
+ @@gp.set "key #{options[:key]}"
467
+ end
468
+
469
+ if options[:grid].nil? == false
470
+ @@gp.set "grid #{options[:grid]}"
471
+ end
472
+ end
282
473
  end
283
474
  end
284
475
  end
@@ -15,6 +15,8 @@ module Middleman
15
15
  term = 'pngcairo'
16
16
  when 'pdf'
17
17
  term = 'pdfcairo'
18
+ when 'svg'
19
+ term = 'svg'
18
20
  else
19
21
  term = 'pngcairo'
20
22
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  module Middleman
7
7
  module Gnuplot
8
- VERSION = "0.2.1"
8
+ VERSION = "0.2.2"
9
9
  end
10
10
  end
11
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-gnuplot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hermann Detz
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-08 00:00:00.000000000 Z
11
+ date: 2023-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-gnuplot
@@ -63,7 +63,7 @@ homepage: https://github.com/hermanndetz/middleman-gnuplot
63
63
  licenses:
64
64
  - MIT
65
65
  metadata: {}
66
- post_install_message:
66
+ post_install_message:
67
67
  rdoc_options: []
68
68
  require_paths:
69
69
  - lib
@@ -78,9 +78,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
78
  - !ruby/object:Gem::Version
79
79
  version: '0'
80
80
  requirements: []
81
- rubyforge_project:
82
- rubygems_version: 2.7.6
83
- signing_key:
81
+ rubygems_version: 3.4.1
82
+ signing_key:
84
83
  specification_version: 4
85
84
  summary: Middleman extension for gnuplot
86
85
  test_files: []