dmolony-DiskBrowser/src/com/bytezone/diskbrowser/visicalc/ExpressionList.java

55 lines
1.4 KiB
Java
Raw Normal View History

2017-03-14 11:28:52 +00:00
package com.bytezone.diskbrowser.visicalc;
import java.util.Iterator;
2017-03-15 00:41:45 +00:00
import java.util.regex.Pattern;
2017-03-14 11:28:52 +00:00
2017-03-15 00:41:45 +00:00
public class ExpressionList extends AbstractValue implements Iterable<Value>
2017-03-14 11:28:52 +00:00
{
2017-03-15 00:41:45 +00:00
private static final Pattern cellAddress = Pattern.compile ("[A-B]?[A-Z][0-9]{1,3}");
private static final Pattern addressList = Pattern.compile ("\\(([^,]+(,[^,]+)*)\\)");
2017-03-14 11:28:52 +00:00
private final Sheet parent;
2017-03-15 00:41:45 +00:00
// private final List<Expression> expressions = new ArrayList<Expression> ();
2017-03-14 11:28:52 +00:00
2017-03-15 00:41:45 +00:00
public ExpressionList (Sheet parent, Cell cell, String text)
2017-03-14 11:28:52 +00:00
{
2017-03-15 00:41:45 +00:00
super ("expL");
2017-03-14 11:28:52 +00:00
this.parent = parent;
2017-03-15 00:41:45 +00:00
int pos = text.indexOf ("...");
if (pos > 0)
{
String fromAddress = text.substring (0, pos);
String toAddress = text.substring (pos + 3);
Address from = new Address (fromAddress);
Address to = new Address (toAddress);
Range range = new Range (parent, from, to);
for (Address address : range)
values.add (parent.getCell (address));
return;
}
String[] chunks = text.split (",");
for (String s : chunks)
{
// System.out.println (s);
Value v = new Expression (parent, cell, s).reduce ();
// expressions.add (expression);
values.add (v);
}
}
public int size ()
{
return values.size ();
2017-03-14 11:28:52 +00:00
}
@Override
2017-03-15 00:41:45 +00:00
public Iterator<Value> iterator ()
2017-03-14 11:28:52 +00:00
{
2017-03-15 00:41:45 +00:00
return values.iterator ();
2017-03-14 11:28:52 +00:00
}
}