Skip to content
This repository was archived by the owner on Oct 20, 2021. It is now read-only.

Commit ab85ca7

Browse files
feat(rules): Added MacAddress rule
1 parent 98c806a commit ab85ca7

8 files changed

Lines changed: 73 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ The library can be loaded either as a standalone script, or through an [AMD](htt
105105
- [IntVal](docs/int-val.md)
106106
- [Json](docs/json.md)
107107
- [Lowercase](docs/lowercase.md)
108+
- [MacAddress](docs/mac-address.md)
108109
- [Multiple](docs/multiple.md)
109110
- [Negative](docs/negative.md)
110111
- [NfeAccessKey](docs/nfe-access-key.md)

awesome-validator.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.

docs/mac-address.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Mac Address
2+
3+
Validates a Mac Address.
4+
5+
Valid values:
6+
7+
```js
8+
validator.macAddress().validate('00:11:22:33:44:55');
9+
validator.macAddress().validate('66-77-88-99-aa-bb');
10+
validator.macAddress().validate('AF:0F:bd:12:44:ba');
11+
validator.macAddress().validate('90-bc-d3-1a-dd-cc');
12+
```
13+
14+
Invalid values:
15+
16+
```js
17+
validator.macAddress().validate('');
18+
validator.macAddress().validate('00-1122:33:44:55');
19+
validator.macAddress().validate('66-77--99-jj-bb');
20+
validator.macAddress().validate('HH:0F-bd:12:44:ba');
21+
validator.macAddress().validate('90-bc-nk:1a-dd-cc');
22+
```

src/rules/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export * from './int-type';
2626
export * from './int-val';
2727
export * from './json';
2828
export * from './lowercase';
29+
export * from './mac-address';
2930
export * from './multiple';
3031
export * from './negative';
3132
export * from './nfe-access-key';

src/rules/mac-address.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { AbstractRegex } from './abstract-regex';
2+
3+
export class MacAddress extends AbstractRegex {
4+
5+
/**
6+
* Get pattern.
7+
*/
8+
protected getPattern(): string | RegExp {
9+
return /^(([0-9a-f]{2}-){5}|([0-9a-f]{2}:){5})[0-9a-f]{2}$/i;
10+
}
11+
}

src/validator.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export class Validator extends AllOf {
3535
public static intVal = (): Validator => new Validator(new rules.IntVal());
3636
public static json = (): Validator => new Validator(new rules.Json());
3737
public static lowercase = (): Validator => new Validator(new rules.Lowercase());
38+
public static macAddress = (): Validator => new Validator(new rules.MacAddress());
3839
public static multiple = (multipleOf: number): Validator => new Validator(new rules.Multiple(multipleOf));
3940
public static negative = (): Validator => new Validator(new rules.Negative());
4041
public static nfeAccessKey = (): Validator => new Validator(new rules.NfeAccessKey());
@@ -117,6 +118,7 @@ export class Validator extends AllOf {
117118
public intVal = (): this => this.addRule(new rules.IntVal());
118119
public json = (): this => this.addRule(new rules.Json());
119120
public lowercase = (): this => this.addRule(new rules.Lowercase());
121+
public macAddress = (): this => this.addRule(new rules.MacAddress());
120122
public multiple = (multipleOf: number): this => this.addRule(new rules.Multiple(multipleOf));
121123
public negative = (): this => this.addRule(new rules.Negative());
122124
public nfeAccessKey = (): this => this.addRule(new rules.NfeAccessKey());

test/rules/mac-address.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { assert } from 'chai';
2+
3+
import { AbstractRule } from '../../src/rules/abstract-rule';
4+
import { MacAddress } from '../../src/rules/mac-address';
5+
6+
describe('MacAddress', () => {
7+
8+
let macAddress: MacAddress;
9+
10+
beforeEach(() => {
11+
macAddress = new MacAddress();
12+
});
13+
14+
it('is rule', () => {
15+
assert.instanceOf(macAddress, AbstractRule);
16+
});
17+
18+
it('values is valid', () => {
19+
assert.isTrue(macAddress.validate('00:11:22:33:44:55'));
20+
assert.isTrue(macAddress.validate('66-77-88-99-aa-bb'));
21+
assert.isTrue(macAddress.validate('AF:0F:bd:12:44:ba'));
22+
assert.isTrue(macAddress.validate('90-bc-d3-1a-dd-cc'));
23+
});
24+
25+
it('values is not valid', () => {
26+
assert.isFalse(macAddress.validate(''));
27+
assert.isFalse(macAddress.validate('00-1122:33:44:55'));
28+
assert.isFalse(macAddress.validate('66-77--99-jj-bb'));
29+
assert.isFalse(macAddress.validate('HH:0F-bd:12:44:ba'));
30+
assert.isFalse(macAddress.validate('90-bc-nk:1a-dd-cc'));
31+
});
32+
33+
});

test/validator.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ describe('Validator', () => {
4949
assert.instanceOf(V.intVal(), V);
5050
assert.instanceOf(V.json(), V);
5151
assert.instanceOf(V.lowercase(), V);
52+
assert.instanceOf(V.macAddress(), V);
5253
assert.instanceOf(V.multiple(0), V);
5354
assert.instanceOf(V.negative(), V);
5455
assert.instanceOf(V.nfeAccessKey(), V);
@@ -154,6 +155,7 @@ describe('Validator', () => {
154155
assert.instanceOf(v.intVal(), V);
155156
assert.instanceOf(v.json(), V);
156157
assert.instanceOf(v.lowercase(), V);
158+
assert.instanceOf(v.macAddress(), V);
157159
assert.instanceOf(v.multiple(0), V);
158160
assert.instanceOf(v.negative(), V);
159161
assert.instanceOf(v.nfeAccessKey(), V);

0 commit comments

Comments
 (0)