butler-mainframe 0.6.0 → 0.7.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
  SHA1:
3
- metadata.gz: 5dd2c3f32dca8f7e61d0ed59e11d59a158f7ff21
4
- data.tar.gz: bc1a34ae83ca18147105f6ada19bf936cc36a417
3
+ metadata.gz: c1b46290497b9756b0b72bbb6f48e92066ff14a7
4
+ data.tar.gz: 7e131b06d932887b33afd338d200dc69e4a4ba87
5
5
  SHA512:
6
- metadata.gz: c9dad70f5096a1bc38d53d8e5e9e3176e09ca29452d741e1c1f25158e3e471212227f4276d0d1016ab8f7e836476dadcd9d8b0528a986f05481debbf4b539067
7
- data.tar.gz: dfeabba225bcbe7d395ce8cc0c7bf53f4a998c1cea8b4686489362a4b228f0e5ee796114d8850db079ceb8a2b53cc07edb94b268f8efe8a0ec5389614f893e32
6
+ metadata.gz: eb11baa752d23d1a4cdad52b6fc7f39c434f0343778c656d01cd0782eb2ade4946a9ce0febde6b7a74e8ee8100e79ca63c6d5b9d6ecab0f1909fc6d5661c64db
7
+ data.tar.gz: a27c4a112f43c927ddb7d7169ca6858bea9a740419ee3e4109d033bd4a99fb83ac7a6a31bbac6b1607a01c88fd011f472ab204a61893d2465627c056b09e0695
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ 0.7.0 [☰](https://github.com/marcomd/butler-mainframe/compare/v0.6.0...v0.7.0) December 2th, 2015
2
+ ------------------------------
3
+ * Now is possible to set erase_before_writing to execute an erase until end of field before writing a text
4
+ * Changed param name in write method: erase_before_writing instead of erase_field_first => deprecation warning
5
+ * Changed param name in write method: clean_chars_before_writing instead of clean_first_chars => deprecation warning
6
+ * Changed method name: screen_title becomes catch_title to align it to the methods name that provide a similar result => deprecation warning
7
+
1
8
  0.6.0 [☰](https://github.com/marcomd/butler-mainframe/compare/v0.5.0...v0.6.0) October 29th, 2015
2
9
  ------------------------------
3
10
  * Improved rails integration
data/README.md CHANGED
@@ -130,6 +130,10 @@ host.write 'ruby on rails', :y => 6, :x => 15
130
130
  # With the hook you can use a regular expression to search a label on the y axis (2 rows up and down)
131
131
  # It is usefull when the y position could change (atm it does not use x axis)
132
132
  host.write 'ruby on rails', :y => 6, :x => 15, hook: 'SYSTEM='
133
+
134
+ # write a text erasing the field text currently on the screen. This executes a erase_eof command before writing.
135
+ host.write 'ruby on rails', :y => 6, :x => 15, hook: 'SYSTEM=', erase_before_writing: true
136
+ # If you have to do it permanently, you can set it when you instantiate the object: host = ButlerMainframe::Host.new(erase_before_writing: true)
133
137
  ```
134
138
 
135
139
  ### Navigate
@@ -204,7 +208,7 @@ Class Invoice
204
208
  # We develop the function.
205
209
  # In this simple case we put a number in a map CICS at row 10 and column 5
206
210
  # as option we also choose to erase any previous value in the field
207
- @host.write self.number, y: 10, x: 5, erase_field_first: true
211
+ @host.write self.number, y: 10, x: 5, erase_before_writing: true
208
212
 
209
213
  # Press enter because the example mainframe program expects it as confirmation
210
214
  @host.do_enter
@@ -419,13 +423,6 @@ stdin, stdout, thread = Open3.popen2e('"C:/Program Files (x86)/wc3270/ws3270.exe
419
423
 
420
424
  Read the methods list documentation: [windows](http://x3270.bgp.nu/Windows/wc3270-script.html) or [unix](http://x3270.bgp.nu/Unix/x3270-script.html)
421
425
 
422
- ## ToDo
423
-
424
- * <s>Improve unit test</s> **Done** although it is still a simple rake
425
- * Improve write extending hooks to x axis and other ideas I have in mind
426
- * Improve static navigation
427
- * Add meta class to choose your host method name and multi language support as well
428
-
429
426
  ## Found a bug?
430
427
 
431
428
  If you are having a problem please open an issue. You can also send an email to m.mastrodonato@gmail.com
@@ -122,7 +122,7 @@ module ButlerMainframe
122
122
  wait_session
123
123
  end
124
124
 
125
- raise "It was waiting #{destination} map instead of: #{screen_title(:rows => 2).strip}" unless destination_found
125
+ raise "It was waiting #{destination} map instead of: #{catch_title(:rows => 2).strip}" unless destination_found
126
126
  end
127
127
 
128
128
  # Check if we are the first blank cics screen
@@ -132,7 +132,7 @@ module ButlerMainframe
132
132
 
133
133
  # Check if we are on the login mainframe screen
134
134
  def session_login?
135
- /#{ButlerMainframe::Settings.session_login_tag}/i === screen_title
135
+ /#{ButlerMainframe::Settings.session_login_tag}/i === catch_title
136
136
  end
137
137
 
138
138
  # Login to mainframe
@@ -147,7 +147,7 @@ module ButlerMainframe
147
147
 
148
148
  wait_session
149
149
  #inizializza_sessione
150
- raise "It was waiting session login map instead of: #{screen_title}" unless session_login?
150
+ raise "It was waiting session login map instead of: #{catch_title}" unless session_login?
151
151
  write user, :y => y_user, :x => x_user
152
152
  write password, :y => y_password, :x => x_password, :sensible_data => true
153
153
  do_enter
@@ -155,7 +155,7 @@ module ButlerMainframe
155
155
 
156
156
  # Check the label to know when we are on the cics selection map
157
157
  def cics_selection?
158
- /#{ButlerMainframe::Settings.cics_selection_tag}/i === screen_title
158
+ /#{ButlerMainframe::Settings.cics_selection_tag}/i === catch_title
159
159
  end
160
160
 
161
161
  # On this map, we have to select the cics environment
@@ -166,7 +166,7 @@ module ButlerMainframe
166
166
  raise "Check cics configuration! #{cics} #{y_cics} #{x_cics}" unless cics && y_cics && x_cics
167
167
 
168
168
  wait_session
169
- raise "It was waiting cics selezion map instead of: #{screen_title}, message: #{catch_message}" unless cics_selection?
169
+ raise "It was waiting cics selezion map instead of: #{catch_title}, message: #{catch_message}" unless cics_selection?
170
170
  write cics, :y => y_cics, :x => x_cics
171
171
  do_enter
172
172
  wait_session 1
@@ -174,7 +174,7 @@ module ButlerMainframe
174
174
 
175
175
  # Check the label to know when we are on the cics selection map
176
176
  def company_menu?
177
- /#{ButlerMainframe::Settings.company_menu_tag}/i === screen_title
177
+ /#{ButlerMainframe::Settings.company_menu_tag}/i === catch_title
178
178
  end
179
179
 
180
180
  # On this map, we have to select the cics environment
@@ -185,7 +185,7 @@ module ButlerMainframe
185
185
  raise "Check company menu configuration! #{menu} #{y_menu} #{x_menu}" unless menu && y_menu && x_menu
186
186
 
187
187
  wait_session
188
- raise "It was waiting company menu map instead of: #{screen_title}, message: #{catch_message}" unless company_menu?
188
+ raise "It was waiting company menu map instead of: #{catch_title}, message: #{catch_message}" unless company_menu?
189
189
  write menu, :y => y_menu, :x => x_menu
190
190
  do_enter
191
191
  end
@@ -214,12 +214,16 @@ module ButlerMainframe
214
214
 
215
215
  # Get the title usually the first row
216
216
  # You can change default option :rows to get more lines starting from the first
217
- def screen_title options={}
217
+ def catch_title options={}
218
218
  options = {
219
219
  :rows => 1
220
220
  }.merge(options)
221
221
  scan(:y1 => 1, :x1 => 1, :y2 => options[:rows], :x2 => 80)
222
222
  end
223
+ def screen_title options={}
224
+ show_deprecated_method 'catch_title'
225
+ catch_title options
226
+ end
223
227
 
224
228
  def execute_cics name
225
229
  write name, :y => 1, :x => 2
@@ -15,28 +15,30 @@ module ButlerMainframe
15
15
 
16
16
  def initialize options={}
17
17
  options = {
18
- :session_tag => ButlerMainframe.configuration.session_tag,
19
- :wait => 0.01, #wait screen in seconds
20
- :wait_debug => 2, #wait time for debug purpose
21
- :debug => false,
22
- :browser_path => ButlerMainframe.configuration.browser_path,
23
- :session_url => ButlerMainframe.configuration.session_url,
24
- :session_path => ButlerMainframe.configuration.session_path,
25
- :timeout => ButlerMainframe.configuration.timeout,
26
- :close_session => :evaluate
27
- #:evaluate if the session is found will not be closed
28
- #:never never close the session
29
- #:always the session is always closed
18
+ :session_tag => ButlerMainframe.configuration.session_tag,
19
+ :wait => 0.01, # wait screen in seconds
20
+ :wait_debug => 2, # wait time for debug purpose
21
+ :debug => false,
22
+ :browser_path => ButlerMainframe.configuration.browser_path,
23
+ :session_url => ButlerMainframe.configuration.session_url,
24
+ :session_path => ButlerMainframe.configuration.session_path,
25
+ :timeout => ButlerMainframe.configuration.timeout,
26
+ :erase_before_writing => false, # execute an erase until end of field before write a text
27
+ :close_session => :evaluate
28
+ #:evaluate if the session is found will not be closed
29
+ #:never never close the session
30
+ #:always the session is always closed
30
31
  }.merge(options)
31
32
 
32
- @debug = options[:debug]
33
- @wait = options[:wait]
34
- @wait_debug = options[:wait_debug]
35
- @session_tag = options[:session_tag]
36
- @close_session = options[:close_session]
37
- @timeout = options[:timeout]
38
- @action = {}
39
- @pid = nil
33
+ @debug = options[:debug]
34
+ @wait = options[:wait]
35
+ @wait_debug = options[:wait_debug]
36
+ @session_tag = options[:session_tag]
37
+ @close_session = options[:close_session]
38
+ @timeout = options[:timeout]
39
+ @erase_before_writing = options[:timeout]
40
+ @action = {}
41
+ @pid = nil
40
42
 
41
43
  create_object options
42
44
  end
@@ -80,8 +82,8 @@ module ButlerMainframe
80
82
  # It reads one line or an area on the screen according to parameters supplied
81
83
  def scan options={}
82
84
  options = {
83
- :y => nil, :x => nil, :len => nil,
84
- :y1 => nil, :x1 => nil, :y2 => nil, :x2 => nil,
85
+ :y => nil, :x => nil, :len => nil,
86
+ :y1 => nil, :x1 => nil, :y2 => nil, :x2 => nil,
85
87
  }.merge(options)
86
88
  if options[:len]
87
89
  scan_row options[:y], options[:x], options[:len]
@@ -104,18 +106,20 @@ module ButlerMainframe
104
106
  # :check => true,
105
107
  # :raise_error_on_check => true,
106
108
  # :sensible_data => nil,
107
- # :clean_first_chars => nil, # clean x chars before writing a value
108
- # :erase_field_first => nil # erase first until end of field
109
+ # :clean_chars_before_writing => nil, # clean x chars before writing a value
110
+ # :erase_before_writing => nil # execute an erase until end of field before write a text
109
111
  def write text, options={}
112
+ options = show_deprecated_param(:erase_field_first, :erase_before_writing, options) if options[:erase_field_first]
113
+ options = show_deprecated_param(:clean_first_chars, :clean_chars_before_writing, options) if options[:clean_first_chars]
110
114
  options = {
111
115
  :hook => nil,
112
- :y => nil, #row
113
- :x => nil, #column
116
+ :y => nil,
117
+ :x => nil,
114
118
  :check => true,
115
119
  :raise_error_on_check => true,
116
120
  :sensible_data => nil,
117
- :clean_first_chars => nil, # clean x chars before writing a value
118
- :erase_field_first => nil # erase first until end of field
121
+ :clean_chars_before_writing => nil,
122
+ :erase_before_writing => @erase_before_writing
119
123
  }.merge(options)
120
124
 
121
125
  y = options[:y]
@@ -124,8 +128,8 @@ module ButlerMainframe
124
128
  x ||= get_cursor_axes[1]
125
129
 
126
130
  hooked_rows = 2
127
- raise "Missing coordinates! y(row)=#{y} x(column)=#{x} " unless x && y
128
- raise "Sorry, cannot write null values" unless text
131
+ raise "Missing coordinates! y(row)=#{y} x(column)=#{x} " unless x && y
132
+ raise "Sorry, cannot write null values" unless text
129
133
 
130
134
  bol_written = false
131
135
  if options[:hook]
@@ -258,7 +262,7 @@ module ButlerMainframe
258
262
  :raise_error_on_check => true,
259
263
  :sensible_data => nil,
260
264
  :clean_first_chars => nil,
261
- :erase_field_first => nil
265
+ :erase_before_writing => nil
262
266
  }.merge(options)
263
267
  raise "Impossible to write beyond row #{MAX_TERMINAL_ROWS}" if y > MAX_TERMINAL_ROWS
264
268
  raise "Impossible to write beyond column #{MAX_TERMINAL_COLUMNS}" if x > MAX_TERMINAL_COLUMNS
@@ -273,7 +277,7 @@ module ButlerMainframe
273
277
  end
274
278
  end
275
279
 
276
- if options[:erase_field_first]
280
+ if options[:erase_before_writing]
277
281
  set_cursor_axes y, x
278
282
  do_erase
279
283
  end
@@ -295,6 +299,16 @@ module ButlerMainframe
295
299
  res
296
300
  end
297
301
 
302
+ def show_deprecated_param old, new, params={}
303
+ #Ruby 2+ caller_locations(1,1)[0].label
304
+ puts "[DEPRECATION] please use param :#{new} instead of :#{old} for method #{caller[0][/`([^']*)'/, 1]}"
305
+ # Creating new param with the value of the old param
306
+ {new => params[old]}.merge(params)
307
+ end
308
+ def show_deprecated_method new
309
+ puts "[DEPRECATION] please use #{new} method instead of #{caller[0][/`([^']*)'/, 1]}"
310
+ end
311
+
298
312
  # If is called a not existing method there is the chance that an optional module may not have been added
299
313
  def method_missing method_name, *args
300
314
  raise NoMethodError, "Method #{method_name} not found! Please check you have included any optional modules"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: butler-mainframe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Mastrodonato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-29 00:00:00.000000000 Z
11
+ date: 2015-12-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: This gem provides a virtual butler which can perform your custom tasks
14
14
  on a 3270 emulator. Choose your emulator, configure your task and discover a new