Skip to content

Latest commit

 

History

History
58 lines (39 loc) · 1.64 KB

README.md

File metadata and controls

58 lines (39 loc) · 1.64 KB

Fixedwidth

Bare bones fixed width data processing. Transform fixed width files into CSV or Ruby Hashes.

Installation

Add this line to your application's Gemfile:

gem 'fixedwidth'

And then execute:

$ bundle

Or install it yourself as:

$ gem install fixedwidth

Usage

Arguments taken are:

  • file - path to the fixed width file
  • start - a string of start postitions
  • stop - a string of stop positions
  • header - a string of column names
  • delimiter - data delimiter of choice, defaults to comma

Note that the start and stop positions are the column positions in the actual file. The offset is calculated by the Gem so you don't have to do it manually.

  Fixedwidth.parse(start:  '1,9,17,44,46', stop: '8,16,36,45,63')
  Fixedwidth.column_positions # Array of substring positions
  # => [[0, 8], [8, 8], [16, 20], [43, 2], [45, 18]]

Example

# ./contacts.txt
# John    Smith   [email protected]                1-888-555-6666
# Michele O'[email protected]             1-333-321-8765

Fixedwidth.parse(file: 'contacts.txt', start:  '1,9,17,44,46', stop: '8,16,36,45,63', header: 'first,last,email,blank,phone', delimiter: ",") do |line|
  puts line.to_hash # => { first: "John", last: "Smith", email: "[email protected]", blank: "", phone: "1-888-555-6666" }
  puts line.to_csv # => "John,Smith,[email protected],,1-888-555-6666"

  # ...rest of loop.
end

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request