rdiscount 1.6.8 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ext/tags.c CHANGED
@@ -61,6 +61,9 @@ mkd_search_tags(char *pat, int len)
61
61
  }
62
62
 
63
63
 
64
+ static int populated = 0;
65
+
66
+
64
67
  /* load in the standard collection of html tags that markdown supports
65
68
  */
66
69
  void
@@ -70,8 +73,6 @@ mkd_prepare_tags()
70
73
  #define KW(x) mkd_define_tag(x, 0)
71
74
  #define SC(x) mkd_define_tag(x, 1)
72
75
 
73
- static int populated = 0;
74
-
75
76
  if ( populated ) return;
76
77
  populated = 1;
77
78
 
@@ -108,3 +109,15 @@ mkd_prepare_tags()
108
109
 
109
110
  mkd_sort_tags();
110
111
  } /* mkd_prepare_tags */
112
+
113
+
114
+ /* destroy the blocktags list (for shared libraries)
115
+ */
116
+ void
117
+ mkd_deallocate_tags()
118
+ {
119
+ if ( S(blocktags) > 0 ) {
120
+ populated = 0;
121
+ DELETE(blocktags);
122
+ }
123
+ } /* mkd_deallocate_tags */
data/ext/tags.h CHANGED
@@ -12,6 +12,7 @@ struct kw {
12
12
 
13
13
  struct kw* mkd_search_tags(char *, int);
14
14
  void mkd_prepare_tags();
15
+ void mkd_deallocate_tags();
15
16
  void mkd_sort_tags();
16
17
  void mkd_define_tag(char *, int);
17
18
 
data/ext/toc.c CHANGED
@@ -22,53 +22,66 @@ mkd_toc(Document *p, char **doc)
22
22
  Paragraph *tp, *srcp;
23
23
  int last_hnumber = 0;
24
24
  Cstring res;
25
+ int size;
25
26
 
26
- CREATE(res);
27
- RESERVE(res, 100);
27
+ if ( !(doc && p && p->ctx) ) return -1;
28
28
 
29
29
  *doc = 0;
30
+
31
+ if ( ! (p->ctx->flags & MKD_TOC) ) return 0;
30
32
 
31
- if ( !(p && p->ctx) ) return -1;
32
- if ( ! (p->ctx->flags & TOC) ) return 0;
33
+ CREATE(res);
34
+ RESERVE(res, 100);
33
35
 
34
36
  for ( tp = p->code; tp ; tp = tp->next ) {
35
37
  if ( tp->typ == SOURCE ) {
36
38
  for ( srcp = tp->down; srcp; srcp = srcp->next ) {
37
39
  if ( srcp->typ == HDR && srcp->text ) {
38
40
 
39
- if ( last_hnumber == srcp->hnumber )
40
- Csprintf(&res, "%*s</li>\n", srcp->hnumber, "");
41
- else while ( last_hnumber > srcp->hnumber ) {
42
- Csprintf(&res, "%*s</li>\n%*s</ul>\n",
43
- last_hnumber, "",
44
- last_hnumber-1,"");
45
- --last_hnumber;
41
+ if ( last_hnumber >= srcp->hnumber ) {
42
+ while ( last_hnumber > srcp->hnumber ) {
43
+ Csprintf(&res, "%*s</ul></li>\n", last_hnumber-1,"");
44
+ --last_hnumber;
45
+ }
46
46
  }
47
47
 
48
48
  while ( srcp->hnumber > last_hnumber ) {
49
- Csprintf(&res, "\n%*s<ul>\n", srcp->hnumber, "");
49
+ Csprintf(&res, "%*s%s<ul>\n", last_hnumber, "",
50
+ last_hnumber ? "<li>" : "");
50
51
  ++last_hnumber;
51
52
  }
52
53
  Csprintf(&res, "%*s<li><a href=\"#", srcp->hnumber, "");
53
- mkd_string_to_anchor(T(srcp->text->text), S(srcp->text->text), Csputc, &res);
54
+ mkd_string_to_anchor(T(srcp->text->text),
55
+ S(srcp->text->text),
56
+ (mkd_sta_function_t)Csputc, &res,1);
54
57
  Csprintf(&res, "\">");
55
- Csreparse(&res, T(srcp->text->text), S(srcp->text->text), 0);
58
+ mkd_string_to_anchor(T(srcp->text->text),
59
+ S(srcp->text->text),
60
+ (mkd_sta_function_t)Csputc, &res,0);
56
61
  Csprintf(&res, "</a>");
62
+ Csprintf(&res, "</li>\n");
57
63
  }
58
64
  }
59
65
  }
60
66
  }
61
67
 
62
68
  while ( last_hnumber > 0 ) {
63
- Csprintf(&res, "%*s</li>\n%*s</ul>\n",
64
- last_hnumber, "", last_hnumber, "");
65
69
  --last_hnumber;
70
+ Csprintf(&res, last_hnumber ? "%*s</ul></li>\n" : "%*s</ul>\n", last_hnumber, "");
66
71
  }
72
+
73
+ if ( (size = S(res)) > 0 ) {
74
+ EXPAND(res) = 0;
67
75
  /* HACK ALERT! HACK ALERT! HACK ALERT! */
68
- *doc = T(res); /* we know that a T(Cstring) is a character pointer */
69
- /* so we can simply pick it up and carry it away, */
70
- return S(res); /* leaving the husk of the Ctring on the stack */
71
- /* END HACK ALERT */
76
+ *doc = T(res); /* we know that a T(Cstring) is a character pointer
77
+ * so we can simply pick it up and carry it away,
78
+ * leaving the husk of the Ctring on the stack
79
+ * END HACK ALERT
80
+ */
81
+ }
82
+ else
83
+ DELETE(res);
84
+ return size;
72
85
  }
73
86
 
74
87
 
@@ -82,9 +95,9 @@ mkd_generatetoc(Document *p, FILE *out)
82
95
  int ret = EOF;
83
96
 
84
97
  if ( sz > 0 )
85
- ret = fwrite(buf, sz, 1, out);
98
+ ret = fwrite(buf, 1, sz, out);
86
99
 
87
100
  if ( buf ) free(buf);
88
101
 
89
- return ret;
102
+ return (ret == sz) ? ret : EOF;
90
103
  }
@@ -24,7 +24,7 @@
24
24
  # end
25
25
  #
26
26
  class RDiscount
27
- VERSION = '1.6.8'
27
+ VERSION = '2.0.7'
28
28
 
29
29
  # Original Markdown formatted text.
30
30
  attr_reader :text
@@ -42,6 +42,9 @@ class RDiscount
42
42
  # included for compatibility.
43
43
  attr_accessor :fold_lines
44
44
 
45
+ # Enable php markdown extra-style footnotes
46
+ attr_accessor :footnotes
47
+
45
48
  # Enable Table Of Contents generation
46
49
  attr_accessor :generate_toc
47
50
 
@@ -75,6 +78,7 @@ class RDiscount
75
78
  # * <tt>:filter_html</tt> - Do not output any raw HTML tags included in
76
79
  # the source text.
77
80
  # * <tt>:fold_lines</tt> - RedCloth compatible line folding (not used).
81
+ # * <tt>:footnotes</tt> - PHP markdown extra-style footnotes.
78
82
  # * <tt>:generate_toc</tt> - Enable Table Of Contents generation
79
83
  # * <tt>:no_image</tt> - Do not output any <tt><img></tt> tags.
80
84
  # * <tt>:no_links</tt> - Do not output any <tt><a></tt> tags.
@@ -1,12 +1,11 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'rdiscount'
3
- s.version = '1.6.8'
3
+ s.version = '2.0.7'
4
4
  s.summary = "Fast Implementation of Gruber's Markdown in C"
5
- s.date = '2011-01-25'
5
+ s.date = '2013-01-29'
6
6
  s.email = 'rtomayko@gmail.com'
7
7
  s.homepage = 'http://github.com/rtomayko/rdiscount'
8
- s.has_rdoc = true
9
- s.authors = ["Ryan Tomayko", "David Loren Parsons", "Andrew White"]
8
+ s.authors = ["Ryan Tomayko", "David Loren Parsons", "Andrew White", "David Foster"]
10
9
  # = MANIFEST =
11
10
  s.files = %w[
12
11
  BUILDING
@@ -33,6 +32,7 @@ Gem::Specification.new do |s|
33
32
  ext/mkdio.h
34
33
  ext/rdiscount.c
35
34
  ext/resource.c
35
+ ext/setup.c
36
36
  ext/tags.c
37
37
  ext/tags.h
38
38
  ext/toc.c
@@ -48,12 +48,12 @@ class RDiscountTest < Test::Unit::TestCase
48
48
  def test_that_generate_toc_sets_toc_ids
49
49
  rd = RDiscount.new("# Level 1\n\n## Level 2", :generate_toc)
50
50
  assert rd.generate_toc
51
- assert_equal %(<h1 id="Level+1\">Level 1</h1>\n\n<h2 id="Level+2\">Level 2</h2>\n), rd.to_html
51
+ assert_equal %(<a name="Level.1"></a>\n<h1>Level 1</h1>\n\n<a name="Level.2"></a>\n<h2>Level 2</h2>\n), rd.to_html
52
52
  end
53
53
 
54
54
  def test_should_get_the_generated_toc
55
55
  rd = RDiscount.new("# Level 1\n\n## Level 2", :generate_toc)
56
- exp = %(<ul>\n <li><a href="#Level+1">Level 1</a>\n <ul>\n <li><a href="#Level+2">Level 2</a> </li>\n </ul>\n </li>\n </ul>)
56
+ exp = %(<ul>\n <li><a href="#Level.1">Level 1</a></li>\n <li><ul>\n <li><a href="#Level.2">Level 2</a></li>\n </ul></li>\n</ul>)
57
57
  assert_equal exp, rd.toc_content.strip
58
58
  end
59
59
 
@@ -108,4 +108,14 @@ EOS
108
108
  rd = RDiscount.new("foo <asdf-qwerty>bar</asdf-qwerty> and <a_b>baz</a_b>")
109
109
  assert_equal "<p>foo <asdf-qwerty>bar</asdf-qwerty> and <a_b>baz</a_b></p>\n", rd.to_html
110
110
  end
111
+
112
+ def test_that_footnotes_flag_works
113
+ rd = RDiscount.new(<<EOS, :footnotes)
114
+ Obtuse text.[^1]
115
+
116
+ [^1]: Clarification
117
+ EOS
118
+ assert rd.to_html.include?('<a href="#fn:1" rel="footnote">1</a>')
119
+ end
120
+
111
121
  end
metadata CHANGED
@@ -1,35 +1,28 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rdiscount
3
- version: !ruby/object:Gem::Version
4
- hash: 31
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 6
9
- - 8
10
- version: 1.6.8
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.7
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Ryan Tomayko
14
9
  - David Loren Parsons
15
10
  - Andrew White
11
+ - David Foster
16
12
  autorequire:
17
13
  bindir: bin
18
14
  cert_chain: []
19
-
20
- date: 2011-01-25 00:00:00 -08:00
21
- default_executable:
15
+ date: 2013-01-29 00:00:00.000000000 Z
22
16
  dependencies: []
23
-
24
17
  description:
25
18
  email: rtomayko@gmail.com
26
- executables:
19
+ executables:
27
20
  - rdiscount
28
- extensions:
21
+ extensions:
29
22
  - ext/extconf.rb
30
- extra_rdoc_files:
23
+ extra_rdoc_files:
31
24
  - COPYING
32
- files:
25
+ files:
33
26
  - BUILDING
34
27
  - COPYING
35
28
  - README.markdown
@@ -53,6 +46,7 @@ files:
53
46
  - ext/mkdio.h
54
47
  - ext/rdiscount.c
55
48
  - ext/resource.c
49
+ - ext/setup.c
56
50
  - ext/tags.c
57
51
  - ext/tags.h
58
52
  - ext/toc.c
@@ -67,40 +61,30 @@ files:
67
61
  - test/benchmark.txt
68
62
  - test/markdown_test.rb
69
63
  - test/rdiscount_test.rb
70
- has_rdoc: true
71
64
  homepage: http://github.com/rtomayko/rdiscount
72
65
  licenses: []
73
-
74
66
  post_install_message:
75
67
  rdoc_options: []
76
-
77
- require_paths:
68
+ require_paths:
78
69
  - lib
79
- required_ruby_version: !ruby/object:Gem::Requirement
70
+ required_ruby_version: !ruby/object:Gem::Requirement
80
71
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
88
- required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
77
  none: false
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- hash: 3
94
- segments:
95
- - 0
96
- version: "0"
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
97
82
  requirements: []
98
-
99
83
  rubyforge_project: wink
100
- rubygems_version: 1.3.7
84
+ rubygems_version: 1.8.24
101
85
  signing_key:
102
86
  specification_version: 3
103
87
  summary: Fast Implementation of Gruber's Markdown in C
104
- test_files:
88
+ test_files:
105
89
  - test/markdown_test.rb
106
90
  - test/rdiscount_test.rb