+InsetExternalMailer::InsetExternalMailer(InsetExternal & inset)
+ : inset_(inset)
+{}
+
+
+string const InsetExternalMailer::inset2string() const
+{
+ return params2string(inset_.params());
+}
+
+
+void InsetExternalMailer::string2params(string const & in,
+ InsetExternal::Params & params)
+{
+ params = InsetExternal::Params();
+
+ istringstream data(in);
+ LyXLex lex(0,0);
+ lex.setStream(data);
+
+ if (lex.isOK()) {
+ lex.next();
+ string const token = lex.getString();
+ if (token != name_)
+ return;
+ }
+
+ // This is part of the inset proper that is usually swallowed
+ // by Buffer::readInset
+ if (lex.isOK()) {
+ lex.next();
+ string const token = lex.getString();
+ if (token != "External")
+ return;
+ }
+
+ if (lex.isOK()) {
+ InsetExternal inset;
+ inset.read(0, lex);
+ params = inset.params();
+ }
+}
+
+
+string const
+InsetExternalMailer::params2string(InsetExternal::Params const & params)
+{
+ InsetExternal inset;
+ inset.setFromParams(params);
+ ostringstream data;
+ data << name_ << ' ';
+ inset.write(0, data);
+ data << "\\end_inset\n";
+
+ return data.str();