JohnCashmore/node-fonts-used

View on GitHub
lib/fonts-used.js

Summary

Maintainability
A
1 hr
Test Coverage
var css = require('css');
var fontparser = require('./parseFont');
var _ = require('underscore');




exports.findFonts = function (strCSS) {
    var obj = css.parse(strCSS);
    var fonts = [];
    obj.stylesheet.rules.forEach(function (rule) {
        if(rule.declarations) {
        rule.declarations.forEach(function (declaration) {
            //console.log(declaration);
            if(declaration.property === 'font' ) {
                var parsedFont = fontparser(declaration.value);
                if(parsedFont !== null && parsedFont['font-family']) {
                    var tempFonts = parsedFont['font-family'];
                    if(_.isArray(tempFonts)) {
                        fonts.push.apply(fonts, parsedFont['font-family']);
                    } else {
                        fonts.push(tempFonts);
                    }
                }
            } else if (declaration.property === 'font-family') {
                fonts.push.apply(fonts, declaration.value.replace(/["']/g, "").replace(/[\s]*[,][\s]*/g,',').split(','));
            }
        });
    }
    });

    var d = _.groupBy(fonts, function(p) { return p;});
    var x = _.map(d, function(occurances, font) {   
        return {fontName: font,  occurances: occurances.length};   
    });

    return _.sortBy(x, function (item) {
        return item.occurances;
    }).reverse();
};