/branches/branch-1.0/src/org/getopt/luke/Ranges.java

http://luke.googlecode.com/ · Java · 35 lines · 31 code · 4 blank · 0 comment · 8 complexity · 5042c0b9740467f53e93cc2463e7fc4e MD5 · raw file

  1. package org.getopt.luke;
  2. import org.apache.lucene.util.OpenBitSet;
  3. @SuppressWarnings("serial")
  4. public class Ranges extends OpenBitSet {
  5. public static Ranges parse(String expr) throws Exception {
  6. Ranges res = new Ranges();
  7. expr = expr.replaceAll("\\s+", "");
  8. if (expr.length() == 0) {
  9. return res;
  10. }
  11. String[] ranges = expr.split(",");
  12. for (int i = 0; i < ranges.length; i++) {
  13. String[] ft = ranges[i].split("-");
  14. int from, to;
  15. from = Integer.parseInt(ft[0]);
  16. if (ft.length == 1) {
  17. res.set(from);
  18. } else {
  19. to = Integer.parseInt(ft[1]);
  20. res.set(from, to);
  21. }
  22. }
  23. return res;
  24. }
  25. public void set(int from, int to) {
  26. if (from > to) return;
  27. for (int i = from; i <= to; i++) {
  28. set(i);
  29. }
  30. }
  31. }