mirror of
https://github.com/flynx/features.js.git
synced 2025-10-29 18:30:11 +00:00
refactored exclusive feature getter out to a separate method...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
ea917bd6f1
commit
078b9b7578
58
features.js
58
features.js
@ -299,6 +299,55 @@ var FeatureSetProto = {
|
|||||||
&& that[e] instanceof Feature })
|
&& that[e] instanceof Feature })
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// build exclusive groups...
|
||||||
|
//
|
||||||
|
// Get all exclusive tags...
|
||||||
|
// .getExclusive()
|
||||||
|
// .getExclusive('*')
|
||||||
|
// -> exclusive
|
||||||
|
//
|
||||||
|
// Get specific exclusive tags...
|
||||||
|
// .getExclusive(tag)
|
||||||
|
// .getExclusive([tag, ..])
|
||||||
|
// -> exclusive
|
||||||
|
//
|
||||||
|
// If features is given, only consider the features in list.
|
||||||
|
// If rev_exclusive is given, also build a reverse exclusive feature
|
||||||
|
// list.
|
||||||
|
//
|
||||||
|
// output format:
|
||||||
|
// {
|
||||||
|
// exclusive-tag: [
|
||||||
|
// feature-tag,
|
||||||
|
// ...
|
||||||
|
// ],
|
||||||
|
// ...
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
getExclusive: function(tag, features, rev_exclusive){
|
||||||
|
tag = tag == null || tag == '*' ? '*'
|
||||||
|
: tag instanceof Array ? tag
|
||||||
|
: [tag]
|
||||||
|
|
||||||
|
features = features || this.features
|
||||||
|
rev_exclusive = rev_exclusive || {}
|
||||||
|
|
||||||
|
var that = this
|
||||||
|
var exclusive = {}
|
||||||
|
features
|
||||||
|
.filter(function(f){ return !!that[f].exclusive })
|
||||||
|
.forEach(function(k){
|
||||||
|
(that[k].exclusive || [])
|
||||||
|
.forEach(function(e){
|
||||||
|
// skip tags not explicitly requested...
|
||||||
|
if(tag != '*' && tag.indexOf(e) < 0){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
exclusive[e] = (exclusive[e] || []).concat([k])
|
||||||
|
rev_exclusive[k] = (rev_exclusive[k] || []).concat([e]) }) })
|
||||||
|
return exclusive
|
||||||
|
},
|
||||||
|
|
||||||
// Build list of features in load order...
|
// Build list of features in load order...
|
||||||
//
|
//
|
||||||
// .buildFeatureList()
|
// .buildFeatureList()
|
||||||
@ -640,15 +689,8 @@ var FeatureSetProto = {
|
|||||||
|
|
||||||
// build exclusive groups...
|
// build exclusive groups...
|
||||||
// XXX need to sort the values to the same order as given features...
|
// XXX need to sort the values to the same order as given features...
|
||||||
var exclusive = {}
|
|
||||||
var rev_exclusive = {}
|
var rev_exclusive = {}
|
||||||
all
|
var exclusive = this.getExclusive('*', all, rev_exclusive)
|
||||||
.filter(function(f){ return !!that[f].exclusive })
|
|
||||||
.forEach(function(k){
|
|
||||||
(that[k].exclusive || [])
|
|
||||||
.forEach(function(e){
|
|
||||||
exclusive[e] = (exclusive[e] || []).concat([k])
|
|
||||||
rev_exclusive[k] = (rev_exclusive[k] || []).concat([e]) }) })
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------- Stage 1: expand features ---
|
//-------------------------------- Stage 1: expand features ---
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ig-features",
|
"name": "ig-features",
|
||||||
"version": "3.2.5",
|
"version": "3.2.6",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "features.js",
|
"main": "features.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user