diff options
Diffstat (limited to 'lib/modifiers')
35 files changed, 0 insertions, 1124 deletions
diff --git a/lib/modifiers/config/__tests__/addPlugin.js b/lib/modifiers/config/__tests__/addPlugin.js deleted file mode 100644 index 61082c9..0000000 --- a/lib/modifiers/config/__tests__/addPlugin.js +++ /dev/null @@ -1,32 +0,0 @@ -var addPlugin = require('../addPlugin'); -var Config = require('../../../models/config'); - -describe('addPlugin', function() { - var config = Config.createWithValues({ - plugins: ['hello', 'world', '-disabled'] - }); - - it('should have correct state of dependencies', function() { - var disabledDep = config.getPluginDependency('disabled'); - - expect(disabledDep).toBeDefined(); - expect(disabledDep.getVersion()).toEqual('*'); - expect(disabledDep.isEnabled()).toBeFalsy(); - }); - - it('should add the plugin to the list', function() { - var newConfig = addPlugin(config, 'test'); - - var testDep = newConfig.getPluginDependency('test'); - expect(testDep).toBeDefined(); - expect(testDep.getVersion()).toEqual('*'); - expect(testDep.isEnabled()).toBeTruthy(); - - var disabledDep = newConfig.getPluginDependency('disabled'); - expect(disabledDep).toBeDefined(); - expect(disabledDep.getVersion()).toEqual('*'); - expect(disabledDep.isEnabled()).toBeFalsy(); - }); -}); - - diff --git a/lib/modifiers/config/__tests__/removePlugin.js b/lib/modifiers/config/__tests__/removePlugin.js deleted file mode 100644 index 253cc39..0000000 --- a/lib/modifiers/config/__tests__/removePlugin.js +++ /dev/null @@ -1,33 +0,0 @@ -var removePlugin = require('../removePlugin'); -var Config = require('../../../models/config'); - -describe('removePlugin', function() { - var config = Config.createWithValues({ - plugins: ['hello', 'world', '-disabled'] - }); - - it('should remove the plugin from the list', function() { - var newConfig = removePlugin(config, 'hello'); - - var testDep = newConfig.getPluginDependency('hello'); - expect(testDep).toNotBeDefined(); - }); - - it('should remove the disabled plugin from the list', function() { - var newConfig = removePlugin(config, 'disabled'); - - var testDep = newConfig.getPluginDependency('disabled'); - expect(testDep).toNotBeDefined(); - }); - - it('should disable default plugin', function() { - var newConfig = removePlugin(config, 'search'); - - var disabledDep = newConfig.getPluginDependency('search'); - expect(disabledDep).toBeDefined(); - expect(disabledDep.getVersion()).toEqual('*'); - expect(disabledDep.isEnabled()).toBeFalsy(); - }); -}); - - diff --git a/lib/modifiers/config/__tests__/togglePlugin.js b/lib/modifiers/config/__tests__/togglePlugin.js deleted file mode 100644 index 4127853..0000000 --- a/lib/modifiers/config/__tests__/togglePlugin.js +++ /dev/null @@ -1,28 +0,0 @@ -var togglePlugin = require('../togglePlugin'); -var Config = require('../../../models/config'); - -describe('togglePlugin', function() { - var config = Config.createWithValues({ - plugins: ['hello', 'world', '-disabled'] - }); - - it('should enable plugin', function() { - var newConfig = togglePlugin(config, 'disabled'); - - var testDep = newConfig.getPluginDependency('disabled'); - expect(testDep).toBeDefined(); - expect(testDep.getVersion()).toEqual('*'); - expect(testDep.isEnabled()).toBeTruthy(); - }); - - it('should disable plugin', function() { - var newConfig = togglePlugin(config, 'world'); - - var testDep = newConfig.getPluginDependency('world'); - expect(testDep).toBeDefined(); - expect(testDep.getVersion()).toEqual('*'); - expect(testDep.isEnabled()).toBeFalsy(); - }); -}); - - diff --git a/lib/modifiers/config/addPlugin.js b/lib/modifiers/config/addPlugin.js deleted file mode 100644 index b8d4ea1..0000000 --- a/lib/modifiers/config/addPlugin.js +++ /dev/null @@ -1,25 +0,0 @@ -var PluginDependency = require('../../models/pluginDependency'); -var togglePlugin = require('./togglePlugin'); -var isDefaultPlugin = require('./isDefaultPlugin'); - -/** - * Add a plugin to a book's configuration - * @param {Config} config - * @param {String} pluginName - * @param {String} version (optional) - * @return {Config} - */ -function addPlugin(config, pluginName, version) { - // For default plugin, we only ensure it is enabled - if (isDefaultPlugin(pluginName, version)) { - return togglePlugin(config, pluginName, true); - } - - var deps = config.getPluginDependencies(); - var dep = PluginDependency.create(pluginName, version); - - deps = deps.push(dep); - return config.setPluginDependencies(deps); -} - -module.exports = addPlugin; diff --git a/lib/modifiers/config/editPlugin.js b/lib/modifiers/config/editPlugin.js deleted file mode 100644 index a792acd..0000000 --- a/lib/modifiers/config/editPlugin.js +++ /dev/null @@ -1,13 +0,0 @@ - -/** - * Edit configuration of a plugin - * @param {Config} config - * @param {String} plugin - * @param {Object} pluginConfig - * @return {Config} - */ -function editPlugin(config, pluginName, pluginConfig) { - return config.setValue('pluginsConfig.'+pluginName, pluginConfig); -} - -module.exports = editPlugin; diff --git a/lib/modifiers/config/getPluginConfig.js b/lib/modifiers/config/getPluginConfig.js deleted file mode 100644 index ae76de8..0000000 --- a/lib/modifiers/config/getPluginConfig.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Return the configuration for a plugin - * @param {Config} config - * @param {String} pluginName - * @return {Object} - */ -function getPluginConfig(config, pluginName) { - var pluginsConfig = config.getValues().get('pluginsConfig'); - if (pluginsConfig === undefined) { - return {}; - } - var pluginConf = pluginsConfig.get(pluginName); - if (pluginConf === undefined) { - return {}; - } else { - return pluginConf.toJS(); - } -} - -module.exports = getPluginConfig; diff --git a/lib/modifiers/config/hasPlugin.js b/lib/modifiers/config/hasPlugin.js deleted file mode 100644 index 9aab4f2..0000000 --- a/lib/modifiers/config/hasPlugin.js +++ /dev/null @@ -1,15 +0,0 @@ - -/** - * Test if a plugin is listed - * @param { {List<PluginDependency}} deps - * @param {String} plugin - * @param {String} version - * @return {Boolean} - */ -function hasPlugin(deps, pluginName, version) { - return !!deps.find(function(dep) { - return dep.getName() === pluginName && (!version || dep.getVersion() === version); - }); -} - -module.exports = hasPlugin; diff --git a/lib/modifiers/config/index.js b/lib/modifiers/config/index.js deleted file mode 100644 index b3de0b0..0000000 --- a/lib/modifiers/config/index.js +++ /dev/null @@ -1,10 +0,0 @@ - -module.exports = { - addPlugin: require('./addPlugin'), - removePlugin: require('./removePlugin'), - togglePlugin: require('./togglePlugin'), - editPlugin: require('./editPlugin'), - hasPlugin: require('./hasPlugin'), - getPluginConfig: require('./getPluginConfig'), - isDefaultPlugin: require('./isDefaultPlugin') -}; diff --git a/lib/modifiers/config/isDefaultPlugin.js b/lib/modifiers/config/isDefaultPlugin.js deleted file mode 100644 index 63a141d..0000000 --- a/lib/modifiers/config/isDefaultPlugin.js +++ /dev/null @@ -1,14 +0,0 @@ -var DEFAULT_PLUGINS = require('../../constants/defaultPlugins'); -var hasPlugin = require('./hasPlugin'); - -/** - * Test if a plugin is a default one - * @param {String} plugin - * @param {String} version - * @return {Boolean} - */ -function isDefaultPlugin(pluginName, version) { - return hasPlugin(DEFAULT_PLUGINS, pluginName, version); -} - -module.exports = isDefaultPlugin; diff --git a/lib/modifiers/config/removePlugin.js b/lib/modifiers/config/removePlugin.js deleted file mode 100644 index ec06d1e..0000000 --- a/lib/modifiers/config/removePlugin.js +++ /dev/null @@ -1,25 +0,0 @@ -var togglePlugin = require('./togglePlugin'); -var isDefaultPlugin = require('./isDefaultPlugin'); - -/** - * Remove a plugin from a book's configuration - * @param {Config} config - * @param {String} plugin - * @return {Config} - */ -function removePlugin(config, pluginName) { - var deps = config.getPluginDependencies(); - - // For default plugin, we have to disable it instead of removing from the list - if (isDefaultPlugin(pluginName)) { - return togglePlugin(config, pluginName, false); - } - - // Remove the dependency from the list - deps = deps.filterNot(function(dep) { - return dep.getName() === pluginName; - }); - return config.setPluginDependencies(deps); -} - -module.exports = removePlugin; diff --git a/lib/modifiers/config/togglePlugin.js b/lib/modifiers/config/togglePlugin.js deleted file mode 100644 index a49e3b9..0000000 --- a/lib/modifiers/config/togglePlugin.js +++ /dev/null @@ -1,31 +0,0 @@ -var PluginDependency = require('../../models/pluginDependency'); -var hasPlugin = require('./hasPlugin'); -var isDefaultPlugin = require('./isDefaultPlugin'); - -/** - * Enable/disable a plugin dependency - * @param {Config} config - * @param {String} pluginName - * @param {Boolean} state (optional) - * @return {Config} - */ -function togglePlugin(config, pluginName, state) { - var deps = config.getPluginDependencies(); - - // For default plugin, we should ensure it's listed first - if (isDefaultPlugin(pluginName) && !hasPlugin(deps, pluginName)) { - deps = deps.push(PluginDependency.create(pluginName)); - } - - deps = deps.map(function(dep) { - if (dep.getName() === pluginName) { - return dep.toggle(state); - } - - return dep; - }); - - return config.setPluginDependencies(deps); -} - -module.exports = togglePlugin; diff --git a/lib/modifiers/index.js b/lib/modifiers/index.js deleted file mode 100644 index ad24604..0000000 --- a/lib/modifiers/index.js +++ /dev/null @@ -1,5 +0,0 @@ - -module.exports = { - Summary: require('./summary'), - Config: require('./config') -}; diff --git a/lib/modifiers/summary/__tests__/editArticle.js b/lib/modifiers/summary/__tests__/editArticle.js deleted file mode 100644 index e69de29..0000000 --- a/lib/modifiers/summary/__tests__/editArticle.js +++ /dev/null diff --git a/lib/modifiers/summary/__tests__/editPartTitle.js b/lib/modifiers/summary/__tests__/editPartTitle.js deleted file mode 100644 index d1b916b..0000000 --- a/lib/modifiers/summary/__tests__/editPartTitle.js +++ /dev/null @@ -1,44 +0,0 @@ -var Summary = require('../../../models/summary'); -var File = require('../../../models/file'); - -describe('editPartTitle', function() { - var editPartTitle = require('../editPartTitle'); - var summary = Summary.createFromParts(File(), [ - { - articles: [ - { - title: 'My First Article', - path: 'README.md' - }, - { - title: 'My Second Article', - path: 'article.md' - } - ] - }, - { - title: 'Test' - } - ]); - - it('should correctly set title of first part', function() { - var newSummary = editPartTitle(summary, 0, 'Hello World'); - var part = newSummary.getPart(0); - - expect(part.getTitle()).toBe('Hello World'); - }); - - it('should correctly set title of second part', function() { - var newSummary = editPartTitle(summary, 1, 'Hello'); - var part = newSummary.getPart(1); - - expect(part.getTitle()).toBe('Hello'); - }); - - it('should not fail if part doesn\'t exist', function() { - var newSummary = editPartTitle(summary, 3, 'Hello'); - expect(newSummary.getParts().size).toBe(2); - }); -}); - - diff --git a/lib/modifiers/summary/__tests__/insertArticle.js b/lib/modifiers/summary/__tests__/insertArticle.js deleted file mode 100644 index 1ee1c8a..0000000 --- a/lib/modifiers/summary/__tests__/insertArticle.js +++ /dev/null @@ -1,78 +0,0 @@ -var Summary = require('../../../models/summary'); -var SummaryArticle = require('../../../models/summaryArticle'); -var File = require('../../../models/file'); - -describe('insertArticle', function() { - var insertArticle = require('../insertArticle'); - var summary = Summary.createFromParts(File(), [ - { - articles: [ - { - title: '1.1', - path: '1.1' - }, - { - title: '1.2', - path: '1.2' - } - ] - }, - { - title: 'Part I', - articles: [ - { - title: '2.1', - path: '2.1', - articles: [ - { - title: '2.1.1', - path: '2.1.1' - }, - { - title: '2.1.2', - path: '2.1.2' - } - ] - }, - { - title: '2.2', - path: '2.2' - } - ] - } - ]); - - it('should insert an article at a given level', function() { - var article = SummaryArticle.create({ - title: 'Inserted' - }, 'fake.level'); - - var newSummary = insertArticle(summary, article, '2.1.1'); - - var inserted = newSummary.getByLevel('2.1.1'); - var nextOne = newSummary.getByLevel('2.1.2'); - - expect(inserted.getTitle()).toBe('Inserted'); - expect(inserted.getLevel()).toBe('2.1.1'); - - expect(nextOne.getTitle()).toBe('2.1.1'); - expect(nextOne.getLevel()).toBe('2.1.2'); - }); - - it('should insert an article in last position', function() { - var article = SummaryArticle.create({ - title: 'Inserted' - }, 'fake.level'); - - var newSummary = insertArticle(summary, article, '2.2'); - - var inserted = newSummary.getByLevel('2.2'); - var previousOne = newSummary.getByLevel('2.1'); - - expect(inserted.getTitle()).toBe('Inserted'); - expect(inserted.getLevel()).toBe('2.2'); - - expect(previousOne.getTitle()).toBe('2.1'); // Unchanged - expect(previousOne.getLevel()).toBe('2.1'); - }); -}); diff --git a/lib/modifiers/summary/__tests__/insertPart.js b/lib/modifiers/summary/__tests__/insertPart.js deleted file mode 100644 index 11c2cbc..0000000 --- a/lib/modifiers/summary/__tests__/insertPart.js +++ /dev/null @@ -1,60 +0,0 @@ -var Summary = require('../../../models/summary'); -var SummaryPart = require('../../../models/summaryPart'); - -var File = require('../../../models/file'); - -describe('insertPart', function() { - var insertPart = require('../insertPart'); - var summary = Summary.createFromParts(File(), [ - { - articles: [ - { - title: '1.1', - path: '1.1' - } - ] - }, - { - title: 'Part I', - articles: [ - { - title: '2.1', - path: '2.1', - articles: [] - }, - { - title: '2.2', - path: '2.2' - } - ] - } - ]); - - it('should insert an part at a given level', function() { - var part = SummaryPart.create({ - title: 'Inserted' - }, 'meaningless.level'); - - var newSummary = insertPart(summary, part, 1); - - var inserted = newSummary.getPart(1); - expect(inserted.getTitle()).toBe('Inserted'); - expect(newSummary.getParts().count()).toBe(3); - - var otherArticle = newSummary.getByLevel('3.1'); - expect(otherArticle.getTitle()).toBe('2.1'); - expect(otherArticle.getLevel()).toBe('3.1'); - }); - - it('should insert an part in last position', function() { - var part = SummaryPart.create({ - title: 'Inserted' - }, 'meaningless.level'); - - var newSummary = insertPart(summary, part, 2); - - var inserted = newSummary.getPart(2); - expect(inserted.getTitle()).toBe('Inserted'); - expect(newSummary.getParts().count()).toBe(3); - }); -}); diff --git a/lib/modifiers/summary/__tests__/mergeAtLevel.js b/lib/modifiers/summary/__tests__/mergeAtLevel.js deleted file mode 100644 index e2635ec..0000000 --- a/lib/modifiers/summary/__tests__/mergeAtLevel.js +++ /dev/null @@ -1,45 +0,0 @@ -var Immutable = require('immutable'); -var Summary = require('../../../models/summary'); -var File = require('../../../models/file'); - -describe('mergeAtLevel', function() { - var mergeAtLevel = require('../mergeAtLevel'); - var summary = Summary.createFromParts(File(), [ - { - articles: [ - { - title: '1.1', - path: '1.1' - }, - { - title: '1.2', - path: '1.2' - } - ] - }, - { - title: 'Part I', - articles: [] - } - ]); - - it('should edit a part', function() { - var beforeChildren = summary.getByLevel('1').getArticles(); - var newSummary = mergeAtLevel(summary, '1', {title: 'Part O'}); - var edited = newSummary.getByLevel('1'); - - expect(edited.getTitle()).toBe('Part O'); - // Same children - expect(Immutable.is(beforeChildren, edited.getArticles())).toBe(true); - }); - - it('should edit a part', function() { - var beforePath = summary.getByLevel('1.2').getPath(); - var newSummary = mergeAtLevel(summary, '1.2', {title: 'Renamed article'}); - var edited = newSummary.getByLevel('1.2'); - - expect(edited.getTitle()).toBe('Renamed article'); - // Same children - expect(Immutable.is(beforePath, edited.getPath())).toBe(true); - }); -}); diff --git a/lib/modifiers/summary/__tests__/moveArticle.js b/lib/modifiers/summary/__tests__/moveArticle.js deleted file mode 100644 index aed0b94..0000000 --- a/lib/modifiers/summary/__tests__/moveArticle.js +++ /dev/null @@ -1,68 +0,0 @@ -var Immutable = require('immutable'); -var Summary = require('../../../models/summary'); -var File = require('../../../models/file'); - -describe('moveArticle', function() { - var moveArticle = require('../moveArticle'); - var summary = Summary.createFromParts(File(), [ - { - articles: [ - { - title: '1.1', - path: '1.1' - }, - { - title: '1.2', - path: '1.2' - } - ] - }, - { - title: 'Part I', - articles: [ - { - title: '2.1', - path: '2.1', - articles: [ - { - title: '2.1.1', - path: '2.1.1' - }, - { - title: '2.1.2', - path: '2.1.2' - } - ] - }, - { - title: '2.2', - path: '2.2' - } - ] - } - ]); - - it('should move an article to the same place', function() { - var newSummary = moveArticle(summary, '2.1', '2.1'); - - expect(Immutable.is(summary, newSummary)).toBe(true); - }); - - it('should move an article to an previous level', function() { - var newSummary = moveArticle(summary, '2.2', '2.1'); - var moved = newSummary.getByLevel('2.1'); - var other = newSummary.getByLevel('2.2'); - - expect(moved.getTitle()).toBe('2.2'); - expect(other.getTitle()).toBe('2.1'); - }); - - it('should move an article to a next level', function() { - var newSummary = moveArticle(summary, '2.1', '2.2'); - var moved = newSummary.getByLevel('2.1'); - var other = newSummary.getByLevel('2.2'); - - expect(moved.getTitle()).toBe('2.2'); - expect(other.getTitle()).toBe('2.1'); - }); -}); diff --git a/lib/modifiers/summary/__tests__/moveArticleAfter.js b/lib/modifiers/summary/__tests__/moveArticleAfter.js deleted file mode 100644 index c380575..0000000 --- a/lib/modifiers/summary/__tests__/moveArticleAfter.js +++ /dev/null @@ -1,82 +0,0 @@ -var Immutable = require('immutable'); -var Summary = require('../../../models/summary'); -var File = require('../../../models/file'); - -describe('moveArticleAfter', function() { - var moveArticleAfter = require('../moveArticleAfter'); - var summary = Summary.createFromParts(File(), [ - { - articles: [ - { - title: '1.1', - path: '1.1' - }, - { - title: '1.2', - path: '1.2' - } - ] - }, - { - title: 'Part I', - articles: [ - { - title: '2.1', - path: '2.1', - articles: [ - { - title: '2.1.1', - path: '2.1.1' - }, - { - title: '2.1.2', - path: '2.1.2' - } - ] - }, - { - title: '2.2', - path: '2.2' - } - ] - } - ]); - - it('moving right after itself should be invariant', function() { - var newSummary = moveArticleAfter(summary, '2.1', '2.1'); - - expect(Immutable.is(summary, newSummary)).toBe(true); - }); - - it('moving after previous one should be invariant too', function() { - var newSummary = moveArticleAfter(summary, '2.1', '2.0'); - - expect(Immutable.is(summary, newSummary)).toBe(true); - }); - - it('should move an article after a previous level', function() { - var newSummary = moveArticleAfter(summary, '2.2', '2.0'); - var moved = newSummary.getByLevel('2.1'); - - expect(moved.getTitle()).toBe('2.2'); - expect(newSummary.getByLevel('2.2').getTitle()).toBe('2.1'); - }); - - it('should move an article after a previous and less deep level', function() { - var newSummary = moveArticleAfter(summary, '2.1.1', '2.0'); - var moved = newSummary.getByLevel('2.1'); - - expect(moved.getTitle()).toBe('2.1.1'); - expect(newSummary.getByLevel('2.2.1').getTitle()).toBe('2.1.2'); - expect(newSummary.getByLevel('2.2').getTitle()).toBe('2.1'); - }); - - it('should move an article after a next level', function() { - var newSummary = moveArticleAfter(summary, '2.1', '2.2'); - var moved = newSummary.getByLevel('2.2'); - - expect(moved.getTitle()).toBe('2.1'); - expect(newSummary.getByLevel('2.1').getTitle()).toBe('2.2'); - }); - -}); diff --git a/lib/modifiers/summary/__tests__/removeArticle.js b/lib/modifiers/summary/__tests__/removeArticle.js deleted file mode 100644 index b45fb49..0000000 --- a/lib/modifiers/summary/__tests__/removeArticle.js +++ /dev/null @@ -1,53 +0,0 @@ -var Summary = require('../../../models/summary'); -var File = require('../../../models/file'); - -describe('removeArticle', function() { - var removeArticle = require('../removeArticle'); - var summary = Summary.createFromParts(File(), [ - { - articles: [ - { - title: '1.1', - path: '1.1' - }, - { - title: '1.2', - path: '1.2' - } - ] - }, - { - title: 'Part I', - articles: [ - { - title: '2.1', - path: '2.1', - articles: [ - { - title: '2.1.1', - path: '2.1.1' - }, - { - title: '2.1.2', - path: '2.1.2' - } - ] - }, - { - title: '2.2', - path: '2.2' - } - ] - } - ]); - - it('should remove an article at a given level', function() { - var newSummary = removeArticle(summary, '2.1.1'); - - var removed = newSummary.getByLevel('2.1.1'); - var nextOne = newSummary.getByLevel('2.1.2'); - - expect(removed.getTitle()).toBe('2.1.2'); - expect(nextOne).toBe(null); - }); -}); diff --git a/lib/modifiers/summary/editArticleRef.js b/lib/modifiers/summary/editArticleRef.js deleted file mode 100644 index 7106960..0000000 --- a/lib/modifiers/summary/editArticleRef.js +++ /dev/null @@ -1,17 +0,0 @@ -var mergeAtLevel = require('./mergeAtLevel'); - -/** - Edit the ref of an article - - @param {Summary} summary - @param {String} level - @param {String} newRef - @return {Summary} -*/ -function editArticleRef(summary, level, newRef) { - return mergeAtLevel(summary, level, { - ref: newRef - }); -} - -module.exports = editArticleRef; diff --git a/lib/modifiers/summary/editArticleTitle.js b/lib/modifiers/summary/editArticleTitle.js deleted file mode 100644 index 4edee83..0000000 --- a/lib/modifiers/summary/editArticleTitle.js +++ /dev/null @@ -1,17 +0,0 @@ -var mergeAtLevel = require('./mergeAtLevel'); - -/** - Edit title of an article - - @param {Summary} summary - @param {String} level - @param {String} newTitle - @return {Summary} -*/ -function editArticleTitle(summary, level, newTitle) { - return mergeAtLevel(summary, level, { - title: newTitle - }); -} - -module.exports = editArticleTitle; diff --git a/lib/modifiers/summary/editPartTitle.js b/lib/modifiers/summary/editPartTitle.js deleted file mode 100644 index b79ac1e..0000000 --- a/lib/modifiers/summary/editPartTitle.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - Edit title of a part in the summary - - @param {Summary} summary - @param {Number} index - @param {String} newTitle - @return {Summary} -*/ -function editPartTitle(summary, index, newTitle) { - var parts = summary.getParts(); - - var part = parts.get(index); - if (!part) { - return summary; - } - - part = part.set('title', newTitle); - parts = parts.set(index, part); - - return summary.set('parts', parts); -} - -module.exports = editPartTitle; diff --git a/lib/modifiers/summary/index.js b/lib/modifiers/summary/index.js deleted file mode 100644 index f91fdb6..0000000 --- a/lib/modifiers/summary/index.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - insertArticle: require('./insertArticle'), - moveArticle: require('./moveArticle'), - moveArticleAfter: require('./moveArticleAfter'), - removeArticle: require('./removeArticle'), - unshiftArticle: require('./unshiftArticle'), - editArticleTitle: require('./editArticleTitle'), - editArticleRef: require('./editArticleRef'), - - insertPart: require('./insertPart'), - removePart: require('./removePart'), - editPartTitle: require('./editPartTitle') -}; diff --git a/lib/modifiers/summary/indexArticleLevels.js b/lib/modifiers/summary/indexArticleLevels.js deleted file mode 100644 index f311f74..0000000 --- a/lib/modifiers/summary/indexArticleLevels.js +++ /dev/null @@ -1,23 +0,0 @@ - -/** - Index levels in an article tree - - @param {Article} - @param {String} baseLevel - @return {Article} -*/ -function indexArticleLevels(article, baseLevel) { - baseLevel = baseLevel || article.getLevel(); - var articles = article.getArticles(); - - articles = articles.map(function(inner, i) { - return indexArticleLevels(inner, baseLevel + '.' + (i + 1)); - }); - - return article.merge({ - level: baseLevel, - articles: articles - }); -} - -module.exports = indexArticleLevels; diff --git a/lib/modifiers/summary/indexLevels.js b/lib/modifiers/summary/indexLevels.js deleted file mode 100644 index 604e9ff..0000000 --- a/lib/modifiers/summary/indexLevels.js +++ /dev/null @@ -1,17 +0,0 @@ -var indexPartLevels = require('./indexPartLevels'); - -/** - Index all levels in the summary - - @param {Summary} - @return {Summary} -*/ -function indexLevels(summary) { - var parts = summary.getParts(); - parts = parts.map(indexPartLevels); - - return summary.set('parts', parts); -} - - -module.exports = indexLevels; diff --git a/lib/modifiers/summary/indexPartLevels.js b/lib/modifiers/summary/indexPartLevels.js deleted file mode 100644 index d19c70a..0000000 --- a/lib/modifiers/summary/indexPartLevels.js +++ /dev/null @@ -1,24 +0,0 @@ -var indexArticleLevels = require('./indexArticleLevels'); - -/** - Index levels in a part - - @param {Part} - @param {Number} index - @return {Part} -*/ -function indexPartLevels(part, index) { - var baseLevel = String(index + 1); - var articles = part.getArticles(); - - articles = articles.map(function(inner, i) { - return indexArticleLevels(inner, baseLevel + '.' + (i + 1)); - }); - - return part.merge({ - level: baseLevel, - articles: articles - }); -} - -module.exports = indexPartLevels; diff --git a/lib/modifiers/summary/insertArticle.js b/lib/modifiers/summary/insertArticle.js deleted file mode 100644 index 3a084b3..0000000 --- a/lib/modifiers/summary/insertArticle.js +++ /dev/null @@ -1,49 +0,0 @@ -var is = require('is'); -var SummaryArticle = require('../../models/summaryArticle'); -var mergeAtLevel = require('./mergeAtLevel'); -var indexArticleLevels = require('./indexArticleLevels'); - -/** - Returns a new Summary with the article at the given level, with - subsequent article shifted. - - @param {Summary} summary - @param {Article} article - @param {String|Article} level: level to insert at - @return {Summary} -*/ -function insertArticle(summary, article, level) { - article = SummaryArticle(article); - level = is.string(level)? level : level.getLevel(); - - var parent = summary.getParent(level); - if (!parent) { - return summary; - } - - // Find the index to insert at - var articles = parent.getArticles(); - var index = getLeafIndex(level); - - // Insert the article at the right index - articles = articles.insert(index, article); - - // Reindex the level from here - parent = parent.set('articles', articles); - parent = indexArticleLevels(parent); - - return mergeAtLevel(summary, parent.getLevel(), parent); -} - -/** - @param {String} - @return {Number} The index of this level within its parent's children - */ -function getLeafIndex(level) { - var arr = level.split('.').map(function (char) { - return parseInt(char, 10); - }); - return arr[arr.length - 1] - 1; -} - -module.exports = insertArticle; diff --git a/lib/modifiers/summary/insertPart.js b/lib/modifiers/summary/insertPart.js deleted file mode 100644 index 199cba7..0000000 --- a/lib/modifiers/summary/insertPart.js +++ /dev/null @@ -1,19 +0,0 @@ -var SummaryPart = require('../../models/summaryPart'); -var indexLevels = require('./indexLevels'); - -/** - Returns a new Summary with a part inserted at given index - - @param {Summary} summary - @param {Part} part - @param {Number} index - @return {Summary} -*/ -function insertPart(summary, part, index) { - part = SummaryPart(part); - - var parts = summary.getParts().insert(index, part); - return indexLevels(summary.set('parts', parts)); -} - -module.exports = insertPart; diff --git a/lib/modifiers/summary/mergeAtLevel.js b/lib/modifiers/summary/mergeAtLevel.js deleted file mode 100644 index 9a95ffc..0000000 --- a/lib/modifiers/summary/mergeAtLevel.js +++ /dev/null @@ -1,75 +0,0 @@ - -/** - Edit a list of articles - - @param {List<Article>} articles - @param {String} level - @param {Article} newArticle - @return {List<Article>} -*/ -function editArticleInList(articles, level, newArticle) { - return articles.map(function(article) { - var articleLevel = article.getLevel(); - - if (articleLevel === level) { - // it is the article to edit - return article.merge(newArticle); - } else if (level.indexOf(articleLevel) === 0) { - // it is a parent - var articles = editArticleInList(article.getArticles(), level, newArticle); - return article.set('articles', articles); - } else { - // This is not the article you are looking for - return article; - } - }); -} - - -/** - Edit an article in a part - - @param {Part} part - @param {String} level - @param {Article} newArticle - @return {Part} -*/ -function editArticleInPart(part, level, newArticle) { - var articles = part.getArticles(); - articles = editArticleInList(articles, level, newArticle); - - return part.set('articles', articles); -} - - -/** - Edit an article, or a part, in a summary. Does a shallow merge. - - @param {Summary} summary - @param {String} level - @param {Article|Part} newValue - @return {Summary} -*/ -function mergeAtLevel(summary, level, newValue) { - var levelParts = level.split('.'); - var partIndex = Number(levelParts[0]) -1; - - var parts = summary.getParts(); - var part = parts.get(partIndex); - if (!part) { - return summary; - } - - var isEditingPart = levelParts.length < 2; - if (isEditingPart) { - part = part.merge(newValue); - } else { - part = editArticleInPart(part, level, newValue); - } - - parts = parts.set(partIndex, part); - return summary.set('parts', parts); -} - - -module.exports = mergeAtLevel; diff --git a/lib/modifiers/summary/moveArticle.js b/lib/modifiers/summary/moveArticle.js deleted file mode 100644 index 5cb1868..0000000 --- a/lib/modifiers/summary/moveArticle.js +++ /dev/null @@ -1,25 +0,0 @@ -var is = require('is'); -var removeArticle = require('./removeArticle'); -var insertArticle = require('./insertArticle'); - -/** - Returns a new summary, with the given article removed from its - origin level, and placed at the given target level. - - @param {Summary} summary - @param {String|SummaryArticle} origin: level to remove - @param {String|SummaryArticle} target: the level where the article will be found - @return {Summary} -*/ -function moveArticle(summary, origin, target) { - // Coerce to level - var originLevel = is.string(origin)? origin : origin.getLevel(); - var targetLevel = is.string(target)? target : target.getLevel(); - var article = summary.getByLevel(originLevel); - - // Remove first - var removed = removeArticle(summary, originLevel); - return insertArticle(removed, article, targetLevel); -} - -module.exports = moveArticle; diff --git a/lib/modifiers/summary/moveArticleAfter.js b/lib/modifiers/summary/moveArticleAfter.js deleted file mode 100644 index e268f73..0000000 --- a/lib/modifiers/summary/moveArticleAfter.js +++ /dev/null @@ -1,60 +0,0 @@ -var is = require('is'); -var removeArticle = require('./removeArticle'); -var insertArticle = require('./insertArticle'); - -/** - Returns a new summary, with the an article moved after another - article. Unlike `moveArticle`, does not ensure that the article - will be found at the target's level plus one. - - @param {Summary} summary - @param {String|SummaryArticle} origin - @param {String|SummaryArticle} afterTarget - @return {Summary} -*/ -function moveArticleAfter(summary, origin, afterTarget) { - // Coerce to level - var originLevel = is.string(origin)? origin : origin.getLevel(); - var afterTargetLevel = is.string(afterTarget)? afterTarget : afterTarget.getLevel(); - var article = summary.getByLevel(originLevel); - - var targetLevel = increment(afterTargetLevel); - - if (targetLevel < origin) { - // Remove first - var removed = removeArticle(summary, originLevel); - // Insert then - return insertArticle(removed, article, targetLevel); - } else { - // Insert right after first - var inserted = insertArticle(summary, article, targetLevel); - // Remove old one - return removeArticle(inserted, originLevel); - } -} - -/** - @param {String} - @return {Array<Number>} - */ -function levelToArray(l) { - return l.split('.').map(function (char) { - return parseInt(char, 10); - }); -} - -/** - @param {Array<Number>} - @return {String} - */ -function arrayToLevel(a) { - return a.join('.'); -} - -function increment(level) { - level = levelToArray(level); - level[level.length - 1]++; - return arrayToLevel(level); -} - -module.exports = moveArticleAfter; diff --git a/lib/modifiers/summary/removeArticle.js b/lib/modifiers/summary/removeArticle.js deleted file mode 100644 index 8a30d0a..0000000 --- a/lib/modifiers/summary/removeArticle.js +++ /dev/null @@ -1,37 +0,0 @@ -var is = require('is'); -var mergeAtLevel = require('./mergeAtLevel'); -var indexArticleLevels = require('./indexArticleLevels'); - -/** - Remove an article from a level. - - @param {Summary} summary - @param {String|SummaryArticle} level: level to remove - @return {Summary} -*/ -function removeArticle(summary, level) { - // Coerce to level - level = is.string(level)? level : level.getLevel(); - - var parent = summary.getParent(level); - - var articles = parent.getArticles(); - // Find the index to remove - var index = articles.findIndex(function(art) { - return art.getLevel() === level; - }); - if (index === -1) { - return summary; - } - - // Remove from children - articles = articles.remove(index); - parent = parent.set('articles', articles); - - // Reindex the level from here - parent = indexArticleLevels(parent); - - return mergeAtLevel(summary, parent.getLevel(), parent); -} - -module.exports = removeArticle; diff --git a/lib/modifiers/summary/removePart.js b/lib/modifiers/summary/removePart.js deleted file mode 100644 index 2f8affc..0000000 --- a/lib/modifiers/summary/removePart.js +++ /dev/null @@ -1,15 +0,0 @@ -var indexLevels = require('./indexLevels'); - -/** - Remove a part at given index - - @param {Summary} summary - @param {Number|} index - @return {Summary} -*/ -function removePart(summary, index) { - var parts = summary.getParts().remove(index); - return indexLevels(summary.set('parts', parts)); -} - -module.exports = removePart; diff --git a/lib/modifiers/summary/unshiftArticle.js b/lib/modifiers/summary/unshiftArticle.js deleted file mode 100644 index d1ebc05..0000000 --- a/lib/modifiers/summary/unshiftArticle.js +++ /dev/null @@ -1,29 +0,0 @@ -var SummaryArticle = require('../../models/summaryArticle'); -var SummaryPart = require('../../models/summaryPart'); - -var indexLevels = require('./indexLevels'); - -/** - Insert an article at the beginning of summary - - @param {Summary} summary - @param {Article} article - @return {Summary} -*/ -function unshiftArticle(summary, article) { - article = SummaryArticle(article); - - var parts = summary.getParts(); - var part = parts.get(0) || SummaryPart(); - - var articles = part.getArticles(); - articles = articles.unshift(article); - part = part.set('articles', articles); - - parts = parts.set(0, part); - summary = summary.set('parts', parts); - - return indexLevels(summary); -} - -module.exports = unshiftArticle; |