generateAsciiArt static method
- String smiles
Creates a simple ASCII art representation of a molecule
This is useful for console applications or when graphical visualization is not available
Implementation
static String generateAsciiArt(String smiles) {
if (!isSmilesValid(smiles)) {
return 'Invalid SMILES string provided';
}
// Parse the SMILES to get structure information
final structure = parseSmiles(smiles);
final atomCounts = structure['atomCounts'] as Map<String, int>;
final rings = structure['rings'] as int;
final branches = structure['branches'] as int;
// Generate a simple ASCII representation
final buffer = StringBuffer();
buffer.writeln('ASCII Molecule: $smiles');
buffer.writeln('=' * 30);
// Create a representation of atoms
atomCounts.forEach((element, count) {
buffer.write('$element');
if (count > 1) buffer.write(' ─ ' * (count - 1));
buffer.writeln();
});
// Add rings representation
if (rings > 0) {
buffer.writeln('\nRings (${rings}):');
for (int i = 0; i < rings; i++) {
buffer.writeln(' ○');
}
}
// Add branches representation
if (branches > 0) {
buffer.writeln('\nBranches (${branches}):');
for (int i = 0; i < branches; i++) {
buffer.writeln(' │');
buffer.writeln(' └─');
}
}
return buffer.toString();
}