sra2019 0.3.0 → 0.4.0

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: 1a1630217c7d4ee5a473b6ece8d7f9a53c05311ea6c46c802b0ed1261adde45f
4
- data.tar.gz: 708dbf7e48829c70f368bf8746da56b1cac998cc624cb47516abb301309c809b
3
+ metadata.gz: 4ca33bfd09172282c98624b31e6489a6c7205cca8085f924dacd2ff7cc01fcb1
4
+ data.tar.gz: 9898d125ea75459c0ff51972a7ad54a143acbebbc0a7681ff8d802852b2b498a
5
5
  SHA512:
6
- metadata.gz: a919453361eb6cb6c6e46e2b28e135ac4d4597e51967c1c5dd3fbf6b533975aca4feb11aa918c2cc725af4a66be6da707cfc00eaecb0708395e9cf5a36b9eeaf
7
- data.tar.gz: bb5a2ddf6a905234d29666702985a4908b4254d1844d5dc4ddb9507efca824685219a838cbc81626a974e368eefe23ff49d6f59c26d3b9a6cae9a17661d0449b
6
+ metadata.gz: cda1d9493835d6a5f5e32ca464c43f1c865a04c41989712a18098118f62d11c76615a873cbc0686f6db1d9a29b418e5c144661b9bdf46e96fd3a030dc2a9b700
7
+ data.tar.gz: 61880dccd861672beedc105b038db731582058d0a17ee5fed8e9d73aecd1658e8b82d9f92b90a9d20c1fad2d13b3117f8f72803777e5773f6b6fbaa3f815d1d6
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
@@ -1 +1,2 @@
1
- #����\���Z
1
+ ��%�����F^��M��.#rP��r߉�W�J ǒ��&bq��*�ܐ��L
2
+ � gH�ѯ*ȉș� �?��>��Pe2��}�(Ί�Y�ކ\c�p�9jy��{�aRo�S�k�-�=pL:eŢ4���q�0;=Q�����L`�7�+�?Yy��m��Z�R/�� �W�ŴX/��,�[��|eUn)H�����
data/lib/sra2019.rb CHANGED
@@ -5,10 +5,12 @@
5
5
  # description: Steps Recorder (MS Windows) Analyser 2019
6
6
 
7
7
 
8
+ require 'hlt'
9
+ require 'zip'
8
10
  require 'rexle'
9
11
  require 'base64'
10
12
  require 'rxfhelper'
11
- require "mini_magick"
13
+ require 'mini_magick'
12
14
  require 'rexle-builder'
13
15
 
14
16
 
@@ -18,13 +20,15 @@ class StepsRecorderAnalyser
18
20
  attr_reader :steps
19
21
 
20
22
 
21
- def initialize(s, debug: false)
23
+ def initialize(s, debug: false, savepath: '/tmp', title: 'Untitled')
22
24
 
23
- @debug = debug
25
+ @savepath, @title, @debug = savepath, title, debug
24
26
  content = RXFHelper.read(s).first
25
27
  puts ('content: ' + content.inspect).debug if @debug
26
- @steps = parse_steps content
27
- @doc = build @steps
28
+
29
+ all_steps = parse_steps content
30
+ @doc = build all_steps
31
+ @steps = all_steps.select {|x| x[:user_comment]}
28
32
 
29
33
  end
30
34
 
@@ -34,6 +38,80 @@ class StepsRecorderAnalyser
34
38
  @doc.xml options
35
39
 
36
40
  end
41
+
42
+ def to_html(targetdir='sra' + Time.now.to_i.to_s)
43
+
44
+ # save the image files to a file directory.
45
+ # name the sub-directory using the date and time?
46
+
47
+ filepath = File.join(@savepath, targetdir)
48
+ imgpath = File.join(filepath, 'images')
49
+ csspath = File.join(filepath, 'css')
50
+
51
+ [filepath, imgpath, csspath].each {|x| FileUtils.mkdir x}
52
+
53
+ @steps.each.with_index do |x, i|
54
+
55
+ File.open(File.join(imgpath, "screenshot#{i}.jpg" ), 'wb') \
56
+ {|f| f.write(x[:screenshot]) }
57
+
58
+ end
59
+
60
+
61
+ rows = @steps.map.with_index do |x, i|
62
+
63
+ li = "
64
+ li
65
+ markdown:
66
+ #{x[:user_comment]}
67
+
68
+ ![](images/screenshot#{i}.jpg)
69
+ "
70
+
71
+ end
72
+
73
+ html=<<EOF
74
+ html
75
+ head
76
+ title #{@title}: #{@steps.length} Steps (with Pictures)
77
+ link rel='stylesheet' type='text/css' href='css/layout.css' media='screen, projection, tv'
78
+ link rel='stylesheet' type='text/css' href='css/style.css' media='screen, projection, tv'
79
+ link rel='stylesheet' type='text/css' href='css/print.css' media='print'
80
+ body
81
+ h1 #{@title}
82
+
83
+ ol
84
+ #{rows.join("\n").lstrip}
85
+ EOF
86
+
87
+ html = Rexle.new(Hlt.new(html).to_html)\
88
+ .root.element('html').xml pretty: true
89
+ File.write File.join(filepath, 'index.html'), html
90
+
91
+ %w(layout style print).each \
92
+ {|x| File.write File.join(csspath, "%s.css" % x), ''}
93
+
94
+ 'saved'
95
+
96
+ end
97
+
98
+ # not yet working properly
99
+ #
100
+ def to_zip()
101
+
102
+ project = 'sra' + Time.now.to_i.to_s
103
+ newdir = project
104
+ zipfile = project + '.zip'
105
+
106
+ to_html(newdir)
107
+
108
+ Zip::ZipFile.open(zipfile, Zip::ZipFile::CREATE) do |x|
109
+ x.add(project, File.join(@savepath, project))
110
+ end
111
+
112
+ 'saved to ' + File.join(@savepath, zipfile)
113
+
114
+ end
37
115
 
38
116
  private
39
117
 
@@ -81,8 +159,13 @@ class StepsRecorderAnalyser
81
159
  Rexle.new(xml.to_a)
82
160
  end
83
161
 
84
- def extract_image(s, e)
85
-
162
+ def extract_image(s, n)
163
+
164
+ report = Rexle.new s[/<Report>.*<\/Report>/m]
165
+
166
+ e = report.root.element('UserActionData/RecordSession/EachAction' +
167
+ "[@ActionNumber='#{n}']/HighlightXYWH")
168
+
86
169
  y, x, w, h = e.text.split(',').map(&:to_i)
87
170
 
88
171
  jpg_file = e.parent.element('ScreenshotFileName/text()')
@@ -102,7 +185,6 @@ class StepsRecorderAnalyser
102
185
  s2 = s[/Recording Session.*(?=<)/]
103
186
  puts ('s: ' + s.inspect).debug if @debug
104
187
 
105
- report = Rexle.new s[/<Report>.*<\/Report>/m]
106
188
  raw_steps = s2.split(/(?=Step \d+:)/)
107
189
  summary = raw_steps.shift
108
190
 
@@ -117,16 +199,12 @@ class StepsRecorderAnalyser
117
199
  n = a[0][/(?<=Step )\d+/]
118
200
  puts ('n: ' + n.inspect).debug if @debug
119
201
 
120
- if raw_comment then
121
-
122
-
123
- e = report.root.element('UserActionData/RecordSession/EachAction' +
124
- "[@ActionNumber='#{n}']/HighlightXYWH")
202
+ if raw_comment then
125
203
 
126
204
  {
127
205
  step: n,
128
- user_comment: raw_comment.gsub("&quot;",'"'),
129
- screenshot: extract_image(s, e)
206
+ user_comment: raw_comment.gsub("&quot;",''),
207
+ screenshot: extract_image(s, n)
130
208
  }
131
209
 
132
210
  else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sra2019
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -38,25 +38,25 @@ cert_chain:
38
38
  date: 2019-04-22 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
- name: rexle
41
+ name: hlt
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.5'
46
+ version: '0.6'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 1.5.1
49
+ version: 0.6.3
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '1.5'
56
+ version: '0.6'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 1.5.1
59
+ version: 0.6.3
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: mini_magick
62
62
  requirement: !ruby/object:Gem::Requirement
metadata.gz.sig CHANGED
Binary file