@@ -16,22 +16,22 @@ std::string cadabra::escape_quotes(const std::string& line)
1616 }
1717
1818
19- std::string cadabra::cdb2python (const std::string& blk)
19+ std::string cadabra::cdb2python (const std::string& blk, bool display )
2020 {
2121 std::stringstream str (blk);
2222 std::string line;
2323 std::string newblk;
2424 std::string lhs, rhs, op, indent;
2525 while (std::getline (str, line, ' \n ' )) {
26- std::string res=cadabra::convert_line (line, lhs, rhs, op, indent);
26+ std::string res=cadabra::convert_line (line, lhs, rhs, op, indent, display );
2727 // std::cerr << "preparsed : " + res << std::endl;
2828 if (res!=" ::empty" )
2929 newblk += res+' \n ' ;
3030 }
3131 return newblk;
3232 }
3333
34- std::string cadabra::convert_line (const std::string& line, std::string& lhs, std::string& rhs, std::string& op, std::string& indent)
34+ std::string cadabra::convert_line (const std::string& line, std::string& lhs, std::string& rhs, std::string& op, std::string& indent, bool display )
3535 {
3636 std::string ret;
3737
@@ -58,7 +58,12 @@ std::string cadabra::convert_line(const std::string& line, std::string& lhs, std
5858 if (line_stripped[0 ]==' #' ) return line;
5959
6060 // Bare ';' gets replaced with 'display(_)'.
61- if (line_stripped==" ;" ) return indent_line+" display(_)" ;
61+ if (line_stripped==" ;" ) {
62+ if (display)
63+ return indent_line+" display(_)" ;
64+ else
65+ return indent_line;
66+ }
6267
6368 // 'lastchar' is either a Cadabra termination character, or empty.
6469 // 'line_stripped' will have that character stripped, if present.
@@ -74,7 +79,8 @@ std::string cadabra::convert_line(const std::string& line, std::string& lhs, std
7479 ret+=" _=" +lhs;
7580 }
7681 if (lastchar!=" ." )
77- ret = ret + " ; display(" +lhs+" )" ;
82+ if (display)
83+ ret = ret + " ; display(" +lhs+" )" ;
7884 indent=" " ;
7985 lhs=" " ;
8086 rhs=" " ;
@@ -124,7 +130,7 @@ std::string cadabra::convert_line(const std::string& line, std::string& lhs, std
124130 + escape_quotes (line_stripped.substr (found+2 )) + " ')" ;
125131 std::string objname = line_stripped.substr (0 ,found);
126132 ret = ret + " ; _=" +objname;
127- if (lastchar==" ;" && indent_line.size ()==0 )
133+ if (lastchar==" ;" && indent_line.size ()==0 && display )
128134 ret = ret + " ; display(" +objname+" )" ;
129135 }
130136 }
@@ -149,7 +155,7 @@ std::string cadabra::convert_line(const std::string& line, std::string& lhs, std
149155 ret = indent_line + " __cdbtmp__ = " + line_stripped.substr (found+2 )
150156 + " (Ex(r'" +escape_quotes (line_stripped.substr (0 ,found))+" '))" ;
151157 }
152- if (lastchar==" ;" )
158+ if (lastchar==" ;" && display )
153159 ret += " ; display(__cdbtmp__)" ;
154160 }
155161 else {
@@ -158,7 +164,7 @@ std::string cadabra::convert_line(const std::string& line, std::string& lhs, std
158164 }
159165 }
160166 else {
161- if (lastchar==" ;" )
167+ if (lastchar==" ;" && display )
162168 ret = indent_line + " _ = " + line_stripped + " display(_)" ;
163169 else
164170 ret = indent_line + line_stripped;
@@ -167,7 +173,7 @@ std::string cadabra::convert_line(const std::string& line, std::string& lhs, std
167173 return ret+end_of_line;
168174 }
169175
170- std::string cadabra::cnb2python (const std::string& in_name)
176+ std::string cadabra::cnb2python (const std::string& in_name, bool display )
171177 {
172178 // Read the file into a Json object and get the cells
173179 std::ifstream ifs (in_name);
@@ -200,8 +206,11 @@ std::string cadabra::cnb2python(const std::string& in_name)
200206 std::stringstream s, temp;
201207 s << cell[" source" ].asString ();
202208 std::string line, lhs, rhs, op, indent;
203- while (std::getline (s, line))
204- ofs << convert_line (line, lhs, rhs, op, indent) << ' \n ' ;
209+ while (std::getline (s, line)) {
210+ auto res = convert_line (line, lhs, rhs, op, indent, display);
211+ if (res!=" ::empty" )
212+ ofs << res << ' \n ' ;
213+ }
205214 }
206215 }
207216 // Ensure only symbols defined in this file get exported
0 commit comments