### Eclipse Workspace Patch 1.0 #P jrst Index: src/main/java/org/nuiton/jrst/JRSTLexer.java =================================================================== --- src/main/java/org/nuiton/jrst/JRSTLexer.java (revision 551) +++ src/main/java/org/nuiton/jrst/JRSTLexer.java (working copy) @@ -638,27 +638,29 @@ Element result = null; String line = in.readLine(); if (line != null) { - if (line.matches("^(\\s*-{1,2}[^\\s-].+\\s+.*)+\\s+.+$")) { + if (line.matches("^(\\s*((--?)|(//?))\\w+([ =][<]*)?)\\s*.*$")) { result = DocumentHelper.createElement(OPTION_LIST) .addAttribute("level", "" + level(line)); char delimiter; do { - Matcher matcher = Pattern.compile("-{1,2}.+").matcher(line); + //log.info("line [" + line + "]"); + Matcher matcher = Pattern.compile("[-/][-/]?.+").matcher(line); matcher.find(); Element option = result.addElement("option"); String option_stringTmp = matcher.group(); - matcher = Pattern.compile("^-{1,2}\\w+").matcher( - option_stringTmp); + //log.info("option_stringTmp [" + option_stringTmp + "]"); + matcher = Pattern.compile("^[-/][-/]?\\w+").matcher(option_stringTmp); matcher.find(); String option_string = matcher.group(); + //log.info("option_string [" + option_string + "]"); option.addAttribute("option_string", option_string); delimiter = option_stringTmp.charAt(matcher.end()); option_stringTmp = option_stringTmp.substring( matcher.end(), option_stringTmp.length()); option.addAttribute("delimiterExiste", "false"); boolean done = false; - if (delimiter == ' ') { // S'il ya 2 espace a suivre, - // l'option est finit + if (delimiter == ' ') { // S'il y a 2 espaces a suivre, + // l'option est finie if (option_stringTmp.charAt(1) == ' ') { done = true; } @@ -666,16 +668,14 @@ if ((delimiter == '=' || delimiter == ' ') && !done) { option.addAttribute("delimiterExiste", "true"); option.addAttribute("delimiter", "" + delimiter); - matcher = Pattern.compile(delimiter + "\\w+").matcher( + matcher = Pattern.compile(delimiter + "[<\\.\\|]+").matcher( option_stringTmp); String option_argument; if (matcher.find()) { option_argument = matcher.group().substring(1, matcher.group().length()); - option.addAttribute("option_argument", - option_argument); - if (option_stringTmp.charAt(option_argument - .length() + 1) == ',') { + option.addAttribute("option_argument", option_argument); + if (option_stringTmp.charAt(option_argument.length() + 1) == ',') { delimiter = ','; line = line.substring(option_string.length() + option_argument.length() + 3, line @@ -683,8 +683,7 @@ } else { done = true; } - } else { // Si la description n'est pas sur la meme - // ligne + } else { // Si la description n'est pas sur la meme ligne option_argument = option_stringTmp; option.addAttribute("option_argument", option_argument); @@ -695,7 +694,8 @@ } } if (done) { - result.setText(option_stringTmp.substring(matcher.end(), option_stringTmp.length()).trim()); + result.setText(option_stringTmp.substring(matcher.end(), option_stringTmp.length()).trim() + + " " + joinBlock(readBlock(1))); } } while (delimiter == ','); } @@ -969,6 +969,7 @@ result.addAttribute(ATTRIBUTION, blockQuote); } result.setText(savedLine + txt); + //log.info(result == null ? "result : null" : "result [" + result.asXML()); } } } @@ -1157,7 +1158,7 @@ beginPeek(); Element result = null; - // in.skipBlankLines(); + //in.skipBlankLines(); String[] lines; do { @@ -1424,6 +1425,7 @@ cell.addAttribute(CELL_END, "false"); } else { cell = (Element) row.node(cellNumber); + } cell.addAttribute(CELL_INDEX_START, String .valueOf(start));