| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -294,7 +294,7 @@ compileFile(word2mdJs, | |||
| 294 | 294 | file(specMd, [word2mdJs, specWord], function () { | |
| 295 | 295 | jake.cpR(headerMd, specMd, {silent: true}); | |
| 296 | 296 | var specWordFullPath = path.resolve(specWord); | |
| 297 | - var cmd = "cscript //nologo " + word2mdJs + ' "' + specWordFullPath + '" >>' + specMd; | ||
| 297 | + var cmd = "cscript //nologo " + word2mdJs + ' "' + specWordFullPath + '" ' + specMd; | ||
| 298 | 298 | console.log(cmd); | |
| 299 | 299 | child_process.exec(cmd, function () { | |
| 300 | 300 | complete(); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,12 +1,33 @@ | |||
| 1 | 1 | var sys = (function () { | |
| 2 | + var fileStream = new ActiveXObject("ADODB.Stream"); | ||
| 3 | + fileStream.Type = 2; | ||
| 4 | + var binaryStream = new ActiveXObject("ADODB.Stream"); | ||
| 5 | + binaryStream.Type = 1; | ||
| 2 | 6 | var args = []; | |
| 3 | 7 | for (var i = 0; i < WScript.Arguments.length; i++) { | |
| 4 | 8 | args[i] = WScript.Arguments.Item(i); | |
| 5 | 9 | } | |
| 6 | 10 | return { | |
| 7 | 11 | args: args, | |
| 8 | 12 | createObject: function (typeName) { return new ActiveXObject(typeName); }, | |
| 9 | - write: function (s) { return WScript.StdOut.Write(s); } | ||
| 13 | + write: function (s) { | ||
| 14 | + WScript.StdOut.Write(s); | ||
| 15 | + }, | ||
| 16 | + writeFile: function (fileName, data) { | ||
| 17 | + fileStream.Open(); | ||
| 18 | + binaryStream.Open(); | ||
| 19 | + try { | ||
| 20 | + fileStream.Charset = "utf-8"; | ||
| 21 | + fileStream.WriteText(data); | ||
| 22 | + fileStream.Position = 3; | ||
| 23 | + fileStream.CopyTo(binaryStream); | ||
| 24 | + binaryStream.SaveToFile(fileName, 2); | ||
| 25 | + } | ||
| 26 | + finally { | ||
| 27 | + binaryStream.Close(); | ||
| 28 | + fileStream.Close(); | ||
| 29 | + } | ||
| 30 | + } | ||
| 10 | 31 | }; | |
| 11 | 32 | })(); | |
| 12 | 33 | function convertDocumentToMarkdown(doc) { | |
@@ -149,6 +170,10 @@ function convertDocumentToMarkdown(doc) { | |||
| 149 | 170 | lastInTable = inTable; | |
| 150 | 171 | } | |
| 151 | 172 | function writeDocument() { | |
| 173 | + var title = doc.builtInDocumentProperties.item(1) + ""; | ||
| 174 | + if (title.length) { | ||
| 175 | + write("# " + title + "\n\n"); | ||
| 176 | + } | ||
| 152 | 177 | for (var p = doc.paragraphs.first; p; p = p.next()) { | |
| 153 | 178 | writeParagraph(p); | |
| 154 | 179 | } | |
@@ -168,16 +193,19 @@ function convertDocumentToMarkdown(doc) { | |||
| 168 | 193 | findReplace("^19 REF", {}, "[^&](#^&)", {}); | |
| 169 | 194 | doc.fields.toggleShowCodes(); | |
| 170 | 195 | writeDocument(); | |
| 196 | + result = result.replace(/\x85/g, "\u2026"); | ||
| 197 | + result = result.replace(/\x96/g, "\u2013"); | ||
| 198 | + result = result.replace(/\x97/g, "\u2014"); | ||
| 171 | 199 | return result; | |
| 172 | 200 | } | |
| 173 | 201 | function main(args) { | |
| 174 | - if (args.length !== 1) { | ||
| 175 | - sys.write("Syntax: word2md <filename>\n"); | ||
| 202 | + if (args.length !== 2) { | ||
| 203 | + sys.write("Syntax: word2md <inputfile> <outputfile>\n"); | ||
| 176 | 204 | return; | |
| 177 | 205 | } | |
| 178 | 206 | var app = sys.createObject("Word.Application"); | |
| 179 | 207 | var doc = app.documents.open(args[0]); | |
| 180 | - sys.write(convertDocumentToMarkdown(doc)); | ||
| 208 | + sys.writeFile(args[1], convertDocumentToMarkdown(doc)); | ||
| 181 | 209 | doc.close(false); | |
| 182 | 210 | app.quit(); | |
| 183 | 211 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -103,6 +103,7 @@ module Word { | |||
| 103 | 103 | export interface Document { | |
| 104 | 104 | fields: Fields; | |
| 105 | 105 | paragraphs: Paragraphs; | |
| 106 | + builtInDocumentProperties: Collection<any>; | ||
| 106 | 107 | close(saveChanges: boolean): void; | |
| 107 | 108 | range(): Range; | |
| 108 | 109 | } | |
@@ -118,14 +119,37 @@ module Word { | |||
| 118 | 119 | } | |
| 119 | 120 | ||
| 120 | 121 | var sys = (function () { | |
| 122 | + var fileStream = new ActiveXObject("ADODB.Stream"); | ||
| 123 | + fileStream.Type = 2 /*text*/; | ||
| 124 | + var binaryStream = new ActiveXObject("ADODB.Stream"); | ||
| 125 | + binaryStream.Type = 1 /*binary*/; | ||
| 121 | 126 | var args: string[] = []; | |
| 122 | 127 | for (var i = 0; i < WScript.Arguments.length; i++) { | |
| 123 | 128 | args[i] = WScript.Arguments.Item(i); | |
| 124 | 129 | } | |
| 125 | 130 | return { | |
| 126 | 131 | args: args, | |
| 127 | 132 | createObject: (typeName: string) => new ActiveXObject(typeName), | |
| 128 | - write: (s: string) => WScript.StdOut.Write(s) | ||
| 133 | + write(s: string): void { | ||
| 134 | + WScript.StdOut.Write(s); | ||
| 135 | + }, | ||
| 136 | + writeFile: (fileName: string, data: string): void => { | ||
| 137 | + fileStream.Open(); | ||
| 138 | + binaryStream.Open(); | ||
| 139 | + try { | ||
| 140 | + // Write characters in UTF-8 encoding | ||
| 141 | + fileStream.Charset = "utf-8"; | ||
| 142 | + fileStream.WriteText(data); | ||
| 143 | + // We don't want the BOM, skip it by setting the starting location to 3 (size of BOM). | ||
| 144 | + fileStream.Position = 3; | ||
| 145 | + fileStream.CopyTo(binaryStream); | ||
| 146 | + binaryStream.SaveToFile(fileName, 2 /*overwrite*/); | ||
| 147 | + } | ||
| 148 | + finally { | ||
| 149 | + binaryStream.Close(); | ||
| 150 | + fileStream.Close(); | ||
| 151 | + } | ||
| 152 | + } | ||
| 129 | 153 | }; | |
| 130 | 154 | })(); | |
| 131 | 155 | ||
@@ -298,6 +322,10 @@ function convertDocumentToMarkdown(doc: Word.Document): string { | |||
| 298 | 322 | } | |
| 299 | 323 | ||
| 300 | 324 | function writeDocument() { | |
| 325 | + var title = doc.builtInDocumentProperties.item(1) + ""; | ||
| 326 | + if (title.length) { | ||
| 327 | + write("# " + title + "\n\n"); | ||
| 328 | + } | ||
| 301 | 329 | for (var p = doc.paragraphs.first; p; p = p.next()) { | |
| 302 | 330 | writeParagraph(p); | |
| 303 | 331 | } | |
@@ -321,17 +349,21 @@ function convertDocumentToMarkdown(doc: Word.Document): string { | |||
| 321 | 349 | ||
| 322 | 350 | writeDocument(); | |
| 323 | 351 | ||
| 352 | + result = result.replace(/\x85/g, "\u2026"); | ||
| 353 | + result = result.replace(/\x96/g, "\u2013"); | ||
| 354 | + result = result.replace(/\x97/g, "\u2014"); | ||
| 355 | + | ||
| 324 | 356 | return result; | |
| 325 | 357 | } | |
| 326 | 358 | ||
| 327 | 359 | function main(args: string[]) { | |
| 328 | - if (args.length !== 1) { | ||
| 329 | - sys.write("Syntax: word2md <filename>\n"); | ||
| 360 | + if (args.length !== 2) { | ||
| 361 | + sys.write("Syntax: word2md <inputfile> <outputfile>\n"); | ||
| 330 | 362 | return; | |
| 331 | 363 | } | |
| 332 | 364 | var app: Word.Application = sys.createObject("Word.Application"); | |
| 333 | 365 | var doc = app.documents.open(args[0]); | |
| 334 | - sys.write(convertDocumentToMarkdown(doc)); | ||
| 366 | + sys.writeFile(args[1], convertDocumentToMarkdown(doc)); | ||
| 335 | 367 | doc.close(false); | |
| 336 | 368 | app.quit(); | |
| 337 | 369 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments