prep 0.3.1 → 0.3.2

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.3.2
@@ -0,0 +1,36 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.join(File.dirname(__FILE__), "..", "lib", "prep")
3
+
4
+ prep = PREP::Core::Prep.new("sample8.yml")
5
+ values = {
6
+ :content =>
7
+ {
8
+ :out_loop =>
9
+ {
10
+ :values => [
11
+ { :inner_loop =>
12
+ {:values =>
13
+ [
14
+ {:title => "hogehoge1"},
15
+ {:title => "hogehoge2"},
16
+ {:title => "hogehoge3"},
17
+ {:title => "hogehoge4"},
18
+ {:title => "hogehoge5"},
19
+ {:title => "hogehoge6"},
20
+ {:title => "hogehoge7"},
21
+ {:title => "hogehoge8"},
22
+ {:title => "hogehoge9"},
23
+ {:title => "hogehoge10"},
24
+ {:title => "hogehoge11"},
25
+ {:title => "hogehoge12"},
26
+ ],
27
+ :header => { :title=> "in title" },
28
+ },
29
+ },
30
+ ],
31
+ :header => { :title_label => "タイトル(一回だけ)" },
32
+ },
33
+ },
34
+ }
35
+
36
+ prep.generate("#{$0}.pdf", values)
@@ -0,0 +1,59 @@
1
+ page:
2
+ size: a4
3
+ orientation: portrait
4
+ margin:
5
+ top: 10
6
+ left: 10
7
+ bottom: 10
8
+ right: 10
9
+ # 内側のグループ定義
10
+ inner_loop_header:
11
+ type: group
12
+ title:
13
+ type: label
14
+ label: "hogehoge"
15
+ region:
16
+ x: 10
17
+ y: 10
18
+ width: 60
19
+ height: 10
20
+ inner_loop_content:
21
+ type: group
22
+ title:
23
+ type: label
24
+ label: "hogehoge"
25
+ region:
26
+ x: 10
27
+ y: 10
28
+ width: 60
29
+ height: 10
30
+ # 外側のテーブル定義
31
+ out_loop_header:
32
+ type: group
33
+ # タイトル文字列
34
+ title_label:
35
+ type: label
36
+ label: "タイトル"
37
+ region:
38
+ x: 10
39
+ y: 10
40
+ width: 50
41
+ height: 5
42
+ out_loop_content:
43
+ type: group
44
+ inner_loop:
45
+ type: loop
46
+ direction: vertical
47
+ gap: 10
48
+ header: inner_loop_header
49
+ iterator: inner_loop_content
50
+ page_break: true
51
+ content:
52
+ type: group
53
+ out_loop:
54
+ type: loop
55
+ header: out_loop_header
56
+ iterator: out_loop_content
57
+ direction: vertical
58
+ page_break: true
59
+ header_repeat: false
@@ -24,9 +24,14 @@ module PREP # nodoc
24
24
  :allow_header_split => true,
25
25
  :fixed_times => nil,
26
26
  :at_least_one => false,
27
+ :header_repeat => true,
28
+ :x => 0,
29
+ :y => 0,
27
30
  }
28
31
 
29
- attr_reader :direction, :gap, :header_group, :iterator_group, :footer_group, :point, :page_break, :width, :height, :allow_header_split, :fixed_times, :at_least_one
32
+ attr_reader :direction, :gap, :header_group, :iterator_group, :footer_group, :point
33
+ attr_reader :page_break, :width, :height, :allow_header_split, :fixed_times, :at_least_one
34
+ attr_reader :header_repeat
30
35
 
31
36
  def initialize(identifier, values = { })
32
37
  values = @@default_values.merge(key_string_to_symbol(values))
@@ -43,6 +48,8 @@ module PREP # nodoc
43
48
  @allow_header_split = values[:allow_header_split]
44
49
  @fixed_times = values[:fixed_times]
45
50
  @at_least_one = !!values[:at_least_one]
51
+ @header_repeat = !!values[:header_repeat]
52
+ @header_rendering_count = 0
46
53
  end
47
54
 
48
55
  def direction=(d)
@@ -130,6 +137,8 @@ module PREP # nodoc
130
137
 
131
138
  return w, h
132
139
  end
140
+ # 計算を抜けるタイミングで @header_rendering_count をクリア
141
+ @header_rendering_count = 0
133
142
  end
134
143
 
135
144
  # リージョン補正
@@ -201,6 +210,9 @@ module PREP # nodoc
201
210
 
202
211
  # フッタブロック描画
203
212
  current_region = draw_footer(prep, current_region, values, stop_on_drawable)
213
+
214
+ # ヘッダの描画回数をクリア
215
+ @header_rendering_count = 0
204
216
  end
205
217
 
206
218
  private
@@ -209,6 +221,12 @@ module PREP # nodoc
209
221
  #
210
222
  # 描画後に新しい region を返却
211
223
  def draw_header(prep, region, values, stop_on_drawable = nil)
224
+ # ヘッダー描画回数をインクリメント
225
+ @header_rendering_count += 1
226
+ if !@header_repeat && @header_rendering_count > 1
227
+ # ヘッダー繰り返しなしかつヘッダの描画回数が2回目以降の場合は何もせずに region を返却
228
+ return region
229
+ end
212
230
  unless @header_group.nil?
213
231
  header = prep.group(@header_group)
214
232
  w, h = rewind_current_page(prep) do
@@ -237,6 +255,12 @@ module PREP # nodoc
237
255
 
238
256
  # ヘッダ構成要素の描画領域を計算するためのメソッド
239
257
  def calculate_header_region(prep, region, values, stop_on_drawable = nil)
258
+ # ヘッダー描画回数をインクリメント
259
+ @header_rendering_count += 1
260
+ if !@header_repeat && @header_rendering_count > 1
261
+ # ヘッダー繰り返しなしかつヘッダの描画回数が2回目以降の場合は何もせずに region を返却
262
+ return region
263
+ end
240
264
  unless @header_group.nil?
241
265
  header = prep.group(@header_group)
242
266
  w, h = header.calculate_region(prep, region, values[:header], stop_on_drawable)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prep
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 23
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 3
8
- - 1
9
- segments_generated: true
10
- version: 0.3.1
9
+ - 2
10
+ version: 0.3.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tetsuhisa MAKINO
@@ -15,82 +15,86 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-10 00:00:00 +09:00
19
- default_executable:
18
+ date: 2011-10-17 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
21
+ requirement: &id001 !ruby/object:Gem::Requirement
22
+ none: false
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
+ hash: 31
26
27
  segments:
27
28
  - 2
28
29
  - 0
29
30
  - 8
30
- segments_generated: true
31
31
  version: 2.0.8
32
- requirement: *id001
32
+ version_requirements: *id001
33
+ name: hpdf
33
34
  prerelease: false
34
35
  type: :runtime
35
- name: hpdf
36
36
  - !ruby/object:Gem::Dependency
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
38
39
  requirements:
39
40
  - - ~>
40
41
  - !ruby/object:Gem::Version
42
+ hash: 3
41
43
  segments:
42
44
  - 2
43
45
  - 3
44
46
  - 0
45
- segments_generated: true
46
47
  version: 2.3.0
47
- requirement: *id002
48
+ version_requirements: *id002
49
+ name: rspec
48
50
  prerelease: false
49
51
  type: :development
50
- name: rspec
51
52
  - !ruby/object:Gem::Dependency
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
53
55
  requirements:
54
56
  - - ~>
55
57
  - !ruby/object:Gem::Version
58
+ hash: 23
56
59
  segments:
57
60
  - 1
58
61
  - 0
59
62
  - 0
60
- segments_generated: true
61
63
  version: 1.0.0
62
- requirement: *id003
64
+ version_requirements: *id003
65
+ name: bundler
63
66
  prerelease: false
64
67
  type: :development
65
- name: bundler
66
68
  - !ruby/object:Gem::Dependency
67
- version_requirements: &id004 !ruby/object:Gem::Requirement
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
68
71
  requirements:
69
72
  - - ~>
70
73
  - !ruby/object:Gem::Version
74
+ hash: 7
71
75
  segments:
72
76
  - 1
73
77
  - 5
74
78
  - 2
75
- segments_generated: true
76
79
  version: 1.5.2
77
- requirement: *id004
80
+ version_requirements: *id004
81
+ name: jeweler
78
82
  prerelease: false
79
83
  type: :development
80
- name: jeweler
81
84
  - !ruby/object:Gem::Dependency
82
- version_requirements: &id005 !ruby/object:Gem::Requirement
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
83
87
  requirements:
84
88
  - - ">="
85
89
  - !ruby/object:Gem::Version
90
+ hash: 3
86
91
  segments:
87
92
  - 0
88
- segments_generated: true
89
93
  version: "0"
90
- requirement: *id005
94
+ version_requirements: *id005
95
+ name: rcov
91
96
  prerelease: false
92
97
  type: :development
93
- name: rcov
94
98
  description: PREP is PDF Report generator depends on HPDF.
95
99
  email: tim.makino@gmail.com
96
100
  executables:
@@ -121,6 +125,7 @@ files:
121
125
  - examples/generate_sample5.rb
122
126
  - examples/generate_sample6.rb
123
127
  - examples/generate_sample7.rb
128
+ - examples/generate_sample8.rb
124
129
  - examples/generate_sample_dataset.rb
125
130
  - examples/group_sample.yml
126
131
  - examples/image_sample.yml
@@ -131,6 +136,7 @@ files:
131
136
  - examples/sample5.yml
132
137
  - examples/sample6.yml
133
138
  - examples/sample7.yml
139
+ - examples/sample8.yml
134
140
  - lib/core/arc_rectangle.rb
135
141
  - lib/core/color.rb
136
142
  - lib/core/drawable.rb
@@ -151,7 +157,6 @@ files:
151
157
  - spec/component_spec.rb
152
158
  - spec/prep_spec.rb
153
159
  - spec/spec_helper.rb
154
- has_rdoc: true
155
160
  homepage: http://github.com/maki-tetsu/prep
156
161
  licenses:
157
162
  - MIT
@@ -161,25 +166,27 @@ rdoc_options: []
161
166
  require_paths:
162
167
  - lib
163
168
  required_ruby_version: !ruby/object:Gem::Requirement
169
+ none: false
164
170
  requirements:
165
171
  - - ">="
166
172
  - !ruby/object:Gem::Version
173
+ hash: 3
167
174
  segments:
168
175
  - 0
169
- segments_generated: true
170
176
  version: "0"
171
177
  required_rubygems_version: !ruby/object:Gem::Requirement
178
+ none: false
172
179
  requirements:
173
180
  - - ">="
174
181
  - !ruby/object:Gem::Version
182
+ hash: 3
175
183
  segments:
176
184
  - 0
177
- segments_generated: true
178
185
  version: "0"
179
186
  requirements: []
180
187
 
181
188
  rubyforge_project:
182
- rubygems_version: 1.3.6
189
+ rubygems_version: 1.8.10
183
190
  signing_key:
184
191
  specification_version: 3
185
192
  summary: PREP is PDF Report generator depends on HPDF.
@@ -193,6 +200,7 @@ test_files:
193
200
  - examples/generate_sample5.rb
194
201
  - examples/generate_sample6.rb
195
202
  - examples/generate_sample7.rb
203
+ - examples/generate_sample8.rb
196
204
  - examples/generate_sample_dataset.rb
197
205
  - spec/component_spec.rb
198
206
  - spec/prep_spec.rb