From eeb2782700f427f9bf42fcfbe5f8aac7b5bfbe98 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 12 Jun 2013 14:43:14 -0700 Subject: [PATCH] Use lookbehind for whitespace before bold/italic text --- src/packages/gfm/grammars/gfm.cson | 16 +++++++------- src/packages/gfm/spec/gfm-spec.coffee | 32 +++++++++++++-------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/packages/gfm/grammars/gfm.cson b/src/packages/gfm/grammars/gfm.cson index 0a419f40f..b045ef38b 100644 --- a/src/packages/gfm/grammars/gfm.cson +++ b/src/packages/gfm/grammars/gfm.cson @@ -11,24 +11,24 @@ 'patterns': [ { - 'match': '(?:^|\\s)(\\*\\*[^\\*]+\\*\\*)' + 'match': '(?<=^|\\s)(\\*\\*[^\\*]+\\*\\*)' 'captures': - '1': 'name': 'markup.bold.gfm' + '0': 'name': 'markup.bold.gfm' } { - 'match': '(?:^|\\s)(__[^_]+__)' + 'match': '(?<=^|\\s)(__[^_]+__)' 'captures': - '1': 'name': 'markup.bold.gfm' + '0': 'name': 'markup.bold.gfm' } { - 'match': '(?:^|\\s)(\\*[^\\*]+\\*)' + 'match': '(?<=^|\\s)(\\*[^\\*]+\\*)' 'captures': - '1': 'name': 'markup.italic.gfm' + '0': 'name': 'markup.italic.gfm' } { - 'match': '(?:^|\\s)(_[^_]+_)' + 'match': '(?<=^|\\s)(_[^_]+_)' 'captures': - '1': 'name': 'markup.italic.gfm' + '0': 'name': 'markup.italic.gfm' } { 'begin': '^#{1,6}\\s+' diff --git a/src/packages/gfm/spec/gfm-spec.coffee b/src/packages/gfm/spec/gfm-spec.coffee index fa3107709..aa15cbf2c 100644 --- a/src/packages/gfm/spec/gfm-spec.coffee +++ b/src/packages/gfm/spec/gfm-spec.coffee @@ -22,23 +22,25 @@ describe "GitHub Flavored Markdown grammar", -> it "tokenizes **bold** text", -> {tokens} = grammar.tokenizeLine("this is **bold** text") - expect(tokens[0]).toEqual value: "this is", scopes: ["source.gfm"] - expect(tokens[1]).toEqual value: " ", scopes: ["source.gfm"] - expect(tokens[2]).toEqual value: "**bold**", scopes: ["source.gfm", "markup.bold.gfm"] - expect(tokens[3]).toEqual value: " text", scopes: ["source.gfm"] + expect(tokens[0]).toEqual value: "this is ", scopes: ["source.gfm"] + expect(tokens[1]).toEqual value: "**bold**", scopes: ["source.gfm", "markup.bold.gfm"] + expect(tokens[2]).toEqual value: " text", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("not**bold**") expect(tokens[0]).toEqual value: "not**bold**", scopes: ["source.gfm"] + it "tokenizes **bold** text", -> + {tokens} = grammar.tokenizeLine(" ") + expect(tokens[0]).toEqual value: " ", scopes: ["source.gfm"] + it "tokenizes __bold__ text", -> {tokens} = grammar.tokenizeLine("____") expect(tokens[0]).toEqual value: "____", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("this is __bold__ text") - expect(tokens[0]).toEqual value: "this is", scopes: ["source.gfm"] - expect(tokens[1]).toEqual value: " ", scopes: ["source.gfm"] - expect(tokens[2]).toEqual value: "__bold__", scopes: ["source.gfm", "markup.bold.gfm"] - expect(tokens[3]).toEqual value: " text", scopes: ["source.gfm"] + expect(tokens[0]).toEqual value: "this is ", scopes: ["source.gfm"] + expect(tokens[1]).toEqual value: "__bold__", scopes: ["source.gfm", "markup.bold.gfm"] + expect(tokens[2]).toEqual value: " text", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("not__bold__") expect(tokens[0]).toEqual value: "not__bold__", scopes: ["source.gfm"] @@ -48,10 +50,9 @@ describe "GitHub Flavored Markdown grammar", -> expect(tokens[0]).toEqual value: "**", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("this is *italic* text") - expect(tokens[0]).toEqual value: "this is", scopes: ["source.gfm"] - expect(tokens[1]).toEqual value: " ", scopes: ["source.gfm"] - expect(tokens[2]).toEqual value: "*italic*", scopes: ["source.gfm", "markup.italic.gfm"] - expect(tokens[3]).toEqual value: " text", scopes: ["source.gfm"] + expect(tokens[0]).toEqual value: "this is ", scopes: ["source.gfm"] + expect(tokens[1]).toEqual value: "*italic*", scopes: ["source.gfm", "markup.italic.gfm"] + expect(tokens[2]).toEqual value: " text", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("not*italic*") expect(tokens[0]).toEqual value: "not*italic*", scopes: ["source.gfm"] @@ -61,10 +62,9 @@ describe "GitHub Flavored Markdown grammar", -> expect(tokens[0]).toEqual value: "__", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("this is _italic_ text") - expect(tokens[0]).toEqual value: "this is", scopes: ["source.gfm"] - expect(tokens[1]).toEqual value: " ", scopes: ["source.gfm"] - expect(tokens[2]).toEqual value: "_italic_", scopes: ["source.gfm", "markup.italic.gfm"] - expect(tokens[3]).toEqual value: " text", scopes: ["source.gfm"] + expect(tokens[0]).toEqual value: "this is ", scopes: ["source.gfm"] + expect(tokens[1]).toEqual value: "_italic_", scopes: ["source.gfm", "markup.italic.gfm"] + expect(tokens[2]).toEqual value: " text", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("not_italic_") expect(tokens[0]).toEqual value: "not_italic_", scopes: ["source.gfm"]