prep 0.2.2 → 0.2.3

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 (4) hide show
  1. data/VERSION +1 -1
  2. data/lib/core/loop.rb +26 -0
  3. data/prep.gemspec +2 -2
  4. metadata +4 -4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
data/lib/core/loop.rb CHANGED
@@ -245,11 +245,37 @@ module PREP # nodoc
245
245
  @width ||= w
246
246
  @width = w if @width < w
247
247
  end
248
+ # イテーレーションが一度も描画できない場合は進行方向に対するページ切り替え例外
249
+ unless at_least_one_time_iteration?(prep, region, values)
250
+ if @direction == DIRECTIONS[:horizontal]
251
+ raise RegionWidthOverflowError.new
252
+ else # if @direction == DIRECTIONS[:vertical]
253
+ raise RegionHeightOverflowError.new
254
+ end
255
+ end
248
256
  end
249
257
 
250
258
  return region
251
259
  end
252
260
 
261
+ # 最低一回はイテーレーションループが描画可能であることを確認
262
+ def at_least_one_time_iteration?(prep, region, values)
263
+ # 現在のページ番号を確保
264
+ page_pos_x, page_pos_y = prep.page_pos_x, prep.page_pos_y
265
+ # 一回分のデータでイテーレーションの領域計算を実施
266
+ calculate_iterator_region(prep, region.dup, { :values => [values[:values].first] })
267
+ # 進行方向へのページ切り替えが発生したかを判定
268
+ if @direction == DIRECTIONS[:horizontal]
269
+ # X 方向へのページ切り替えが発生しているのでイテーレーション一回の描画不可
270
+ return false if page_pos_x != prep.page_pos_x
271
+ else # if @direction == DIRECTIONS[:vertical]
272
+ # Y 方向へのページ切り替えが発生しているのでイテーレーション一回の描画不可
273
+ return false if page_pos_y != prep.page_pos_y
274
+ end
275
+ # ページ切り替えが無いので描画可能
276
+ return true
277
+ end
278
+
253
279
  # 繰返し構成要素を描画するためのメソッド
254
280
  def draw_iterator(prep, region, values, stop_on_drawable = nil)
255
281
  iterator = prep.group(@iterator_group)
data/prep.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{prep}
8
- s.version = "0.2.2"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tetsuhisa MAKINO"]
12
- s.date = %q{2011-03-26}
12
+ s.date = %q{2011-03-30}
13
13
  s.description = %q{PREP is PDF Report generator depends on HPDF.}
14
14
  s.email = %q{tim.makino@gmail.com}
15
15
  s.executables = ["prep-test", "prep-helper"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prep
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 2
10
- version: 0.2.2
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tetsuhisa MAKINO
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-26 00:00:00 +09:00
18
+ date: 2011-03-30 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency