diff --git a/dist/lodash.js b/dist/lodash.js index 62a4b1471..545e75a18 100644 --- a/dist/lodash.js +++ b/dist/lodash.js @@ -35,7 +35,7 @@ var oldDash = window._; /** Used to match HTML entities */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#x27);/g; + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g; /** Used to match empty string literals in compiled template source */ var reEmptyStringLeading = /\b__p \+= '';/g, @@ -867,7 +867,7 @@ '<': '<', '>': '>', '"': '"', - "'": ''' + "'": ''' }; /** Used to convert HTML entities to characters */ @@ -4615,7 +4615,7 @@ /** * The opposite of `_.escape`, this method converts the HTML entities - * `&`, `<`, `>`, `"`, and `'` in `string` to their + * `&`, `<`, `>`, `"`, and `'` in `string` to their * corresponding characters. * * @static diff --git a/dist/lodash.min.js b/dist/lodash.min.js index 51d8c25b5..0ba3fc17a 100644 --- a/dist/lodash.min.js +++ b/dist/lodash.min.js @@ -18,9 +18,9 @@ return n}function R(n,t,r){var e=-1,u=n?n.length:0,o=Array(typeof u=="number"?u: });return r}function D(n,t,r,e){var u=n?n.length:0,o=3>arguments.length;if(typeof u!="number")var i=Qt(n),u=i.length;return t=f(t,e,4),N(n,function(e,f,a){f=i?i[--u]:--u,r=o?(o=!1,n[f]):t(r,n[f],f,a)}),r}function T(n,t,r){var e;if(t=f(t,r),Lt(n)){r=-1;for(var u=n.length;++rr?xt(0,u+r):r||0)-1;else if(r)return e=P(n,t),n[e]===t?e:-1;for(;++e>>1,r(n[e])M(a,p))&&((r||c)&&a.push(p),i.push(e))}return i}function K(n,t){return Bt||_t&&2/g,at=/($^)/,ct=/[&<>"']/g,lt=/['\n\r\t\u2028\u2029\\]/g,pt=Math.ceil,st=L.concat,vt=Math.floor,gt=ot.test(gt=Object.getPrototypeOf)&>,ht=Q.hasOwnProperty,yt=L.push,mt=Q.toString,_t=ot.test(_t=s.bind)&&_t,dt=ot.test(dt=Array.isArray)&&dt,bt=n.isFinite,wt=n.isNaN,jt=ot.test(jt=Object.keys)&&jt,xt=Math.max,At=Math.min,Ot=Math.random,Et="[object Arguments]",St="[object Array]",qt="[object Boolean]",kt="[object Date]",Nt="[object Number]",Rt="[object Object]",$t="[object RegExp]",Ft="[object String]",Dt=!!n.attachEvent,Tt=_t&&!/\n|true/.test(_t+Dt),Bt=_t&&!Tt,It=jt&&(Dt||Tt),Mt={"[object Function]":!1}; +r.prototype[t]=function(){var n=[this.__wrapped__];return yt.apply(n,arguments),new r(e.apply(r,n))}})}function G(){return this.__wrapped__}var H=typeof exports=="object"&&exports,J=typeof global=="object"&&global;J.global===J&&(n=J);var L=[],Q={},W=0,X=Q,Y=30,Z=n._,nt=/&(?:amp|lt|gt|quot|#39);/g,tt=/\b__p\+='';/g,rt=/\b(__p\+=)''\+/g,et=/(__e\(.*?\)|\b__t\))\+'';/g,ut=/\w*$/,ot=RegExp("^"+(Q.valueOf+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),it=/\$\{((?:(?=\\?)\\?[\s\S])*?)}/g,ft=/<%=([\s\S]+?)%>/g,at=/($^)/,ct=/[&<>"']/g,lt=/['\n\r\t\u2028\u2029\\]/g,pt=Math.ceil,st=L.concat,vt=Math.floor,gt=ot.test(gt=Object.getPrototypeOf)&>,ht=Q.hasOwnProperty,yt=L.push,mt=Q.toString,_t=ot.test(_t=s.bind)&&_t,dt=ot.test(dt=Array.isArray)&&dt,bt=n.isFinite,wt=n.isNaN,jt=ot.test(jt=Object.keys)&&jt,xt=Math.max,At=Math.min,Ot=Math.random,Et="[object Arguments]",St="[object Array]",qt="[object Boolean]",kt="[object Date]",Nt="[object Number]",Rt="[object Object]",$t="[object RegExp]",Ft="[object String]",Dt=!!n.attachEvent,Tt=_t&&!/\n|true/.test(_t+Dt),Bt=_t&&!Tt,It=jt&&(Dt||Tt),Mt={"[object Function]":!1}; Mt[Et]=Mt[St]=Mt[qt]=Mt[kt]=Mt[Nt]=Mt[Rt]=Mt[$t]=Mt[Ft]=!0;var zt={};zt[St]=Array,zt[qt]=Boolean,zt[kt]=Date,zt[Rt]=Object,zt[Nt]=Number,zt[$t]=RegExp,zt[Ft]=String;var Pt={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},Ct={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};r.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:ft,variable:"",imports:{_:r}};var Kt={a:"p,v,g",l:"var a=0,b=typeof g=='number'?2:arguments.length;while(++a":">",'"':""","'":"'"},Xt=_(Wt),Yt=a(Kt),Zt=a(Kt,{h:"if(t[i]==null)"+Kt.h});b(/x/)&&(b=function(n){return n instanceof Function||"[object Function]"==mt.call(n)});var nr=function(n){if(!n||typeof n!="object")return!1;var t=n.valueOf,r=typeof t=="function"&&(r=gt(t))&>(r);if(r)n=n==r||gt(n)==r&&!g(n);else{var e=!1;!n||typeof n!="object"||g(n)?n=e:(t=n.constructor,!b(t)||t instanceof t?(Ht(n,function(n,t){e=t}),n=!1===e||ht.call(n,e)):n=e) +},Qt=jt?function(n){return w(n)?jt(n):[]}:h,Wt={"&":"&","<":"<",">":">",'"':""","'":"'"},Xt=_(Wt),Yt=a(Kt),Zt=a(Kt,{h:"if(t[i]==null)"+Kt.h});b(/x/)&&(b=function(n){return n instanceof Function||"[object Function]"==mt.call(n)});var nr=function(n){if(!n||typeof n!="object")return!1;var t=n.valueOf,r=typeof t=="function"&&(r=gt(t))&>(r);if(r)n=n==r||gt(n)==r&&!g(n);else{var e=!1;!n||typeof n!="object"||g(n)?n=e:(t=n.constructor,!b(t)||t instanceof t?(Ht(n,function(n,t){e=t}),n=!1===e||ht.call(n,e)):n=e) }return n};r.after=function(n,t){return 1>n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},r.assign=Yt,r.at=function(n){for(var t=-1,r=st.apply(L,s(arguments,1)),e=r.length,u=Array(e);++t': '>', '"': '"', - "'": ''' + "'": ''' }; /** Used to convert HTML entities to characters */ @@ -3978,7 +3978,7 @@ /** * The opposite of `_.escape`, this method converts the HTML entities - * `&`, `<`, `>`, `"`, and `'` in `string` to their + * `&`, `<`, `>`, `"`, and `'` in `string` to their * corresponding characters. * * @static diff --git a/dist/lodash.underscore.min.js b/dist/lodash.underscore.min.js index 2e3a342d0..8788d9213 100644 --- a/dist/lodash.underscore.min.js +++ b/dist/lodash.underscore.min.js @@ -16,8 +16,8 @@ for(var i=n.length;++ro&&(o=f)}}else t=a(t,r),e(n,function(n,r if(t=a(t,r),qt(n)){r=-1;for(var o=n.length;++rr?_t(0,u+r):r||0)-1;else if(r)return e=P(n,t),n[e]===t?e:-1;for(;++e>>1,r(n[e])z(f,c))&&(r&&f.push(c),i.push(e))}return i}function V(n,t){return Nt||st&&2"']/g,ot=/['\n\r\t\u2028\u2029\\]/g,it=Math.ceil,at=X.concat,ft=Math.floor,ct=Q.hasOwnProperty,lt=X.push,pt=Q.toString,st=rt.test(st=p.bind)&&st,vt=rt.test(vt=Array.isArray)&&vt,ht=n.isFinite,gt=n.isNaN,yt=rt.test(yt=Object.keys)&&yt,_t=Math.max,mt=Math.min,dt=Math.random,bt="[object Arguments]",jt="[object Array]",wt="[object Boolean]",At="[object Date]",xt="[object Number]",Et="[object Object]",Ot="[object RegExp]",St="[object String]",Q=!!n.attachEvent,Q=st&&!/\n|true/.test(st+Q),Nt=st&&!Q,kt=(kt={0:1,length:1},X.splice.call(kt,0,1),kt[0]),Ft=arguments.constructor==Object,Rt={"boolean":K,"function":H,object:H,number:K,string:K,undefined:K},Tt={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"}; -u.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},v(arguments)||(v=function(n){return n?ct.call(n,"callee"):K});var qt=vt||function(n){return Ft&&n instanceof Array||pt.call(n)==jt},Bt=yt?function(n){return w(n)?yt(n):[]}:h,Dt={"&":"&","<":"<",">":">",'"':""","'":"'"},Mt=m(Dt);j(/x/)&&(j=function(n){return n instanceof Function||"[object Function]"==pt.call(n)});var $t=R;u.after=function(n,t){return 1>n?t():function(){return 1>--n?t.apply(this,arguments):void 0 +var X=[],Q={},Y=0,Z=Q,nt=n._,tt=/&(?:amp|lt|gt|quot|#39);/g,rt=RegExp("^"+(Q.valueOf+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),et=/($^)/,ut=/[&<>"']/g,ot=/['\n\r\t\u2028\u2029\\]/g,it=Math.ceil,at=X.concat,ft=Math.floor,ct=Q.hasOwnProperty,lt=X.push,pt=Q.toString,st=rt.test(st=p.bind)&&st,vt=rt.test(vt=Array.isArray)&&vt,ht=n.isFinite,gt=n.isNaN,yt=rt.test(yt=Object.keys)&&yt,_t=Math.max,mt=Math.min,dt=Math.random,bt="[object Arguments]",jt="[object Array]",wt="[object Boolean]",At="[object Date]",xt="[object Number]",Et="[object Object]",Ot="[object RegExp]",St="[object String]",Q=!!n.attachEvent,Q=st&&!/\n|true/.test(st+Q),Nt=st&&!Q,kt=(kt={0:1,length:1},X.splice.call(kt,0,1),kt[0]),Ft=arguments.constructor==Object,Rt={"boolean":K,"function":H,object:H,number:K,string:K,undefined:K},Tt={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"}; +u.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},v(arguments)||(v=function(n){return n?ct.call(n,"callee"):K});var qt=vt||function(n){return Ft&&n instanceof Array||pt.call(n)==jt},Bt=yt?function(n){return w(n)?yt(n):[]}:h,Dt={"&":"&","<":"<",">":">",'"':""","'":"'"},Mt=m(Dt);j(/x/)&&(j=function(n){return n instanceof Function||"[object Function]"==pt.call(n)});var $t=R;u.after=function(n,t){return 1>n?t():function(){return 1>--n?t.apply(this,arguments):void 0 }},u.bind=V,u.bindAll=function(n){for(var t=at.apply(X,arguments),r=1z(e,o,r)&&u.push(o)}return u},u.filter=N,u.flatten=I,u.forEach=F,u.functions=_,u.groupBy=function(n,t,r){var e={}; return t=a(t,r),F(n,function(n,r,u){r=t(n,r,u)+"",(ct.call(e,r)?e[r]:e[r]=[]).push(n)}),e},u.initial=function(n,t,r){if(!n)return[];var e=0,u=n.length;if(typeof t=="function"){var o=u;for(t=a(t,r);o--&&t(n[o],o,n);)e++}else e=t==J||r?1:t||e;return p(n,0,mt(_t(0,u-e),u))},u.intersection=function(n){var t=arguments,r=t.length,e=-1,u=n?n.length:0,o=[];n:for(;++ez(o,i)){for(var a=r;--a;)if(0>z(t[a],i))continue n;o.push(i)}}return o},u.invert=m,u.invoke=function(n,t){var r=p(arguments,2),e=-1,u=typeof t=="function",o=n?n.length:0,i=Array(typeof o=="number"?o:0); diff --git a/lodash.js b/lodash.js index ab1f9e906..f98ea51ea 100644 --- a/lodash.js +++ b/lodash.js @@ -34,7 +34,7 @@ var oldDash = window._; /** Used to match HTML entities */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#x27);/g; + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g; /** Used to match empty string literals in compiled template source */ var reEmptyStringLeading = /\b__p \+= '';/g, @@ -1017,7 +1017,7 @@ '<': '<', '>': '>', '"': '"', - "'": ''' + "'": ''' }; /** Used to convert HTML entities to characters */ @@ -4772,7 +4772,7 @@ /** * The opposite of `_.escape`, this method converts the HTML entities - * `&`, `<`, `>`, `"`, and `'` in `string` to their + * `&`, `<`, `>`, `"`, and `'` in `string` to their * corresponding characters. * * @static diff --git a/test/test.js b/test/test.js index b655d6d51..8f5ce9f8b 100644 --- a/test/test.js +++ b/test/test.js @@ -575,6 +575,10 @@ equal(_.escape('/'), '/'); }); + test('should escape "\'" to "'"', function() { + equal(_.escape("'"), "'"); + }); + test('should return an empty string when passed `null` or `undefined`', function() { equal(_.escape(null), ''); equal(_.escape(undefined), ''); @@ -2382,7 +2386,7 @@ QUnit.module('lodash.unescape'); (function() { - var escaped = '<h1>Moe's famous "death by chocolate" brownies & cake<\/h1>', + var escaped = '<h1>Moe's famous "death by chocolate" brownies & cake<\/h1>', unescaped = '

Moe\'s famous "death by chocolate" brownies & cake<\/h1>'; test('should unescape entities in the correct order', function() {