calexcer 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4df6ed64af2eb680363c5ed41f469665f6c5cc2b
4
- data.tar.gz: e73d24868c0a7f6ea9831bbb4e99b4d60559d9e7
3
+ metadata.gz: f98e54bd83b46de7d07efb4004d76cc8578425fa
4
+ data.tar.gz: bf1fc14995328e751b844715f9ebfecba62bdbc1
5
5
  SHA512:
6
- metadata.gz: 2d78a4dd9ba69a04ab71534f4258d9aefe7189aee4d542a385e1179a7b35366eded8dff788beb61aba24d028bf17fc4bfa9ecbc190717425d3bd29edcbd3f858
7
- data.tar.gz: 78742f2bd713c52e415ebc18aef0e093d02cd9543eb1a7516f4885d05f40a7c4af4dd99ec10dc747a9236b78c724b18f7970328cbd5ee07d8c01fe027a2c916b
6
+ metadata.gz: 320703c057ab99929141cc9b1401b29b64967b50dfb39868b8e8313f76da4e6cfe4e9d25c5650ee87039f749c254676fe07e96ee816217fc5c9eac4f27eaaac9
7
+ data.tar.gz: 04899cefe67d440efb5e12c9fa01ca37c0b288fcfa5e063f38b8e2e19fd360ae94fe14097c8128725f0c59f94189e7d8b27a8f18e6dc7f00cdff11c25affc44a
@@ -0,0 +1,23 @@
1
+ module Calexcer
2
+ module Hashable
3
+ def to_hash(*args)
4
+ raise Calexcer::MethodNotImplementedError
5
+ end
6
+
7
+ def to_reversed_hash(*args)
8
+ _events = {}
9
+ self.to_hash(*args).each do |date, events|
10
+ events.each do |event|
11
+ unless event.nil?
12
+ _events[event] ||= []
13
+ _events[event] << date
14
+ end
15
+ end
16
+ end
17
+
18
+ _events
19
+ end
20
+ alias_method :to_r_hash, :to_reversed_hash
21
+ alias_method :to_hashr, :to_reversed_hash
22
+ end
23
+ end
@@ -40,12 +40,12 @@ module Calexcer
40
40
  cell
41
41
  end
42
42
 
43
- def loop(&block)
43
+ def loop(*args, &block)
44
44
  raise Calexcer::MethodNotImplementedError
45
45
  end
46
46
 
47
- def loop_vertical(&block)
48
- loop_will_start
47
+ def loop_vertical(*args, &block)
48
+ loop_will_start(*args)
49
49
  (self.col_start..self.col_end).each do |col|
50
50
  horizontal_loop_unit_will_start(col)
51
51
  (self.row_start..self.row_end).each do |row|
@@ -60,8 +60,8 @@ module Calexcer
60
60
  loop_did_end
61
61
  end
62
62
 
63
- def loop_horizontal(&block)
64
- loop_will_start
63
+ def loop_horizontal(*args, &block)
64
+ loop_will_start(*args)
65
65
  (self.row_start..self.row_end).each do |row|
66
66
  vertical_loop_unit_will_start(row)
67
67
  (self.col_start..self.col_end).each do |col|
@@ -76,8 +76,8 @@ module Calexcer
76
76
  loop_did_end
77
77
  end
78
78
 
79
- def loop_will_start
80
- dimensions
79
+ def loop_will_start(*args)
80
+ dimensions(*args)
81
81
  end
82
82
 
83
83
  def loop_did_end
@@ -1,9 +1,11 @@
1
- require "calexcer/sheetable"
1
+ require "calexcer/hashable"
2
2
  require "calexcer/cell"
3
3
 
4
4
  module Calexcer
5
5
  class Sheet
6
- include Calexcer::Sheetable
6
+ include Calexcer::Hashable
7
+
8
+ attr_reader :sheet
7
9
 
8
10
  def self.sheet_class_name(name)
9
11
  _name = []
@@ -22,9 +24,29 @@ module Calexcer
22
24
  cell_class.new(self.sheet[row, col])
23
25
  end
24
26
 
27
+ def [](row, col)
28
+ self.sheet[row, col]
29
+ end
30
+
31
+ #--------------------#
32
+ protected
33
+
34
+ attr_writer :sheet
35
+
25
36
  #--------------------#
26
37
  private
27
38
 
39
+ def dimensions(*args)
40
+ arg = args.shift||{}
41
+
42
+ @row_start, @row_end, @col_start, @col_end = self.sheet.dimensions
43
+
44
+ @row_start = arg[:row_start] || @row_start
45
+ @row_end = arg[:row_end] || @row_end
46
+ @col_start = arg[:col_start] || @col_start
47
+ @col_end = arg[:col_end] || @col_end
48
+ end
49
+
28
50
  def sheet_class(name)
29
51
  self.class.sheet_class_name(name)
30
52
  end
@@ -12,11 +12,11 @@ module Calexcer
12
12
  self.initialize_year_month(year: year, month: month)
13
13
  end
14
14
 
15
- def to_hash(ignore_header: true)
15
+ def to_hash(*args)
16
16
  self.events = {}
17
17
  self.dates = {}
18
18
 
19
- self.loop do |cell|
19
+ self.loop(*args) do |cell|
20
20
  case cell.value
21
21
  when Date
22
22
  self.cell_as_date(cell.value)
@@ -52,8 +52,8 @@ module Calexcer
52
52
  end
53
53
  end
54
54
 
55
- def loop(&block)
56
- self.loop_horizontal(&block)
55
+ def loop(*args, &block)
56
+ self.loop_horizontal(*args, &block)
57
57
  end
58
58
 
59
59
  def horizontal_loop_unit_will_start(col)
@@ -10,11 +10,13 @@ module Calexcer
10
10
  self.initialize_year_month(year: year, month: month)
11
11
  end
12
12
 
13
- def to_hash(ignore_header: true)
14
- self.ignore_header = ignore_header
13
+ def to_hash(*args)
14
+ hash_args = args.shift||{}
15
+
16
+ self.ignore_header = hash_args[:ignore_header]||true
15
17
  self.events = {}
16
18
 
17
- self.loop do |cell|
19
+ self.loop(hash_args) do |cell|
18
20
  if (self.ignore_header) && (! cell.value.nil?)
19
21
  self.ignore_header = false
20
22
  else
@@ -52,8 +54,8 @@ module Calexcer
52
54
  self.add_event(self.current_date, string)
53
55
  end
54
56
 
55
- def loop(&block)
56
- self.loop_vertical(&block)
57
+ def loop(*args, &block)
58
+ self.loop_vertical(*args, &block)
57
59
  end
58
60
 
59
61
  def vertical_loop_unit_will_start(row)
@@ -1,3 +1,3 @@
1
1
  module Calexcer
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -23,9 +23,9 @@ describe Calexcer::Book do
23
23
  expect(calexcer.sheets).to be_a(Array)
24
24
  end
25
25
 
26
- example "includes Calexcer::Sheetable" do
26
+ example "includes Calexcer::Sheet" do
27
27
  calexcer.sheets.each do |sheet|
28
- expect(sheet).to be_a(Calexcer::Sheetable)
28
+ expect(sheet).to be_a(Calexcer::Sheet)
29
29
  end
30
30
  end
31
31
  end
@@ -6,6 +6,7 @@ describe Calexcer::Cell do
6
6
  let(:sheet) { calexcer.sheets.first }
7
7
 
8
8
  let(:target) { described_class.new(sheet[0, 0], year: 2014, month: 8) }
9
+
9
10
  describe "#value" do
10
11
  context "nill cell" do
11
12
  before { allow(target).to receive(:cell) { nil } }
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Calexcer::Sheetable do
3
+ describe Calexcer::Hashable do
4
4
  let(:sample) { Calexcer::Samples[:vertical] }
5
5
  let(:calexcer) { Calexcer::Book.new(sample) }
6
6
  let(:sheet) { calexcer.sheets.first }
@@ -1,4 +1,5 @@
1
1
  require "spec_helper"
2
+ require "lib/shared_spec/shared_hashable_spec"
2
3
 
3
4
  describe Calexcer::HorizontalSheet do
4
5
  let(:sample) { Calexcer::Samples[:horizontal] }
@@ -20,6 +21,9 @@ describe Calexcer::HorizontalSheet do
20
21
  expect(events[Date.new(2014, 8, 3)]).to be_include("sunday game")
21
22
  expect(events[Date.new(2014, 8, 31)]).to be_include("live")
22
23
  end
24
+
25
+ it_behaves_like "specified dimensions"
26
+
23
27
  end
24
28
 
25
29
  describe "#to_reversed_hash" do
@@ -1,4 +1,5 @@
1
1
  require "spec_helper"
2
+ require "lib/shared_spec/shared_hashable_spec"
2
3
 
3
4
  describe Calexcer::VerticalSheet do
4
5
  let(:sample) { Calexcer::Samples[:vertical] }
@@ -25,6 +26,9 @@ describe Calexcer::VerticalSheet do
25
26
  example "block to get non-events" do
26
27
  expect(sheet.to_hash.collect{|k,v| v}.flatten).not_to be_include("Description of the calendar")
27
28
  end
29
+
30
+ it_behaves_like "specified dimensions"
31
+
28
32
  end # describe "#to_hash"
29
33
 
30
34
  describe "#to_reversed_hash" do
@@ -5,8 +5,8 @@ describe Calexcer::Sheet do
5
5
  let(:calexcer) { Calexcer::Book.new(sample) }
6
6
  let(:sheet) { calexcer.sheets.first }
7
7
 
8
- example "sheetable" do
9
- expect(sheet).to be_a(Calexcer::Sheetable)
8
+ example "Hashable" do
9
+ expect(sheet).to be_a(Calexcer::Hashable)
10
10
  end
11
11
 
12
12
  describe ".sheet_class_name" do
@@ -0,0 +1,30 @@
1
+ require "spec_helper"
2
+
3
+ shared_examples "specified dimensions" do
4
+ let(:specified_dimension) { 50 }
5
+
6
+ example "specified row start" do
7
+ expect do
8
+ sheet.to_hash(row_start: specified_dimension)
9
+ end.to change{ sheet.__send__(:row_start) }.from(nil).to(specified_dimension)
10
+ end
11
+
12
+ example "specified row end" do
13
+ expect do
14
+ sheet.to_hash(row_end: specified_dimension)
15
+ end.to change{ sheet.__send__(:row_end) }.from(nil).to(specified_dimension)
16
+ end
17
+
18
+ example "specified col start" do
19
+ expect do
20
+ sheet.to_hash(col_start: specified_dimension)
21
+ end.to change{ sheet.__send__(:col_start) }.from(nil).to(specified_dimension)
22
+ end
23
+
24
+ example "specified col end" do
25
+ expect do
26
+ sheet.to_hash(col_end: specified_dimension)
27
+ end.to change{ sheet.__send__(:col_end) }.from(nil).to(specified_dimension)
28
+ end
29
+
30
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calexcer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - sekizo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-14 00:00:00.000000000 Z
11
+ date: 2014-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spreadsheet
@@ -134,21 +134,22 @@ files:
134
134
  - lib/calexcer/book.rb
135
135
  - lib/calexcer/cell.rb
136
136
  - lib/calexcer/errors/method_not_implemented_error.rb
137
+ - lib/calexcer/hashable.rb
137
138
  - lib/calexcer/loopable.rb
138
139
  - lib/calexcer/sheet.rb
139
140
  - lib/calexcer/sheet/horizontal_sheet.rb
140
141
  - lib/calexcer/sheet/vertical_sheet.rb
141
- - lib/calexcer/sheetable.rb
142
142
  - lib/calexcer/version.rb
143
143
  - spec/lib/calexcer/book_spec.rb
144
144
  - spec/lib/calexcer/cell_spec.rb
145
+ - spec/lib/calexcer/hashable_spec.rb
145
146
  - spec/lib/calexcer/loopable_spec.rb
146
147
  - spec/lib/calexcer/sheet/horizontal_sheet_spec.rb
147
148
  - spec/lib/calexcer/sheet/vertical_sheet_merged_cell_spec.rb
148
149
  - spec/lib/calexcer/sheet/vertical_sheet_spec.rb
149
150
  - spec/lib/calexcer/sheet_spec.rb
150
- - spec/lib/calexcer/sheetable_spec.rb
151
151
  - spec/lib/calexcer_spec.rb
152
+ - spec/lib/shared_spec/shared_hashable_spec.rb
152
153
  - spec/sample/horizontal_calendar.xls
153
154
  - spec/sample/vertical_calendar.xls
154
155
  - spec/sample/vertical_calendar_merged_cell.xls
@@ -180,13 +181,14 @@ summary: Convert excel sheet to object as calendar.
180
181
  test_files:
181
182
  - spec/lib/calexcer/book_spec.rb
182
183
  - spec/lib/calexcer/cell_spec.rb
184
+ - spec/lib/calexcer/hashable_spec.rb
183
185
  - spec/lib/calexcer/loopable_spec.rb
184
186
  - spec/lib/calexcer/sheet/horizontal_sheet_spec.rb
185
187
  - spec/lib/calexcer/sheet/vertical_sheet_merged_cell_spec.rb
186
188
  - spec/lib/calexcer/sheet/vertical_sheet_spec.rb
187
189
  - spec/lib/calexcer/sheet_spec.rb
188
- - spec/lib/calexcer/sheetable_spec.rb
189
190
  - spec/lib/calexcer_spec.rb
191
+ - spec/lib/shared_spec/shared_hashable_spec.rb
190
192
  - spec/sample/horizontal_calendar.xls
191
193
  - spec/sample/vertical_calendar.xls
192
194
  - spec/sample/vertical_calendar_merged_cell.xls
@@ -1,46 +0,0 @@
1
- module Calexcer
2
- module Sheetable
3
- attr_reader :sheet
4
-
5
- def to_hash(ignore_header: true)
6
- raise Calexcer::MethodNotImplementedError
7
- end
8
-
9
- def to_reversed_hash(ignore_header: true)
10
- _events = {}
11
- self.to_hash(ignore_header: ignore_header).each do |date, events|
12
- events.each do |event|
13
- unless event.nil?
14
- _events[event] ||= []
15
- _events[event] << date
16
- end
17
- end
18
- end
19
-
20
- _events
21
- end
22
- alias_method :to_r_hash, :to_reversed_hash
23
- alias_method :to_hashr, :to_reversed_hash
24
-
25
- #--------------------#
26
- protected
27
-
28
- attr_writer :sheet
29
-
30
- #--------------------#
31
- private
32
-
33
- def dimensions
34
- @row_start, @row_end, @col_start, @col_end = self.sheet.dimensions
35
- end
36
-
37
- def method_missing(name, *args, &block)
38
- begin
39
- self.sheet.__send__(name, *args, &block)
40
- rescue => e
41
- super
42
- end
43
- end
44
-
45
- end
46
- end