flat_out 0.0.4 → 0.0.5

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.
data/README.rdoc CHANGED
@@ -137,6 +137,7 @@ Command:
137
137
 
138
138
  Description:
139
139
  This will return the formatted fixed length record which you can write to a file.
140
+ It will blank fill or truncate the output to the correct length.
140
141
 
141
142
  Command:
142
143
 
@@ -163,6 +164,16 @@ Command:
163
164
  FlatOut.phone_squeeze('(800) 555-1212 Ext 234') == "8005551212Ext234"
164
165
  FlatOut.phone_squeeze('(800) GOT-MILK') == "800GOTMILK"
165
166
 
167
+ == Working with Templates
168
+
169
+ You can also specify a template during initialization, and then put values in the template
170
+ with an array.
171
+
172
+ example:
173
+ f = FlatOut.new(18, :template => [[5,1],[5,6],[4.2,11]]) # '123456789012345678'
174
+ val = ['ABCD',10,10.23]
175
+ f.put(val) # 'ABCD 000100010.23 '
176
+
166
177
  == Full Cycle Example:
167
178
 
168
179
  myline = FlatOut.new(80)
data/lib/flat_out.rb CHANGED
@@ -8,10 +8,11 @@ class FlatOut
8
8
  @flat_length = rec_length
9
9
  @base = options[:base] ||= @base ||= 1
10
10
  @format = options[:format] ||= @format ||= :len_pos_fld
11
+ @template = options[:template] ||= @template ||= []
11
12
  end
12
13
 
13
14
  def to_s
14
- @flat_out
15
+ (@flat_out + (' ' * @flat_length))[0...@flat_length]
15
16
  end
16
17
 
17
18
  def self.phone_squeeze(fld)
@@ -22,17 +23,28 @@ class FlatOut
22
23
  fld.gsub(/[^\d]/,"")
23
24
  end
24
25
 
25
- def put p1, p2, p3
26
- case @format
27
- when :len_pos_fld then (len = p1; pos = p2; fld = p3)
28
- when :len_fld_pos then (len = p1; fld = p2; pos = p3)
29
- when :pos_len_fld then (pos = p1; len = p2; fld = p3)
30
- when :pos_fld_len then (pos = p1; fld = p2; len = p3)
31
- when :fld_pos_len then (fld = p1; pos = p2; len = p3)
32
- when :fld_len_pos then (fld = p1; len = p2; pos = p3)
26
+ def put p1, p2=1, p3=''
27
+ if @template.size > 0 && p1.class == Array
28
+ fld = p1
29
+ else
30
+ case @format
31
+ when :len_pos_fld then (len = p1; pos = p2; fld = p3)
32
+ when :len_fld_pos then (len = p1; fld = p2; pos = p3)
33
+ when :pos_len_fld then (pos = p1; len = p2; fld = p3)
34
+ when :pos_fld_len then (pos = p1; fld = p2; len = p3)
35
+ when :fld_pos_len then (fld = p1; pos = p2; len = p3)
36
+ when :fld_len_pos then (fld = p1; len = p2; pos = p3)
37
+ else (len = p1; pos = p2; fld = p3)
38
+ end
33
39
  end
34
40
 
35
41
  case fld
42
+ when Array
43
+ fld.each_with_index do |field,idx|
44
+ len = @template[idx][0]
45
+ pos = @template[idx][1]
46
+ put len, pos, field
47
+ end
36
48
  when String
37
49
  put_alpha len, pos, fld
38
50
  when Integer
@@ -144,6 +144,15 @@ describe "put float with negative length" do
144
144
  end
145
145
  end
146
146
 
147
+ describe "put with a template" do
148
+ it "should put multiple fields" do
149
+ f = FlatOut.new(18, :template => [[5,1],[5,6],[4.2,11]])
150
+ val = ['ABCD',10,10.23]
151
+ f.put(val)
152
+ f.to_s.should == 'ABCD 000100010.23 '
153
+ end
154
+ end
155
+
147
156
  describe "digits_only" do
148
157
  it "should remove non-digit characters" do
149
158
  FlatOut.digits_only('01(2)-3ABC4-5^678').should == "012345678"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: flat_out
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.0.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Anil Sharma
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-05-29 00:00:00 -04:00
13
+ date: 2012-05-30 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies: []
16
16