/** * Cloud9 Language Foundation * * @copyright 2013, Ajax.org B.V. */ define(function(require, exports, module) { var completeUtil = require("plugins/c9.ide.language/complete_util"); var baseLanguageHandler = require('plugins/c9.ide.language/base_handler'); var htmlSnippets = require("./snippets"); var completer = module.exports = Object.create(baseLanguageHandler); completer.handlesLanguage = function(language) { return language === "html"; }; var JADE_REGEX = /.*?([a-zA-Z]*)([.#])([\w]+)/; var JADE_ID_REGEX = /[a-zA-Z_0-9\$\_.#]/; completer.getCompletionRegex = function() { return /[<=A-Za-z:_$\-]/; }; completer.getIdentifierRegex = function() { return JADE_ID_REGEX; }; completer.complete = function(doc, fullAst, pos, options, callback) { var line = doc.getLine(pos.row); var match = JADE_REGEX.exec(line.substring(0, pos.column)); if (match) { var replaceText; var snippet = htmlSnippets[match[1]]; if (snippet) { replaceText = snippet.replace("<" + match[1] + ">", ["<", match[1], match[2] === "." ? " class=\"" : " id=\"", match[3], "\">"].join("")); } else { replaceText = ["<", match[1] || "div", match[2] === "." ? " class=\"" : " id=\"", match[3], "\">^^", ""].join(""); } callback([{ name: match[1] + match[2] + match[3], replaceText: replaceText, doc: "
" + replaceText.replace("\^\^", "␣").replace(/",
              icon: null,
              meta: "Jade-Haml",
              identifierRegex: JADE_ID_REGEX,
              priority: 100
        }]);
    }
    else {
        var identifier = completeUtil.retrievePrecedingIdentifier(line, pos.column);
        var allIdentifiers = Object.keys(htmlSnippets);
        var matches = completeUtil.findCompletions(identifier, allIdentifiers);
        callback(matches.map(function(m) {
            return {
              name: m,
              replaceText: htmlSnippets[m],
              doc: "
" + htmlSnippets[m].replace("\^\^", "␣").replace(/",
              icon: null,
              meta: "snippet",
              priority: 2
            };
        }));
    }
};


});