caracal 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +8 -3
- data/lib/caracal/core/models/page_number_model.rb +24 -4
- data/lib/caracal/core/page_numbers.rb +8 -4
- data/lib/caracal/renderers/footer_renderer.rb +14 -3
- data/lib/caracal/version.rb +1 -1
- data/spec/lib/caracal/core/models/page_number_model_spec.rb +30 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f3944130ad07554a021682f7365b9b6db126c8d
|
4
|
+
data.tar.gz: 358849a03c5e6806f77590a4eb3ce86de6c6a68e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c84b97f6fbbf1038db085d86205e2f50f74eb4c09f3aff1391ed65b8c111c1def9f05fba78027a36a7a626a6ecc2b95543e9737949d3190bd6cfdc1e7940f9d1
|
7
|
+
data.tar.gz: 2643cfcd452911dce56bb8cf96884021cd0d11ea4e041e35cc1af8a5ba45147b444237413d69c501d2d8e1acf8d23e06a579a69806e93eb4a3e24b4b052c3e60
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -300,17 +300,22 @@ docx.page # starts a new page.
|
|
300
300
|
|
301
301
|
### Page Numbers
|
302
302
|
|
303
|
-
Page numbers can be added to the footer via the `page_numbers` method. The method accepts optional parameters for controlling the label and
|
303
|
+
Page numbers can be added to the footer via the `page_numbers` method. The method accepts optional parameters for controlling the alignment, label and size of the text.
|
304
304
|
|
305
305
|
*Page numbers are turned off by default.*
|
306
306
|
|
307
307
|
```ruby
|
308
308
|
docx.page_numbers true do
|
309
|
-
|
310
|
-
|
309
|
+
align :right # sets the alignment. accepts :left, :center, and :right.
|
310
|
+
label 'Page' # sets the text that will go to the left of the page number. Defaults to nil.
|
311
|
+
size: 24 # sets the label and number size simultaneously. units in half points.
|
312
|
+
label_size: 24 # sets the label size only. units in half points.
|
313
|
+
number_size: 20 # sets the number size only. units in half points.
|
311
314
|
end
|
312
315
|
```
|
313
316
|
|
317
|
+
The `size` option and the `label_size` and `number_size` options are mutually exclusive.
|
318
|
+
|
314
319
|
|
315
320
|
### Fonts
|
316
321
|
|
@@ -21,13 +21,17 @@ module Caracal
|
|
21
21
|
# accessors
|
22
22
|
attr_reader :page_number_align
|
23
23
|
attr_reader :page_number_label
|
24
|
+
attr_reader :page_number_label_size
|
25
|
+
attr_reader :page_number_number_size
|
24
26
|
attr_reader :page_number_show
|
25
27
|
|
26
28
|
# initialization
|
27
29
|
def initialize(options={}, &block)
|
28
|
-
@page_number_align
|
29
|
-
@page_number_label
|
30
|
-
@
|
30
|
+
@page_number_align = DEFAULT_PAGE_NUMBER_ALIGN
|
31
|
+
@page_number_label = nil
|
32
|
+
@page_number_label_size = nil
|
33
|
+
@page_number_number_size = nil
|
34
|
+
@page_number_show = DEFAULT_PAGE_NUMBER_SHOW
|
31
35
|
|
32
36
|
super options, &block
|
33
37
|
end
|
@@ -47,10 +51,26 @@ module Caracal
|
|
47
51
|
@page_number_label = value.to_s.strip # renderer will enforce trailing space
|
48
52
|
end
|
49
53
|
|
54
|
+
def label_size(value)
|
55
|
+
v = value.to_i
|
56
|
+
@page_number_label_size = (v == 0) ? nil : v
|
57
|
+
end
|
58
|
+
|
59
|
+
def number_size(value)
|
60
|
+
v = value.to_i
|
61
|
+
@page_number_number_size = (v == 0) ? nil : v
|
62
|
+
end
|
63
|
+
|
50
64
|
def show(value)
|
51
65
|
@page_number_show = !!value
|
52
66
|
end
|
53
67
|
|
68
|
+
def size(value)
|
69
|
+
v = value.to_i
|
70
|
+
@page_number_label_size = (v == 0) ? nil : v
|
71
|
+
@page_number_number_size = (v == 0) ? nil : v
|
72
|
+
end
|
73
|
+
|
54
74
|
|
55
75
|
#=============== VALIDATION ===========================
|
56
76
|
|
@@ -65,7 +85,7 @@ module Caracal
|
|
65
85
|
private
|
66
86
|
|
67
87
|
def option_keys
|
68
|
-
[:align, :label, :show]
|
88
|
+
[:align, :label, :label_size, :number_size, :show]
|
69
89
|
end
|
70
90
|
|
71
91
|
end
|
@@ -22,6 +22,8 @@ module Caracal
|
|
22
22
|
# accessors
|
23
23
|
attr_reader :page_number_align
|
24
24
|
attr_reader :page_number_label
|
25
|
+
attr_reader :page_number_label_size
|
26
|
+
attr_reader :page_number_number_size
|
25
27
|
attr_reader :page_number_show
|
26
28
|
|
27
29
|
|
@@ -34,13 +36,15 @@ module Caracal
|
|
34
36
|
#
|
35
37
|
def page_numbers(*args, &block)
|
36
38
|
options = Caracal::Utilities.extract_options!(args)
|
37
|
-
options.merge!({ show: !!args.first }) unless args.first.nil? # careful: falsey
|
39
|
+
options.merge!({ show: !!args.first }) unless args.first.nil? # careful: just `args.first` is falsey
|
38
40
|
|
39
41
|
model = Caracal::Core::Models::PageNumberModel.new(options, &block)
|
40
42
|
if model.valid?
|
41
|
-
@page_number_align
|
42
|
-
@page_number_label
|
43
|
-
@
|
43
|
+
@page_number_align = model.page_number_align
|
44
|
+
@page_number_label = model.page_number_label
|
45
|
+
@page_number_label_size = model.page_number_label_size
|
46
|
+
@page_number_number_size = model.page_number_number_size
|
47
|
+
@page_number_show = model.page_number_show
|
44
48
|
else
|
45
49
|
raise Caracal::Errors::InvalidModelError, 'page_numbers :align parameter must be :left, :center, or :right'
|
46
50
|
end
|
@@ -26,16 +26,27 @@ module Caracal
|
|
26
26
|
xml['w'].r run_options do
|
27
27
|
xml['w'].rPr do
|
28
28
|
xml['w'].rStyle({ 'w:val' => 'PageNumber' })
|
29
|
+
unless document.page_number_label_size.nil?
|
30
|
+
xml['w'].sz({ 'w:val' => document.page_number_label_size })
|
31
|
+
end
|
29
32
|
end
|
30
33
|
xml['w'].t({ 'xml:space' => 'preserve' }) do
|
31
34
|
xml.text "#{ document.page_number_label } "
|
32
35
|
end
|
33
36
|
end
|
34
37
|
end
|
35
|
-
xml['w'].
|
36
|
-
xml['w'].
|
37
|
-
|
38
|
+
xml['w'].r run_options do
|
39
|
+
xml['w'].rPr do
|
40
|
+
unless document.page_number_number_size.nil?
|
41
|
+
xml['w'].sz({ 'w:val' => document.page_number_number_size })
|
42
|
+
xml['w'].szCs({ 'w:val' => document.page_number_number_size })
|
43
|
+
end
|
44
|
+
end
|
45
|
+
xml['w'].fldChar({ 'w:fldCharType' => 'begin' })
|
46
|
+
xml['w'].instrText({ 'xml:space' => 'preserve' }) do
|
47
|
+
xml.text 'PAGE'
|
38
48
|
end
|
49
|
+
xml['w'].fldChar({ 'w:fldCharType' => 'end' })
|
39
50
|
end
|
40
51
|
xml['w'].r run_options do
|
41
52
|
xml['w'].rPr do
|
data/lib/caracal/version.rb
CHANGED
@@ -3,9 +3,11 @@ require 'spec_helper'
|
|
3
3
|
describe Caracal::Core::Models::PageNumberModel do
|
4
4
|
subject do
|
5
5
|
described_class.new do
|
6
|
-
show
|
7
|
-
align
|
8
|
-
label
|
6
|
+
show true
|
7
|
+
align :right
|
8
|
+
label 'Page'
|
9
|
+
label_size 24
|
10
|
+
number_size 20
|
9
11
|
end
|
10
12
|
end
|
11
13
|
|
@@ -24,6 +26,8 @@ describe Caracal::Core::Models::PageNumberModel do
|
|
24
26
|
describe 'accessors' do
|
25
27
|
it { expect(subject.page_number_align).to eq :right }
|
26
28
|
it { expect(subject.page_number_label).to eq 'Page' }
|
29
|
+
it { expect(subject.page_number_label_size).to eq 24 }
|
30
|
+
it { expect(subject.page_number_number_size).to eq 20 }
|
27
31
|
it { expect(subject.page_number_show).to eq true }
|
28
32
|
end
|
29
33
|
|
@@ -52,6 +56,20 @@ describe Caracal::Core::Models::PageNumberModel do
|
|
52
56
|
it { expect(subject.page_number_label).to eq 'Page' }
|
53
57
|
end
|
54
58
|
|
59
|
+
# .label_size
|
60
|
+
describe '.label_size' do
|
61
|
+
before { subject.label_size(28) }
|
62
|
+
|
63
|
+
it { expect(subject.page_number_label_size).to eq 28 }
|
64
|
+
end
|
65
|
+
|
66
|
+
# .number_size
|
67
|
+
describe '.number_size' do
|
68
|
+
before { subject.number_size(28) }
|
69
|
+
|
70
|
+
it { expect(subject.page_number_number_size).to eq 28 }
|
71
|
+
end
|
72
|
+
|
55
73
|
# .show
|
56
74
|
describe '.show' do
|
57
75
|
before { subject.show(true) }
|
@@ -59,6 +77,14 @@ describe Caracal::Core::Models::PageNumberModel do
|
|
59
77
|
it { expect(subject.page_number_show).to eq true }
|
60
78
|
end
|
61
79
|
|
80
|
+
# .size
|
81
|
+
describe '.size' do
|
82
|
+
before { subject.size(32) }
|
83
|
+
|
84
|
+
it { expect(subject.page_number_label_size).to eq 32 }
|
85
|
+
it { expect(subject.page_number_number_size).to eq 32 }
|
86
|
+
end
|
87
|
+
|
62
88
|
|
63
89
|
#=============== VALIDATIONS ==========================
|
64
90
|
|
@@ -100,7 +126,7 @@ describe Caracal::Core::Models::PageNumberModel do
|
|
100
126
|
# .option_keys
|
101
127
|
describe '.option_keys' do
|
102
128
|
let(:actual) { subject.send(:option_keys).sort }
|
103
|
-
let(:expected) { [:align, :label, :show].sort }
|
129
|
+
let(:expected) { [:align, :label, :label_size, :number_size, :show].sort }
|
104
130
|
|
105
131
|
it { expect(actual).to eq expected }
|
106
132
|
end
|