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
1dba36c7cec6aeec2576e7a99e2967e867076a01)
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.
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;
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;
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:
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()));
}
+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,
/// 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 &,