Merged Paragraph::stringify into asString().

This commit is contained in:
Tommaso Cucinotta 2014-03-27 23:12:56 +00:00 committed by Richard Heck
parent ad6f96bf48
commit 13cb7da11d
3 changed files with 26 additions and 44 deletions

View File

@ -3347,7 +3347,7 @@ docstring Paragraph::asString(int options) const
} }
docstring Paragraph::asString(pos_type beg, pos_type end, int options) const docstring Paragraph::asString(pos_type beg, pos_type end, int options, const OutputParams *runparams) const
{ {
odocstringstream os; odocstringstream os;
@ -3364,9 +3364,14 @@ docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
|| (c == '\n' && (options & AS_STR_NEWLINES))) || (c == '\n' && (options & AS_STR_NEWLINES)))
os.put(c); os.put(c);
else if (c == META_INSET && (options & AS_STR_INSETS)) { else if (c == META_INSET && (options & AS_STR_INSETS)) {
getInset(i)->toString(os); if (c == META_INSET && (options & AS_STR_PLAINTEXT)) {
if (getInset(i)->asInsetMath()) LASSERT(runparams != 0, return docstring());
os << " "; getInset(i)->plaintext(os, *runparams);
} else {
getInset(i)->toString(os);
if (getInset(i)->asInsetMath())
os << " ";
}
} }
} }
@ -3392,33 +3397,6 @@ void Paragraph::forOutliner(docstring & os, size_t maxlen) const
} }
docstring Paragraph::stringify(pos_type beg, pos_type end, int options,
OutputParams const & runparams) const
{
odocstringstream os;
if (beg == 0
&& options & AS_STR_LABEL
&& !d->params_.labelString().empty())
os << d->params_.labelString() << ' ';
OutputParams op = runparams;
op.for_search = true;
for (pos_type i = beg; i < end; ++i) {
char_type const c = d->text_[i];
if (isPrintable(c) || c == '\t'
|| (c == '\n' && (options & AS_STR_NEWLINES)))
os.put(c);
else if (c == META_INSET && (options & AS_STR_INSETS)) {
getInset(i)->plaintext(os, op);
}
}
return os.str();
}
void Paragraph::setInsetOwner(Inset const * inset) void Paragraph::setInsetOwner(Inset const * inset)
{ {
d->inset_owner_ = inset; d->inset_owner_ = inset;

View File

@ -127,7 +127,8 @@ enum AsStringParameter
AS_STR_LABEL = 1, ///< Prefix with paragraph label. AS_STR_LABEL = 1, ///< Prefix with paragraph label.
AS_STR_INSETS = 2, ///< Go into insets. AS_STR_INSETS = 2, ///< Go into insets.
AS_STR_NEWLINES = 4, ///< Get also newline characters. AS_STR_NEWLINES = 4, ///< Get also newline characters.
AS_STR_SKIPDELETE = 8 ///< Skip deleted text in change tracking. AS_STR_SKIPDELETE = 8, ///< Skip deleted text in change tracking.
AS_STR_PLAINTEXT = 16 ///< Don't export formatting when descending into insets.
}; };
@ -173,17 +174,15 @@ public:
/// asString(AS_STR_LABEL | AS_STR_INSETS) /// asString(AS_STR_LABEL | AS_STR_INSETS)
/// asString(AS_STR_INSETS) /// asString(AS_STR_INSETS)
docstring asString(int options = AS_STR_NONE) const; docstring asString(int options = AS_STR_NONE) const;
///
/// Convert the paragraph to a string.
/// \note If options includes AS_STR_PLAINTEXT, then runparams must be != 0
docstring asString(pos_type beg, pos_type end, docstring asString(pos_type beg, pos_type end,
int options = AS_STR_NONE) const; int options = AS_STR_NONE,
const OutputParams *runparams = 0) const;
/// ///
void forOutliner(docstring &, size_t maxlen) const; void forOutliner(docstring &, size_t maxlen) const;
/// Extract only the explicitly visible text (without any formatting),
/// descending into insets
docstring stringify(pos_type beg, pos_type end, int options,
OutputParams const & runparams) const;
/// ///
void write(std::ostream &, BufferParams const &, void write(std::ostream &, BufferParams const &,
depth_type & depth) const; depth_type & depth) const;

View File

@ -782,14 +782,17 @@ static docstring stringifySearchBuffer(Buffer & buffer, FindAndReplaceOptions co
runparams.flavor = OutputParams::LATEX; runparams.flavor = OutputParams::LATEX;
runparams.linelen = 100000; //lyxrc.plaintext_linelen; runparams.linelen = 100000; //lyxrc.plaintext_linelen;
runparams.dryrun = true; runparams.dryrun = true;
runparams.for_search = true;
for (pos_type pit = pos_type(0); pit < (pos_type)buffer.paragraphs().size(); ++pit) { for (pos_type pit = pos_type(0); pit < (pos_type)buffer.paragraphs().size(); ++pit) {
Paragraph const & par = buffer.paragraphs().at(pit); Paragraph const & par = buffer.paragraphs().at(pit);
LYXERR(Debug::FIND, "Adding to search string: '" LYXERR(Debug::FIND, "Adding to search string: '"
<< par.stringify(pos_type(0), par.size(), << par.asString(pos_type(0), par.size(),
AS_STR_INSETS, runparams) AS_STR_INSETS | AS_STR_PLAINTEXT,
&runparams)
<< "'"); << "'");
str += par.stringify(pos_type(0), par.size(), str += par.asString(pos_type(0), par.size(),
AS_STR_INSETS, runparams); AS_STR_INSETS | AS_STR_PLAINTEXT,
&runparams);
} }
} }
return str; return str;
@ -1040,7 +1043,9 @@ docstring stringifyFromCursor(DocIterator const & cur, int len)
runparams.dryrun = true; runparams.dryrun = true;
LYXERR(Debug::FIND, "Stringifying with cur: " LYXERR(Debug::FIND, "Stringifying with cur: "
<< cur << ", from pos: " << cur.pos() << ", end: " << end); << cur << ", from pos: " << cur.pos() << ", end: " << end);
return par.stringify(cur.pos(), end, AS_STR_INSETS, runparams); return par.asString(cur.pos(), end,
AS_STR_INSETS | AS_STR_PLAINTEXT,
&runparams);
} else if (cur.inMathed()) { } else if (cur.inMathed()) {
docstring s; docstring s;
CursorSlice cs = cur.top(); CursorSlice cs = cur.top();