-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
44 lines (37 loc) · 1.21 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const Field = require('./src/initialize')
const Packages = require('./src/packages')
const Capsulable = require('./src/capsulable')
const Helper = require('./src/helper')
/**
* @param {*} Origin
* @param {*} inherit
* @returns {Helper}
*/
function Capsulator (Origin, inherit){
if(Origin === undefined && inherit === undefined)
return Helper()
// After class encapsulation, when implementing an
// inheritance class, it is also available as a
// function for inheriting objects.
if((typeof Origin == 'function' || typeof Origin == 'object')
&& !Array.isArray(Origin)
&& typeof inherit == 'object'){
for(let key of Object.keys(Origin))
inherit[key] = Origin[key]
return
}
// Allow multiple classes to have
// shared protected-static fields.
// (similar to the Java package concept)
if(Array.isArray(Origin)){
let packs = Packages(Field())
for(let OriginItem of Origin)
packs._load(OriginItem)
return packs
}
// Configure encapsulated class.
let mode = undefined
if(typeof inherit == 'string') mode = inherit
return Capsulable(Origin, Field(), mode)
}
module.exports = Capsulator