hflr 0.10.1 → 0.11.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.
@@ -1,4 +1,4 @@
1
- == 1.0.0 / 2009-08-03
1
+ == 0.11.0 / 2009-08-04
2
2
 
3
- * 1 major enhancement
4
- * Birthday!
3
+ * Removed useless files
4
+ * Corrected version number
data/README.txt CHANGED
File without changes
data/Rakefile CHANGED
@@ -6,6 +6,7 @@ begin
6
6
  require 'bones'
7
7
  Bones.setup
8
8
  rescue LoadError
9
+
9
10
  begin
10
11
  load 'tasks/setup.rb'
11
12
  rescue LoadError
@@ -2,12 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{hflr}
5
- s.version = "1.0.0"
5
+ s.version = "0.11.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Colin Davis"]
9
- s.date = %q{2009-08-03}
10
- s.default_executable = %q{hflr}
9
+ s.date = %q{2009-08-04}
11
10
  s.description = %q{HFLR -- Hierarchical Fixed Length Records
12
11
 
13
12
  Allows you to read and write files of fixed width records when the file contains one or more
@@ -17,9 +16,8 @@ Install with 'gem install hflr'
17
16
 
18
17
  See the tests and examples bundled with this gem.}
19
18
  s.email = %q{colin.c.davis@gmail.com}
20
- s.executables = ["hflr"]
21
- s.extra_rdoc_files = ["History.txt", "README.txt", "bin/hflr"]
22
- s.files = ["History.txt", "README.txt", "Rakefile", "bin/hflr", "lib/hflr.rb", "lib/hflr/fl_record_file.rb", "lib/hflr/hflr.rb", "lib/hflr/record_template.rb", "sample2_out.dat", "spec/hflr_spec.rb", "spec/spec_helper.rb", "test/customer_orders.dat", "test/customers.dat", "test/examples.rb", "test/fixed_length_record_file_test.rb", "test/record_template_test.rb", "test/sample.dat", "test/sample2_out.dat", "test/sample_activities.dat", "test/sample_out.dat", "test/test_helper.rb", "test/test_hflr.rb"]
19
+ s.extra_rdoc_files = ["History.txt", "README.txt"]
20
+ s.files = ["History.txt", "README.txt", "Rakefile", "hflr.gemspec", "lib/hflr.rb", "lib/hflr/fl_record_file.rb", "lib/hflr/hflr.rb", "lib/hflr/record_template.rb", "spec/hflr_spec.rb", "spec/spec_helper.rb", "test/customer_orders.dat", "test/customers.dat", "test/examples.rb", "test/fixed_length_record_file_test.rb", "test/record_template_test.rb", "test/sample.dat", "test/sample2_out.dat", "test/sample_activities.dat", "test/sample_out.dat", "test/test_helper.rb", "test/test_hflr.rb"]
23
21
  s.homepage = %q{http://ruff.rubyforge.org}
24
22
  s.rdoc_options = ["--main", "README.txt"]
25
23
  s.require_paths = ["lib"]
@@ -2,7 +2,7 @@
2
2
  module Hflr
3
3
 
4
4
  # :stopdoc:
5
- VERSION = '0.10.1'
5
+ VERSION = '0.11.0'
6
6
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
7
7
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
8
8
  # :startdoc:
@@ -1,10 +1,10 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/record_template')
1
2
 
2
3
 
3
- require File.expand_path(File.dirname(__FILE__) + "/record_template")
4
4
 
5
5
 
6
6
 
7
- class FixedLengthRecordFile
7
+ class FLRFile
8
8
 
9
9
  include Enumerable
10
10
 
@@ -22,8 +22,7 @@ class FixedLengthRecordFile
22
22
  @record_template = HFLR::RecordTemplate.create(record_layouts, @record_type_symbols, logical_first_column, extra_columns)
23
23
  else
24
24
  @record_template = HFLR::RecordTemplate.create(record_layouts, @record_type_symbols, logical_first_column)
25
- end
26
-
25
+ end
27
26
  end
28
27
 
29
28
  def finished?
@@ -59,12 +58,15 @@ def line_type(line)
59
58
  return record_type ? record_type : :unknown
60
59
  end
61
60
 
62
- def get_next_known_line_type
63
- line = @file.gets
64
- while line_type(line) == :unknown and (not finished?)
65
- line = @file.gets
66
- end
67
- return line
61
+ def get_next_known_line_type
62
+ line = @file.gets
63
+ record_type = line_type(line)
64
+ while record_type == :unknown and (not finished?)
65
+ line = @file.gets
66
+ record_type = line_type(line)
67
+ end
68
+ record_type == :unknown ? nil : line
69
+
68
70
  end
69
71
 
70
72
  def each
@@ -77,16 +79,19 @@ def each
77
79
  end
78
80
  end
79
81
 
80
- # This will take a Hash or Struct orArray; if an Array the record type must be the last element
82
+ # This will take a Hash or Struct orArray; if an Array the record type must be the last element when
83
+ # the record layout has more than one record type.
81
84
  def <<(record)
82
85
  if record.is_a? Array
83
- @file.puts @record_template[record.last].build_line(record)
86
+ record_type = @record_type_symbols == :none ? @record_template.keys.first : record.last
87
+ @file.puts @record_template[record_type].build_line(record)
84
88
  else
89
+ record_type = @record_type_symbols == :none ?@record_template.keys.first : record[:record_type]
85
90
  if @record_template[record[:record_type]] == nil then
86
91
  raise "Record type problem in output: #{record[:record_type].to_s} type on record, #{@record_template.keys.join(",")} types of templates"
87
92
  end
88
93
 
89
- @file.puts @record_template[record[:record_type]].build_line(record)
94
+ @file.puts @record_template[record_type].build_line(record)
90
95
  end
91
96
  end
92
97
 
File without changes
@@ -2,8 +2,8 @@
2
2
  module HFLR
3
3
 
4
4
  class RecordTemplate
5
- UnfilledChar = ' '
6
- MissingOutput = "ZZZZZZZZZZZZZZZZZZZZZ"
5
+ UnfilledChar = ' '
6
+ MissingOutput = "ZZZZZZZZZZZZZZZZZZZZZ"
7
7
 
8
8
  attr_reader :record_structure, :field_pattern,:record_type,:record_type_label
9
9
  attr_accessor :strip_whitespace
@@ -36,7 +36,7 @@ def self.create(record_layouts, record_type_symbols, first_column_location, extr
36
36
  return templates
37
37
  end
38
38
 
39
-
39
+ private
40
40
  # If the name exists already do not replace it, but add extra columns not to be mapped by the unpack field patterns
41
41
  # and ensure the record_type variable is added.
42
42
  # Since 'record_type' may not be in the metadata we don't want to map it to a
@@ -53,12 +53,12 @@ end
53
53
  return new_names
54
54
  end
55
55
 
56
- def self.get_pattern(layout, first_column_location=0)
57
-
58
-
56
+ def self.get_pattern(layout, first_column_location=0)
59
57
  layout.map {|l| '@' + (l.start - first_column_location).to_s + 'A' + l.len.to_s}.to_s
60
58
  end
61
-
59
+
60
+ public
61
+
62
62
  def build_record(line)
63
63
  rec = line.unpack(@field_pattern)
64
64
  rec.map{|f| f.strip!} if @strip_whitespace
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- require '../lib/fl_record_file'
1
+ require File.dirname(__FILE__) + "/../lib/hflr"
2
2
 
3
3
 
4
4
  # Read a file with only one record type (no record type markers)
@@ -10,8 +10,10 @@ Column.new("name",1,25),
10
10
  Column.new("zip",26,5),
11
11
  Column.new("balance",31,5)]}
12
12
 
13
- customer_file = FixedLengthRecordFile.new(File.new("customers.dat"), :customer, columns, 1, [:line_number])
13
+ customer_file = FLRFile.new(File.new("customers.dat"), :customer, columns, 1, [:line_number])
14
14
 
15
+
16
+ # You can read through the file and access the fields with methods named after the columns:
15
17
  customer_file.each do |record|
16
18
  puts "Customer #{customer_file.line_number.to_s} #{record.name} #{record.zip} "
17
19
  end
@@ -32,7 +34,7 @@ layouts = {:customer=>[
32
34
  Column.new("date",9,10),]}
33
35
 
34
36
 
35
- customer_orders_file = FixedLengthRecordFile.new(
37
+ customer_orders_file = FLRFile.new(
36
38
  File.new("customer_orders.dat"),
37
39
  {"C"=>:customer,"O"=>:order},# Use these characters as record type markers
38
40
  layouts,
@@ -1,7 +1,7 @@
1
1
 
2
2
 
3
3
 
4
- class FixedLengthRecordFileTest < Test::Unit::TestCase
4
+ class FLRFileTest < Test::Unit::TestCase
5
5
 
6
6
 
7
7
 
@@ -24,7 +24,7 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
24
24
 
25
25
  def test_initialize
26
26
  sample_data_path = File.dirname(__FILE__)
27
- fwf = FixedLengthRecordFile.new(
27
+ fwf = FLRFile.new(
28
28
  File.new("#{sample_data_path}/sample.dat"),
29
29
  @record_types, # Record types to read from the file, all others will be ignored
30
30
  @layouts,# metadata for all record types
@@ -40,7 +40,7 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
40
40
  assert p_struct.respond_to?(:record_type),"Should have record_type method"
41
41
 
42
42
 
43
- fwf = FixedLengthRecordFile.new(
43
+ fwf = FLRFile.new(
44
44
  File.new("#{sample_data_path}/sample.dat"),
45
45
  @record_types, # Record types to read from the file, all others will be ignored
46
46
  @layouts,# metadata for all record types
@@ -54,7 +54,7 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
54
54
 
55
55
  def test_get_record_type
56
56
  sample_data_path = File.dirname(__FILE__)
57
- fwf = FixedLengthRecordFile.new(
57
+ fwf = FLRFile.new(
58
58
  File.new("#{sample_data_path}/sample.dat"),
59
59
  @record_types, # Record types to read from the file, all others will be ignored
60
60
  @layouts,# metadata for all record types
@@ -73,7 +73,7 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
73
73
 
74
74
  def test_build_record
75
75
  sample_data_path = File.dirname(__FILE__)
76
- fwf = FixedLengthRecordFile.new(
76
+ fwf = FLRFile.new(
77
77
  File.new("#{sample_data_path}/sample.dat"),
78
78
  @record_types, # Record types to read from the file, all others will be ignored
79
79
  @layouts,# metadata for all record types
@@ -94,7 +94,7 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
94
94
 
95
95
  def test_each
96
96
  sample_data_path = File.dirname(__FILE__)
97
- fwf = FixedLengthRecordFile.new(
97
+ fwf = FLRFile.new(
98
98
  File.new("#{sample_data_path}/sample.dat"),
99
99
  @record_types,
100
100
  @layouts,
@@ -115,7 +115,7 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
115
115
 
116
116
  def test_next_record
117
117
  sample_data_path = File.dirname(__FILE__)
118
- fwf = FixedLengthRecordFile.new(
118
+ fwf = FLRFile.new(
119
119
  File.new("#{sample_data_path}/sample.dat"), # data is in this file
120
120
  @record_types, # Records of different types have these labels
121
121
  @layouts, # metadata for creating record structs
@@ -125,6 +125,7 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
125
125
  records = []
126
126
  while rec = fwf.next_record do
127
127
  records << rec
128
+
128
129
  end
129
130
 
130
131
  assert_equal :household, records.first.record_type
@@ -147,13 +148,13 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
147
148
  record = Struct.new(:rectypeh,:phone,:mortgage,:record_type)
148
149
 
149
150
  sample_data_path = File.dirname(__FILE__)
150
- FixedLengthRecordFile.open(
151
+ FLRFile.open(
151
152
  "#{sample_data_path}/sample_out.dat", # data is in this file
152
153
  "w",# open file for writing
153
154
  @record_types, # Records of different types have these labels
154
155
  @layouts, # metadata for creating record structs
155
156
  1) do |fwf|# All metadata starting column locations are to be shifted 1 left
156
- assert_equal FixedLengthRecordFile, fwf.class
157
+ assert_equal FLRFile, fwf.class
157
158
  fwf << record.new("H",1,2,:household)
158
159
  fwf << ["H",1,3,:household]
159
160
  end
@@ -162,7 +163,7 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
162
163
 
163
164
  var = Struct.new(:name,:start,:len)
164
165
  l = {:customer=>[var.new("name",1,25),var.new("age",26,3)]}
165
- fwf = FixedLengthRecordFile.new(File.new("sample2_out.dat","w"),
166
+ fwf = FLRFile.new(File.new("sample2_out.dat","w"),
166
167
  :customer, l,1)
167
168
 
168
169
  fwf << ["joe",25,:customer]
@@ -173,7 +174,7 @@ class FixedLengthRecordFileTest < Test::Unit::TestCase
173
174
 
174
175
  def test_line_type
175
176
  sample_data_path = File.dirname(__FILE__)
176
- fwf = FixedLengthRecordFile.new(
177
+ fwf = FLRFile.new(
177
178
  File.new("#{sample_data_path}/sample.dat"),
178
179
  @record_types, # Record types to read from the file, all others will be ignored
179
180
  @layouts,# metadata for all record types
@@ -189,7 +190,7 @@ end
189
190
 
190
191
  def test_get_next_known_line_type
191
192
  sample_data_path = File.dirname(__FILE__)
192
- fwf = FixedLengthRecordFile.new(
193
+ fwf = FLRFile.new(
193
194
  File.new("#{sample_data_path}/sample_activities.dat"),
194
195
  @record_types, # Record types to read from the file, all others will be ignored
195
196
  @layouts,# metadata for all record types
File without changes
@@ -4,3 +4,4 @@ P02326
4
4
  P01916
5
5
  H010599999999
6
6
  P02516
7
+
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
1
  require File.dirname(__FILE__) + '/test_helper.rb'
2
2
  require File.dirname(__FILE__) + "/record_template_test"
3
- require File.dirname(__FILE__) + "/fixed_length_record_file_test"
3
+ require File.dirname(__FILE__) + "/flrfile_test"
4
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hflr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin Davis
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-03 00:00:00 -05:00
12
+ date: 2009-08-04 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,27 +32,23 @@ description: |-
32
32
 
33
33
  See the tests and examples bundled with this gem.
34
34
  email: colin.c.davis@gmail.com
35
- executables:
36
- - hflr
35
+ executables: []
36
+
37
37
  extensions: []
38
38
 
39
39
  extra_rdoc_files:
40
40
  - History.txt
41
41
  - README.txt
42
- - bin/hflr
43
42
  files:
44
43
  - History.txt
45
44
  - README.txt
46
45
  - Rakefile
47
- - bin/hflr
48
46
  - hflr.gemspec
49
47
  - lib/hflr.rb
50
48
  - lib/hflr/fl_record_file.rb
51
49
  - lib/hflr/hflr.rb
52
50
  - lib/hflr/record_template.rb
53
51
  - sample2_out.dat
54
- - spec/hflr_spec.rb
55
- - spec/spec_helper.rb
56
52
  - tasks/ann.rake
57
53
  - tasks/bones.rake
58
54
  - tasks/gem.rake
@@ -69,7 +65,7 @@ files:
69
65
  - test/customer_orders.dat
70
66
  - test/customers.dat
71
67
  - test/examples.rb
72
- - test/fixed_length_record_file_test.rb
68
+ - test/flrfile_test.rb
73
69
  - test/record_template_test.rb
74
70
  - test/sample.dat
75
71
  - test/sample2_out.dat
data/bin/hflr DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.expand_path(
4
- File.join(File.dirname(__FILE__), %w[.. lib hflr]))
5
-
6
- # Put your code here
7
-
8
- # EOF
@@ -1,7 +0,0 @@
1
-
2
- require File.join(File.dirname(__FILE__), %w[spec_helper])
3
-
4
- describe Hflr do
5
- end
6
-
7
- # EOF
@@ -1,16 +0,0 @@
1
-
2
- require File.expand_path(
3
- File.join(File.dirname(__FILE__), %w[.. lib hflr]))
4
-
5
- Spec::Runner.configure do |config|
6
- # == Mock Framework
7
- #
8
- # RSpec uses it's own mocking framework by default. If you prefer to
9
- # use mocha, flexmock or RR, uncomment the appropriate line:
10
- #
11
- # config.mock_with :mocha
12
- # config.mock_with :flexmock
13
- # config.mock_with :rr
14
- end
15
-
16
- # EOF