Class: SimpleCSV

Inherits:
SimpleOutput::SimpleOutputPlugin show all
Defined in:
lib/simplecsv.rb

Instance Method Summary collapse

Methods inherited from SimpleOutput::SimpleOutputPlugin

#advance_series, #annotate, #append_hash, #append_points, #append_series_name, #append_xy, #get_data_as_points, #get_data_as_xy, #get_series_hashes, #new_data, #new_data_check, #set_hash, #set_options, #set_points, #set_x_data, #set_xy, #set_y_callback, #set_y_data, #translate_name

Constructor Details

#initialize(file_template) ⇒ SimpleCSV

Returns a new instance of SimpleCSV.



21
22
23
24
25
# File 'lib/simplecsv.rb', line 21

def initialize(file_template)
   super()
   @filename = file_template
   @series_next = 0
end

Instance Method Details

#append_callback(x, y, name, options) ⇒ Object



54
55
56
57
58
# File 'lib/simplecsv.rb', line 54

def append_callback(x,y,name,options)
  if !@metadata.has_key?(name)
    new_data_callback(name)
  end
end

#check_title(name, options) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/simplecsv.rb', line 36

def check_title(name, options)
  if options.has_key?('series')
    @metadata[name]['series_titles'] << options['series']
  else
    @metadata[name]['series_titles'] << "#{@metadata[name]['ylabel']}#{@series_next}"
    @series_next += 1
  end
end

#new_data_callback(name) ⇒ Object



49
50
51
52
# File 'lib/simplecsv.rb', line 49

def new_data_callback(name)
  name = translate_name(name)
  @metadata[name] = {'xlabel' => "#{name}_x", 'ylabel' => "#{name}_y", 'series_titles' => []}
end

#options_callback(options) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/simplecsv.rb', line 27

def options_callback(options)
  if options.has_key?('xlabel')
    @metadata[@current_name]['xlabel'] = options['xlabel']
  end
  if options.has_key?('ylabel')
    @metadata[@current_name]['ylabel'] = options['ylabel']
  end
end

#saveObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/simplecsv.rb', line 60

def save()
  data = self.get_data_as_xy()
  data.each do |set_name, series|
    CSV.open("#{@filename}_#{set_name}.csv", "wb") do |csv|
      xlabel = @metadata[set_name]['xlabel']
      
      series.each_with_index do |values, i|
        values[0].unshift(xlabel)
        csv << values[0]
        ylabel = @metadata[set_name]['series_titles'].empty? ? @metadata[set_name]['ylabel'] : @metadata[set_name]['series_titles'][i] 
        values[1].unshift(ylabel)
        csv << values[1]
      end
    end
  end
end

#set_x_callback(data, name, options) ⇒ Object



45
46
47
# File 'lib/simplecsv.rb', line 45

def set_x_callback(data, name, options)
  check_title(name, options)
end