#ifndef INSETLISTINGSPARAMS_H
#define INSETLISTINGSPARAMS_H
-#include <vector>
+#include <map>
#include <exception>
#include "Lexer.h"
#include "InsetCollapsable.h"
void read(Lexer &);
/// valid parameter string
- std::string params() const { return params_; }
-
+ std::string params(std::string const & sep=",") const;
+
/// add key=value to params_
void addParam(std::string const & key, std::string const & value);
/// add a few parameters
void addParams(std::string const & par);
-
+
/// set params_ with par, throw an exception if par is valid
void setParams(std::string const & par);
/// get parameter from encoded string
void fromEncodedString(std::string const & par);
- ///
+ ///
bool isInline() const { return inline_; }
+ ///
+ bool isFloat() const;
+
///
InsetCollapsable::CollapseStatus status() const { return status_; }
///
void setInline(bool i) { inline_ = i; }
+ /// get value of option \c param
+ std::string getParamValue(std::string const & param) const;
+
///
void clear() { params_.clear(); }
+
+ /// validate parameter, return an error message
+ docstring validate() const;
private:
/// inline or normal listings
bool inline_;
- /// listing parameters, this will always be a *valid* string
- /// that can be passed to listing packages.
- std::string params_;
-
- /// keys defined in params_
- std::vector<std::string> keys_;
+ /// key-value pairs of the parameters
+ std::map<std::string, std::string> params_;
/// collapsable status
InsetCollapsable::CollapseStatus status_;
};
-class invalidParam : public std::exception {
-public:
- invalidParam(std::string const & details) :
- details_(details)
- {}
-
- virtual const char * what() const throw() {
- return details_.c_str();
- }
-
- virtual ~invalidParam() throw() {}
-private:
- std::string const details_;
-};
-
-
} // namespace lyx
#endif