33 lines
949 B
TypeScript
33 lines
949 B
TypeScript
import { normaliseFormats } from './normalise-formats';
|
|
import { create } from './create';
|
|
import { RichTextValue } from './types';
|
|
|
|
/**
|
|
* Concats a pair of rich text values. Not that this mutates `a` and does NOT
|
|
* normalise formats!
|
|
*
|
|
* @param {Object} a Value to mutate.
|
|
* @param {Object} b Value to add read from.
|
|
*
|
|
* @return {Object} `a`, mutated.
|
|
*/
|
|
export function mergePair( a: RichTextValue, b: RichTextValue ): RichTextValue {
|
|
a.formats = a.formats.concat( b.formats );
|
|
a.replacements = a.replacements.concat( b.replacements );
|
|
a.text += b.text;
|
|
|
|
return a;
|
|
}
|
|
|
|
/**
|
|
* Combine all Rich Text values into one. This is similar to
|
|
* `String.prototype.concat`.
|
|
*
|
|
* @param {...RichTextValue} values Objects to combine.
|
|
*
|
|
* @return {RichTextValue} A new value combining all given records.
|
|
*/
|
|
export function concat( ...values: RichTextValue[] ): RichTextValue {
|
|
return normaliseFormats( values.reduce( mergePair, create() ) );
|
|
}
|