commonmarker 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of commonmarker might be problematic. Click here for more details.

Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -8
  3. data/Rakefile +5 -0
  4. data/bin/commonmarker +0 -1
  5. data/commonmarker.gemspec +0 -1
  6. data/ext/commonmarker/cmark/README.md +1 -0
  7. data/ext/commonmarker/cmark/build/CMakeCache.txt +73 -139
  8. data/ext/commonmarker/cmark/build/CMakeFiles/2.8.10.1/CMakeCCompiler.cmake +55 -0
  9. data/ext/commonmarker/cmark/build/CMakeFiles/2.8.10.1/CMakeCXXCompiler.cmake +56 -0
  10. data/ext/commonmarker/cmark/build/CMakeFiles/{3.2.2 → 2.8.10.1}/CMakeDetermineCompilerABI_C.bin +0 -0
  11. data/ext/commonmarker/cmark/build/CMakeFiles/{3.2.2 → 2.8.10.1}/CMakeDetermineCompilerABI_CXX.bin +0 -0
  12. data/ext/commonmarker/cmark/build/CMakeFiles/{3.2.2 → 2.8.10.1}/CMakeSystem.cmake +6 -6
  13. data/ext/commonmarker/cmark/build/CMakeFiles/{3.2.2 → 2.8.10.1}/CompilerIdC/CMakeCCompilerId.c +50 -156
  14. data/ext/commonmarker/cmark/build/CMakeFiles/{3.2.2 → 2.8.10.1}/CompilerIdC/a.out +0 -0
  15. data/ext/commonmarker/cmark/build/CMakeFiles/{3.2.2 → 2.8.10.1}/CompilerIdCXX/CMakeCXXCompilerId.cpp +38 -152
  16. data/ext/commonmarker/cmark/build/CMakeFiles/{3.2.2 → 2.8.10.1}/CompilerIdCXX/a.out +0 -0
  17. data/ext/commonmarker/cmark/build/CMakeFiles/CMakeDirectoryInformation.cmake +8 -8
  18. data/ext/commonmarker/cmark/build/CMakeFiles/CMakeError.log +14 -14
  19. data/ext/commonmarker/cmark/build/CMakeFiles/CMakeOutput.log +129 -444
  20. data/ext/commonmarker/cmark/build/CMakeFiles/Makefile.cmake +38 -111
  21. data/ext/commonmarker/cmark/build/CMakeFiles/Makefile2 +6 -3
  22. data/ext/commonmarker/cmark/build/CMakeFiles/TargetDirectories.txt +2 -2
  23. data/ext/commonmarker/cmark/build/CTestTestfile.cmake +5 -5
  24. data/ext/commonmarker/cmark/build/Makefile +44 -44
  25. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/CMakeDirectoryInformation.cmake +8 -8
  26. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/DependInfo.cmake +10 -10
  27. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/build.make +15 -12
  28. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/cmake_clean.cmake +4 -4
  29. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/depend.make +2 -25
  30. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/flags.make +3 -3
  31. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/link.txt +1 -1
  32. data/ext/commonmarker/cmark/build/api_test/Makefile +44 -44
  33. data/ext/commonmarker/cmark/build/api_test/cmake_install.cmake +20 -20
  34. data/ext/commonmarker/cmark/build/cmake_install.cmake +35 -35
  35. data/ext/commonmarker/cmark/build/man/CMakeFiles/CMakeDirectoryInformation.cmake +8 -8
  36. data/ext/commonmarker/cmark/build/man/Makefile +43 -43
  37. data/ext/commonmarker/cmark/build/man/cmake_install.cmake +26 -26
  38. data/ext/commonmarker/cmark/build/src/CMakeFiles/CMakeDirectoryInformation.cmake +8 -8
  39. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/DependInfo.cmake +8 -8
  40. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/build.make +60 -57
  41. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/cmake_clean.cmake +4 -4
  42. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/depend.make +2 -177
  43. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/flags.make +5 -3
  44. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/link.txt +1 -1
  45. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/DependInfo.cmake +9 -9
  46. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/build.make +57 -55
  47. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/cmake_clean.cmake +4 -4
  48. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/depend.make +2 -169
  49. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/flags.make +2 -2
  50. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/link.txt +1 -1
  51. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/DependInfo.cmake +8 -8
  52. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/build.make +57 -54
  53. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/cmake_clean.cmake +4 -4
  54. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/cmake_clean_target.cmake +1 -1
  55. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/commonmark.c.o +0 -0
  56. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/depend.internal +1 -1
  57. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/depend.make +1 -1
  58. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/flags.make +5 -3
  59. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/html.c.o +0 -0
  60. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/inlines.c.o +0 -0
  61. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/link.txt +2 -2
  62. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/node.c.o +0 -0
  63. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/references.c.o +0 -0
  64. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/xml.c.o +0 -0
  65. data/ext/commonmarker/cmark/build/src/Makefile +45 -45
  66. data/ext/commonmarker/cmark/build/src/cmake_install.cmake +47 -44
  67. data/ext/commonmarker/cmark/build/src/cmark_export.h +2 -8
  68. data/ext/commonmarker/cmark/build/src/libcmark.a +0 -0
  69. data/ext/commonmarker/cmark/build/testdir/CMakeFiles/CMakeDirectoryInformation.cmake +8 -8
  70. data/ext/commonmarker/cmark/build/testdir/CTestTestfile.cmake +7 -7
  71. data/ext/commonmarker/cmark/build/testdir/Makefile +43 -43
  72. data/ext/commonmarker/cmark/build/testdir/cmake_install.cmake +20 -20
  73. data/ext/commonmarker/cmark/src/chunk.h +13 -4
  74. data/ext/commonmarker/cmark/src/html.c +10 -8
  75. data/ext/commonmarker/cmark/src/inlines.c +38 -29
  76. data/ext/commonmarker/cmark/src/inlines.h +2 -2
  77. data/ext/commonmarker/cmark/src/node.c +6 -21
  78. data/ext/commonmarker/cmark/src/node.h +2 -2
  79. data/ext/commonmarker/cmark/src/references.c +2 -2
  80. data/ext/commonmarker/cmark/src/references.h +2 -2
  81. data/ext/commonmarker/cmark/src/xml.c +4 -2
  82. data/ext/commonmarker/commonmarker.c +48 -7
  83. data/ext/commonmarker/commonmarker.c.orig +444 -0
  84. data/ext/commonmarker/extconf.rb +16 -4
  85. data/lib/commonmarker.rb +7 -24
  86. data/lib/commonmarker/renderer/html_renderer.rb +6 -9
  87. data/lib/commonmarker/version.rb +1 -1
  88. data/test/spec_tests.json +2192 -2192
  89. data/test/test_basics.rb +0 -4
  90. data/test/test_helper.rb +0 -1
  91. data/test/test_maliciousness.rb +4 -0
  92. data/test/test_spec.rb +3 -2
  93. metadata +12 -78
  94. data/ext/commonmarker/cmark/build/CMakeFiles/3.2.2/CMakeCCompiler.cmake +0 -63
  95. data/ext/commonmarker/cmark/build/CMakeFiles/3.2.2/CMakeCXXCompiler.cmake +0 -64
  96. data/ext/commonmarker/cmark/build/CMakeFiles/feature_tests.bin +0 -0
  97. data/ext/commonmarker/cmark/build/CMakeFiles/feature_tests.c +0 -34
  98. data/ext/commonmarker/cmark/build/CMakeFiles/feature_tests.cxx +0 -405
  99. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/C.includecache +0 -92
  100. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/CXX.includecache +0 -36
  101. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/cplusplus.cpp.o +0 -0
  102. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/depend.internal +0 -25
  103. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/harness.c.o +0 -0
  104. data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/main.c.o +0 -0
  105. data/ext/commonmarker/cmark/build/api_test/api_test +0 -0
  106. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/C.includecache +0 -422
  107. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/blocks.c.o +0 -0
  108. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/buffer.c.o +0 -0
  109. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/cmark.c.o +0 -0
  110. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/cmark_ctype.c.o +0 -0
  111. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/commonmark.c.o +0 -0
  112. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/depend.internal +0 -177
  113. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/houdini_href_e.c.o +0 -0
  114. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/houdini_html_e.c.o +0 -0
  115. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/houdini_html_u.c.o +0 -0
  116. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/html.c.o +0 -0
  117. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/inlines.c.o +0 -0
  118. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/iterator.c.o +0 -0
  119. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/main.c.o +0 -0
  120. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/man.c.o +0 -0
  121. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/node.c.o +0 -0
  122. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/references.c.o +0 -0
  123. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/scanners.c.o +0 -0
  124. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/utf8.c.o +0 -0
  125. data/ext/commonmarker/cmark/build/src/CMakeFiles/cmark.dir/xml.c.o +0 -0
  126. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/C.includecache +0 -394
  127. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/blocks.c.o +0 -0
  128. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/buffer.c.o +0 -0
  129. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/cmark.c.o +0 -0
  130. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/cmark_ctype.c.o +0 -0
  131. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/commonmark.c.o +0 -0
  132. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/depend.internal +0 -169
  133. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/houdini_href_e.c.o +0 -0
  134. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/houdini_html_e.c.o +0 -0
  135. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/houdini_html_u.c.o +0 -0
  136. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/html.c.o +0 -0
  137. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/inlines.c.o +0 -0
  138. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/iterator.c.o +0 -0
  139. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/man.c.o +0 -0
  140. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/node.c.o +0 -0
  141. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/references.c.o +0 -0
  142. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/scanners.c.o +0 -0
  143. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/utf8.c.o +0 -0
  144. data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/xml.c.o +0 -0
  145. data/ext/commonmarker/cmark/build/src/cmark +0 -0
  146. data/ext/commonmarker/cmark/build/src/libcmark.0.19.0.dylib +0 -0
  147. data/ext/commonmarker/cmark/build/src/libcmark.dylib +0 -0
  148. data/ext/commonmarker/commonmarker.bundle +0 -0
@@ -0,0 +1,444 @@
1
+ #include "commonmarker.h"
2
+ #include "cmark.h"
3
+ #include "node.h"
4
+
5
+ VALUE rb_mCommonMark;
6
+
7
+ void rb_free_c_struct(void* n) {
8
+ if (n != NULL && strcmp(cmark_node_get_type_string(n), "document") == 0) {
9
+ cmark_node_free(n);
10
+ }
11
+ }
12
+
13
+ static VALUE
14
+ rb_markdown_to_html(VALUE self, VALUE rb_text)
15
+ {
16
+ Check_Type(rb_text, T_STRING);
17
+
18
+ char *str = (char *)RSTRING_PTR(rb_text);
19
+ int len = RSTRING_LEN(rb_text);
20
+
21
+ return rb_str_new2(cmark_markdown_to_html(str, len, 0));
22
+ }
23
+
24
+ static VALUE
25
+ rb_node_new(VALUE self, VALUE rb_type)
26
+ {
27
+ Check_Type(rb_type, T_FIXNUM);
28
+ cmark_node_type node_type = (cmark_node_type) FIX2INT(rb_type);
29
+
30
+ return cmark_node_new(node_type);
31
+ }
32
+
33
+ static VALUE
34
+ rb_parse_document(VALUE self, VALUE rb_text, VALUE rb_len, VALUE rb_options)
35
+ {
36
+ Check_Type(rb_text, T_STRING);
37
+ Check_Type(rb_len, T_FIXNUM);
38
+ Check_Type(rb_options, T_FIXNUM);
39
+
40
+ char *text = (char *)RSTRING_PTR(rb_text);
41
+ int len = FIX2INT(rb_len);
42
+ int options = FIX2INT(rb_options);
43
+
44
+ cmark_node *doc = cmark_parse_document(text, len, options);
45
+
46
+ return Data_Wrap_Struct(self, NULL, rb_free_c_struct, doc);
47
+ }
48
+
49
+ static VALUE
50
+ rb_node_get_string_content(VALUE self, VALUE n)
51
+ {
52
+ cmark_node *node;
53
+ Data_Get_Struct(n, cmark_node, node);
54
+
55
+ char *text = (char *) cmark_node_get_literal(node);
56
+ if (text == NULL)
57
+ return Qnil;
58
+
59
+ return rb_str_new2(text);
60
+ }
61
+
62
+ static VALUE
63
+ rb_node_set_string_content(VALUE self, VALUE n, VALUE s)
64
+ {
65
+ Check_Type(s, T_STRING);
66
+
67
+ cmark_node *node;
68
+ Data_Get_Struct(n, cmark_node, node);
69
+ char *text = (char *)RSTRING_PTR(s);
70
+
71
+ return INT2NUM(cmark_node_set_literal(node, text));
72
+ }
73
+
74
+ static VALUE
75
+ rb_node_get_type(VALUE self, VALUE n)
76
+ {
77
+ cmark_node *node;
78
+ Data_Get_Struct(n, cmark_node, node);
79
+
80
+ return INT2NUM(cmark_node_get_type(node));
81
+ }
82
+
83
+ static VALUE
84
+ rb_node_get_type_string(VALUE self, VALUE n)
85
+ {
86
+ cmark_node *node;
87
+ Data_Get_Struct(n, cmark_node, node);
88
+
89
+ return rb_str_new2(cmark_node_get_type_string(node));
90
+ }
91
+
92
+ void
93
+ rb_node_unlink(VALUE self, VALUE n)
94
+ {
95
+ cmark_node *node;
96
+ Data_Get_Struct(n, cmark_node, node);
97
+
98
+ cmark_node_unlink(node);
99
+ }
100
+
101
+ void
102
+ rb_node_free(VALUE self, VALUE n)
103
+ {
104
+ cmark_node *node;
105
+ Data_Get_Struct(n, cmark_node, node);
106
+
107
+ rb_free_c_struct(node);
108
+ }
109
+
110
+ static VALUE
111
+ rb_node_first_child(VALUE self, VALUE n)
112
+ {
113
+ cmark_node *node;
114
+ Data_Get_Struct(n, cmark_node, node);
115
+
116
+ if (node == NULL)
117
+ return Qnil;
118
+
119
+ cmark_node *child = cmark_node_first_child(node);
120
+
121
+ return Data_Wrap_Struct(self, NULL, rb_free_c_struct, child);
122
+ }
123
+
124
+ static VALUE
125
+ rb_node_next(VALUE self, VALUE n)
126
+ {
127
+ cmark_node *node;
128
+ Data_Get_Struct(n, cmark_node, node);
129
+
130
+ if (node == NULL)
131
+ return Qnil;
132
+
133
+ cmark_node *next = cmark_node_next(node);
134
+
135
+ return Data_Wrap_Struct(self, NULL, rb_free_c_struct, next);
136
+ }
137
+
138
+ static VALUE
139
+ rb_node_insert_before(VALUE self, VALUE n1, VALUE n2)
140
+ {
141
+ cmark_node *node1;
142
+ Data_Get_Struct(n1, cmark_node, node1);
143
+
144
+ cmark_node *node2;
145
+ Data_Get_Struct(n2, cmark_node, node2);
146
+
147
+ return INT2NUM(cmark_node_insert_before(node1, node2));
148
+ }
149
+
150
+ static VALUE
151
+ rb_render_html(VALUE self, VALUE n, VALUE rb_options)
152
+ {
153
+ Check_Type(rb_options, T_FIXNUM);
154
+
155
+ int options = FIX2INT(rb_options);
156
+
157
+ cmark_node *node;
158
+ Data_Get_Struct(n, cmark_node, node);
159
+
160
+ return rb_str_new2(cmark_render_html(node, options));
161
+ }
162
+
163
+ static VALUE
164
+ rb_node_insert_after(VALUE self, VALUE n1, VALUE n2)
165
+ {
166
+ cmark_node *node1;
167
+ Data_Get_Struct(n1, cmark_node, node1);
168
+
169
+ cmark_node *node2;
170
+ Data_Get_Struct(n2, cmark_node, node2);
171
+
172
+ return INT2NUM(cmark_node_insert_after(node1, node2));
173
+ }
174
+
175
+
176
+ static VALUE
177
+ rb_node_prepend_child(VALUE self, VALUE n1, VALUE n2)
178
+ {
179
+ cmark_node *node1;
180
+ Data_Get_Struct(n1, cmark_node, node1);
181
+
182
+ cmark_node *node2;
183
+ Data_Get_Struct(n2, cmark_node, node2);
184
+
185
+ return INT2NUM(cmark_node_prepend_child(node1, node2));
186
+ }
187
+
188
+
189
+ static VALUE
190
+ rb_node_append_child(VALUE self, VALUE n1, VALUE n2)
191
+ {
192
+ cmark_node *node1;
193
+ Data_Get_Struct(n1, cmark_node, node1);
194
+
195
+ cmark_node *node2;
196
+ Data_Get_Struct(n2, cmark_node, node2);
197
+
198
+ return INT2NUM(cmark_node_append_child(node1, node2));
199
+ }
200
+
201
+
202
+ static VALUE
203
+ rb_node_last_child(VALUE self, VALUE n)
204
+ {
205
+ cmark_node *node;
206
+ Data_Get_Struct(n, cmark_node, node);
207
+
208
+ if (node == NULL)
209
+ return Qnil;
210
+
211
+ cmark_node *child = cmark_node_last_child(node);
212
+
213
+ return Data_Wrap_Struct(self, NULL, rb_free_c_struct, child);
214
+ }
215
+
216
+
217
+ static VALUE
218
+ rb_node_parent(VALUE self, VALUE n)
219
+ {
220
+ cmark_node *node;
221
+ Data_Get_Struct(n, cmark_node, node);
222
+
223
+ if (node == NULL)
224
+ return Qnil;
225
+
226
+ cmark_node *parent = cmark_node_parent(node);
227
+
228
+ return Data_Wrap_Struct(self, NULL, rb_free_c_struct, parent);
229
+ }
230
+
231
+
232
+ static VALUE
233
+ rb_node_previous(VALUE self, VALUE n)
234
+ {
235
+ cmark_node *node;
236
+ Data_Get_Struct(n, cmark_node, node);
237
+
238
+ if (node == NULL)
239
+ return Qnil;
240
+
241
+ cmark_node *previous = cmark_node_previous(node);
242
+
243
+ return Data_Wrap_Struct(self, NULL, rb_free_c_struct, previous);
244
+ }
245
+
246
+
247
+ static VALUE
248
+ rb_node_get_url(VALUE self, VALUE n)
249
+ {
250
+ cmark_node *node;
251
+ Data_Get_Struct(n, cmark_node, node);
252
+
253
+ char *text = (char *) cmark_node_get_url(node);
254
+ if (text == NULL)
255
+ return Qnil;
256
+
257
+ return rb_str_new2(text);
258
+ }
259
+
260
+ static VALUE
261
+ rb_node_set_url(VALUE self, VALUE n, VALUE s)
262
+ {
263
+ Check_Type(s, T_STRING);
264
+
265
+ cmark_node *node;
266
+ Data_Get_Struct(n, cmark_node, node);
267
+ char *text = (char *)RSTRING_PTR(s);
268
+
269
+ return INT2NUM(cmark_node_set_url(node, text));
270
+ }
271
+
272
+
273
+ static VALUE
274
+ rb_node_get_title(VALUE self, VALUE n)
275
+ {
276
+ cmark_node *node;
277
+ Data_Get_Struct(n, cmark_node, node);
278
+
279
+ char *text = (char *) cmark_node_get_title(node);
280
+ if (text == NULL)
281
+ return Qnil;
282
+
283
+ return rb_str_new2(text);
284
+ }
285
+
286
+ static VALUE
287
+ rb_node_set_title(VALUE self, VALUE n, VALUE s)
288
+ {
289
+ Check_Type(s, T_STRING);
290
+
291
+ cmark_node *node;
292
+ Data_Get_Struct(n, cmark_node, node);
293
+ char *text = (char *)RSTRING_PTR(s);
294
+
295
+ return INT2NUM(cmark_node_set_title(node, text));
296
+ }
297
+
298
+
299
+ static VALUE
300
+ rb_node_get_header_level(VALUE self, VALUE n)
301
+ {
302
+ cmark_node *node;
303
+ Data_Get_Struct(n, cmark_node, node);
304
+
305
+ return INT2NUM(cmark_node_get_header_level(node));
306
+ }
307
+
308
+ static VALUE
309
+ rb_node_set_header_level(VALUE self, VALUE n, VALUE l)
310
+ {
311
+ Check_Type(l, T_FIXNUM);
312
+
313
+ cmark_node *node;
314
+ Data_Get_Struct(n, cmark_node, node);
315
+ int level = FIX2INT(l);
316
+
317
+ return INT2NUM(cmark_node_set_header_level(node, level));
318
+ }
319
+
320
+
321
+ static VALUE
322
+ rb_node_get_list_type(VALUE self, VALUE n)
323
+ {
324
+ cmark_node *node;
325
+ Data_Get_Struct(n, cmark_node, node);
326
+
327
+ return INT2NUM(cmark_node_get_list_type(node));
328
+ }
329
+
330
+ static VALUE
331
+ rb_node_set_list_type(VALUE self, VALUE n, VALUE t)
332
+ {
333
+ Check_Type(t, T_FIXNUM);
334
+
335
+ cmark_node *node;
336
+ Data_Get_Struct(n, cmark_node, node);
337
+ int type = FIX2INT(t);
338
+
339
+ return INT2NUM(cmark_node_set_list_type(node, type));
340
+ }
341
+
342
+
343
+ static VALUE
344
+ rb_node_get_list_start(VALUE self, VALUE n)
345
+ {
346
+ cmark_node *node;
347
+ Data_Get_Struct(n, cmark_node, node);
348
+
349
+ return INT2NUM(cmark_node_get_list_start(node));
350
+ }
351
+
352
+ static VALUE
353
+ rb_node_set_list_start(VALUE self, VALUE n, VALUE s)
354
+ {
355
+ Check_Type(s, T_FIXNUM);
356
+
357
+ cmark_node *node;
358
+ Data_Get_Struct(n, cmark_node, node);
359
+ int start = FIX2INT(s);
360
+
361
+ return INT2NUM(cmark_node_set_list_start(node, start));
362
+ }
363
+
364
+
365
+ static VALUE
366
+ rb_node_get_list_tight(VALUE self, VALUE n)
367
+ {
368
+ cmark_node *node;
369
+ Data_Get_Struct(n, cmark_node, node);
370
+ int flag = cmark_node_get_list_tight(node);
371
+
372
+ return flag ? Qtrue : Qfalse;
373
+ }
374
+
375
+ static VALUE
376
+ rb_node_set_list_tight(VALUE self, VALUE n, VALUE t)
377
+ {
378
+ cmark_node *node;
379
+ Data_Get_Struct(n, cmark_node, node);
380
+ int tight = RTEST(t);
381
+
382
+ return INT2NUM(cmark_node_set_list_tight(node, tight));
383
+ }
384
+
385
+
386
+ static VALUE
387
+ rb_node_get_fence_info(VALUE self, VALUE n)
388
+ {
389
+ cmark_node *node;
390
+ Data_Get_Struct(n, cmark_node, node);
391
+
392
+ return rb_str_new2(cmark_node_get_fence_info(node));
393
+ }
394
+
395
+ static VALUE
396
+ rb_node_set_fence_info(VALUE self, VALUE n, VALUE s)
397
+ {
398
+ Check_Type(s, T_STRING);
399
+
400
+ cmark_node *node;
401
+ Data_Get_Struct(n, cmark_node, node);
402
+ char *text = (char *)RSTRING_PTR(s);
403
+
404
+ return INT2NUM(cmark_node_set_fence_info(node, text));
405
+ }
406
+
407
+ __attribute__((visibility("default")))
408
+ void Init_commonmarker()
409
+ {
410
+ rb_mCommonMark = rb_define_class("CMark", rb_cObject);
411
+ rb_define_singleton_method(rb_mCommonMark, "markdown_to_html", rb_markdown_to_html, 1);
412
+ rb_define_singleton_method(rb_mCommonMark, "node_new", rb_node_new, 1);
413
+ rb_define_singleton_method(rb_mCommonMark, "parse_document", rb_parse_document, 3);
414
+ rb_define_singleton_method(rb_mCommonMark, "node_get_string_content", rb_node_get_string_content, 1);
415
+ rb_define_singleton_method(rb_mCommonMark, "node_set_string_content", rb_node_set_string_content, 2);
416
+ rb_define_singleton_method(rb_mCommonMark, "node_get_type", rb_node_get_type, 1);
417
+ rb_define_singleton_method(rb_mCommonMark, "node_get_type_string", rb_node_get_type_string, 1);
418
+ rb_define_singleton_method(rb_mCommonMark, "node_unlink", rb_node_unlink, 1);
419
+ rb_define_singleton_method(rb_mCommonMark, "node_free", rb_node_free, 1);
420
+ rb_define_singleton_method(rb_mCommonMark, "node_first_child", rb_node_first_child, 1);
421
+ rb_define_singleton_method(rb_mCommonMark, "node_next", rb_node_next, 1);
422
+ rb_define_singleton_method(rb_mCommonMark, "node_insert_before", rb_node_insert_before, 2);
423
+ rb_define_singleton_method(rb_mCommonMark, "render_html", rb_render_html, 2);
424
+ rb_define_singleton_method(rb_mCommonMark, "node_insert_after", rb_node_insert_after, 2);
425
+ rb_define_singleton_method(rb_mCommonMark, "node_prepend_child", rb_node_prepend_child, 2);
426
+ rb_define_singleton_method(rb_mCommonMark, "node_append_child", rb_node_append_child, 2);
427
+ rb_define_singleton_method(rb_mCommonMark, "node_last_child", rb_node_last_child, 1);
428
+ rb_define_singleton_method(rb_mCommonMark, "node_parent", rb_node_parent, 1);
429
+ rb_define_singleton_method(rb_mCommonMark, "node_previous", rb_node_previous, 1);
430
+ rb_define_singleton_method(rb_mCommonMark, "node_get_url", rb_node_get_url, 1);
431
+ rb_define_singleton_method(rb_mCommonMark, "node_set_url", rb_node_set_url, 2);
432
+ rb_define_singleton_method(rb_mCommonMark, "node_get_title", rb_node_get_title, 1);
433
+ rb_define_singleton_method(rb_mCommonMark, "node_set_title", rb_node_set_title, 2);
434
+ rb_define_singleton_method(rb_mCommonMark, "node_get_header_level", rb_node_get_header_level, 1);
435
+ rb_define_singleton_method(rb_mCommonMark, "node_set_header_level", rb_node_set_header_level, 2);
436
+ rb_define_singleton_method(rb_mCommonMark, "node_get_list_type", rb_node_get_list_type, 1);
437
+ rb_define_singleton_method(rb_mCommonMark, "node_set_list_type", rb_node_set_list_type, 2);
438
+ rb_define_singleton_method(rb_mCommonMark, "node_get_list_start", rb_node_get_list_start, 1);
439
+ rb_define_singleton_method(rb_mCommonMark, "node_set_list_start", rb_node_set_list_start, 2);
440
+ rb_define_singleton_method(rb_mCommonMark, "node_get_list_tight", rb_node_get_list_tight, 1);
441
+ rb_define_singleton_method(rb_mCommonMark, "node_set_list_tight", rb_node_set_list_tight, 2);
442
+ rb_define_singleton_method(rb_mCommonMark, "node_get_fence_info", rb_node_get_fence_info, 1);
443
+ rb_define_singleton_method(rb_mCommonMark, "node_set_fence_info", rb_node_set_fence_info, 2);
444
+ }
@@ -3,6 +3,9 @@ require 'fileutils'
3
3
  require 'rbconfig'
4
4
  host_os = RbConfig::CONFIG['host_os']
5
5
 
6
+ LIBDIR = RbConfig::CONFIG['libdir']
7
+ INCLUDEDIR = RbConfig::CONFIG['includedir']
8
+
6
9
  unless find_executable('cmake')
7
10
  $stderr.puts "\n\n\n[ERROR]: cmake is required and not installed. Get it here: http://www.cmake.org/\n\n"
8
11
  exit 1
@@ -20,13 +23,22 @@ end
20
23
  FileUtils.mkdir_p(CMARK_BUILD_DIR)
21
24
 
22
25
  Dir.chdir(CMARK_BUILD_DIR) do
23
- system 'cmake ..'
24
- system 'make'
26
+ system 'cmake .. -DCMAKE_C_FLAGS=-fPIC'
27
+ system 'make libcmark_static'
25
28
  # rake-compiler seems to complain about this line, not sure why it's messing with it
26
29
  FileUtils.rm_rf(File.join(CMARK_BUILD_DIR, 'Testing', 'Temporary'))
27
30
  end
28
31
 
29
- $LDFLAGS << " -Wl,-rpath,#{CMARK_BUILD_DIR}/src -L#{CMARK_BUILD_DIR}/src -lcmark"
30
- $CFLAGS << " -I#{CMARK_DIR}/src -I#{CMARK_BUILD_DIR}/src"
32
+ HEADER_DIRS = [INCLUDEDIR]
33
+ LIB_DIRS = [LIBDIR, "#{CMARK_BUILD_DIR}/src"]
34
+
35
+ dir_config('cmark', HEADER_DIRS, LIB_DIRS)
36
+
37
+ unless find_library('cmark', 'cmark_parse_document')
38
+ abort 'libcmark is missing.'
39
+ end
40
+
41
+ $LDFLAGS << " -L#{CMARK_BUILD_DIR}/src -lcmark"
42
+ $CFLAGS << " -O2 -I#{CMARK_DIR}/src -I#{CMARK_BUILD_DIR}/src"
31
43
 
32
44
  create_makefile('commonmarker/commonmarker')