latexpdf 0.4.1 → 0.4.2

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: a2db60b381091e8e650a7e7edd0146b025e0e5c3
4
- data.tar.gz: addb19220017e210191cd34b01aea5324ce3c010
3
+ metadata.gz: 617518c1f7ec6b02b3c2d789c717f14bd5d15bf9
4
+ data.tar.gz: d0fdc327ff7685d40d6236a984ce297531905891
5
5
  SHA512:
6
- metadata.gz: 5d20c41796aeb00532693b675d4079bc77bb7e6bcc8f84449ecbb2d4510e201d79ac8f2507c5189c52b23ccb18bee2abe2dee4d64bd4d313d09dfc7c8b8a0849
7
- data.tar.gz: 83e7801782cbce78be9c51571bfcd20696e02ebc4d8cda3d8b19931190b41c018439233b8a73e3a7fcf4de24c725d8eba4e00894829e95bbda001a490d2276a8
6
+ metadata.gz: 90db69ee7ea6e75cf90e12c0de5b31b91af9e0cfbbfb53d096fe4a7f4ca14e58e6daf231b582fc4bef7704cb4f028ada22206171fddf8f8778aea99ccc0dba5d
7
+ data.tar.gz: 27d1def3ad962959d8a1c36a3765572a2a9f9d17c154dee20b7220fd0dd6bfba497cdbdab64616e71ecd22b0ec46c50c55349a2666f6f8afba6315a4e1c761aa
@@ -0,0 +1,33 @@
1
+ module Latexpdf
2
+ class Escaper
3
+ ESCAPE_RE=/([{}_$&%#])|([\\^~|<>])/
4
+ ESC_MAP = {
5
+ '\\' => 'backslash',
6
+ '^' => 'asciicircum',
7
+ '~' => 'asciitilde',
8
+ '|' => 'bar',
9
+ '<' => 'less',
10
+ '>' => 'greater',
11
+ }
12
+
13
+ def tex_safe(text)
14
+ text.gsub(ESCAPE_RE) { |m|
15
+ if $1
16
+ "\\#{m}"
17
+ else
18
+ "\\text#{ESC_MAP[m]}{}"
19
+ end
20
+ }.html_safe
21
+ end
22
+ end
23
+
24
+ def self.escape_latex(text)
25
+ latex_escaper.tex_safe(text)
26
+ end
27
+
28
+ private
29
+
30
+ def self.latex_escaper
31
+ @latex_escaper ||= Escaper.new
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module Latexpdf
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
data/lib/latexpdf.rb CHANGED
@@ -13,6 +13,9 @@ require "latexpdf/errors/latexpdf_error"
13
13
  # Generator
14
14
  require "latexpdf/pdf_generator"
15
15
 
16
+ # Escaper
17
+ require "latexpdf/escaper"
18
+
16
19
  require "latexpdf/railtie" if defined?(Rails)
17
20
 
18
21
  module Latexpdf
@@ -4,4 +4,8 @@ class TexController < ApplicationController
4
4
  def example
5
5
  render "example.pdf.tex"
6
6
  end
7
+
8
+ def example2
9
+ render "example2.pdf.tex"
10
+ end
7
11
  end
@@ -1,2 +1,5 @@
1
1
  module ApplicationHelper
2
+ def tex_safe(text)
3
+ Latexpdf.escape_latex(text)
4
+ end
2
5
  end
@@ -0,0 +1,6 @@
1
+ \documentclass{article}
2
+ \begin{document}
3
+ These are all ten latex characters with special meaning:
4
+
5
+ <%= tex_safe '& % $ # _ { } ~ ^ \ ' %>
6
+ \end{document}
@@ -19,9 +19,6 @@ Rails.application.configure do
19
19
  # Print deprecation notices to the Rails logger.
20
20
  config.active_support.deprecation = :log
21
21
 
22
- # Raise an error on page load if there are pending migrations.
23
- config.active_record.migration_error = :page_load
24
-
25
22
  # Debug mode disables concatenation and preprocessing of assets.
26
23
  # This option may cause significant delays in view rendering with a large
27
24
  # number of complex assets.
@@ -0,0 +1,54 @@
1
+
2
+
3
+ Started GET "/tex/example2.pdf" for ::1 at 2016-05-24 11:21:02 +0200
4
+ Processing by TexController#example2 as PDF
5
+ Rendered tex/example2.pdf.tex (1397.9ms)
6
+ Completed 200 OK in 1408ms (Views: 1408.0ms)
7
+
8
+
9
+ Started GET "/tex/example2.pdf" for ::1 at 2016-05-24 11:24:01 +0200
10
+ Processing by TexController#example2 as PDF
11
+ Rendered tex/example2.pdf.tex (1451.5ms)
12
+ Completed 200 OK in 1454ms (Views: 1453.4ms)
13
+
14
+
15
+ Started GET "/tex/example2.pdf" for ::1 at 2016-05-24 11:24:02 +0200
16
+ Processing by TexController#example2 as PDF
17
+ Rendered tex/example2.pdf.tex (1495.4ms)
18
+ Completed 200 OK in 1498ms (Views: 1497.5ms)
19
+
20
+
21
+ Started GET "/tex/example2.pdf" for ::1 at 2016-05-24 11:24:47 +0200
22
+ Processing by TexController#example2 as PDF
23
+ Rendered tex/example2.pdf.tex (1300.8ms)
24
+ Completed 200 OK in 1303ms (Views: 1302.3ms)
25
+
26
+
27
+ Started GET "/tex/example2.pdf" for ::1 at 2016-05-24 11:24:49 +0200
28
+ Processing by TexController#example2 as PDF
29
+ Rendered tex/example2.pdf.tex (1474.8ms)
30
+ Completed 200 OK in 1478ms (Views: 1477.2ms)
31
+
32
+
33
+ Started GET "/tex/example2.pdf" for ::1 at 2016-05-24 11:25:01 +0200
34
+ Processing by TexController#example2 as PDF
35
+ Rendered tex/example2.pdf.tex (1272.2ms)
36
+ Completed 200 OK in 1274ms (Views: 1273.6ms)
37
+
38
+
39
+ Started GET "/tex/example2.pdf" for ::1 at 2016-05-24 11:25:02 +0200
40
+ Processing by TexController#example2 as PDF
41
+ Rendered tex/example2.pdf.tex (1470.4ms)
42
+ Completed 200 OK in 1472ms (Views: 1471.9ms)
43
+
44
+
45
+ Started GET "/tex/example2.pdf" for ::1 at 2016-05-24 11:27:26 +0200
46
+ Processing by TexController#example2 as PDF
47
+ Rendered tex/example2.pdf.tex (1483.5ms)
48
+ Completed 200 OK in 1495ms (Views: 1494.2ms)
49
+
50
+
51
+ Started GET "/tex/example2.pdf" for ::1 at 2016-05-24 11:27:28 +0200
52
+ Processing by TexController#example2 as PDF
53
+ Rendered tex/example2.pdf.tex (1586.0ms)
54
+ Completed 200 OK in 1589ms (Views: 1588.4ms)
@@ -456,3 +456,108 @@ Started GET "/tex/example.pdf" for 127.0.0.1 at 2016-05-23 17:40:08 +0200
456
456
  Processing by TexController#example as PDF
457
457
  Rendered tex/example.pdf.tex (1144.2ms)
458
458
  Completed 200 OK in 1154ms (Views: 1153.8ms)
459
+ -----------------------------------------------------------
460
+ RenderingTest: test_Generate_PDF_on_the_fly_in_a_controller
461
+ -----------------------------------------------------------
462
+ Started GET "/tex/example.pdf" for 127.0.0.1 at 2016-05-24 10:22:59 +0200
463
+ Processing by TexController#example as PDF
464
+ Rendered tex/example.pdf.tex (2845.9ms)
465
+ Completed 200 OK in 2856ms (Views: 2855.3ms)
466
+ -----------------------------------------------------------
467
+ RenderingTest: test_Generate_PDF_on_the_fly_in_a_controller
468
+ -----------------------------------------------------------
469
+ Started GET "/tex/example.pdf" for 127.0.0.1 at 2016-05-24 11:01:22 +0200
470
+ Processing by TexController#example as PDF
471
+ Rendered tex/example.pdf.tex (1315.1ms)
472
+ Completed 200 OK in 1326ms (Views: 1325.5ms)
473
+ -----------------------------------------------------------
474
+ RenderingTest: test_Generate_PDF_on_the_fly_in_a_controller
475
+ -----------------------------------------------------------
476
+ Started GET "/tex/example.pdf" for 127.0.0.1 at 2016-05-24 11:08:45 +0200
477
+ Processing by TexController#example as PDF
478
+ Rendered tex/example.pdf.tex (1221.9ms)
479
+ Completed 200 OK in 1229ms (Views: 1229.0ms)
480
+ ---------------------------------------------------------
481
+ RenderingTest: test_Generate_PDF_using_escaped_characters
482
+ ---------------------------------------------------------
483
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:13:39 +0200
484
+ Processing by TexController#example2 as PDF
485
+ Rendered tex/example2.pdf.tex (356.3ms)
486
+ Completed 500 Internal Server Error in 364ms
487
+ ---------------------------------------------------------
488
+ RenderingTest: test_Generate_PDF_using_escaped_characters
489
+ ---------------------------------------------------------
490
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:13:58 +0200
491
+ Processing by TexController#example2 as PDF
492
+ Rendered tex/example2.pdf.tex (15.7ms)
493
+ Completed 500 Internal Server Error in 23ms
494
+ ---------------------------------------------------------
495
+ RenderingTest: test_Generate_PDF_using_escaped_characters
496
+ ---------------------------------------------------------
497
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:14:21 +0200
498
+ Processing by TexController#example2 as PDF
499
+ Rendered tex/example2.pdf.tex (1306.3ms)
500
+ Completed 200 OK in 1314ms (Views: 1314.1ms)
501
+ ---------------------------------------------------------
502
+ RenderingTest: test_Generate_PDF_using_escaped_characters
503
+ ---------------------------------------------------------
504
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:27:59 +0200
505
+ Processing by TexController#example2 as PDF
506
+ Rendered tex/example2.pdf.tex (1307.1ms)
507
+ Completed 200 OK in 1314ms (Views: 1313.8ms)
508
+ ---------------------------------------------------------
509
+ RenderingTest: test_Generate_PDF_using_escaped_characters
510
+ ---------------------------------------------------------
511
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:30:41 +0200
512
+ Processing by TexController#example2 as PDF
513
+ Rendered tex/example2.pdf.tex (1358.4ms)
514
+ Completed 200 OK in 1367ms (Views: 1366.3ms)
515
+ ---------------------------------------------------------
516
+ RenderingTest: test_Generate_PDF_using_escaped_characters
517
+ ---------------------------------------------------------
518
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:31:00 +0200
519
+ Processing by TexController#example2 as PDF
520
+ Rendered tex/example2.pdf.tex (1300.7ms)
521
+ Completed 200 OK in 1308ms (Views: 1307.7ms)
522
+ ---------------------------------------------------------
523
+ RenderingTest: test_Generate_PDF_using_escaped_characters
524
+ ---------------------------------------------------------
525
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:31:20 +0200
526
+ Processing by TexController#example2 as PDF
527
+ Rendered tex/example2.pdf.tex (1287.9ms)
528
+ Completed 200 OK in 1295ms (Views: 1294.4ms)
529
+ ---------------------------------------------------------
530
+ RenderingTest: test_Generate_PDF_using_escaped_characters
531
+ ---------------------------------------------------------
532
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:31:46 +0200
533
+ Processing by TexController#example2 as PDF
534
+ Rendered tex/example2.pdf.tex (1301.4ms)
535
+ Completed 200 OK in 1309ms (Views: 1309.2ms)
536
+ ---------------------------------------------------------
537
+ RenderingTest: test_Generate_PDF_using_escaped_characters
538
+ ---------------------------------------------------------
539
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:31:54 +0200
540
+ Processing by TexController#example2 as PDF
541
+ Rendered tex/example2.pdf.tex (1303.6ms)
542
+ Completed 200 OK in 1311ms (Views: 1310.3ms)
543
+ ---------------------------------------------------------
544
+ RenderingTest: test_Generate_PDF_using_escaped_characters
545
+ ---------------------------------------------------------
546
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:31:59 +0200
547
+ Processing by TexController#example2 as PDF
548
+ Rendered tex/example2.pdf.tex (1326.0ms)
549
+ Completed 200 OK in 1333ms (Views: 1332.7ms)
550
+ -----------------------------------------------------------
551
+ RenderingTest: test_Generate_PDF_on_the_fly_in_a_controller
552
+ -----------------------------------------------------------
553
+ Started GET "/tex/example.pdf" for 127.0.0.1 at 2016-05-24 11:43:02 +0200
554
+ Processing by TexController#example as PDF
555
+ Rendered tex/example.pdf.tex (3393.3ms)
556
+ Completed 200 OK in 3402ms (Views: 3402.0ms)
557
+ ---------------------------------------------------------
558
+ RenderingTest: test_Generate_PDF_using_escaped_characters
559
+ ---------------------------------------------------------
560
+ Started GET "/tex/example2.pdf" for 127.0.0.1 at 2016-05-24 11:43:05 +0200
561
+ Processing by TexController#example2 as PDF
562
+ Rendered tex/example2.pdf.tex (3438.5ms)
563
+ Completed 200 OK in 3441ms (Views: 3440.4ms)
@@ -8,4 +8,14 @@ class RenderingTest < ActionDispatch::IntegrationTest
8
8
  assert_equal 1, reader.pages.count
9
9
  assert_match (/Test latex document/), reader.pages.first.text
10
10
  end
11
+
12
+ test "Generate PDF using escaped characters" do
13
+ get "/tex/example2.pdf"
14
+ assert_match (/application\/pdf/), response.headers["Content-Type"]
15
+ reader = PDF::Reader.new(StringIO.new(response.body))
16
+ assert_equal 1, reader.pages.count
17
+ assert_match (/& % \$ #/), reader.pages.first.text
18
+ assert_match (/\~ \^/), reader.pages.first.text
19
+ # PDF reader does not parse the others correctly unfortunately
20
+ end
11
21
  end
@@ -0,0 +1,45 @@
1
+ require "test_helper"
2
+
3
+ module Latexpdf
4
+ class EscaperTest < MiniTest::Test
5
+ def test_escape_ampersand
6
+ assert_equal "\\&", Latexpdf.escape_latex("&")
7
+ end
8
+
9
+ def test_escape_dollar
10
+ assert_equal "\\$", Latexpdf.escape_latex("$")
11
+ end
12
+
13
+ def test_escape_pound
14
+ assert_equal "\\#", Latexpdf.escape_latex("#")
15
+ end
16
+
17
+ def test_escape_underscore
18
+ assert_equal "\\_", Latexpdf.escape_latex("_")
19
+ end
20
+
21
+ def test_escape_lcurly
22
+ assert_equal "\\{", Latexpdf.escape_latex("{")
23
+ end
24
+
25
+ def test_escape_rcurly
26
+ assert_equal "\\}", Latexpdf.escape_latex("}")
27
+ end
28
+
29
+ def test_escape_tilde
30
+ assert_equal "\\textasciitilde{}", Latexpdf.escape_latex("~")
31
+ end
32
+
33
+ def test_escape_ciicircum
34
+ assert_equal "\\textasciicircum{}", Latexpdf.escape_latex("^")
35
+ end
36
+
37
+ def test_escape_backslash
38
+ assert_equal "\\textbackslash{}", Latexpdf.escape_latex("\\")
39
+ end
40
+
41
+ def test_escape_percent_sign
42
+ assert_equal "\\%", Latexpdf.escape_latex("%")
43
+ end
44
+ end
45
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: latexpdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthijs Ooms
@@ -125,6 +125,7 @@ files:
125
125
  - lib/latexpdf.rb
126
126
  - lib/latexpdf/configuration.rb
127
127
  - lib/latexpdf/errors/latexpdf_error.rb
128
+ - lib/latexpdf/escaper.rb
128
129
  - lib/latexpdf/pdf_generator.rb
129
130
  - lib/latexpdf/railtie.rb
130
131
  - lib/latexpdf/version.rb
@@ -137,6 +138,7 @@ files:
137
138
  - test/dummy/app/helpers/application_helper.rb
138
139
  - test/dummy/app/views/layouts/application.html.erb
139
140
  - test/dummy/app/views/tex/example.pdf.tex
141
+ - test/dummy/app/views/tex/example2.pdf.tex
140
142
  - test/dummy/bin/bundle
141
143
  - test/dummy/bin/rails
142
144
  - test/dummy/bin/rake
@@ -160,6 +162,7 @@ files:
160
162
  - test/dummy/config/locales/en.yml
161
163
  - test/dummy/config/routes.rb
162
164
  - test/dummy/config/secrets.yml
165
+ - test/dummy/log/development.log
163
166
  - test/dummy/log/test.log
164
167
  - test/dummy/public/404.html
165
168
  - test/dummy/public/422.html
@@ -183,6 +186,7 @@ files:
183
186
  - test/dummy/tmp/cache/assets/sprockets/v3.0/sp/sp2aS0gBrj1ZVPgX0e8j11TaSSz3qpMGjtFv6soZ0KM.cache
184
187
  - test/integration/rendering_test.rb
185
188
  - test/latexpdf/configuration_test.rb
189
+ - test/latexpdf/escaper_test.rb
186
190
  - test/latexpdf/latexpdf_error_test.rb
187
191
  - test/latexpdf/latexpdf_test.rb
188
192
  - test/latexpdf/logger_test.rb
@@ -223,6 +227,7 @@ test_files:
223
227
  - test/dummy/app/helpers/application_helper.rb
224
228
  - test/dummy/app/views/layouts/application.html.erb
225
229
  - test/dummy/app/views/tex/example.pdf.tex
230
+ - test/dummy/app/views/tex/example2.pdf.tex
226
231
  - test/dummy/bin/bundle
227
232
  - test/dummy/bin/rails
228
233
  - test/dummy/bin/rake
@@ -246,6 +251,7 @@ test_files:
246
251
  - test/dummy/config/routes.rb
247
252
  - test/dummy/config/secrets.yml
248
253
  - test/dummy/config.ru
254
+ - test/dummy/log/development.log
249
255
  - test/dummy/log/test.log
250
256
  - test/dummy/public/404.html
251
257
  - test/dummy/public/422.html
@@ -271,6 +277,7 @@ test_files:
271
277
  - test/dummy/tmp/cache/assets/sprockets/v3.0/Yr/YrZ0OIHu42cExs1kqngMA6ShVDKhfGmhyW-E9haNo5Y.cache
272
278
  - test/integration/rendering_test.rb
273
279
  - test/latexpdf/configuration_test.rb
280
+ - test/latexpdf/escaper_test.rb
274
281
  - test/latexpdf/latexpdf_error_test.rb
275
282
  - test/latexpdf/latexpdf_test.rb
276
283
  - test/latexpdf/logger_test.rb