calexcer 0.0.5 → 0.0.6

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.
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