Yahoo! UI Library

yui  3.2.0

Yahoo! UI Library > yui > features.js (source view)
Search:
 
Filters
var tests = {};

Y.mix(Y.namespace("Features"), {

    tests: tests,

    add: function(cat, name, o) {
        tests[cat] = tests[cat] || {};
        tests[cat][name] = o;
    },

    all: function(cat, args) {
        var cat_o   = tests[cat],
            // results = {};
            result = '';
        if (cat_o) {
            Y.Object.each(cat_o, function(v, k) {
                // results[k] = Y.Features.test(cat, k, args);
                result += k + ':' + (Y.Features.test(cat, k, args) ? 1 : 0) + ';';
            });
        }

        return result;
    },

    test: function(cat, name, args) {

        var result, ua, test,
            cat_o   = tests[cat],
            feature = cat_o && cat_o[name];

        if (!feature) {
            Y.log('Feature test ' + cat + ', ' + name + ' not found');
        } else {

            result = feature.result;

            if (Y.Lang.isUndefined(result)) {

                ua = feature.ua;
                if (ua) {
                    result = (Y.UA[ua]);
                }

                test = feature.test;
                if (test && ((!ua) || result)) {
                    result = test.apply(Y, args);
                }

                feature.result = result;
            }
        }

        return result;
    }
});

// Y.Features.add("load", "1", {});
// Y.Features.test("load", "1");
// caps=1:1;2:0;3:1;

Copyright © 2010 Yahoo! Inc. All rights reserved.