jeremyf-comma_pile 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 1
4
- :patch: 1
4
+ :patch: 2
data/comma_pile.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{comma_pile}
5
- s.version = "0.1.1"
5
+ s.version = "0.1.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Jeremy Friesen"]
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
26
26
  "lib/comma_pile/line_parser.rb",
27
27
  "lib/comma_pile/pivot_node.rb",
28
28
  "lib/comma_pile/report.rb",
29
+ "test/comma_pile/line_parser_test.rb",
29
30
  "test/comma_pile_test.rb",
30
31
  "test/fixtures/report.csv",
31
32
  "test/test_helper.rb"
@@ -36,7 +37,8 @@ Gem::Specification.new do |s|
36
37
  s.rubygems_version = %q{1.3.4}
37
38
  s.summary = %q{Video Stats for an onstreammedia.com log}
38
39
  s.test_files = [
39
- "test/comma_pile_test.rb",
40
+ "test/comma_pile/line_parser_test.rb",
41
+ "test/comma_pile_test.rb",
40
42
  "test/test_helper.rb",
41
43
  "examples/example_line_parser.rb"
42
44
  ]
@@ -1,5 +1,11 @@
1
1
  module CommaPile
2
2
  class LineParser
3
+ def self.define_attribute(name, index = nil, cast_class = nil, &block)
4
+ raise ArgumentError, "You must specify either an :index parameter or a :block for retriving the column information" if (block_given? && index)
5
+ define_method(name, &block) and return if block_given?
6
+ define_method(name) { line[index] } and return if index.is_a?(Integer)
7
+ end
8
+
3
9
  def self.with(line)
4
10
  yield(new(line))
5
11
  end
@@ -0,0 +1,29 @@
1
+ require '../test_helper'
2
+
3
+ class CommaPile::LineParserTest < Test::Unit::TestCase
4
+
5
+ context 'define column' do
6
+ should 'allow column method to be defined via an integer' do
7
+ klass = Class.new(CommaPile::LineParser) {
8
+ define_attribute :name, 1
9
+ }
10
+
11
+ assert_equal 'b', klass.new(['a','b','c']).name
12
+ end
13
+
14
+ should 'allow column to be set by a block' do
15
+ klass = Class.new(CommaPile::LineParser) {
16
+ define_attribute(:name) { self[1] + (self[2] * 2) }
17
+ }
18
+ assert_equal 'bcc', klass.new(['a','b','c']).name
19
+ end
20
+
21
+ should 'raise exception if both index and block are passed' do
22
+ assert_raises ArgumentError do
23
+ Class.new(CommaPile::LineParser) {
24
+ define_attribute(:name, 1) { self[1] + (self[2] * 2) }
25
+ }
26
+ end
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jeremyf-comma_pile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Friesen
@@ -36,6 +36,7 @@ files:
36
36
  - lib/comma_pile/line_parser.rb
37
37
  - lib/comma_pile/pivot_node.rb
38
38
  - lib/comma_pile/report.rb
39
+ - test/comma_pile/line_parser_test.rb
39
40
  - test/comma_pile_test.rb
40
41
  - test/fixtures/report.csv
41
42
  - test/test_helper.rb
@@ -67,6 +68,7 @@ signing_key:
67
68
  specification_version: 3
68
69
  summary: Video Stats for an onstreammedia.com log
69
70
  test_files:
71
+ - test/comma_pile/line_parser_test.rb
70
72
  - test/comma_pile_test.rb
71
73
  - test/test_helper.rb
72
74
  - examples/example_line_parser.rb