Skip to content

Commit

Permalink
Limit the list of supported highlight colors (#2522)
Browse files Browse the repository at this point in the history
* Limit the list of supported highlight colors

* Fix tests: use fixed highlight color values

---------

Co-authored-by: ilyasogonov <[email protected]>
  • Loading branch information
octoultra and ilyasogonov authored Jan 12, 2024
1 parent 6b8e223 commit e20bd66
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 29 deletions.
17 changes: 9 additions & 8 deletions src/file/numbering/abstract-numbering.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { Formatter } from "@export/formatter";

import { AlignmentType, EmphasisMarkType, TabStopPosition } from "../paragraph";
import { UnderlineType } from "../paragraph/run/underline";
import { HighlightColor } from "../paragraph/run/properties";
import { ShadingType } from "../shading";
import { AbstractNumbering } from "./abstract-numbering";
import { LevelFormat, LevelSuffix } from "./level";
Expand Down Expand Up @@ -2048,23 +2049,23 @@ describe("AbstractNumbering", () => {

const highlightTests = [
{
highlight: "005599",
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }, { "w:highlightCs": { _attr: { "w:val": "005599" } } }],
highlight: HighlightColor.YELLOW,
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }, { "w:highlightCs": { _attr: { "w:val": "yellow" } } }],
},
{
highlight: "005599",
highlight: HighlightColor.YELLOW,
highlightComplexScript: true,
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }, { "w:highlightCs": { _attr: { "w:val": "005599" } } }],
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }, { "w:highlightCs": { _attr: { "w:val": "yellow" } } }],
},
{
highlight: "005599",
highlight: HighlightColor.YELLOW,
highlightComplexScript: false,
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }],
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }],
},
{
highlight: "005599",
highlight: HighlightColor.YELLOW,
highlightComplexScript: "550099",
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }, { "w:highlightCs": { _attr: { "w:val": "550099" } } }],
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }, { "w:highlightCs": { _attr: { "w:val": "550099" } } }],
},
];
highlightTests.forEach(({ highlight, highlightComplexScript, expected }) => {
Expand Down
29 changes: 28 additions & 1 deletion src/file/paragraph/run/properties.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,33 @@ export const TextEffect = {
NONE: "none",
} as const;

/*
* http://officeopenxml.com/WPtextShading.php
*
* Limit the list of supported highlight colors
*
* */

export const HighlightColor = {
BLACK: "black",
BLUE: "blue",
CYAN: "cyan",
DARK_BLUE: "darkBlue",
DARK_CYAN: "darkCyan",
DARK_GRAY: "darkGray",
DARK_GREEN: "darkGreen",
DARK_MAGENTA: "darkMagenta",
DARK_RED: "darkRed",
DARK_YELLOW: "darkYellow",
GREEN: "green",
LIGHT_GRAY: "lightGray",
MAGENTA: "magenta",
NONE: "none",
RED: "red",
WHITE: "white",
YELLOW: "yellow",
} as const;

/* eslint-enable */

export interface IRunStylePropertiesOptions {
Expand Down Expand Up @@ -65,7 +92,7 @@ export interface IRunStylePropertiesOptions {
readonly subScript?: boolean;
readonly superScript?: boolean;
readonly font?: string | IFontOptions | IFontAttributesProperties;
readonly highlight?: string;
readonly highlight?: (typeof HighlightColor)[keyof typeof HighlightColor];
readonly highlightComplexScript?: boolean | string;
readonly characterSpacing?: number;
readonly shading?: IShadingAttributesProperties;
Expand Down
8 changes: 4 additions & 4 deletions src/file/paragraph/run/run.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { ShadingType } from "@file/shading";
import { EmphasisMarkType } from "./emphasis-mark";
import { PageNumber, Run } from "./run";
import { UnderlineType } from "./underline";
import { TextEffect } from "./properties";
import { HighlightColor, TextEffect } from "./properties";
describe("Run", () => {
describe("#noProof()", () => {
it("turns off spelling and grammar checkers for a run", () => {
Expand Down Expand Up @@ -215,18 +215,18 @@ describe("Run", () => {
describe("#highlight()", () => {
it("it should add highlight to the properties", () => {
const run = new Run({
highlight: "005599",
highlight: HighlightColor.YELLOW,
});
const tree = new Formatter().format(run);
expect(tree).to.deep.equal({
"w:r": [
{
"w:rPr": [
{ "w:highlight": { _attr: { "w:val": "005599" } } },
{ "w:highlight": { _attr: { "w:val": "yellow" } } },
{
"w:highlightCs": {
_attr: {
"w:val": "005599",
"w:val": "yellow",
},
},
},
Expand Down
17 changes: 9 additions & 8 deletions src/file/styles/style/character-style.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest";
import { Formatter } from "@export/formatter";
import { EmphasisMarkType } from "@file/paragraph/run/emphasis-mark";
import { UnderlineType } from "@file/paragraph/run/underline";
import { HighlightColor } from "@file/paragraph/run/properties";
import { ShadingType } from "@file/shading";
import { EMPTY_OBJECT } from "@file/xml-components";

Expand Down Expand Up @@ -728,23 +729,23 @@ describe("CharacterStyle", () => {

const highlightTests = [
{
highlight: "005599",
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }, { "w:highlightCs": { _attr: { "w:val": "005599" } } }],
highlight: HighlightColor.YELLOW,
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }, { "w:highlightCs": { _attr: { "w:val": "yellow" } } }],
},
{
highlight: "005599",
highlight: HighlightColor.YELLOW,
highlightComplexScript: true,
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }, { "w:highlightCs": { _attr: { "w:val": "005599" } } }],
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }, { "w:highlightCs": { _attr: { "w:val": "yellow" } } }],
},
{
highlight: "005599",
highlight: HighlightColor.YELLOW,
highlightComplexScript: false,
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }],
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }],
},
{
highlight: "005599",
highlight: HighlightColor.YELLOW,
highlightComplexScript: "550099",
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }, { "w:highlightCs": { _attr: { "w:val": "550099" } } }],
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }, { "w:highlightCs": { _attr: { "w:val": "550099" } } }],
},
];
highlightTests.forEach(({ highlight, highlightComplexScript, expected }) => {
Expand Down
17 changes: 9 additions & 8 deletions src/file/styles/style/paragraph-style.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest";
import { Formatter } from "@export/formatter";
import { AlignmentType, EmphasisMarkType, TabStopPosition } from "@file/paragraph";
import { UnderlineType } from "@file/paragraph/run/underline";
import { HighlightColor } from "@file/paragraph/run";
import { ShadingType } from "@file/shading";
import { EMPTY_OBJECT } from "@file/xml-components";

Expand Down Expand Up @@ -615,23 +616,23 @@ describe("ParagraphStyle", () => {

const highlightTests = [
{
highlight: "005599",
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }, { "w:highlightCs": { _attr: { "w:val": "005599" } } }],
highlight: HighlightColor.YELLOW,
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }, { "w:highlightCs": { _attr: { "w:val": "yellow" } } }],
},
{
highlight: "005599",
highlight: HighlightColor.YELLOW,
highlightComplexScript: true,
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }, { "w:highlightCs": { _attr: { "w:val": "005599" } } }],
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }, { "w:highlightCs": { _attr: { "w:val": "yellow" } } }],
},
{
highlight: "005599",
highlight: HighlightColor.YELLOW,
highlightComplexScript: false,
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }],
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }],
},
{
highlight: "005599",
highlight: HighlightColor.YELLOW,
highlightComplexScript: "550099",
expected: [{ "w:highlight": { _attr: { "w:val": "005599" } } }, { "w:highlightCs": { _attr: { "w:val": "550099" } } }],
expected: [{ "w:highlight": { _attr: { "w:val": "yellow" } } }, { "w:highlightCs": { _attr: { "w:val": "550099" } } }],
},
];
highlightTests.forEach(({ highlight, highlightComplexScript, expected }) => {
Expand Down

0 comments on commit e20bd66

Please sign in to comment.