Skip to content

Commit 359b13f

Browse files
committed
Optimized JS a bit. match() is 300x faster than exec(). Couple other nits.
1 parent 357ce77 commit 359b13f

5 files changed

Lines changed: 26 additions & 29 deletions

File tree

dist/paypal-button-minicart.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1762,12 +1762,10 @@ if (typeof PAYPAL === 'undefined' || !PAYPAL) {
17621762

17631763
PAYPAL.apps = PAYPAL.apps || {};
17641764

1765-
17661765
(function (document) {
17671766

17681767
'use strict';
17691768

1770-
17711769
var app = {},
17721770
paypalURL = 'https://{env}.paypal.com/cgi-bin/webscr',
17731771
qrCodeURL = 'https://{env}.paypal.com/webapps/ppint/qrcode?data={url}&pattern={pattern}&height={size}',
@@ -1852,6 +1850,7 @@ PAYPAL.apps = PAYPAL.apps || {};
18521850
// Defaults
18531851
type = type || 'buynow';
18541852
env = "www";
1853+
18551854
if (data.items.env && data.items.env.value) {
18561855
env += "." + data.items.env.value;
18571856
}
@@ -1958,7 +1957,7 @@ PAYPAL.apps = PAYPAL.apps || {};
19581957
btn = document.createElement('button'),
19591958
hidden = document.createElement('input'),
19601959
items = data.items,
1961-
item, child, label, input, key, size, locale, localeText;
1960+
item, child, label, input, key, size, locale, localeText, MiniCart;
19621961

19631962
form.method = 'post';
19641963
form.action = paypalURL.replace('{env}', data.items.env.value);
@@ -2010,8 +2009,7 @@ PAYPAL.apps = PAYPAL.apps || {};
20102009
form.appendChild(btn);
20112010

20122011
// If the Mini Cart is present then register the form
2013-
if (PAYPAL.apps.MiniCart && data.items.cmd.value === '_cart') {
2014-
var MiniCart = PAYPAL.apps.MiniCart;
2012+
if ((MiniCart = PAYPAL.apps.MiniCart) && data.items.cmd.value === '_cart') {
20152013

20162014
if (!MiniCart.UI.itemList) {
20172015
MiniCart.render();
@@ -2032,9 +2030,8 @@ PAYPAL.apps = PAYPAL.apps || {};
20322030
* @return {HTMLElement}
20332031
*/
20342032
function buildQR(data, size) {
2035-
var baseUrl = paypalURL.replace('{env}', data.items.env.value);
2036-
2037-
var img = document.createElement('img'),
2033+
var baseUrl = paypalURL.replace('{env}', data.items.env.value),
2034+
img = document.createElement('img'),
20382035
url = baseUrl + '?',
20392036
pattern = 13,
20402037
items = data.items,
@@ -2049,7 +2046,9 @@ PAYPAL.apps = PAYPAL.apps || {};
20492046
}
20502047

20512048
url = encodeURIComponent(url);
2049+
20522050
img.src = qrCodeURL.replace('{env}', data.items.env.value).replace('{url}', url).replace('{pattern}', pattern).replace('{size}', size);
2051+
20532052
return img;
20542053
}
20552054

@@ -2067,7 +2066,7 @@ PAYPAL.apps = PAYPAL.apps || {};
20672066
for (i = 0, len = attrs.length; i < len; i++) {
20682067
attr = attrs[i];
20692068

2070-
if ((matches = /^data-([a-z0-9_]+)(-editable)?/i.exec(attr.name))) {
2069+
if ((matches = attr.name.match(/^data-([a-z0-9_]+)(-editable)?/i))) {
20712070
dataset[matches[1]] = {
20722071
value: attr.value,
20732072
isEditable: !!matches[2]

dist/paypal-button-minicart.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.

dist/paypal-button.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,10 @@ if (typeof PAYPAL === 'undefined' || !PAYPAL) {
1010

1111
PAYPAL.apps = PAYPAL.apps || {};
1212

13-
1413
(function (document) {
1514

1615
'use strict';
1716

18-
1917
var app = {},
2018
paypalURL = 'https://{env}.paypal.com/cgi-bin/webscr',
2119
qrCodeURL = 'https://{env}.paypal.com/webapps/ppint/qrcode?data={url}&pattern={pattern}&height={size}',
@@ -100,6 +98,7 @@ PAYPAL.apps = PAYPAL.apps || {};
10098
// Defaults
10199
type = type || 'buynow';
102100
env = "www";
101+
103102
if (data.items.env && data.items.env.value) {
104103
env += "." + data.items.env.value;
105104
}
@@ -206,7 +205,7 @@ PAYPAL.apps = PAYPAL.apps || {};
206205
btn = document.createElement('button'),
207206
hidden = document.createElement('input'),
208207
items = data.items,
209-
item, child, label, input, key, size, locale, localeText;
208+
item, child, label, input, key, size, locale, localeText, MiniCart;
210209

211210
form.method = 'post';
212211
form.action = paypalURL.replace('{env}', data.items.env.value);
@@ -258,8 +257,7 @@ PAYPAL.apps = PAYPAL.apps || {};
258257
form.appendChild(btn);
259258

260259
// If the Mini Cart is present then register the form
261-
if (PAYPAL.apps.MiniCart && data.items.cmd.value === '_cart') {
262-
var MiniCart = PAYPAL.apps.MiniCart;
260+
if ((MiniCart = PAYPAL.apps.MiniCart) && data.items.cmd.value === '_cart') {
263261

264262
if (!MiniCart.UI.itemList) {
265263
MiniCart.render();
@@ -280,9 +278,8 @@ PAYPAL.apps = PAYPAL.apps || {};
280278
* @return {HTMLElement}
281279
*/
282280
function buildQR(data, size) {
283-
var baseUrl = paypalURL.replace('{env}', data.items.env.value);
284-
285-
var img = document.createElement('img'),
281+
var baseUrl = paypalURL.replace('{env}', data.items.env.value),
282+
img = document.createElement('img'),
286283
url = baseUrl + '?',
287284
pattern = 13,
288285
items = data.items,
@@ -297,7 +294,9 @@ PAYPAL.apps = PAYPAL.apps || {};
297294
}
298295

299296
url = encodeURIComponent(url);
297+
300298
img.src = qrCodeURL.replace('{env}', data.items.env.value).replace('{url}', url).replace('{pattern}', pattern).replace('{size}', size);
299+
301300
return img;
302301
}
303302

@@ -315,7 +314,7 @@ PAYPAL.apps = PAYPAL.apps || {};
315314
for (i = 0, len = attrs.length; i < len; i++) {
316315
attr = attrs[i];
317316

318-
if ((matches = /^data-([a-z0-9_]+)(-editable)?/i.exec(attr.name))) {
317+
if ((matches = attr.name.match(/^data-([a-z0-9_]+)(-editable)?/i))) {
319318
dataset[matches[1]] = {
320319
value: attr.value,
321320
isEditable: !!matches[2]

0 commit comments

Comments
 (0)