Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit d1d4cfc

Browse files
committed
parser specs
1 parent 9630b66 commit d1d4cfc

File tree

2 files changed

+1
-195
lines changed

2 files changed

+1
-195
lines changed

lib/snippet-expansion.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ module.exports = class SnippetExpansion {
1212
this.subscriptions = new CompositeDisposable
1313
this.tabStopMarkers = []
1414
this.selections = [this.cursor.selection]
15+
this.markerLayer = this.editor.addMarkerLayer()
1516

1617
const startPosition = this.cursor.selection.getBufferRange().start
1718
let {body, tabStopList} = this.snippet

spec/body-parser-spec.js

Lines changed: 0 additions & 195 deletions
Original file line numberDiff line numberDiff line change
@@ -438,199 +438,4 @@ describe("Snippet Body Parser", () => {
438438
]);
439439
});
440440
});
441-
442-
describe("examples", () => {
443-
it("breaks a snippet body into lines, with each line containing tab stops at the appropriate position", () => {
444-
expectMatch("the quick brown $1fox ${2:jumped ${3:over}\n}the ${4:lazy} dog", [
445-
"the quick brown ",
446-
{ index: 1 },
447-
"fox ",
448-
{
449-
index: 2,
450-
content: [
451-
"jumped ",
452-
{ index: 3, content: ["over"] },
453-
"\n"
454-
],
455-
},
456-
"the ",
457-
{ index: 4, content: ["lazy"] },
458-
" dog"
459-
]);
460-
});
461-
462-
it("supports interpolated variables in placeholder text", () => {
463-
expectMatch("module ${1:ActiveRecord::${TM_FILENAME/(?:\\A|_)([A-Za-z0-9]+)(?:\\.rb)?/(?2::\\u$1)/g}}", [
464-
"module ",
465-
{
466-
index: 1,
467-
content: [
468-
"ActiveRecord::",
469-
{
470-
variable: "TM_FILENAME",
471-
transformation: {
472-
find: /(?:\A|_)([A-Za-z0-9]+)(?:\.rb)?/g,
473-
replace: [
474-
"(?2::",
475-
{
476-
modifier: "u",
477-
},
478-
{
479-
backreference: 1,
480-
},
481-
")",
482-
]
483-
}
484-
}
485-
],
486-
}
487-
]);
488-
});
489-
490-
it("parses a snippet with transformations", () => {
491-
expectMatch("<${1:p}>$0</${1/f/F/}>", [
492-
'<',
493-
{ index: 1, content: ['p'] },
494-
'>',
495-
{ index: 0 },
496-
'</',
497-
{ index: 1, transformation: { find: /f/, replace: ['F'] } },
498-
'>',
499-
]);
500-
});
501-
502-
it("parses a snippet with multiple tab stops with transformations", () => {
503-
expectMatch("${1:placeholder} ${1/(.)/\\u$1/} $1 ${2:ANOTHER} ${2/^(.*)$/\\L$1/} $2", [
504-
{ index: 1, content: ['placeholder'] },
505-
' ',
506-
{
507-
index: 1,
508-
transformation: {
509-
find: /(.)/,
510-
replace: [
511-
{ modifier: 'u' },
512-
{ backreference: 1 },
513-
],
514-
},
515-
},
516-
' ',
517-
{ index: 1 },
518-
' ',
519-
{ index: 2, content: ['ANOTHER'] },
520-
' ',
521-
{
522-
index: 2,
523-
transformation: {
524-
find: /^(.*)$/,
525-
replace: [
526-
{ modifier: 'L' },
527-
{ backreference: 1 },
528-
],
529-
},
530-
},
531-
' ',
532-
{ index: 2 },
533-
]);
534-
});
535-
536-
it("parses a snippet with transformations and mirrors", () => {
537-
expectMatch("${1:placeholder}\n${1/(.)/\\u$1/}\n$1", [
538-
{ index: 1, content: ['placeholder'] },
539-
'\n',
540-
{
541-
index: 1,
542-
transformation: {
543-
find: /(.)/,
544-
replace: [
545-
{ modifier: 'u' },
546-
{ backreference: 1 },
547-
],
548-
},
549-
},
550-
'\n',
551-
{ index: 1 },
552-
]);
553-
});
554-
555-
it("parses a snippet with a format string and case-control flags", () => {
556-
expectMatch("<${1:p}>$0</${1/(.)(.*)/\\u$1$2/}>", [
557-
'<',
558-
{ index: 1, content: ['p'] },
559-
'>',
560-
{ index: 0 },
561-
'</',
562-
{
563-
index: 1,
564-
transformation: {
565-
find: /(.)(.*)/,
566-
replace: [
567-
{ modifier: 'u' },
568-
{ backreference: 1 },
569-
{ backreference: 2 },
570-
],
571-
},
572-
},
573-
'>',
574-
]);
575-
});
576-
577-
it("parses a snippet with an escaped forward slash in a transform", () => {
578-
expectMatch("<${1:p}>$0</${1/(.)\\/(.*)/\\u$1$2/}>", [
579-
'<',
580-
{ index: 1, content: ['p'] },
581-
'>',
582-
{ index: 0 },
583-
'</',
584-
{
585-
index: 1,
586-
transformation: {
587-
find: /(.)\/(.*)/,
588-
replace: [
589-
{ modifier: 'u' },
590-
{ backreference: 1 },
591-
{ backreference: 2 },
592-
],
593-
},
594-
},
595-
'>',
596-
]);
597-
});
598-
599-
it("parses a snippet with a placeholder that mirrors another tab stop's content", () => {
600-
expectMatch("$4console.${3:log}('${2:$1}', $1);$0", [
601-
{ index: 4 },
602-
'console.',
603-
{ index: 3, content: ['log'] },
604-
'(\'',
605-
{
606-
index: 2, content: [
607-
{ index: 1 }
608-
]
609-
},
610-
'\', ',
611-
{ index: 1 },
612-
');',
613-
{ index: 0 }
614-
]);
615-
});
616-
617-
it("parses a snippet with a placeholder that mixes text and tab stop references", () => {
618-
expectMatch("$4console.${3:log}('${2:uh $1}', $1);$0", [
619-
{ index: 4 },
620-
'console.',
621-
{ index: 3, content: ['log'] },
622-
'(\'',
623-
{
624-
index: 2, content: [
625-
'uh ',
626-
{ index: 1 }
627-
]
628-
},
629-
'\', ',
630-
{ index: 1 },
631-
');',
632-
{ index: 0 }
633-
]);
634-
});
635-
});
636441
});

0 commit comments

Comments
 (0)