Changeset 1364


Ignore:
Timestamp:
Oct 27, 2011, 10:17:22 PM (6 years ago)
Author:
stefan
Message:

added ParseUtilTest? and improved parsing of user defined commands in BackgroundParser?

Location:
trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/jlatexeditor/codehelper/BackgroundParser.java

    r1349 r1364  
    99import util.SetTrie;
    1010import util.SimpleTrie;
     11import util.Tuple;
    1112
    1213import javax.swing.tree.DefaultMutableTreeNode;
     
    244245        boolean isCommand = command.equals("newcommand") || command.equals("renewcommand") || command.equals("DeclareRobustCommand");
    245246
    246         String name = ParseUtil.parseBalanced(tex, index+1, '}');
    247         index += 2 + name.length();
     247        Tuple<String,Integer> itemPositionPair = ParseUtil.parseItem(tex, index);
     248        String name = itemPositionPair.first;
     249        index = itemPositionPair.second;
    248250        // number of arguments
    249251        int numberOfArgs = 0;
     
    259261          // default argument
    260262          if(tex.charAt(index) == '[') {
    261             try {
    262               optional = ParseUtil.parseBalanced(tex, index+1, ']');
     263            try {                   optional = ParseUtil.parseBalanced(tex, index+1, ']');
    263264              index += 2 + optional.length();
    264265            } catch(NumberFormatException ignore) {}
  • trunk/src/util/ParseUtil.java

    r749 r1364  
    44
    55public class ParseUtil {
     6  /**
     7   * Reads a single Latex command, an balanced argument between two braces or a single character,
     8   *
     9   * @param text input text
     10   * @param index start index
     11   * @return (character / command / argument, nextIndex)
     12   */
     13  public static Tuple<String,Integer> parseItem(String text, int index) {
     14    if (text.charAt(index) == '{') {
     15      String argument = parseBalanced(text, index + 1, '}');
     16      return new Tuple<String, Integer>(argument, index + argument.length() + 2);
     17    } else {
     18      while (text.charAt(index) == ' ') index++;
     19      if (text.charAt(index) == '\\') {
     20        int startIndex = index;
     21        index++;
     22        if (Character.isLetter(text.charAt(index))) {
     23          while (Character.isLetter(text.charAt(index))) index++;
     24        } else {
     25          index++;
     26        }
     27        return new Tuple<String, Integer>(text.substring(startIndex, index), index);
     28      } else {
     29        return new Tuple<String, Integer>("" + text.charAt(index), index + 1);
     30      }
     31    }
     32  }
     33 
    634  /**
    735   * Parses a balanced string excluding the closing symbol.
Note: See TracChangeset for help on using the changeset viewer.