From 6ec4523f3e0cb4521246708fadf6f282b67e14ae Mon Sep 17 00:00:00 2001 From: Yuriy Skalko Date: Sat, 2 Jan 2021 00:18:54 +0200 Subject: [PATCH] Extract toString method into InsetParams --- src/Makefile.am | 1 + src/insets/InsetBox.cpp | 9 -------- src/insets/InsetBox.h | 2 +- src/insets/InsetBranch.cpp | 8 -------- src/insets/InsetBranch.h | 2 -- src/insets/InsetCommandParams.cpp | 16 ++++++--------- src/insets/InsetCommandParams.h | 3 ++- src/insets/InsetERT.cpp | 9 -------- src/insets/InsetERT.h | 2 +- src/insets/InsetExternal.cpp | 9 -------- src/insets/InsetExternal.h | 3 ++- src/insets/InsetFloat.cpp | 8 -------- src/insets/InsetFloat.h | 2 -- src/insets/InsetGraphicsParams.cpp | 8 ++------ src/insets/InsetGraphicsParams.h | 9 +++++--- src/insets/InsetIPAMacro.cpp | 9 -------- src/insets/InsetIPAMacro.h | 2 +- src/insets/InsetIndex.cpp | 9 -------- src/insets/InsetIndex.h | 2 +- src/insets/InsetListingsParams.cpp | 9 -------- src/insets/InsetListingsParams.h | 2 +- src/insets/InsetNewline.cpp | 9 -------- src/insets/InsetNewline.h | 2 +- src/insets/InsetNewpage.cpp | 9 -------- src/insets/InsetNewpage.h | 2 +- src/insets/InsetNote.cpp | 9 -------- src/insets/InsetNote.h | 2 +- src/insets/InsetParams.cpp | 33 ++++++++++++++++++++++++++++++ src/insets/InsetParams.h | 5 ++++- src/insets/InsetPhantom.cpp | 9 -------- src/insets/InsetPhantom.h | 2 +- src/insets/InsetScript.cpp | 9 -------- src/insets/InsetScript.h | 2 +- src/insets/InsetSeparator.cpp | 9 -------- src/insets/InsetSeparator.h | 2 +- src/insets/InsetSpace.cpp | 11 ---------- src/insets/InsetSpace.h | 2 +- src/insets/InsetVSpace.cpp | 9 -------- src/insets/InsetVSpace.h | 2 +- src/insets/InsetWrap.cpp | 9 -------- src/insets/InsetWrap.h | 2 +- 41 files changed, 70 insertions(+), 193 deletions(-) create mode 100644 src/insets/InsetParams.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 7dec8a1a6d..8627d6b8fb 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -577,6 +577,7 @@ SOURCEFILESINSETS = \ insets/InsetNewpage.cpp \ insets/InsetNomencl.cpp \ insets/InsetNote.cpp \ + insets/InsetParams.cpp \ insets/InsetPhantom.cpp \ insets/InsetPreview.cpp \ insets/InsetQuotes.cpp \ diff --git a/src/insets/InsetBox.cpp b/src/insets/InsetBox.cpp index 60291bf62b..80518c7ddf 100644 --- a/src/insets/InsetBox.cpp +++ b/src/insets/InsetBox.cpp @@ -834,15 +834,6 @@ string InsetBox::contextMenuName() const } -string InsetBoxParams::toString() const -{ - ostringstream data; - data << "box" << ' '; - write(data); - return data.str(); -} - - void InsetBox::string2params(string const & in, InsetBoxParams & params) { if (in.empty()) diff --git a/src/insets/InsetBox.h b/src/insets/InsetBox.h index 6cc0db6bf3..16ebf4a794 100644 --- a/src/insets/InsetBox.h +++ b/src/insets/InsetBox.h @@ -31,7 +31,7 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "box"; } /// std::string type; diff --git a/src/insets/InsetBranch.cpp b/src/insets/InsetBranch.cpp index baa6c58768..80fd56afa2 100644 --- a/src/insets/InsetBranch.cpp +++ b/src/insets/InsetBranch.cpp @@ -387,14 +387,6 @@ bool InsetBranch::isMacroScope() const } -string InsetBranchParams::toString() const -{ - ostringstream data; - write(data); - return data.str(); -} - - void InsetBranch::string2params(string const & in, InsetBranchParams & params) { params = InsetBranchParams(); diff --git a/src/insets/InsetBranch.h b/src/insets/InsetBranch.h index 87eb71ff91..e7b9a50888 100644 --- a/src/insets/InsetBranch.h +++ b/src/insets/InsetBranch.h @@ -28,8 +28,6 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; - /// docstring branch; /// bool inverted; diff --git a/src/insets/InsetCommandParams.cpp b/src/insets/InsetCommandParams.cpp index 4ea716f9c4..f74f1ee40c 100644 --- a/src/insets/InsetCommandParams.cpp +++ b/src/insets/InsetCommandParams.cpp @@ -406,6 +406,12 @@ void InsetCommandParams::Write(ostream & os, Buffer const * buffer) const } +string InsetCommandParams::name() const +{ + return insetName(code()); +} + + bool InsetCommandParams::writeEmptyOptional(ParamInfo::const_iterator ci) const { LASSERT(ci->isOptional(), return false); @@ -604,16 +610,6 @@ docstring InsetCommandParams::getFirstNonOptParam() const } -string InsetCommandParams::toString() const -{ - ostringstream data; - data << insetName(code()) << ' '; - write(data); - data << "\\end_inset\n"; - return data.str(); -} - - docstring const & InsetCommandParams::operator[](string const & name) const { static const docstring dummy; diff --git a/src/insets/InsetCommandParams.h b/src/insets/InsetCommandParams.h index a7656dc4fc..cd4d76a6c6 100644 --- a/src/insets/InsetCommandParams.h +++ b/src/insets/InsetCommandParams.h @@ -137,7 +137,8 @@ public: /// void Write(std::ostream & os, Buffer const * buf) const; /// - std::string toString() const override; + std::string name() const override; + bool writeEndInset() const override { return true; } /// Build the complete LaTeX command docstring getCommand(OutputParams const &) const; /// Return the command name diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp index 00eb1d0405..f754954466 100644 --- a/src/insets/InsetERT.cpp +++ b/src/insets/InsetERT.cpp @@ -207,15 +207,6 @@ void InsetERTParams::read(Lexer & lex) } -string InsetERTParams::toString() const -{ - ostringstream data; - data << "ert" << ' '; - write(data); - return data.str(); -} - - docstring InsetERT::xhtml(XMLStream &, OutputParams const &) const { return docstring(); diff --git a/src/insets/InsetERT.h b/src/insets/InsetERT.h index 57a8c4ed0e..6656a99d12 100644 --- a/src/insets/InsetERT.h +++ b/src/insets/InsetERT.h @@ -28,7 +28,7 @@ struct InsetERTParams : public InsetParams { /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "ert"; } /// CollapseStatus status_; }; diff --git a/src/insets/InsetExternal.cpp b/src/insets/InsetExternal.cpp index 42918ec81d..9dd0fa2690 100644 --- a/src/insets/InsetExternal.cpp +++ b/src/insets/InsetExternal.cpp @@ -934,13 +934,4 @@ void InsetExternal::string2params(string const & in, InsetExternalParams & param } -string InsetExternalParams::toString() const -{ - ostringstream data; - data << "external" << ' '; - write(data); - data << "\\end_inset\n"; - return data.str(); -} - } // namespace lyx diff --git a/src/insets/InsetExternal.h b/src/insets/InsetExternal.h index 8d233c80b7..af4c496550 100644 --- a/src/insets/InsetExternal.h +++ b/src/insets/InsetExternal.h @@ -53,7 +53,8 @@ public: void write(std::ostream &) const override; void read(Lexer &) override; - std::string toString() const override; + std::string name() const override { return "external"; } + bool writeEndInset() const override { return true; } Buffer const * buffer() { return buffer_; } void setBuffer(Buffer const * b) { buffer_ = b; } diff --git a/src/insets/InsetFloat.cpp b/src/insets/InsetFloat.cpp index b6120ddd98..11b349256f 100644 --- a/src/insets/InsetFloat.cpp +++ b/src/insets/InsetFloat.cpp @@ -967,12 +967,4 @@ void InsetFloat::string2params(string const & in, InsetFloatParams & params) } -string InsetFloatParams::toString() const -{ - ostringstream data; - write(data); - return data.str(); -} - - } // namespace lyx diff --git a/src/insets/InsetFloat.h b/src/insets/InsetFloat.h index 9a043b5bab..58ac723a0a 100644 --- a/src/insets/InsetFloat.h +++ b/src/insets/InsetFloat.h @@ -32,8 +32,6 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; - /// std::string type; /// std::string placement; diff --git a/src/insets/InsetGraphicsParams.cpp b/src/insets/InsetGraphicsParams.cpp index c4de633552..60db34490e 100644 --- a/src/insets/InsetGraphicsParams.cpp +++ b/src/insets/InsetGraphicsParams.cpp @@ -254,13 +254,9 @@ bool InsetGraphicsParams::read(Lexer & lex, string const & token, bool allowOrig } -string InsetGraphicsParams::toString() const +void InsetGraphicsParams::read(Lexer & lex) { - ostringstream data; - data << "graphics" << ' '; - write(data); - data << "\\end_inset\n"; - return data.str(); + // TODO } diff --git a/src/insets/InsetGraphicsParams.h b/src/insets/InsetGraphicsParams.h index be3fae8a14..2315459edf 100644 --- a/src/insets/InsetGraphicsParams.h +++ b/src/insets/InsetGraphicsParams.h @@ -30,7 +30,7 @@ class Buffer; /// This class holds all the parameters needed by insetGraphics. -class InsetGraphicsParams +class InsetGraphicsParams : public InsetParams { public: /// Image filename. @@ -78,11 +78,14 @@ public: InsetGraphicsParams & operator=(InsetGraphicsParams const &); /// Save the parameters in the LyX format stream. /// Buffer is needed to figure out if a figure is embedded. - void write(std::ostream & os) const; + void write(std::ostream & os) const override; /// If the token belongs to our parameters, read it. bool read(Lexer & lex, std::string const & token, bool allowOrigin); + void read(Lexer & lex) override; /// - std::string toString() const; + std::string name() const override { return "graphics"; } + /// + bool writeEndInset() const override { return true; } /// convert // Only a subset of InsetGraphicsParams is needed for display purposes. // This function also interrogates lyxrc to ascertain whether diff --git a/src/insets/InsetIPAMacro.cpp b/src/insets/InsetIPAMacro.cpp index 1da5e29599..d908349fc8 100644 --- a/src/insets/InsetIPAMacro.cpp +++ b/src/insets/InsetIPAMacro.cpp @@ -340,15 +340,6 @@ docstring InsetIPADeco::toolTip(BufferView const &, int, int) const } -string InsetIPADecoParams::toString() const -{ - ostringstream data; - data << "IPADeco" << ' '; - write(data); - return data.str(); -} - - void InsetIPADeco::string2params(string const & in, InsetIPADecoParams & params) { params = InsetIPADecoParams(); diff --git a/src/insets/InsetIPAMacro.h b/src/insets/InsetIPAMacro.h index 41dd3bf405..6627539319 100644 --- a/src/insets/InsetIPAMacro.h +++ b/src/insets/InsetIPAMacro.h @@ -35,7 +35,7 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "IPADeco"; } /// Type type; }; diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp index 4deae0eba3..c076700ad9 100644 --- a/src/insets/InsetIndex.cpp +++ b/src/insets/InsetIndex.cpp @@ -520,15 +520,6 @@ void InsetIndex::read(Lexer & lex) } -string InsetIndexParams::toString() const -{ - ostringstream data; - data << "index"; - write(data); - return data.str(); -} - - void InsetIndex::string2params(string const & in, InsetIndexParams & params) { params = InsetIndexParams(); diff --git a/src/insets/InsetIndex.h b/src/insets/InsetIndex.h index c2f23a610c..7c0cb60753 100644 --- a/src/insets/InsetIndex.h +++ b/src/insets/InsetIndex.h @@ -29,7 +29,7 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "index"; } docstring index; }; diff --git a/src/insets/InsetListingsParams.cpp b/src/insets/InsetListingsParams.cpp index ab8a0573c3..8ffb438797 100644 --- a/src/insets/InsetListingsParams.cpp +++ b/src/insets/InsetListingsParams.cpp @@ -1006,15 +1006,6 @@ void InsetListingsParams::read(Lexer & lex) } -string InsetListingsParams::toString() const -{ - ostringstream data; - data << "listings" << ' '; - write(data); - return data.str(); -} - - string InsetListingsParams::params(string const & sep) const { string par; diff --git a/src/insets/InsetListingsParams.h b/src/insets/InsetListingsParams.h index 6f008b8865..f2d43733e7 100644 --- a/src/insets/InsetListingsParams.h +++ b/src/insets/InsetListingsParams.h @@ -34,7 +34,7 @@ public: void read(Lexer &) override; /// - std::string toString() const override; + std::string name() const override { return "listings"; } /// valid parameter string std::string params(std::string const & sep=",") const; diff --git a/src/insets/InsetNewline.cpp b/src/insets/InsetNewline.cpp index 983457dd53..b7c83cb5bd 100644 --- a/src/insets/InsetNewline.cpp +++ b/src/insets/InsetNewline.cpp @@ -281,13 +281,4 @@ void InsetNewline::string2params(string const & in, InsetNewlineParams & params) } -string InsetNewlineParams::toString() const -{ - ostringstream data; - data << "newline" << ' '; - write(data); - return data.str(); -} - - } // namespace lyx diff --git a/src/insets/InsetNewline.h b/src/insets/InsetNewline.h index 82667f5240..9b57e772c3 100644 --- a/src/insets/InsetNewline.h +++ b/src/insets/InsetNewline.h @@ -34,7 +34,7 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "newline"; } /// Kind kind; }; diff --git a/src/insets/InsetNewpage.cpp b/src/insets/InsetNewpage.cpp index 6ab41fa3ce..6a33b8469f 100644 --- a/src/insets/InsetNewpage.cpp +++ b/src/insets/InsetNewpage.cpp @@ -351,13 +351,4 @@ void InsetNewpage::string2params(string const & in, InsetNewpageParams & params) } -string InsetNewpageParams::toString() const -{ - ostringstream data; - data << "newpage" << ' '; - write(data); - return data.str(); -} - - } // namespace lyx diff --git a/src/insets/InsetNewpage.h b/src/insets/InsetNewpage.h index 55df6b8b96..72038e5ffe 100644 --- a/src/insets/InsetNewpage.h +++ b/src/insets/InsetNewpage.h @@ -40,7 +40,7 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "newpage"; } /// Kind kind; }; diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp index c2ab7e003f..b0afd7d282 100644 --- a/src/insets/InsetNote.cpp +++ b/src/insets/InsetNote.cpp @@ -338,15 +338,6 @@ FontInfo InsetNote::getFont() const } -string InsetNoteParams::toString() const -{ - ostringstream data; - data << "note" << ' '; - write(data); - return data.str(); -} - - void InsetNote::string2params(string const & in, InsetNoteParams & params) { params = InsetNoteParams(); diff --git a/src/insets/InsetNote.h b/src/insets/InsetNote.h index eb99a139e0..dca27d0d6a 100644 --- a/src/insets/InsetNote.h +++ b/src/insets/InsetNote.h @@ -32,7 +32,7 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "note"; } Type type; }; diff --git a/src/insets/InsetParams.cpp b/src/insets/InsetParams.cpp new file mode 100644 index 0000000000..d5b2849be0 --- /dev/null +++ b/src/insets/InsetParams.cpp @@ -0,0 +1,33 @@ +/** + * \file InsetParams.cpp + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Yuriy Skalko + * + * Full author contact details are available in file CREDITS. + */ + +#include + +#include "InsetParams.h" + +#include + +using namespace std; + +namespace lyx { + + +string InsetParams::toString() const +{ + ostringstream data; + data << name() << ' '; + write(data); + if (writeEndInset()) + data << "\\end_inset\n"; + return data.str(); +} + + +} // namespace lyx diff --git a/src/insets/InsetParams.h b/src/insets/InsetParams.h index 81866cb33a..c6709b4de5 100644 --- a/src/insets/InsetParams.h +++ b/src/insets/InsetParams.h @@ -30,7 +30,10 @@ public: /// virtual void read(Lexer & lex) = 0; /// - virtual std::string toString() const = 0; + std::string toString() const; +protected: + virtual std::string name() const { return std::string(); } + virtual bool writeEndInset() const { return false; } }; diff --git a/src/insets/InsetPhantom.cpp b/src/insets/InsetPhantom.cpp index 61d41ca2b2..4a40a4238c 100644 --- a/src/insets/InsetPhantom.cpp +++ b/src/insets/InsetPhantom.cpp @@ -362,15 +362,6 @@ string InsetPhantom::contextMenuName() const } -string InsetPhantomParams::toString() const -{ - ostringstream data; - data << "phantom" << ' '; - write(data); - return data.str(); -} - - void InsetPhantom::string2params(string const & in, InsetPhantomParams & params) { params = InsetPhantomParams(); diff --git a/src/insets/InsetPhantom.h b/src/insets/InsetPhantom.h index 4d31099b03..ebfe747c3f 100644 --- a/src/insets/InsetPhantom.h +++ b/src/insets/InsetPhantom.h @@ -32,7 +32,7 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "phantom"; } Type type; }; diff --git a/src/insets/InsetScript.cpp b/src/insets/InsetScript.cpp index 4a9ed85ee8..4eb10fc2c3 100644 --- a/src/insets/InsetScript.cpp +++ b/src/insets/InsetScript.cpp @@ -378,15 +378,6 @@ string InsetScript::contextMenuName() const } -string InsetScriptParams::toString() const -{ - ostringstream data; - data << "script "; - write(data); - return data.str(); -} - - void InsetScript::string2params(string const & in, InsetScriptParams & params) { params = InsetScriptParams(); diff --git a/src/insets/InsetScript.h b/src/insets/InsetScript.h index 516f40fc14..612dcb025e 100644 --- a/src/insets/InsetScript.h +++ b/src/insets/InsetScript.h @@ -32,7 +32,7 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "script"; } /// int shift(FontInfo const & font) const; /// diff --git a/src/insets/InsetSeparator.cpp b/src/insets/InsetSeparator.cpp index 5d6b71f734..fdfd4157c8 100644 --- a/src/insets/InsetSeparator.cpp +++ b/src/insets/InsetSeparator.cpp @@ -302,13 +302,4 @@ void InsetSeparator::string2params(string const & in, InsetSeparatorParams & par } -string InsetSeparatorParams::toString() const -{ - ostringstream data; - data << "separator" << ' '; - write(data); - return data.str(); -} - - } // namespace lyx diff --git a/src/insets/InsetSeparator.h b/src/insets/InsetSeparator.h index b930a2ada2..cf6861f211 100644 --- a/src/insets/InsetSeparator.h +++ b/src/insets/InsetSeparator.h @@ -33,7 +33,7 @@ public: /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "separator"; } Kind kind; }; diff --git a/src/insets/InsetSpace.cpp b/src/insets/InsetSpace.cpp index 4f9ba96e59..a9f4dc73c6 100644 --- a/src/insets/InsetSpace.cpp +++ b/src/insets/InsetSpace.cpp @@ -946,15 +946,4 @@ void InsetSpace::string2params(string const & in, InsetSpaceParams & params) } -string InsetSpaceParams::toString() const -{ - ostringstream data; - if (math) - data << "math"; - data << "space" << ' '; - write(data); - return data.str(); -} - - } // namespace lyx diff --git a/src/insets/InsetSpace.h b/src/insets/InsetSpace.h index 44f6a5e61e..98948704a4 100644 --- a/src/insets/InsetSpace.h +++ b/src/insets/InsetSpace.h @@ -81,7 +81,7 @@ struct InsetSpaceParams : public InsetParams { /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return math ? "mathspace" : "space"; } /// Kind kind; /// diff --git a/src/insets/InsetVSpace.cpp b/src/insets/InsetVSpace.cpp index a96a83c501..7174430c1e 100644 --- a/src/insets/InsetVSpace.cpp +++ b/src/insets/InsetVSpace.cpp @@ -271,13 +271,4 @@ void InsetVSpaceParams::read(Lexer & lex) } -string InsetVSpaceParams::toString() const -{ - ostringstream data; - data << "vspace" << ' '; - write(data); - return data.str(); -} - - } // namespace lyx diff --git a/src/insets/InsetVSpace.h b/src/insets/InsetVSpace.h index 0022d224d8..55b31d6904 100644 --- a/src/insets/InsetVSpace.h +++ b/src/insets/InsetVSpace.h @@ -27,7 +27,7 @@ struct InsetVSpaceParams : public InsetParams { /// void read(Lexer & lex) override; /// - std::string toString() const override; + std::string name() const override { return "vspace"; } /// VSpace space_; }; diff --git a/src/insets/InsetWrap.cpp b/src/insets/InsetWrap.cpp index d70f8818da..9400bf85d9 100644 --- a/src/insets/InsetWrap.cpp +++ b/src/insets/InsetWrap.cpp @@ -268,13 +268,4 @@ void InsetWrap::string2params(string const & in, InsetWrapParams & params) } -string InsetWrapParams::toString() const -{ - ostringstream data; - data << "wrap" << ' '; - write(data); - return data.str(); -} - - } // namespace lyx diff --git a/src/insets/InsetWrap.h b/src/insets/InsetWrap.h index bf65db4e58..795eb8b21f 100644 --- a/src/insets/InsetWrap.h +++ b/src/insets/InsetWrap.h @@ -27,7 +27,7 @@ public: /// void read(Lexer &) override; /// - std::string toString() const override; + std::string name() const override { return "wrap"; } /// std::string type; /// -- 2.39.5