Skip to content

Commit 901ca8c

Browse files
committed
Build 1.4.0
1 parent 3b64505 commit 901ca8c

File tree

3 files changed

+62
-21
lines changed

3 files changed

+62
-21
lines changed

dist/Autolinker.js

Lines changed: 59 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*!
22
* Autolinker.js
3-
* 1.3.4
3+
* 1.4.0
44
*
55
* Copyright(c) 2016 Gregory Jacobs <[email protected]>
66
* MIT License
@@ -240,7 +240,7 @@ Autolinker.parse = function( textOrHtml, options ) {
240240
*
241241
* Ex: 0.25.1
242242
*/
243-
Autolinker.version = '1.3.4';
243+
Autolinker.version = '1.4.0';
244244

245245

246246
Autolinker.prototype = {
@@ -1019,13 +1019,21 @@ Autolinker.Util = {
10191019
*
10201020
* @param {String} str The string to truncate and add an ellipsis to.
10211021
* @param {Number} truncateLen The length to truncate the string at.
1022-
* @param {String} [ellipsisChars=..] The ellipsis character(s) to add to the end of `str`
1023-
* when truncated. Defaults to '..'
1022+
* @param {String} [ellipsisChars=...] The ellipsis character(s) to add to the end of `str`
1023+
* when truncated. Defaults to '...'
10241024
*/
10251025
ellipsis : function( str, truncateLen, ellipsisChars ) {
1026+
var ellipsisLength;
1027+
10261028
if( str.length > truncateLen ) {
1027-
ellipsisChars = ( ellipsisChars == null ) ? '..' : ellipsisChars;
1028-
str = str.substring( 0, truncateLen - ellipsisChars.length ) + ellipsisChars;
1029+
if(ellipsisChars == null) {
1030+
ellipsisChars = '&hellip;';
1031+
ellipsisLength = 3;
1032+
} else {
1033+
ellipsisLength = ellipsisChars.length;
1034+
}
1035+
1036+
str = str.substring( 0, truncateLen - ellipsisLength ) + ellipsisChars;
10291037
}
10301038
return str;
10311039
},
@@ -1127,6 +1135,7 @@ Autolinker.Util = {
11271135
}
11281136

11291137
};
1138+
11301139
/*global Autolinker */
11311140
/*jshint boss:true */
11321141
/**
@@ -1668,6 +1677,12 @@ Autolinker.AnchorTagBuilder = Autolinker.Util.extend( Object, {
16681677
attrs[ 'rel' ] = "noopener noreferrer";
16691678
}
16701679

1680+
if( this.truncate ) {
1681+
if( this.truncate.length && this.truncate.length < match.getAnchorText().length ) {
1682+
attrs[ 'title' ] = match.getAnchorHref();
1683+
}
1684+
}
1685+
16711686
return attrs;
16721687
},
16731688

@@ -1745,13 +1760,13 @@ Autolinker.AnchorTagBuilder = Autolinker.Util.extend( Object, {
17451760
truncateLocation = truncate.location;
17461761

17471762
if( truncateLocation === 'smart' ) {
1748-
return Autolinker.truncate.TruncateSmart( anchorText, truncateLength, '..' );
1763+
return Autolinker.truncate.TruncateSmart( anchorText, truncateLength );
17491764

17501765
} else if( truncateLocation === 'middle' ) {
1751-
return Autolinker.truncate.TruncateMiddle( anchorText, truncateLength, '..' );
1766+
return Autolinker.truncate.TruncateMiddle( anchorText, truncateLength );
17521767

17531768
} else {
1754-
return Autolinker.truncate.TruncateEnd( anchorText, truncateLength, '..' );
1769+
return Autolinker.truncate.TruncateEnd( anchorText, truncateLength );
17551770
}
17561771
}
17571772

@@ -3947,12 +3962,25 @@ Autolinker.truncate.TruncateMiddle = function(url, truncateLen, ellipsisChars){
39473962
if (url.length <= truncateLen) {
39483963
return url;
39493964
}
3950-
var availableLength = truncateLen - ellipsisChars.length;
3965+
3966+
var ellipsisLengthBeforeParsing;
3967+
var ellipsisLength;
3968+
3969+
if(ellipsisChars == null) {
3970+
ellipsisChars = '&hellip;';
3971+
ellipsisLengthBeforeParsing = 8;
3972+
ellipsisLength = 3;
3973+
} else {
3974+
ellipsisLengthBeforeParsing = ellipsisChars.length;
3975+
ellipsisLength = ellipsisChars.length;
3976+
}
3977+
3978+
var availableLength = truncateLen - ellipsisLength;
39513979
var end = "";
39523980
if (availableLength > 0) {
39533981
end = url.substr((-1)*Math.floor(availableLength/2));
39543982
}
3955-
return (url.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, truncateLen);
3983+
return (url.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);
39563984
};
39573985

39583986
/*global Autolinker */
@@ -3965,10 +3993,23 @@ Autolinker.truncate.TruncateMiddle = function(url, truncateLen, ellipsisChars){
39653993
*
39663994
* @param {String} url A URL.
39673995
* @param {Number} truncateLen The maximum length of the truncated output URL string.
3968-
* @param {String} ellipsisChars The characters to place within the url, e.g. "..".
3996+
* @param {String} ellipsisChars The characters to place within the url, e.g. "...".
39693997
* @return {String} The truncated URL.
39703998
*/
39713999
Autolinker.truncate.TruncateSmart = function(url, truncateLen, ellipsisChars){
4000+
4001+
var ellipsisLengthBeforeParsing;
4002+
var ellipsisLength;
4003+
4004+
if(ellipsisChars == null) {
4005+
ellipsisChars = '&hellip;';
4006+
ellipsisLength = 3;
4007+
ellipsisLengthBeforeParsing = 8;
4008+
} else {
4009+
ellipsisLength = ellipsisChars.length;
4010+
ellipsisLengthBeforeParsing = ellipsisChars.length;
4011+
}
4012+
39724013
var parse_url = function(url){ // Functionality inspired by PHP function of same name
39734014
var urlObj = {};
39744015
var urlSub = url;
@@ -4033,7 +4074,7 @@ Autolinker.truncate.TruncateSmart = function(url, truncateLen, ellipsisChars){
40334074
if (url.length <= truncateLen) {
40344075
return url;
40354076
}
4036-
var availableLength = truncateLen - ellipsisChars.length;
4077+
var availableLength = truncateLen - ellipsisLength;
40374078
var urlObj = parse_url(url);
40384079
// Clean up the URL
40394080
if (urlObj.query) {
@@ -4061,9 +4102,9 @@ Autolinker.truncate.TruncateSmart = function(url, truncateLen, ellipsisChars){
40614102
}
40624103
if (str.length >= availableLength) {
40634104
if (urlObj.host.length == truncateLen) {
4064-
return (urlObj.host.substr(0, (truncateLen - ellipsisChars.length)) + ellipsisChars).substr(0, truncateLen);
4105+
return (urlObj.host.substr(0, (truncateLen - ellipsisLength)) + ellipsisChars).substr(0, availableLength + ellipsisLengthBeforeParsing);
40654106
}
4066-
return buildSegment(str, availableLength).substr(0, truncateLen);
4107+
return buildSegment(str, availableLength).substr(0, availableLength + ellipsisLengthBeforeParsing);
40674108
}
40684109
var pathAndQuery = "";
40694110
if (urlObj.path) {
@@ -4078,7 +4119,7 @@ Autolinker.truncate.TruncateSmart = function(url, truncateLen, ellipsisChars){
40784119
return (str + pathAndQuery).substr(0, truncateLen);
40794120
}
40804121
var remainingAvailableLength = availableLength - str.length;
4081-
return (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, truncateLen);
4122+
return (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, availableLength + ellipsisLengthBeforeParsing);
40824123
} else {
40834124
str += pathAndQuery;
40844125
}
@@ -4090,7 +4131,7 @@ Autolinker.truncate.TruncateSmart = function(url, truncateLen, ellipsisChars){
40904131
return (str + fragment).substr(0, truncateLen);
40914132
}
40924133
var remainingAvailableLength2 = availableLength - str.length;
4093-
return (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, truncateLen);
4134+
return (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, availableLength + ellipsisLengthBeforeParsing);
40944135
} else {
40954136
str += fragment;
40964137
}
@@ -4108,7 +4149,7 @@ Autolinker.truncate.TruncateSmart = function(url, truncateLen, ellipsisChars){
41084149
if (availableLength > 0) {
41094150
end = str.substr((-1)*Math.floor(availableLength/2));
41104151
}
4111-
return (str.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, truncateLen);
4152+
return (str.substr(0, Math.ceil(availableLength/2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);
41124153
};
41134154

41144155
return Autolinker;

0 commit comments

Comments
 (0)