/** * Generates a directive from a directive assembler. * * @param assembler The directive assembler. * @return The corresponding directive. * @throws AraraException Something wrong happened, to be caught in the higher levels. */ public static Directive generateDirective(DirectiveAssembler assembler) throws AraraException { String regex = (String) ConfigurationController.getInstance().get("directives.pattern"); Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(assembler.getText()); if (matcher.find()) { Directive directive = new Directive(); directive.setIdentifier(matcher.group(1)); directive.setParameters(getParameters(matcher.group(3), assembler.getLineNumbers())); Conditional conditional = new Conditional(); conditional.setType(getType(matcher.group(5))); conditional.setCondition(getCondition(matcher.group(6))); directive.setConditional(conditional); directive.setLineNumbers(assembler.getLineNumbers()); logger.info(messages.getMessage(Messages.LOG_INFO_POTENTIAL_DIRECTIVE_FOUND, directive)); return directive; } else { throw new AraraException( messages.getMessage( Messages.ERROR_VALIDATE_INVALID_DIRECTIVE_FORMAT, CommonUtils.getCollectionElements(assembler.getLineNumbers(), "(", ")", ", "))); } }