blm 0.1.0 → 0.1.1

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.
Files changed (6) hide show
  1. data/Gemfile +0 -5
  2. data/VERSION +1 -1
  3. data/blm.gemspec +1 -1
  4. data/lib/blm.rb +47 -35
  5. data/spec/blm_spec.rb +8 -2
  6. metadata +3 -3
data/Gemfile CHANGED
@@ -1,10 +1,5 @@
1
1
  source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
5
2
 
6
- # Add dependencies to develop your gem here.
7
- # Include everything needed to run rake, tests, features, etc.
8
3
  group :development do
9
4
  gem "rspec", "~> 2.1.0"
10
5
  gem "bundler", "~> 1.0.0"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/blm.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{blm}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Robert May"]
data/lib/blm.rb CHANGED
@@ -1,49 +1,61 @@
1
- class BLM
2
- def initialize(source)
3
- @source = source
4
- end
1
+ module BLM
2
+ class Parser
3
+ def initialize(source)
4
+ @source = source
5
+ end
5
6
 
6
- def header
7
- return @header if defined?(@header)
7
+ def header
8
+ return @header if defined?(@header)
8
9
 
9
- @header = {}
10
- get_contents(@source, "#HEADER#", "#").each_line do |line|
11
- next if line.empty?
12
- key, value = line.split(" : ")
13
- @header[key.downcase.to_sym] = value.gsub(/'/, "").strip
10
+ @header = {}
11
+ get_contents(@source, "#HEADER#", "#").each_line do |line|
12
+ next if line.empty?
13
+ key, value = line.split(" : ")
14
+ @header[key.downcase.to_sym] = value.gsub(/'/, "").strip
15
+ end
16
+ return @header
14
17
  end
15
- return @header
16
- end
17
18
 
18
- def definition
19
- return @definition if defined?(@definition)
19
+ def definition
20
+ return @definition if defined?(@definition)
20
21
 
21
- @definition = []
22
- get_contents(@source, "#DEFINITION#", "#").split(header[:eor]).first.split(header[:eof]).each do |field|
23
- next if field.empty?
24
- @definition << field.downcase.strip
22
+ @definition = []
23
+ get_contents(@source, "#DEFINITION#", "#").split(header[:eor]).first.split(header[:eof]).each do |field|
24
+ next if field.empty?
25
+ @definition << field.downcase.strip
26
+ end
27
+ return @definition
25
28
  end
26
- return @definition
27
- end
28
29
 
29
- def data
30
- return @data if defined?(@data)
30
+ def data
31
+ return @data if defined?(@data)
31
32
 
32
- @data = []
33
- get_contents(@source, "#DATA#", "#").split(header[:eor]).each do |line|
34
- entry = {}
35
- line.split(header[:eof]).each_with_index do |field, index|
36
- entry[definition[index].to_sym] = field.strip
33
+ @data = []
34
+ get_contents(@source, "#DATA#", "#").split(header[:eor]).each do |line|
35
+ entry = {}
36
+ line.split(header[:eof]).each_with_index do |field, index|
37
+ entry[definition[index].to_sym] = field.strip
38
+ end
39
+ @data << Row.new(entry)
37
40
  end
38
- @data << entry
41
+ return @data
42
+ end
43
+
44
+ private
45
+ def get_contents(string, start, finish)
46
+ start = string.index(start) + start.size
47
+ finish = string.index(finish, start) - finish.size
48
+ string[start..finish].strip
39
49
  end
40
- return @data
41
50
  end
42
51
 
43
- private
44
- def get_contents(string, start, finish)
45
- start = string.index(start) + start.size
46
- finish = string.index(finish, start) - finish.size
47
- string[start..finish].strip
52
+ class Row
53
+ def initialize(hash)
54
+ @attributes = hash
55
+ end
56
+
57
+ def method_missing(method, *arguments, &block)
58
+ return @attributes[method] unless @attributes[method].nil?
59
+ end
48
60
  end
49
61
  end
data/spec/blm_spec.rb CHANGED
@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
  describe BLM do
4
4
  context "reading a .blm file" do
5
5
  before :all do
6
- @blm = BLM.new( File.open(File.dirname(__FILE__) + "/blm/example_data.blm", "r").read )
6
+ @blm = BLM::Parser.new( File.open(File.dirname(__FILE__) + "/blm/example_data.blm", "r").read )
7
7
  end
8
8
 
9
9
  it "should parse settings from the header" do
@@ -23,7 +23,13 @@ describe BLM do
23
23
  @blm.data.should have_at_least(1).items
24
24
  @blm.data.should respond_to(:each, :each_with_index)
25
25
  @blm.data.each do |row|
26
- row.should be_a(Hash)
26
+ row.should be_a(BLM::Row)
27
+ end
28
+ end
29
+
30
+ it "should allow access to data values via methods" do
31
+ @blm.data.each do |row|
32
+ row.address_1.should_not be_nil
27
33
  end
28
34
  end
29
35
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Robert May
@@ -112,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - ">="
114
114
  - !ruby/object:Gem::Version
115
- hash: 268367279
115
+ hash: -195538627
116
116
  segments:
117
117
  - 0
118
118
  version: "0"