From 0ad442d5eb3a15dd58048700c294f7d2586ceddc Mon Sep 17 00:00:00 2001 From: Nathan TeBlunthuis Date: Fri, 4 Jul 2025 21:37:52 -0700 Subject: [PATCH] fix bug with newlines. --- pywikidiff2/pywikidiff2.cpp | 13 ++++++++----- test/test_pywikidiff2.py | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pywikidiff2/pywikidiff2.cpp b/pywikidiff2/pywikidiff2.cpp index b24c559..a70e453 100644 --- a/pywikidiff2/pywikidiff2.cpp +++ b/pywikidiff2/pywikidiff2.cpp @@ -7,7 +7,6 @@ #include "../mediawiki-php-wikidiff2/src/lib/TableFormatter.h" #include "../mediawiki-php-wikidiff2/src/lib/InlineFormatter.h" #include "../mediawiki-php-wikidiff2/src/lib/InlineJSONFormatter.h" - using wikidiff2::Wikidiff2; using wikidiff2::TableFormatter; using wikidiff2::Formatter; @@ -95,7 +94,7 @@ static PyObject *pywikidiff2_inline_json_diff(pywikidiff2Obj *self, PyObject *ar static char* kwdlist[] = {"text1", "text2", "numContextLines", NULL}; char* text1; char* text2; - long numContextLines; + long numContextLines = NULL; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ss|$i", kwdlist, &text1, @@ -105,10 +104,13 @@ static PyObject *pywikidiff2_inline_json_diff(pywikidiff2Obj *self, PyObject *ar PyErr_SetString(PyExc_ValueError, "Error in arguments to inline_json_diff"); return NULL; } - + if(numContextLines == NULL){ + *(&self->config.numContextLines) = numContextLines; + } Wikidiff2 wikidiff2( *(&self->config)); - size_t text1_len = sizeof(text1); - size_t text2_len = sizeof(text2); + size_t text1_len = strlen(text1); + size_t text2_len = strlen(text2); + Wikidiff2::String text1String(text1, text1_len); Wikidiff2::String text2String(text2, text2_len); @@ -116,6 +118,7 @@ static PyObject *pywikidiff2_inline_json_diff(pywikidiff2Obj *self, PyObject *ar wikidiff2.addFormatter(formatter); wikidiff2.execute(text1String, text2String); Wikidiff2::String ret = formatter.getResult().str(); + PySys_WriteStdout(ret.c_str()); return PyUnicode_FromFormat("%s",ret.c_str()); }; diff --git a/test/test_pywikidiff2.py b/test/test_pywikidiff2.py index 7253e7d..4cd3dcb 100644 --- a/test/test_pywikidiff2.py +++ b/test/test_pywikidiff2.py @@ -1,7 +1,7 @@ import pywikidiff2 obj = pywikidiff2.pywikidiff2() -obj = pywikidiff2.pywikidiff2(numContextLines=100000) +obj = pywikidiff2.pywikidiff2(numContextLines=500000) print(obj.num_context_lines()) print(obj.moved_line_threshold()) print(obj.change_threshold()) @@ -10,6 +10,6 @@ print(obj.max_split_size()) print(obj.initial_split_threshold()) print(obj.final_split_threshold()) -res = obj.inline_json_diff("help! I'm alive", "help! dead I am") +res = obj.inline_json_diff("help! \n I'm alive", "help! \n dead I am") print('\n') print(res)