referrer

by brico

JavaScript

// problem: is r in engines?
var r = document.referrer,
    engines = {
        'google': "google.com/url",
        'bing': "bing.com/search",
        'yahoo': "search.yahoo.com/search",
        'ask': "ask.com",
        'dogpile': "dogpile.com",
        'blekko': "blekko.com",
        'aol': "search.aol.com",
        'duckduckgo': "duckduckgo.com",
        'search': "search.com/search",
        'lycos': "search.lycos.com",
        'info': "info.com",
        'baidu': "baidu.com/s",
        'sogou': "sogou.com/web"
    },
    keyIfValInStr = function (s, obj) {
        for (key in obj) {
            if (typeof key === 'string') {
                if (s.indexOf(obj[key]) !== -1) {
                    return key;
                }
            }
        }
        return false;
    },
    // partial application seems useful for humans here
    isSearchVisitor = function (referrer) {
        return keyIfValInStr(referrer, engines);
    };

// let's see:
console.log(r);
console.log(isSearchVisitor("http://google.com")); //false
console.log(isSearchVisitor("http://google.com/url")); //'google'
console.log(isSearchVisitor("")); //false
console.log(isSearchVisitor(r)) // probably false
// or do a one-off, i.e. the collegeanswer thing
console.log(keyIfValInStr(r, {'yup': 'jsfiddle.net'})) //yup