Skip to content
This repository was archived by the owner on May 11, 2021. It is now read-only.

Commit 9d2e275

Browse files
committed
Fixed comment symbols not being escaped correctly
1 parent eb2bcc0 commit 9d2e275

File tree

2 files changed

+37
-10
lines changed

2 files changed

+37
-10
lines changed

src/lib/util.coffee

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,17 @@ util = {
1717
return str unless str
1818
str[0].toUpperCase() + str[1..]
1919

20+
#
21+
# @function
22+
# @name escape
23+
# @description
24+
# Escape special regular expression symbol
25+
# @param {String} text Regular expression text
26+
# @returns {String} Escaped text
27+
#
28+
escape: (text) ->
29+
text.replace /[-[\]{}()*+?.,\\\/^$|#\s]/g, "\\$&"
30+
2031
#
2132
# @function
2233
# @nam repeatChar
@@ -37,13 +48,14 @@ util = {
3748
# and move onto the next file
3849
return null unless lang?
3950

40-
regex = "^\\s*(?:#{lang.symbol}){1,2}#{commentRegexStr}"
51+
symbol = util.escape lang.symbol
52+
regex = "^\\s*(?:#{symbol}){1,2}#{commentRegexStr}"
4153
lang.commentRegex = new RegExp regex
42-
lang.lineRegex = new RegExp "^\\s*(?:#{lang.symbol}){1,2}\\s+(.*)"
43-
lang.blockRegex = new RegExp lang.block
54+
lang.lineRegex = new RegExp "^\\s*(?:#{symbol}){1,2}\\s+(.*)"
55+
lang.blockRegex = new RegExp util.escape(lang.block) if lang.block?
4456

45-
lang.startRegex = new RegExp lang.start if lang.start?
46-
lang.endRegex = new RegExp lang.end if lang.end?
57+
lang.startRegex = new RegExp util.escape(lang.start) if lang.start?
58+
lang.endRegex = new RegExp util.escape(lang.end) if lang.end?
4759

4860
return lang
4961

@@ -92,4 +104,4 @@ util = {
92104

93105
}
94106

95-
module.exports = util
107+
module.exports = util

test/util_test.coffee

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,29 @@ exports.utilTest =
2222
name: 'coffeescript'
2323
symbol: '#'
2424
block: '###'
25-
lineRegex: /^\s*(?:#){1,2}\s+(.*)/
26-
commentRegex: /^\s*(?:#){1,2}\s*(?:@(\w+))?(?:\s*(.*))?/
27-
blockRegex: /###/
25+
lineRegex: /^\s*(?:\#){1,2}\s+(.*)/
26+
commentRegex: /^\s*(?:\#){1,2}\s*(?:@(\w+))?(?:\s*(.*))?/
27+
blockRegex: /\#\#\#/
2828

2929
test.deepEqual util.getLanguages("/test/test.coffee"), validSettings
3030

3131
test.done()
3232

33+
"Get languages test for Javascript": (test) ->
34+
validSettings =
35+
name: 'javascript'
36+
symbol: '//'
37+
start: '/*'
38+
end: '*/'
39+
lineRegex: /^\s*(?:\/\/){1,2}\s+(.*)/
40+
commentRegex: /^\s*(?:\/\/){1,2}\s*(?:@(\w+))?(?:\s*(.*))?/
41+
startRegex: /\/\*/
42+
endRegex: /\*\//
43+
44+
test.deepEqual util.getLanguages("/test/test.js"), validSettings
45+
46+
test.done()
47+
3348
"Not supported language": (test) ->
3449
test.equal util.getLanguages("/test/test.fake"), null, "Should return null"
3550
test.done()
@@ -66,4 +81,4 @@ exports.utilTest =
6681
### List
6782
**Chalk** \nType: `Item` \nWriting tool \n\n
6883
"""
69-
test.done()
84+
test.done()

0 commit comments

Comments
 (0)