From 9315e9c7e29298deb00b544632c0654a149005fc Mon Sep 17 00:00:00 2001 From: Holden Eagle Date: Thu, 26 Dec 2024 01:19:58 -0500 Subject: [PATCH 1/7] updates --- .project | 11 +++ src/com/jgaap/Canon.java | 81 ++++++++++++++++++ src/com/jgaap/JGAAP.java | 3 + .../canonicizers/ConvertCurlyQuotes.java | 50 +++++++++++ src/com/jgaap/dumb_quotes.txt | 2 + src/com/jgaap/pdf_doc.pdf | Bin 0 -> 29142 bytes src/com/jgaap/smart_quotes.docx | Bin 0 -> 13422 bytes src/com/jgaap/test_doc.html | 11 +++ 8 files changed, 158 insertions(+) create mode 100644 src/com/jgaap/Canon.java create mode 100644 src/com/jgaap/canonicizers/ConvertCurlyQuotes.java create mode 100644 src/com/jgaap/dumb_quotes.txt create mode 100644 src/com/jgaap/pdf_doc.pdf create mode 100644 src/com/jgaap/smart_quotes.docx create mode 100644 src/com/jgaap/test_doc.html diff --git a/.project b/.project index d9e160645..7c6bfaf50 100644 --- a/.project +++ b/.project @@ -14,4 +14,15 @@ org.eclipse.jdt.core.javanature + + + 1735158931653 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/src/com/jgaap/Canon.java b/src/com/jgaap/Canon.java new file mode 100644 index 000000000..495b47aa3 --- /dev/null +++ b/src/com/jgaap/Canon.java @@ -0,0 +1,81 @@ +package com.jgaap; +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import org.apache.tika.Tika; + +public class Canon{ + static private Tika tika = new Tika(); + + static private String replaceCRLF(String text) { + // change CRLF sequences (\r, \n, and \r\n) to LF (\n) + text = text.replaceAll("(\r\n)|\r|\n", "\n"); + return text; + } + + + static String loadDocument(String filepath, String charset) throws Exception { + String text = ""; + if(1==1){ + InputStream is = getInputStream(filepath); + text= tika.parseToString(is); + is.close(); + } + if(text.isEmpty()){ + InputStream is = getInputStream(filepath); + text = readText(is, charset); + is.close(); + } + text = replaceCRLF(text); + return text; + } + static private String readText(InputStream is, String charset) throws IOException { + int c; + StringBuilder stringBuilder = new StringBuilder(); + BufferedReader reader; + if (charset==null||charset.isEmpty()||charset.equalsIgnoreCase("tika")) { + reader = new BufferedReader(new InputStreamReader(is)); + } else { + reader = new BufferedReader(new InputStreamReader(is,charset)); + } + while ((c = reader.read()) != -1) { + stringBuilder.append((char)c); + } + reader.close(); + return stringBuilder.toString(); + } + + + static private InputStream getInputStream(String filepath) throws Exception{ + InputStream is; + is = new FileInputStream(filepath); + return is; + } + + public void run_canon() { + try{ + String txt = loadDocument("C:\\cygwin64\\jGAAP_work\\JGAAP\\src\\com\\jgaap\\pdf_doc.pdf" , "tika"); + for (char c : txt.toCharArray()) { + System.out.printf("Character: %c, Unicode: \\u%04x%n", c, (int) c); + } + + char curly_double1 = '\u201d'; + char curly_double2 = '\u201c'; + char curly_single1 = '\u2018'; + char curly_single2 = '\u2019'; + char target_single = '\''; + txt = txt.replace(curly_double1, '\u0022'); + txt = txt.replace(curly_single1, target_single); + txt = txt.replace(curly_double2, '\u0022'); + txt = txt.replace(curly_single2, target_single); + + System.out.println(txt); + } + catch(Exception e){ + e.printStackTrace(); + } + + } +} \ No newline at end of file diff --git a/src/com/jgaap/JGAAP.java b/src/com/jgaap/JGAAP.java index 051f1d888..83e76b7a5 100644 --- a/src/com/jgaap/JGAAP.java +++ b/src/com/jgaap/JGAAP.java @@ -61,8 +61,11 @@ public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); + //Canon nc = new Canon(); + //nc.run_canon(); } }); + mainLogger.info("Worked out"); } else { mainLogger.info("Starting CLI"); try { diff --git a/src/com/jgaap/canonicizers/ConvertCurlyQuotes.java b/src/com/jgaap/canonicizers/ConvertCurlyQuotes.java new file mode 100644 index 000000000..521e777e6 --- /dev/null +++ b/src/com/jgaap/canonicizers/ConvertCurlyQuotes.java @@ -0,0 +1,50 @@ +package com.jgaap.canonicizers; + +import com.jgaap.generics.Canonicizer; + +/** + * @author Holden Eagle-> Standardizes quotation marks + */ +public class ConvertCurlyQuotes extends Canonicizer{ + @Override + public String displayName() { + return "Convert Curly Quotes"; + } + + @Override + public String tooltipText() { + return "Converts Curly Quotes (Smart Quotes) into nonslanted marks to standardize them."; + } + + @Override + public String longDescription() { + return "Converts Curly Quotes (Smart Quotes) into nonslanted marks to standardize them. Curly Quotes typically in Word and PDF Documents."; + } + + @Override + public boolean showInGUI() { + return true; + } + + /** + * Strip punctuation from input characters + * + * @param procText + * array of characters to be processed. + * @return array of processed characters. + */ + @Override + public char[] process(char[] procText) { + String txt = new String(procText); + char curly_double1 = '\u201d'; + char curly_double2 = '\u201c'; + char curly_single1 = '\u2018'; + char curly_single2 = '\u2019'; + char target_single = '\''; + txt = txt.replace(curly_double1, '\u0022'); + txt = txt.replace(curly_single1, target_single); + txt = txt.replace(curly_double2, '\u0022'); + txt = txt.replace(curly_single2, target_single); + return txt.toCharArray(); + } +} diff --git a/src/com/jgaap/dumb_quotes.txt b/src/com/jgaap/dumb_quotes.txt new file mode 100644 index 000000000..9678b7cb8 --- /dev/null +++ b/src/com/jgaap/dumb_quotes.txt @@ -0,0 +1,2 @@ +"Hey this is Holden Eagle and I am +using 'dumb quotes' in this text document." \ No newline at end of file diff --git a/src/com/jgaap/pdf_doc.pdf b/src/com/jgaap/pdf_doc.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e64d19c591253675cd230ac9a3d77861210867a2 GIT binary patch literal 29142 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 bgCXK-;{&Gua<1XRLV_>?R#pW~MS}kW7FY9F literal 0 HcmV?d00001 diff --git a/src/com/jgaap/smart_quotes.docx b/src/com/jgaap/smart_quotes.docx new file mode 100644 index 0000000000000000000000000000000000000000..ebc644f4a2b171f487ef695083c64d2d29cd84c9 GIT binary patch literal 13422 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 d=`Zkq#7$*6D3E#l`eXqC& + + + + + Simple Example + + +

"Hello, this is a simple HTML example!. I don't know what "quotes" I use."

+ + \ No newline at end of file From 9d8bff8c594c4fc4c45f2a467e2fd4a375e79e18 Mon Sep 17 00:00:00 2001 From: Holden Eagle Date: Sat, 28 Dec 2024 00:28:12 -0500 Subject: [PATCH 2/7] final changes --- src/com/jgaap/Canon.java | 81 ------------------ src/com/jgaap/JGAAP.java | 2 - .../canonicizers/ConvertCurlyQuotes.java | 54 +++++++++--- src/com/jgaap/dumb_quotes.txt | 2 - src/com/jgaap/pdf_doc.pdf | Bin 29142 -> 0 bytes src/com/jgaap/smart_quotes.docx | Bin 13422 -> 0 bytes src/com/jgaap/test_doc.html | 11 --- 7 files changed, 42 insertions(+), 108 deletions(-) delete mode 100644 src/com/jgaap/Canon.java delete mode 100644 src/com/jgaap/dumb_quotes.txt delete mode 100644 src/com/jgaap/pdf_doc.pdf delete mode 100644 src/com/jgaap/smart_quotes.docx delete mode 100644 src/com/jgaap/test_doc.html diff --git a/src/com/jgaap/Canon.java b/src/com/jgaap/Canon.java deleted file mode 100644 index 495b47aa3..000000000 --- a/src/com/jgaap/Canon.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.jgaap; -import java.io.BufferedReader; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import org.apache.tika.Tika; - -public class Canon{ - static private Tika tika = new Tika(); - - static private String replaceCRLF(String text) { - // change CRLF sequences (\r, \n, and \r\n) to LF (\n) - text = text.replaceAll("(\r\n)|\r|\n", "\n"); - return text; - } - - - static String loadDocument(String filepath, String charset) throws Exception { - String text = ""; - if(1==1){ - InputStream is = getInputStream(filepath); - text= tika.parseToString(is); - is.close(); - } - if(text.isEmpty()){ - InputStream is = getInputStream(filepath); - text = readText(is, charset); - is.close(); - } - text = replaceCRLF(text); - return text; - } - static private String readText(InputStream is, String charset) throws IOException { - int c; - StringBuilder stringBuilder = new StringBuilder(); - BufferedReader reader; - if (charset==null||charset.isEmpty()||charset.equalsIgnoreCase("tika")) { - reader = new BufferedReader(new InputStreamReader(is)); - } else { - reader = new BufferedReader(new InputStreamReader(is,charset)); - } - while ((c = reader.read()) != -1) { - stringBuilder.append((char)c); - } - reader.close(); - return stringBuilder.toString(); - } - - - static private InputStream getInputStream(String filepath) throws Exception{ - InputStream is; - is = new FileInputStream(filepath); - return is; - } - - public void run_canon() { - try{ - String txt = loadDocument("C:\\cygwin64\\jGAAP_work\\JGAAP\\src\\com\\jgaap\\pdf_doc.pdf" , "tika"); - for (char c : txt.toCharArray()) { - System.out.printf("Character: %c, Unicode: \\u%04x%n", c, (int) c); - } - - char curly_double1 = '\u201d'; - char curly_double2 = '\u201c'; - char curly_single1 = '\u2018'; - char curly_single2 = '\u2019'; - char target_single = '\''; - txt = txt.replace(curly_double1, '\u0022'); - txt = txt.replace(curly_single1, target_single); - txt = txt.replace(curly_double2, '\u0022'); - txt = txt.replace(curly_single2, target_single); - - System.out.println(txt); - } - catch(Exception e){ - e.printStackTrace(); - } - - } -} \ No newline at end of file diff --git a/src/com/jgaap/JGAAP.java b/src/com/jgaap/JGAAP.java index 83e76b7a5..62271dca3 100644 --- a/src/com/jgaap/JGAAP.java +++ b/src/com/jgaap/JGAAP.java @@ -61,8 +61,6 @@ public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); - //Canon nc = new Canon(); - //nc.run_canon(); } }); mainLogger.info("Worked out"); diff --git a/src/com/jgaap/canonicizers/ConvertCurlyQuotes.java b/src/com/jgaap/canonicizers/ConvertCurlyQuotes.java index 521e777e6..e1c30361e 100644 --- a/src/com/jgaap/canonicizers/ConvertCurlyQuotes.java +++ b/src/com/jgaap/canonicizers/ConvertCurlyQuotes.java @@ -1,9 +1,28 @@ +/* + * JGAAP -- a graphical program for stylometric authorship attribution + * Copyright (C) 2009,2011 by Patrick Juola + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + package com.jgaap.canonicizers; import com.jgaap.generics.Canonicizer; /** - * @author Holden Eagle-> Standardizes quotation marks + * Converts Typographical quotes to the standard straight quotes in an attempt to standardize all + * quotation marks. */ public class ConvertCurlyQuotes extends Canonicizer{ @Override @@ -35,16 +54,27 @@ public boolean showInGUI() { */ @Override public char[] process(char[] procText) { - String txt = new String(procText); - char curly_double1 = '\u201d'; - char curly_double2 = '\u201c'; - char curly_single1 = '\u2018'; - char curly_single2 = '\u2019'; - char target_single = '\''; - txt = txt.replace(curly_double1, '\u0022'); - txt = txt.replace(curly_single1, target_single); - txt = txt.replace(curly_double2, '\u0022'); - txt = txt.replace(curly_single2, target_single); - return txt.toCharArray(); + try{ + char curly_double1 = '\u201d'; + char curly_double2 = '\u201c'; + char curly_single1 = '\u2018'; + char curly_single2 = '\u2019'; + char target_single = '\''; + for(int i = 0; i < procText.length; i++){ + //check for "Curly" quotes + if(procText[i] == curly_double1 || procText[i] == curly_double2){ + procText[i] = '\u0022'; + } + else if(procText[i] == curly_single1 || procText[i] == curly_single2){ + procText[i] = target_single; + } + + } + return procText; + }catch (Exception e){ + return procText; + } + + } } diff --git a/src/com/jgaap/dumb_quotes.txt b/src/com/jgaap/dumb_quotes.txt deleted file mode 100644 index 9678b7cb8..000000000 --- a/src/com/jgaap/dumb_quotes.txt +++ /dev/null @@ -1,2 +0,0 @@ -"Hey this is Holden Eagle and I am -using 'dumb quotes' in this text document." \ No newline at end of file diff --git a/src/com/jgaap/pdf_doc.pdf b/src/com/jgaap/pdf_doc.pdf deleted file mode 100644 index e64d19c591253675cd230ac9a3d77861210867a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29142 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 bgCXK-;{&Gua<1XRLV_>?R#pW~MS}kW7FY9F diff --git a/src/com/jgaap/smart_quotes.docx b/src/com/jgaap/smart_quotes.docx deleted file mode 100644 index ebc644f4a2b171f487ef695083c64d2d29cd84c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13422 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 d=`Zkq#7$*6D3E#l`eXqC& - - - - - Simple Example - - -

"Hello, this is a simple HTML example!. I don't know what "quotes" I use."

- - \ No newline at end of file From 5e13fef047717492cb78f66df95590278f1115a2 Mon Sep 17 00:00:00 2001 From: Holden Eagle Date: Sat, 28 Dec 2024 00:37:31 -0500 Subject: [PATCH 3/7] one last change --- src/com/jgaap/JGAAP.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/com/jgaap/JGAAP.java b/src/com/jgaap/JGAAP.java index 62271dca3..051f1d888 100644 --- a/src/com/jgaap/JGAAP.java +++ b/src/com/jgaap/JGAAP.java @@ -63,7 +63,6 @@ public void run() { createAndShowGUI(); } }); - mainLogger.info("Worked out"); } else { mainLogger.info("Starting CLI"); try { From 04101a41243247cfe179b1dd0fbcd32aae4b8a0f Mon Sep 17 00:00:00 2001 From: Holden Eagle Date: Sat, 28 Dec 2024 15:05:29 -0500 Subject: [PATCH 4/7] I believe I somehow accidently changed .project file. undid the changes from this --- .project | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.project b/.project index 7c6bfaf50..d9e160645 100644 --- a/.project +++ b/.project @@ -14,15 +14,4 @@ org.eclipse.jdt.core.javanature - - - 1735158931653 - - 30 - - org.eclipse.core.resources.regexFilterMatcher - node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ - - - From 3ddc7e3e3bcc4425574fdd980977ed4a07877021 Mon Sep 17 00:00:00 2001 From: Holden Eagle Date: Sat, 28 Dec 2024 16:26:01 -0500 Subject: [PATCH 5/7] adding to appreviations list --- .project | 11 +++++++++++ src/com/jgaap/resources/abbreviation.list | 21 ++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/.project b/.project index d9e160645..357cebdbb 100644 --- a/.project +++ b/.project @@ -14,4 +14,15 @@ org.eclipse.jdt.core.javanature + + + 1735420182339 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/src/com/jgaap/resources/abbreviation.list b/src/com/jgaap/resources/abbreviation.list index b7470ea73..2982889c0 100644 --- a/src/com/jgaap/resources/abbreviation.list +++ b/src/com/jgaap/resources/abbreviation.list @@ -2,4 +2,23 @@ Dr Miss Mr Mrs -etc \ No newline at end of file +etc +Ms +Sgt +Lt +Prof +Col +Sen +Rep +Gen +Capt +Adm +Atty +tba +tbd +tos +pov +psa +MD +PhD + From b6b05ff689220650595990056fa51d7f6a5bd685 Mon Sep 17 00:00:00 2001 From: Holden Eagle Date: Sat, 28 Dec 2024 21:43:30 -0500 Subject: [PATCH 6/7] added Unit test file --- .../canonicizers/ConvertCurlyQuotesTest.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 unittests/com/jgaap/canonicizers/ConvertCurlyQuotesTest.java diff --git a/unittests/com/jgaap/canonicizers/ConvertCurlyQuotesTest.java b/unittests/com/jgaap/canonicizers/ConvertCurlyQuotesTest.java new file mode 100644 index 000000000..c28cb3caa --- /dev/null +++ b/unittests/com/jgaap/canonicizers/ConvertCurlyQuotesTest.java @@ -0,0 +1,79 @@ +/* + * JGAAP -- a graphical program for stylometric authorship attribution + * Copyright (C) 2009,2011 by Patrick Juola + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +/** + * + */ + +package com.jgaap.canonicizers; + +import static org.junit.Assert.*; + +import java.nio.charset.Charset; +import java.util.Arrays; + +import org.junit.Test; + +public class ConvertCurlyQuotesTest { + + /** + * Test method for + * {@link com.jgaap.canonicizers.ConvertCurlyQuotes#process(char[])} + * . + */ + + @Test + public void testProcess(){ + String example = "Here\u2019s a sentence with curly single quotes: \u2018Hello!\u2019 and straight single quotes: 'World'. " + + "Also, curly double quotes: \u201CThis is a test.\u201D and straight double quotes: \"Another test.\" " + + "Let\u2019s see how they appear when printed!"; + char[] sample = example.toCharArray(); + String expected_text = "Here's a sentence with curly single quotes: 'Hello!' and straight single quotes: 'World'. " + + "Also, curly double quotes: \"This is a test.\" and straight double quotes: \"Another test.\" " + + "Let's see how they appear when printed!"; + char[] expected = expected_text.toCharArray(); + ConvertCurlyQuotes canon = new ConvertCurlyQuotes(); + + String[] encodings_that_support_curly_quotes = { + "GB2312", + "UTF-8", + "UTF-16" + }; + + for (String encoding : encodings_that_support_curly_quotes){ + try{ + // Convert the string to a byte array using the specified encoding + byte[] encodedBytes = example.getBytes(Charset.forName(encoding)); + + // Decode the byte array back into a string using the same encoding + String decodedText = new String(encodedBytes, Charset.forName(encoding)); + + // Convert the decoded text into a char array + char[] procText = decodedText.toCharArray(); + char[] result = canon.process(procText); + assertTrue(Arrays.equals(expected, result)); + + }catch(Exception e){ + System.out.println("Encoding conversion did not work for " + encoding); + } + } + + } + + + +} From 111e0cde7e3ccdd3088d4a8f490a84508a006712 Mon Sep 17 00:00:00 2001 From: Holden Eagle Date: Sat, 28 Dec 2024 21:58:54 -0500 Subject: [PATCH 7/7] Removed changes to .project and removed additional abbreviations --- .project | 11 ----------- src/com/jgaap/resources/abbreviation.list | 19 +------------------ 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/.project b/.project index 357cebdbb..d9e160645 100644 --- a/.project +++ b/.project @@ -14,15 +14,4 @@ org.eclipse.jdt.core.javanature - - - 1735420182339 - - 30 - - org.eclipse.core.resources.regexFilterMatcher - node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ - - - diff --git a/src/com/jgaap/resources/abbreviation.list b/src/com/jgaap/resources/abbreviation.list index 2982889c0..8b09a7854 100644 --- a/src/com/jgaap/resources/abbreviation.list +++ b/src/com/jgaap/resources/abbreviation.list @@ -3,22 +3,5 @@ Miss Mr Mrs etc -Ms -Sgt -Lt -Prof -Col -Sen -Rep -Gen -Capt -Adm -Atty -tba -tbd -tos -pov -psa -MD -PhD +