*
* \author Angus Leeming
* \author Georg Baum
- * \author Richard Heck
+ * \author Richard Kimberly Heck
*
* Full author contact details are available in file CREDITS.
*/
#include "InsetCode.h"
-#include "OutputParams.h"
-
#include "support/docstring.h"
#include <string>
namespace lyx {
-class Lexer;
class Buffer;
+class Lexer;
+class OutputParams;
class ParamInfo {
public:
};
/// Special handling on output
enum ParamHandling {
- HANDLING_NONE, /// no special handling
- HANDLING_ESCAPE, /// escape special characters
- HANDLING_LATEXIFY /// transform special characters to LaTeX macros
+ HANDLING_NONE = 1, /// no special handling
+ HANDLING_ESCAPE = 2, /// escape special characters
+ HANDLING_LATEXIFY = 4, /// transform special characters to LaTeX macros
+ HANDLING_LTRIM = 8, /// trim blanks on the left
+ HANDLING_INDEX_ESCAPE = 16, /// escape makeindex special chars
};
///
class ParamData {
// flag for all commands.
public:
///
- ParamData(std::string const &, ParamType, ParamHandling = HANDLING_NONE);
+ ParamData(std::string const &, ParamType, ParamHandling = HANDLING_NONE,
+ bool ignore = false,
+ docstring default_value = docstring());
///
std::string name() const { return name_; }
///
/// whether this is an optional LaTeX argument
bool isOptional() const;
///
+ bool ignore() const { return ignore_; }
+ ///
+ docstring const & defaultValue() const { return default_value_; }
+ ///
bool operator==(ParamData const &) const;
- ///
+ ///
bool operator!=(ParamData const & rhs) const
{ return !(*this == rhs); }
private:
ParamType type_;
/// do we need special handling on latex output?
ParamHandling handling_;
+ ///
+ bool ignore_;
+ ///
+ docstring default_value_;
};
/// adds a new parameter
+ /// If ignoreval is true, then the parameter is never saved, and is always
+ /// given the default value.
void add(std::string const & name, ParamType type,
- ParamHandling = HANDLING_NONE);
+ ParamHandling = HANDLING_NONE, bool ignoreval = false,
+ docstring default_value = docstring());
///
bool empty() const { return info_.empty(); }
///
///
const_iterator const end() const { return info_.end(); }
/// \return true if name corresponds to a parameter of some sort.
- /// \return false if the parameter does not exist at all of it it
+ /// \return false if the parameter does not exist at all of it it
bool hasParam(std::string const & name) const;
///
ParamData const & operator[](std::string const & name) const;
std::string insetType() const;
///
InsetCode code() const { return insetCode_; }
- ///
- void read(Lexer &);
/// Parse the command
+ void read(Lexer &);
+ ///
+ void Read(Lexer &, Buffer const *);
///
void write(std::ostream &) const;
///
/// are cleared except those that exist also in the new command.
/// What matters here is the parameter name, not position.
void setCmdName(std::string const & n);
- /// FIXME Would be better removed, but is used in BufferView.cpp in
+ /// FIXME Would be better removed, but is used in BufferView.cpp in
/// ways that make removal hard.
docstring getFirstNonOptParam() const;
/// get parameter \p name
void clear();
///
static bool isCompatibleCommand(InsetCode code, std::string const & s);
- ///
+ ///
ParamInfo const & info() const { return info_; }
///
docstring prepareCommand(OutputParams const & runparams,