mathematical 0.0.2 → 0.0.3

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.
Files changed (263) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +52 -10
  3. data/Rakefile +42 -3
  4. data/lib/mathematical.rb +5 -4
  5. data/lib/mathematical/mathematical.bundle +0 -0
  6. data/lib/mathematical/render.rb +6 -5
  7. data/lib/mathematical/version.rb +1 -1
  8. data/mathematical.gemspec +5 -5
  9. metadata +14 -296
  10. data/.gitignore +0 -24
  11. data/.gitmodules +0 -0
  12. data/Gemfile +0 -4
  13. data/ext/mathematical/README.itex2MML.md +0 -11
  14. data/ext/mathematical/README.lasem.md +0 -11
  15. data/ext/mathematical/extconf.rb +0 -51
  16. data/ext/mathematical/itex2MML.h +0 -63
  17. data/ext/mathematical/lasemrender.c +0 -257
  18. data/ext/mathematical/lex.yy.c +0 -6548
  19. data/ext/mathematical/lsm.c +0 -30
  20. data/ext/mathematical/lsm.h +0 -36
  21. data/ext/mathematical/lsmattributes.c +0 -279
  22. data/ext/mathematical/lsmattributes.h +0 -75
  23. data/ext/mathematical/lsmcairo.c +0 -598
  24. data/ext/mathematical/lsmcairo.h +0 -51
  25. data/ext/mathematical/lsmdebug.c +0 -179
  26. data/ext/mathematical/lsmdebug.h +0 -76
  27. data/ext/mathematical/lsmdom.h +0 -43
  28. data/ext/mathematical/lsmdomcharacterdata.c +0 -114
  29. data/ext/mathematical/lsmdomcharacterdata.h +0 -59
  30. data/ext/mathematical/lsmdomdocument.c +0 -292
  31. data/ext/mathematical/lsmdomdocument.h +0 -82
  32. data/ext/mathematical/lsmdomdocumentfragment.c +0 -81
  33. data/ext/mathematical/lsmdomdocumentfragment.h +0 -55
  34. data/ext/mathematical/lsmdomelement.c +0 -148
  35. data/ext/mathematical/lsmdomelement.h +0 -62
  36. data/ext/mathematical/lsmdomentities.c +0 -2155
  37. data/ext/mathematical/lsmdomentities.h +0 -35
  38. data/ext/mathematical/lsmdomenumtypes.c +0 -99
  39. data/ext/mathematical/lsmdomenumtypes.c.template +0 -39
  40. data/ext/mathematical/lsmdomenumtypes.h +0 -26
  41. data/ext/mathematical/lsmdomenumtypes.h.template +0 -26
  42. data/ext/mathematical/lsmdomimplementation.c +0 -82
  43. data/ext/mathematical/lsmdomimplementation.h +0 -41
  44. data/ext/mathematical/lsmdomnamednodemap.c +0 -118
  45. data/ext/mathematical/lsmdomnamednodemap.h +0 -64
  46. data/ext/mathematical/lsmdomnode.c +0 -725
  47. data/ext/mathematical/lsmdomnode.h +0 -120
  48. data/ext/mathematical/lsmdomnodelist.c +0 -70
  49. data/ext/mathematical/lsmdomnodelist.h +0 -58
  50. data/ext/mathematical/lsmdomparser.c +0 -461
  51. data/ext/mathematical/lsmdomparser.h +0 -54
  52. data/ext/mathematical/lsmdomtext.c +0 -82
  53. data/ext/mathematical/lsmdomtext.h +0 -55
  54. data/ext/mathematical/lsmdomtypes.h +0 -44
  55. data/ext/mathematical/lsmdomview.c +0 -422
  56. data/ext/mathematical/lsmdomview.h +0 -94
  57. data/ext/mathematical/lsmmathml.h +0 -66
  58. data/ext/mathematical/lsmmathmlactionelement.c +0 -93
  59. data/ext/mathematical/lsmmathmlactionelement.h +0 -57
  60. data/ext/mathematical/lsmmathmlaligngroupelement.c +0 -102
  61. data/ext/mathematical/lsmmathmlaligngroupelement.h +0 -56
  62. data/ext/mathematical/lsmmathmlalignmarkelement.c +0 -102
  63. data/ext/mathematical/lsmmathmlalignmarkelement.h +0 -56
  64. data/ext/mathematical/lsmmathmlattributes.c +0 -197
  65. data/ext/mathematical/lsmmathmlattributes.h +0 -126
  66. data/ext/mathematical/lsmmathmldocument.c +0 -306
  67. data/ext/mathematical/lsmmathmldocument.h +0 -61
  68. data/ext/mathematical/lsmmathmlelement.c +0 -491
  69. data/ext/mathematical/lsmmathmlelement.h +0 -107
  70. data/ext/mathematical/lsmmathmlenums.c +0 -429
  71. data/ext/mathematical/lsmmathmlenums.h +0 -182
  72. data/ext/mathematical/lsmmathmlenumtypes.c +0 -666
  73. data/ext/mathematical/lsmmathmlenumtypes.c.template +0 -39
  74. data/ext/mathematical/lsmmathmlenumtypes.h +0 -90
  75. data/ext/mathematical/lsmmathmlenumtypes.h.template +0 -26
  76. data/ext/mathematical/lsmmathmlerrorelement.c +0 -58
  77. data/ext/mathematical/lsmmathmlerrorelement.h +0 -56
  78. data/ext/mathematical/lsmmathmlfencedelement.c +0 -178
  79. data/ext/mathematical/lsmmathmlfencedelement.h +0 -65
  80. data/ext/mathematical/lsmmathmlfractionelement.c +0 -253
  81. data/ext/mathematical/lsmmathmlfractionelement.h +0 -62
  82. data/ext/mathematical/lsmmathmlglyphtableams.c +0 -597
  83. data/ext/mathematical/lsmmathmlglyphtableams.h +0 -45
  84. data/ext/mathematical/lsmmathmlitexelement.c +0 -187
  85. data/ext/mathematical/lsmmathmlitexelement.h +0 -60
  86. data/ext/mathematical/lsmmathmllayoututils.c +0 -191
  87. data/ext/mathematical/lsmmathmllayoututils.h +0 -58
  88. data/ext/mathematical/lsmmathmlmathelement.c +0 -204
  89. data/ext/mathematical/lsmmathmlmathelement.h +0 -81
  90. data/ext/mathematical/lsmmathmloperatordictionary.c +0 -3332
  91. data/ext/mathematical/lsmmathmloperatordictionary.h +0 -54
  92. data/ext/mathematical/lsmmathmloperatorelement.c +0 -307
  93. data/ext/mathematical/lsmmathmloperatorelement.h +0 -73
  94. data/ext/mathematical/lsmmathmlpaddedelement.c +0 -58
  95. data/ext/mathematical/lsmmathmlpaddedelement.h +0 -56
  96. data/ext/mathematical/lsmmathmlphantomelement.c +0 -71
  97. data/ext/mathematical/lsmmathmlphantomelement.h +0 -56
  98. data/ext/mathematical/lsmmathmlpresentationcontainer.c +0 -43
  99. data/ext/mathematical/lsmmathmlpresentationcontainer.h +0 -54
  100. data/ext/mathematical/lsmmathmlpresentationtoken.c +0 -303
  101. data/ext/mathematical/lsmmathmlpresentationtoken.h +0 -83
  102. data/ext/mathematical/lsmmathmlradicalelement.c +0 -266
  103. data/ext/mathematical/lsmmathmlradicalelement.h +0 -71
  104. data/ext/mathematical/lsmmathmlrowelement.c +0 -58
  105. data/ext/mathematical/lsmmathmlrowelement.h +0 -56
  106. data/ext/mathematical/lsmmathmlscriptelement.c +0 -282
  107. data/ext/mathematical/lsmmathmlscriptelement.h +0 -78
  108. data/ext/mathematical/lsmmathmlsemanticselement.c +0 -82
  109. data/ext/mathematical/lsmmathmlsemanticselement.h +0 -56
  110. data/ext/mathematical/lsmmathmlspaceelement.c +0 -142
  111. data/ext/mathematical/lsmmathmlspaceelement.h +0 -60
  112. data/ext/mathematical/lsmmathmlstringelement.c +0 -123
  113. data/ext/mathematical/lsmmathmlstringelement.h +0 -58
  114. data/ext/mathematical/lsmmathmlstyle.c +0 -130
  115. data/ext/mathematical/lsmmathmlstyle.h +0 -81
  116. data/ext/mathematical/lsmmathmlstyleelement.c +0 -307
  117. data/ext/mathematical/lsmmathmlstyleelement.h +0 -87
  118. data/ext/mathematical/lsmmathmltablecellelement.c +0 -122
  119. data/ext/mathematical/lsmmathmltablecellelement.h +0 -62
  120. data/ext/mathematical/lsmmathmltableelement.c +0 -545
  121. data/ext/mathematical/lsmmathmltableelement.h +0 -78
  122. data/ext/mathematical/lsmmathmltablerowelement.c +0 -120
  123. data/ext/mathematical/lsmmathmltablerowelement.h +0 -64
  124. data/ext/mathematical/lsmmathmltraits.c +0 -819
  125. data/ext/mathematical/lsmmathmltraits.h +0 -119
  126. data/ext/mathematical/lsmmathmltypes.h +0 -66
  127. data/ext/mathematical/lsmmathmlunderoverelement.c +0 -485
  128. data/ext/mathematical/lsmmathmlunderoverelement.h +0 -82
  129. data/ext/mathematical/lsmmathmlutils.c +0 -170
  130. data/ext/mathematical/lsmmathmlutils.h +0 -50
  131. data/ext/mathematical/lsmmathmlview.c +0 -1048
  132. data/ext/mathematical/lsmmathmlview.h +0 -164
  133. data/ext/mathematical/lsmproperties.c +0 -418
  134. data/ext/mathematical/lsmproperties.h +0 -85
  135. data/ext/mathematical/lsmstr.c +0 -231
  136. data/ext/mathematical/lsmstr.h +0 -114
  137. data/ext/mathematical/lsmsvg.h +0 -67
  138. data/ext/mathematical/lsmsvgaelement.c +0 -73
  139. data/ext/mathematical/lsmsvgaelement.h +0 -55
  140. data/ext/mathematical/lsmsvgattributes.h +0 -113
  141. data/ext/mathematical/lsmsvgcircleelement.c +0 -153
  142. data/ext/mathematical/lsmsvgcircleelement.h +0 -59
  143. data/ext/mathematical/lsmsvgclippathelement.c +0 -134
  144. data/ext/mathematical/lsmsvgclippathelement.h +0 -59
  145. data/ext/mathematical/lsmsvgcolors.c +0 -212
  146. data/ext/mathematical/lsmsvgcolors.h +0 -39
  147. data/ext/mathematical/lsmsvgdefselement.c +0 -74
  148. data/ext/mathematical/lsmsvgdefselement.h +0 -55
  149. data/ext/mathematical/lsmsvgdocument.c +0 -230
  150. data/ext/mathematical/lsmsvgdocument.h +0 -58
  151. data/ext/mathematical/lsmsvgelement.c +0 -367
  152. data/ext/mathematical/lsmsvgelement.h +0 -81
  153. data/ext/mathematical/lsmsvgellipseelement.c +0 -158
  154. data/ext/mathematical/lsmsvgellipseelement.h +0 -60
  155. data/ext/mathematical/lsmsvgenums.c +0 -544
  156. data/ext/mathematical/lsmsvgenums.h +0 -357
  157. data/ext/mathematical/lsmsvgenumtypes.c +0 -1083
  158. data/ext/mathematical/lsmsvgenumtypes.c.template +0 -39
  159. data/ext/mathematical/lsmsvgenumtypes.h +0 -111
  160. data/ext/mathematical/lsmsvgenumtypes.h.template +0 -26
  161. data/ext/mathematical/lsmsvgfilterblend.c +0 -105
  162. data/ext/mathematical/lsmsvgfilterblend.h +0 -58
  163. data/ext/mathematical/lsmsvgfiltercomposite.c +0 -109
  164. data/ext/mathematical/lsmsvgfiltercomposite.h +0 -58
  165. data/ext/mathematical/lsmsvgfilterelement.c +0 -266
  166. data/ext/mathematical/lsmsvgfilterelement.h +0 -66
  167. data/ext/mathematical/lsmsvgfilterflood.c +0 -86
  168. data/ext/mathematical/lsmsvgfilterflood.h +0 -55
  169. data/ext/mathematical/lsmsvgfiltergaussianblur.c +0 -114
  170. data/ext/mathematical/lsmsvgfiltergaussianblur.h +0 -57
  171. data/ext/mathematical/lsmsvgfiltermerge.c +0 -98
  172. data/ext/mathematical/lsmsvgfiltermerge.h +0 -55
  173. data/ext/mathematical/lsmsvgfiltermergenode.c +0 -87
  174. data/ext/mathematical/lsmsvgfiltermergenode.h +0 -57
  175. data/ext/mathematical/lsmsvgfilteroffset.c +0 -112
  176. data/ext/mathematical/lsmsvgfilteroffset.h +0 -58
  177. data/ext/mathematical/lsmsvgfilterprimitive.c +0 -168
  178. data/ext/mathematical/lsmsvgfilterprimitive.h +0 -66
  179. data/ext/mathematical/lsmsvgfilterspecularlighting.c +0 -127
  180. data/ext/mathematical/lsmsvgfilterspecularlighting.h +0 -60
  181. data/ext/mathematical/lsmsvgfiltersurface.c +0 -455
  182. data/ext/mathematical/lsmsvgfiltersurface.h +0 -66
  183. data/ext/mathematical/lsmsvgfiltertile.c +0 -102
  184. data/ext/mathematical/lsmsvgfiltertile.h +0 -57
  185. data/ext/mathematical/lsmsvggelement.c +0 -73
  186. data/ext/mathematical/lsmsvggelement.h +0 -55
  187. data/ext/mathematical/lsmsvggradientelement.c +0 -151
  188. data/ext/mathematical/lsmsvggradientelement.h +0 -68
  189. data/ext/mathematical/lsmsvgimageelement.c +0 -261
  190. data/ext/mathematical/lsmsvgimageelement.h +0 -67
  191. data/ext/mathematical/lsmsvglength.c +0 -93
  192. data/ext/mathematical/lsmsvglength.h +0 -59
  193. data/ext/mathematical/lsmsvglineargradientelement.c +0 -271
  194. data/ext/mathematical/lsmsvglineargradientelement.h +0 -60
  195. data/ext/mathematical/lsmsvglineelement.c +0 -153
  196. data/ext/mathematical/lsmsvglineelement.h +0 -60
  197. data/ext/mathematical/lsmsvgmarkerelement.c +0 -266
  198. data/ext/mathematical/lsmsvgmarkerelement.h +0 -74
  199. data/ext/mathematical/lsmsvgmaskelement.c +0 -232
  200. data/ext/mathematical/lsmsvgmaskelement.h +0 -64
  201. data/ext/mathematical/lsmsvgmatrix.c +0 -205
  202. data/ext/mathematical/lsmsvgmatrix.h +0 -59
  203. data/ext/mathematical/lsmsvgpathelement.c +0 -115
  204. data/ext/mathematical/lsmsvgpathelement.h +0 -59
  205. data/ext/mathematical/lsmsvgpatternelement.c +0 -398
  206. data/ext/mathematical/lsmsvgpatternelement.h +0 -69
  207. data/ext/mathematical/lsmsvgpolygonelement.c +0 -106
  208. data/ext/mathematical/lsmsvgpolygonelement.h +0 -57
  209. data/ext/mathematical/lsmsvgpolylineelement.c +0 -106
  210. data/ext/mathematical/lsmsvgpolylineelement.h +0 -57
  211. data/ext/mathematical/lsmsvgradialgradientelement.c +0 -323
  212. data/ext/mathematical/lsmsvgradialgradientelement.h +0 -61
  213. data/ext/mathematical/lsmsvgrectelement.c +0 -184
  214. data/ext/mathematical/lsmsvgrectelement.h +0 -62
  215. data/ext/mathematical/lsmsvgstopelement.c +0 -106
  216. data/ext/mathematical/lsmsvgstopelement.h +0 -57
  217. data/ext/mathematical/lsmsvgstyle.c +0 -558
  218. data/ext/mathematical/lsmsvgstyle.h +0 -217
  219. data/ext/mathematical/lsmsvgsvgelement.c +0 -260
  220. data/ext/mathematical/lsmsvgsvgelement.h +0 -71
  221. data/ext/mathematical/lsmsvgswitchelement.c +0 -103
  222. data/ext/mathematical/lsmsvgswitchelement.h +0 -55
  223. data/ext/mathematical/lsmsvgsymbolelement.c +0 -74
  224. data/ext/mathematical/lsmsvgsymbolelement.h +0 -55
  225. data/ext/mathematical/lsmsvgtextelement.c +0 -170
  226. data/ext/mathematical/lsmsvgtextelement.h +0 -58
  227. data/ext/mathematical/lsmsvgtraits.c +0 -1158
  228. data/ext/mathematical/lsmsvgtraits.h +0 -103
  229. data/ext/mathematical/lsmsvgtransformable.c +0 -106
  230. data/ext/mathematical/lsmsvgtransformable.h +0 -54
  231. data/ext/mathematical/lsmsvgtspanelement.c +0 -143
  232. data/ext/mathematical/lsmsvgtspanelement.h +0 -58
  233. data/ext/mathematical/lsmsvgtypes.h +0 -77
  234. data/ext/mathematical/lsmsvguseelement.c +0 -237
  235. data/ext/mathematical/lsmsvguseelement.h +0 -69
  236. data/ext/mathematical/lsmsvgview.c +0 -2400
  237. data/ext/mathematical/lsmsvgview.h +0 -168
  238. data/ext/mathematical/lsmtraits.c +0 -119
  239. data/ext/mathematical/lsmtraits.h +0 -49
  240. data/ext/mathematical/lsmtypes.h +0 -36
  241. data/ext/mathematical/lsmutils.c +0 -54
  242. data/ext/mathematical/lsmutils.h +0 -56
  243. data/ext/mathematical/mathematical.c +0 -122
  244. data/ext/mathematical/y.tab.c +0 -6179
  245. data/ext/mathematical/y.tab.h +0 -389
  246. data/script/bench +0 -21
  247. data/script/bootstrap +0 -9
  248. data/script/single_test +0 -7
  249. data/test/mathematical/basic_test.rb +0 -38
  250. data/test/mathematical/fixtures/after/brackets_display.html +0 -1
  251. data/test/mathematical/fixtures/after/dollar_sign_inline.html +0 -1
  252. data/test/mathematical/fixtures/after/equation_display.html +0 -1
  253. data/test/mathematical/fixtures/after/multiple_dollar_inline.html +0 -1
  254. data/test/mathematical/fixtures/after/parens_inline.html +0 -1
  255. data/test/mathematical/fixtures/before/brackets_display.text +0 -1
  256. data/test/mathematical/fixtures/before/dollar_sign_inline.text +0 -1
  257. data/test/mathematical/fixtures/before/equation_display.text +0 -1
  258. data/test/mathematical/fixtures/before/multiple_dollar_inline.text +0 -1
  259. data/test/mathematical/fixtures/before/parens_inline.text +0 -1
  260. data/test/mathematical/fixtures/performance/big_file.text +0 -1767
  261. data/test/mathematical/fixtures_test.rb +0 -31
  262. data/test/mathematical/performance_test.rb +0 -13
  263. data/test/test_helper.rb +0 -4
@@ -1,120 +0,0 @@
1
- /* Lasem
2
- *
3
- * Copyright © 2007-2008 Emmanuel Pacaud
4
- *
5
- * This library is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU Lesser General Public
7
- * License as published by the Free Software Foundation; either
8
- * version 2 of the License, or (at your option) any later version.
9
- *
10
- * This library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- * Lesser General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General
16
- * Public License along with this library; if not, write to the
17
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18
- * Boston, MA 02111-1307, USA.
19
- *
20
- * Author:
21
- * Emmanuel Pacaud <emmanuel@gnome.org>
22
- */
23
-
24
- #ifndef LSM_DOM_NODE_H
25
- #define LSM_DOM_NODE_H
26
-
27
- #include <lsmdomtypes.h>
28
- #include <gio/gio.h>
29
-
30
- G_BEGIN_DECLS
31
-
32
- typedef enum {
33
- LSM_DOM_NODE_TYPE_ELEMENT_NODE = 1,
34
- LSM_DOM_NODE_TYPE_ATTRIBUTE_NODE,
35
- LSM_DOM_NODE_TYPE_TEXT_NODE,
36
- LSM_DOM_NODE_TYPE_CDATA_SECTION_NODE,
37
- LSM_DOM_NODE_TYPE_ENTITY_REFERENCE_NODE,
38
- LSM_DOM_NODE_TYPE_ENTITY_NODE,
39
- LSM_DOM_NODE_TYPE_PROCESSING_INSTRUCTION_NODE,
40
- LSM_DOM_NODE_TYPE_COMMENT_NODE,
41
- LSM_DOM_NODE_TYPE_DOCUMENT_NODE,
42
- LSM_DOM_NODE_TYPE_DOCUMENT_TYPE_NODE,
43
- LSM_DOM_NODE_TYPE_DOCUMENT_FRAGMENT_NODE,
44
- LSM_DOM_NODE_TYPE_NOTATION_NODE
45
- } LsmDomNodeType;
46
-
47
- #define LSM_TYPE_DOM_NODE (lsm_dom_node_get_type ())
48
- #define LSM_DOM_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LSM_TYPE_DOM_NODE, LsmDomNode))
49
- #define LSM_DOM_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LSM_TYPE_DOM_NODE, LsmDomNodeClass))
50
- #define LSM_IS_DOM_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LSM_TYPE_DOM_NODE))
51
- #define LSM_IS_DOM_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LSM_TYPE_DOM_NODE))
52
- #define LSM_DOM_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LSM_TYPE_DOM_NODE, LsmDomNodeClass))
53
-
54
- typedef struct _LsmDomNodeClass LsmDomNodeClass;
55
-
56
- struct _LsmDomNode {
57
- GObject object;
58
-
59
- LsmDomNode *next_sibling;
60
- LsmDomNode *previous_sibling;
61
- LsmDomNode *parent_node;
62
- LsmDomNode *first_child;
63
- LsmDomNode *last_child;
64
- };
65
-
66
- struct _LsmDomNodeClass {
67
- GObjectClass parent_class;
68
-
69
- /* DOM node virtuals */
70
-
71
- const char* (*get_node_name) (LsmDomNode* self);
72
- const char* (*get_node_value) (LsmDomNode* self);
73
- void (*set_node_value) (LsmDomNode* self, const char* new_value);
74
- LsmDomNodeType (*get_node_type) (LsmDomNode* self);
75
-
76
- /* Validation virtuals */
77
-
78
- gboolean (*can_append_child) (LsmDomNode *self, LsmDomNode *new_child);
79
-
80
- /* Implementation virtuals */
81
-
82
- void (*post_new_child) (LsmDomNode *parent, LsmDomNode *child);
83
- void (*pre_remove_child) (LsmDomNode *parent, LsmDomNode *child);
84
- void (*changed) (LsmDomNode *self);
85
- gboolean (*child_changed) (LsmDomNode *self, LsmDomNode *child);
86
-
87
- void (*write_to_stream) (LsmDomNode *self, GOutputStream *stream, GError **error);
88
- };
89
-
90
- GType lsm_dom_node_get_type (void);
91
-
92
- const char * lsm_dom_node_get_node_name (LsmDomNode* self);
93
- const char * lsm_dom_node_get_node_value (LsmDomNode* self);
94
- void lsm_dom_node_set_node_value (LsmDomNode* self, const char* new_value);
95
- LsmDomNodeType lsm_dom_node_get_node_type (LsmDomNode* self);
96
- LsmDomNode * lsm_dom_node_get_parent_node (LsmDomNode* self);
97
- LsmDomNodeList * lsm_dom_node_get_child_nodes (LsmDomNode* self);
98
- LsmDomNode * lsm_dom_node_get_first_child (LsmDomNode* self);
99
- LsmDomNode * lsm_dom_node_get_last_child (LsmDomNode* self);
100
- LsmDomNode * lsm_dom_node_get_previous_sibling (LsmDomNode* self);
101
- LsmDomNode * lsm_dom_node_get_next_sibling (LsmDomNode* self);
102
- #if 0
103
- LsmDomNamedNodeMap * lsm_dom_node_get_attributes (LsmDomNode* self);
104
- #endif
105
- LsmDomNode * lsm_dom_node_insert_before (LsmDomNode* self, LsmDomNode* new_child, LsmDomNode* ref_child);
106
- LsmDomNode * lsm_dom_node_replace_child (LsmDomNode* self, LsmDomNode* new_child, LsmDomNode* old_child);
107
- LsmDomNode * lsm_dom_node_append_child (LsmDomNode* self, LsmDomNode* new_child);
108
- LsmDomNode * lsm_dom_node_remove_child (LsmDomNode* self, LsmDomNode* old_child);
109
- gboolean lsm_dom_node_has_child_nodes (LsmDomNode* self);
110
-
111
- void lsm_dom_node_changed (LsmDomNode *self);
112
-
113
- LsmDomDocument * lsm_dom_node_get_owner_document (LsmDomNode* self);
114
-
115
- void lsm_dom_node_write_to_stream (LsmDomNode *self, GOutputStream *stream,
116
- GError **error);
117
-
118
- G_END_DECLS
119
-
120
- #endif
@@ -1,70 +0,0 @@
1
- /* Lasem
2
- *
3
- * Copyright © 2010 Emmanuel Pacaud
4
- *
5
- * This library is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU Lesser General Public
7
- * License as published by the Free Software Foundation; either
8
- * version 2 of the License, or (at your option) any later version.
9
- *
10
- * This library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- * Lesser General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General
16
- * Public License along with this library; if not, write to the
17
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18
- * Boston, MA 02111-1307, USA.
19
- *
20
- * Author:
21
- * Emmanuel Pacaud <emmanuel@gnome.org>
22
- */
23
-
24
- #include <lsmdomnodelist.h>
25
- #include <lsmdomnode.h>
26
-
27
- /**
28
- * SECTION:lsmdomnodelist
29
- * @short_description: Base class for DOM node lists
30
- */
31
-
32
- /* LsmDomNodeList implementation */
33
-
34
- /**
35
- * lsm_dom_node_list_get_item:
36
- * @list: a #LsmDomNodeList
37
- * @index: id of the item to retrieve
38
- *
39
- * Returns: (transfer none): the node corresponding to index, NULL on error.
40
- */
41
-
42
- LsmDomNode *
43
- lsm_dom_node_list_get_item (LsmDomNodeList *list, unsigned int index)
44
- {
45
- g_return_val_if_fail (LSM_IS_DOM_NODE_LIST (list), NULL);
46
-
47
- return LSM_DOM_NODE_LIST_GET_CLASS (list)->get_item (list, index);
48
- }
49
-
50
- unsigned int
51
- lsm_dom_node_list_get_length (LsmDomNodeList *list)
52
- {
53
- g_return_val_if_fail (LSM_IS_DOM_NODE_LIST (list), 0);
54
-
55
- return LSM_DOM_NODE_LIST_GET_CLASS (list)->get_length (list);
56
- }
57
-
58
- static void
59
- lsm_dom_node_list_init (LsmDomNodeList *list)
60
- {
61
- }
62
-
63
- /* LsmDomNodeList class */
64
-
65
- static void
66
- lsm_dom_node_list_class_init (LsmDomNodeListClass *klass)
67
- {
68
- }
69
-
70
- G_DEFINE_ABSTRACT_TYPE (LsmDomNodeList, lsm_dom_node_list, G_TYPE_OBJECT)
@@ -1,58 +0,0 @@
1
- /* Lasem
2
- *
3
- * Copyright © 2010 Emmanuel Pacaud
4
- *
5
- * This library is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU Lesser General Public
7
- * License as published by the Free Software Foundation; either
8
- * version 2 of the License, or (at your option) any later version.
9
- *
10
- * This library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- * Lesser General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General
16
- * Public License along with this library; if not, write to the
17
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18
- * Boston, MA 02111-1307, USA.
19
- *
20
- * Author:
21
- * Emmanuel Pacaud <emmanuel@gnome.org>
22
- */
23
-
24
- #ifndef LSM_DOM_NODE_LIST_H
25
- #define LSM_DOM_NODE_LIST_H
26
-
27
- #include <lsmdomtypes.h>
28
-
29
- G_BEGIN_DECLS
30
-
31
- #define LSM_TYPE_DOM_NODE_LIST (lsm_dom_node_list_get_type ())
32
- #define LSM_DOM_NODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LSM_TYPE_DOM_NODE_LIST, LsmDomNodeList))
33
- #define LSM_DOM_NODE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LSM_TYPE_DOM_NODE_LIST, LsmDomNodeListClass))
34
- #define LSM_IS_DOM_NODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LSM_TYPE_DOM_NODE_LIST))
35
- #define LSM_IS_DOM_NODE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LSM_TYPE_DOM_NODE_LIST))
36
- #define LSM_DOM_NODE_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LSM_TYPE_DOM_NODE_LIST, LsmDomNodeListClass))
37
-
38
- typedef struct _LsmDomNodeListClass LsmDomNodeListClass;
39
-
40
- struct _LsmDomNodeList {
41
- GObject object;
42
- };
43
-
44
- struct _LsmDomNodeListClass {
45
- GObjectClass parent_class;
46
-
47
- LsmDomNode * (*get_item) (LsmDomNodeList *list, unsigned int index);
48
- unsigned int (*get_length) (LsmDomNodeList *list);
49
- };
50
-
51
- GType lsm_dom_node_list_get_type (void);
52
-
53
- LsmDomNode * lsm_dom_node_list_get_item (LsmDomNodeList *list, unsigned int index);
54
- unsigned int lsm_dom_node_list_get_length (LsmDomNodeList *list);
55
-
56
- G_END_DECLS
57
-
58
- #endif
@@ -1,461 +0,0 @@
1
- /* Lasem
2
- *
3
- * Copyright © 2007-2009 Emmanuel Pacaud
4
- *
5
- * This library is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU Lesser General Public
7
- * License as published by the Free Software Foundation; either
8
- * version 2 of the License, or (at your option) any later version.
9
- *
10
- * This library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- * Lesser General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General
16
- * Public License along with this library; if not, write to the
17
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18
- * Boston, MA 02111-1307, USA.
19
- *
20
- * Author:
21
- * Emmanuel Pacaud <emmanuel@gnome.org>
22
- */
23
-
24
- #include <lsmdebug.h>
25
- #include <lsmdomimplementation.h>
26
- #include <lsmdomnode.h>
27
- #include <lsmdomentities.h>
28
- #include <lsmsvgtextelement.h>
29
- #include <lsmstr.h>
30
- #include <libxml/parser.h>
31
- #include <gio/gio.h>
32
- #include <string.h>
33
- #include "itex2MML.h"
34
-
35
- typedef enum {
36
- STATE
37
- } LsmDomSaxParserStateEnum;
38
-
39
- typedef struct {
40
- LsmDomSaxParserStateEnum state;
41
-
42
- LsmDomDocument *document;
43
- LsmDomNode *current_node;
44
-
45
- gboolean is_error;
46
-
47
- int error_depth;
48
-
49
- GHashTable *entities;
50
- } LsmDomSaxParserState;
51
-
52
- void
53
- _free_entity (void *data)
54
- {
55
- xmlEntity *entity = data;
56
-
57
- xmlFree ((xmlChar *) entity->name);
58
- xmlFree ((xmlChar *) entity->ExternalID);
59
- xmlFree ((xmlChar *) entity->SystemID);
60
- xmlFree (entity->content);
61
- xmlFree (entity->orig);
62
- g_free (entity);
63
- }
64
-
65
- static void
66
- lsm_dom_parser_start_document (void *user_data)
67
- {
68
- LsmDomSaxParserState *state = user_data;
69
-
70
- state->state = STATE;
71
- state->is_error = FALSE;
72
- state->error_depth = 0;
73
- state->entities = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, _free_entity);
74
- }
75
-
76
- static void
77
- lsm_dom_parser_end_document (void *user_data)
78
- {
79
- LsmDomSaxParserState *state = user_data;
80
-
81
- g_hash_table_unref (state->entities);
82
- }
83
-
84
- static void
85
- lsm_dom_parser_start_element(void *user_data,
86
- const xmlChar *name,
87
- const xmlChar **attrs)
88
- {
89
- LsmDomSaxParserState *state = user_data;
90
- LsmDomNode *node;
91
- int i;
92
-
93
- if (state->is_error) {
94
- state->error_depth++;
95
- return;
96
- }
97
-
98
- if (state->document == NULL) {
99
- state->document = lsm_dom_implementation_create_document (NULL, (char *) name);
100
- state->current_node = LSM_DOM_NODE (state->document);
101
-
102
- g_return_if_fail (LSM_IS_DOM_DOCUMENT (state->document));
103
- }
104
-
105
- node = LSM_DOM_NODE (lsm_dom_document_create_element (LSM_DOM_DOCUMENT (state->document), (char *) name));
106
-
107
- if (LSM_IS_DOM_NODE (node) && lsm_dom_node_append_child (state->current_node, node) != NULL) {
108
- if (attrs != NULL)
109
- for (i = 0; attrs[i] != NULL && attrs[i+1] != NULL; i += 2)
110
- lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (node),
111
- (char *) attrs[i],
112
- (char *) attrs[i+1]);
113
-
114
- state->current_node = node;
115
- state->is_error = FALSE;
116
- state->error_depth = 0;
117
- } else {
118
- state->is_error = TRUE;
119
- state->error_depth = 1;
120
- }
121
- }
122
-
123
- static void
124
- lsm_dom_parser_end_element (void *user_data,
125
- const xmlChar *name)
126
- {
127
- LsmDomSaxParserState *state = user_data;
128
-
129
- if (state->is_error) {
130
- state->error_depth--;
131
- if (state->error_depth > 0) {
132
- return;
133
- }
134
-
135
- state->is_error = FALSE;
136
- return;
137
- }
138
-
139
- state->current_node = lsm_dom_node_get_parent_node (state->current_node);
140
- }
141
-
142
- static void
143
- lsm_dom_parser_characters (void *user_data, const xmlChar *ch, int len)
144
- {
145
- LsmDomSaxParserState *state = user_data;
146
-
147
- if (!state->is_error) {
148
- LsmDomNode *node;
149
- char *text;
150
-
151
- text = g_strndup ((char *) ch, len);
152
- node = LSM_DOM_NODE (lsm_dom_document_create_text_node (LSM_DOM_DOCUMENT (state->document), text));
153
-
154
- lsm_dom_node_append_child (state->current_node, node);
155
-
156
- g_free (text);
157
- }
158
- }
159
-
160
- static xmlEntityPtr
161
- lsm_dom_parser_get_entity (void *user_data, const xmlChar *name)
162
- {
163
- LsmDomSaxParserState *state = user_data;
164
- xmlEntity *entity;
165
- const char *utf8;
166
-
167
- entity = g_hash_table_lookup (state->entities, name);
168
- if (entity != NULL)
169
- return entity;
170
-
171
- utf8 = lsm_dom_get_entity ((char *) name);
172
- if (utf8 != NULL) {
173
- entity = xmlNewEntity (NULL, name, XML_INTERNAL_GENERAL_ENTITY, NULL, NULL, (xmlChar *) utf8);
174
-
175
- g_hash_table_insert (state->entities, (char *) name, entity);
176
-
177
- return entity;
178
- }
179
-
180
- return xmlGetPredefinedEntity(name);
181
- }
182
-
183
- void
184
- lsm_dom_parser_declare_entity (void * user_data, const xmlChar * name, int type,
185
- const xmlChar * publicId, const xmlChar * systemId,
186
- xmlChar * content)
187
- {
188
- LsmDomSaxParserState *state = user_data;
189
-
190
- if (content != NULL) {
191
- xmlEntity *entity;
192
-
193
- entity = xmlNewEntity (NULL, name, type, publicId, systemId, content);
194
-
195
- g_hash_table_insert (state->entities, (char *) name, entity);
196
- }
197
- }
198
-
199
- static void
200
- lsm_dom_parser_warning (void *user_data, const char *msg, ...)
201
- {
202
- va_list args;
203
-
204
- va_start(args, msg);
205
- lsm_warning_dom (msg);
206
- va_end(args);
207
- }
208
-
209
- static void
210
- lsm_dom_parser_error (void *user_data, const char *msg, ...)
211
- {
212
- va_list args;
213
-
214
- va_start(args, msg);
215
- lsm_warning_dom (msg);
216
- va_end(args);
217
- }
218
-
219
- static void
220
- lsm_dom_parser_fatal_error (void *user_data, const char *msg, ...)
221
- {
222
- va_list args;
223
-
224
- va_start(args, msg);
225
- lsm_warning_dom (msg);
226
- va_end(args);
227
- }
228
-
229
- static xmlSAXHandler sax_handler = {
230
- .warning = lsm_dom_parser_warning,
231
- .error = lsm_dom_parser_error,
232
- .fatalError = lsm_dom_parser_fatal_error,
233
- .startDocument = lsm_dom_parser_start_document,
234
- .endDocument = lsm_dom_parser_end_document,
235
- .startElement = lsm_dom_parser_start_element,
236
- .endElement = lsm_dom_parser_end_element,
237
- .characters = lsm_dom_parser_characters,
238
- .getEntity = lsm_dom_parser_get_entity,
239
- .entityDecl = lsm_dom_parser_declare_entity
240
- };
241
-
242
- static GQuark
243
- lsm_dom_document_error_quark (void)
244
- {
245
- static GQuark q = 0;
246
-
247
- if (q == 0) {
248
- q = g_quark_from_static_string ("lsm-dom-error-quark");
249
- }
250
-
251
- return q;
252
- }
253
-
254
- #define LSM_DOM_DOCUMENT_ERROR lsm_dom_document_error_quark ()
255
-
256
- typedef enum {
257
- LSM_DOM_DOCUMENT_ERROR_INVALID_XML
258
- } LsmDomDocumentError;
259
-
260
- static LsmDomDocument *
261
- _parse_memory (LsmDomDocument *document, LsmDomNode *node,
262
- const void *buffer, int size, GError **error)
263
- {
264
- static LsmDomSaxParserState state;
265
-
266
- state.document = document;
267
- if (node != NULL)
268
- state.current_node = node;
269
- else
270
- state.current_node = LSM_DOM_NODE (document);
271
-
272
- if (size < 0)
273
- size = strlen (buffer);
274
-
275
- if (xmlSAXUserParseMemory (&sax_handler, &state, buffer, size) < 0) {
276
- if (state.document != NULL)
277
- g_object_unref (state.document);
278
- state.document = NULL;
279
-
280
- lsm_debug_dom ("[LsmDomParser::from_memory] Invalid document");
281
-
282
- g_set_error (error,
283
- LSM_DOM_DOCUMENT_ERROR,
284
- LSM_DOM_DOCUMENT_ERROR_INVALID_XML,
285
- "Invalid document.");
286
- }
287
-
288
- return state.document;
289
- }
290
-
291
- /**
292
- * lsm_dom_document_append_from_memory:
293
- * @document: a #LsmDomDocument
294
- * @node: a #LsmDomNode
295
- * @buffer: a memory buffer holding xml data
296
- * @size: size of the xml data, in bytes
297
- * @error: an error placeholder
298
- *
299
- * Append a chunk of xml tree to an existing document. The resulting nodes will be appended to
300
- * @node, or to @document if @node == NULL.
301
- *
302
- * Size set to a negative value indicated an unknow xml data size.
303
- */
304
-
305
- void
306
- lsm_dom_document_append_from_memory (LsmDomDocument *document, LsmDomNode *node,
307
- const void *buffer, int size, GError **error)
308
- {
309
- g_return_if_fail (LSM_IS_DOM_DOCUMENT (document));
310
- g_return_if_fail (LSM_IS_DOM_NODE (node) || node == NULL);
311
- g_return_if_fail (buffer != NULL);
312
-
313
- _parse_memory (document, node, buffer, size, error);
314
- }
315
-
316
- LsmDomDocument *
317
- lsm_dom_document_new_from_memory (const void *buffer, int size, GError **error)
318
- {
319
- g_return_val_if_fail (buffer != NULL, NULL);
320
-
321
- return _parse_memory (NULL, NULL, buffer, size, error);
322
- }
323
-
324
-
325
- static LsmDomDocument *
326
- lsm_dom_document_new_from_file (GFile *file, GError **error)
327
- {
328
- LsmDomDocument *document;
329
- gsize size = 0;
330
- char *contents = NULL;
331
-
332
- if (!g_file_load_contents (file, NULL, &contents, &size, NULL, error))
333
- return NULL;
334
-
335
- document = lsm_dom_document_new_from_memory (contents, size, error);
336
-
337
- g_free (contents);
338
-
339
- return document;
340
- }
341
-
342
- LsmDomDocument *
343
- lsm_dom_document_new_from_path (const char *path, GError **error)
344
- {
345
- LsmDomDocument *document;
346
- GFile *file;
347
-
348
- g_return_val_if_fail (path != NULL, NULL);
349
-
350
- file = g_file_new_for_path (path);
351
-
352
- document = lsm_dom_document_new_from_file (file, error);
353
-
354
- g_object_unref (file);
355
-
356
- if (document != NULL)
357
- lsm_dom_document_set_path (document, path);
358
-
359
- return document;
360
- }
361
-
362
- LsmDomDocument *
363
- lsm_dom_document_new_from_url (const char *url, GError **error)
364
- {
365
- LsmDomDocument *document;
366
- GFile *file;
367
-
368
- g_return_val_if_fail (url != NULL, NULL);
369
-
370
- file = g_file_new_for_uri (url);
371
-
372
- document = lsm_dom_document_new_from_file (file, error);
373
-
374
- g_object_unref (file);
375
-
376
- if (document != NULL)
377
- lsm_dom_document_set_url (document, url);
378
-
379
- return document;
380
- }
381
-
382
- /**
383
- * lsm_dom_document_save_to_stream:
384
- * @document: a #LsmDomDocument
385
- * @stream: stream to save to
386
- * @error: an error placeholder
387
- */
388
-
389
- void
390
- lsm_dom_document_save_to_stream (LsmDomDocument *document, GOutputStream *stream, GError **error)
391
- {
392
- g_return_if_fail (LSM_IS_DOM_DOCUMENT (document));
393
- g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
394
-
395
- lsm_dom_node_write_to_stream (LSM_DOM_NODE (document), stream, error);
396
- }
397
-
398
- void
399
- lsm_dom_document_save_to_memory (LsmDomDocument *document, void **buffer, int *size, GError **error)
400
- {
401
- GOutputStream *stream;
402
-
403
- if (buffer != NULL)
404
- *buffer = NULL;
405
- if (size != NULL)
406
- *size = 0;
407
-
408
- g_return_if_fail (document != NULL);
409
- g_return_if_fail (buffer != NULL);
410
-
411
- stream = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
412
- if (stream == NULL) {
413
- *buffer = NULL;
414
- if (size != NULL)
415
- *size = 0;
416
- return;
417
- }
418
-
419
- lsm_dom_document_save_to_stream (document, G_OUTPUT_STREAM (stream), error);
420
- g_output_stream_close (G_OUTPUT_STREAM (stream), NULL, error);
421
-
422
- if (size != NULL)
423
- *size = g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (stream));
424
- *buffer = g_memory_output_stream_steal_data (G_MEMORY_OUTPUT_STREAM (stream));
425
-
426
- g_object_unref (stream);
427
- }
428
-
429
- void
430
- lsm_dom_document_save_to_path (LsmDomDocument *document, const char *path, GError **error)
431
- {
432
- GFile *file;
433
- GFileOutputStream *stream;
434
-
435
- g_return_if_fail (path != NULL);
436
-
437
- file = g_file_new_for_path (path);
438
- stream = g_file_create (file, G_FILE_CREATE_REPLACE_DESTINATION, NULL, error);
439
- if (stream != NULL) {
440
- lsm_dom_document_save_to_stream (document, G_OUTPUT_STREAM (stream), error);
441
- g_object_unref (stream);
442
- }
443
- g_object_unref (file);
444
- }
445
-
446
- void
447
- lsm_dom_document_save_to_url (LsmDomDocument *document, const char *path, GError **error)
448
- {
449
- GFile *file;
450
- GFileOutputStream *stream;
451
-
452
- g_return_if_fail (path != NULL);
453
-
454
- file = g_file_new_for_uri (path);
455
- stream = g_file_create (file, G_FILE_CREATE_REPLACE_DESTINATION, NULL, error);
456
- if (stream != NULL) {
457
- lsm_dom_document_save_to_stream (document, G_OUTPUT_STREAM (stream), error);
458
- g_object_unref (stream);
459
- }
460
- g_object_unref (file);
461
- }