From 3bc0664852697f1e77f5a95fa5fca3394cc50371 Mon Sep 17 00:00:00 2001 From: Ian Storm Taylor Date: Fri, 22 Jul 2016 12:36:36 -0700 Subject: [PATCH] refactor text model to memoize decorations --- lib/models/text.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/models/text.js b/lib/models/text.js index e1a269a0e..44feb6fbe 100644 --- a/lib/models/text.js +++ b/lib/models/text.js @@ -103,7 +103,7 @@ class Text extends new Record(DEFAULTS) { let { characters, cache } = this if (characters == cache) return this - const decorations = decorator(this) + const decorations = this.getDecoratedCharacters(decorator) if (decorations == characters) return this return this.merge({ @@ -112,10 +112,20 @@ class Text extends new Record(DEFAULTS) { }) } + /** + * Get the decorated characters. + * + * @return {List} characters + */ + + getDecoratedCharacters(decorator) { + return decorator(this) + } + /** * Get the decorated characters grouped by marks. * - * @return {List} + * @return {List} ranges */ getDecoratedRanges() { @@ -125,7 +135,7 @@ class Text extends new Record(DEFAULTS) { /** * Get the characters grouped by marks. * - * @return {List} + * @return {List} ranges */ getRanges() { @@ -234,6 +244,7 @@ class Text extends new Record(DEFAULTS) { */ memoize(Text.prototype, [ + 'getDecoratedCharacters', 'getDecoratedRanges', 'getRanges', 'getRangesForCharacters'