Skip to content

Instantly share code, notes, and snippets.

@dlennox24
Last active August 3, 2017 20:56
Show Gist options
  • Save dlennox24/238f7642c6a6856b43418198c9c31499 to your computer and use it in GitHub Desktop.
Save dlennox24/238f7642c6a6856b43418198c9c31499 to your computer and use it in GitHub Desktop.
validateVersion = event => {
let helperText = this.state.versionTextField.helperText;
let error = false;
if (!(/^\d+.\d+.\d+$/g.test(event.target.value))) {
error = true;
helperText = defaults.versionTextField.helperText;
} else {
let currentVersionArray = this.props.file.versions[0].version.split('.');
currentVersionArray[0] = parseInt(currentVersionArray[0], 10);
currentVersionArray[1] = parseInt(currentVersionArray[1], 10);
currentVersionArray[2] = parseInt(currentVersionArray[2], 10);
let newVersionArray = event.target.value.split('.');
newVersionArray[0] = parseInt(newVersionArray[0], 10);
newVersionArray[1] = parseInt(newVersionArray[1], 10);
newVersionArray[2] = parseInt(newVersionArray[2], 10);
// debugger
let incremented = 0;
error = true;
if (newVersionArray[0] === currentVersionArray[0] + 1) {
incremented++;
if (
newVersionArray[1] === 0 &&
newVersionArray[2] === 0 &&
newVersionArray[0] >= currentVersionArray[0]
) {
error = false;
}
}
if (newVersionArray[1] === currentVersionArray[1] + 1) {
incremented++;
if (newVersionArray[2] === 0) {
error = false;
}
}
if (newVersionArray[2] === currentVersionArray[2] + 1) {
incremented++;
if (incremented === 1) {
error = false;
}
}
if (
newVersionArray[0] < currentVersionArray[0] ||
(newVersionArray[0] === currentVersionArray[0] && newVersionArray[1] < currentVersionArray[1])
) {
error = true;
}
if (incremented === 1 && !error) {
helperText = 'Valid version iteration!';
} else {
error = true;
helperText = 'Version must be incremented by one, and in only one of the version sections. All sections following the incremented section must be zeroed.';
}
}
this.setState({
versionTextField: {
error,
helperText,
value: event.target.value,
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment