bean-kramdown 0.13.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/AUTHORS +1 -0
  2. data/CONTRIBUTERS +11 -0
  3. data/COPYING +24 -0
  4. data/ChangeLog +6683 -0
  5. data/GPL +674 -0
  6. data/README +43 -0
  7. data/VERSION +1 -0
  8. data/bin/kramdown +78 -0
  9. data/lib/kramdown.rb +23 -0
  10. data/lib/kramdown/compatibility.rb +49 -0
  11. data/lib/kramdown/converter.rb +41 -0
  12. data/lib/kramdown/converter/base.rb +169 -0
  13. data/lib/kramdown/converter/bean_html.rb +71 -0
  14. data/lib/kramdown/converter/html.rb +411 -0
  15. data/lib/kramdown/converter/kramdown.rb +428 -0
  16. data/lib/kramdown/converter/latex.rb +607 -0
  17. data/lib/kramdown/converter/toc.rb +82 -0
  18. data/lib/kramdown/document.rb +119 -0
  19. data/lib/kramdown/element.rb +524 -0
  20. data/lib/kramdown/error.rb +30 -0
  21. data/lib/kramdown/options.rb +373 -0
  22. data/lib/kramdown/parser.rb +39 -0
  23. data/lib/kramdown/parser/base.rb +136 -0
  24. data/lib/kramdown/parser/bean_kramdown.rb +25 -0
  25. data/lib/kramdown/parser/bean_kramdown/info_box.rb +52 -0
  26. data/lib/kramdown/parser/bean_kramdown/oembed.rb +230 -0
  27. data/lib/kramdown/parser/html.rb +570 -0
  28. data/lib/kramdown/parser/kramdown.rb +339 -0
  29. data/lib/kramdown/parser/kramdown/abbreviation.rb +71 -0
  30. data/lib/kramdown/parser/kramdown/autolink.rb +53 -0
  31. data/lib/kramdown/parser/kramdown/blank_line.rb +43 -0
  32. data/lib/kramdown/parser/kramdown/block_boundary.rb +46 -0
  33. data/lib/kramdown/parser/kramdown/blockquote.rb +51 -0
  34. data/lib/kramdown/parser/kramdown/codeblock.rb +63 -0
  35. data/lib/kramdown/parser/kramdown/codespan.rb +56 -0
  36. data/lib/kramdown/parser/kramdown/emphasis.rb +70 -0
  37. data/lib/kramdown/parser/kramdown/eob.rb +39 -0
  38. data/lib/kramdown/parser/kramdown/escaped_chars.rb +38 -0
  39. data/lib/kramdown/parser/kramdown/extensions.rb +204 -0
  40. data/lib/kramdown/parser/kramdown/footnote.rb +74 -0
  41. data/lib/kramdown/parser/kramdown/header.rb +68 -0
  42. data/lib/kramdown/parser/kramdown/horizontal_rule.rb +39 -0
  43. data/lib/kramdown/parser/kramdown/html.rb +169 -0
  44. data/lib/kramdown/parser/kramdown/html_entity.rb +44 -0
  45. data/lib/kramdown/parser/kramdown/image.rb +157 -0
  46. data/lib/kramdown/parser/kramdown/line_break.rb +38 -0
  47. data/lib/kramdown/parser/kramdown/link.rb +154 -0
  48. data/lib/kramdown/parser/kramdown/list.rb +240 -0
  49. data/lib/kramdown/parser/kramdown/math.rb +65 -0
  50. data/lib/kramdown/parser/kramdown/paragraph.rb +63 -0
  51. data/lib/kramdown/parser/kramdown/smart_quotes.rb +214 -0
  52. data/lib/kramdown/parser/kramdown/table.rb +178 -0
  53. data/lib/kramdown/parser/kramdown/typographic_symbol.rb +52 -0
  54. data/lib/kramdown/parser/markdown.rb +69 -0
  55. data/lib/kramdown/utils.rb +42 -0
  56. data/lib/kramdown/utils/entities.rb +348 -0
  57. data/lib/kramdown/utils/html.rb +85 -0
  58. data/lib/kramdown/utils/ordered_hash.rb +100 -0
  59. data/lib/kramdown/version.rb +28 -0
  60. metadata +140 -0
@@ -0,0 +1,85 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ #--
4
+ # Copyright (C) 2009-2012 Thomas Leitner <t_leitner@gmx.at>
5
+ #
6
+ # This file is part of kramdown.
7
+ #
8
+ # kramdown is free software: you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation, either version 3 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # This program is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ #++
21
+ #
22
+
23
+ module Kramdown
24
+
25
+ module Utils
26
+
27
+ # Provides convenience methods for HTML related tasks.
28
+ #
29
+ # *Note* that this module has to be mixed into a class that has a @root (containing an element
30
+ # of type :root) and an @options (containing an options hash) instance variable so that some of
31
+ # the methods can work correctly.
32
+ module Html
33
+
34
+ # Convert the entity +e+ to a string. The optional parameter +original+ may contain the
35
+ # original representation of the entity.
36
+ #
37
+ # This method uses the option +entity_output+ to determine the output form for the entity.
38
+ def entity_to_str(e, original = nil)
39
+ if RUBY_VERSION >= '1.9' && @options[:entity_output] == :as_char &&
40
+ (c = e.char.encode(@root.options[:encoding]) rescue nil) && !ESCAPE_MAP.has_key?(c)
41
+ c
42
+ elsif (@options[:entity_output] == :as_input || @options[:entity_output] == :as_char) && original
43
+ original
44
+ elsif @options[:entity_output] == :numeric || e.name.nil?
45
+ "&##{e.code_point};"
46
+ else
47
+ "&#{e.name};"
48
+ end
49
+ end
50
+
51
+ # Return the HTML representation of the attributes +attr+.
52
+ def html_attributes(attr)
53
+ attr.map {|k,v| v.nil? || (k == 'id' && v.strip.empty?) ? '' : " #{k}=\"#{escape_html(v.to_s, :attribute)}\"" }.join('')
54
+ end
55
+
56
+ # :stopdoc:
57
+ ESCAPE_MAP = {
58
+ '<' => '&lt;',
59
+ '>' => '&gt;',
60
+ '&' => '&amp;',
61
+ '"' => '&quot;'
62
+ }
63
+ ESCAPE_ALL_RE = /<|>|&/
64
+ ESCAPE_TEXT_RE = Regexp.union(REXML::Parsers::BaseParser::REFERENCE_RE, /<|>|&/)
65
+ ESCAPE_ATTRIBUTE_RE = Regexp.union(REXML::Parsers::BaseParser::REFERENCE_RE, /<|>|&|"/)
66
+ ESCAPE_RE_FROM_TYPE = {
67
+ :all => ESCAPE_ALL_RE,
68
+ :text => ESCAPE_TEXT_RE,
69
+ :attribute => ESCAPE_ATTRIBUTE_RE
70
+ }
71
+ # :startdoc:
72
+
73
+ # Escape the special HTML characters in the string +str+. The parameter +type+ specifies what
74
+ # is escaped: :all - all special HTML characters as well as entities, :text - all special HTML
75
+ # characters except the quotation mark but no entities and :attribute - all special HTML
76
+ # characters including the quotation mark but no entities.
77
+ def escape_html(str, type = :all)
78
+ str.gsub(ESCAPE_RE_FROM_TYPE[type]) {|m| ESCAPE_MAP[m] || m}
79
+ end
80
+
81
+ end
82
+
83
+ end
84
+
85
+ end
@@ -0,0 +1,100 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ #--
4
+ # Copyright (C) 2009-2012 Thomas Leitner <t_leitner@gmx.at>
5
+ #
6
+ # This file is part of kramdown.
7
+ #
8
+ # kramdown is free software: you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation, either version 3 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # This program is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ #++
21
+ #
22
+
23
+ module Kramdown
24
+
25
+ module Utils
26
+
27
+ if RUBY_VERSION < '1.9'
28
+
29
+ # A partial hash implementation which preserves the insertion order of the keys.
30
+ #
31
+ # *Note* that this class is only used on Ruby 1.8 since the built-in Hash on Ruby 1.9
32
+ # automatically preserves the insertion order. However, to remain compatibility only the
33
+ # methods defined in this class may be used when working with OrderedHash on Ruby 1.9.
34
+ class OrderedHash
35
+
36
+ include Enumerable
37
+
38
+ # Initialize the OrderedHash object.
39
+ def initialize
40
+ @data = {}
41
+ @order = []
42
+ end
43
+
44
+ # Iterate over the stored keys in insertion order.
45
+ def each
46
+ @order.each {|k| yield(k, @data[k])}
47
+ end
48
+
49
+ # Return the value for the +key+.
50
+ def [](key)
51
+ @data[key]
52
+ end
53
+
54
+ # Return +true+ if the hash contains the key.
55
+ def has_key?(key)
56
+ @data.has_key?(key)
57
+ end
58
+
59
+ # Set the value for the +key+ to +val+.
60
+ def []=(key, val)
61
+ @order << key if !@data.has_key?(key)
62
+ @data[key] = val
63
+ end
64
+
65
+ # Delete the +key+.
66
+ def delete(key)
67
+ @order.delete(key)
68
+ @data.delete(key)
69
+ end
70
+
71
+ def merge!(other)
72
+ other.each {|k,v| self[k] = v}
73
+ self
74
+ end
75
+
76
+ def dup #:nodoc:
77
+ new_object = super
78
+ new_object.instance_variable_set(:@data, @data.dup)
79
+ new_object.instance_variable_set(:@order, @order.dup)
80
+ new_object
81
+ end
82
+
83
+ def ==(other) #:nodoc:
84
+ return false unless other.kind_of?(self.class)
85
+ @data == other.instance_variable_get(:@data) && @order == other.instance_variable_get(:@order)
86
+ end
87
+
88
+ def inspect #:nodoc:
89
+ "{" + map {|k,v| "#{k.inspect}=>#{v.inspect}"}.join(" ") + "}"
90
+ end
91
+
92
+ end
93
+
94
+ else
95
+ OrderedHash = Hash
96
+ end
97
+
98
+ end
99
+
100
+ end
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ #--
4
+ # Copyright (C) 2009-2012 Thomas Leitner <t_leitner@gmx.at>
5
+ #
6
+ # This file is part of kramdown.
7
+ #
8
+ # kramdown is free software: you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation, either version 3 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # This program is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ #++
21
+ #
22
+
23
+ module Kramdown
24
+
25
+ # The kramdown version.
26
+ VERSION = '0.13.7'
27
+
28
+ end
metadata ADDED
@@ -0,0 +1,140 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bean-kramdown
3
+ version: !ruby/object:Gem::Version
4
+ hash: 33
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 13
9
+ - 5
10
+ version: 0.13.5
11
+ platform: ruby
12
+ authors:
13
+ - Vincent Siebert
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-05-21 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: coderay
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 23
29
+ segments:
30
+ - 1
31
+ - 0
32
+ - 0
33
+ version: 1.0.0
34
+ type: :development
35
+ version_requirements: *id001
36
+ description: bean-kramdown is yet-another-markdown-parser but fast, pure Ruby, using a strict syntax definition and supporting several common extensions.
37
+ email:
38
+ - vincent@thebeansgroup.com
39
+ executables:
40
+ - kramdown
41
+ extensions: []
42
+
43
+ extra_rdoc_files:
44
+ - README
45
+ files:
46
+ - lib/kramdown/compatibility.rb
47
+ - lib/kramdown/converter/base.rb
48
+ - lib/kramdown/converter/bean_html.rb
49
+ - lib/kramdown/converter/html.rb
50
+ - lib/kramdown/converter/kramdown.rb
51
+ - lib/kramdown/converter/latex.rb
52
+ - lib/kramdown/converter/toc.rb
53
+ - lib/kramdown/converter.rb
54
+ - lib/kramdown/document.rb
55
+ - lib/kramdown/element.rb
56
+ - lib/kramdown/error.rb
57
+ - lib/kramdown/options.rb
58
+ - lib/kramdown/parser/base.rb
59
+ - lib/kramdown/parser/bean_kramdown/info_box.rb
60
+ - lib/kramdown/parser/bean_kramdown/oembed.rb
61
+ - lib/kramdown/parser/bean_kramdown.rb
62
+ - lib/kramdown/parser/html.rb
63
+ - lib/kramdown/parser/kramdown/abbreviation.rb
64
+ - lib/kramdown/parser/kramdown/autolink.rb
65
+ - lib/kramdown/parser/kramdown/blank_line.rb
66
+ - lib/kramdown/parser/kramdown/block_boundary.rb
67
+ - lib/kramdown/parser/kramdown/blockquote.rb
68
+ - lib/kramdown/parser/kramdown/codeblock.rb
69
+ - lib/kramdown/parser/kramdown/codespan.rb
70
+ - lib/kramdown/parser/kramdown/emphasis.rb
71
+ - lib/kramdown/parser/kramdown/eob.rb
72
+ - lib/kramdown/parser/kramdown/escaped_chars.rb
73
+ - lib/kramdown/parser/kramdown/extensions.rb
74
+ - lib/kramdown/parser/kramdown/footnote.rb
75
+ - lib/kramdown/parser/kramdown/header.rb
76
+ - lib/kramdown/parser/kramdown/horizontal_rule.rb
77
+ - lib/kramdown/parser/kramdown/html.rb
78
+ - lib/kramdown/parser/kramdown/html_entity.rb
79
+ - lib/kramdown/parser/kramdown/image.rb
80
+ - lib/kramdown/parser/kramdown/line_break.rb
81
+ - lib/kramdown/parser/kramdown/link.rb
82
+ - lib/kramdown/parser/kramdown/list.rb
83
+ - lib/kramdown/parser/kramdown/math.rb
84
+ - lib/kramdown/parser/kramdown/paragraph.rb
85
+ - lib/kramdown/parser/kramdown/smart_quotes.rb
86
+ - lib/kramdown/parser/kramdown/table.rb
87
+ - lib/kramdown/parser/kramdown/typographic_symbol.rb
88
+ - lib/kramdown/parser/kramdown.rb
89
+ - lib/kramdown/parser/markdown.rb
90
+ - lib/kramdown/parser.rb
91
+ - lib/kramdown/utils/entities.rb
92
+ - lib/kramdown/utils/html.rb
93
+ - lib/kramdown/utils/ordered_hash.rb
94
+ - lib/kramdown/utils.rb
95
+ - lib/kramdown/version.rb
96
+ - lib/kramdown.rb
97
+ - COPYING
98
+ - GPL
99
+ - README
100
+ - AUTHORS
101
+ - VERSION
102
+ - ChangeLog
103
+ - CONTRIBUTERS
104
+ - bin/kramdown
105
+ homepage: http://github.com/thebeansgroup/kramdown
106
+ licenses: []
107
+
108
+ post_install_message:
109
+ rdoc_options:
110
+ - --main
111
+ - README
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ hash: 3
120
+ segments:
121
+ - 0
122
+ version: "0"
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ hash: 3
129
+ segments:
130
+ - 0
131
+ version: "0"
132
+ requirements: []
133
+
134
+ rubyforge_project:
135
+ rubygems_version: 1.8.17
136
+ signing_key:
137
+ specification_version: 3
138
+ summary: bean-kramdown is a fast, pure-Ruby Markdown-superset converter.
139
+ test_files: []
140
+