mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-23 10:18:50 +00:00
Make the complexLabel and basicLabel functions in InsetCitation into
private member functions. This will be useful later. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32923 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
68edfdafc3
commit
62b23ac0be
@ -133,16 +133,93 @@ string asValidLatexCommand(string const & input, CiteEngine const engine)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
docstring complexLabel(Buffer const & buffer,
|
} // anon namespace
|
||||||
string const & citetype, docstring const & keylist,
|
|
||||||
docstring const & before, docstring const & after,
|
|
||||||
CiteEngine engine)
|
ParamInfo InsetCitation::param_info_;
|
||||||
|
|
||||||
|
|
||||||
|
InsetCitation::InsetCitation(Buffer * buf, InsetCommandParams const & p)
|
||||||
|
: InsetCommand(buf, p, "citation")
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
ParamInfo const & InsetCitation::findInfo(string const & /* cmdName */)
|
||||||
{
|
{
|
||||||
// Only start the process off after the buffer is loaded from file.
|
// standard cite does only take one argument if jurabib is
|
||||||
if (!buffer.isFullyLoaded())
|
// not used, but jurabib extends this to two arguments, so
|
||||||
|
// we have to allow both here. InsetCitation takes care that
|
||||||
|
// LaTeX output is nevertheless correct.
|
||||||
|
if (param_info_.empty()) {
|
||||||
|
param_info_.add("after", ParamInfo::LATEX_OPTIONAL);
|
||||||
|
param_info_.add("before", ParamInfo::LATEX_OPTIONAL);
|
||||||
|
param_info_.add("key", ParamInfo::LATEX_REQUIRED);
|
||||||
|
}
|
||||||
|
return param_info_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool InsetCitation::isCompatibleCommand(string const & cmd)
|
||||||
|
{
|
||||||
|
vector<string> const & possibles = possibleCiteCommands();
|
||||||
|
vector<string>::const_iterator const end = possibles.end();
|
||||||
|
return find(possibles.begin(), end, cmd) != end;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
docstring InsetCitation::toolTip(BufferView const & bv, int, int) const
|
||||||
|
{
|
||||||
|
Buffer const & buf = bv.buffer();
|
||||||
|
// Only after the buffer is loaded from file...
|
||||||
|
if (!buf.isFullyLoaded())
|
||||||
return docstring();
|
return docstring();
|
||||||
|
|
||||||
BiblioInfo const & biblist = buffer.masterBibInfo();
|
BiblioInfo const & bi = buf.masterBibInfo();
|
||||||
|
if (bi.empty())
|
||||||
|
return _("No bibliography defined!");
|
||||||
|
|
||||||
|
docstring const & key = getParam("key");
|
||||||
|
if (key.empty())
|
||||||
|
return _("No citations selected!");
|
||||||
|
|
||||||
|
vector<docstring> keys = getVectorFromString(key);
|
||||||
|
vector<docstring>::const_iterator it = keys.begin();
|
||||||
|
vector<docstring>::const_iterator en = keys.end();
|
||||||
|
docstring tip;
|
||||||
|
for (; it != en; ++it) {
|
||||||
|
docstring const key_info = bi.getInfo(*it);
|
||||||
|
if (key_info.empty())
|
||||||
|
continue;
|
||||||
|
if (!tip.empty())
|
||||||
|
tip += "\n";
|
||||||
|
tip += wrap(key_info, -4);
|
||||||
|
}
|
||||||
|
return tip;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
docstring InsetCitation::generateLabel() const
|
||||||
|
{
|
||||||
|
docstring label;
|
||||||
|
label = complexLabel();
|
||||||
|
|
||||||
|
// Fallback to fail-safe
|
||||||
|
if (label.empty())
|
||||||
|
label = basicLabel();
|
||||||
|
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
docstring InsetCitation::complexLabel() const
|
||||||
|
{
|
||||||
|
Buffer const & buf = buffer();
|
||||||
|
// Only start the process off after the buffer is loaded from file.
|
||||||
|
if (!buf.isFullyLoaded())
|
||||||
|
return docstring();
|
||||||
|
|
||||||
|
BiblioInfo const & biblist = buf.masterBibInfo();
|
||||||
if (biblist.empty())
|
if (biblist.empty())
|
||||||
return docstring();
|
return docstring();
|
||||||
|
|
||||||
@ -157,8 +234,9 @@ docstring complexLabel(Buffer const & buffer,
|
|||||||
// jurabib supports these plus
|
// jurabib supports these plus
|
||||||
// CITE: author/<before field>
|
// CITE: author/<before field>
|
||||||
|
|
||||||
|
CiteEngine const engine = buffer().params().citeEngine();
|
||||||
// We don't currently use the full or forceUCase fields.
|
// We don't currently use the full or forceUCase fields.
|
||||||
string cite_type = asValidLatexCommand(citetype, engine);
|
string cite_type = asValidLatexCommand(getCmdName(), engine);
|
||||||
if (cite_type[0] == 'C')
|
if (cite_type[0] == 'C')
|
||||||
// If we were going to use them, this would mean ForceUCase
|
// If we were going to use them, this would mean ForceUCase
|
||||||
cite_type = string(1, 'c') + cite_type.substr(1);
|
cite_type = string(1, 'c') + cite_type.substr(1);
|
||||||
@ -166,6 +244,7 @@ docstring complexLabel(Buffer const & buffer,
|
|||||||
// and this would mean FULL
|
// and this would mean FULL
|
||||||
cite_type = cite_type.substr(0, cite_type.size() - 1);
|
cite_type = cite_type.substr(0, cite_type.size() - 1);
|
||||||
|
|
||||||
|
docstring const & before = getParam("before");
|
||||||
docstring before_str;
|
docstring before_str;
|
||||||
if (!before.empty()) {
|
if (!before.empty()) {
|
||||||
// In CITET and CITEALT mode, the "before" string is
|
// In CITET and CITEALT mode, the "before" string is
|
||||||
@ -186,6 +265,7 @@ docstring complexLabel(Buffer const & buffer,
|
|||||||
before_str = '/' + before;
|
before_str = '/' + before;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
docstring const & after = getParam("after");
|
||||||
docstring after_str;
|
docstring after_str;
|
||||||
// The "after" key is appended only to the end of the whole.
|
// The "after" key is appended only to the end of the whole.
|
||||||
if (cite_type == "nocite")
|
if (cite_type == "nocite")
|
||||||
@ -212,7 +292,7 @@ docstring complexLabel(Buffer const & buffer,
|
|||||||
docstring const sep_str = from_ascii(sep) + ' ';
|
docstring const sep_str = from_ascii(sep) + ' ';
|
||||||
|
|
||||||
docstring label;
|
docstring label;
|
||||||
vector<docstring> keys = getVectorFromString(keylist);
|
vector<docstring> keys = getVectorFromString(getParam("key"));
|
||||||
vector<docstring>::const_iterator it = keys.begin();
|
vector<docstring>::const_iterator it = keys.begin();
|
||||||
vector<docstring>::const_iterator end = keys.end();
|
vector<docstring>::const_iterator end = keys.end();
|
||||||
for (; it != end; ++it) {
|
for (; it != end; ++it) {
|
||||||
@ -327,9 +407,9 @@ docstring complexLabel(Buffer const & buffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
docstring basicLabel(docstring const & keyList, docstring const & after)
|
docstring InsetCitation::basicLabel() const
|
||||||
{
|
{
|
||||||
docstring keys = keyList;
|
docstring keys = getParam("key");
|
||||||
docstring label;
|
docstring label;
|
||||||
|
|
||||||
if (contains(keys, ',')) {
|
if (contains(keys, ',')) {
|
||||||
@ -344,96 +424,13 @@ docstring basicLabel(docstring const & keyList, docstring const & after)
|
|||||||
label = keys;
|
label = keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
docstring const & after = getParam("after");
|
||||||
if (!after.empty())
|
if (!after.empty())
|
||||||
label += ", " + after;
|
label += ", " + after;
|
||||||
|
|
||||||
return '[' + label + ']';
|
return '[' + label + ']';
|
||||||
}
|
}
|
||||||
|
|
||||||
} // anon namespace
|
|
||||||
|
|
||||||
|
|
||||||
ParamInfo InsetCitation::param_info_;
|
|
||||||
|
|
||||||
|
|
||||||
InsetCitation::InsetCitation(Buffer * buf, InsetCommandParams const & p)
|
|
||||||
: InsetCommand(buf, p, "citation")
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
ParamInfo const & InsetCitation::findInfo(string const & /* cmdName */)
|
|
||||||
{
|
|
||||||
// standard cite does only take one argument if jurabib is
|
|
||||||
// not used, but jurabib extends this to two arguments, so
|
|
||||||
// we have to allow both here. InsetCitation takes care that
|
|
||||||
// LaTeX output is nevertheless correct.
|
|
||||||
if (param_info_.empty()) {
|
|
||||||
param_info_.add("after", ParamInfo::LATEX_OPTIONAL);
|
|
||||||
param_info_.add("before", ParamInfo::LATEX_OPTIONAL);
|
|
||||||
param_info_.add("key", ParamInfo::LATEX_REQUIRED);
|
|
||||||
}
|
|
||||||
return param_info_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool InsetCitation::isCompatibleCommand(string const & cmd)
|
|
||||||
{
|
|
||||||
vector<string> const & possibles = possibleCiteCommands();
|
|
||||||
vector<string>::const_iterator const end = possibles.end();
|
|
||||||
return find(possibles.begin(), end, cmd) != end;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
docstring InsetCitation::toolTip(BufferView const & bv, int, int) const
|
|
||||||
{
|
|
||||||
Buffer const & buf = bv.buffer();
|
|
||||||
// Only after the buffer is loaded from file...
|
|
||||||
if (!buf.isFullyLoaded())
|
|
||||||
return docstring();
|
|
||||||
|
|
||||||
BiblioInfo const & bi = buf.masterBibInfo();
|
|
||||||
if (bi.empty())
|
|
||||||
return _("No bibliography defined!");
|
|
||||||
|
|
||||||
docstring const & key = getParam("key");
|
|
||||||
if (key.empty())
|
|
||||||
return _("No citations selected!");
|
|
||||||
|
|
||||||
vector<docstring> keys = getVectorFromString(key);
|
|
||||||
vector<docstring>::const_iterator it = keys.begin();
|
|
||||||
vector<docstring>::const_iterator en = keys.end();
|
|
||||||
docstring tip;
|
|
||||||
for (; it != en; ++it) {
|
|
||||||
docstring const key_info = bi.getInfo(*it);
|
|
||||||
if (key_info.empty())
|
|
||||||
continue;
|
|
||||||
if (!tip.empty())
|
|
||||||
tip += "\n";
|
|
||||||
tip += wrap(key_info, -4);
|
|
||||||
}
|
|
||||||
return tip;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
docstring InsetCitation::generateLabel() const
|
|
||||||
{
|
|
||||||
docstring const & before = getParam("before");
|
|
||||||
docstring const & after = getParam("after");
|
|
||||||
|
|
||||||
docstring label;
|
|
||||||
CiteEngine const engine = buffer().params().citeEngine();
|
|
||||||
label = complexLabel(buffer(), getCmdName(), getParam("key"),
|
|
||||||
before, after, engine);
|
|
||||||
|
|
||||||
// Fallback to fail-safe
|
|
||||||
if (label.empty())
|
|
||||||
label = basicLabel(getParam("key"), after);
|
|
||||||
|
|
||||||
return label;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
docstring InsetCitation::screenLabel() const
|
docstring InsetCitation::screenLabel() const
|
||||||
{
|
{
|
||||||
return cache.screen_label;
|
return cache.screen_label;
|
||||||
|
@ -74,11 +74,15 @@ public:
|
|||||||
private:
|
private:
|
||||||
///
|
///
|
||||||
Inset * clone() const { return new InsetCitation(*this); }
|
Inset * clone() const { return new InsetCitation(*this); }
|
||||||
|
/// This function does the donkey work of creating the pretty label
|
||||||
|
docstring generateLabel() const;
|
||||||
|
///
|
||||||
|
docstring complexLabel() const;
|
||||||
|
///
|
||||||
|
docstring basicLabel() const;
|
||||||
/// we'll eventually want to be able to get info on this from the
|
/// we'll eventually want to be able to get info on this from the
|
||||||
/// various CiteEngines
|
/// various CiteEngines
|
||||||
static ParamInfo param_info_;
|
static ParamInfo param_info_;
|
||||||
/// This function does the donkey work of creating the pretty label
|
|
||||||
docstring generateLabel() const;
|
|
||||||
|
|
||||||
///
|
///
|
||||||
class Cache {
|
class Cache {
|
||||||
|
Loading…
Reference in New Issue
Block a user