caracal 0.1.8 → 0.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: 6b30278ea80ad76f441a2ea9f6c593882dd949a3
4
- data.tar.gz: ba375c68ca17a0d4a02c1a6bd94014d981c9ad71
3
+ metadata.gz: bb4f8f78bfe33c9d9d5070949adf296c1d6921ed
4
+ data.tar.gz: 2ee67fa3530320cbcd1b0cbff6067838241e7dd7
5
5
  SHA512:
6
- metadata.gz: aeeaa43517f427a98e241a16e630a8a7382679322064dea47a044043960a2ed05cc8ffcc9e1a3a53e9d6d94d9584c719e37ea643866aa9c1de5b4ccfb0a36b2b
7
- data.tar.gz: 36f3e961946d533924e25a0b3f32470762f16e51d33ef3b679c242a55594e1d112e55125dae26ec0bb1e6432832a39eb3c0743873e578a1171c2e6d121320361
6
+ metadata.gz: 35ae59436ca344e6deb31bd9db3086affcfe492929e0783ca828e2a3fd496f77168a2628bb493baca079591a060d292a87eaba07033c5077761bba3c608874a5
7
+ data.tar.gz: 11214dec66d45079254a0a36476d6a2de9f27c7b2ae914069df5c82dbc420bee6e7162a890aab143f87853b5866e045f6a6f84c727d838240833670ad463f9cd
data/.gitignore CHANGED
@@ -21,3 +21,4 @@ tmp
21
21
  *.a
22
22
  mkmf.log
23
23
  gemfiles/*.gemfile.lock
24
+ .DS_Store
data/CHANGELOG.md ADDED
@@ -0,0 +1,17 @@
1
+ #### v0.2.0
2
+
3
+ * Enhancements
4
+ * Implemented true line breaks within paragraphs (@Linuus).
5
+ * Converted paragraph command to accept/allow blank content (@Linuus).
6
+ * Allowed :top and :bottom attributes to be set on default paragraph style (@jpdugan).
7
+
8
+
9
+ * Deprecations
10
+ * Line breaks are no longer allowed at the document level. Use blank paragraphs instead.
11
+
12
+
13
+
14
+ #### v0.1.x
15
+
16
+ * Enhancements
17
+ * Initial commits. (@jpdugan)
data/README.md CHANGED
@@ -22,10 +22,10 @@ Caracal::Document.save 'example.docx' do |docx|
22
22
  # page 1
23
23
  docx.h1 'Page 1 Header'
24
24
  docx.hr
25
- docx.br
25
+ docx.p
26
26
  docx.h2 'Section 1'
27
27
  docx.p 'Lorem ipsum dolor....'
28
- docx.br
28
+ docx.p
29
29
  docx.table @my_data, border_size: 4 do
30
30
  cell_style rows[0], background: 'cccccc', bold: true
31
31
  end
@@ -34,19 +34,19 @@ Caracal::Document.save 'example.docx' do |docx|
34
34
  docx.page
35
35
  docx.h1 'Page 2 Header'
36
36
  docx.hr
37
- docx.br
37
+ docx.p
38
38
  docx.h2 'Section 2'
39
39
  docx.p 'Lorem ipsum dolor....'
40
40
  docx.ul do
41
41
  li 'Item 1'
42
42
  li 'Item 2'
43
43
  end
44
- docx.br
44
+ docx.p
45
45
  docx.img image_url('graph.png'), width: 500, height: 300
46
46
  end
47
47
  ```
48
48
 
49
- **You can! Read on.**
49
+ **You can!** Read on.
50
50
 
51
51
 
52
52
  ## Why is Caracal Needed?
@@ -330,7 +330,8 @@ docx.style do
330
330
  align :left # sets the alignment. accepts :left, :center, :right, and :both.
331
331
  line 360 # sets the line height. units in twips.
332
332
  top 100 # sets the spacing above the paragraph. units in twips.
333
- bottom 0 # sets the spacing below the paragraph. units in twips.end
333
+ bottom 0 # sets the spacing below the paragraph. units in twips.
334
+ end
334
335
  ```
335
336
 
336
337
  Caracal establishes a standard set of default styles for every document. Default styles can be overridden by issuing a `style` command referencing an existing id. Default style ids are:
@@ -348,7 +349,7 @@ Caracal establishes a standard set of default styles for every document. Default
348
349
 
349
350
  ### Paragraphs
350
351
 
351
- Paragrpah text can be added using the `p` method. The method accepts several optional parameters for controlling the style and behavior of the paragrpah.
352
+ Paragraph text can be added using the `p` method. The method accepts several optional parameters for controlling the style and behavior of the paragrpah.
352
353
 
353
354
  In its simple form, a paragraph accepts a text string and formatting options.
354
355
 
@@ -376,6 +377,8 @@ docx.p do
376
377
  link 'link', 'https://www.example.com'
377
378
  text ' to something awesome', color: '555555', size: 32, bold: true, italic: true, underline: true
378
379
  text '.'
380
+ br
381
+ text 'This text follows a line break.'
379
382
  end
380
383
  ```
381
384
 
@@ -431,10 +434,20 @@ end
431
434
 
432
435
  ### Line Breaks
433
436
 
434
- Line breaks can be added via the `br` method. The method accepts no parameters.
437
+ Line breaks can be added via the `br` method inside paragraphs.
438
+
439
+ ```ruby
440
+ docx.p do
441
+ text 'This sentence precedes the line break.'
442
+ br
443
+ text 'This sentence follows the line break.'
444
+ end
445
+ ```
446
+
447
+ Line breaks only work instead paragraph-like commands. If you want to create an empty line between two paragraphs, use an empty paragraph instead.
435
448
 
436
449
  ```ruby
437
- docx.br # adds a blank line using the default paragrpah style.
450
+ docx.p
438
451
  ```
439
452
 
440
453
 
@@ -449,6 +462,8 @@ docx.ol do
449
462
  text 'Second item with a '
450
463
  link 'link', 'http://www.google.com'
451
464
  text '.'
465
+ br
466
+ text 'This sentence follows a line break.'
452
467
  end
453
468
  end
454
469
  ```
@@ -462,6 +477,8 @@ docx.ul do
462
477
  text 'Second item with a '
463
478
  link 'link', 'http://www.google.com'
464
479
  text '.'
480
+ br
481
+ text 'This sentence follows a line break.'
465
482
  end
466
483
  end
467
484
  ```
@@ -588,7 +605,7 @@ c1 = Caracal::Core::Models:TableCellModel.new do
588
605
  end
589
606
 
590
607
  p 'This is a sentence above an image.'
591
- br
608
+ p
592
609
  img image_url('example.png'), width: 200, height: 100
593
610
  end
594
611
  ```
data/lib/caracal.rb CHANGED
@@ -24,9 +24,8 @@ require 'caracal/document'
24
24
  #
25
25
  Caracal::Core::Models::TableCellModel.class_eval do
26
26
  include Caracal::Core::Images
27
- include Caracal::Core::LineBreaks
28
27
  include Caracal::Core::Lists
29
28
  include Caracal::Core::Rules
30
29
  include Caracal::Core::Tables
31
30
  include Caracal::Core::Text
32
- end
31
+ end
@@ -65,6 +65,7 @@ module Caracal
65
65
  else
66
66
  raise Caracal::Errors::InvalidModelError, 'Ordered lists require at least one list item.'
67
67
  end
68
+ model
68
69
  end
69
70
 
70
71
  # .ul
@@ -77,6 +78,7 @@ module Caracal
77
78
  else
78
79
  raise Caracal::Errors::InvalidModelError, 'Unordered lists require at least one list item.'
79
80
  end
81
+ model
80
82
  end
81
83
 
82
84
 
@@ -103,6 +103,7 @@ module Caracal
103
103
  else
104
104
  raise Caracal::Errors::InvalidModelError, 'List item must have at least one run.'
105
105
  end
106
+ model
106
107
  end
107
108
 
108
109
 
@@ -28,10 +28,8 @@ module Caracal
28
28
 
29
29
  # initialization
30
30
  def initialize(options={}, &block)
31
- if content = options.delete(:content)
32
- text content, options.dup
33
- end
34
-
31
+ content = options.delete(:content) { "" }
32
+ text content, options.dup
35
33
  super options, &block
36
34
  end
37
35
 
@@ -104,6 +102,14 @@ module Caracal
104
102
  else
105
103
  raise Caracal::Errors::InvalidModelError, ':link method must receive strings for the display text and the external href.'
106
104
  end
105
+ model
106
+ end
107
+
108
+ # .br
109
+ def br
110
+ model = Caracal::Core::Models::LineBreakModel.new()
111
+ runs << model
112
+ model
107
113
  end
108
114
 
109
115
  # .text
@@ -117,6 +123,7 @@ module Caracal
117
123
  else
118
124
  raise Caracal::Errors::InvalidModelError, ':text method must receive a string for the display text.'
119
125
  end
126
+ model
120
127
  end
121
128
 
122
129
 
@@ -140,4 +147,4 @@ module Caracal
140
147
 
141
148
  end
142
149
  end
143
- end
150
+ end
@@ -1,4 +1,5 @@
1
1
  require 'caracal/core/models/paragraph_model'
2
+ require 'caracal/core/models/line_break_model'
2
3
  require 'caracal/errors'
3
4
 
4
5
 
@@ -71,4 +72,4 @@ module Caracal
71
72
  end
72
73
 
73
74
  end
74
- end
75
+ end
@@ -4,7 +4,6 @@ require 'zip'
4
4
  require 'caracal/core/file_name'
5
5
  require 'caracal/core/fonts'
6
6
  require 'caracal/core/images'
7
- require 'caracal/core/line_breaks'
8
7
  require 'caracal/core/list_styles'
9
8
  require 'caracal/core/lists'
10
9
  require 'caracal/core/page_breaks'
@@ -47,7 +46,6 @@ module Caracal
47
46
  include Caracal::Core::ListStyles
48
47
 
49
48
  include Caracal::Core::Images
50
- include Caracal::Core::LineBreaks
51
49
  include Caracal::Core::Lists
52
50
  include Caracal::Core::PageBreaks
53
51
  include Caracal::Core::Rules
@@ -243,4 +241,4 @@ module Caracal
243
241
  end
244
242
 
245
243
  end
246
- end
244
+ end
@@ -149,13 +149,8 @@ module Caracal
149
149
  end
150
150
 
151
151
  def render_linebreak(xml, model)
152
- xml.send 'w:p', paragraph_options do
153
- xml.send 'w:pPr' do
154
- xml.send 'w:contextualSpacing', { 'w:val' => '0' }
155
- end
156
- xml.send 'w:r', run_options do
157
- xml.send 'w:rtl', { 'w:val' => '0' }
158
- end
152
+ xml.send 'w:r' do
153
+ xml.send 'w:br'
159
154
  end
160
155
  end
161
156
 
@@ -312,10 +307,9 @@ module Caracal
312
307
 
313
308
  # don't know why this is needed, but it prevents a
314
309
  # rendering error.
315
- render_linebreak(xml, Caracal::Core::Models::LineBreakModel.new)
316
- end
317
-
318
-
310
+ render_paragraph(xml, Caracal::Core::Models::ParagraphModel.new)
311
+ end
312
+
319
313
 
320
314
  #============= OPTIONS ===================================
321
315
 
@@ -357,4 +351,4 @@ module Caracal
357
351
 
358
352
  end
359
353
  end
360
- end
354
+ end
@@ -43,7 +43,7 @@ module Caracal
43
43
  xml.send 'w:keepNext', { 'w:val' => '0' }
44
44
  xml.send 'w:keepLines', { 'w:val' => '0' }
45
45
  xml.send 'w:widowControl', { 'w:val' => '1' }
46
- xml.send 'w:spacing', { 'w:lineRule' => 'auto', 'w:line' => s.style_line, 'w:before' => '0', 'w:after' => '0' }
46
+ xml.send 'w:spacing', spacing_options(s, true)
47
47
  xml.send 'w:ind', { 'w:left' => '0', 'w:firstLine' => '0', 'w:right' => '0' }
48
48
  xml.send 'w:jc', { 'w:val' => s.style_align.to_s }
49
49
  end
@@ -69,8 +69,9 @@ module Caracal
69
69
  xml.send 'w:basedOn', { 'w:val' => s.style_base }
70
70
  xml.send 'w:next', { 'w:val' => s.style_next }
71
71
  xml.send 'w:pPr' do
72
- xml.send 'w:keepNext', { 'w:val' => '1' }
73
- xml.send 'w:keepLines', { 'w:val' => '1' }
72
+ xml.send 'w:keepNext', { 'w:val' => '0' }
73
+ xml.send 'w:keepLines', { 'w:val' => '0' }
74
+ xml.send 'w:widowControl', { 'w:val' => '1' }
74
75
  xml.send 'w:spacing', spacing_options(s) unless spacing_options(s).nil?
75
76
  xml.send 'w:contextualSpacing', { 'w:val' => '1' }
76
77
  xml.send 'w:jc', { 'w:val' => s.style_align.to_s } unless s.style_align.nil?
@@ -122,9 +123,9 @@ module Caracal
122
123
  { 'w:cs' => name, 'w:hAnsi' => name, 'w:eastAsia' => name, 'w:ascii' => name }
123
124
  end
124
125
 
125
- def spacing_options(style)
126
- top = style.style_top
127
- bottom = style.style_bottom
126
+ def spacing_options(style, default=false)
127
+ top = (default) ? style.style_top.to_i : style.style_top
128
+ bottom = (default) ? style.style_bottom.to_i : style.style_bottom
128
129
  line = style.style_line
129
130
 
130
131
  options = nil
@@ -1,3 +1,3 @@
1
1
  module Caracal
2
- VERSION = '0.1.8'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -13,6 +13,7 @@ describe Caracal::Core::Models::ParagraphModel do
13
13
  end
14
14
  end
15
15
 
16
+
16
17
  #-------------------------------------------------------------
17
18
  # Configuration
18
19
  #-------------------------------------------------------------
@@ -29,9 +30,9 @@ describe Caracal::Core::Models::ParagraphModel do
29
30
  it { expect(subject.paragraph_italic).to eq false }
30
31
  it { expect(subject.paragraph_underline).to eq true }
31
32
  end
32
-
33
+
33
34
  end
34
-
35
+
35
36
 
36
37
  #-------------------------------------------------------------
37
38
  # Public Methods
@@ -110,6 +111,15 @@ describe Caracal::Core::Models::ParagraphModel do
110
111
 
111
112
  it { expect(subject.runs.size).to eq length + 1 }
112
113
  end
114
+
115
+ # .br
116
+ describe '.br' do
117
+ let!(:length) { subject.runs.length }
118
+
119
+ before { subject.br }
120
+
121
+ it { expect(subject.runs.size).to eq length + 1 }
122
+ end
113
123
 
114
124
  # .text
115
125
  describe '.text' do
@@ -159,4 +169,4 @@ describe Caracal::Core::Models::ParagraphModel do
159
169
 
160
170
  end
161
171
 
162
- end
172
+ end
@@ -101,14 +101,14 @@ describe Caracal::Core::Models::TableCellModel do
101
101
 
102
102
  describe 'content functions' do
103
103
 
104
- # .br
105
- describe '.br' do
104
+ # .p
105
+ describe '.p' do
106
106
  let!(:size) { subject.contents.size }
107
107
 
108
- before { subject.br }
108
+ before { subject.p }
109
109
 
110
110
  it { expect(subject.contents.size).to eq size + 1 }
111
- it { expect(subject.contents.last).to be_a(Caracal::Core::Models::LineBreakModel) }
111
+ it { expect(subject.contents.last).to be_a(Caracal::Core::Models::ParagraphModel) }
112
112
  end
113
113
 
114
114
  # .img
@@ -218,4 +218,4 @@ describe Caracal::Core::Models::TableCellModel do
218
218
 
219
219
  end
220
220
 
221
- end
221
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caracal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trade Infomatics
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-16 00:00:00.000000000 Z
12
+ date: 2014-10-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -105,6 +105,7 @@ extra_rdoc_files: []
105
105
  files:
106
106
  - ".gitignore"
107
107
  - ".travis.yml"
108
+ - CHANGELOG.md
108
109
  - Gemfile
109
110
  - LICENSE.txt
110
111
  - README.md
@@ -114,7 +115,6 @@ files:
114
115
  - lib/caracal/core/file_name.rb
115
116
  - lib/caracal/core/fonts.rb
116
117
  - lib/caracal/core/images.rb
117
- - lib/caracal/core/line_breaks.rb
118
118
  - lib/caracal/core/list_styles.rb
119
119
  - lib/caracal/core/lists.rb
120
120
  - lib/caracal/core/models/base_model.rb
@@ -165,7 +165,6 @@ files:
165
165
  - spec/lib/caracal/core/file_name_spec.rb
166
166
  - spec/lib/caracal/core/fonts_spec.rb
167
167
  - spec/lib/caracal/core/images_spec.rb
168
- - spec/lib/caracal/core/line_breaks_spec.rb
169
168
  - spec/lib/caracal/core/list_styles_spec.rb
170
169
  - spec/lib/caracal/core/lists_spec.rb
171
170
  - spec/lib/caracal/core/models/base_model_spec.rb
@@ -226,7 +225,6 @@ test_files:
226
225
  - spec/lib/caracal/core/file_name_spec.rb
227
226
  - spec/lib/caracal/core/fonts_spec.rb
228
227
  - spec/lib/caracal/core/images_spec.rb
229
- - spec/lib/caracal/core/line_breaks_spec.rb
230
228
  - spec/lib/caracal/core/list_styles_spec.rb
231
229
  - spec/lib/caracal/core/lists_spec.rb
232
230
  - spec/lib/caracal/core/models/base_model_spec.rb
@@ -1,29 +0,0 @@
1
- require 'caracal/core/models/line_break_model'
2
-
3
-
4
- module Caracal
5
- module Core
6
-
7
- # This module encapsulates all the functionality related to adding line
8
- # breaks to the document.
9
- #
10
- module LineBreaks
11
- def self.included(base)
12
- base.class_eval do
13
-
14
- #-------------------------------------------------------------
15
- # Public Methods
16
- #-------------------------------------------------------------
17
-
18
- def br
19
- model = Caracal::Core::Models::LineBreakModel.new()
20
- contents << model
21
- model
22
- end
23
-
24
- end
25
- end
26
- end
27
-
28
- end
29
- end
@@ -1,25 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Caracal::Core::LineBreaks do
4
- subject { Caracal::Document.new }
5
-
6
-
7
- #-------------------------------------------------------------
8
- # Public Methods
9
- #-------------------------------------------------------------
10
-
11
- describe 'public method tests' do
12
-
13
- # .br
14
- describe '.br' do
15
- let!(:size) { subject.contents.size }
16
-
17
- before { subject.br }
18
-
19
- it { expect(subject.contents.size).to eq size + 1 }
20
- it { expect(subject.contents.last).to be_a(Caracal::Core::Models::LineBreakModel) }
21
- end
22
-
23
- end
24
-
25
- end