Cadabra
Computer algebra system for field theory problems
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 "json/json.h"
9 
10 namespace cadabra {
11 
26 
27  class DataCell {
28  public:
29 
33 
34  enum class CellType {
35  document,
36  python,
37  latex,
38  output,
39  verbatim,
40  latex_view,
41  input_form,
42  image_png,
43  error,
44  // section
45  };
46 
50 
51  class id_t {
52  public:
53  id_t();
54 
55  Json::UInt64 id;
57 
58  bool operator<(const id_t& other) const;
59  };
60 
62 
63  DataCell(CellType t=CellType::python, const std::string& str="", bool hidden=false);
64 
67 
68  DataCell(id_t, CellType t=CellType::python, const std::string& str="", bool hidden=false);
69 
71 
72  DataCell(const DataCell&);
73 
75 
80 
81  std::string textbuf;
82 
87 
88  bool hidden;
89  bool sensitive;
90 
93 
95 
99 
100  bool running;
101 
102  id_t id() const;
103 
104  private:
106  };
107 
108  typedef tree<DataCell> DTree;
109 
112 
113  std::string JSON_serialise(const DTree&);
114  void JSON_recurse(const DTree&, DTree::iterator, Json::Value&);
115 
117 
118  void JSON_deserialise(const std::string&, DTree&);
119  void JSON_in_recurse(DTree& doc, DTree::iterator loc, const Json::Value& cells);
120 
122 
123  std::string export_as_HTML(const DTree& doc, bool for_embedding=false, bool
124  strip_code=false, std::string title="");
125  void HTML_recurse(const DTree& doc, DTree::iterator it, std::ostringstream& str,
126  const std::string& preamble_string,
127  bool for_embedding=false, bool strip_code=false, std::string title="");
128 
131 
132  std::string latex_to_html(const std::string&);
133 
136 
137  std::string export_as_LaTeX(const DTree& doc, const std::string& image_file_base);
138  void LaTeX_recurse(const DTree& doc, DTree::iterator it, std::ostringstream& str,
139  const std::string& preamble_string, const std::string& image_file_base,
140  int& image_num);
141 
144 
145  std::string export_as_python(const DTree& doc);
146  void python_recurse(const DTree& doc, DTree::iterator it, std::ostringstream& str);
147 
149  // std::string replace_all(std::string, const std::string& old, const std::string& nw);
150 
153 
154  Json::Value ipynb2cnb(const Json::Value&);
155 }
cadabra::DataCell::sensitive
bool sensitive
Definition: DataCell.hh:89
cadabra::python_recurse
void python_recurse(const DTree &doc, DTree::iterator it, std::ostringstream &str)
Definition: DataCell.cc:646
cadabra::JSON_deserialise
void JSON_deserialise(const std::string &, DTree &)
Load a document from .cnb format, i.e. the inverse of the above.
Definition: DataCell.cc:368
cadabra::DataCell::CellType::input_form
output: cell containing input form of preceding output cell
cadabra::DataCell::running
bool running
Indicator whether this cell is currently being evaluated by the server.
Definition: DataCell.hh:100
cadabra::ipynb2cnb
Json::Value ipynb2cnb(const Json::Value &)
Replace all occurrences of a substring in the original string.
Definition: DataCell.cc:679
cadabra::DataCell::CellType::latex
input : editor cell for code in latex
cadabra::DataCell::id_t::created_by_client
bool created_by_client
Definition: DataCell.hh:56
cadabra::LaTeX_recurse
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)
Definition: DataCell.cc:530
cadabra::DataCell::CellType::verbatim
output: cell showing other verbatim output
cadabra::DataCell
Definition: DataCell.hh:27
cadabra::JSON_serialise
std::string JSON_serialise(const DTree &)
Serialise a document into .cj format, which is a JSON version of the document tree.
Definition: DataCell.cc:287
cadabra::export_as_HTML
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:71
cadabra::DataCell::id_t::id
Json::UInt64 id
Definition: DataCell.hh:55
cadabra::DataCell::CellType::output
output: cell showing python stdout, verbatim
cadabra::DataCell::CellType::error
output: cell showing LaTeX text for errors
cadabra::DataCell::hidden
bool hidden
Flag indicating whether this cell should be hidden from view.
Definition: DataCell.hh:88
cadabra::JSON_in_recurse
void JSON_in_recurse(DTree &doc, DTree::iterator loc, const Json::Value &cells)
Definition: DataCell.cc:396
cadabra::DataCell::id_t::id_t
id_t()
Definition: DataCell.cc:35
cadabra::DataCell::DataCell
DataCell(CellType t=CellType::python, const std::string &str="", bool hidden=false)
Standard constructor, generates a new unique id for this DataCell.
Definition: DataCell.cc:41
cadabra::DataCell::cell_type
CellType cell_type
Definition: DataCell.hh:74
cadabra::DTree
tree< DataCell > DTree
Definition: DataCell.hh:108
cadabra::DataCell::CellType::document
head node, only one per document
ipynb2cnb.cells
cells
Definition: ipynb2cnb.py:21
cadabra::DataCell::ignore_on_import
bool ignore_on_import
Flag indicating whether this cell should be ignored in case the notebook is imported.
Definition: DataCell.hh:94
cadabra::HTML_recurse
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:171
cadabra::DataCell::CellType::image_png
output: cell showing a base64 encoded PNG image
cadabra
Functions to handle the exchange properties of two or more symbols in a product.
Definition: Adjform.cc:80
cadabra::DataCell::CellType::python
input : editor cell for code in python
cadabra::export_as_LaTeX
std::string export_as_LaTeX(const DTree &doc, const std::string &image_file_base)
Export a document to a single self-contained LaTeX file, with the exception of images which get saved...
Definition: DataCell.cc:510
cadabra::DataCell::CellType
CellType
Cells are labelled with the data type of its contents, which is stored in a textural representation b...
Definition: DataCell.hh:34
cadabra::latex_to_html
std::string latex_to_html(const std::string &)
Convert various LaTeX constructions to HTML-with-Mathjax, e.g.
Definition: DataCell.cc:89
cadabra::DataCell::textbuf
std::string textbuf
Textual representation of the cell content.
Definition: DataCell.hh:81
cadabra::DataCell::id_t::operator<
bool operator<(const id_t &other) const
Definition: DataCell.cc:28
cadabra::DataCell::id_t
Each cell is identified by a serial number 'id' which is used to keep track of it across network call...
Definition: DataCell.hh:51
cadabra::export_as_python
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:638
cadabra::DataCell::serial_number
id_t serial_number
Definition: DataCell.hh:105
cadabra::JSON_recurse
void JSON_recurse(const DTree &, DTree::iterator, Json::Value &)
Definition: DataCell.cc:298
cadabra::DataCell::id
id_t id() const
Definition: DataCell.cc:505
cadabra::DataCell::CellType::latex_view
output: cell showing LaTeX text formatted using LaTeX