/** * Regular expressions file. */ define([ "constants", ], function(constants){ //tags accept only alphanumeric, '_' and ',' characters var first_tag = new RegExp("^\\[([\\w,]+)\\]\\[[\\w,]+\\][^]+$"); var second_tag = new RegExp("^\\[[\\w,]+\\]\\[([\\w,]+)\\][^]+$"); /** * JIRA, if exists, is always in third position. * JIRA keys: an alphanumeric prefix, a '-' and a numeric suffix (bug number). * Repeat pattern 0..n times with a comma as separator at the beginning. */ var jira_tag = new RegExp("^\\[[\\w,]+\\]\\[[\\w,]+\\]\\[(\\w+-\\d+(,\\w+-\\d+)*)\\][^]*"); /** * Preflight tag regular expression */ var preflight_tag = new RegExp("\\[(Preflight-\\d+,[A-Z_]+)\\]"); /** * 1st case: description is between the jira tag and the changelog tag (optional "*") * 2nd case: description is between the type tag and the changelog tag (no jira tag, optional "*") * 3rd case: description is between the jira tag and the reviewer (no changelog, required "+") * 4th case: description is between the type tag and the reviewer (no jira tag, no changelog, required "+") * 5rd case: description is between the jira tag and the validator (no changelog, required "+") * 6th case: description is between the type tag and the reviewer (no jira tag, no changelog, required "+") * 7th case: description is at the end, after jira tag (no changelog, no reviewer, required "+") * 8th case: description is at the end (no jira tag, no changelog, no reviewer, required "+") */ var desc_code = new RegExp("^\\[[\\w,]+\\]\\[\\w+\\]\\[\\w+-\\d+(,\\w+-\\d+)*\\]([^]*)\\[" + constants.changelog + "\\]|" + "^\\[[\\w,]+\\]\\[\\w+\\]([^]*)\\[" + constants.changelog + "\\]|" + "^\\[[\\w,]+\\]\\[\\w+\\]\\[\\w+-\\d+(,\\w+-\\d+)*\\]([^]+)" + constants.reviewer + "|" + "^\\[[\\w,]+\\]\\[\\w+\\]([^]+)" + constants.reviewer + "|" + "^\\[[\\w,]+\\]\\[\\w+\\]\\[\\w+-\\d+(,\\w+-\\d+)*\\]([^]+)" + constants.validator + "|" + "^\\[[\\w,]+\\]\\[\\w+\\]([^]+)" + constants.validator + "|" + "^\\[[\\w,]+\\]\\[\\w+\\]\\[\\w+-\\d+(,\\w+-\\d+)*\\]([^]+)$|" + "^\\[[\\w,]+\\]\\[\\w+\\]([^]+)$"); /** * 1st case: description is between jira tag and validator * 2nd case: description is between map tag and validator (no jira tag) * 3rd case: description is after jira tag * 4th case: description is after map tag (no jira tag) */ var desc_data = new RegExp("^\\[[\\w,]+\\]\\[[\\w,]+\\]\\[\\w+-\\d+(,\\w+-\\d+)*\\]([^]+)" + constants.validator + "|" + "^\\[[\\w,]+\\]\\[[\\w,]+\\]([^]+)" + constants.validator + "|" + "^\\[[\\w,]+\\]\\[[\\w,]+\\]\\[\\w+-\\d+(,\\w+-\\d+)*\\]([^]+)$|" + "^\\[[\\w,]+\\]\\[[\\w,]+\\]([^]+)$"); /** * 1st case: changelog is between the changelog tag and the reviewer * 2nd case: changelog is between the changelog tag and the validator (no reviewer) * 3rd case: changelog is at the end (no reviewer) */ var changelog = new RegExp("\\[" + constants.changelog + "\\]([^]+)" + constants.reviewer + "|" + "\\[" + constants.changelog + "\\]([^]+)" + constants.validator + "|" + "\\[" + constants.changelog + "\\]([^]+)$"); //use unicode to include accent and other french characters var reviewer = new RegExp(constants.reviewer + "([A-Za-z\u00C0-\u017F '-]+.*)\n$"); var changelog_tag = new RegExp("\\[" + constants.changelog + "\\]", "i"); var reviewer_tag = new RegExp(constants.reviewer, "i"); var validator_tag = new RegExp(constants.validator, "i"); return { first_tag: first_tag, second_tag: second_tag, jira_tag: jira_tag, preflight_tag: preflight_tag, desc_code: desc_code, desc_data: desc_data, changelog: changelog, reviewer: reviewer, changelog_tag: changelog_tag, reviewer_tag: reviewer_tag, validator_tag: validator_tag, }; } );