/** * 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], "\">^^", "", match[1] || "div", ">"].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 }; })); } }; });