webdrone 1.1.4 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1506b267f0d46271aafa0b5c4218a1d651203f10
4
- data.tar.gz: 6e6794b034320bd053f7c0d31c74aa464cf6c422
3
+ metadata.gz: 00fe78589ccd5e577931c8601621bd683905f0ff
4
+ data.tar.gz: ad5bbdbd3397ccef0f168c0fdf4b522e765e8e40
5
5
  SHA512:
6
- metadata.gz: 94c4dd59b648740990234972dbb013d75f834d5874947c47fcdaecda533e6aaacdea907bff574ae19ceb1e4182e3474f5b3999252d35b5887a6a0cedf93911da
7
- data.tar.gz: 42e0c9e761b468734e8b1430d7a7fae52a1529465a1ec4e2c631a34f2268b261a5b46f7a71bf6c06fe91f0a6d6674ffe0745905b224fb4f3b0c3a8752e21ec84
6
+ metadata.gz: 4f8da3688fb06553ba279b20ce60500a49441687cd9460f46a0b8f7c96e8f7ef7487a29e3cb57b25bd457d7d18f9aaf0a0a23c4a6bc4c8fcccd5d7804a62c870
7
+ data.tar.gz: b73024b699c8d09f90db3c4ca6e8d2189dcc69aa6c2c3628e876d3163bb65f5fcd0e70f1dd3b19e402c173a2cb442e491b824ed0f852cabc4deb4c1dfc67ebfd
data/lib/webdrone/form.rb CHANGED
@@ -6,10 +6,11 @@ module Webdrone
6
6
  end
7
7
 
8
8
  class Form
9
- attr_accessor :a0
9
+ attr_accessor :a0, :data
10
10
 
11
11
  def initialize(a0)
12
12
  @a0 = a0
13
+ @data = nil
13
14
  end
14
15
 
15
16
  def with_xpath(xpath = nil, &block)
@@ -21,6 +22,71 @@ module Webdrone
21
22
  @xpath = old_xpath
22
23
  end
23
24
 
25
+ def save(filename:, sheet:, item:, name: 'ITEM')
26
+ prev = @data
27
+ data = {}
28
+ @data = data
29
+
30
+ yield
31
+
32
+ File.open(".#{filename}.lock", File::RDWR | File::CREAT, 0644) do |file|
33
+ items = {}
34
+ items[item] = data
35
+
36
+ begin
37
+ workbook = RubyXL::Parser.parse(filename)
38
+ worksheet = workbook[sheet]
39
+ worksheet = workbook.add_worksheet sheet unless worksheet
40
+ rescue
41
+ workbook = RubyXL::Workbook.new
42
+ worksheet = workbook[0]
43
+ worksheet.sheet_name = sheet
44
+ end
45
+
46
+ rows = worksheet.sheet_data.rows.collect do |row|
47
+ row.cells.collect do |cell|
48
+ cell.value if cell != nil
49
+ end
50
+ end
51
+ heads = rows.shift
52
+ rows.each do |row|
53
+ item = {}
54
+ key = nil
55
+ row.each_with_index do |val, i|
56
+ val = val.to_s if val
57
+ if i == 0
58
+ key = val
59
+ elsif key
60
+ items[key] = {} unless items[key]
61
+ items[key][heads[i]] = val if heads[i] != nil and items[key][heads[i]] == nil
62
+ end
63
+ end
64
+ end
65
+ x = heads.shift
66
+ x ||= name
67
+ worksheet.add_cell 0, 0, x
68
+
69
+ heads += data.keys.sort
70
+ heads = heads.uniq
71
+
72
+ heads.each_with_index do |field, coli|
73
+ worksheet.add_cell 0, coli + 1, field
74
+ end
75
+ worksheet.change_row_bold 0, true
76
+ items.sort.each_with_index do |elem, rowi|
77
+ key, item = elem
78
+ worksheet.add_cell rowi + 1, 0, key
79
+ heads.each_with_index do |field, coli|
80
+ worksheet.add_cell rowi + 1, coli + 1, item[field]
81
+ end
82
+ end
83
+
84
+ workbook.write filename
85
+ end
86
+
87
+ @data = prev
88
+ end
89
+
24
90
  def set(key, val, n: 1, visible: true)
25
91
  item = self.find_item(key, n: n, visible: visible)
26
92
  if item.tag_name == 'select'
@@ -30,6 +96,8 @@ module Webdrone
30
96
  item.clear
31
97
  item.send_keys(val)
32
98
  end
99
+ @data[key] = val if @data
100
+ nil
33
101
  rescue => exception
34
102
  Webdrone.report_error(@a0, exception)
35
103
  end
@@ -1,3 +1,3 @@
1
1
  module Webdrone
2
- VERSION = "1.1.4"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdrone
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aldrin Martoq
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-10 00:00:00.000000000 Z
11
+ date: 2016-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler