From 4b4ccad6a3a7f0e1e57b46ba52cef9d30113d5f9 Mon Sep 17 00:00:00 2001 From: Josh Hollinshead Date: Wed, 8 Feb 2017 21:06:54 +1300 Subject: [PATCH] Apply a function approach to the route-error component. --- app/components/route-error.js | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/app/components/route-error.js b/app/components/route-error.js index c3a5099..a69ecaf 100644 --- a/app/components/route-error.js +++ b/app/components/route-error.js @@ -2,25 +2,21 @@ import Ember from 'ember'; import markdownFiles from 'ember-fr-markdown-file/markdownFiles'; const { computed } = Ember; +const excludedPages = ['intro']; export default Ember.Component.extend({ - _parseObj(obj, dir) { - let prefix = dir || ''; - let result = []; - let that = this; - for (let prop in obj) { - let value = obj[prop]; - if (typeof value === 'object') { - result.push(that._parseObj(value, prop)); - } else { - if (prop !== 'intro') { - result.push(`${prefix}/${prop}`.replace(/^\//, '')); - } - } - } - return result; + _parsePages(obj, prefix) { + return Object.keys(obj).map(key => { + const value = obj[key]; + if (typeof value === 'object') { + return this._parsePages(value, key); + } + return prefix ? `${prefix}/${key}` : key; + }) + .reject(p => excludedPages.includes(p)) + .reverse(); }, availablePages: computed(function() { - return [].concat.apply([], this._parseObj(markdownFiles)); + return [].concat.apply([], this._parsePages(markdownFiles)); }) });