@hyperlex/mammoth 1.4.9-beta

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 (112) hide show
  1. package/.eslintrc.json +77 -0
  2. package/.github/ISSUE_TEMPLATE.md +12 -0
  3. package/.idea/mammoth.js.iml +12 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/vcs.xml +6 -0
  6. package/.travis.yml +10 -0
  7. package/LICENSE +22 -0
  8. package/NEWS +373 -0
  9. package/README.md +883 -0
  10. package/bin/mammoth +38 -0
  11. package/browser/docx/files.js +14 -0
  12. package/browser/unzip.js +12 -0
  13. package/lib/document-to-html.js +453 -0
  14. package/lib/documents.js +238 -0
  15. package/lib/docx/body-reader.js +636 -0
  16. package/lib/docx/comments-reader.js +31 -0
  17. package/lib/docx/content-types-reader.js +58 -0
  18. package/lib/docx/document-xml-reader.js +26 -0
  19. package/lib/docx/docx-reader.js +222 -0
  20. package/lib/docx/files.js +67 -0
  21. package/lib/docx/notes-reader.js +28 -0
  22. package/lib/docx/numbering-xml.js +69 -0
  23. package/lib/docx/office-xml-reader.js +58 -0
  24. package/lib/docx/relationships-reader.js +43 -0
  25. package/lib/docx/style-map.js +75 -0
  26. package/lib/docx/styles-reader.js +70 -0
  27. package/lib/docx/uris.js +21 -0
  28. package/lib/html/ast.js +50 -0
  29. package/lib/html/index.js +41 -0
  30. package/lib/html/simplify.js +88 -0
  31. package/lib/images.js +29 -0
  32. package/lib/index.js +115 -0
  33. package/lib/main.js +63 -0
  34. package/lib/options-reader.js +98 -0
  35. package/lib/promises.js +42 -0
  36. package/lib/results.js +72 -0
  37. package/lib/style-reader.js +321 -0
  38. package/lib/styles/document-matchers.js +74 -0
  39. package/lib/styles/html-paths.js +81 -0
  40. package/lib/styles/parser/tokeniser.js +30 -0
  41. package/lib/transforms.js +61 -0
  42. package/lib/underline.js +11 -0
  43. package/lib/unzip.js +22 -0
  44. package/lib/writers/html-writer.js +160 -0
  45. package/lib/writers/index.js +14 -0
  46. package/lib/writers/markdown-writer.js +163 -0
  47. package/lib/xml/index.js +7 -0
  48. package/lib/xml/nodes.js +69 -0
  49. package/lib/xml/reader.js +83 -0
  50. package/lib/xml/writer.js +61 -0
  51. package/lib/zipfile.js +77 -0
  52. package/mammoth.browser.js +32950 -0
  53. package/mammoth.browser.min.js +18 -0
  54. package/package.json +65 -0
  55. package/test/.eslintrc.json +7 -0
  56. package/test/document-to-html.tests.js +834 -0
  57. package/test/docx/body-reader.tests.js +1342 -0
  58. package/test/docx/comments-reader.tests.js +52 -0
  59. package/test/docx/content-types-reader.tests.js +45 -0
  60. package/test/docx/document-matchers.js +37 -0
  61. package/test/docx/docx-reader.tests.js +179 -0
  62. package/test/docx/files.tests.js +94 -0
  63. package/test/docx/notes-reader.tests.js +35 -0
  64. package/test/docx/numbering-xml.tests.js +65 -0
  65. package/test/docx/office-xml-reader.tests.js +24 -0
  66. package/test/docx/relationships-reader.tests.js +65 -0
  67. package/test/docx/style-map.tests.js +112 -0
  68. package/test/docx/styles-reader.tests.js +133 -0
  69. package/test/docx/uris.tests.js +22 -0
  70. package/test/html/simplify.tests.js +134 -0
  71. package/test/html/write.tests.js +42 -0
  72. package/test/images.tests.js +34 -0
  73. package/test/main.tests.js +89 -0
  74. package/test/mammoth.tests.js +429 -0
  75. package/test/mocha.opts +1 -0
  76. package/test/options-reader.tests.js +63 -0
  77. package/test/results.tests.js +15 -0
  78. package/test/style-reader.tests.js +256 -0
  79. package/test/styles/document-matchers.tests.js +71 -0
  80. package/test/styles/html-paths.tests.js +20 -0
  81. package/test/styles/parser/tokeniser.tests.js +104 -0
  82. package/test/test-data/comments.docx +0 -0
  83. package/test/test-data/embedded-style-map.docx +0 -0
  84. package/test/test-data/empty.docx +0 -0
  85. package/test/test-data/empty.zip +0 -0
  86. package/test/test-data/endnotes.docx +0 -0
  87. package/test/test-data/external-picture.docx +0 -0
  88. package/test/test-data/footnote-hyperlink.docx +0 -0
  89. package/test/test-data/footnotes.docx +0 -0
  90. package/test/test-data/hello.zip +0 -0
  91. package/test/test-data/hyperlinks/word/_rels/document.xml.rels +10 -0
  92. package/test/test-data/hyperlinks/word/document.xml +18 -0
  93. package/test/test-data/simple/word/document.xml +18 -0
  94. package/test/test-data/simple-list.docx +0 -0
  95. package/test/test-data/single-paragraph.docx +0 -0
  96. package/test/test-data/strikethrough.docx +0 -0
  97. package/test/test-data/tables.docx +0 -0
  98. package/test/test-data/text-box.docx +0 -0
  99. package/test/test-data/tiny-picture-target-base-relative.docx +0 -0
  100. package/test/test-data/tiny-picture.docx +0 -0
  101. package/test/test-data/tiny-picture.png +0 -0
  102. package/test/test-data/underline.docx +0 -0
  103. package/test/test-data/utf8-bom.docx +0 -0
  104. package/test/test.js +11 -0
  105. package/test/testing.js +55 -0
  106. package/test/transforms.tests.js +125 -0
  107. package/test/unzip.tests.js +38 -0
  108. package/test/writers/html-writer.tests.js +133 -0
  109. package/test/writers/markdown-writer.tests.js +304 -0
  110. package/test/xml/reader.tests.js +85 -0
  111. package/test/xml/writer.tests.js +81 -0
  112. package/test/zipfile.tests.js +59 -0
@@ -0,0 +1,238 @@
1
+ var _ = require("underscore");
2
+
3
+ var types = exports.types = {
4
+ document: "document",
5
+ paragraph: "paragraph",
6
+ run: "run",
7
+ text: "text",
8
+ tab: "tab",
9
+ hyperlink: "hyperlink",
10
+ noteReference: "noteReference",
11
+ image: "image",
12
+ note: "note",
13
+ commentReference: "commentReference",
14
+ comment: "comment",
15
+ table: "table",
16
+ tableRow: "tableRow",
17
+ tableCell: "tableCell",
18
+ "break": "break",
19
+ bookmarkStart: "bookmarkStart"
20
+ };
21
+
22
+ function Document(children, options) {
23
+ options = options || {};
24
+ return {
25
+ type: types.document,
26
+ children: children,
27
+ notes: options.notes || new Notes({}),
28
+ comments: options.comments || []
29
+ };
30
+ }
31
+
32
+ function Paragraph(children, properties) {
33
+ properties = properties || {};
34
+ var indent = properties.indent || {};
35
+ var spacing = properties.spacing || {};
36
+ var border = properties.border || {};
37
+ return {
38
+ type: types.paragraph,
39
+ children: children,
40
+ styleId: properties.styleId || null,
41
+ styleName: properties.styleName || null,
42
+ numbering: properties.numbering || null,
43
+ alignment: properties.alignment || null,
44
+ indent: {
45
+ start: indent.start || null,
46
+ end: indent.end || null,
47
+ firstLine: indent.firstLine || null,
48
+ hanging: indent.hanging || null
49
+ },
50
+ spacing: {
51
+ lineRule: spacing.lineRule || null,
52
+ line: spacing.line || null,
53
+ before: spacing.before || null,
54
+ after: spacing.after || null
55
+ },
56
+ border: {
57
+ top: border.top || null,
58
+ left: border.left || null,
59
+ bottom: border.bottom || null,
60
+ right: border.right || null
61
+ }
62
+ };
63
+ }
64
+
65
+ function Run(children, properties) {
66
+ properties = properties || {};
67
+ return {
68
+ type: types.run,
69
+ children: children,
70
+ styleId: properties.styleId || null,
71
+ styleName: properties.styleName || null,
72
+ isBold: properties.isBold,
73
+ isUnderline: properties.isUnderline,
74
+ isItalic: properties.isItalic,
75
+ isStrikethrough: properties.isStrikethrough,
76
+ isSmallCaps: properties.isSmallCaps,
77
+ verticalAlignment: properties.verticalAlignment || verticalAlignment.baseline,
78
+ font: properties.font || null,
79
+ size: properties.size || null,
80
+ color: properties.color || null,
81
+ highlight: properties.highlight || null
82
+ };
83
+ }
84
+
85
+ var verticalAlignment = {
86
+ baseline: "baseline",
87
+ superscript: "superscript",
88
+ subscript: "subscript"
89
+ };
90
+
91
+ function Text(value) {
92
+ return {
93
+ type: types.text,
94
+ value: value
95
+ };
96
+ }
97
+
98
+ function Tab() {
99
+ return {
100
+ type: types.tab
101
+ };
102
+ }
103
+
104
+ function Hyperlink(children, options) {
105
+ return {
106
+ type: types.hyperlink,
107
+ children: children,
108
+ href: options.href,
109
+ anchor: options.anchor,
110
+ targetFrame: options.targetFrame
111
+ };
112
+ }
113
+
114
+ function NoteReference(options) {
115
+ return {
116
+ type: types.noteReference,
117
+ noteType: options.noteType,
118
+ noteId: options.noteId
119
+ };
120
+ }
121
+
122
+ function Notes(notes) {
123
+ this._notes = _.indexBy(notes, function(note) {
124
+ return noteKey(note.noteType, note.noteId);
125
+ });
126
+ }
127
+
128
+ Notes.prototype.resolve = function(reference) {
129
+ return this.findNoteByKey(noteKey(reference.noteType, reference.noteId));
130
+ };
131
+
132
+ Notes.prototype.findNoteByKey = function(key) {
133
+ return this._notes[key] || null;
134
+ };
135
+
136
+ function Note(options) {
137
+ return {
138
+ type: types.note,
139
+ noteType: options.noteType,
140
+ noteId: options.noteId,
141
+ body: options.body
142
+ };
143
+ }
144
+
145
+ function commentReference(options) {
146
+ return {
147
+ type: types.commentReference,
148
+ commentId: options.commentId
149
+ };
150
+ }
151
+
152
+ function comment(options) {
153
+ return {
154
+ type: types.comment,
155
+ commentId: options.commentId,
156
+ body: options.body,
157
+ authorName: options.authorName,
158
+ authorInitials: options.authorInitials
159
+ };
160
+ }
161
+
162
+ function noteKey(noteType, id) {
163
+ return noteType + "-" + id;
164
+ }
165
+
166
+ function Image(options) {
167
+ return {
168
+ type: types.image,
169
+ read: options.readImage,
170
+ altText: options.altText,
171
+ contentType: options.contentType
172
+ };
173
+ }
174
+
175
+ function Table(children, properties) {
176
+ properties = properties || {};
177
+ return {
178
+ type: types.table,
179
+ children: children,
180
+ styleId: properties.styleId || null,
181
+ styleName: properties.styleName || null
182
+ };
183
+ }
184
+
185
+ function TableRow(children, options) {
186
+ options = options || {};
187
+ return {
188
+ type: types.tableRow,
189
+ children: children,
190
+ isHeader: options.isHeader || false
191
+ };
192
+ }
193
+
194
+ function TableCell(children, options) {
195
+ options = options || {};
196
+ return {
197
+ type: types.tableCell,
198
+ children: children,
199
+ colSpan: options.colSpan == null ? 1 : options.colSpan,
200
+ rowSpan: options.rowSpan == null ? 1 : options.rowSpan
201
+ };
202
+ }
203
+
204
+ function Break(breakType) {
205
+ return {
206
+ type: types["break"],
207
+ breakType: breakType
208
+ };
209
+ }
210
+
211
+ function BookmarkStart(options) {
212
+ return {
213
+ type: types.bookmarkStart,
214
+ name: options.name
215
+ };
216
+ }
217
+
218
+ exports.document = exports.Document = Document;
219
+ exports.paragraph = exports.Paragraph = Paragraph;
220
+ exports.run = exports.Run = Run;
221
+ exports.Text = Text;
222
+ exports.tab = exports.Tab = Tab;
223
+ exports.Hyperlink = Hyperlink;
224
+ exports.noteReference = exports.NoteReference = NoteReference;
225
+ exports.Notes = Notes;
226
+ exports.Note = Note;
227
+ exports.commentReference = commentReference;
228
+ exports.comment = comment;
229
+ exports.Image = Image;
230
+ exports.Table = Table;
231
+ exports.TableRow = TableRow;
232
+ exports.TableCell = TableCell;
233
+ exports.lineBreak = Break("line");
234
+ exports.pageBreak = Break("page");
235
+ exports.columnBreak = Break("column");
236
+ exports.BookmarkStart = BookmarkStart;
237
+
238
+ exports.verticalAlignment = verticalAlignment;