mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-16 07:55:41 +00:00
5d4e6dfb68
Command was codespell -w -i 3 -S Makefile.in -L mathed,afe,tthe,ue,fro,uint,larg,alph,te,thes,alle,Claus,pres,pass-thru src/insets/
116 lines
2.8 KiB
C++
116 lines
2.8 KiB
C++
// -*- C++ -*-
|
|
/**
|
|
* \file InsetListingsParams.h
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author Bo Peng
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#ifndef INSETLISTINGSPARAMS_H
|
|
#define INSETLISTINGSPARAMS_H
|
|
|
|
#include "InsetCaptionable.h"
|
|
|
|
#include <map>
|
|
|
|
namespace lyx {
|
|
|
|
class InsetListingsParams {
|
|
public:
|
|
///
|
|
InsetListingsParams();
|
|
|
|
///
|
|
InsetListingsParams(std::string const &, bool in=false,
|
|
InsetCollapsible::CollapseStatus s = InsetCollapsible::Open);
|
|
|
|
/// write parameters to an ostream
|
|
void write(std::ostream &) const;
|
|
|
|
/// read parameters from an ostream
|
|
void read(Lexer &);
|
|
|
|
/// valid parameter string
|
|
std::string params(std::string const & sep=",") const;
|
|
|
|
/// 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);
|
|
|
|
/// set params_ with par, throw an exception if par is valid
|
|
void setParams(std::string const & par);
|
|
|
|
/// generate a parameter string that can be safely save and restored
|
|
/// by lyx' lexer
|
|
std::string encodedString() const;
|
|
|
|
/// newline (\n) separated parameters. comma can be removed.
|
|
/// One possible complication is that , may appear in option value.
|
|
std::string separatedParams(bool keepComma = false) const;
|
|
|
|
/// get parameter from encoded string
|
|
void fromEncodedString(std::string const & par);
|
|
|
|
///
|
|
bool isInline() const { return inline_; }
|
|
|
|
///
|
|
bool isFloat() const;
|
|
|
|
///
|
|
InsetCollapsible::CollapseStatus status() const { return status_; }
|
|
|
|
///
|
|
void setInline(bool i) { inline_ = i; }
|
|
|
|
///
|
|
void setMinted(bool use_minted) { package_ = use_minted ? 1 : 0; }
|
|
|
|
///
|
|
static int package() { return package_; }
|
|
|
|
///
|
|
bool minted() { return package_ == 1; }
|
|
|
|
/// 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:
|
|
/// listings or minted package (0 or 1, respectively)
|
|
static int package_;
|
|
|
|
/// 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 available, else empty string
|
|
std::string getValue(std::string const & key) const;
|
|
|
|
/// key-value pairs of the parameters
|
|
// 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_;
|
|
|
|
/// collapsible status
|
|
InsetCollapsible::CollapseStatus status_;
|
|
};
|
|
|
|
|
|
} // namespace lyx
|
|
|
|
#endif
|