Files
Adam Bradley 535dbf990f wip
2015-06-24 10:28:12 -05:00

124 lines
2.9 KiB
JavaScript

import {isString, isObject, isDefined} from '../util/util';
export class IonicConfig {
constructor(settings={}) {
this._settings = settings;
this._settings.platforms = this._settings.platforms || {};
}
platform(val) {
if (arguments.length) {
this._platform = val;
}
return this._platform;
}
setting() {
const args = arguments;
const arg0 = args[0];
const arg1 = args[1];
const arg2 = args[2];
const arg3 = args[3];
const argLength = args.length;
let s = this._settings;
if (argLength === 0) {
// setting() = get settings object
return s;
} else if (argLength === 1) {
// setting({...}) = set settings object
// setting('key') = get value
if (isObject(arg0)) {
// setting({...}) = set settings object
// arg0 = setting object
s = arg0;
} else if (isString(arg0)) {
// setting('key') = get value
// arg0 = key
return s[arg0]
}
} else if (argLength === 2) {
// setting('key', 'value') = set key/value pair
// arg0 = key
// arg1 = value
s[arg0] = arg1;
} else if (argLength > 2) {
// create platform object and platformKey object if needed
// arg0 = key
// arg1 = platform key
s.platforms = s.platforms || {};
s.platforms[arg1] = s.platforms[arg1] || {};
if (argLength === 3) {
// setting('key', 'ios', 'value') = set key/value pair for platform
// arg0 = key
// arg1 = platform key
// arg2 = value
s.platforms[arg1][arg0] = arg2;
} else if (argLength === 4) {
// setting('key', 'ios', 'ipad', 'value') = set key/value pair for platform/device
// arg0 = key
// arg1 = platform key
// arg2 = device key
// arg3 = value
s.platforms[arg1] = s.platforms[arg1] || {};
}
}
if (arguments.length > 1) {
this._settings[key] = val;
} else {
// 1) user platform settings
// 2) user settings
// 3) platform settings
let tmp = null;
if (this._platform) {
tmp = this.platformSetting( this._platform.name() );
if (isDefined(tmp)) {
return tmp;
}
}
tmp = this._settings[key];
if (util.isDefined(tmp)) {
return tmp;
}
if (this._platform) {
return this._platform.setting(key);
}
return null;
}
}
platformSettings(platformName, platformSettings) {
let settings = this._settings.platforms[platformName] = this._settings.platforms[platformName] || {};
if (arguments.length > 1) {
settings = platformSettings || {};
}
return settings;
}
platformSetting(platformName, key, val) {
let settings = this._settings.platforms[platformName] = this._settings.platforms[platformName] || {};
if (arguments.length > 2) {
settings[key] = val;
}
return settings[key];
}
}