Cadabra
Computer algebra system for field theory problems
Loading...
Searching...
No Matches
DataCell.hh
Go to the documentation of this file.
1
2#pragma once
3
4#include <string>
5#include <mutex>
6
7#include "tree.hh"
8#include "nlohmann/json.hpp"
9
10namespace cadabra {
11
26
27 class DataCell {
28 public:
29
33
34 enum class CellType {
35 document,
36 python,
37 latex,
38 output,
39 verbatim,
42 image_png,
43 image_svg,
44 slider,
45 error,
46 // section
47 };
48
52
53 class id_t {
54 public:
55 id_t();
56
59
60 bool operator<(const id_t& other) const;
61 };
62
64
65 DataCell(CellType t=CellType::python, const std::string& str="", bool hidden=false);
66
69
70 DataCell(id_t, CellType t=CellType::python, const std::string& str="", bool hidden=false);
71
73
74 DataCell(const DataCell&);
75
77
82
83 std::string textbuf;
84
89
90 bool hidden;
92
95
97
101
103
105 id_t id() const;
106
109
110 std::set<std::string> variables_referenced;
111
112 private:
114 };
115
117
120
121 std::string JSON_serialise(const DTree&);
122 void JSON_recurse(const DTree&, DTree::iterator, nlohmann::json&);
123
125
126 void JSON_deserialise(const std::string&, DTree&);
127 void JSON_in_recurse(DTree& doc, DTree::iterator loc, const nlohmann::json& cells);
128
130
131 std::string export_as_HTML(const DTree& doc, bool for_embedding=false, bool
132 strip_code=false, std::string title="");
133 void HTML_recurse(const DTree& doc, DTree::iterator it, std::ostringstream& str,
134 const std::string& preamble_string,
135 bool for_embedding=false, bool strip_code=false, std::string title="");
136
139
140 std::string latex_to_html(const std::string&);
141
144
145 std::string export_as_LaTeX(const DTree& doc, const std::string& image_file_base, bool for_embedding=false);
146 void LaTeX_recurse(const DTree& doc, DTree::iterator it, std::ostringstream& str,
147 const std::string& preamble_string, const std::string& image_file_base,
148 int& image_num, bool for_embedding);
149
152
153 std::string export_as_python(const DTree& doc);
154 void python_recurse(const DTree& doc, DTree::iterator it, std::ostringstream& str);
155
157 // std::string replace_all(std::string, const std::string& old, const std::string& nw);
158
161
162 nlohmann::json ipynb2cnb(const nlohmann::json&);
163
165
166 nlohmann::json cnb2ipynb(const nlohmann::json&);
167}
Each cell is identified by a serial number 'id' which is used to keep track of it across network call...
Definition DataCell.hh:53
uint64_t id
Definition DataCell.hh:57
bool operator<(const id_t &other) const
Definition DataCell.cc:31
bool created_by_client
Definition DataCell.hh:58
id_t()
Definition DataCell.cc:38
DataCells are the basic building blocks for a document.
Definition DataCell.hh:27
CellType cell_type
Definition DataCell.hh:76
bool running
Indicator whether this cell is currently being evaluated by the server.
Definition DataCell.hh:102
std::set< std::string > variables_referenced
List of all variables referenced in this cell.
Definition DataCell.hh:110
bool ignore_on_import
Flag indicating whether this cell should be ignored in case the notebook is imported.
Definition DataCell.hh:96
CellType
Cells are labelled with the data type of its contents, which is stored in a textural representation b...
Definition DataCell.hh:34
@ input_form
output: cell containing input form of preceding output cell
@ slider
output: cell showing a slider
@ python
input : editor cell for code in python
@ latex
input : editor cell for code in latex
@ image_svg
output: cell showing an SVG image
@ output
output: cell showing python stdout, verbatim
@ latex_view
output: cell showing LaTeX text formatted using LaTeX
@ error
output: cell showing LaTeX text for errors
@ image_png
output: cell showing a base64 encoded PNG image
@ verbatim
output: cell showing other verbatim output
@ document
head node, only one per document
bool hidden
Flag indicating whether this cell should be hidden from view.
Definition DataCell.hh:90
id_t id() const
Return the cell ID. This is essentially a random UUID.
Definition DataCell.cc:549
id_t serial_number
Definition DataCell.hh:113
bool sensitive
Definition DataCell.hh:91
std::string textbuf
Textual representation of the cell content.
Definition DataCell.hh:83
Functions to handle the exchange properties of two or more symbols in a product.
Definition Adjform.cc:83
void LaTeX_recurse(const DTree &doc, DTree::iterator it, std::ostringstream &str, const std::string &preamble_string, const std::string &image_file_base, int &image_num, bool for_embedding)
Definition DataCell.cc:577
nlohmann::json cnb2ipynb(const nlohmann::json &)
Convert the JSON of a Cadabra notebook to a Jupyter notebook.
Definition DataCell.cc:814
std::string export_as_HTML(const DTree &doc, bool for_embedding=false, bool strip_code=false, std::string title="")
Export a document to a single self-contained HTML file containing inline CSS.
Definition DataCell.cc:74
std::string export_as_python(const DTree &doc)
Export a document to a python-like file (converting text cells to comments and python cells to python...
Definition DataCell.cc:713
tree< DataCell > DTree
Definition DataCell.hh:116
nlohmann::json ipynb2cnb(const nlohmann::json &)
Replace all occurrences of a substring in the original string.
Definition DataCell.cc:754
void JSON_deserialise(const std::string &, DTree &)
Load a document from .cnb format, i.e. the inverse of the above.
Definition DataCell.cc:400
std::string latex_to_html(const std::string &)
Convert various LaTeX constructions to HTML-with-Mathjax, e.g.
Definition DataCell.cc:92
void JSON_in_recurse(DTree &doc, DTree::iterator loc, const nlohmann::json &cells)
Definition DataCell.cc:435
std::string export_as_LaTeX(const DTree &doc, const std::string &image_file_base, bool for_embedding=false)
Export a document to a single self-contained LaTeX file, with the exception of images which get saved...
Definition DataCell.cc:554
void JSON_recurse(const DTree &, DTree::iterator, nlohmann::json &)
Definition DataCell.cc:324
void python_recurse(const DTree &doc, DTree::iterator it, std::ostringstream &str)
Definition DataCell.cc:721
void set(rset_t::iterator &num, multiplier_t fac)
Definition Storage.cc:1064
void HTML_recurse(const DTree &doc, DTree::iterator it, std::ostringstream &str, const std::string &preamble_string, bool for_embedding=false, bool strip_code=false, std::string title="")
Definition DataCell.cc:178
std::string JSON_serialise(const DTree &)
Serialise a document into .cj format, which is a JSON version of the document tree.
Definition DataCell.cc:313