in src/org/jetbrains/plugins/ipnb/format/IpnbParser.java [58:84]
public static IpnbFile parseIpnbFile(@NotNull final CharSequence fileText, @NotNull final VirtualFile virtualFile) {
myErrors.clear();
final String path = virtualFile.getPath();
IpnbFileRaw rawFile = gson.fromJson(fileText.toString(), IpnbFileRaw.class);
if (rawFile == null) {
int nbformat = isIpythonNewFormat(virtualFile) ? 4 : 3;
return new IpnbFile(new HashMap<>(), nbformat, 0, Lists.newArrayList(), path);
}
List<IpnbCell> cells = new ArrayList<>();
final List<IpnbWorksheet> worksheets = rawFile.worksheets;
if (worksheets == null) {
for (IpnbCellRaw rawCell : rawFile.cells) {
cells.add(rawCell.createCell(validateSource(rawCell)));
}
}
else {
for (IpnbWorksheet worksheet : worksheets) {
final List<IpnbCellRaw> rawCells = worksheet.cells;
for (IpnbCellRaw rawCell : rawCells) {
cells.add(rawCell.createCell(validateSource(rawCell)));
}
}
}
showValidationMessage();
return new IpnbFile(rawFile.metadata, rawFile.nbformat, rawFile.nbformat_minor, cells, path);
}