bluecloth 2.0.7-x86-mingw32 → 2.0.11pre158-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/.gemtest +0 -0
- data/History.md +4 -0
- data/LICENSE +1 -1
- data/Manifest.txt +103 -0
- data/README.md +103 -0
- data/Rakefile +95 -301
- data/ext/VERSION +1 -1
- data/ext/bluecloth.c +69 -23
- data/ext/bluecloth.h +13 -2
- data/ext/config.h +13 -2
- data/ext/css.c +14 -5
- data/ext/cstring.h +4 -2
- data/ext/docheader.c +13 -7
- data/ext/emmatch.c +188 -0
- data/ext/extconf.rb +7 -9
- data/ext/generate.c +333 -293
- data/ext/html5.c +24 -0
- data/ext/markdown.c +326 -185
- data/ext/markdown.h +52 -29
- data/ext/mkdio.c +82 -41
- data/ext/mkdio.h +44 -23
- data/ext/resource.c +4 -2
- data/ext/setup.c +47 -0
- data/ext/tags.c +123 -0
- data/ext/tags.h +19 -0
- data/lib/1.8/bluecloth_ext.so +0 -0
- data/lib/1.9/bluecloth_ext.so +0 -0
- data/lib/bluecloth.rb +77 -42
- data/spec/bluecloth/101_changes_spec.rb +18 -21
- data/spec/bluecloth/TEMPLATE +36 -0
- data/spec/bluecloth/autolinks_spec.rb +4 -7
- data/spec/bluecloth/blockquotes_spec.rb +20 -23
- data/spec/bluecloth/code_spans_spec.rb +2 -5
- data/spec/bluecloth/emphasis_spec.rb +2 -5
- data/spec/bluecloth/entities_spec.rb +2 -5
- data/spec/bluecloth/hrules_spec.rb +2 -5
- data/spec/bluecloth/images_spec.rb +2 -5
- data/spec/bluecloth/inline_html_spec.rb +26 -66
- data/spec/bluecloth/links_spec.rb +1 -5
- data/spec/bluecloth/lists_spec.rb +2 -5
- data/spec/bluecloth/paragraphs_spec.rb +2 -5
- data/spec/bluecloth/titles_spec.rb +2 -5
- data/spec/bluecloth_spec.rb +36 -22
- data/spec/bugfix_spec.rb +90 -10
- data/spec/contributions_spec.rb +2 -3
- data/spec/discount_spec.rb +50 -10
- data/spec/lib/helpers.rb +18 -117
- data/spec/lib/matchers.rb +7 -18
- data/spec/markdowntest_spec.rb +3 -39
- metadata +257 -143
- metadata.gz.sig +0 -0
- data/ChangeLog +0 -387
- data/README +0 -81
- data/Rakefile.local +0 -41
- data/rake/191_compat.rb +0 -26
- data/rake/dependencies.rb +0 -76
- data/rake/helpers.rb +0 -435
- data/rake/hg.rb +0 -273
- data/rake/manual.rb +0 -782
- data/rake/packaging.rb +0 -123
- data/rake/publishing.rb +0 -274
- data/rake/rdoc.rb +0 -30
- data/rake/style.rb +0 -62
- data/rake/svn.rb +0 -668
- data/rake/testing.rb +0 -187
- data/rake/verifytask.rb +0 -64
data/ext/resource.c
CHANGED
@@ -140,14 +140,16 @@ ___mkd_freeLineRange(Line *anchor, Line *stop)
|
|
140
140
|
void
|
141
141
|
mkd_cleanup(Document *doc)
|
142
142
|
{
|
143
|
-
if ( doc ) {
|
143
|
+
if ( doc && (doc->magic == VALID_DOCUMENT) ) {
|
144
144
|
if ( doc->ctx ) {
|
145
145
|
___mkd_freemmiot(doc->ctx, 0);
|
146
146
|
free(doc->ctx);
|
147
147
|
}
|
148
148
|
|
149
149
|
if ( doc->code) ___mkd_freeParagraph(doc->code);
|
150
|
-
if ( doc->
|
150
|
+
if ( doc->title) ___mkd_freeLine(doc->title);
|
151
|
+
if ( doc->author) ___mkd_freeLine(doc->author);
|
152
|
+
if ( doc->date) ___mkd_freeLine(doc->date);
|
151
153
|
if ( T(doc->content) ) ___mkd_freeLines(T(doc->content));
|
152
154
|
memset(doc, 0, sizeof doc[0]);
|
153
155
|
free(doc);
|
data/ext/setup.c
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
/* markdown: a C implementation of John Gruber's Markdown markup language.
|
2
|
+
*
|
3
|
+
* Copyright (C) 2007 David L Parsons.
|
4
|
+
* The redistribution terms are provided in the COPYRIGHT file that must
|
5
|
+
* be distributed with this source code.
|
6
|
+
*/
|
7
|
+
#include "config.h"
|
8
|
+
|
9
|
+
#include <stdio.h>
|
10
|
+
#include <string.h>
|
11
|
+
#include <stdarg.h>
|
12
|
+
#include <stdlib.h>
|
13
|
+
#include <time.h>
|
14
|
+
#include <ctype.h>
|
15
|
+
|
16
|
+
#include "cstring.h"
|
17
|
+
#include "markdown.h"
|
18
|
+
#include "amalloc.h"
|
19
|
+
#include "tags.h"
|
20
|
+
|
21
|
+
static int need_to_setup = 1;
|
22
|
+
static int need_to_initrng = 1;
|
23
|
+
|
24
|
+
void
|
25
|
+
mkd_initialize()
|
26
|
+
{
|
27
|
+
|
28
|
+
if ( need_to_initrng ) {
|
29
|
+
need_to_initrng = 0;
|
30
|
+
INITRNG(time(0));
|
31
|
+
}
|
32
|
+
if ( need_to_setup ) {
|
33
|
+
need_to_setup = 0;
|
34
|
+
mkd_prepare_tags();
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
void
|
40
|
+
mkd_shlib_destructor()
|
41
|
+
{
|
42
|
+
if ( !need_to_setup ) {
|
43
|
+
need_to_setup = 1;
|
44
|
+
mkd_deallocate_tags();
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
data/ext/tags.c
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
/* block-level tags for passing html blocks through the blender
|
2
|
+
*/
|
3
|
+
#define __WITHOUT_AMALLOC 1
|
4
|
+
#include "cstring.h"
|
5
|
+
#include "tags.h"
|
6
|
+
|
7
|
+
STRING(struct kw) blocktags;
|
8
|
+
|
9
|
+
|
10
|
+
/* define a html block tag
|
11
|
+
*/
|
12
|
+
void
|
13
|
+
mkd_define_tag(char *id, int selfclose)
|
14
|
+
{
|
15
|
+
struct kw *p = &EXPAND(blocktags);
|
16
|
+
|
17
|
+
p->id = id;
|
18
|
+
p->size = strlen(id);
|
19
|
+
p->selfclose = selfclose;
|
20
|
+
}
|
21
|
+
|
22
|
+
|
23
|
+
/* case insensitive string sort (for qsort() and bsearch() of block tags)
|
24
|
+
*/
|
25
|
+
static int
|
26
|
+
casort(struct kw *a, struct kw *b)
|
27
|
+
{
|
28
|
+
if ( a->size != b->size )
|
29
|
+
return a->size - b->size;
|
30
|
+
return strncasecmp(a->id, b->id, b->size);
|
31
|
+
}
|
32
|
+
|
33
|
+
|
34
|
+
/* stupid cast to make gcc shut up about the function types being
|
35
|
+
* passed into qsort() and bsearch()
|
36
|
+
*/
|
37
|
+
typedef int (*stfu)(const void*,const void*);
|
38
|
+
|
39
|
+
|
40
|
+
/* sort the list of html block tags for later searching
|
41
|
+
*/
|
42
|
+
void
|
43
|
+
mkd_sort_tags()
|
44
|
+
{
|
45
|
+
qsort(T(blocktags), S(blocktags), sizeof(struct kw), (stfu)casort);
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
/* look for a token in the html block tag list
|
51
|
+
*/
|
52
|
+
struct kw*
|
53
|
+
mkd_search_tags(char *pat, int len)
|
54
|
+
{
|
55
|
+
struct kw key;
|
56
|
+
|
57
|
+
key.id = pat;
|
58
|
+
key.size = len;
|
59
|
+
|
60
|
+
return bsearch(&key, T(blocktags), S(blocktags), sizeof key, (stfu)casort);
|
61
|
+
}
|
62
|
+
|
63
|
+
|
64
|
+
static int populated = 0;
|
65
|
+
|
66
|
+
|
67
|
+
/* load in the standard collection of html tags that markdown supports
|
68
|
+
*/
|
69
|
+
void
|
70
|
+
mkd_prepare_tags()
|
71
|
+
{
|
72
|
+
|
73
|
+
#define KW(x) mkd_define_tag(x, 0)
|
74
|
+
#define SC(x) mkd_define_tag(x, 1)
|
75
|
+
|
76
|
+
if ( populated ) return;
|
77
|
+
populated = 1;
|
78
|
+
|
79
|
+
KW("STYLE");
|
80
|
+
KW("SCRIPT");
|
81
|
+
KW("ADDRESS");
|
82
|
+
KW("BDO");
|
83
|
+
KW("BLOCKQUOTE");
|
84
|
+
KW("CENTER");
|
85
|
+
KW("DFN");
|
86
|
+
KW("DIV");
|
87
|
+
KW("OBJECT");
|
88
|
+
KW("H1");
|
89
|
+
KW("H2");
|
90
|
+
KW("H3");
|
91
|
+
KW("H4");
|
92
|
+
KW("H5");
|
93
|
+
KW("H6");
|
94
|
+
KW("LISTING");
|
95
|
+
KW("NOBR");
|
96
|
+
KW("UL");
|
97
|
+
KW("P");
|
98
|
+
KW("OL");
|
99
|
+
KW("DL");
|
100
|
+
KW("PLAINTEXT");
|
101
|
+
KW("PRE");
|
102
|
+
KW("TABLE");
|
103
|
+
KW("WBR");
|
104
|
+
KW("XMP");
|
105
|
+
SC("HR");
|
106
|
+
SC("BR");
|
107
|
+
KW("IFRAME");
|
108
|
+
KW("MAP");
|
109
|
+
|
110
|
+
mkd_sort_tags();
|
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
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
/* block-level tags for passing html blocks through the blender
|
2
|
+
*/
|
3
|
+
#ifndef _TAGS_D
|
4
|
+
#define _TAGS_D
|
5
|
+
|
6
|
+
struct kw {
|
7
|
+
char *id;
|
8
|
+
int size;
|
9
|
+
int selfclose;
|
10
|
+
} ;
|
11
|
+
|
12
|
+
|
13
|
+
struct kw* mkd_search_tags(char *, int);
|
14
|
+
void mkd_prepare_tags();
|
15
|
+
void mkd_deallocate_tags();
|
16
|
+
void mkd_sort_tags();
|
17
|
+
void mkd_define_tag(char *, int);
|
18
|
+
|
19
|
+
#endif
|
data/lib/1.8/bluecloth_ext.so
CHANGED
Binary file
|
data/lib/1.9/bluecloth_ext.so
CHANGED
Binary file
|
data/lib/bluecloth.rb
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
#
|
19
19
|
# == Version
|
20
20
|
#
|
21
|
-
# $Id$
|
21
|
+
# $Id: bluecloth.rb,v fd890510cecf 2011/02/10 15:39:54 ged $
|
22
22
|
#
|
23
23
|
# == License
|
24
24
|
#
|
@@ -29,20 +29,31 @@
|
|
29
29
|
class BlueCloth
|
30
30
|
|
31
31
|
# Release Version
|
32
|
-
VERSION = '2.0.
|
32
|
+
VERSION = '2.0.11'
|
33
33
|
|
34
34
|
# The defaults for all supported options.
|
35
35
|
DEFAULT_OPTIONS = {
|
36
|
-
:
|
37
|
-
:
|
38
|
-
:
|
39
|
-
:
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
36
|
+
:alphalists => true,
|
37
|
+
:auto_links => false,
|
38
|
+
:definition_lists => false,
|
39
|
+
:divquotes => false,
|
40
|
+
:escape_html => false,
|
41
|
+
:expand_tabs => true,
|
42
|
+
:header_labels => false,
|
43
|
+
:mdtest_1_compat => false,
|
44
|
+
:pandoc_headers => false,
|
45
|
+
:pseudoprotocols => false,
|
46
|
+
:relaxed => false,
|
47
|
+
:remove_images => false,
|
48
|
+
:remove_links => false,
|
49
|
+
:safe_links => false,
|
50
|
+
:smartypants => true,
|
51
|
+
:strict_mode => true,
|
52
|
+
:strikethrough => true,
|
53
|
+
:superscript => false,
|
54
|
+
:tables => false,
|
55
|
+
:tagtext_mode => false,
|
56
|
+
:xml_cdata => false,
|
46
57
|
}.freeze
|
47
58
|
|
48
59
|
# The number of characters of the original markdown source to include in the
|
@@ -71,18 +82,27 @@ class BlueCloth
|
|
71
82
|
|
72
83
|
flags = 0
|
73
84
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
85
|
+
if opthash[:remove_links] then flags |= MKD_NOLINKS; end
|
86
|
+
if opthash[:remove_images] then flags |= MKD_NOIMAGE; end
|
87
|
+
if ! opthash[:smartypants] then flags |= MKD_NOPANTS; end
|
88
|
+
if opthash[:escape_html] then flags |= MKD_NOHTML; end
|
89
|
+
if opthash[:strict_mode] then flags |= MKD_STRICT; end
|
90
|
+
if opthash[:tagtext_mode] then flags |= MKD_TAGTEXT; end
|
91
|
+
if ! opthash[:pseudoprotocols] then flags |= MKD_NO_EXT; end
|
92
|
+
if opthash[:xml_cdata] then flags |= MKD_CDATA; end
|
93
|
+
if ! opthash[:superscript] then flags |= MKD_NOSUPERSCRIPT; end
|
94
|
+
if ! opthash[:relaxed] then flags |= MKD_NORELAXED; end
|
95
|
+
if ! opthash[:tables] then flags |= MKD_NOTABLES; end
|
96
|
+
if ! opthash[:strikethrough] then flags |= MKD_NOSTRIKETHROUGH; end
|
97
|
+
if opthash[:header_labels] then flags |= MKD_TOC; end
|
98
|
+
if opthash[:mdtest_1_compat] then flags |= MKD_1_COMPAT; end
|
99
|
+
if opthash[:auto_links] then flags |= MKD_AUTOLINK; end
|
100
|
+
if opthash[:safe_links] then flags |= MKD_SAFELINK; end
|
101
|
+
if ! opthash[:pandoc_headers] then flags |= MKD_NOHEADER; end
|
102
|
+
if opthash[:expand_tabs] then flags |= MKD_TABSTOP; end
|
103
|
+
if ! opthash[:divquotes] then flags |= MKD_NODIVQUOTE; end
|
104
|
+
if ! opthash[:alphalists] then flags |= MKD_NOALPHALIST; end
|
105
|
+
if ! opthash[:definition_lists] then flags |= MKD_NODLIST; end
|
86
106
|
|
87
107
|
return flags
|
88
108
|
end
|
@@ -93,18 +113,27 @@ class BlueCloth
|
|
93
113
|
flags = flags.to_i
|
94
114
|
|
95
115
|
opthash = {}
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
116
|
+
if ( flags & MKD_NOLINKS ).nonzero? then opthash[:remove_links] = true; end
|
117
|
+
if ( flags & MKD_NOIMAGE ).nonzero? then opthash[:remove_images] = true; end
|
118
|
+
if !( flags & MKD_NOPANTS ).nonzero? then opthash[:smartypants] = true; end
|
119
|
+
if ( flags & MKD_NOHTML ).nonzero? then opthash[:escape_html] = true; end
|
120
|
+
if ( flags & MKD_STRICT ).nonzero? then opthash[:strict_mode] = true; end
|
121
|
+
if ( flags & MKD_TAGTEXT ).nonzero? then opthash[:tagtext_mode] = true; end
|
122
|
+
if !( flags & MKD_NO_EXT ).nonzero? then opthash[:pseudoprotocols] = true; end
|
123
|
+
if ( flags & MKD_CDATA ).nonzero? then opthash[:xml_cdata] = true; end
|
124
|
+
if !( flags & MKD_NOSUPERSCRIPT ).nonzero? then opthash[:superscript] = true; end
|
125
|
+
if !( flags & MKD_NORELAXED ).nonzero? then opthash[:relaxed] = true; end
|
126
|
+
if !( flags & MKD_NOTABLES ).nonzero? then opthash[:tables] = true; end
|
127
|
+
if !( flags & MKD_NOSTRIKETHROUGH ).nonzero? then opthash[:strikethrough] = true; end
|
128
|
+
if ( flags & MKD_TOC ).nonzero? then opthash[:header_labels] = true; end
|
129
|
+
if ( flags & MKD_1_COMPAT ).nonzero? then opthash[:mdtest_1_compat] = true; end
|
130
|
+
if ( flags & MKD_AUTOLINK ).nonzero? then opthash[:auto_links] = true; end
|
131
|
+
if ( flags & MKD_SAFELINK ).nonzero? then opthash[:safe_links] = true; end
|
132
|
+
if !( flags & MKD_NOHEADER ).nonzero? then opthash[:pandoc_headers] = true; end
|
133
|
+
if ( flags & MKD_TABSTOP ).nonzero? then opthash[:expand_tabs] = true; end
|
134
|
+
if !( flags & MKD_NODIVQUOTE ).nonzero? then opthash[:divquotes] = true; end
|
135
|
+
if !( flags & MKD_NOALPHALIST ).nonzero? then opthash[:alphalists] = true; end
|
136
|
+
if !( flags & MKD_NODLIST ).nonzero? then opthash[:definition_lists] = true; end
|
108
137
|
|
109
138
|
return opthash
|
110
139
|
end
|
@@ -147,17 +176,23 @@ class BlueCloth
|
|
147
176
|
|
148
177
|
end # class BlueCloth
|
149
178
|
|
150
|
-
|
151
|
-
if RUBY_PLATFORM =~/(mswin|mingw)/i
|
152
|
-
major_minor = RUBY_VERSION[ /^(\d+\.\d+)/ ] or
|
153
|
-
raise "Oops, can't extract the major/minor version from #{RUBY_VERSION.dump}"
|
154
|
-
require "#{major_minor}/bluecloth_ext"
|
155
|
-
else
|
179
|
+
begin
|
156
180
|
require 'bluecloth_ext'
|
181
|
+
rescue LoadError => err
|
182
|
+
# If it's a Windows binary gem, try the <major>.<minor> subdirectory
|
183
|
+
if RUBY_PLATFORM =~/(mswin|mingw)/i
|
184
|
+
major_minor = RUBY_VERSION[ /^(\d+\.\d+)/ ] or
|
185
|
+
raise "Oops, can't extract the major/minor version from #{RUBY_VERSION.dump}"
|
186
|
+
require "#{major_minor}/bluecloth_ext"
|
187
|
+
else
|
188
|
+
raise
|
189
|
+
end
|
190
|
+
|
157
191
|
end
|
158
192
|
|
159
193
|
|
160
194
|
|
195
|
+
|
161
196
|
# Set the top-level 'Markdown' constant if it isn't already set
|
162
197
|
::Markdown = ::BlueCloth unless defined?( ::Markdown )
|
163
198
|
|
@@ -4,29 +4,26 @@
|
|
4
4
|
BEGIN {
|
5
5
|
require 'pathname'
|
6
6
|
basedir = Pathname.new( __FILE__ ).dirname.parent.parent
|
7
|
-
|
7
|
+
|
8
8
|
libdir = basedir + 'lib'
|
9
9
|
extdir = basedir + 'ext'
|
10
|
-
|
10
|
+
|
11
|
+
$LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
|
11
12
|
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
12
13
|
$LOAD_PATH.unshift( extdir ) unless $LOAD_PATH.include?( extdir )
|
13
14
|
}
|
14
15
|
|
15
|
-
require '
|
16
|
+
require 'rspec'
|
16
17
|
require 'bluecloth'
|
17
18
|
|
18
19
|
require 'spec/lib/helpers'
|
19
|
-
require 'spec/lib/constants'
|
20
|
-
require 'spec/lib/matchers'
|
21
20
|
|
22
21
|
|
23
22
|
#####################################################################
|
24
23
|
### C O N T E X T S
|
25
24
|
#####################################################################
|
26
25
|
|
27
|
-
describe BlueCloth, "1.0.1 changes" do
|
28
|
-
include BlueCloth::TestConstants,
|
29
|
-
BlueCloth::Matchers
|
26
|
+
describe BlueCloth, "after the 1.0.1 changes" do
|
30
27
|
|
31
28
|
it "doesn't touch escapes in code blocks" do
|
32
29
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
@@ -35,16 +32,16 @@ describe BlueCloth, "1.0.1 changes" do
|
|
35
32
|
formatting syntax. For example, if you wanted to surround a word with
|
36
33
|
literal asterisks (instead of an HTML `<em>` tag), you can backslashes
|
37
34
|
before the asterisks, like this:
|
38
|
-
|
35
|
+
|
39
36
|
\\*literal asterisks\\*
|
40
|
-
|
37
|
+
|
41
38
|
---
|
42
39
|
<p>Markdown allows you to use backslash escapes to generate literal
|
43
40
|
characters which would otherwise have special meaning in Markdown's
|
44
41
|
formatting syntax. For example, if you wanted to surround a word with
|
45
42
|
literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes
|
46
43
|
before the asterisks, like this:</p>
|
47
|
-
|
44
|
+
|
48
45
|
<pre><code>\\*literal asterisks\\*
|
49
46
|
</code></pre>
|
50
47
|
---
|
@@ -62,11 +59,11 @@ describe BlueCloth, "1.0.1 changes" do
|
|
62
59
|
it "converts reference-style links at or deeper than tab width to code blocks" do
|
63
60
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
64
61
|
An [example][ex] reference-style link.
|
65
|
-
|
62
|
+
|
66
63
|
[ex]: http://www.bluefi.com/
|
67
64
|
---
|
68
65
|
<p>An [example][ex] reference-style link.</p>
|
69
|
-
|
66
|
+
|
70
67
|
<pre><code>[ex]: http://www.bluefi.com/
|
71
68
|
</code></pre>
|
72
69
|
---
|
@@ -114,23 +111,23 @@ describe BlueCloth, "1.0.1 changes" do
|
|
114
111
|
it "correctly marks up header + list + code" do
|
115
112
|
the_indented_markdown( <<-"---" ).should be_transformed_into(<<-"---").without_indentation
|
116
113
|
## This is a header.
|
117
|
-
|
114
|
+
|
118
115
|
1. This is the first list item.
|
119
116
|
2. This is the second list item.
|
120
|
-
|
117
|
+
|
121
118
|
Here's some example code:
|
122
|
-
|
119
|
+
|
123
120
|
return shell_exec("echo $input | $markdown_script");
|
124
121
|
---
|
125
122
|
<h2>This is a header.</h2>
|
126
|
-
|
123
|
+
|
127
124
|
<ol>
|
128
|
-
<li>This is the first list item.</li>
|
129
|
-
<li>This is the second list item.</li>
|
125
|
+
<li> This is the first list item.</li>
|
126
|
+
<li> This is the second list item.</li>
|
130
127
|
</ol>
|
131
|
-
|
128
|
+
|
132
129
|
<p>Here's some example code:</p>
|
133
|
-
|
130
|
+
|
134
131
|
<pre><code>return shell_exec("echo $input | $markdown_script");
|
135
132
|
</code></pre>
|
136
133
|
---
|