caracal 1.1.1 → 1.1.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.
- 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
|