Skip to content

Commit 9be47b4

Browse files
committed
minor fixes in Helper, Add, Select; sourcemaps
1 parent 44c6492 commit 9be47b4

File tree

8 files changed

+61
-30
lines changed

8 files changed

+61
-30
lines changed

dev/Helper.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,10 @@
5050
let value_a: any = valueSelector(a);
5151
let value_b: any = valueSelector(b);
5252

53-
let type: string = typeof value_a;
53+
let type_a: string = typeof value_a;
54+
let type_b: string = typeof value_b;
5455

55-
if (type === "string") {
56+
if (type_a === "string" && type_a === type_b) {
5657
let value_a_string: string = value_a;
5758
value_a_string = value_a_string.toLowerCase();
5859
let value_b_string: string = value_b;
@@ -66,12 +67,12 @@
6667
return 0;
6768
}
6869

69-
} else if (type === "number") {
70+
} else if (type_a === "number" && type_a === type_b) {
7071
let value_a_number: number = value_a;
7172
let value_b_number: number = value_b;
7273

7374
return invert === true ? value_b_number - value_a_number : value_a_number - value_b_number;
74-
} else if (type === "boolean") {
75+
} else if (type_a === "boolean" && type_a === type_b) {
7576
let value_a_bool: boolean = value_a;
7677
let value_b_bool: boolean = value_b;
7778

@@ -85,7 +86,15 @@
8586
}
8687
}
8788
} else {
88-
throw new Error(`Linq4JS: Cannot map type '${type}' for compare`);
89+
if (type_a === "undefined" && type_a === type_b) {
90+
return 0;
91+
} else if (type_a === "undefined") {
92+
return invert ? 1 : -1;
93+
} else if (type_b === "undefined") {
94+
return invert ? -1 : 1;
95+
}
96+
97+
return 0;
8998
}
9099
}
91100

dev/Modules/Add.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
let newIndex: number;
77

88
let castedObject: Linq4JS.GeneratedEntity = object as any;
9-
let last: Linq4JS.GeneratedEntity = that.LastOrDefault() as any;
9+
let last: Linq4JS.GeneratedEntity = that.Where((x: any) => x._GeneratedId_ != null).OrderBy((x: any) => x._GeneratedId_).LastOrDefault() as any;
1010
if (last != null) {
1111
newIndex = last._GeneratedId_ != null ? last._GeneratedId_ : 1;
1212

dev/Modules/Select.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
if (selectStatement.match(/^\s*{.*}\s*$/) != null) {
1010
selectStatement = selectStatement.replace(/^\s*{(.*)}\s*$/, "$1");
1111

12-
let parts = selectStatement.split(",");
12+
let parts = selectStatement.split(/,(?=(?:[^'"]*['"][^'"]*['"])*[^'"]*$)/g);
1313
let newContent = "";
1414

1515
for (let i = 0; i < parts.length; i++) {

dist/linq4js.js

Lines changed: 19 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/linq4js.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gulpfile.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ var gulp = require("gulp");
22

33
var merge = require("merge2");
44
var concat = require("gulp-concat");
5+
var sourcemaps = require("gulp-sourcemaps");
56
var minify = require("gulp-minify");
67
var watch = require("gulp-watch");
78
var tslint = require("gulp-tslint");
@@ -28,13 +29,11 @@ gulp.task("demots", function () {
2829
gulp.task("typescript", function () {
2930
gulp.start("tslint");
3031

31-
var tsResult = devTS.src()
32-
.pipe(devTS());
33-
34-
return merge([
35-
tsResult.dts.pipe(gulp.dest("dist")),
36-
tsResult.js.pipe(gulp.dest("dist"))
37-
]);
32+
return devTS.src()
33+
.pipe(sourcemaps.init())
34+
.pipe(devTS())
35+
.pipe(sourcemaps.write())
36+
.pipe(gulp.dest("dist"));
3837
});
3938

4039
gulp.task("minifyJS", ["typescript"], function () {

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "linq4js",
3-
"version": "2.1.5",
3+
"version": "2.1.6",
44
"description": "Linq methods for JavaScript/TypeScript for working with Arrays",
55
"main": "dist/linq4js.js",
66
"typings": "dist/linq4js.d.ts",
@@ -35,6 +35,7 @@
3535
"gulp-jasmine": "^2.4.2",
3636
"gulp-jasmine-browser": "^1.7.1",
3737
"gulp-minify": "0.0.14",
38+
"gulp-sourcemaps": "^2.4.1",
3839
"gulp-tslint": "^7.1.0",
3940
"gulp-typescript": "^3.1.4",
4041
"gulp-watch": "^4.3.11",

test/all.js

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,9 @@ var Linq4JS;
100100
Helper.OrderCompareFunction = function (valueSelector, a, b, invert) {
101101
var value_a = valueSelector(a);
102102
var value_b = valueSelector(b);
103-
var type = typeof value_a;
104-
if (type === "string") {
103+
var type_a = typeof value_a;
104+
var type_b = typeof value_b;
105+
if (type_a === "string" && type_a === type_b) {
105106
var value_a_string = value_a;
106107
value_a_string = value_a_string.toLowerCase();
107108
var value_b_string = value_b;
@@ -116,12 +117,12 @@ var Linq4JS;
116117
return 0;
117118
}
118119
}
119-
else if (type === "number") {
120+
else if (type_a === "number" && type_a === type_b) {
120121
var value_a_number = value_a;
121122
var value_b_number = value_b;
122123
return invert === true ? value_b_number - value_a_number : value_a_number - value_b_number;
123124
}
124-
else if (type === "boolean") {
125+
else if (type_a === "boolean" && type_a === type_b) {
125126
var value_a_bool = value_a;
126127
var value_b_bool = value_b;
127128
if (value_a_bool === value_b_bool) {
@@ -137,7 +138,16 @@ var Linq4JS;
137138
}
138139
}
139140
else {
140-
throw new Error("Linq4JS: Cannot map type '" + type + "' for compare");
141+
if (type_a === "undefined" && type_a === type_b) {
142+
return 0;
143+
}
144+
else if (type_a === "undefined") {
145+
return invert ? 1 : -1;
146+
}
147+
else if (type_b === "undefined") {
148+
return invert ? -1 : 1;
149+
}
150+
return 0;
141151
}
142152
};
143153
Helper.SplitCommand = function (command) {
@@ -221,7 +231,7 @@ Array.prototype.Add = function (object, generateId) {
221231
if (generateId === true) {
222232
var newIndex_1;
223233
var castedObject = object;
224-
var last = that.LastOrDefault();
234+
var last = that.Where(function (x) { return x._GeneratedId_ != null; }).OrderBy(function (x) { return x._GeneratedId_; }).LastOrDefault();
225235
if (last != null) {
226236
newIndex_1 = last._GeneratedId_ != null ? last._GeneratedId_ : 1;
227237
while (that.Any(function (x) {
@@ -673,7 +683,7 @@ Array.prototype.Select = function (selector) {
673683
var selectStatement = selectorWork.substr(selectorWork.indexOf("=>") + ("=>").length);
674684
if (selectStatement.match(/^\s*{.*}\s*$/) != null) {
675685
selectStatement = selectStatement.replace(/^\s*{(.*)}\s*$/, "$1");
676-
var parts = selectStatement.split(",");
686+
var parts = selectStatement.split(/,(?=(?:[^'"]*['"][^'"]*['"])*[^'"]*$)/g);
677687
var newContent = "";
678688
for (var i = 0; i < parts.length; i++) {
679689
var part = parts[i];

0 commit comments

Comments
 (0)