diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/mixed/js/display-generator.js | 22 | 
1 files changed, 14 insertions, 8 deletions
| diff --git a/ext/mixed/js/display-generator.js b/ext/mixed/js/display-generator.js index 41f7315a..d88b8648 100644 --- a/ext/mixed/js/display-generator.js +++ b/ext/mixed/js/display-generator.js @@ -301,22 +301,28 @@ class DisplayGenerator {          }      } -    static _appendMultiple(container, createItem, detailsArray, fallback=[]) { +    static _appendMultiple(container, createItem, detailsIterable, fallback=[]) {          if (container === null) { return 0; } -        const isArray = Array.isArray(detailsArray); -        if (!isArray) { detailsArray = fallback; } +        const multi = ( +            detailsIterable !== null && +            typeof detailsIterable === 'object' && +            typeof detailsIterable[Symbol.iterator] !== 'undefined' +        ); +        if (!multi) { detailsIterable = fallback; } -        container.dataset.multi = `${isArray}`; -        container.dataset.count = `${detailsArray.length}`; - -        for (const details of detailsArray) { +        let count = 0; +        for (const details of detailsIterable) {              const item = createItem(details);              if (item === null) { continue; }              container.appendChild(item); +            ++count;          } -        return detailsArray.length; +        container.dataset.multi = `${multi}`; +        container.dataset.count = `${count}`; + +        return count;      }      static _appendFurigana(container, segments, addText) { |