Skip to content

Commit

Permalink
Implement throw warn
Browse files Browse the repository at this point in the history
  • Loading branch information
kzhrk committed Dec 6, 2018
1 parent dae26f2 commit db7dbec
Show file tree
Hide file tree
Showing 109 changed files with 1,865 additions and 1,263 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@ node_js:
dist: trusty
sudo: false
cache: yarn
branches:
except: /^feature.*$/
script: yarn run build && yarn run test --coverage && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
ariaset
===
# ariaset

[![Build Status](https://travis-ci.org/kzhrk/ariaset.svg?branch=master)](https://travis-ci.org/kzhrk/ariaset)
[![Coverage Status](https://coveralls.io/repos/github/kzhrk/ariaset/badge.svg?branch=master)](https://coveralls.io/github/kzhrk/ariaset?branch=master)
[![npm version](https://badge.fury.io/js/ariaset.svg)](https://badge.fury.io/js/ariaset)

ariaset make easier assign for aria-" properties.
An ariaset makes easier assign for aria-" properties.

## Install

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
},
"scripts": {
"build": "NODE_ENV=production npm run webpack:pro",
"eslint": "eslint --fix --ext .js ./src ./tests",
"lint": "eslint --fix --ext .js ./src ./tests",
"prepublish": "npm run build",
"start": "NODE_ENV=development npm run webpack:dev",
"test": "jest",
Expand Down
10 changes: 9 additions & 1 deletion src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,13 @@ export const arias = [
export const messages = {
valueIsBoolean: 'value must be boolean',
invalidValue: 'invalid values',
invalidArguments: 'error'
invalidArguments: 'error',
invalidRole: arianame => {
return `The element set a aria-${arianame} has invalid role.`;
}
};

export const throwType = {
error: 'error',
warn: 'warn'
};
26 changes: 19 additions & 7 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ function generateValue(val) {
val = false;
} else if (val === 'undefined') {
val = undefined;
} else if (util.isNumber(val)) {
val = parseInt(val, 10);
} else if (util.isNumberOfString(val)) {
val = parseFloat(val);
}

return val;
Expand All @@ -21,7 +21,7 @@ function ariaset(element, params) {
let values = null;

if (!(element instanceof HTMLElement)) {
throw new Error(config.messages.invalidArguments);
throw Error(config.messages.invalidArguments);
} else if (params && /string|number|boolean/.test(typeof params)) {
names = [params];
} else if (params && params instanceof Array) {
Expand All @@ -32,12 +32,12 @@ function ariaset(element, params) {
return params[key];
});
} else {
throw new Error(config.messages.invalidArguments);
throw Error(config.messages.invalidArguments);
}

names.forEach(name => {
if (!config.arias.includes(name)) {
throw new Error();
throw Error(config.messages.invalidArguments);
}
});

Expand All @@ -59,8 +59,20 @@ function ariaset(element, params) {
// set
} else {
names.forEach((name, nameIndex) => {
validation(name, values[nameIndex]);
element.setAttribute(`aria-${name}`, values[nameIndex]);
try {
validation(name, values[nameIndex], element);
element.setAttribute(`aria-${name}`, values[nameIndex]);
} catch (e) {
if (e.type === config.throwType.warn) {
console.warn(e.message);
element.setAttribute(`aria-${name}`, values[nameIndex]);
throw e;
} else if (e.type === config.throwType.error) {
throw Error(e.message);
} else {
throw e;
}
}
});
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ export const isId = val => {
);
};

export const isNumber = val => {
export const isNumberOfString = val => {
return /^-?[0-9]+$/.test(val);
};
14 changes: 12 additions & 2 deletions src/validation/activedescendant.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
const config = require('../config');
const util = require('../util');
const arianame = 'activedescendant';
const roleRegexp = /application|composite|group|textbox/;

module.exports = value => {
module.exports = (value, element) => {
if (!util.isId(value)) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
} else if (!roleRegexp.test(element.getAttribute('role'))) {
throw {
type: config.throwType.warn,
message: config.messages.invalidRole(arianame)
};
}
};
5 changes: 4 additions & 1 deletion src/validation/atomic.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ const util = require('../util');

module.exports = value => {
if (!util.isBoolean(value)) {
throw new Error(config.messages.valueIsBoolean);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
};
14 changes: 12 additions & 2 deletions src/validation/autocomplete.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
const config = require('../config');
const arianame = 'autocomplete';
const roleRegexp = /combobox|textbox/;

module.exports = value => {
module.exports = (value, element) => {
if (!/inline|list|both|none/.test(value)) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
} else if (!roleRegexp.test(element.getAttribute('role'))) {
throw {
type: config.throwType.warn,
message: config.messages.invalidRole(arianame)
};
}
};
5 changes: 4 additions & 1 deletion src/validation/busy.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ const util = require('../util');

module.exports = value => {
if (!util.isBoolean(value)) {
throw new Error(config.messages.valueIsBoolean);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
};
14 changes: 12 additions & 2 deletions src/validation/checked.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
const config = require('../config');
const util = require('../util');
const arianame = 'checked';
const roleRegexp = /checkbox|option|radio|switch/;

module.exports = value => {
module.exports = (value, element) => {
if (
!util.isBoolean(value) &&
!/mixed/.test(value) &&
typeof value !== 'undefined'
) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
} else if (!roleRegexp.test(element.getAttribute('role'))) {
throw {
type: config.throwType.warn,
message: config.messages.invalidRole(arianame)
};
}
};
16 changes: 13 additions & 3 deletions src/validation/colcount.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
const config = require('../config');
const util = require('../util');
const arianame = 'colcount';
const roleRegexp = /table/;

module.exports = value => {
if (!util.isNumber(value)) {
throw new Error(config.messages.invalidValue);
module.exports = (value, element) => {
if (!util.isNumberOfString(value)) {
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
} else if (!roleRegexp.test(element.getAttribute('role'))) {
throw {
type: config.throwType.warn,
message: config.messages.invalidRole(arianame)
};
}
};
21 changes: 17 additions & 4 deletions src/validation/colindex.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
const config = require('../config');
const util = require('../util');
const arianame = 'colindex';
const roleRegexp = /cell|row/;

module.exports = value => {
if (!util.isNumber(value)) {
throw new Error(config.messages.invalidValue);
module.exports = (value, element) => {
if (!util.isNumberOfString(value)) {
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
} else if (value < 1) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
} else if (!roleRegexp.test(element.getAttribute('role'))) {
throw {
type: config.throwType.warn,
message: config.messages.invalidRole(arianame)
};
}
};
21 changes: 17 additions & 4 deletions src/validation/colspan.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
const config = require('../config');
const util = require('../util');
const arianame = 'colspan';
const roleRegexp = /cell/;

module.exports = value => {
if (!util.isNumber(value)) {
throw new Error(config.messages.invalidValue);
module.exports = (value, element) => {
if (!util.isNumberOfString(value)) {
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
} else if (value < 1) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
} else if (!roleRegexp.test(element.getAttribute('role'))) {
throw {
type: config.throwType.warn,
message: config.messages.invalidRole(arianame)
};
}
};
10 changes: 8 additions & 2 deletions src/validation/controls.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,16 @@ module.exports = value => {
.split(' ')
.forEach(val => {
if (!util.isId(val)) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
});
} else {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
};
5 changes: 4 additions & 1 deletion src/validation/current.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ const util = require('../util');

module.exports = value => {
if (!util.isBoolean(value) && !/page|step|location|date|time/.test(value)) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
};
10 changes: 8 additions & 2 deletions src/validation/describedby.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,16 @@ module.exports = value => {
.split(' ')
.forEach(val => {
if (!util.isId(val)) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
});
} else {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
};
10 changes: 8 additions & 2 deletions src/validation/details.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,15 @@ module.exports = value => {
if (typeof value === 'string' || typeof value === 'number') {
value = '' + value;
if (!util.isId(value)) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
} else {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
};
5 changes: 4 additions & 1 deletion src/validation/disabled.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ const util = require('../util');

module.exports = value => {
if (!util.isBoolean(value)) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
};
5 changes: 4 additions & 1 deletion src/validation/dropeffect.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ const config = require('../config');

module.exports = value => {
if (!/copy|execute|link|move|none|popup/.test(value)) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
};
5 changes: 4 additions & 1 deletion src/validation/errormessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ const util = require('../util');

module.exports = value => {
if (!util.isId(value)) {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
}
};
14 changes: 12 additions & 2 deletions src/validation/expanded.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
const config = require('../config');
const util = require('../util');
const arianame = 'expanded';
const roleRegexp = /button|combobox|document|link|section|sectionhead|window/;

module.exports = value => {
module.exports = (value, element) => {
if (!util.isBoolean(value) && typeof value !== 'undefined') {
throw new Error(config.messages.invalidValue);
throw {
type: config.throwType.error,
message: config.messages.invalidValue
};
} else if (!roleRegexp.test(element.getAttribute('role'))) {
throw {
type: config.throwType.warn,
message: config.messages.invalidRole(arianame)
};
}
};
Loading

0 comments on commit db7dbec

Please sign in to comment.