prep 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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