prawn_calendar 0.0.1 → 1.0.0

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/README.md CHANGED
@@ -32,7 +32,7 @@ For the impatient ...
32
32
 
33
33
  ~~~~ruby
34
34
  it "implicit creates a calendar" do
35
- Prawn::Document.generate("implicit.pdf") do
35
+ Prawn::Document.generate("calendar.pdf") do
36
36
  calendar=PrawnCalendar::WeeklyCalendar.new(self)
37
37
  calendar.mk_calendar([20,700], width:500,height:250) do
38
38
  cal_entry("2013-05-04T08:00:00+01:00", "2013-05-04T19:00:00", "cc 7as ist ein test, der laufen muss")
@@ -40,9 +40,15 @@ For the impatient ...
40
40
  end
41
41
  end
42
42
  end
43
-
44
43
  ~~~~
45
44
 
45
+ ## History
46
+
47
+ * 1.0.0 2014-08-14
48
+
49
+ Released as 1.0.0 after testing with Prawn 1.2.1
50
+
51
+
46
52
  ## Limitations
47
53
 
48
54
  * It does not handle schedules over multiple days
@@ -4,26 +4,11 @@ require 'time'
4
4
  require 'date'
5
5
 
6
6
 
7
- module Prawn
8
- class Document
9
-
10
- # Defines the grid system for a particular document. Takes the number of
11
- # rows and columns and the width to use for the gutter as the
12
- # keys :rows, :columns, :gutter, :row_gutter, :column_gutter
13
- #
14
- def define_grid(options = {})
15
- @grid = Grid.new(self, options)
16
- @boxes = nil # see
17
- end
18
- end
19
- end
20
-
7
+ # this module holds all the stuff for PrawnCalendar
21
8
  module PrawnCalendar
22
9
 
23
10
  #
24
- # [ class description]
25
- #
26
- # @author [author]
11
+ # This Class represents a weekly calendar
27
12
  #
28
13
  class WeeklyCalendar
29
14
  # the Prawn instance xxx
@@ -38,6 +23,9 @@ module PrawnCalendar
38
23
  # the number of divisions in calender columns
39
24
  # this is to adjust the proportion of the first and
40
25
  # the subsequent columns
26
+ #
27
+ # for example c_col_division = 5 and c_first_col_division = 2
28
+ # makes the first column width be 2/5 of the calender column width
41
29
  attr_accessor :c_col_division
42
30
 
43
31
  # the end of the interval
@@ -64,6 +52,8 @@ module PrawnCalendar
64
52
 
65
53
  # the number of divisions in the first column
66
54
  # the one showing the time
55
+ #
56
+ # see [c_col_division] for more details.
67
57
  attr_accessor :c_firstcol_division
68
58
 
69
59
  # The font size of the calendar annotations
@@ -97,7 +87,7 @@ module PrawnCalendar
97
87
  d = Date.iso8601(day)
98
88
  # note that we start the week on monday, therefore d -(d-1).wday
99
89
  # note that Date adds days, while Time adds seconds
100
- #
90
+ #
101
91
  # compute the beginning of the week
102
92
  @c_date_start = (d -(d-1).wday).to_time
103
93
  # set end to the last second of end date
@@ -180,7 +170,7 @@ module PrawnCalendar
180
170
  # @param text [String] The text of calender entry
181
171
  # @param extraargs [Hash] additional arguments
182
172
  # :recurring true/false
183
- #
173
+ #
184
174
  # @return nil
185
175
  #
186
176
  def cal_entry(starttime, endtime, text, extraargs={})
@@ -292,108 +282,108 @@ module PrawnCalendar
292
282
  end
293
283
 
294
284
  if recurring==true then
295
- @pdf.rounded_rectangle([@pdf.bounds.width - 2, @c_entry_gutter], # startpoint
296
- 2 , # width
297
- 2 , # height
298
- @c_entry_radius # radius
299
- )
300
- @pdf.fill_and_stroke
301
- end
285
+ @pdf.rounded_rectangle([@pdf.bounds.width - 2, @c_entry_gutter], # startpoint
286
+ 2 , # width
287
+ 2 , # height
288
+ @c_entry_radius # radius
289
+ )
290
+ @pdf.fill_and_stroke
291
+ end
302
292
 
303
293
 
304
294
 
305
- # text is limited to gutter. Therefore gutter needs to be doubled
306
- # no limit at right and bottom
307
- excess_text = @pdf.text_box text,
308
- :at => [@c_entry_gutter +2, @pdf.bounds.height- 2*@c_entry_gutter-1], # need 1 pixel more a the top
309
- :width => @pdf.bounds.width-4*@c_entry_gutter -2*@c_entry_right_gutter,
310
- :height => @pdf.bounds.height-4*@c_entry_gutter,
311
- :overflow => :truncate,
312
- :kerning => true,
313
- :inline_format => true,
314
- :size => @c_entry_fontsize
295
+ # text is limited to gutter. Therefore gutter needs to be doubled
296
+ # no limit at right and bottom
297
+ excess_text = @pdf.text_box text,
298
+ :at => [@c_entry_gutter +2, @pdf.bounds.height- 2*@c_entry_gutter-1], # need 1 pixel more a the top
299
+ :width => @pdf.bounds.width-4*@c_entry_gutter -2*@c_entry_right_gutter,
300
+ :height => @pdf.bounds.height-4*@c_entry_gutter,
301
+ :overflow => :truncate,
302
+ :kerning => true,
303
+ :inline_format => true,
304
+ :size => @c_entry_fontsize
305
+ end
306
+ nil
315
307
  end
316
- nil
317
- end
318
308
 
319
309
 
320
310
 
321
- #
322
- # Creates an empty calendar
323
- #
324
- # @param ll [Array] the start point of the calendar
325
- # values are points, 0,0 is the lower left corner of the calender
326
- # see Prawn::Document.bounding_box for details
327
- # @param opts [Hash] [the options, keys: :width, :height]
328
- # @param &block [Proc] The statements to fill the calendar.
329
- #
330
- # @return [type] [description]
331
- def mk_calendar(ll, opts, &block)
332
- @pdf.bounding_box(ll, width: opts[:width], height: opts[:height]) do
333
- @pdf.stroke_bounds
334
- rows = (2 + @c_time_end - @c_time_start +1 + @c_extra_rows) * @c_row_division
335
- columns = @c_firstcol_division + @c_days.count * @c_col_division
311
+ #
312
+ # Creates an empty calendar
313
+ #
314
+ # @param ll [Array] the start point of the calendar
315
+ # values are points, 0,0 is the lower left corner of the calender
316
+ # see Prawn::Document.bounding_box for details
317
+ # @param opts [Hash] [the options, keys: :width, :height]
318
+ # @param &block [Proc] The statements to fill the calendar.
319
+ #
320
+ # @return [type] [description]
321
+ def mk_calendar(ll, opts, &block)
322
+ @pdf.bounding_box(ll, width: opts[:width], height: opts[:height]) do
323
+ @pdf.stroke_bounds
324
+ rows = (2 + @c_time_end - @c_time_start +1 + @c_extra_rows) * @c_row_division
325
+ columns = @c_firstcol_division + @c_days.count * @c_col_division
336
326
 
337
- @pdf.define_grid(:columns => columns, :rows => rows, :gutter => 0)
327
+ @pdf.define_grid(:columns => columns, :rows => rows, :gutter => 0)
338
328
 
339
- # the frames
340
- @pdf.line_width 1
341
- mk_entry([0,0],
342
- [rows - 1, columns-1], "") # outer frame
329
+ # the frames
330
+ @pdf.line_width 1
331
+ mk_entry([0,0],
332
+ [rows - 1, columns-1], "") # outer frame
343
333
 
344
- mk_entry([2 * @c_row_division, @c_firstcol_division],
345
- [rows - 1 , columns-1], "") # inner frame
334
+ mk_entry([2 * @c_row_division, @c_firstcol_division],
335
+ [rows - 1 , columns-1], "") # inner frame
346
336
 
347
- mk_entry([2 * @c_row_division, 0],
348
- [rows -1, @c_firstcol_division - 1], "") # left frame
337
+ mk_entry([2 * @c_row_division, 0],
338
+ [rows -1, @c_firstcol_division - 1], "") # left frame
349
339
 
350
- # the day - line
351
- row=0;col=@c_firstcol_division
352
- curday=@c_date_start.to_date
340
+ # the day - line
341
+ row=0;col=@c_firstcol_division
342
+ curday=@c_date_start.to_date
353
343
 
354
- @c_days.each do |i|
344
+ @c_days.each do |i|
355
345
 
356
- columnhead="#{i} #{curday.strftime('%d.%m.')}"
357
- mk_entry([row,col], [row+@c_row_division-1, col+@c_col_division-1], columnhead)
358
- #require 'pry';binding.pry
359
- curday=curday+1
360
- col += @c_col_division
361
- end
346
+ columnhead="#{i} #{curday.strftime('%d.%m.')}"
347
+ mk_entry([row,col], [row+@c_row_division-1, col+@c_col_division-1], columnhead)
348
+ #require 'pry';binding.pry
349
+ curday=curday+1
350
+ col += @c_col_division
351
+ end
362
352
 
363
- # the day after line
364
- row=@c_row_division; col=@c_firstcol_division
365
- @pdf.line_width 0.75
366
- @c_days.each do |i|
367
- mk_entry([row, col], [rows -1, col + @c_col_division - 1], "")
368
- col+=@c_col_division
369
- end
353
+ # the day after line
354
+ row=@c_row_division; col=@c_firstcol_division
355
+ @pdf.line_width 0.75
356
+ @c_days.each do |i|
357
+ mk_entry([row, col], [rows -1, col + @c_col_division - 1], "")
358
+ col+=@c_col_division
359
+ end
370
360
 
371
- #the calendar fields
372
- @pdf.line_width "0.1"
373
- col=0;row=@c_row_division
361
+ #the calendar fields
362
+ @pdf.line_width "0.1"
363
+ col=0;row=@c_row_division
374
364
 
375
- # the rows
376
- rowlabels=Array(@c_time_start .. @c_time_end).map{|i| "0#{i}.00"[-5..5]}
365
+ # the rows
366
+ rowlabels=Array(@c_time_start .. @c_time_end).map{|i| "0#{i}.00"[-5..5]}
377
367
 
378
- a=[" ", rowlabels, [].fill(" ", 0, @c_extra_rows)]
379
- a.flatten.each do |i|
368
+ a=[" ", rowlabels, [].fill(" ", 0, @c_extra_rows)]
369
+ a.flatten.each do |i|
380
370
 
381
- # the first column
382
- # -1 bcause it denotes tha last filled cell, not the next unfilled one
383
- mk_entry([row,col],[row + @c_row_division - 1, col+@c_firstcol_division - 1], "#{i}")
371
+ # the first column
372
+ # -1 bcause it denotes tha last filled cell, not the next unfilled one
373
+ mk_entry([row,col],[row + @c_row_division - 1, col+@c_firstcol_division - 1], "#{i}")
384
374
 
385
- # the other columns
386
- icol=@c_firstcol_division
387
- (1..7).each do |i|
388
- mk_entry([row, icol], [row + @c_row_division -1, icol + @c_col_division - 1], " ")
389
- icol=icol + @c_col_division
375
+ # the other columns
376
+ icol=@c_firstcol_division
377
+ (1..7).each do |i|
378
+ mk_entry([row, icol], [row + @c_row_division -1, icol + @c_col_division - 1], " ")
379
+ icol=icol + @c_col_division
380
+ end
381
+ row += @c_row_division
390
382
  end
391
- row += @c_row_division
392
- end
393
383
 
394
- #yield the block
395
- instance_eval(&block)
384
+ #yield the block
385
+ instance_eval(&block)
386
+ end
396
387
  end
397
388
  end
398
389
  end
399
- end
@@ -1,3 +1,3 @@
1
1
  module PrawnCalendar
2
- VERSION = "0.0.1"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "prawn" # "~> 1.0.0.rc2"
21
+ spec.add_dependency "prawn", "~> 1.2.1"
22
22
  spec.add_development_dependency "bundler", "~> 1.3"
23
23
  spec.add_development_dependency "rake"
24
24
  spec.add_development_dependency "rspec"
@@ -17,7 +17,7 @@ endobj
17
17
  >>
18
18
  endobj
19
19
  4 0 obj
20
- << /Length 39762
20
+ << /Length 39763
21
21
  >>
22
22
  stream
23
23
  q
@@ -3220,7 +3220,7 @@ endobj
3220
3220
  >>
3221
3221
  endobj
3222
3222
  8 0 obj
3223
- << /Length 34119
3223
+ << /Length 34120
3224
3224
  >>
3225
3225
  stream
3226
3226
  q
@@ -286,16 +286,16 @@ a {
286
286
  <dl style="margin-left: 0px;">
287
287
  <dt id="example_group_1" class="passed">PrawnCalendar::WeeklyCalendar</dt>
288
288
  <script type="text/javascript">moveProgressBar('25.0');</script>
289
- <dd class="example passed"><span class="passed_spec_name">connects to a pdf document</span><span class='duration'>0.00026s</span></dd>
289
+ <dd class="example passed"><span class="passed_spec_name">connects to a pdf document</span><span class='duration'>0.00038s</span></dd>
290
290
  <script type="text/javascript">moveProgressBar('50.0');</script>
291
- <dd class="example passed"><span class="passed_spec_name">creates a calendar</span><span class='duration'>0.30364s</span></dd>
291
+ <dd class="example passed"><span class="passed_spec_name">creates a calendar</span><span class='duration'>0.39653s</span></dd>
292
292
  <script type="text/javascript">moveProgressBar('75.0');</script>
293
- <dd class="example passed"><span class="passed_spec_name">implicit creates a calendar</span><span class='duration'>0.04820s</span></dd>
293
+ <dd class="example passed"><span class="passed_spec_name">implicit creates a calendar</span><span class='duration'>0.05935s</span></dd>
294
294
  <script type="text/javascript">moveProgressBar('100.0');</script>
295
- <dd class="example passed"><span class="passed_spec_name">explicit creates a calendar</span><span class='duration'>0.06581s</span></dd>
295
+ <dd class="example passed"><span class="passed_spec_name">explicit creates a calendar</span><span class='duration'>0.05927s</span></dd>
296
296
  </dl>
297
297
  </div>
298
- <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>0.41880 seconds</strong>";</script>
298
+ <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>0.51654 seconds</strong>";</script>
299
299
  <script type="text/javascript">document.getElementById('totals').innerHTML = "4 examples, 0 failures";</script>
300
300
  </div>
301
301
  </div>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawn_calendar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-25 00:00:00.000000000 Z
12
+ date: 2014-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: prawn
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 1.2.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 1.2.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: bundler
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -156,7 +156,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
156
156
  version: '0'
157
157
  segments:
158
158
  - 0
159
- hash: -3949576610573311762
159
+ hash: -965068968699314115
160
160
  required_rubygems_version: !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
@@ -165,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  version: '0'
166
166
  segments:
167
167
  - 0
168
- hash: -3949576610573311762
168
+ hash: -965068968699314115
169
169
  requirements: []
170
170
  rubyforge_project:
171
171
  rubygems_version: 1.8.25