vispan 0.17.1 → 0.17.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
  SHA1:
3
- metadata.gz: 74b8d11f3fe55bb8fc0454b3d96a043ab6921645
4
- data.tar.gz: b4bb676fa98c42e5926c291ce519d403e735974c
3
+ metadata.gz: d650155aa24bb681618252607555d22859de0d3f
4
+ data.tar.gz: 9e918172c689334f92152a2408ac026dd13a060e
5
5
  SHA512:
6
- metadata.gz: 60520a76b74223c56369757f8ec50efc38bce53eb865b41f09206ce8ef2790672d7671df4441ab65947c35522af2a07c852ba88ead0428b61a9495bc39e61355
7
- data.tar.gz: e23722ed9d1fa0b4e0dabaf9bd198ba33d6c58fa289665c5f7ba15ac398de4a6e448a018a98dbaa2f603f0215839c1b3dd9556f789b75d0c09cf08d8a6926903
6
+ metadata.gz: 93c57ab536887aabe9f761789aa3666224ecad84cb9baf066c726204b5580f66d64a4e50640e26bc8674a68df301505366e02e953140425ab856e059222cb386
7
+ data.tar.gz: 2d2d89ba5bb82f39104f385bc03b2eb32552061f40804736f6b6bbabcfc991378be3be30110d00dc2401614a9dd58fe09dbb68c3e1167c721465cccc09a38e0c
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # require "./input.rb"
3
- require "./lib/vispan.rb"
3
+ require './lib/vispan.rb'
4
4
 
5
5
  if ARGV.length == 2
6
6
  input_file = ARGV[0]
@@ -1,7 +1,7 @@
1
- require "vispan/szenario.rb"
2
- require "vispan/relation.rb"
3
- require "vispan/node.rb"
4
- require "vispan/output_graphic.rb"
1
+ require 'vispan/szenario.rb'
2
+ require 'vispan/relation.rb'
3
+ require 'vispan/node.rb'
4
+ require 'vispan/output_graphic.rb'
5
5
  require 'fileutils'
6
6
 
7
7
  module Vispan
@@ -12,13 +12,11 @@ module Vispan
12
12
  @szenarios = []
13
13
  separate_szenarios(@input)
14
14
 
15
- @szenarios.each do |szenario|
16
- szenario.assign_ranks
17
- end
15
+ @szenarios.each(&:assign_ranks)
18
16
 
19
- self.visualize(@output)
20
- file_ending = File.extname(@output).delete(".")
21
- [200, {"Content-Type" => "image/#{file_ending}"}, [IO.read(@output)]]
17
+ visualize(@output)
18
+ file_ending = File.extname(@output).delete('.')
19
+ [200, { 'Content-Type' => "image/#{file_ending}" }, [IO.read(@output)]]
22
20
  end
23
21
 
24
22
  def initialize(files)
@@ -27,14 +25,13 @@ module Vispan
27
25
  end
28
26
 
29
27
  def separate_szenarios(input_file)
30
- @single_szenario = Szenario.new()
28
+ @single_szenario = Szenario.new
31
29
  @relation_lines = []
32
30
  @lines = File.readlines(input_file)
33
31
  @lines.each_with_index do |line, index|
34
-
35
- if line[0] == "-"
32
+ if line[0] == '-'
36
33
  create_new_szenario(line)
37
- elsif (line == "\n" && !@relation_lines.empty?) || (index == @lines.length-1)
34
+ elsif (line == "\n" && !@relation_lines.empty?) || (index == @lines.length - 1)
38
35
  create_new_relation(line)
39
36
  elsif line != "\n"
40
37
  @relation_lines << line
@@ -44,7 +41,7 @@ module Vispan
44
41
  end
45
42
 
46
43
  def create_new_szenario(line)
47
- if @single_szenario.title == ""
44
+ if @single_szenario.title == ''
48
45
  @single_szenario.set_title(line)
49
46
  else
50
47
  @szenarios << @single_szenario
@@ -1,18 +1,17 @@
1
1
  NODE_WIDTH = 3.3
2
2
  NODE_MARGIN = 0.2
3
3
 
4
- GENERAL_SETTINGS = {graph:{rankdir:"LR", labeljust:"l", splines:"true", concentrate: "true", ranksep:"2", nodesep:"0.1"},
5
- node:{shape:"rect", color:"none", style:"rounded, filled", margin:"#{NODE_MARGIN}", width:"#{NODE_WIDTH}"},
6
- edge:{}}
4
+ GENERAL_SETTINGS = { graph: { rankdir: 'LR', labeljust: 'l', splines: 'true', concentrate: 'true', ranksep: '2', nodesep: '0.1' },
5
+ node: { shape: 'rect', color: 'none', style: 'rounded, filled', margin: NODE_MARGIN.to_s, width: NODE_WIDTH.to_s },
6
+ edge: {}, }
7
7
 
8
- SZENARIO = {szenario:{bgcolor:"mintcream:lightcyan", margin:60, fontsize:18}}
8
+ SZENARIO = { szenario: { bgcolor: 'mintcream:lightcyan', margin: 60, fontsize: 18 } }
9
9
 
10
- NODE = {screen:{fillcolor:"yellowgreen:lemonchiffon"},
11
- email:{fillcolor:"grey:ghostwhite"},
12
- pdf:{fillcolor:"gold:orange"},
13
- command:{fillcolor:"lightblue:steelblue"},
14
- helper:{shape:"plaintext", fillcolor:"none", width:"0", height:"0", margin:"0.15"}
15
- }
16
- RELATION = {event:{color:"red", penwidth:"2"},
17
- link:{arrowhead:"vee", style:"dashed"}
18
- }
10
+ NODE = { screen: { fillcolor: 'yellowgreen:lemonchiffon' },
11
+ email: { fillcolor: 'grey:ghostwhite' },
12
+ pdf: { fillcolor: 'gold:orange' },
13
+ command: { fillcolor: 'lightblue:steelblue' },
14
+ helper: { shape: 'plaintext', fillcolor: 'none', width: '0', height: '0', margin: '0.15' }, }
15
+
16
+ RELATION = { event: { color: 'red', penwidth: '2' },
17
+ link: { arrowhead: 'vee', style: 'dashed' }, }
@@ -1,15 +1,14 @@
1
- require "vispan/config.rb"
1
+ require 'vispan/config.rb'
2
2
 
3
3
  class GraphWriter
4
-
5
4
  def build_string(szenarios)
6
- "Digraph G{ #{get_general_settings}#{szenarios.map.with_index {|szenario, index| build_szenario(szenario, index)}.join("")}}"
5
+ "Digraph G{ #{get_general_settings}#{szenarios.map.with_index {|szenario, index| build_szenario(szenario, index)}.join('')}}"
7
6
  end
8
7
 
9
8
  def build_szenario(szenario, index)
10
- node_definitions = szenario.nodes.map{|node| write_node(node)}.join("")
11
- relation_definitions = szenario.relations.map{|relation| write_relations(relation, szenario)}.join("")
12
- effect_definitions = szenario.relations.map {|relation| write_effects(relation)}.join("")
9
+ node_definitions = szenario.nodes.map {|node| write_node(node)}.join('')
10
+ relation_definitions = szenario.relations.map {|relation| write_relations(relation, szenario)}.join('')
11
+ effect_definitions = szenario.relations.map {|relation| write_effects(relation)}.join('')
13
12
 
14
13
  "\n\nsubgraph cluster#{index.to_s} {label=\"#{szenario.title}\"#{find_attributes(szenario)};\n#{node_definitions}\n#{relation_definitions}#{effect_definitions}}"
15
14
  end
@@ -19,14 +18,14 @@ class GraphWriter
19
18
  end
20
19
 
21
20
  def write_relations(relation, szenario)
22
- output_port = "e"
23
- input_port = "w"
24
- sorting_order = ""
21
+ output_port = 'e'
22
+ input_port = 'w'
23
+ sorting_order = ''
25
24
 
26
25
  if relation.get_direction < 0
27
26
  previous_node_name = szenario.get_previous_helper_node(relation)
28
- output_port = "w"
29
- input_port = "e"
27
+ output_port = 'w'
28
+ input_port = 'e'
30
29
  sorting_order = "{rank = same; #{previous_node_name}; #{relation.helper.name};}"
31
30
  end
32
31
 
@@ -41,10 +40,10 @@ class GraphWriter
41
40
 
42
41
  def find_attributes(element)
43
42
  type = element.class.to_s.upcase
44
- GraphWriter.const_get(type)[element.type.to_sym].map{|attribute| "; #{attribute[0]}=\"#{attribute[1]}\""}.join("")
43
+ GraphWriter.const_get(type)[element.type.to_sym].map {|attribute| "; #{attribute[0]}=\"#{attribute[1]}\""}.join('')
45
44
  end
46
45
 
47
46
  def get_general_settings
48
- GraphWriter.const_get("GENERAL_SETTINGS").map{|attribute| "#{attribute[0]} [#{attribute[1].map{|attri| "#{attri[0]}=\"#{attri[1]}\""}.join(";")}]"}.join(";")
47
+ GraphWriter.const_get('GENERAL_SETTINGS').map {|attribute| "#{attribute[0]} [#{attribute[1].map {|attri| "#{attri[0]}=\"#{attri[1]}\""}.join(';')}]"}.join(';')
49
48
  end
50
49
  end
@@ -1,20 +1,19 @@
1
1
  require 'securerandom'
2
2
 
3
3
  class Node
4
-
5
4
  attr_accessor :name, :type, :label, :rank
6
- NODE_TYPES = ["screen", "email", "pdf", "command", "helper"]
5
+ NODE_TYPES = ['screen', 'email', 'pdf', 'command', 'helper']
7
6
 
8
7
  def initialize(type, label, index, effect_flag)
9
8
  @name = transform_to_name(type, label, index, effect_flag)
10
- @type = NODE_TYPES.include?(type)? type : ""
9
+ @type = NODE_TYPES.include?(type) ? type : ''
11
10
  @label = label
12
11
  @rank = 0
13
12
  end
14
13
 
15
14
  def transform_to_name(type, label, index, effect_flag)
16
- label = "node_" + SecureRandom.uuid if effect_flag
17
- label = label.gsub(/[-\s.]/, "") + index.to_s
18
- label.gsub(/[\/\'|\"|\*|\\]/, "_")
15
+ label = 'node_' + SecureRandom.uuid if effect_flag
16
+ label = label.gsub(/[-\s.]/, '') + index.to_s
17
+ label.gsub(/[\/\'|\"|\*|\\]/, '_')
19
18
  end
20
19
  end
@@ -1,11 +1,10 @@
1
1
  require 'tempfile'
2
2
 
3
3
  class OutputGraphic
4
-
5
4
  def initialize(szenarios, output_file)
6
5
  @file = Tempfile.new(['processed', '.dot'])
7
6
  @szenarios = szenarios
8
- @processed_string = ""
7
+ @processed_string = ''
9
8
  @output_file = output_file
10
9
  end
11
10
 
@@ -16,7 +15,7 @@ class OutputGraphic
16
15
  end
17
16
 
18
17
  def build_graph
19
- graph = GraphWriter.new()
18
+ graph = GraphWriter.new
20
19
  @processed_string = graph.build_string(@szenarios.reverse)
21
20
  end
22
21
 
@@ -27,7 +26,7 @@ class OutputGraphic
27
26
 
28
27
  def generate_graph(output_file)
29
28
  FileUtils.mkdir_p File.dirname(output_file)
30
- file_ending = File.extname(output_file).delete(".")
29
+ file_ending = File.extname(output_file).delete('.')
31
30
  cmd = "dot -T#{file_ending} #{@file.path} -o #{output_file}"
32
31
  system(cmd)
33
32
  @file.unlink
@@ -3,7 +3,7 @@ class Relation
3
3
 
4
4
  def initialize(relation_array, index)
5
5
  @effects = []
6
- @label = ""
6
+ @label = ''
7
7
 
8
8
  extract(relation_array, index)
9
9
  set_helper(index)
@@ -13,32 +13,30 @@ class Relation
13
13
  @start = set_node(relation_array.shift, index, false)
14
14
  set_connection(relation_array.shift)
15
15
  @stop = set_node(relation_array.shift, index, false)
16
- @effects = relation_array.map{|effect| set_node(effect, index, true)}
16
+ @effects = relation_array.map {|effect| set_node(effect, index, true)}
17
17
  end
18
18
 
19
19
  def set_connection(label_string)
20
- label = label_string.split(":")
20
+ label = label_string.split(':')
21
21
  @type = label.shift.strip.downcase
22
- @label = label.join(":").strip if @type.include? "event"
22
+ @label = label.join(':').strip if @type.include? 'event'
23
23
  adjust_length(@label)
24
24
  end
25
25
 
26
26
  def set_node(node_string, index, effect_flag)
27
- node_array = node_string.split(":")
27
+ node_array = node_string.split(':')
28
28
  type = node_array.shift.strip.downcase
29
- label = node_array.join(":").strip
29
+ label = node_array.join(':').strip
30
30
  adjust_length(label)
31
31
  Node.new(type, label, index, effect_flag)
32
32
  end
33
33
 
34
34
  def adjust_length(string)
35
-
36
35
  if string.length > 30
37
- (20..string.length).step(20){ |limit|
38
-
39
- if string[limit, string.length-limit].include?(" ")
40
- empty = string[limit, string.length-limit].index(" ")
41
- string[limit+empty] = "\n"
36
+ (20..string.length).step(20) { |limit|
37
+ if string[limit, string.length - limit].include?(' ')
38
+ empty = string[limit, string.length - limit].index(' ')
39
+ string[limit + empty] = "\n"
42
40
  end
43
41
  }
44
42
  end
@@ -49,7 +47,7 @@ class Relation
49
47
  end
50
48
 
51
49
  def set_helper(index)
52
- @helper = Node.new("helper", @label, index, false)
53
- @helper.name = "helper_"+ @helper.name + @stop.name
50
+ @helper = Node.new('helper', @label, index, false)
51
+ @helper.name = 'helper_' + @helper.name + @stop.name
54
52
  end
55
53
  end
@@ -1,26 +1,26 @@
1
- require "vispan/graphwriter.rb"
1
+ require 'vispan/graphwriter.rb'
2
2
 
3
3
  class Szenario
4
4
  attr_accessor :title, :relations, :nodes, :type
5
5
 
6
- def initialize(line = "")
7
- @title = line.gsub(/--/, "").strip
6
+ def initialize(line = '')
7
+ @title = line.gsub(/--/, '').strip
8
8
  @relations = []
9
9
  @nodes = []
10
- @type = "szenario"
10
+ @type = 'szenario'
11
11
  end
12
12
 
13
13
  def build_szenario(index)
14
- graph = GraphWriter.new()
15
- node_definitions = @nodes.map{|node| graph.write_node(node)}.join("")
16
- relation_definitions = @relations.map{|relation| graph.write_relations(relation)}.join("")
17
- effect_definitions = @relations.map {|relation| graph.write_effects(relation)}.join("")
14
+ graph = GraphWriter.new
15
+ node_definitions = @nodes.map {|node| graph.write_node(node)}.join('')
16
+ relation_definitions = @relations.map {|relation| graph.write_relations(relation)}.join('')
17
+ effect_definitions = @relations.map {|relation| graph.write_effects(relation)}.join('')
18
18
 
19
19
  "\n\nsubgraph cluster#{index.to_s} {bgcolor=aliceblue; label=\"#{title}\";\n#{node_definitions}\n#{relation_definitions}#{effect_definitions}}"
20
20
  end
21
21
 
22
22
  def set_title(line)
23
- @title = line.gsub(/--/, "").strip
23
+ @title = line.gsub(/--/, '').strip
24
24
  end
25
25
 
26
26
  def add_relation(relation)
@@ -31,7 +31,7 @@ class Szenario
31
31
 
32
32
  def add_nodes(nodes_array)
33
33
  nodes_array = nodes_array.flatten
34
- nodes_array.map{|node| @nodes << node if is_not_saved(node, @nodes)}
34
+ nodes_array.map {|node| @nodes << node if is_not_saved(node, @nodes)}
35
35
  end
36
36
 
37
37
  def is_not_saved(node, szenario_nodes)
@@ -48,8 +48,7 @@ class Szenario
48
48
  end
49
49
 
50
50
  def assign_ranks
51
- rank = @relations.map{|relation|
52
-
51
+ rank = @relations.map {|relation|
53
52
  if relation.start.rank == 0
54
53
  relation.start.rank = 1
55
54
  relation.stop.rank = 2 unless relation.stop.rank > 0
@@ -61,11 +60,9 @@ class Szenario
61
60
 
62
61
  def get_previous_helper_node(relation2)
63
62
  @relations.each do |relation|
64
-
65
63
  if relation2.start.name == relation.stop.name
66
64
  return relation.helper.name
67
65
  end
68
66
  end
69
67
  end
70
-
71
68
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vispan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.17.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Witek