polytexnic 1.5.1 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6095a0ec5936b87a0a296c91bc61b772197013bade5d9a28f7045f78f3221583
4
- data.tar.gz: 4e4af1905ea37ff5d8a124a209d6c6c49faa672433156b91590cf712324012db
3
+ metadata.gz: 6c446b2fb998709a77a87e98ba9af120969006b56484734a32293cbaca231033
4
+ data.tar.gz: 3f47c7501336770234680a56af3b4115aeb3c831b04410256a0f6d52d602a407
5
5
  SHA512:
6
- metadata.gz: 3320219ee29e5e0bb74fdc702aa80ad51554ed7ef810833c657f805128a0db01f22940c04a9668e7e54a2cbd0ecbb8eb3dd697da3ac7af2a16c81f7d7d7866cc
7
- data.tar.gz: b804d40cf685c3db85f0327fb4a22aab99dca3875755dab4052db4679cdf3131ded4e1dac3ea4883b9811beb1361a5a76101d9732da6f441ad822f1c0673794e
6
+ metadata.gz: 70d14a3eceafb2fb6bf73bf6f8bebff97467942ac3cf1097bf92c4958667d4a163162766383ec9c3e03f9d637ec555ff801fd547d0536e656aa4ffe958d44fdf
7
+ data.tar.gz: 390ea1b062ad18eec86bca19632cf66c8f1832a6d7e9d417441e90e653ee38decfbf0759732e494f655eb41b96d1137e302aa15a61b16fec95cb442d1728ad52
@@ -68,23 +68,29 @@ module Polytexnic
68
68
  end
69
69
  not_a_capital = '[^A-Z]'
70
70
  # Case of "foo. A"
71
- doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})[ ]+([^\s])/) do
71
+ doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})[ \t]+([^\s])/) do
72
72
  $1 + $2 + xmlelement('intersentencespace') + ' ' + $3
73
73
  end
74
- # Case of "foo.\n A"
75
- doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})\n[ ]+([^\s])/) do
76
- $1 + $2 + xmlelement('intersentencespace') + ' ' + $3
77
- end
78
- # Case of "foo.\nA"
79
- doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})\n([^\n])/) do
74
+ # Case of "foo.\nA" or "foo.\n A"
75
+ doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})[ \t]*\n[ \t]*([^\s])/) do
80
76
  $1 + $2 + xmlelement('intersentencespace') + ' ' + $3
81
77
  end
82
78
  # Case of "foo.} A" or "foo.}} A"
83
- doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})(\}+)[ ]+([^\s])/) do
79
+ doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})(\}+)[ \t]+([^\s])/) do
84
80
  $1 + $2 + $3 + xmlelement('intersentencespace') + ' ' + $4
85
81
  end
86
82
  # Case of "foo.'') A"
87
- doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})('+)(\))[ ]+([^\s])/) do
83
+ doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})('+)(\))[ \t]+([^\s])/) do
84
+ $1 + $2 + $3 + $4 + xmlelement('intersentencespace') + ' ' + $5
85
+ end
86
+ # Case of "foo.}\nA" or "foo.}}\nA"
87
+ # Matching '.}\n\label' messes up aside boxes, so as a compromise
88
+ # we detect '.}\n\w', which matches virtually all use cases.
89
+ doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})(\}+)\n[ \t]*(\w+)/) do
90
+ $1 + $2 + $3 + xmlelement('intersentencespace') + ' ' + $4
91
+ end
92
+ # Case of "foo.')\nA" or "foo.'')\nA"
93
+ doc.gsub!(/(#{not_a_capital})(#{end_of_sentence})('+)(\))\n([^\s])/) do
88
94
  $1 + $2 + $3 + $4 + xmlelement('intersentencespace') + ' ' + $5
89
95
  end
90
96
  # Handle the manual override to force an intersentence space, '\@',
@@ -1,3 +1,3 @@
1
1
  module Polytexnic
2
- VERSION = "1.5.1"
2
+ VERSION = "1.5.2"
3
3
  end
@@ -93,7 +93,12 @@ describe 'Polytexnic::Pipeline#to_html' do
93
93
  it { should resemble "#{intsp} Bar" }
94
94
  end
95
95
 
96
- context "with a sentence ending with single quote and a paren" do
96
+ context "with a sentence ending with curly braces and a newline" do
97
+ let(:polytex) { "\\emph{\\textbf{Foo.}}\nBar." }
98
+ it { should resemble "#{intsp} Bar" }
99
+ end
100
+
101
+ context "with a sentence ending with a single quote and a paren" do
97
102
  let(:polytex) { "(It 'isn't.') Is it?"}
98
103
  it { should resemble "(It ’isn’t.’)#{intsp} Is it?" }
99
104
  end
@@ -103,12 +108,37 @@ describe 'Polytexnic::Pipeline#to_html' do
103
108
  it { should resemble "(It ”isn’t.”)#{intsp} Is it?" }
104
109
  end
105
110
 
111
+ context "with a sentence ending with a single quote, paren, newline" do
112
+ let(:polytex) { "(It 'isn't.')\nIs it?"}
113
+ it { should resemble "(It ’isn’t.’)#{intsp} Is it?" }
114
+ end
115
+
116
+ context "with a sentence ending with double quotes, paren, newline" do
117
+ let(:polytex) { "(It ''isn't.'')\nIs it?"}
118
+ it { should resemble "(It ”isn’t.”)#{intsp} Is it?" }
119
+ end
120
+
106
121
  context "with a mid-sentence footnote ending with a period" do
107
122
  let(:polytex) { 'Lorem\footnote{From \emph{Cicero}.} ipsum.' }
108
123
  it { should include 'ipsum' }
109
124
  it { should_not include 'intersentencespace' }
110
125
  end
111
126
 
127
+ context "with only a newline" do
128
+ let(:polytex) { "Lorem ipsum.\nDolor sit amet." }
129
+ it { should resemble "Lorem ipsum.#{intsp} Dolor sit amet." }
130
+ end
131
+
132
+ context "with a newline and space" do
133
+ let(:polytex) { "Lorem ipsum. \n Dolor sit amet." }
134
+ it { should resemble "Lorem ipsum.#{intsp} Dolor sit amet." }
135
+ end
136
+
137
+ context "with two newlines" do
138
+ let(:polytex) { "Lorem ipsum.\n\nDolor sit amet." }
139
+ it { should_not resemble "Lorem ipsum.#{intsp} Dolor sit amet." }
140
+ end
141
+
112
142
  context "forced inter-sentence override" do
113
143
  let(:polytex) { 'Superman II\@. Lorem ipsum.' }
114
144
  it { should resemble "Superman II.#{intsp} Lorem ipsum." }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polytexnic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Hartl