org-ruby 0.9.0 → 0.9.1.gh

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.9.1 / 2013-02-13
2
+
3
+ * Backport CGI::escapeHTML function from Ruby to have same output among different Ruby versions
4
+
1
5
  == 0.9.0 / 2014-02-08
2
6
 
3
7
  * Add explicit enable or disable of include file feature
data/lib/org-ruby.rb CHANGED
@@ -24,7 +24,7 @@ require 'org-ruby/tilt'
24
24
  module OrgRuby
25
25
 
26
26
  # :stopdoc:
27
- VERSION = '0.9.0'
27
+ VERSION = '0.9.1.gh'
28
28
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
29
29
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
30
30
  # :startdoc:
@@ -1,15 +1,3 @@
1
- require 'cgi'
2
- begin
3
- require 'pygments'
4
- rescue LoadError
5
- # Pygments is not supported so we try instead with CodeRay
6
- begin
7
- require 'coderay'
8
- rescue LoadError
9
- # No code syntax highlighting
10
- end
11
- end
12
-
13
1
  module Orgmode
14
2
 
15
3
  class HtmlOutputBuffer < OutputBuffer
@@ -52,6 +40,19 @@ module Orgmode
52
40
  @footnotes = {}
53
41
  @unclosed_tags = []
54
42
  @logger.debug "HTML export options: #{@options.inspect}"
43
+
44
+ unless @options[:skip_syntax_highlight]
45
+ begin
46
+ require 'pygments'
47
+ rescue LoadError
48
+ # Pygments is not supported so we try instead with CodeRay
49
+ begin
50
+ require 'coderay'
51
+ rescue LoadError
52
+ # No code syntax highlighting
53
+ end
54
+ end
55
+ end
55
56
  end
56
57
 
57
58
  # Output buffer is entering a new mode. Use this opportunity to
@@ -62,7 +63,7 @@ module Orgmode
62
63
 
63
64
  if HtmlBlockTag[mode]
64
65
  unless ((mode_is_table?(mode) and skip_tables?) or
65
- (mode == :src and defined? Pygments))
66
+ (mode == :src and !@options[:skip_syntax_highlight] and defined? Pygments))
66
67
  css_class = case
67
68
  when (mode == :src and @block_lang.empty?)
68
69
  " class=\"src\""
@@ -93,7 +94,7 @@ module Orgmode
93
94
  m = super(mode)
94
95
  if HtmlBlockTag[m]
95
96
  unless ((mode_is_table?(m) and skip_tables?) or
96
- (m == :src and defined? Pygments))
97
+ (m == :src and !@options[:skip_syntax_highlight] and defined? Pygments))
97
98
  add_paragraph if @new_paragraph
98
99
  @new_paragraph = true
99
100
  @logger.debug "</#{HtmlBlockTag[m]}>"
@@ -112,6 +113,8 @@ module Orgmode
112
113
  # NOTE: CodeRay and Pygments already escape the html once, so
113
114
  # no need to escapeHTML
114
115
  case
116
+ when (current_mode == :src and @options[:skip_syntax_highlight])
117
+ @buffer = escapeHTML @buffer
115
118
  when (current_mode == :src and defined? Pygments)
116
119
  lang = normalize_lang @block_lang
117
120
  @output << "\n" unless @new_paragraph == :start
@@ -140,7 +143,7 @@ module Orgmode
140
143
  @new_paragraph = true
141
144
  else
142
145
  # *NOTE* Don't use escape_buffer! through its sensitivity to @<text> forms
143
- @buffer = CGI::escapeHTML @buffer
146
+ @buffer = escapeHTML @buffer
144
147
  end
145
148
 
146
149
  # Whitespace is significant in :code mode. Always output the
@@ -275,7 +278,7 @@ module Orgmode
275
278
  def inline_formatting(str)
276
279
  @re_help.rewrite_emphasis str do |marker, s|
277
280
  if marker == "=" or marker == "~"
278
- s = CGI::escapeHTML s
281
+ s = escapeHTML s
279
282
  "<#{Tags[marker][:open]}>#{s}</#{Tags[marker][:close]}>"
280
283
  else
281
284
  "@<#{Tags[marker][:open]}>#{s}@</#{Tags[marker][:close]}>"
@@ -371,5 +374,29 @@ module Orgmode
371
374
  "#{$2}#{$3}"
372
375
  end
373
376
  end
377
+
378
+ # The CGI::escapeHTML function backported from the Ruby standard library
379
+ # as of commit fd2fc885b43283aa3d76820b2dfa9de19a77012f
380
+ #
381
+ # Implementation of the cgi module can change among Ruby versions
382
+ # so stabilizing on a single one here to avoid surprises.
383
+ #
384
+ # https://github.com/ruby/ruby/blob/trunk/lib/cgi/util.rb
385
+ #
386
+ # The set of special characters and their escaped values
387
+ TABLE_FOR_ESCAPE_HTML__ = {
388
+ "'" => '&#39;',
389
+ '&' => '&amp;',
390
+ '"' => '&quot;',
391
+ '<' => '&lt;',
392
+ '>' => '&gt;',
393
+ }
394
+ # Escape special characters in HTML, namely &\"<>
395
+ # escapeHTML('Usage: foo "bar" <baz>')
396
+ # # => "Usage: foo &quot;bar&quot; &lt;baz&gt;"
397
+ private
398
+ def escapeHTML(string)
399
+ string.gsub(/['&\"<>]/, TABLE_FOR_ESCAPE_HTML__)
400
+ end
374
401
  end # class HtmlOutputBuffer
375
402
  end # module Orgmode
@@ -303,10 +303,11 @@ module Orgmode
303
303
  export_options = {
304
304
  :decorate_title => @in_buffer_settings["TITLE"],
305
305
  :export_heading_number => export_heading_number?,
306
- :export_todo => export_todo?,
307
- :use_sub_superscripts => use_sub_superscripts?,
308
- :export_footnotes => export_footnotes?,
309
- :link_abbrevs => @link_abbrevs
306
+ :export_todo => export_todo?,
307
+ :use_sub_superscripts => use_sub_superscripts?,
308
+ :export_footnotes => export_footnotes?,
309
+ :link_abbrevs => @link_abbrevs,
310
+ :skip_syntax_highlight => @parser_options[:skip_syntax_highlight]
310
311
  }
311
312
  export_options[:skip_tables] = true if not export_tables?
312
313
  output = ""
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: org-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
5
- prerelease:
4
+ version: 0.9.1.gh
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Brian Dewey
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-08 00:00:00.000000000 Z
12
+ date: 2014-04-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubypants
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &70363196176300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,12 +21,7 @@ dependencies:
21
21
  version: 0.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: 0.2.0
24
+ version_requirements: *70363196176300
30
25
  description: ! 'An org-mode parser written in Ruby. This gem contains Ruby routines
31
26
  for parsing org-mode files.The most
32
27
 
@@ -84,8 +79,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
79
  version: '0'
85
80
  requirements: []
86
81
  rubyforge_project: org-ruby
87
- rubygems_version: 1.8.24
82
+ rubygems_version: 1.8.10
88
83
  signing_key:
89
84
  specification_version: 3
90
85
  summary: This gem contains Ruby routines for parsing org-mode files.
91
86
  test_files: []
87
+ has_rdoc: