elegant 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71086f754d84de1cefce3f26f368ee7b35dca6ed
4
- data.tar.gz: b0b2a2efd39a1a684fb4d0410b0a95fab6185354
3
+ metadata.gz: f2e7cd7cced97c061f7a69326ed86bc86be3f443
4
+ data.tar.gz: d4f2e63d066cc775673f4959a0d909d9a2cd18e0
5
5
  SHA512:
6
- metadata.gz: d464e48963c95b78a4511da7c85b7730d7eaedd834a4e18126413066d13ab2e1ed01712543180cf1ccbcaedf790d8c2ff84dde7554b49b9d403aec79c32b2555
7
- data.tar.gz: 43e91120f1a7ef0bec95ecab3e2d7e48008e5f658c4d8df14b137e62ef158c5e7a8a9caa40ceb3afc65567303833835d8dfee2d87e0a0691f7226cf3567cbf08
6
+ metadata.gz: a0aed6189b36da2bd4b9add5999f11f757f4eae33abe67fe543b1534fffea0f9e32fd325357dcd9286afb24842f7c21c0c264fcdc70c7fa99befb73605ac2c46
7
+ data.tar.gz: 1160b31beb3d9d7feac865ab4af73e34a197a7d106e05a3a6346a91e957bf9689e00bf525eabdea3ffdf63dd2fe12530fa22b30490ce8ac66180f1a32add3233
data/.travis.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
- - 2.1.0
4
+ - 2.3.0
data/CHANGELOG.md CHANGED
@@ -6,6 +6,11 @@ For more information about changelogs, check
6
6
  [Keep a Changelog](http://keepachangelog.com) and
7
7
  [Vandamme](http://tech-angels.github.io/vandamme).
8
8
 
9
+ ## 1.2.0 - 2016.01.21
10
+
11
+ * [ENHANCEMENT] White background below the logo
12
+ * [ENHANCEMENT] Add inline-format to footer text (allows for links)
13
+
9
14
  ## 1.1.0 - 2015.11.12
10
15
 
11
16
  * [ENHANCEMENT] Taller title (now has room for two lines)
data/bin/elegant CHANGED
@@ -7,13 +7,41 @@ rescue LoadError
7
7
  require 'elegant'
8
8
  end
9
9
 
10
+
11
+ #####################
12
+
13
+ def asset(path)
14
+ File.expand_path "../../tmp/#{path}", __FILE__
15
+ end
16
+
17
+ def ttf(family)
18
+ {normal: asset("#{family}-Regular.ttf"), bold: asset("#{family}-Bold.ttf")}
19
+ end
20
+
21
+ Elegant.configure do |config|
22
+ config.author = 'Fullscreen'
23
+ config.creator = 'Channel+'
24
+ config.producer = 'Channel+ by Fullscreen'
25
+ config.watermark = asset 'images/logo.png'
26
+ config.fonts = {
27
+ 'Helvetica' => ttf('fonts/HelveticaWorld'),
28
+ 'Sans Serif' => ttf('fonts/ProximaNova'),
29
+ 'Fallback' => ttf('fonts/ArialUnicode'),
30
+ }
31
+ end
32
+
33
+ #####################
34
+
35
+ def icon_for(name)
36
+ asset "images/icons/#{name}.png"
37
+ end
38
+
10
39
  class Section
11
40
  attr_accessor :title, :page, :alignment
12
41
  def initialize(title:, page:, alignment:)
13
42
  @title, @page, @alignment = title, page, alignment
14
43
  end
15
44
 
16
- attr_accessor :document
17
45
  include Prawn::View
18
46
  def render_to(pdf)
19
47
  @document = pdf
@@ -22,11 +50,7 @@ class Section
22
50
 
23
51
  def render
24
52
  header
25
-
26
- bounding_box [0, cursor], width: bounds.width, height: 170 do
27
- stroke_bounds
28
- end
29
-
53
+ body
30
54
  footer
31
55
  end
32
56
 
@@ -38,10 +62,16 @@ private
38
62
  end
39
63
 
40
64
  move_down 10
41
- formatted_text_box [{text: title.upcase, font: sans_serif, styles: [:bold], valign: :center, color: '556270', size: 14}], height: 15, at: [0, cursor]
65
+ formatted_text_box [header_text_box], height: 15, at: [0, cursor]
42
66
  move_down 30 # 15 of the float box, and 15 real
43
67
  end
44
68
 
69
+ def body
70
+ bounding_box [0, cursor], width: bounds.width, height: 170 do
71
+ stroke_bounds
72
+ end
73
+ end
74
+
45
75
  def footer
46
76
  unless alignment == :bottom
47
77
  document.move_down 25
@@ -52,6 +82,17 @@ private
52
82
  def sans_serif
53
83
  'Sans Serif' if document.font_families['Sans Serif']
54
84
  end
85
+
86
+ def header_text_box
87
+ {
88
+ text: title.upcase,
89
+ font: sans_serif,
90
+ styles: [:bold],
91
+ valign: :center,
92
+ color: '556270',
93
+ size: 14
94
+ }
95
+ end
55
96
  end
56
97
 
57
98
  sections = [
@@ -62,38 +103,20 @@ sections = [
62
103
  Section.new(title: 'Month over month view tracking', page: 2, alignment: :middle),
63
104
  ]
64
105
 
65
- def font_files_for(family)
66
- {normal: ttf("#{family}-Regular"), bold: ttf("#{family}-Bold")}
67
- end
106
+ #####################
68
107
 
69
- def ttf(basename)
70
- asset "fonts/#{basename}.ttf"
71
- end
72
-
73
- def png(basename)
74
- asset "images/#{basename}.png"
75
- end
76
-
77
- def asset(path)
78
- File.expand_path "../../tmp/#{path}", __FILE__
79
- end
80
-
81
- fonts = {}.tap do |families|
82
- families['Helvetica'] = font_files_for 'HelveticaWorld'
83
- families['Fallback'] = font_files_for 'ArialUnicode'
84
- families['Sans Serif'] = font_files_for 'ProximaNova'
85
- end
86
-
87
- company_logo = png('logo')
88
- company_name = 'Fullscreen'
89
- title = 'March 2015'
90
- thumbnail = png('thumbnail')
91
- footer = "Report for channelpl.us (2015/02/12 – 2015/10/12)"
108
+ header = {text: 'March 2015', logo: {url: asset('images/thumbnail.png')}}
109
+ footer = {text: "Report for <link href='https://www.channelpl.us'>Channel+</link> (2015/02/12 – 2015/10/12)"}
92
110
 
93
111
  filename = 'elegant.pdf'
94
112
 
95
- Elegant::Document.new(fonts: fonts, title: title, company_logo: company_logo, thumbnail: thumbnail, footer: footer, company_name: company_name) do |pdf|
96
- sections.each{|section| section.render_to pdf}
113
+ Elegant::Document.new(header: header, footer: footer) do |pdf|
114
+ sections.each do |section|
115
+ section.render_to pdf
116
+ if pdf.cursor != 15.0 && section.alignment == :bottom
117
+ p "CURSOR #{pdf.cursor}"
118
+ end
119
+ end
97
120
  end.render_file filename
98
121
 
99
- `open #{filename}`
122
+ `open #{filename}`
data/elegant.gemspec CHANGED
@@ -26,6 +26,6 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'prawn-manual_builder', '~> 0.2.0'
27
27
  spec.add_development_dependency 'rake', '~> 10.0'
28
28
  spec.add_development_dependency 'rspec', '~> 3.3'
29
- spec.add_development_dependency 'coveralls', '~> 0.8.2'
29
+ spec.add_development_dependency 'coveralls', '~> 0.8.10'
30
30
  spec.add_development_dependency 'pry-nav', '~> 0.2.4'
31
31
  end
@@ -16,8 +16,8 @@ module Elegant
16
16
  # (a Hash with a :url key with the location of the logo image and
17
17
  # optional :width and :height, which default to 50x50).
18
18
  # @option options [Hash] :footer ({}) The options for the footer. Accepted
19
- # values are :text (the text in the bottom-center of the page) and :url
20
- # (to make that text a link to a URL).
19
+ # values are :text (the text in the bottom-center of the page which may
20
+ # include a link which will be formatted inline).
21
21
  # @see http://www.rubydoc.info/gems/prawn/Prawn/Document
22
22
  def initialize(options = {}, &block)
23
23
  options = options.dup
@@ -5,7 +5,7 @@ module Elegant
5
5
 
6
6
  def initialize(document, options = {})
7
7
  @document = document
8
- @text, @url = options.values_at :text, :url
8
+ @text = options[:text]
9
9
  end
10
10
 
11
11
  # Draws in the header of each page a horizontal line, the name of the
@@ -28,13 +28,12 @@ module Elegant
28
28
  end
29
29
 
30
30
  def render_text
31
- text = @url ? "<link href='#{@url}'>#{@text}</link>" : @text
32
31
  left = 50
33
32
  options = {size: 7, align: :center, valign: :top, inline_format: true}
34
33
  options[:at] = [left, -6]
35
34
  options[:width] = bounds.width - 2 * left
36
35
  options[:height] = 10
37
- text_box text, options
36
+ text_box @text, options
38
37
  end
39
38
 
40
39
  def render_page_number
@@ -16,7 +16,7 @@ module Elegant
16
16
  repeat(:all) do
17
17
  render_watermark
18
18
  stroke_horizontal_rule
19
- render_logo if @logo
19
+ render_logo
20
20
  render_heading
21
21
  end
22
22
  end
@@ -44,7 +44,7 @@ module Elegant
44
44
  def render_logo
45
45
  float do
46
46
  render_logo_frame
47
- render_logo_image
47
+ render_logo_image if @logo[:url]
48
48
  end if @logo
49
49
  end
50
50
 
@@ -54,7 +54,13 @@ module Elegant
54
54
  height = @logo_height + line_width
55
55
  left = bounds.right - width - 0.5 * line_width
56
56
  top = bounds.top + 0.5 * height
57
- bounding_box([left, top], width: width, height: height) {stroke_bounds}
57
+ bounding_box([left, top], width: width, height: height) do
58
+ old_color = self.fill_color
59
+ fill_color 'FFFFFF'
60
+ fill_rectangle [0, height], width, height
61
+ fill_color old_color
62
+ stroke_bounds
63
+ end
58
64
  end
59
65
 
60
66
  # Renders the actual image as the logo in the top-right corner.
@@ -1,3 +1,3 @@
1
1
  module Elegant
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elegant
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - claudiob
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-12 00:00:00.000000000 Z
11
+ date: 2016-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: prawn
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.8.2
89
+ version: 0.8.10
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.8.2
96
+ version: 0.8.10
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: pry-nav
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -159,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  version: '0'
160
160
  requirements: []
161
161
  rubyforge_project:
162
- rubygems_version: 2.4.5.1
162
+ rubygems_version: 2.5.1
163
163
  signing_key:
164
164
  specification_version: 4
165
165
  summary: An elegant layout for PDF reports generated in Ruby.