UNPKG

hy_excelize

Version:

买菜用。感谢:https://github.com/zurmokeeper/excelize.git

110 lines (103 loc) 2.39 kB
const {parseRange} = require('./drawing-range'); class Shape { constructor(worksheet, model) { this.worksheet = worksheet; this.model = model; } get model() { return { props: { type: this.props.type, rotation: this.props.rotation, horizontalFlip: this.props.horizontalFlip, verticalFlip: this.props.verticalFlip, fill: this.props.fill, outline: this.props.outline, textBody: this.props.textBody, }, range: { tl: this.range.tl.model, br: this.range.br && this.range.br.model, ext: this.range.ext, editAs: this.range.editAs, }, hyperlinks: this.hyperlinks, }; } set model({props, range, hyperlinks}) { this.props = {type: props.type}; if (props.rotation) { this.props.rotation = props.rotation; } if (props.horizontalFlip) { this.props.horizontalFlip = props.horizontalFlip; } if (props.verticalFlip) { this.props.verticalFlip = props.verticalFlip; } if (props.fill) { this.props.fill = props.fill; } if (props.outline) { this.props.outline = props.outline; } if (props.textBody) { this.props.textBody = parseAsTextBody(props.textBody); } this.range = parseRange(range, undefined, this.worksheet); this.hyperlinks = hyperlinks; } } function parseAsTextBody(input) { if (typeof input === 'string') { return { paragraphs: [parseAsParagraph(input)], }; } if (Array.isArray(input)) { return { paragraphs: input.map(parseAsParagraph), }; } const model = { paragraphs: input.paragraphs.map(parseAsParagraph), }; if (input.vertAlign) { model.vertAlign = input.vertAlign; } return model; } function parseAsParagraph(input) { if (typeof input === 'string') { return { runs: [parseAsRun(input)], }; } if (Array.isArray(input)) { return { runs: input.map(parseAsRun), }; } const model = { runs: input.runs.map(parseAsRun), }; if (input.alignment) { model.alignment = input.alignment; } return model; } function parseAsRun(input) { if (typeof input === 'string') { return { text: input, }; } const model = { text: input.text, }; if (input.font) { model.font = input.font; } return model; } module.exports = Shape;