polytexnic 1.0.4 → 1.1.beta1

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: e812469333e68109d96244adf80a48a7d4cc8781
4
- data.tar.gz: e1ceeb948af7c61c87b82426e5d4d06bd302f81f
3
+ metadata.gz: de97a8848a323aaaa3558b8cac21a2273404b1f8
4
+ data.tar.gz: 3064c4792f08d5812d9ad45e699861e03377994e
5
5
  SHA512:
6
- metadata.gz: c6361e2a8fa0a28b3ff4c3dcd1fdf8923c3c656fe46d1ab2efc20fe8043a83274f5375ad6bef87da5ead99ce9cf91cbec5c002f60951b024beaa8c830c4cd40b
7
- data.tar.gz: 20e0983f8e029ce8d313913a72da0cda32bcffdd51cf5b420dcd7e55cdcf4d6aa61ec94c5a151b1d4b220cd6c03adcf3953d39cb860f09abc5ad18ccc13dc74e
6
+ metadata.gz: 4b617bb00aef112924e92c74e297d11a2375472b95b676f59792da1f973c1707ec2d6613872972e8f6353b2db0d2bbd2e9fc139bde84040c5dfdbdb2dcb1638d
7
+ data.tar.gz: c92ea88a740e56f74300246670e37777220a0e7e797ad84b0a98aa6832537b3ed06ef0388019bc8c845db7b4615ff33dceb03b1634f2a5bc62e8dc7e587f139b
@@ -390,6 +390,7 @@ module Polytexnic
390
390
  # so recursively search the parents to find it.
391
391
  # Then return the first number in the value, e.g., "1" in "1.2".
392
392
  def chapter_number(node)
393
+ return 0 if article?
393
394
  number = node['data-number']
394
395
  if number && !number.empty?
395
396
  number.split('.').first.to_i
@@ -410,12 +411,12 @@ module Polytexnic
410
411
 
411
412
  # Returns HTML for a nicely styled TeX logo.
412
413
  def tex
413
- %(<span class="texhtml">T<span class="texhtmlE">E</span>X</span>)
414
+ %(<span class="texhtml" style="font-family: 'CMU Serif', cmr10, LMRoman10-Regular, 'Times New Roman', 'Nimbus Roman No9 L', Times, serif;">T<span style="text-transform: uppercase; vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em;">E</span>X</span>)
414
415
  end
415
416
 
416
417
  # Returns HTML for a nicely styled LaTeX logo.
417
418
  def latex
418
- %(<span class="texhtml">L<span class="texhtmlA">A</span>T<span class="texhtmlE">E</span>X</span>)
419
+ %(<span class="texhtml" style="font-family: 'CMU Serif', cmr10, LMRoman10-Regular, 'Times New Roman', 'Nimbus Roman No9 L', Times, serif;">L<span style="text-transform: uppercase; font-size: 70%; margin-left: -0.36em; vertical-align: 0.3em; line-height: 0; margin-right: -0.15em;">A</span>T<span style="text-transform: uppercase; margin-left: -0.1667em; vertical-align: -0.5ex; line-height: 0; margin-right: -0.125em;">E</span>X</span>)
419
420
  end
420
421
 
421
422
  # Handles \begin{quote} ... \end{quote}.
@@ -494,11 +495,12 @@ module Polytexnic
494
495
  label = node.at_css('data-label')
495
496
  node['id'] = pipeline_label(label)
496
497
  unexpected.remove
498
+ clean_node node, %w{data-label}
497
499
  elsif label = node.at_css('data-label')
498
500
  node['id'] = pipeline_label(label)
499
501
  label.remove
502
+ clean_node node, %w{data-label}
500
503
  end
501
- clean_node node, %w{data-label place}
502
504
  end
503
505
  doc.xpath('//table').each do |node|
504
506
  if unexpected = node.at_css('unexpected')
@@ -666,6 +668,7 @@ module Polytexnic
666
668
  heading['class'] = 'heading'
667
669
 
668
670
  number = heading.at_css('strong')
671
+ number.content = number.content.sub!('0.', '') if article?
669
672
  number.name = 'span'
670
673
  number['class'] = 'number'
671
674
  if css_class == 'codelisting'
@@ -896,7 +899,7 @@ module Polytexnic
896
899
  @equation = 0
897
900
  @figure = 0
898
901
  @table = 0
899
- @cha = node['id-text']
902
+ @cha = article? ? nil : node['id-text']
900
903
  elsif node['class'] == 'section'
901
904
  @sec = node['id-text']
902
905
  label_number(@cha, @sec)
@@ -914,7 +917,8 @@ module Polytexnic
914
917
  end
915
918
  label_number(@cha, @equation)
916
919
  elsif node['class'] == 'codelisting'
917
- node['id-text']
920
+ @listing = number_from_id(node['id-text'])
921
+ label_number(@cha, @listing)
918
922
  elsif node['class'] == 'aside'
919
923
  node['id-text']
920
924
  elsif node.name == 'table' && node['id-text']
@@ -934,6 +938,17 @@ module Polytexnic
934
938
  end
935
939
  end
936
940
 
941
+ # Extract the sequential number from the node id.
942
+ # I.e., number_from_id('2.3') -> '3'
943
+ def number_from_id(id)
944
+ id.split('.')[1]
945
+ end
946
+
947
+ # Returns true if pipeline was called on an article document.
948
+ def article?
949
+ !!article
950
+ end
951
+
937
952
  # Returns a label number for use in headings.
938
953
  # For example, label_number("1", "2") returns "1.2".
939
954
  def label_number(*args)
@@ -1,3 +1,3 @@
1
1
  module Polytexnic
2
- VERSION = "1.0.4"
2
+ VERSION = "1.1.beta1"
3
3
  end
data/lib/polytexnic.rb CHANGED
@@ -38,13 +38,15 @@ module Polytexnic
38
38
 
39
39
  attr_accessor :literal_cache, :code_cache, :polytex, :xml, :html,
40
40
  :math_label_cache, :highlight_cache, :maketitle_elements,
41
- :custom_commands, :language_labels, :unicode_cache
41
+ :custom_commands, :language_labels, :unicode_cache,
42
+ :article
42
43
 
43
44
  def initialize(source, options = {})
44
45
  @literal_cache = options[:literal_cache] || {}
45
46
  @unicode_cache = {}
46
47
  @code_cache = {}
47
48
  @maketitle_elements = {}
49
+ @article = options[:article]
48
50
  @language_labels = if (labels = options[:language_labels]).nil?
49
51
  default_language_labels
50
52
  else
@@ -0,0 +1,90 @@
1
+ # encoding=utf-8
2
+ require 'spec_helper'
3
+
4
+ describe "articles" do
5
+ let(:pipeline) { Polytexnic::Pipeline.new(polytex, article: true) }
6
+ subject(:processed_text) { pipeline.to_html }
7
+
8
+ let(:polytex) do <<-'EOS'
9
+ Lorem ipsum
10
+ \section{Foo}
11
+ \label{sec:foo}
12
+
13
+ \begin{figure}
14
+ lorem
15
+ \label{fig:foo}
16
+ \end{figure}
17
+
18
+ \begin{table}
19
+ \begin{tabular}{cc}
20
+ HTTP request & URL \\
21
+ GET & /users \\
22
+ GET & /users/1
23
+ \end{tabular}
24
+ \label{table:foo}
25
+ \end{table}
26
+
27
+ \begin{codelisting}
28
+ \codecaption{Creating a \texttt{gem} configuration file. \\ \filepath{path/to/file}}
29
+ \label{code:create_gemrc}
30
+ %= lang:console
31
+ \begin{code}
32
+ $ subl .gemrc
33
+ \end{code}
34
+ \end{codelisting}
35
+
36
+ Listing~\ref{code:create_gemrc}\footnote{asdfasdf}
37
+
38
+ Section~\ref{sec:foo}
39
+
40
+ Figure~\ref{fig:foo}
41
+ EOS
42
+ end
43
+ let(:section) { '<a href="#sec-foo" class="heading"><span class="number">1 </span>' }
44
+ let(:figure) { '<span class="header">Figure 1</span>' }
45
+ let(:table) { '<span class="header">Table 1</span>' }
46
+ let(:listing) { '<span class="number">Listing 1:</span>' }
47
+ let(:footnote) { '<sup id="cha-0_footnote-ref-1" class="footnote"><a href="#cha-0_footnote-1">1</a></sup>' }
48
+
49
+ let(:sref) { 'Section <span class="ref">1</span>' }
50
+ let(:fref) { 'Figure <span class="ref">1</span>' }
51
+ let(:lref) { 'Listing <span class="ref">1</span>' }
52
+ let(:fntext) { 'asdfasdf' }
53
+
54
+ describe "section" do
55
+ describe "numbering" do
56
+ it { should include section }
57
+ end
58
+ describe "xref" do
59
+ it { should resemble sref }
60
+ end
61
+ end
62
+
63
+ describe "figure" do
64
+ describe "numbering" do
65
+ it { should include figure }
66
+ end
67
+ describe "xref" do
68
+ it { should resemble fref }
69
+ end
70
+ end
71
+
72
+ describe "listing" do
73
+ describe "numbering" do
74
+ it { should include listing }
75
+ end
76
+ describe "xref" do
77
+ it { should resemble lref }
78
+ end
79
+ end
80
+
81
+ describe "footnote" do
82
+ it { should include '<ol class="footnotes">' }
83
+ describe "numbering" do
84
+ it { should include footnote }
85
+ end
86
+ describe "footnote text" do
87
+ it { should include fntext }
88
+ end
89
+ end
90
+ end
@@ -108,11 +108,13 @@ describe 'Polytexnic::Pipeline#to_html' do
108
108
 
109
109
  describe '\section' do
110
110
  let(:polytex) do <<-'EOS'
111
+ Lorem ipsum
111
112
  \section{Foo}
112
113
  \label{sec:foo}
113
114
  EOS
114
115
  end
115
116
  let(:output) do <<-'EOS'
117
+ <p>Lorem ipsum</p>
116
118
  <div id="sec-foo" data-tralics-id="cid1" class="section" data-number="1">
117
119
  <h2><a href="#sec-foo" class="heading"><span class="number">1 </span>Foo</a></h2>
118
120
  </div>
@@ -333,4 +335,4 @@ describe 'Polytexnic::Pipeline#to_html' do
333
335
  EOS
334
336
  end
335
337
  end
336
- end
338
+ end
@@ -116,7 +116,7 @@ describe 'Polytexnic::Pipeline#to_html' do
116
116
  describe "TeX logo" do
117
117
  let(:polytex) { '\TeX' }
118
118
  let(:output) do
119
- %(<span class="texhtml">T<span class="texhtmlE">E</span>X</span>)
119
+ %(<span class="texhtml" style="font-family: 'CMU Serif', cmr10, LMRoman10-Regular, 'Times New Roman', 'Nimbus Roman No9 L', Times, serif;">T<span style="text-transform: uppercase; vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em;">E</span>X</span>)
120
120
  end
121
121
  it { should include(output) }
122
122
  end
@@ -124,7 +124,7 @@ describe 'Polytexnic::Pipeline#to_html' do
124
124
  describe "LaTeX logo" do
125
125
  let(:polytex) { '\LaTeX' }
126
126
  let(:output) do
127
- %(<span class="texhtml">L<span class="texhtmlA">A</span>T<span class="texhtmlE">E</span>X</span>)
127
+ %(<span class="texhtml" style="font-family: 'CMU Serif', cmr10, LMRoman10-Regular, 'Times New Roman', 'Nimbus Roman No9 L', Times, serif;">L<span style="text-transform: uppercase; font-size: 70%; margin-left: -0.36em; vertical-align: 0.3em; line-height: 0; margin-right: -0.15em;">A</span>T<span style="text-transform: uppercase; margin-left: -0.1667em; vertical-align: -0.5ex; line-height: 0; margin-right: -0.125em;">E</span>X</span>)
128
128
  end
129
129
  it { should include(output) }
130
130
  end
@@ -132,7 +132,7 @@ describe 'Polytexnic::Pipeline#to_html' do
132
132
  describe "PolyTeX logo" do
133
133
  let(:polytex) { '\PolyTeX' }
134
134
  let(:output) do
135
- %(Poly<span class="texhtml">T<span class="texhtmlE">E</span>X</span>)
135
+ %(Poly<span class="texhtml" style="font-family: 'CMU Serif', cmr10, LMRoman10-Regular, 'Times New Roman', 'Nimbus Roman No9 L', Times, serif;">T<span style="text-transform: uppercase; vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em;">E</span>X</span>)
136
136
  end
137
137
  it { should include(output) }
138
138
  end
@@ -140,7 +140,7 @@ describe 'Polytexnic::Pipeline#to_html' do
140
140
  describe "PolyTeXnic logo" do
141
141
  let(:polytex) { '\PolyTeXnic' }
142
142
  let(:output) do
143
- %(Poly<span class="texhtml">T<span class="texhtmlE">E</span>X</span>nic)
143
+ %(Poly<span class="texhtml" style="font-family: 'CMU Serif', cmr10, LMRoman10-Regular, 'Times New Roman', 'Nimbus Roman No9 L', Times, serif;">T<span style="text-transform: uppercase; vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em;">E</span>X</span>nic)
144
144
  end
145
145
  it { should include(output) }
146
146
  end
@@ -84,7 +84,7 @@ describe 'Polytexnic::Pipeline#to_html' do
84
84
 
85
85
  context "with a label and a cross-reference" do
86
86
  let(:polytex) do <<-'EOS'
87
- \begin{figure}[h]
87
+ \begin{figure}
88
88
  lorem
89
89
  \label{fig:foo}
90
90
  \end{figure}
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.0.4
4
+ version: 1.1.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Hartl
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-09 00:00:00.000000000 Z
12
+ date: 2015-03-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -232,6 +232,7 @@ files:
232
232
  - precompiled_binaries/tralics-os-x-newer
233
233
  - precompiled_binaries/tralics-os-x-older
234
234
  - precompiled_binaries/tralics-x86_64-linux
235
+ - spec/articles_spec.rb
235
236
  - spec/fixtures/code_listing.tex
236
237
  - spec/fixtures/figures.tex
237
238
  - spec/fixtures/inline_math.html
@@ -286,9 +287,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
286
287
  version: '0'
287
288
  required_rubygems_version: !ruby/object:Gem::Requirement
288
289
  requirements:
289
- - - ">="
290
+ - - ">"
290
291
  - !ruby/object:Gem::Version
291
- version: '0'
292
+ version: 1.3.1
292
293
  requirements: []
293
294
  rubyforge_project:
294
295
  rubygems_version: 2.2.2
@@ -296,6 +297,7 @@ signing_key:
296
297
  specification_version: 4
297
298
  summary: Convert from PolyTeX & Markdown to HTML & LaTeX
298
299
  test_files:
300
+ - spec/articles_spec.rb
299
301
  - spec/fixtures/code_listing.tex
300
302
  - spec/fixtures/figures.tex
301
303
  - spec/fixtures/inline_math.html