Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit57cfff3

Browse files
Copilotmathiasrw
andcommitted
Address PR feedback: Remove \b \f \v support, fix regex, update tests
- Removed support for \b, \f, \v escape sequences as requested- Fixed regex to only match specific escape sequences: \n \t \r \\ \' \"- Removed default case that was accepting any character after backslash- Updated test134-B to remove tests for \b, \f, \v- Updated test125 escape sequence assertions to work with new behaviorCo-authored-by: mathiasrw <1063454+mathiasrw@users.noreply.github.com>
1 parent25a5322 commit57cfff3

File tree

4 files changed

+13
-35
lines changed

4 files changed

+13
-35
lines changed

‎src/alasqlparser.jison‎

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1462,37 +1462,31 @@ StringValue
14621462
: STRING
14631463
{
14641464
var str=$1.substr(1,$1.length-2).replace(/(\'\')/g,"'");
1465-
str=str.replace(/\\(.)/g,function(match,char) {
1465+
// Process escape sequences: \n \t \r \\ \' \"
1466+
str=str.replace(/\\(n|t|r|\\|'|")/g,function(match,char) {
14661467
switch(char) {
14671468
case'n':return'\n';
14681469
case't':return'\t';
14691470
case'r':return'\r';
1470-
case'b':return'\b';
1471-
case'f':return'\f';
1472-
case'v':return'\v';
14731471
case'\\':return'\\';
14741472
case"'":return"'";
14751473
case'"':return'"';
1476-
default:return char;
14771474
}
14781475
});
14791476
$$=newyy.StringValue({value: str});
14801477
}
14811478
| NSTRING
14821479
{
14831480
var str=$1.substr(2,$1.length-3).replace(/(\'\')/g,"'");
1484-
str=str.replace(/\\(.)/g,function(match,char) {
1481+
// Process escape sequences: \n \t \r \\ \' \"
1482+
str=str.replace(/\\(n|t|r|\\|'|")/g,function(match,char) {
14851483
switch(char) {
14861484
case'n':return'\n';
14871485
case't':return'\t';
14881486
case'r':return'\r';
1489-
case'b':return'\b';
1490-
case'f':return'\f';
1491-
case'v':return'\v';
14921487
case'\\':return'\\';
14931488
case"'":return"'";
14941489
case'"':return'"';
1495-
default:return char;
14961490
}
14971491
});
14981492
$$=newyy.StringValue({value: str});

‎src/alasqlparser.js‎

Lines changed: 4 additions & 10 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎test/test125.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ describe('Test 125 - remove comments', function () {
3535
assert.deepEqual(res,[{"'Cote d'Ivoir'":"Cote d'Ivoir"}]);
3636
varres=alasql('select "Cote d\\"Ivoir"');
3737
assert.deepEqual(res,[{"'Cote d\"Ivoir'":'Cote d"Ivoir'}]);
38-
//Test escapesequenceswith aliases to make expectations clearer
38+
//Escapesequencesnow work as of issue #134
3939
varres=alasql('select "\\r" as col');
4040
assert.deepEqual(res,[{col:'\r'}]);
4141
varres=alasql('select "\\n" as col');

‎test/test134-B.js‎

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,27 +35,17 @@ describe('Test 134-B - Escape sequences in strings', function () {
3535
assert.deepEqual(res,[{result:'back\\slash'}]);
3636
});
3737

38-
it('E) Form feed escape sequence',function(){
39-
varres=alasql("SELECT 'page\\fbreak' AS result");
40-
assert.deepEqual(res,[{result:'page\fbreak'}]);
41-
});
42-
43-
it('F) Backspace escape sequence',function(){
44-
varres=alasql("SELECT 'back\\bspace' AS result");
45-
assert.deepEqual(res,[{result:'back\bspace'}]);
46-
});
47-
48-
it('G) Double quote escape sequence',function(){
38+
it('E) Double quote escape sequence',function(){
4939
varres=alasql('SELECT "quote\\"here" AS result');
5040
assert.deepEqual(res,[{result:'quote"here'}]);
5141
});
5242

53-
it('H) Mixed escape sequences',function(){
43+
it('F) Mixed escape sequences',function(){
5444
varres=alasql("SELECT 'Line 1\\nLine 2\\tTabbed\\rCarriage' AS result");
5545
assert.deepEqual(res,[{result:'Line 1\nLine 2\tTabbed\rCarriage'}]);
5646
});
5747

58-
it('I) Escape sequence in WHERE clause',function(){
48+
it('G) Escape sequence in WHERE clause',function(){
5949
alasql('CREATE TABLE test_escapes (id INT, text STRING)');
6050
alasql("INSERT INTO test_escapes VALUES (1, 'hello\\tworld')");
6151
alasql("INSERT INTO test_escapes VALUES (2, 'no tabs here')");
@@ -64,7 +54,7 @@ describe('Test 134-B - Escape sequences in strings', function () {
6454
assert.deepEqual(res,[{id:1,text:'hello\tworld'}]);
6555
});
6656

67-
it('J) Single quote still works',function(){
57+
it('H) Single quote still works',function(){
6858
varres=alasql("SELECT 'Cote d\\'Ivoir' AS result");
6959
assert.deepEqual(res,[{result:"Cote d'Ivoir"}]);
7060

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp