Skip to content

Commit 6a61f8b

Browse files
committed
Improved handling of hydrates in contracted atom labels.
1 parent c76443e commit 6a61f8b

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

display/renderbasic/src/main/java/org/openscience/cdk/renderer/generators/standard/AbbreviationLabel.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,13 @@ static boolean parse(String label, List<String> tokens) {
195195
if (c == '/' || c == '·' || c == '.' || c == '•' || c == '=') {
196196
tokens.add(Character.toString(c));
197197
i++;
198+
199+
int beg = i;
200+
while (i < label.length() && isDigit(label.charAt(i))) {
201+
i++;
202+
}
203+
if (i > beg)
204+
tokens.add(label.substring(beg, i));
198205
continue;
199206
}
200207

display/renderbasic/src/main/java/org/openscience/cdk/renderer/generators/standard/StandardSgroupGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ private IRenderingElement generateSgroupBrackets(Sgroup sgroup,
569569
if (isUnsignedInt(subscriptSuffix) &&
570570
crossingBonds.isEmpty() &&
571571
symbols.containsKey(atom)) {
572-
TextOutline prefix = new TextOutline('·' + subscriptSuffix, font).resize(1/scale,1/-scale);
572+
TextOutline prefix = new TextOutline(INTERPUNCT + subscriptSuffix, font).resize(1/scale,1/-scale);
573573
Rectangle2D prefixBounds = prefix.getLogicalBounds();
574574

575575
AtomSymbol symbol = symbols.get(atom);

display/renderbasic/src/test/java/org/openscience/cdk/renderer/generators/standard/AbbreviationLabelTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,13 @@ public void reversingBracketsWithNumbers() {
163163
assertThat(Joiner.on("").join(tokens), is("(HO)2B"));
164164
}
165165

166+
@Test
167+
public void hydrateFormatting() {
168+
List<String> tokens = new ArrayList<>();
169+
assertTrue(AbbreviationLabel.parse("SnCl4.2H2O", tokens));
170+
System.out.println(tokens);
171+
}
172+
166173
@Test
167174
public void nonAbbreviationLabel() {
168175
List<String> tokens = new ArrayList<>();

0 commit comments

Comments
 (0)