class Vispan::WebPreview

Public Class Methods

new(files) click to toggle source
# File lib/vispan.rb, line 22
def initialize(files)
  @input = files[:input]
  @output = files[:output]
end

Public Instance Methods

call(env) click to toggle source
# File lib/vispan.rb, line 11
def call(env)
  @szenarios = []
  separate_szenarios(@input)

  @szenarios.each(&:assign_ranks)

  visualize(@output)
  file_ending = File.extname(@output).delete('.')
  [200, { 'Content-Type' => "image/#{file_ending}" }, [IO.read(@output)]]
end
create_new_relation(line) click to toggle source
# File lib/vispan.rb, line 52
def create_new_relation(line)
  @relation_lines << line if line != "\n"
  relation = Relation.new(@relation_lines, @szenarios.length)
  @single_szenario.add_relation(relation)
  @relation_lines = []
end
create_new_szenario(line) click to toggle source
# File lib/vispan.rb, line 43
def create_new_szenario(line)
  if @single_szenario.title == ''
    @single_szenario.set_title(line)
  else
    @szenarios << @single_szenario
    @single_szenario = Szenario.new(line)
  end
end
separate_szenarios(input_file) click to toggle source
# File lib/vispan.rb, line 27
def separate_szenarios(input_file)
  @single_szenario = Szenario.new
  @relation_lines = []
  @lines = File.readlines(input_file)
  @lines.each_with_index do |line, index|
    if line[0] == '-'
      create_new_szenario(line)
    elsif (line == "\n" && !@relation_lines.empty?) || (index == @lines.length - 1)
      create_new_relation(line)
    elsif line != "\n"
      @relation_lines << line
    end
  end
  @szenarios << @single_szenario
end
visualize(output_file) click to toggle source
# File lib/vispan.rb, line 59
def visualize(output_file)
  graphic = OutputGraphic.new(@szenarios, output_file)
  graphic.generate
end