This commit is contained in:
nightwing 2013-04-04 23:27:26 +04:00
commit 9409ae8090
2 changed files with 12 additions and 11 deletions

View file

@ -484,6 +484,7 @@ var SnippetManager = function() {
snippets.forEach(removeSnippet);
};
this.parseSnippetFile = function(str) {
str = str.replace(/\r/, "");
var list = [], snippet = {};
var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;
var m;
@ -500,11 +501,11 @@ var SnippetManager = function() {
} else {
var key = m[2], val = m[3];
if (key == "regex") {
var re = /\/((?:[^\/\\]|\\.)*)|$/g;
snippet.guard = re.exec(val)[1];
snippet.trigger = re.exec(val)[1];
snippet.endTrigger = re.exec(val)[1];
snippet.endGuard = re.exec(val)[1];
var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g;
snippet.guard = guardRe.exec(val)[1];
snippet.trigger = guardRe.exec(val)[1];
snippet.endTrigger = guardRe.exec(val)[1];
snippet.endGuard = guardRe.exec(val)[1];
} else if (key == "snippet") {
snippet.tabTrigger = val.match(/^\S*/)[0];
if (!snippet.name)

View file

@ -35,13 +35,13 @@ if (typeof process !== "undefined") {
define(function(require, exports, module) {
"use strict";
var SnippetManager = require("./snippets").SnippetManager;
var snippetManager = require("./snippets").snippetManager;
var assert = require("./test/assertions");
module.exports = {
"test: textmate style format strings" : function() {
var fmt = SnippetManager.tmStrFormat;
SnippetManager.tmStrFormat("hello", {
var fmt = snippetManager.tmStrFormat;
snippetManager.tmStrFormat("hello", {
guard: "(..)(.)(.)",
flag:"g",
fmt: "a\\UO\\l$1\\E$2"
@ -63,7 +63,7 @@ module.exports = {
var parsed = SnippetManager.parseSnippetFile(
var parsed = snippetManager.parseSnippetFile(
"name a\nregex /(?:(=)|(:))?\s*)/\\(?f/\\)/\n\t{$0}" +
"\n\t\n\n#function\nsnippet f function\n\tfunction"
);
@ -72,13 +72,13 @@ module.exports = {
},
"test: parse snippet": function() {
var content = "-\\$$2a${1:x${$2:y$3\\}\\n\\}$TM_SELECTION}";
var tokens = SnippetManager.tokenizeTmSnippet(content);
var tokens = snippetManager.tokenizeTmSnippet(content);
assert.equal(tokens.length, 15);
assert.equal(tokens[4], tokens[14]);
assert.equal(tokens[2].tabstopId, 2);
var content = "\\}${var/as\\/d/\\ul\\//g:s}"
var tokens = SnippetManager.tokenizeTmSnippet(content);
var tokens = snippetManager.tokenizeTmSnippet(content);
assert.equal(tokens.length, 4);
assert.equal(tokens[1], tokens[3]);
assert.equal(tokens[2], "s");