mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Implement buffer-anonymize more efficiently
The work is done now in Paragraph::anonymize().
Move the handling of the lfun to Buffer class.
Document the new feature in release notes.
(cherry picked from commit 1dba36c7ce
)
This commit is contained in:
parent
abdadcceb9
commit
9a1728c70a
@ -111,6 +111,10 @@
|
||||
opened in editable mode. This state used to be hardcoded at compile
|
||||
time.
|
||||
|
||||
* buffer-anonymize (2.3.2)
|
||||
Replace all text n the document by streams of `a'. This is useful
|
||||
for sharing private documents in a bug report.
|
||||
|
||||
* font-crossout
|
||||
Cross out characters.
|
||||
|
||||
|
@ -2612,15 +2612,16 @@ bool Buffer::getStatus(FuncRequest const & cmd, FuncStatus & flag)
|
||||
flag.setOnOff(params().output_changes);
|
||||
break;
|
||||
|
||||
case LFUN_BUFFER_TOGGLE_COMPRESSION: {
|
||||
case LFUN_BUFFER_TOGGLE_COMPRESSION:
|
||||
flag.setOnOff(params().compressed);
|
||||
break;
|
||||
}
|
||||
|
||||
case LFUN_BUFFER_TOGGLE_OUTPUT_SYNC: {
|
||||
case LFUN_BUFFER_TOGGLE_OUTPUT_SYNC:
|
||||
flag.setOnOff(params().output_sync);
|
||||
break;
|
||||
}
|
||||
|
||||
case LFUN_BUFFER_ANONYMIZE:
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
@ -2898,6 +2899,15 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
|
||||
params().output_sync = !params().output_sync;
|
||||
break;
|
||||
|
||||
case LFUN_BUFFER_ANONYMIZE: {
|
||||
undo().recordUndoFullBuffer(CursorData());
|
||||
CursorData cur(doc_iterator_begin(this));
|
||||
for ( ; cur ; cur.forwardPar())
|
||||
cur.paragraph().anonymize();
|
||||
dr.forceBufferUpdate();
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
dispatched = false;
|
||||
break;
|
||||
|
@ -1112,7 +1112,6 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
|
||||
case LFUN_WORD_FIND_FORWARD:
|
||||
case LFUN_WORD_FIND_BACKWARD:
|
||||
case LFUN_WORD_REPLACE:
|
||||
case LFUN_BUFFER_ANONYMIZE:
|
||||
case LFUN_MARK_OFF:
|
||||
case LFUN_MARK_ON:
|
||||
case LFUN_MARK_TOGGLE:
|
||||
@ -1576,14 +1575,6 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
|
||||
break;
|
||||
}
|
||||
|
||||
case LFUN_BUFFER_ANONYMIZE: {
|
||||
for(char c = '0'; c <='Z'; c++) {
|
||||
odocstringstream ss;
|
||||
ss << "a\n" << c << "\n0 0 1 1 0";
|
||||
lyx::dispatch(FuncRequest(LFUN_WORD_REPLACE, ss.str()));
|
||||
}
|
||||
}
|
||||
|
||||
case LFUN_WORD_FINDADV: {
|
||||
FindAndReplaceOptions opt;
|
||||
istringstream iss(to_utf8(cmd.argument()));
|
||||
|
@ -4176,6 +4176,15 @@ SpellChecker::Result Paragraph::spellCheck(pos_type & from, pos_type & to,
|
||||
}
|
||||
|
||||
|
||||
void Paragraph::anonymize()
|
||||
{
|
||||
// This is a very crude anonymization for now
|
||||
for (char_type & c : d->text_)
|
||||
if (isLetterChar(c) || isNumber(c))
|
||||
c = 'a';
|
||||
}
|
||||
|
||||
|
||||
void Paragraph::Private::markMisspelledWords(
|
||||
pos_type const & first, pos_type const & last,
|
||||
SpellChecker::Result result,
|
||||
|
@ -505,6 +505,10 @@ public:
|
||||
/// presently used only in the XHTML output routines.
|
||||
std::string magicLabel() const;
|
||||
|
||||
/// anonymizes the paragraph contents (but not the paragraphs
|
||||
/// contained inside it. Does not handle undo.
|
||||
void anonymize();
|
||||
|
||||
private:
|
||||
/// Expand the counters for the labelstring of \c layout
|
||||
docstring expandParagraphLabel(Layout const &, BufferParams const &,
|
||||
|
Loading…
Reference in New Issue
Block a user