dfhmdf 0.0.1 → 0.0.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: b63e9ac034b94142ef123c5557fe73b860e0f853
4
- data.tar.gz: 749a0b27b492e45c7c83fb9c3588160a6e150b9b
3
+ metadata.gz: 9348a12cf9fb46196a9be3484938e13f3f1d6e69
4
+ data.tar.gz: 55b130e157490eee7f4f85a76cdb6dc166b168e6
5
5
  SHA512:
6
- metadata.gz: 9378f25ada91fd1bc9462d9189133c51c13bbc43d33f32b41cc4a241818b730c36fe41545180109c9d5faa4e658585555313f8c3119951bc461004c2c92ca51c
7
- data.tar.gz: aea1f18ac9970760998a21538bfc7622a03110545dbe05cf7351357aae8b88a4753e3104eacca9788da43802125140e656f586f0cde7642959a61c51868602bc
6
+ metadata.gz: fd0be31ab9f0c55fe934776d404f2a807f888e73738c21e39707c4003d6eebe91bfbc967cf8aa239b85c84e4937b04564cbdf840e6b55faf0ff907735d4646f5
7
+ data.tar.gz: e4d44fe0f1646e974d8719b926e558ba07682e7f148aa3b024026acf9cc01243cc66eb84c8acdb2fefedf100fa3eca34201677f14978469c18d3f2b7b4e5d4d9
data/README.md CHANGED
@@ -1,29 +1,30 @@
1
1
  # dfhmdf
2
2
 
3
- Converts DFHMDF macro specifications into ```text_field``` definitions for use with the (https://github.com/cheezy/te3270/)[TE3270 gem]. The purpose is to eliminate the need for you to count the characters across and down a 3270 screen to determine the X and Y coordinates and the length of each field you wish to define for TE3270.
3
+ Converts DFHMDF macro specifications into ```text_field``` definitions for use with the [TE3270 gem](https://github.com/cheezy/te3270/). The purpose is to eliminate the need for you to count the characters across and down a 3270 screen to determine the X and Y coordinates and the length of each field you wish to define for TE3270.
4
4
 
5
5
  ## Example
6
6
 
7
- Given a BMS macro source file named ```myscreen.txt``` with the following contents:
7
+ Given a BMS macro source file named ```macro-source``` with the following contents:
8
8
 
9
9
  ```
10
10
  QCKSET DFHMSD TYPE=MAP,STORAGE=AUTO,MODE=OUT,LANG=COBOL,TIOAPFX=YES
11
11
  QCKMAP DFHMDI SIZE=(24,80),LINE=1,COLUMN=1,CTRL=ALARM
12
12
  DFHMDF POS=(1,1),LENGTH=3,ATTRB=(ASKIP,BRT),INITIAL='QCK'
13
- DFHMDF POS=(1,26),LENGTH=28,ATTRB=(ASKIP,NORM), X
13
+ TITLE DFHMDF POS=(1,26),LENGTH=28,ATTRB=(ASKIP,NORM), X
14
14
  INITIAL='Quick Customer Account Check'
15
- DFHMDF POS=(3,1),LENGTH=8,ATTRB=(ASKIP,NORM),INITIAL='Account:'
15
+ HEAD DFHMDF POS=(3,1),LENGTH=8,ATTRB=(ASKIP,NORM),INITIAL='Account:'
16
16
  ACCTNO DFHMDF POS=(3,13),LENGTH=7,ATTRB=(ASKIP,NORM)
17
17
  DFHMDF POS=(4,1),LENGTH=5,ATTRB=(ASKIP,NORM),INITIAL='Name:'
18
18
  SURNAME DFHMDF POS=(4,13),LENGTH=15,ATTRB=(ASKIP,NORM)
19
19
  FNAME DFHMDF POS=(4,30),LENGTH=10,ATTRB=(ASKIP,NORM)
20
- DFHMDF POS=(5,1),LENGTH=11,ATTRB=(ASKIP,NORM),INITIAL='Max charge:'
20
+ DFHMDF POS=(5,1),LENGTH=11,ATTRB=(ASKIP,NORM), X
21
+ INITIAL='Max charge:'
21
22
  CHG DFHMDF POS=(5,13),ATTRB=(ASKIP,NORM),PICOUT='$,$$0.00'
22
23
  MSG DFHMDF LENGTH=20,POS=(7,1),ATTRB=(ASKIP,NORM)
23
24
  DFHMSD TYPE=FINAL
24
25
  ```
25
26
 
26
- run ```dfhmdf`` as a command-line utility:
27
+ run ```dfhmdf``` as a command-line utility:
27
28
 
28
29
  ```sh
29
30
  dfhmdf macro-source > target-file
@@ -32,11 +33,15 @@ dfhmdf macro-source > target-file
32
33
  to produce the following output:
33
34
 
34
35
  ```ruby
35
- text_field(:acctno, 4, 13, 7)
36
- text_field(:surname, 5, 13, 15)
37
- text_field(:fname, 5, 30, 10)
38
- text_field(:chg, 6, 13, 8)
39
- text_field(:msg, 8, 1, 20)
36
+ text_field(:x2y1, 1, 2, 3)
37
+ text_field(:title, 1, 27, 28)
38
+ text_field(:head, 3, 2, 8)
39
+ text_field(:x5y1, 4, 2, 5)
40
+ text_field(:surname, 4, 14, 15)
41
+ text_field(:fname, 4, 31, 10)
42
+ text_field(:x6y1, 5, 2, 11)
43
+ text_field(:chg, 5, 14, 8)
44
+ text_field(:msg, 7, 2, 20)
40
45
  ```
41
46
 
42
47
  From the example you may surmise:
@@ -20,4 +20,5 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rubocop"
23
24
  end
@@ -32,13 +32,9 @@ class ConvertDfhmdf
32
32
  @macro_source
33
33
  end
34
34
 
35
- def process_macro dfhmdf_macro
36
- parse_tokens tokenize_line dfhmdf_macro
37
- end
38
-
39
35
  def squish str
40
36
  str[71] = ' ' unless str.length < 72
41
- str.split.join(' ')
37
+ str[0..70].split.join(' ')
42
38
  end
43
39
 
44
40
  def macro_source
@@ -1,41 +1,60 @@
1
1
  module Dfhmdf
2
2
 
3
+ # Generate a te3270 text_field declaration using values parsed from a DFHMDF macro.
3
4
  def te3270_text_field
4
- "text_field(:#{field_label}, #{x_coordinate}, #{y_coordinate}, #{field_length})"
5
+ "text_field(:#{field_label}, #{line_position}, #{column_position}, #{field_length})"
5
6
  end
6
7
 
8
+ # Clear variables to prepare for parsing a DFHMDF macro.
7
9
  def clear
8
10
  @field_label, @parameter_hash, @parameters, @tokens = nil
9
11
  @dfhmdf = false
10
12
  end
11
13
 
12
- def tokenize_line input_line
13
14
 
14
- # Want to split on spaces except when space occurs within single quotes.
15
- # Should be able to do it with a regex. Unable to figure it out so far. Using brute force.
16
- # This regex doesn't work but was as close as I was able to get.
17
- # @tokens = [@tokens, input_line.scan(/'.*?'|".*?"|\S+/)].compact.reduce([], :|)
15
+ # Tokenize an input line from the macro source file.
16
+ #
17
+ # LABEL MACRO OPERAND,OPERAND,OPERAND COMMENT X
18
+ # 1 2 3 4 discard
19
+ def tokenize_line input_line
20
+ # Want to split on spaces except when space occurs within single quotes.
21
+ # Should be able to do it with a regex. Unable to figure it out so far. Using brute force.
22
+ # This regex doesn't work but was as close as I was able to get.
23
+ # @tokens = [@tokens, input_line.scan(/'.*?'|".*?"|\S+/)].compact.reduce([], :|)
24
+ # +input_line+:: A line of input from the macro source file.
18
25
 
19
26
  new_tokens = []
20
27
  temp = input_line.split
28
+ new_tokens[0] = temp[0]
29
+ if temp[0] == 'DFHMDF'
30
+ start_ix = 1
31
+ else
32
+ start_ix = 2
33
+ new_tokens[1] = temp[1]
34
+ end
35
+ temp = input_line.split(' ')
36
+ open_quote = false
21
37
  for i in 0..temp.length-1 do
22
38
  if temp[i] != nil
23
- if temp[i].include? "'"
24
- temp[i] << ' ' << temp[i+1] unless temp[i+1] == nil
25
- temp[i + 1] = nil
26
- if new_tokens[i] == nil
27
- new_tokens[i] = temp[i]
28
- else
29
- new_tokens[i] << temp[i]
30
- end
31
- else
32
- new_tokens << temp[i]
39
+ open_quote = true unless temp[i].count("'") % 2 == 0
40
+ while open_quote
41
+ if temp[i+1] != nil
42
+ temp[i] << ' ' << temp[i+1]
43
+ temp[i+1] = nil
44
+ temp.compact!
45
+ open_quote = false if temp[i].count("'") % 2 == 0
46
+ else
47
+ open_quote = false
48
+ end
33
49
  end
34
- end
35
- end
36
- @tokens = [@tokens, new_tokens].compact.reduce([], :|)
50
+ end
51
+ end
52
+ @tokens = [@tokens, temp].compact.reduce([], :|)
37
53
  end
38
54
 
55
+ # Look at the tokens that were extracted from an input line and determine whether
56
+ # we are reading a DFHMDF macro. There may or may not be a label (1st token).
57
+ # +tokens+:: array of tokens extracted from the current input line
39
58
  def parse_tokens tokens
40
59
  @dfhmdf = false
41
60
  if tokens[0] == 'DFHMDF'
@@ -52,9 +71,6 @@ module Dfhmdf
52
71
  end
53
72
  end
54
73
 
55
-
56
- def parse_operands operands_as_string
57
- #-----------------------------------------------------------------------------
58
74
  # Parse the operands in a macro source statement:
59
75
  #
60
76
  # LABEL MACRO OPERAND,OPERAND,OPERAND COMMENT X
@@ -68,13 +84,12 @@ module Dfhmdf
68
84
  # to this...
69
85
  # { :pos => [ "6", "18" ], :length => "14", :attrb => [ "ASKIP", "NORM" ],
70
86
  # :initial => "Hello there" }
71
- #-----------------------------------------------------------------------------
87
+ # +operands_as_string+:: The DFHMDF operands as a single string.
88
+ def parse_operands operands_as_string
72
89
  @operands_hash = {}
73
-
74
90
  # Split on comma except when the comma appears within parentheses.
75
- # Couldn't figure out how to make it ignore commas within single quotes,
91
+ # Couldn't figure out how to make regex ignore commas within single quotes,
76
92
  # so it misses PICOUT='$,$$0.00' and similar. Using brute force to handle it.
77
-
78
93
  item = operands_as_string.split(/,(?![^(]*\))/)
79
94
  for i in 0..item.length-1
80
95
  if item[i].match(/^PICOUT=/)
@@ -101,24 +116,39 @@ module Dfhmdf
101
116
  @operands_hash
102
117
  end
103
118
 
104
- def x_coordinate
105
- (@operands_hash != nil && @operands_hash[:pos] && @operands_hash[:pos][0].to_i + 1) || 0
119
+
120
+ # Return the line position of the field as specified in the POS=(line, column) operand of DFHMDF.
121
+ # If the position has not been set, return zero.
122
+ def line_position
123
+ (@operands_hash != nil && @operands_hash[:pos] && @operands_hash[:pos][0].to_i) || 0
106
124
  end
107
125
 
108
- def y_coordinate
109
- (@operands_hash != nil && @operands_hash[:pos] && @operands_hash[:pos][1].to_i) || 0
126
+
127
+ # Return the column position of the field as specified in the POS=(row, column) operand of DFHMDF.
128
+ # Increment the value by 1 to bypass the attribute byte.
129
+ # If the value has not been set, return zero.
130
+ def column_position
131
+ (@operands_hash != nil && @operands_hash[:pos] && @operands_hash[:pos][1].to_i + 1) || 0
110
132
  end
111
133
 
134
+
135
+ # Return the length of the field. This may be specified in the LENGTH= operand of DFHMDF or
136
+ # derived from the PICOUT= or INTIAL= operand.
112
137
  def field_length
113
138
  (@operands_hash != nil && @operands_hash[:length] && @operands_hash[:length].to_i) ||
114
139
  (@operands_hash != nil && @operands_hash[:initial] && @operands_hash[:initial].length) ||
115
140
  (@operands_hash != nil && @operands_hash[:picout] && @operands_hash[:picout].length) || 0
116
141
  end
117
142
 
143
+
144
+ # Return the field label (name) as specified on the DFHMDF macro. When no label is coded on
145
+ # the macro, build a name based on the X and Y coordinates, like x20y5 or x9y32.
118
146
  def field_label
119
- (@field_label == nil && "x#{x_coordinate}y#{y_coordinate}") || @field_label
147
+ (@field_label == nil && "x#{line_position}y#{column_position}") || @field_label
120
148
  end
121
149
 
150
+
151
+ # True if we are looking at a DFHMDF macro in the input.
122
152
  def dfhmdf?
123
153
  @dfhmdf
124
154
  end
@@ -1,3 +1,3 @@
1
1
  module Dfhmdf
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -11,16 +11,16 @@ describe ConvertDfhmdf do
11
11
  @screen_def.process_macro 'SURNAME DFHMDF POS=(4,13),LENGTH=15,ATTRB=(ASKIP,NORM)'
12
12
  expect(@screen_def.dfhmdf?).to be(true)
13
13
  expect(@screen_def.field_label).to eq('surname')
14
- expect(@screen_def.x_coordinate).to eq(5)
15
- expect(@screen_def.y_coordinate).to eq(13)
14
+ expect(@screen_def.line_position).to eq(4)
15
+ expect(@screen_def.column_position).to eq(14)
16
16
  expect(@screen_def.field_length).to eq(15)
17
17
  end
18
18
  it "ignores macros other than DFHMDF" do
19
19
  @screen_def.process_macro 'QCKSET DFHMSD TYPE=MAP,STORAGE=AUTO,MODE=OUT,LANG=COBOL,TIOAPFX=YES'
20
20
  expect(@screen_def.dfhmdf?).to be(false)
21
21
  expect(@screen_def.field_label).to eq('x0y0')
22
- expect(@screen_def.x_coordinate).to eq(0)
23
- expect(@screen_def.y_coordinate).to eq(0)
22
+ expect(@screen_def.line_position).to eq(0)
23
+ expect(@screen_def.column_position).to eq(0)
24
24
  expect(@screen_def.field_length).to eq(0)
25
25
  end
26
26
  end
@@ -32,7 +32,7 @@ describe ConvertDfhmdf do
32
32
  expect(@screen_def.macro_source).to eq('SURNAME DFHMDF POS=(4,13),LENGTH=15,ATTRB=(ASKIP,NORM)')
33
33
  end
34
34
 
35
- it "stores macro source coded on multiple lines" do
35
+ it "stores macro source coded on multiple lines, POS first" do
36
36
  allow(@screen_def).to receive(:read_line).and_return(
37
37
  # 1 2 3 4 5 6 7 8
38
38
  # 12345678901234567890123456789012345678901234567890123456789012345678901234567890
@@ -44,6 +44,19 @@ describe ConvertDfhmdf do
44
44
  expect(@screen_def.macro_source)
45
45
  .to eq('SURNAME DFHMDF POS=(4,13),LENGTH=15,ATTRB=(ASKIP,NORM),INITIAL=\'Name here\'')
46
46
  end
47
+
48
+ it "stores macro source coded on multiple lines, INITIAL first" do
49
+ allow(@screen_def).to receive(:read_line).and_return(
50
+ # 1 2 3 4 5 6 7 8
51
+ # 12345678901234567890123456789012345678901234567890123456789012345678901234567890
52
+ 'SURNAME DFHMDF INITIAL=\'Name here\', X',
53
+ ' LENGTH=15, X',
54
+ ' ATTRB=(ASKIP,NORM), X',
55
+ ' POS=(4,13)')
56
+ @screen_def.ingest_macro
57
+ expect(@screen_def.macro_source)
58
+ .to eq('SURNAME DFHMDF INITIAL=\'Name here\',LENGTH=15,ATTRB=(ASKIP,NORM),POS=(4,13)')
59
+ end
47
60
  end
48
61
 
49
62
  end
@@ -25,8 +25,8 @@ describe ScreenDef do
25
25
  expect(@screen_def.dfhmdf?).to be(false)
26
26
  expect(@screen_def.field_length).to eq(0)
27
27
  expect(@screen_def.field_label).to eq('x0y0')
28
- expect(@screen_def.x_coordinate).to eq(0)
29
- expect(@screen_def.y_coordinate).to eq(0)
28
+ expect(@screen_def.line_position).to eq(0)
29
+ expect(@screen_def.column_position).to eq(0)
30
30
  end
31
31
  end
32
32
 
@@ -43,8 +43,13 @@ describe ScreenDef do
43
43
  end
44
44
 
45
45
  it "splits properly when the last operand is a quoted string with a space" do
46
- expect(@screen_def.tokenize_line("abc de,'fg hi',jkl"))
47
- .to eq([ "abc", "de,'fg hi',jkl" ])
46
+ expect(@screen_def.tokenize_line("abc de,fghi,'jkl mnop'"))
47
+ .to eq([ "abc", "de,fghi,'jkl mnop'" ])
48
+ end
49
+
50
+ it "splits properly when an operand has multiple embedded spaces" do
51
+ expect(@screen_def.tokenize_line("abc de,'fg hi jk',lmn"))
52
+ .to eq([ "abc", "de,'fg hi jk',lmn" ])
48
53
  end
49
54
  end
50
55
  end
@@ -55,31 +60,23 @@ describe ScreenDef do
55
60
  @screen_def.parse_tokens([ 'DFHMDF', 'POS=(4,5),LENGTH=15', 'baz' ])
56
61
  expect(@screen_def.dfhmdf?).to be(true)
57
62
  end
58
- end
59
63
 
60
- describe "#parse_tokens" do
61
64
  it "clears the previous value of field label when none is specified" do
62
65
  @screen_def.field_label = 'aardvaark'
63
66
  @screen_def.parse_tokens([ 'DFHMDF', 'foo', 'bar' ])
64
67
  expect(@screen_def.field_label).to eql('x0y0')
65
68
  end
66
- end
67
69
 
68
- describe "#parse_tokens" do
69
70
  it "recognizes a DFHMDF macro with a label" do
70
71
  @screen_def.parse_tokens([ 'FIELDNAME', 'DFHMDF', 'POS=(4,5),LENGTH=15', 'bar' ])
71
72
  expect(@screen_def.dfhmdf?).to be(true)
72
73
  end
73
- end
74
74
 
75
- describe "#parse_tokens" do
76
75
  it "populates the field label when one is specified" do
77
76
  @screen_def.parse_tokens([ 'FIELDNAME', 'DFHMDF', 'POS=(4,5),LENGTH=15', 'bar' ])
78
77
  expect(@screen_def.field_label).to eq('fieldname')
79
78
  end
80
- end
81
79
 
82
- describe "#parse_tokens" do
83
80
  it "ignores source lines that do not contain a DFHMDF macro" do
84
81
  @screen_def.parse_tokens [ 'foo', 'bar', 'DFHMDF', 'baz' ]
85
82
  expect(@screen_def.dfhmdf?).to eq(false)
@@ -104,10 +101,15 @@ describe ScreenDef do
104
101
  .to eq({ :key1 => [ "one", "two" ], :key2 => [ "three", "four" ] })
105
102
  end
106
103
 
107
- it "handles a mix of operand formats" do
104
+ it "handles operands in the order pos, length, attrb, initial" do
108
105
  expect(@screen_def.parse_operands("POS=(6,18),LENGTH=14,ATTRB=(ASKIP,NORM),INITIAL='Hello there'"))
109
106
  .to eq({ :pos => [ "6", "18" ], :length => "14", :attrb => [ "ASKIP", "NORM" ], :initial => "Hello there" })
110
107
  end
108
+
109
+ it "handles operands in the order length, attrb, initial, pos" do
110
+ expect(@screen_def.parse_operands("LENGTH=14,ATTRB=(ASKIP,NORM),INITIAL='Hello there',POS=(6,18)"))
111
+ .to eq({ :pos => [ "6", "18" ], :length => "14", :attrb => [ "ASKIP", "NORM" ], :initial => "Hello there" })
112
+ end
111
113
  end
112
114
  end
113
115
 
@@ -118,44 +120,44 @@ describe ScreenDef do
118
120
  expect(@screen_def.field_label).to eq('NAME')
119
121
  end
120
122
 
121
- it "derives a field label based on x and y coordinates when no label was specified" do
123
+ it "derives a field label based on line and column positions when no label was specified" do
122
124
  @screen_def.field_label = nil
123
125
  @screen_def.operands_hash( { :pos => [ "5", "18" ] })
124
- expect(@screen_def.field_label).to eq('x6y18')
126
+ expect(@screen_def.field_label).to eq('x5y19')
125
127
  end
126
128
  end
127
129
  end
128
130
 
129
131
  context "determining field position" do
130
- describe "#x_coordinate" do
131
- it "returns 0 as the x coordinate if the position has not been determined" do
132
- expect(@screen_def.x_coordinate).to eq(0)
132
+ describe "#line_position" do
133
+ it "returns 0 as the line if the position has not been determined" do
134
+ expect(@screen_def.line_position).to eq(0)
133
135
  end
134
136
 
135
- it "returns 0 as the x coordinate if POS=(x,y) was not specified" do
137
+ it "returns 0 as the line if POS=(line,column)) was not specified" do
136
138
  @screen_def.operands_hash( { :foo => "bar" } )
137
- expect(@screen_def.x_coordinate).to eq(0)
139
+ expect(@screen_def.line_position).to eq(0)
138
140
  end
139
141
 
140
- it "calculates the x coordinate value skipping the attribute byte" do
142
+ it "calculates the column position value skipping the attribute byte" do
141
143
  @screen_def.operands_hash( { :pos => ["5", "28"] } )
142
- expect(@screen_def.x_coordinate).to eq(6)
144
+ expect(@screen_def.line_position).to eq(5)
143
145
  end
144
146
  end
145
147
 
146
- describe "#y_coordinate" do
148
+ describe "#column_position" do
147
149
  it "returns 0 as the y coordinate if the position has not been determined" do
148
- expect(@screen_def.y_coordinate).to eq(0)
150
+ expect(@screen_def.column_position).to eq(0)
149
151
  end
150
152
 
151
- it "returns 0 as the y coordinate if POS=(x,y) was not specified" do
153
+ it "returns 0 as the column position if POS=(line,column)) was not specified" do
152
154
  @screen_def.operands_hash( { :foo => "bar" } )
153
- expect(@screen_def.y_coordinate).to eq(0)
155
+ expect(@screen_def.column_position).to eq(0)
154
156
  end
155
157
 
156
- it "returns the y coordinate value from the POS=(x,y) parameter" do
158
+ it "returns the column position value from the POS=(line,column)) parameter" do
157
159
  @screen_def.operands_hash( { :pos => ["5", "28"] } )
158
- expect(@screen_def.y_coordinate).to eq(28)
160
+ expect(@screen_def.column_position).to eq(29)
159
161
  end
160
162
  end
161
163
  end
@@ -189,19 +191,19 @@ describe ScreenDef do
189
191
  it "generates a text_field definition for a field with a LENGTH= specification" do
190
192
  @screen_def.field_label = 'myfield'
191
193
  @screen_def.operands_hash({ :pos => [ "23", "6" ], :length => "14" })
192
- expect(@screen_def.te3270_text_field).to eql('text_field(:myfield, 24, 6, 14)')
194
+ expect(@screen_def.te3270_text_field).to eql('text_field(:myfield, 23, 7, 14)')
193
195
  end
194
196
 
195
197
  it "generates a text_field definition for a field with a PICOUT= specification" do
196
198
  @screen_def.field_label = 'otherfld'
197
199
  @screen_def.operands_hash({ :pos => [ "8", "16" ], :picout => "$$,$$0.00" })
198
- expect(@screen_def.te3270_text_field).to eql('text_field(:otherfld, 9, 16, 9)')
200
+ expect(@screen_def.te3270_text_field).to eql('text_field(:otherfld, 8, 17, 9)')
199
201
  end
200
202
 
201
203
  it "generates a text_field definition for a field with INITIAL= and no LENGTH=" do
202
204
  @screen_def.field_label = 'otherfld'
203
205
  @screen_def.operands_hash({ :pos => [ "8", "16" ], :initial => "Hello" })
204
- expect(@screen_def.te3270_text_field).to eql('text_field(:otherfld, 9, 16, 5)')
206
+ expect(@screen_def.te3270_text_field).to eql('text_field(:otherfld, 8, 17, 5)')
205
207
  end
206
208
  end
207
209
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dfhmdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Nicolette
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-15 00:00:00.000000000 Z
11
+ date: 2015-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: Generate text_field specifications for te3270 based on DFHMDF source
42
56
  email:
43
57
  - davenicolette@gmail.com