#ifndef INSETLISTINGSPARAMS_H
#define INSETLISTINGSPARAMS_H
+#include "InsetCaptionable.h"
+
#include <map>
-#include <exception>
-#include "Lexer.h"
-#include "InsetCollapsable.h"
namespace lyx {
/// valid parameter string
std::string params(std::string const & sep=",") const;
- /// add key=value to params_
- void addParam(std::string const & key, std::string const & value);
+ /// add key=value to params_. key_=value will be used if key=value already exists
+ /// unless replace=true.
+ void addParam(std::string const & key, std::string const & value,
+ bool replace = false);
/// add a few parameters
void addParams(std::string const & par);
///
void clear() { params_.clear(); }
+
+ /// validate parameter, return an error message
+ docstring validate() const;
private:
/// inline or normal listings
bool inline_;
+ /// Do we have a param with the given \c key?
+ bool hasParam(std::string const & key) const;
+ /// return the value for the given \c key, if avaible, else empty string
+ std::string getValue(std::string const & key) const;
+
/// key-value pairs of the parameters
- std::map<std::string, std::string> params_;
+ // Use a vector of pairs in order to maintain the order of insertion.
+ typedef std::vector<std::pair<std::string, std::string> > keyValuePair;
+ keyValuePair params_;
/// collapsable status
InsetCollapsable::CollapseStatus status_;
};
-class invalidParam : public std::exception {
-public:
- invalidParam(docstring const & details)
- : details_(to_utf8(details))
- {}
-
- virtual const char * what() const throw() {
- return details_.c_str();
- }
-
- virtual ~invalidParam() throw() {}
-private:
- std::string const details_;
-};
-
-
} // namespace lyx
#endif