Example #1
0
        var getInfoFromLanguage = (uri, info) =>
        {
            log.debug("Parsing info from language");

            var pattern = /ko-language\/([a-z0-9+#\-_\. ]*)\??(?:size=(\d*)|$)/i;
            var match = uri.match(pattern);
            if ( ! match) return false;

            info.language = match[1];
            if (match.length == 3 && match[2]) info.size = match[2];

            var preset = getPreset(info.language);
            if (preset)
            {
                log.debug("Matched Preset: " + info.language);
                info.ext = preset.ext;
                info.color = preset.color;
            }
            else // Get file extension from file associations
            {
                log.debug("Matching using file association");

                var langPatterns = {};
                langSvc.patternsFromLanguageName(info.language, langPatterns, {});
                if (langPatterns && langPatterns.value && langPatterns.value.length)
                {
                    log.debug("Using file association for ext");
                    info.ext = langPatterns.value[0].replace(/^\*\./, '')
                                                    .split('.').pop()
                                                    .substr(0,3).toUpperCase();
                }
                else
                {
                    log.debug("Using language name for ext");
                    info.ext = info.language.substr(0,3).toUpperCase();
                }

                log.debug("Generating color based on language");
                info.color = randomColor({luminosity: 'light'}, info.language);
            }

            return info;
        }
Example #2
0
        var getInfo = (uri, namespace) =>
        {
            log.debug("Parsing info");

            var url = sdkUrl.URL(uri);
            var params = sdkQuery.parse(url.search.substr(1));

            var preset = getPreset("Unknown");
            var info = {
                ext: "?",
                language: "Unknown",
                size: params.size || 14,
                color: preset ? preset.color : randomColor({luminosity: 'dark'},"Unknown")
            };

            if (namespace == "language")
                return getInfoFromLanguage(uri, info);

            log.debug("Parsing info from ext");

            var pattern = /(.*\.([a-z0-9]*)).*?(?:size=(\d*)|$)/i;
            var match = uri.match(pattern);
            if ( ! match) return info;

            var ext = match[2];
            info.ext = match[2].substr(0,3).toUpperCase();
            if (match.length == 4) info.size = match[3];
            var lang = langSvc.suggestLanguageForFile(match[1]);
            if (lang)
            {
                log.debug("Found related language: " + lang);

                info.language = lang;
                var preset = getPreset(info.language);
                if (preset)
                {
                    log.debug("Using preset for color and ext");
                    info.color = preset.color;
                    info.ext = preset.ext;
                }
                else
                {
                    log.debug("Generating color based on language");
                    info.color = randomColor({luminosity: 'dark'},info.language);
                }
            }
            else
            {
                log.debug("Could not find related language");

                var extMapping = getExtMapping(ext);
                if (extMapping)
                {
                    log.debug("Setting ext and color using ext mapping");
                    info.ext = extMapping.ext.toUpperCase();
                    info.color = extMapping.color;
                }
                else if (isColorWhitelisted(ext))
                {
                    log.debug("Ext is color whitelisted, generating color based on ext");
                    info.color = randomColor({luminosity: 'dark'},info.ext);
                }
            }

            return info;
        }