-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScript1.js
More file actions
175 lines (147 loc) · 4.85 KB
/
Script1.js
File metadata and controls
175 lines (147 loc) · 4.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
// Pure JavaScript source code
// A simple program to take in a string and see if it conforms to Amex/Visa/Mastercard specs
// © Yager Anderson
var jsonccnum = '{"ccnum1" : "5123000000000000"}'; //Create the JSON File
var ccnum = JSON.parse(jsonccnum); //Parse the JSON to a Javascript Object
var ccnum = ccnum.ccnum1; // Reference the Object Atribute ccnum1
var gstyle = 'color: green;' //Style passed outputs green
var rstyle = 'color: red;' //Style failed outputs red
function main(ccnm) {
//input string: output console log of various credit card spec rules
//Flow Control for Rules Please see CardChecker.png for flow control mockup
if (isNum(ccnm) === false) {
console.log("%cisNum failed", rstyle)
return null
}
else if (isNum(ccnm) === true) {
console.log("%cisNum passed", gstyle)
if (isAmex(ccnm) === true) {
console.log("%cisAmex passed", gstyle)
if (AmexLen(ccnm) === true){
console.log("%cAmexLen passed", gstyle)
return null
}
else {
console.log("%cAmexLen failed", rstyle)
return null
}
}
else if (isAmex(ccnm) === false) {
console.log("%cisAmex failed", rstyle)
if (isVisa(ccnm) === true) {
console.log("%cisVisa passed", gstyle)
if (VisaLen(ccnm) === true) {
console.log("%cVisaLen passed", gstyle)
return null
}
else {
console.log("%cVisaLen failed", rstyle)
return null
}
}
else if (isVisa(ccnm) === false) {
console.log("%cisVisa failed", rstyle)
if (isMaster(ccnm) === true) {
console.log("%cisMaster passed", gstyle)
if (MasterLen(ccnm) === true) {
console.log("%cMasterLen passed", gstyle)
return null
}
else {
console.log("%cMasterLen failed", rstyle)
return null
}
}
else {
console.log("%cisMaster failed", rstyle)
return null
}
}
}
}
}
function isNum(obj) {
//input string output boolean
//return true if all char[] in string are positive numbers else false
var i = 0
while (i < obj.length){
if (obj[i] >= '0' && obj[i] <= '9')
{
i++;
return true
}
else
{
return false
break
}
}
}
function isAmex(obj) {
//input string ouput boolean
//return true if first characters in string match Amex credit card specs else false
if (obj[0] === '3' && (obj[1] === '4' || obj[1] === '7'))
return true
else
return false
}
function AmexLen(obj) {
//input string ouput boolean
//return true if string length match Amex credit card specs else false
if (obj.length === 15)
return true
else
return false
}
function isVisa(obj) {
//input string ouput boolean
//return true if first characters in string match Visa credit card specs else false
if (obj[0] === '4')
return true
else
return false
}
function VisaLen(obj) {
//input string ouput boolean
//return true if string length match Visa credit card specs else false
if (obj.length === 13 || obj.length === 16)
return true
else
return false
}
function isMaster(obj) {
//input string ouput boolean
//return true if first characters in string match Master credit card specs else false
if (obj[0] === '5' && (obj[1] >= '1' && obj[1] <= '5'))
return true
else
return false
}
function MasterLen(obj) {
//input string ouput boolean
//return true if string length match Master credit card specs else false
if (obj.length === 16)
return true
else
return false
}
main(ccnum);
/*
//Test Paramaters below
console.log("\n")
main("ahj239"); //Testing isNum Rejection of Errors
console.log("\n")
main("34"); //isAmex & AmexLen != 15 Test
console.log("\n")
main("370980000000000"); //isAmex Test & AmexLen = 15 Test
console.log("\n")
main("40"); //isVisa & VisaLen != 13 or 16 Test
console.log("\n")
main("4782192837940"); //VisaLen = 13 Test
console.log("\n")
main("4782934756281964"); //VisaLen = 16 Test
console.log("\n")
main("51"); //isMaster & MasterLen != 16 Test
console.log("\n")
main("5500987645234567"); //isMaster & MasterLen = 16 Test
*/