polytexnic 0.9.10 → 1.0.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: 7d1357e1fdbafae6d29c54a966649109ceaef92f
4
- data.tar.gz: a15026b6f6b37bc2c37fe9d9fa81571b62e3bf59
3
+ metadata.gz: 751a1b5ecbbcd95df78fdc4651d8ec270990abbb
4
+ data.tar.gz: b57645b0af7b1d4c1a3067f0a2d8d954937348fc
5
5
  SHA512:
6
- metadata.gz: a38508985733c163261cd035a86d60c793b22c4027d737dee582431859163765ace742a67649599aba8225739f672f3018104e7c06f0225d899aa2e592cc95f3
7
- data.tar.gz: da175c2ed00d3b95b8ff7c849123ec76dc6fb4980e3fb445a96fff73f93b75e93918ba461998605d121217a807bf8abad75fb0b7aef2220c0b91a324c2007413
6
+ metadata.gz: 44ca3dac0ba83a5089e4066f82ec3330010c3e4020bfee990225282530d52c72cc972842ea63386fd2419b9025579014b2545bc2c1b262809c18c43de449a78f
7
+ data.tar.gz: 053ea3fcf06caac0461614417ca3b856fea2632dcf28491608dfe01445a745cf45e011a2488caeed12ddd38c42ea2a77449aeabbabf9cd4e68790560e5c11d44
File without changes
@@ -602,12 +602,26 @@ module Polytexnic
602
602
  end
603
603
  end
604
604
 
605
+ # Converts colored text to HTML.
605
606
  def coloredtext(doc)
607
+ # Handle \coloredtext{red}{text}
606
608
  doc.xpath('//coloredtext').each do |node|
607
609
  node.name = 'span'
608
610
  node['style'] = "color: #{node['color']}"
609
611
  clean_node node, 'color'
610
612
  end
613
+
614
+ # Handle \coloredtexthtml{ff0000}{text}
615
+ doc.xpath('//coloredtexthtml').each do |node|
616
+ node.name = 'span'
617
+ color = node['color']
618
+ # Catch common case of using lower-case hex.
619
+ if color =~ /[a-f]/
620
+ raise "RGB hex color must be upper-case (for LaTeX's sake)"
621
+ end
622
+ node['style'] = "color: ##{color}"
623
+ clean_node node, 'color'
624
+ end
611
625
  end
612
626
 
613
627
  # Converts filesystem path (\filepath) to the proper tag.
@@ -89,6 +89,7 @@ module Polytexnic
89
89
  puts cleaned_markdown if debug?
90
90
  cleaned_markdown.tap do |markdown|
91
91
  convert_code_inclusion(markdown)
92
+ expand_input(markdown)
92
93
  cache_latex_literal(markdown)
93
94
  cache_raw_latex(markdown)
94
95
  cache_image_locations(markdown)
@@ -187,6 +188,14 @@ module Polytexnic
187
188
  end
188
189
  end
189
190
 
191
+ # Expands '\input' command by processing & inserting the target source.
192
+ def expand_input(text)
193
+ text.gsub!(/^[ \t]*\\input\{(.*?)\}[ \t]*$/) do
194
+ source = File.read("#{$1}.md")
195
+ Polytexnic::Pipeline.new(source, source: :markdown).polytex
196
+ end
197
+ end
198
+
190
199
  # Restores raw code from the cache.
191
200
  def restore_hashed_content(text)
192
201
  $cache.each do |key, value|
@@ -113,6 +113,7 @@ module Polytexnic
113
113
  \newcommand{\sout}[1]{\xmlelt{sout}{#1}}
114
114
  \newcommand{\kode}[1]{\xmlelt{kode}{#1}}
115
115
  \newcommand{\coloredtext}[2]{\xmlelt{coloredtext}{\AddAttToCurrent{color}{#1}#2}}
116
+ \newcommand{\coloredtexthtml}[2]{\xmlelt{coloredtexthtml}{\AddAttToCurrent{color}{#1}#2}}
116
117
  \newcommand{\filepath}[1]{\xmlelt{filepath}{#1}}
117
118
  \newcommand{\image}[1]{\xmlelt{image}{#1}}
118
119
  \newcommand{\imagebox}[1]{\xmlelt{imagebox}{#1}}
@@ -1,3 +1,3 @@
1
1
  module Polytexnic
2
- VERSION = "0.9.10"
2
+ VERSION = "1.0.beta1"
3
3
  end
@@ -528,5 +528,19 @@ def hello; puts 'hello'; end
528
528
  end
529
529
  end
530
530
  end
531
+
532
+ describe '\input command' do
533
+ let(:external_file) { 'foo.md' }
534
+ before { File.write(external_file, input) }
535
+ after { File.unlink(external_file) }
536
+
537
+ let(:input) { 'lorem *ipsum* dolor sit amet' }
538
+ let(:output) do
539
+ Polytexnic::Pipeline.new(input, source: :markdown).polytex
540
+ end
541
+ let(:source) { "# Foo\n\n \\input{foo} " }
542
+
543
+ it { should include output }
544
+ end
531
545
  end
532
546
  end
@@ -47,9 +47,24 @@ describe 'Polytexnic::Pipeline#to_html' do
47
47
  it { should resemble '<code>function_name</code>' }
48
48
  end
49
49
 
50
- describe "color command" do
51
- let(:polytex) { '\coloredtext{red}{text}' }
52
- it { should resemble '<span style="color: red">text</span>' }
50
+ context "coloredtext" do
51
+ describe "coloredtext command" do
52
+ let(:polytex) { '\coloredtext{red}{text}' }
53
+ it { should resemble '<span style="color: red">text</span>' }
54
+ end
55
+
56
+ context "coloredtexthtml command" do
57
+ describe "with a lower-case hex color" do
58
+ let(:polytex) { '\coloredtexthtml{ff0000}{text}' }
59
+ it "should raise an error" do
60
+ expect { processed_text }.to raise_error
61
+ end
62
+ end
63
+ describe "with an upper-case hex color" do
64
+ let(:polytex) { '\coloredtexthtml{FF0000}{text}' }
65
+ it { should resemble '<span style="color: #FF0000">text</span>' }
66
+ end
67
+ end
53
68
  end
54
69
  end
55
70
  end
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: 0.9.10
4
+ version: 1.0.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: 2014-06-20 00:00:00.000000000 Z
12
+ date: 2014-06-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -205,6 +205,7 @@ files:
205
205
  - .pull_requests/1388802190
206
206
  - .pull_requests/1389652617
207
207
  - .pull_requests/1395697424
208
+ - .pull_requests/1403381407
208
209
  - .rspec
209
210
  - Gemfile
210
211
  - Guardfile
@@ -283,9 +284,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
283
284
  version: '0'
284
285
  required_rubygems_version: !ruby/object:Gem::Requirement
285
286
  requirements:
286
- - - '>='
287
+ - - '>'
287
288
  - !ruby/object:Gem::Version
288
- version: '0'
289
+ version: 1.3.1
289
290
  requirements: []
290
291
  rubyforge_project:
291
292
  rubygems_version: 2.0.14