Skip to content

Commit 531314a

Browse files
authored
feat: Add cell width (#19)
1 parent b3b6914 commit 531314a

File tree

6 files changed

+128
-102
lines changed

6 files changed

+128
-102
lines changed

docx-core/src/documents/elements/table_cell.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ impl TableCell {
4343
self.property = self.property.grid_span(v);
4444
self
4545
}
46+
47+
pub fn width(mut self, v: usize) -> TableCell {
48+
self.property = self.property.width(v, WidthType::DXA);
49+
self
50+
}
4651
}
4752

4853
impl BuildXML for TableCell {

docx-wasm/pkg/docx_rs.d.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
/* tslint:disable */
22
/**
3-
* @returns {TableCell}
3+
* @param {number} id
4+
* @param {number} start
5+
* @param {string} format
6+
* @param {string} text
7+
* @param {string} jc
8+
* @returns {Level}
49
*/
5-
export function createTableCell(): TableCell;
10+
export function createLevel(id: number, start: number, format: string, text: string, jc: string): Level;
611
/**
712
* @returns {Docx}
813
*/
@@ -33,23 +38,18 @@ export function createParagraph(): Paragraph;
3338
*/
3439
export function createRun(): Run;
3540
/**
36-
* @param {number} id
37-
* @returns {Comment}
41+
* @returns {TableCell}
3842
*/
39-
export function createComment(id: number): Comment;
43+
export function createTableCell(): TableCell;
4044
/**
4145
* @returns {TableRow}
4246
*/
4347
export function createTableRow(): TableRow;
4448
/**
4549
* @param {number} id
46-
* @param {number} start
47-
* @param {string} format
48-
* @param {string} text
49-
* @param {string} jc
50-
* @returns {Level}
50+
* @returns {Comment}
5151
*/
52-
export function createLevel(id: number, start: number, format: string, text: string, jc: string): Level;
52+
export function createComment(id: number): Comment;
5353
export enum StyleType {
5454
Paragraph,
5555
Character,
@@ -365,6 +365,11 @@ export class TableCell {
365365
* @returns {TableCell}
366366
*/
367367
grid_span(v: number): TableCell;
368+
/**
369+
* @param {number} v
370+
* @returns {TableCell}
371+
*/
372+
width(v: number): TableCell;
368373
}
369374
/**
370375
*/

docx-wasm/pkg/docx_rs.js

Lines changed: 90 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,74 @@
11
import * as wasm from './docx_rs_bg.wasm';
22

3+
let WASM_VECTOR_LEN = 0;
4+
5+
let cachedTextEncoder = new TextEncoder('utf-8');
6+
7+
const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
8+
? function (arg, view) {
9+
return cachedTextEncoder.encodeInto(arg, view);
10+
}
11+
: function (arg, view) {
12+
const buf = cachedTextEncoder.encode(arg);
13+
view.set(buf);
14+
return {
15+
read: arg.length,
16+
written: buf.length
17+
};
18+
});
19+
20+
let cachegetUint8Memory = null;
21+
function getUint8Memory() {
22+
if (cachegetUint8Memory === null || cachegetUint8Memory.buffer !== wasm.memory.buffer) {
23+
cachegetUint8Memory = new Uint8Array(wasm.memory.buffer);
24+
}
25+
return cachegetUint8Memory;
26+
}
27+
28+
function passStringToWasm(arg) {
29+
30+
let len = arg.length;
31+
let ptr = wasm.__wbindgen_malloc(len);
32+
33+
const mem = getUint8Memory();
34+
35+
let offset = 0;
36+
37+
for (; offset < len; offset++) {
38+
const code = arg.charCodeAt(offset);
39+
if (code > 0x7F) break;
40+
mem[ptr + offset] = code;
41+
}
42+
43+
if (offset !== len) {
44+
if (offset !== 0) {
45+
arg = arg.slice(offset);
46+
}
47+
ptr = wasm.__wbindgen_realloc(ptr, len, len = offset + arg.length * 3);
48+
const view = getUint8Memory().subarray(ptr + offset, ptr + len);
49+
const ret = encodeString(arg, view);
50+
51+
offset += ret.written;
52+
}
53+
54+
WASM_VECTOR_LEN = offset;
55+
return ptr;
56+
}
357
/**
4-
* @returns {TableCell}
58+
* @param {number} id
59+
* @param {number} start
60+
* @param {string} format
61+
* @param {string} text
62+
* @param {string} jc
63+
* @returns {Level}
564
*/
6-
export function createTableCell() {
7-
const ret = wasm.createTableCell();
8-
return TableCell.__wrap(ret);
65+
export function createLevel(id, start, format, text, jc) {
66+
const ret = wasm.createLevel(id, start, passStringToWasm(format), WASM_VECTOR_LEN, passStringToWasm(text), WASM_VECTOR_LEN, passStringToWasm(jc), WASM_VECTOR_LEN);
67+
return Level.__wrap(ret);
968
}
1069

11-
function _assertClass(instance, klass) {
12-
if (!(instance instanceof klass)) {
13-
throw new Error(`expected instance of ${klass.name}`);
14-
}
15-
return instance.ptr;
70+
function isLikeNone(x) {
71+
return x === undefined || x === null;
1672
}
1773
/**
1874
* @returns {Docx}
@@ -22,6 +78,13 @@ export function createDocx() {
2278
return Docx.__wrap(ret);
2379
}
2480

81+
function _assertClass(instance, klass) {
82+
if (!(instance instanceof klass)) {
83+
throw new Error(`expected instance of ${klass.name}`);
84+
}
85+
return instance.ptr;
86+
}
87+
2588
let cachegetInt32Memory = null;
2689
function getInt32Memory() {
2790
if (cachegetInt32Memory === null || cachegetInt32Memory.buffer !== wasm.memory.buffer) {
@@ -30,14 +93,6 @@ function getInt32Memory() {
3093
return cachegetInt32Memory;
3194
}
3295

33-
let cachegetUint8Memory = null;
34-
function getUint8Memory() {
35-
if (cachegetUint8Memory === null || cachegetUint8Memory.buffer !== wasm.memory.buffer) {
36-
cachegetUint8Memory = new Uint8Array(wasm.memory.buffer);
37-
}
38-
return cachegetUint8Memory;
39-
}
40-
4196
function getArrayU8FromWasm(ptr, len) {
4297
return getUint8Memory().subarray(ptr / 1, ptr / 1 + len);
4398
}
@@ -82,8 +137,6 @@ function getUint32Memory() {
82137
return cachegetUint32Memory;
83138
}
84139

85-
let WASM_VECTOR_LEN = 0;
86-
87140
function passArray32ToWasm(arg) {
88141
const ptr = wasm.__wbindgen_malloc(arg.length * 4);
89142
getUint32Memory().set(arg, ptr / 4);
@@ -98,54 +151,6 @@ export function createParagraph() {
98151
return Paragraph.__wrap(ret);
99152
}
100153

101-
let cachedTextEncoder = new TextEncoder('utf-8');
102-
103-
const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
104-
? function (arg, view) {
105-
return cachedTextEncoder.encodeInto(arg, view);
106-
}
107-
: function (arg, view) {
108-
const buf = cachedTextEncoder.encode(arg);
109-
view.set(buf);
110-
return {
111-
read: arg.length,
112-
written: buf.length
113-
};
114-
});
115-
116-
function passStringToWasm(arg) {
117-
118-
let len = arg.length;
119-
let ptr = wasm.__wbindgen_malloc(len);
120-
121-
const mem = getUint8Memory();
122-
123-
let offset = 0;
124-
125-
for (; offset < len; offset++) {
126-
const code = arg.charCodeAt(offset);
127-
if (code > 0x7F) break;
128-
mem[ptr + offset] = code;
129-
}
130-
131-
if (offset !== len) {
132-
if (offset !== 0) {
133-
arg = arg.slice(offset);
134-
}
135-
ptr = wasm.__wbindgen_realloc(ptr, len, len = offset + arg.length * 3);
136-
const view = getUint8Memory().subarray(ptr + offset, ptr + len);
137-
const ret = encodeString(arg, view);
138-
139-
offset += ret.written;
140-
}
141-
142-
WASM_VECTOR_LEN = offset;
143-
return ptr;
144-
}
145-
146-
function isLikeNone(x) {
147-
return x === undefined || x === null;
148-
}
149154
/**
150155
* @returns {Run}
151156
*/
@@ -155,12 +160,11 @@ export function createRun() {
155160
}
156161

157162
/**
158-
* @param {number} id
159-
* @returns {Comment}
163+
* @returns {TableCell}
160164
*/
161-
export function createComment(id) {
162-
const ret = wasm.createComment(id);
163-
return Comment.__wrap(ret);
165+
export function createTableCell() {
166+
const ret = wasm.createTableCell();
167+
return TableCell.__wrap(ret);
164168
}
165169

166170
/**
@@ -173,15 +177,11 @@ export function createTableRow() {
173177

174178
/**
175179
* @param {number} id
176-
* @param {number} start
177-
* @param {string} format
178-
* @param {string} text
179-
* @param {string} jc
180-
* @returns {Level}
180+
* @returns {Comment}
181181
*/
182-
export function createLevel(id, start, format, text, jc) {
183-
const ret = wasm.createLevel(id, start, passStringToWasm(format), WASM_VECTOR_LEN, passStringToWasm(text), WASM_VECTOR_LEN, passStringToWasm(jc), WASM_VECTOR_LEN);
184-
return Level.__wrap(ret);
182+
export function createComment(id) {
183+
const ret = wasm.createComment(id);
184+
return Comment.__wrap(ret);
185185
}
186186

187187
let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
@@ -861,6 +861,16 @@ export class TableCell {
861861
const ret = wasm.tablecell_grid_span(ptr, v);
862862
return TableCell.__wrap(ret);
863863
}
864+
/**
865+
* @param {number} v
866+
* @returns {TableCell}
867+
*/
868+
width(v) {
869+
const ptr = this.ptr;
870+
this.ptr = 0;
871+
const ret = wasm.tablecell_width(ptr, v);
872+
return TableCell.__wrap(ret);
873+
}
864874
}
865875
/**
866876
*/

docx-wasm/pkg/docx_rs_bg.d.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
/* tslint:disable */
22
export const memory: WebAssembly.Memory;
3-
export function __wbg_tablecell_free(a: number): void;
4-
export function createTableCell(): number;
5-
export function tablecell_add_paragraph(a: number, b: number): number;
6-
export function tablecell_vertical_merge(a: number, b: number): number;
7-
export function tablecell_grid_span(a: number, b: number): number;
3+
export function __wbg_level_free(a: number): void;
4+
export function createLevel(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): number;
5+
export function level_indent(a: number, b: number, c: number, d: number, e: number): number;
86
export function __wbg_docx_free(a: number): void;
97
export function createDocx(): number;
108
export function docx_add_paragraph(a: number, b: number): number;
@@ -51,18 +49,21 @@ export function run_bold(a: number): number;
5149
export function run_italic(a: number): number;
5250
export function run_underline(a: number, b: number, c: number): number;
5351
export function run_vanish(a: number): number;
52+
export function __wbg_tablecell_free(a: number): void;
53+
export function createTableCell(): number;
54+
export function tablecell_add_paragraph(a: number, b: number): number;
55+
export function tablecell_vertical_merge(a: number, b: number): number;
56+
export function tablecell_grid_span(a: number, b: number): number;
57+
export function tablecell_width(a: number, b: number): number;
58+
export function __wbg_tablerow_free(a: number): void;
59+
export function createTableRow(): number;
60+
export function tablerow_add_cell(a: number, b: number): number;
5461
export function __wbg_comment_free(a: number): void;
5562
export function createComment(a: number): number;
5663
export function comment_author(a: number, b: number, c: number): number;
5764
export function comment_date(a: number, b: number, c: number): number;
5865
export function comment_paragraph(a: number, b: number): number;
5966
export function comment_id(a: number): number;
60-
export function __wbg_tablerow_free(a: number): void;
61-
export function createTableRow(): number;
62-
export function tablerow_add_cell(a: number, b: number): number;
63-
export function __wbg_level_free(a: number): void;
64-
export function createLevel(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): number;
65-
export function level_indent(a: number, b: number, c: number, d: number, e: number): number;
6667
export function __wbindgen_malloc(a: number): number;
6768
export function __wbindgen_realloc(a: number, b: number, c: number): number;
6869
export function __wbindgen_free(a: number, b: number): void;

docx-wasm/pkg/docx_rs_bg.wasm

410 Bytes
Binary file not shown.

docx-wasm/src/table_cell.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,9 @@ impl TableCell {
3535
self.0.property = self.0.property.grid_span(v);
3636
self
3737
}
38+
39+
pub fn width(mut self, v: usize) -> TableCell {
40+
self.0.property = self.0.property.width(v, docx_core::WidthType::DXA);
41+
self
42+
}
3843
}

0 commit comments

Comments
 (0)