blm 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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"