Skip to content

Commit cbe3d42

Browse files
committed
split module class attribute into public/private classes
1 parent d076542 commit cbe3d42

File tree

5 files changed

+131
-62
lines changed

5 files changed

+131
-62
lines changed

index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ let fetch = require('./lib/fetch')
1111
let readDocs = require('./lib/read-docs')
1212
let addSinceTags = require('./lib/add-since-tags')
1313
let addInheritedItems = require('./lib/add-inherited-items')
14-
let addSubModulesParent = require('./lib/add-sub-modules-parent')
14+
let transformModules = require('./lib/modules-transform')
1515
let putClassesInCouch = require('./lib/classes-in-couch')
1616
let createVersionIndex = require('./lib/create-version-index')
1717
let normalizeEmberDependencies = require('./lib/normalize-ember-dependencies')
@@ -36,8 +36,8 @@ function transformProjectFiles (projectName) {
3636
console.log('reading docs for ' + projectName)
3737
let promise = RSVP.resolve(readDocs(projectName))
3838
.then((stuff) => {
39-
console.log('adding sub modules parent for ' + projectName)
40-
return addSubModulesParent(stuff)
39+
console.log('transforming modules for ' + projectName)
40+
return transformModules(stuff)
4141
}).then((stuff) => {
4242
console.log('adding since tags for ' + projectName)
4343
return addSinceTags(stuff)

lib/add-sub-modules-parent.js

Lines changed: 0 additions & 18 deletions
This file was deleted.

lib/modules-transform.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'use strict'
2+
3+
let _ = require('lodash')
4+
let RSVP = require('rsvp')
5+
6+
function addSubModulesParentAttribute (moduleObj) {
7+
moduleObj.parent = moduleObj.is_submodule ? moduleObj.module : null
8+
}
9+
10+
function isPrivate (klass) {
11+
return klass.access === 'private' || klass.deprecated === true
12+
}
13+
14+
function addPrivatePublicClassesAttributes (module, classes) {
15+
module.publicclasses = []
16+
module.privateclasses = []
17+
Object.keys(module.classes).forEach((className) => {
18+
isPrivate(classes[className]) ? module.privateclasses.push(className) : module.publicclasses.push(className)
19+
})
20+
delete module.classes
21+
}
22+
23+
module.exports = function transformModules (docSets) {
24+
docSets.forEach(function (versionData) {
25+
let modules = _.values(versionData.data.modules)
26+
let classes = versionData.data.classes
27+
modules.forEach((mod) => {
28+
addSubModulesParentAttribute(mod)
29+
addPrivatePublicClassesAttributes(mod, classes)
30+
})
31+
})
32+
33+
return RSVP.resolve(docSets)
34+
}

test/add-sub-modules-parent-test.js

Lines changed: 0 additions & 41 deletions
This file was deleted.

test/modules-transform-test.js

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
'use strict'
2+
3+
let transformModules = require('../lib/modules-transform')
4+
let assert = require('chai').assert
5+
let _ = require('lodash')
6+
7+
describe('transformModules', function () {
8+
beforeEach(function () {
9+
this.yuiDocSets = _.range(3).map(i => {
10+
return {
11+
version: 'v1.0.' + i,
12+
data: {
13+
modules: [
14+
{
15+
is_submodule: 1,
16+
module: 'foo',
17+
classes: {
18+
'Testing.class.private-1': 1,
19+
'Testing.class.public-2': 1,
20+
'Testing.class.private-3': 1,
21+
'Testing.class.public-4': 1,
22+
'Testing.class.deprecated-3': 1
23+
}
24+
},
25+
{
26+
is_submodule: 1,
27+
module: 'foo',
28+
classes: {
29+
'Testing.class.private-1': 1
30+
}
31+
},
32+
{
33+
is_submodule: 0,
34+
module: 'bar',
35+
classes: {
36+
'Testing.class.private-1': 1,
37+
'Testing.class.public-2': 1
38+
}
39+
}
40+
],
41+
classes: {
42+
'Testing.class.private-1': {
43+
access: 'private',
44+
deprecated: false
45+
},
46+
'Testing.class.public-2': {
47+
access: 'public',
48+
deprecated: false
49+
},
50+
'Testing.class.private-3': {
51+
access: 'private',
52+
deprecated: false
53+
},
54+
'Testing.class.public-4': {
55+
access: 'public',
56+
deprecated: false
57+
},
58+
'Testing.class.deprecated-3': {
59+
access: 'public',
60+
deprecated: true
61+
}
62+
}
63+
}
64+
}
65+
})
66+
transformModules(this.yuiDocSets)
67+
})
68+
69+
it('adds a parent attribute to sub modules', function () {
70+
this.yuiDocSets.forEach(docSet => {
71+
let subModules = _.filter(docSet.data.modules, (mod) => (mod.is_submodule))
72+
subModules.forEach((moduleItem) => {
73+
assert.equal(moduleItem.parent, 'foo')
74+
})
75+
})
76+
})
77+
78+
it('publicclasses/privateclasses attributes are set correctly', function () {
79+
this.yuiDocSets.forEach(docSet => {
80+
let modules = docSet.data.modules
81+
assert.deepEqual(modules[0].publicclasses, ['Testing.class.public-2', 'Testing.class.public-4'])
82+
assert.deepEqual(modules[0].privateclasses, ['Testing.class.private-1', 'Testing.class.private-3', 'Testing.class.deprecated-3'])
83+
assert.isUndefined(modules[0].classes)
84+
85+
assert.deepEqual(modules[1].publicclasses, [])
86+
assert.deepEqual(modules[1].privateclasses, ['Testing.class.private-1'])
87+
assert.isUndefined(modules[1].classes)
88+
89+
assert.deepEqual(modules[2].publicclasses, ['Testing.class.public-2'])
90+
assert.deepEqual(modules[2].privateclasses, ['Testing.class.private-1'])
91+
assert.isUndefined(modules[2].classes)
92+
})
93+
})
94+
})

0 commit comments

Comments
 (0)