From 2eba5fd48ad23c963b6f0b9b35fd6ce66327e4e5 Mon Sep 17 00:00:00 2001 From: Felix Roth Date: Tue, 19 May 2020 22:02:39 +0200 Subject: [PATCH 01/14] Added wordcount capability to RichTextDocument --- .../instance/wordcount.st | 17 +++++++++++++++++ .../methodProperties.json | 3 ++- .../instance/testUS63WordCountForText.st | 7 +++++++ .../instance/testUS63WordCountInitiallyZero.st | 4 ++++ .../methodProperties.json | 4 +++- 5 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st create mode 100644 packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountForText.st create mode 100644 packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountInitiallyZero.st diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st new file mode 100644 index 0000000..db1bd67 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st @@ -0,0 +1,17 @@ +accessing +wordcount + + | byteString splitChars count i readWord| + count := 0. + readWord := false. + byteString := self text string asByteArray. + splitChars := #(182 32 10 13). + + i := 1. + [i <= byteString size] whileTrue:[ + (readWord and: (splitChars includes: (byteString at: i))) ifTrue: [readWord := false. count := count+1]. + (splitChars includes: (byteString at: i)) ifFalse: [readWord := true]. + i := i + 1 + ]. + readWord ifTrue: [count := count +1]. + ^ count \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json index da2ab08..69bc039 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json @@ -31,4 +31,5 @@ "textStructures" : "ls 6/26/2019 17:28", "textStructures:" : "MB 7/3/2019 19:29", "textStructuresDo:" : "ls 7/24/2019 21:29", - "updateStyle:withEmphasis:" : "ls 6/26/2019 22:44" } } + "updateStyle:withEmphasis:" : "ls 6/26/2019 22:44", + "wordcount" : "frc 5/19/2020 21:54" } } diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountForText.st b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountForText.st new file mode 100644 index 0000000..e25b18b --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountForText.st @@ -0,0 +1,7 @@ +tests +testUS63WordCountForText + + | testText | + testText := 'Dies ist ein Text Test' asText. + self enterStringOntoTextField: testText. + self assert: self document wordcount = 5. \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountInitiallyZero.st b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountInitiallyZero.st new file mode 100644 index 0000000..f519e1b --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountInitiallyZero.st @@ -0,0 +1,4 @@ +tests +testUS63WordCountInitiallyZero + + self assert: self document wordcount = 0 \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json index 67c2432..4a54ee2 100644 --- a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json @@ -24,4 +24,6 @@ "testUS57SaveActionPreservesTargetDocumentIdentity" : "MB 7/25/2019 11:41", "testUS57SaveActionWritesIntoTargetDocument" : "MB 7/25/2019 11:41", "testUS57SaveAsPutsTargetDocumentInSaver" : "ls 7/3/2019 19:25", - "testUS57openInEditorOpensDocumentInEditor" : "ls 7/3/2019 18:42" } } + "testUS57openInEditorOpensDocumentInEditor" : "ls 7/3/2019 18:42", + "testUS63WordCountForText" : "frc 5/19/2020 22:00", + "testUS63WordCountInitiallyZero" : "frc 5/19/2020 21:58" } } From 0283c2412b81b3516771aac62ff6c9f5a787a7bc Mon Sep 17 00:00:00 2001 From: Felix Roth Date: Tue, 19 May 2020 22:34:41 +0200 Subject: [PATCH 02/14] Added info button to access wordcount --- .../instance/buildInfoButtonWith..st | 9 +++++++++ .../RichTextEditorModel.class/instance/buildWith..st | 3 ++- .../RichTextEditorModel.class/instance/showInfo.st | 6 ++++++ .../RichTextEditorModel.class/methodProperties.json | 4 +++- .../instance/testUS63InfoButtonExists.st | 4 ++++ .../RichTextEditorTests.class/methodProperties.json | 1 + 6 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildInfoButtonWith..st create mode 100644 packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/showInfo.st create mode 100644 packages/RichTextEditing-Tests.package/RichTextEditorTests.class/instance/testUS63InfoButtonExists.st diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildInfoButtonWith..st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildInfoButtonWith..st new file mode 100644 index 0000000..5647350 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildInfoButtonWith..st @@ -0,0 +1,9 @@ +toolbuilder +buildInfoButtonWith: aBuilder + + ^ aBuilder pluggableButtonSpec new + model: self; + frame: (0.75 @ 0 corner: 0.875 @ 0.1); + label: 'Info'; + action: #showInfo; + yourself \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildWith..st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildWith..st index 8af280e..28f4132 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildWith..st +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildWith..st @@ -16,7 +16,8 @@ buildWith: aBuilder self buildStructureListWith: aBuilder. self buildManageStructuresButtonWith: aBuilder. self buildNewButtonWith: aBuilder. - self buildInspectDocumentButtonWith: aBuilder}. + self buildInspectDocumentButtonWith: aBuilder. + self buildInfoButtonWith: aBuilder.}. result := aBuilder build: windowSpec. self textView: (aBuilder widgetAt: 'textView'). self editor model: self. diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/showInfo.st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/showInfo.st new file mode 100644 index 0000000..d461da0 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/showInfo.st @@ -0,0 +1,6 @@ +document information +showInfo + + | window infoText| + infoText := 'Word count: ', self bufferDocument wordcount. + window := UserDialogBoxMorph inform: infoText title: self label \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json index fd6d553..3d4c87d 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json @@ -13,6 +13,7 @@ "bufferDocument:" : "ls 7/24/2019 20:57", "bufferedStructures" : "ls 6/19/2019 17:30", "bufferedStructures:" : "ls 6/26/2019 17:46", + "buildInfoButtonWith:" : "frc 5/19/2020 22:20", "buildInspectDocumentButtonWith:" : "ls 6/26/2019 18:57", "buildLoadButtonWith:" : "ls 6/26/2019 21:13", "buildManageStructuresButtonWith:" : "lh 6/12/2019 17:40", @@ -23,7 +24,7 @@ "buildStructureListWith:" : "ls 6/26/2019 22:27", "buildTextFieldWith:" : "lh 6/12/2019 17:46", "buildUndoButtonWith:" : "MB 5/22/2019 21:03", - "buildWith:" : "ls 6/26/2019 18:53", + "buildWith:" : "frc 5/19/2020 22:19", "chosenDocument" : "AG 7/25/2019 13:13", "createNewStructure:" : "ls 7/24/2019 15:11", "currentSaveName" : "ls 6/26/2019 17:58", @@ -69,6 +70,7 @@ "setLabel:" : "lh 7/24/2019 17:21", "setText:" : "AG 5/29/2019 18:35", "setTextFromView" : "ls 7/24/2019 20:27", + "showInfo" : "frc 5/19/2020 22:31", "structureSelectionAt:put:" : "lh 7/24/2019 22:40", "structuresChanged" : "ls 6/26/2019 23:03", "symbolToStructure:" : "ls 7/24/2019 14:24", diff --git a/packages/RichTextEditing-Tests.package/RichTextEditorTests.class/instance/testUS63InfoButtonExists.st b/packages/RichTextEditing-Tests.package/RichTextEditorTests.class/instance/testUS63InfoButtonExists.st new file mode 100644 index 0000000..b38fcb2 --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextEditorTests.class/instance/testUS63InfoButtonExists.st @@ -0,0 +1,4 @@ +tests +testUS63InfoButtonExists + + self assert: (self buttonWithLabelExists: 'Info'). \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextEditorTests.class/methodProperties.json b/packages/RichTextEditing-Tests.package/RichTextEditorTests.class/methodProperties.json index 47e1998..99f5bec 100644 --- a/packages/RichTextEditing-Tests.package/RichTextEditorTests.class/methodProperties.json +++ b/packages/RichTextEditing-Tests.package/RichTextEditorTests.class/methodProperties.json @@ -46,4 +46,5 @@ "testUS46NewEditorIsOpened" : "lh 7/24/2019 17:29", "testUS47WhenStructureIsAddedTheTriangleShows" : "ls 7/25/2019 13:20", "testUS47WhenStructureIsRemovedTheTriangleShows" : "ls 7/25/2019 13:20", + "testUS63InfoButtonExists" : "frc 5/19/2020 22:32", "text" : "MB 7/25/2019 11:02" } } From 0e9bbc7cae22e55ebb9322d8030d358abe6d25bb Mon Sep 17 00:00:00 2001 From: Felix Roth Date: Tue, 19 May 2020 22:53:57 +0200 Subject: [PATCH 03/14] Added charcount --- .../RichTextDocument.class/instance/charcount.st | 4 ++++ .../instance/charcountExcept..st | 14 ++++++++++++++ .../RichTextDocument.class/methodProperties.json | 2 ++ .../RichTextEditorModel.class/instance/showInfo.st | 2 ++ .../methodProperties.json | 2 +- .../instance/testUS63CharCountForText.st | 7 +++++++ .../instance/testUS63CharCountInitiallyZero.st | 4 ++++ .../instance/testUS63CharCountWithSpacesForText.st | 7 +++++++ .../instance/testUS63CharCountWithoutLetterA.st | 7 +++++++ .../methodProperties.json | 4 ++++ 10 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcount.st create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st create mode 100644 packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountForText.st create mode 100644 packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountInitiallyZero.st create mode 100644 packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithSpacesForText.st create mode 100644 packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithoutLetterA.st diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcount.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcount.st new file mode 100644 index 0000000..00e416d --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcount.st @@ -0,0 +1,4 @@ +accessing +charcount + + ^ self charcountExcept: #(182 32 10 13) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st new file mode 100644 index 0000000..c491b73 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st @@ -0,0 +1,14 @@ +accessing +charcountExcept: aListOfBytecodes + + | byteString count i| + count := 0. + byteString := self text string asByteArray. + + i := 1. + [i <= byteString size] whileTrue:[ + (aListOfBytecodes includes: (byteString at: i)) ifFalse: [count := count+1]. + i := i + 1 + ]. + + ^ count \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json index 69bc039..7ba76bd 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json @@ -6,6 +6,8 @@ "initialTextStructures" : "MB 7/22/2019 20:46" }, "instance" : { "addAttribute:from:to:" : "AG 7/25/2019 13:08", + "charcount" : "frc 5/19/2020 22:44", + "charcountExcept:" : "frc 5/19/2020 22:42", "copy:" : "MB 7/3/2019 18:58", "createNewStructure:" : "ls 7/24/2019 15:24", "hasStructure:forText:from:to:" : "AG 7/25/2019 13:20", diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/showInfo.st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/showInfo.st index d461da0..f7ce9b1 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/showInfo.st +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/showInfo.st @@ -3,4 +3,6 @@ showInfo | window infoText| infoText := 'Word count: ', self bufferDocument wordcount. + infoText := infoText , String crlf, 'Total characters: ', (self bufferDocument charcountExcept: #()). + infoText := infoText, String crlf, 'Non-blank characters: ', self bufferDocument charcount. window := UserDialogBoxMorph inform: infoText title: self label \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json index 3d4c87d..3ff3085 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json @@ -70,7 +70,7 @@ "setLabel:" : "lh 7/24/2019 17:21", "setText:" : "AG 5/29/2019 18:35", "setTextFromView" : "ls 7/24/2019 20:27", - "showInfo" : "frc 5/19/2020 22:31", + "showInfo" : "frc 5/19/2020 22:52", "structureSelectionAt:put:" : "lh 7/24/2019 22:40", "structuresChanged" : "ls 6/26/2019 23:03", "symbolToStructure:" : "ls 7/24/2019 14:24", diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountForText.st b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountForText.st new file mode 100644 index 0000000..922e05f --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountForText.st @@ -0,0 +1,7 @@ +tests +testUS63CharCountForText + + | testText | + testText := 'Hallo Welt' asText. + self enterStringOntoTextField: testText. + self assert: self document charcount = 9. \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountInitiallyZero.st b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountInitiallyZero.st new file mode 100644 index 0000000..d22cba5 --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountInitiallyZero.st @@ -0,0 +1,4 @@ +tests +testUS63CharCountInitiallyZero + + self assert: self document charcount = 0 \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithSpacesForText.st b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithSpacesForText.st new file mode 100644 index 0000000..6a0f141 --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithSpacesForText.st @@ -0,0 +1,7 @@ +tests +testUS63CharCountWithSpacesForText + + | testText | + testText := 'Hallo Welt' asText. + self enterStringOntoTextField: testText. + self assert: (self document charcountExcept: #()) = 10. \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithoutLetterA.st b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithoutLetterA.st new file mode 100644 index 0000000..dc1cbac --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithoutLetterA.st @@ -0,0 +1,7 @@ +tests +testUS63CharCountWithoutLetterA + + | testText | + testText := 'Abra Kadabra' asText. + self enterStringOntoTextField: testText. + self assert: (self document charcountExcept: #(65 97)) = 7. \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json index 4a54ee2..be28f37 100644 --- a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json @@ -25,5 +25,9 @@ "testUS57SaveActionWritesIntoTargetDocument" : "MB 7/25/2019 11:41", "testUS57SaveAsPutsTargetDocumentInSaver" : "ls 7/3/2019 19:25", "testUS57openInEditorOpensDocumentInEditor" : "ls 7/3/2019 18:42", + "testUS63CharCountForText" : "frc 5/19/2020 22:45", + "testUS63CharCountInitiallyZero" : "frc 5/19/2020 22:47", + "testUS63CharCountWithSpacesForText" : "frc 5/19/2020 22:46", + "testUS63CharCountWithoutLetterA" : "frc 5/19/2020 22:47", "testUS63WordCountForText" : "frc 5/19/2020 22:00", "testUS63WordCountInitiallyZero" : "frc 5/19/2020 21:58" } } From 0674f8297ea5afb30ff4ed6c217f8ffe1190099e Mon Sep 17 00:00:00 2001 From: Tobias Kantusch Date: Fri, 22 May 2020 13:21:53 +0200 Subject: [PATCH 04/14] Add default values for some structures and create intializer messages for default structures --- .../class/initialBoldStructure.st | 4 ++++ .../class/initialFootnoteStructure.st | 7 +++++++ .../class/initialHeading1Structure.st | 7 +++++++ .../class/initialHeading2Structure.st | 7 +++++++ .../class/initialHeading3Structure.st | 7 +++++++ .../class/initialItalicStructure.st | 4 ++++ .../class/initialTextStructures.st | 14 +++++++------- .../class/initialUnderlinedStructure.st | 6 ++++++ .../RichTextDocument.class/methodProperties.json | 9 ++++++++- 9 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialBoldStructure.st create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialFootnoteStructure.st create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading1Structure.st create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading2Structure.st create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading3Structure.st create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialItalicStructure.st create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialUnderlinedStructure.st diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialBoldStructure.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialBoldStructure.st new file mode 100644 index 0000000..1abeb69 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialBoldStructure.st @@ -0,0 +1,4 @@ +constants +initialBoldStructure + + ^ TextStructure newWith: #bold withEmphasis: (self defaultStyles union: {#bold}) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialFootnoteStructure.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialFootnoteStructure.st new file mode 100644 index 0000000..8e788a2 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialFootnoteStructure.st @@ -0,0 +1,7 @@ +constants +initialFootnoteStructure + + ^ (TextStructure + newWith: #footnote + withEmphasis: self defaultStyles) + font: (StrikeFont createDejaVuDark: 9) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading1Structure.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading1Structure.st new file mode 100644 index 0000000..b47f629 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading1Structure.st @@ -0,0 +1,7 @@ +constants +initialHeading1Structure + + ^ (TextStructure + newWith: #heading1 + withEmphasis: (self defaultStyles union: {#bold})) + font: (StrikeFont createDejaVuDark: 20) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading2Structure.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading2Structure.st new file mode 100644 index 0000000..811feef --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading2Structure.st @@ -0,0 +1,7 @@ +constants +initialHeading2Structure + + ^ (TextStructure + newWith: #heading2 + withEmphasis: (self defaultStyles union: {#bold})) + font: (StrikeFont createDejaVuDark: 17) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading3Structure.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading3Structure.st new file mode 100644 index 0000000..503f276 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialHeading3Structure.st @@ -0,0 +1,7 @@ +constants +initialHeading3Structure + + ^ (TextStructure + newWith: #heading3 + withEmphasis: (self defaultStyles union: {#bold})) + font: (StrikeFont createDejaVuDark: 14) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialItalicStructure.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialItalicStructure.st new file mode 100644 index 0000000..244675f --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialItalicStructure.st @@ -0,0 +1,4 @@ +constants +initialItalicStructure + + ^ TextStructure newWith: #italic withEmphasis: (self defaultStyles union: {#italic}) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st index 6790577..240c826 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st @@ -1,10 +1,10 @@ constants initialTextStructures - ^ {TextStructure newWith: #bold withEmphasis: (self defaultStyles union: {#bold}). - TextStructure newWith: #italic withEmphasis: (self defaultStyles union: {#italic}). - TextStructure newWith: #underlined withEmphasis: (self defaultStyles union: {#underlined}). - TextStructure newWith: #footnote withEmphasis: self defaultStyles. - TextStructure newWith: #heading1 withEmphasis: self defaultStyles. - TextStructure newWith: #heading2 withEmphasis: self defaultStyles. - TextStructure newWith: #heading3 withEmphasis: self defaultStyles} asOrderedCollection \ No newline at end of file + ^ {self initialBoldStructure. + self initialItalicStructure. + self initialUnderlinedStructure. + self initialFootnoteStructure. + self initialHeading1Structure. + self initialHeading2Structure. + self initialHeading3Structure.} asOrderedCollection \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialUnderlinedStructure.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialUnderlinedStructure.st new file mode 100644 index 0000000..07b4561 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialUnderlinedStructure.st @@ -0,0 +1,6 @@ +constants +initialUnderlinedStructure + + ^ TextStructure + newWith: #underlined + withEmphasis: (self defaultStyles union: {#underlined}) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json index da2ab08..6ed16ba 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json @@ -3,7 +3,14 @@ "defaultStyles" : "ls 6/26/2019 22:02", "editorClass" : "ls 6/26/2019 17:33", "fromText:withStructures:" : "ls 6/26/2019 17:31", - "initialTextStructures" : "MB 7/22/2019 20:46" }, + "initialBoldStructure" : "tok 5/22/2020 12:32", + "initialFootnoteStructure" : "tok 5/22/2020 13:17", + "initialHeading1Structure" : "tok 5/22/2020 13:17", + "initialHeading2Structure" : "tok 5/22/2020 13:18", + "initialHeading3Structure" : "tok 5/22/2020 13:18", + "initialItalicStructure" : "tok 5/22/2020 12:32", + "initialTextStructures" : "tok 5/22/2020 12:35", + "initialUnderlinedStructure" : "tok 5/22/2020 12:33" }, "instance" : { "addAttribute:from:to:" : "AG 7/25/2019 13:08", "copy:" : "MB 7/3/2019 18:58", From b5fd9feb4bb4605d11385ec7c06874e7a4d47176 Mon Sep 17 00:00:00 2001 From: j-hellenberg <47941549+j-hellenberg@users.noreply.github.com> Date: Mon, 25 May 2020 15:08:35 +0200 Subject: [PATCH 05/14] Setting up CI (#79) Created configuration file for github action (run on every commit) Fixed dependency to MorphicTestingFramework Updated badges in README.md Co-authored-by: Jan-Eric Hellenberg Co-authored-by: frcroth --- .github/workflows/main.yml | 24 +++++++++++++++++++ .travis.yml | 4 ++-- README.md | 2 +- .../instance/baseline..st | 6 ++--- .../instance/sortRunsByPriority.st | 2 +- .../methodProperties.json | 2 +- 6 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/main.yml mode change 100755 => 100644 .travis.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..a75f70e --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,24 @@ +name: CI + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + push + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build": + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, ubuntu-18.04] + smalltalk: [ Squeak64-trunk ] + name: ${{ matrix.smalltalk }} on ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + - uses: hpi-swa/setup-smalltalkCI@v1 + with: + smalltalk-version: ${{ matrix.smalltalk }} + - run: smalltalkci -s ${{ matrix.smalltalk }} + timeout-minutes: 15 diff --git a/.travis.yml b/.travis.yml old mode 100755 new mode 100644 index 8c274c8..223bf5a --- a/.travis.yml +++ b/.travis.yml @@ -6,5 +6,5 @@ os: - osx smalltalk: - - Squeak-5.2 - - Squeak-5.1 + - Squeak64-trunk + - Squeak64-5.3 diff --git a/README.md b/README.md index e6b7964..1b76346 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# RichTextEditing [![Build Status](https://travis-ci.org/hpi-swa-teaching/RichTextEditing.svg?branch=master)](https://travis-ci.org/hpi-swa-teaching/RichTextEditing)[![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/RichTextEditing/badge.svg?branch=master)](https://coveralls.io/github/hpi-swa-teaching/RichTextEditing?branch=master) +# RichTextEditing ![CI](https://github.com/hpi-swa-teaching/RichTextEditing/workflows/CI/badge.svg)[![Build Status](https://travis-ci.org/hpi-swa-teaching/RichTextEditing.svg?branch=dev)](https://travis-ci.org/hpi-swa-teaching/RichTextEditing)[![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/RichTextEditing/badge.svg?branch=master)](https://coveralls.io/github/hpi-swa-teaching/RichTextEditing?branch=master) ## SWT 2020 - Group 10, SWT 2019 - Group 11 # SquidWord This is an implementation of a text editor in Squeak, which is capable of writing structured text. This means that text can be divided into logical units. Paragraphs are used to structure the text into sections on a broad level and so-called "text structures" are used to assign certain meanings to particular parts of the text. diff --git a/packages/BaselineOfRichTextEditing.package/BaselineOfRichTextEditing.class/instance/baseline..st b/packages/BaselineOfRichTextEditing.package/BaselineOfRichTextEditing.class/instance/baseline..st index 8db99d0..3e001fb 100644 --- a/packages/BaselineOfRichTextEditing.package/BaselineOfRichTextEditing.class/instance/baseline..st +++ b/packages/BaselineOfRichTextEditing.package/BaselineOfRichTextEditing.class/instance/baseline..st @@ -4,13 +4,13 @@ baseline: spec spec for: #'common' do: [ - spec baseline: 'Project12' with: [ + spec baseline: 'MorphicTestingFramework' with: [ spec repository: 'github://hpi-swa-teaching/Morphic-Testing-Framework:master/packages']. spec package: 'RichTextEditing-Core' with: [spec postLoadDoIt: #initializeCharacterScanner]; - package: 'RichTextEditing-Tests' with: [spec requires: #('RichTextEditing-Core' 'Project12')] + package: 'RichTextEditing-Tests' with: [spec requires: #('RichTextEditing-Core' 'MorphicTestingFramework')] yourself. spec group: 'default' with: #('RichTextEditing-Core'); - group: 'tests' with: #('RichTextEditing-Tests')] \ No newline at end of file + group: 'tests' with: #('RichTextEditing-Tests')] diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/sortRunsByPriority.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/sortRunsByPriority.st index bd03efa..443d5fc 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/sortRunsByPriority.st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/sortRunsByPriority.st @@ -5,6 +5,6 @@ sortRunsByPriority self text runs: (self textRuns copy collect: [:attributes | structureCopy := attributes copy select: [:attribute | attribute isTextStructure]. noStructureCopy := attributes copy reject: [:attribute | attribute isTextStructure]. - structureCopy := structureCopy copy sortBy: [:a :b | + structureCopy := structureCopy sorted: [:a :b | (self textStructureSymbols indexOf: a structureIdentifier) > (self textStructureSymbols indexOf: b structureIdentifier)]. attributes := noStructureCopy, structureCopy]) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json index da2ab08..ff9b0bd 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json @@ -19,7 +19,7 @@ "openInEditor" : "ls 7/24/2019 20:14", "removeStructure:" : "ls 7/24/2019 17:28", "removeTextAttribute:from:to:" : "MB 7/24/2019 20:40", - "sortRunsByPriority" : "lh 7/25/2019 11:05", + "sortRunsByPriority" : "JEH 5/20/2020 10:28", "structuresChanged" : "ls 7/24/2019 14:46", "stylesForStructure:" : "AG 7/25/2019 13:30", "symbolToStructure:" : "ls 7/24/2019 14:24", From 43201b7ec18cfcfe49e800c671d61800c6578cae Mon Sep 17 00:00:00 2001 From: Felix Roth Date: Mon, 25 May 2020 15:46:19 +0200 Subject: [PATCH 06/14] Added footer. Footer shows wordcount, updating every time when the document is saved --- .../instance/buildFooterWith..st | 12 ++++++++++++ .../instance/buildManageStructuresButtonWith..st | 2 +- .../instance/buildTextFieldWith..st | 2 +- .../instance/buildWith..st | 4 +++- .../RichTextEditorModel.class/instance/footer..st | 4 ++++ .../RichTextEditorModel.class/instance/footer.st | 4 ++++ .../instance/footerText.st | 7 +++++++ .../instance/textChanged.st | 3 ++- .../instance/updateFooter.st | 4 ++++ .../methodProperties.json | 15 ++++++++++----- .../RichTextEditorModel.class/properties.json | 1 + 11 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildFooterWith..st create mode 100644 packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footer..st create mode 100644 packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footer.st create mode 100644 packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footerText.st create mode 100644 packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/updateFooter.st diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildFooterWith..st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildFooterWith..st new file mode 100644 index 0000000..042c81b --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildFooterWith..st @@ -0,0 +1,12 @@ +toolbuilder +buildFooterWith: aBuilder + + ^ aBuilder pluggableTextSpec new + name: 'footer'; + model: self; + frame: (0 @ 0.9 corner: 1 @ 1); + readOnly: true; + getText: #footerText; + minimumHeight: 20; + indicateUnacceptedChanges: false; + yourself \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildManageStructuresButtonWith..st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildManageStructuresButtonWith..st index eceb690..f267e6f 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildManageStructuresButtonWith..st +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildManageStructuresButtonWith..st @@ -3,7 +3,7 @@ buildManageStructuresButtonWith: aBuilder ^ aBuilder pluggableButtonSpec new model: self; - frame: (0 @ 0.9 corner: 0.3 @ 1); + frame: (0 @ 0.8 corner: 0.3 @ 0.9); label: 'Manage Structures'; action: #openStructureEditor; yourself \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildTextFieldWith..st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildTextFieldWith..st index 60c420d..dd45be0 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildTextFieldWith..st +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildTextFieldWith..st @@ -4,7 +4,7 @@ buildTextFieldWith: aBuilder ^ aBuilder pluggableTextSpec new name: 'textView'; model: self; - frame: (0.3 @ 0.1 corner: 1 @ 1); + frame: (0.3 @ 0.1 corner: 1 @ 0.9); readOnly: false; getText: #text; setText: #saveText:; diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildWith..st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildWith..st index 28f4132..146b257 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildWith..st +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildWith..st @@ -17,9 +17,11 @@ buildWith: aBuilder self buildManageStructuresButtonWith: aBuilder. self buildNewButtonWith: aBuilder. self buildInspectDocumentButtonWith: aBuilder. - self buildInfoButtonWith: aBuilder.}. + self buildInfoButtonWith: aBuilder. + self buildFooterWith: aBuilder}. result := aBuilder build: windowSpec. self textView: (aBuilder widgetAt: 'textView'). + self footer: (aBuilder widgetAt: 'footer'). self editor model: self. ^ result diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footer..st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footer..st new file mode 100644 index 0000000..f6c24fb --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footer..st @@ -0,0 +1,4 @@ +accessing +footer: aFooter + + footer := aFooter \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footer.st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footer.st new file mode 100644 index 0000000..1816bc7 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footer.st @@ -0,0 +1,4 @@ +accessing +footer + + ^ footer \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footerText.st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footerText.st new file mode 100644 index 0000000..6036e29 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footerText.st @@ -0,0 +1,7 @@ +document information +footerText + + | footerString| + footerString := 'You are using SquidWord · ', self bufferDocument wordcount. + footerString := footerString, ' words'. + ^ footerString \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/textChanged.st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/textChanged.st index 63caa51..37ca943 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/textChanged.st +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/textChanged.st @@ -3,4 +3,5 @@ textChanged self changed: #text; unacceptedEdits; - fitParagraphs \ No newline at end of file + fitParagraphs; + updateFooter \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/updateFooter.st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/updateFooter.st new file mode 100644 index 0000000..5c09c15 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/updateFooter.st @@ -0,0 +1,4 @@ +document information +updateFooter + + self footer ifNotNil: [self footer setText: self footerText] \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json index 3ff3085..53087f5 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json @@ -13,18 +13,19 @@ "bufferDocument:" : "ls 7/24/2019 20:57", "bufferedStructures" : "ls 6/19/2019 17:30", "bufferedStructures:" : "ls 6/26/2019 17:46", + "buildFooterWith:" : "frc 5/25/2020 15:02", "buildInfoButtonWith:" : "frc 5/19/2020 22:20", "buildInspectDocumentButtonWith:" : "ls 6/26/2019 18:57", "buildLoadButtonWith:" : "ls 6/26/2019 21:13", - "buildManageStructuresButtonWith:" : "lh 6/12/2019 17:40", + "buildManageStructuresButtonWith:" : "frc 5/25/2020 14:54", "buildNewButtonWith:" : "lh 7/24/2019 20:03", "buildRedoButtonWith:" : "MB 5/22/2019 21:04", "buildSaveAsButtonWith:" : "ls 6/26/2019 19:02", "buildSaveButtonWith:" : "ls 6/26/2019 18:54", "buildStructureListWith:" : "ls 6/26/2019 22:27", - "buildTextFieldWith:" : "lh 6/12/2019 17:46", + "buildTextFieldWith:" : "frc 5/25/2020 15:42", "buildUndoButtonWith:" : "MB 5/22/2019 21:03", - "buildWith:" : "frc 5/19/2020 22:19", + "buildWith:" : "frc 5/25/2020 15:40", "chosenDocument" : "AG 7/25/2019 13:13", "createNewStructure:" : "ls 7/24/2019 15:11", "currentSaveName" : "ls 6/26/2019 17:58", @@ -32,6 +33,9 @@ "documentClass" : "ls 7/10/2019 15:53", "editor" : "lh 7/24/2019 17:17", "fitParagraphs" : "lh 7/24/2019 22:44", + "footer" : "frc 5/25/2020 15:40", + "footer:" : "frc 5/25/2020 15:22", + "footerText" : "frc 5/25/2020 15:07", "getStructureSelectionAt:" : "AG 7/25/2019 13:13", "hasStructure:" : "AG 7/25/2019 13:13", "hasUnacceptedEdits" : "ls 5/9/2019 10:34", @@ -78,7 +82,7 @@ "targetDocument:" : "lh 7/24/2019 20:23", "text" : "ls 6/26/2019 17:59", "text:" : "ls 6/26/2019 17:59", - "textChanged" : "AG 7/25/2019 13:14", + "textChanged" : "frc 5/25/2020 15:22", "textEditorClass" : "lh 7/24/2019 15:09", "textMorph" : "ls 7/24/2019 21:06", "textStructureSymbols" : "ls 7/24/2019 14:25", @@ -89,4 +93,5 @@ "unacceptedEdits" : "ls 7/24/2019 21:06", "unbufferStructures" : "ls 6/21/2019 16:57", "undo" : "AG 5/29/2019 18:37", - "update:" : "ls 7/24/2019 14:56" } } + "update:" : "ls 7/24/2019 14:56", + "updateFooter" : "frc 5/25/2020 15:40" } } diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/properties.json b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/properties.json index 8206351..fc1a7c5 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/properties.json +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/properties.json @@ -7,6 +7,7 @@ "commentStamp" : "ls 7/25/2019 13:49", "instvars" : [ "textView", + "footer", "label", "selectedStructures", "bufferedStructures", From e86e482c9c3597e4b6f8bdec19c370f713a4f49d Mon Sep 17 00:00:00 2001 From: Felix Roth Date: Mon, 25 May 2020 16:06:46 +0200 Subject: [PATCH 07/14] Removed magic number, minor style fixes --- .../RichTextDocument.class/instance/charcount.st | 4 ++-- .../RichTextDocument.class/instance/charcountExcept..st | 2 +- .../RichTextDocument.class/instance/emptyChars.st | 4 ++++ .../RichTextDocument.class/instance/wordcount.st | 9 ++++----- .../RichTextDocument.class/methodProperties.json | 5 +++-- .../RichTextEditorModel.class/instance/footerText.st | 4 ++-- .../RichTextEditorModel.class/methodProperties.json | 2 +- .../instance/testUS63CharCountForText.st | 4 ++-- .../instance/testUS63CharCountWithSpacesForText.st | 4 ++-- .../instance/testUS63WordCountForText.st | 2 +- .../RichTextDocumentTests.class/methodProperties.json | 6 +++--- 11 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/instance/emptyChars.st diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcount.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcount.st index 00e416d..8564a56 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcount.st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcount.st @@ -1,4 +1,4 @@ -accessing +count charcount - ^ self charcountExcept: #(182 32 10 13) \ No newline at end of file + ^ self charcountExcept: self emptyChars \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st index c491b73..be09fe8 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st @@ -1,4 +1,4 @@ -accessing +count charcountExcept: aListOfBytecodes | byteString count i| diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/emptyChars.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/emptyChars.st new file mode 100644 index 0000000..204a175 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/emptyChars.st @@ -0,0 +1,4 @@ +count +emptyChars + + ^ #(182 32 10 13) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st index db1bd67..13ea695 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st @@ -1,16 +1,15 @@ -accessing +count wordcount - | byteString splitChars count i readWord| + | byteString count i readWord| count := 0. readWord := false. byteString := self text string asByteArray. - splitChars := #(182 32 10 13). i := 1. [i <= byteString size] whileTrue:[ - (readWord and: (splitChars includes: (byteString at: i))) ifTrue: [readWord := false. count := count+1]. - (splitChars includes: (byteString at: i)) ifFalse: [readWord := true]. + (readWord and: (self emptyChars includes: (byteString at: i))) ifTrue: [readWord := false. count := count+1]. + (self emptyChars includes: (byteString at: i)) ifFalse: [readWord := true]. i := i + 1 ]. readWord ifTrue: [count := count +1]. diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json index 7ba76bd..625a010 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json @@ -6,10 +6,11 @@ "initialTextStructures" : "MB 7/22/2019 20:46" }, "instance" : { "addAttribute:from:to:" : "AG 7/25/2019 13:08", - "charcount" : "frc 5/19/2020 22:44", + "charcount" : "frc 5/25/2020 16:02", "charcountExcept:" : "frc 5/19/2020 22:42", "copy:" : "MB 7/3/2019 18:58", "createNewStructure:" : "ls 7/24/2019 15:24", + "emptyChars" : "frc 5/25/2020 16:01", "hasStructure:forText:from:to:" : "AG 7/25/2019 13:20", "initialize" : "ls 7/24/2019 15:10", "initializeStructure:" : "ls 7/24/2019 15:13", @@ -34,4 +35,4 @@ "textStructures:" : "MB 7/3/2019 19:29", "textStructuresDo:" : "ls 7/24/2019 21:29", "updateStyle:withEmphasis:" : "ls 6/26/2019 22:44", - "wordcount" : "frc 5/19/2020 21:54" } } + "wordcount" : "frc 5/25/2020 16:01" } } diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footerText.st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footerText.st index 6036e29..b7a7d38 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footerText.st +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/footerText.st @@ -2,6 +2,6 @@ document information footerText | footerString| - footerString := 'You are using SquidWord · ', self bufferDocument wordcount. - footerString := footerString, ' words'. + footerString := 'You are using SquidWord · '. + footerString := (footerString, self bufferDocument wordcount), ' words'. ^ footerString \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json index 53087f5..b04fd3a 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json @@ -35,7 +35,7 @@ "fitParagraphs" : "lh 7/24/2019 22:44", "footer" : "frc 5/25/2020 15:40", "footer:" : "frc 5/25/2020 15:22", - "footerText" : "frc 5/25/2020 15:07", + "footerText" : "frc 5/25/2020 16:00", "getStructureSelectionAt:" : "AG 7/25/2019 13:13", "hasStructure:" : "AG 7/25/2019 13:13", "hasUnacceptedEdits" : "ls 5/9/2019 10:34", diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountForText.st b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountForText.st index 922e05f..87bd78c 100644 --- a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountForText.st +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountForText.st @@ -2,6 +2,6 @@ tests testUS63CharCountForText | testText | - testText := 'Hallo Welt' asText. + testText := 'Hello World' asText. self enterStringOntoTextField: testText. - self assert: self document charcount = 9. \ No newline at end of file + self assert: self document charcount = 10. \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithSpacesForText.st b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithSpacesForText.st index 6a0f141..1051257 100644 --- a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithSpacesForText.st +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63CharCountWithSpacesForText.st @@ -2,6 +2,6 @@ tests testUS63CharCountWithSpacesForText | testText | - testText := 'Hallo Welt' asText. + testText := 'Hello World' asText. self enterStringOntoTextField: testText. - self assert: (self document charcountExcept: #()) = 10. \ No newline at end of file + self assert: (self document charcountExcept: #()) = 11. \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountForText.st b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountForText.st index e25b18b..b2247f1 100644 --- a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountForText.st +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/instance/testUS63WordCountForText.st @@ -2,6 +2,6 @@ tests testUS63WordCountForText | testText | - testText := 'Dies ist ein Text Test' asText. + testText := 'This is a test text' asText. self enterStringOntoTextField: testText. self assert: self document wordcount = 5. \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json index be28f37..b16fb77 100644 --- a/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json +++ b/packages/RichTextEditing-Tests.package/RichTextDocumentTests.class/methodProperties.json @@ -25,9 +25,9 @@ "testUS57SaveActionWritesIntoTargetDocument" : "MB 7/25/2019 11:41", "testUS57SaveAsPutsTargetDocumentInSaver" : "ls 7/3/2019 19:25", "testUS57openInEditorOpensDocumentInEditor" : "ls 7/3/2019 18:42", - "testUS63CharCountForText" : "frc 5/19/2020 22:45", + "testUS63CharCountForText" : "frc 5/25/2020 16:03", "testUS63CharCountInitiallyZero" : "frc 5/19/2020 22:47", - "testUS63CharCountWithSpacesForText" : "frc 5/19/2020 22:46", + "testUS63CharCountWithSpacesForText" : "frc 5/25/2020 16:05", "testUS63CharCountWithoutLetterA" : "frc 5/19/2020 22:47", - "testUS63WordCountForText" : "frc 5/19/2020 22:00", + "testUS63WordCountForText" : "frc 5/25/2020 16:02", "testUS63WordCountInitiallyZero" : "frc 5/19/2020 21:58" } } From 09eabedc6ca92357bc130fe9ba597e4ef657e1e8 Mon Sep 17 00:00:00 2001 From: Tobias Kantusch Date: Thu, 28 May 2020 10:23:06 +0200 Subject: [PATCH 08/14] Add indentation attribute --- .../class/initialTextStructures.st | 3 ++- .../RichTextDocument.class/methodProperties.json | 2 +- .../RichTextStructureEditor.class/class/textStyles.st | 9 ++++++--- .../methodProperties.json | 2 +- .../RichTextStructureEditor.class/properties.json | 2 +- .../TextStructure.class/instance/amount.st | 4 ++++ .../TextStructure.class/instance/emphasizeScanner..st | 4 +++- .../TextStructure.class/instance/initialize.st | 3 ++- .../TextStructure.class/instance/isIndented.st | 4 ++++ .../TextStructure.class/instance/isTextIndent.st | 4 ++++ .../TextStructure.class/instance/setIIndented.st | 4 ++++ .../TextStructure.class/instance/unsetIndented.st | 4 ++++ .../TextStructure.class/instance/updateStyles..st | 4 ++++ .../TextStructure.class/methodProperties.json | 11 ++++++++--- .../TextStructure.class/properties.json | 3 ++- 15 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st create mode 100644 packages/RichTextEditing-Core.package/TextStructure.class/instance/isIndented.st create mode 100644 packages/RichTextEditing-Core.package/TextStructure.class/instance/isTextIndent.st create mode 100644 packages/RichTextEditing-Core.package/TextStructure.class/instance/setIIndented.st create mode 100644 packages/RichTextEditing-Core.package/TextStructure.class/instance/unsetIndented.st diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st index 6790577..b88177c 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st @@ -7,4 +7,5 @@ initialTextStructures TextStructure newWith: #footnote withEmphasis: self defaultStyles. TextStructure newWith: #heading1 withEmphasis: self defaultStyles. TextStructure newWith: #heading2 withEmphasis: self defaultStyles. - TextStructure newWith: #heading3 withEmphasis: self defaultStyles} asOrderedCollection \ No newline at end of file + TextStructure newWith: #heading3 withEmphasis: self defaultStyles. + TextStructure newWith: #list withEmphasis: (self defaultStyles union: {#indented})} asOrderedCollection \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json index da2ab08..d188d32 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json @@ -3,7 +3,7 @@ "defaultStyles" : "ls 6/26/2019 22:02", "editorClass" : "ls 6/26/2019 17:33", "fromText:withStructures:" : "ls 6/26/2019 17:31", - "initialTextStructures" : "MB 7/22/2019 20:46" }, + "initialTextStructures" : "tok 5/28/2020 10:10" }, "instance" : { "addAttribute:from:to:" : "AG 7/25/2019 13:08", "copy:" : "MB 7/3/2019 18:58", diff --git a/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/class/textStyles.st b/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/class/textStyles.st index 5775720..2aaf731 100644 --- a/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/class/textStyles.st +++ b/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/class/textStyles.st @@ -1,7 +1,10 @@ constants textStyles - - textStyles ifNil: [textStyles := {#bold . #italic . #underlined . #struckOut . #extendable} asOrderedCollection]. - ^ textStyles + ^ {#bold . + #italic . + #underlined . + #struckOut . + #extendable . + #indented} asOrderedCollection \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/methodProperties.json index df1f484..6b20831 100644 --- a/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/methodProperties.json @@ -1,7 +1,7 @@ { "class" : { "openWith:" : "AG 7/25/2019 13:15", - "textStyles" : "AG 7/25/2019 13:15" }, + "textStyles" : "tok 5/28/2020 10:19" }, "instance" : { "addColor" : "ls 7/24/2019 21:51", "addFont" : "ls 7/24/2019 21:16", diff --git a/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/properties.json b/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/properties.json index 1c198e9..eeb379c 100644 --- a/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/properties.json +++ b/packages/RichTextEditing-Core.package/RichTextStructureEditor.class/properties.json @@ -1,7 +1,7 @@ { "category" : "RichTextEditing-Core", "classinstvars" : [ - "textStyles" ], + ], "classvars" : [ ], "commentStamp" : "ls 7/25/2019 13:53", diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st new file mode 100644 index 0000000..54b2e65 --- /dev/null +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st @@ -0,0 +1,4 @@ +accessing +amount + + ^ 2 \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st index efd32fb..6a42cf5 100644 --- a/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st @@ -5,4 +5,6 @@ emphasizeScanner: aScanner self color ifNotNil: [ aScanner textColor: self color]. self font ifNotNil: [ - aScanner setActualFont: self font] \ No newline at end of file + aScanner setActualFont: self font]. + self isTextIndent ifTrue: [ + aScanner indentationLevel: self amount] \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/initialize.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/initialize.st index 5a4a62f..e697d54 100644 --- a/packages/RichTextEditing-Core.package/TextStructure.class/instance/initialize.st +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/initialize.st @@ -7,6 +7,7 @@ initialize unsetItalic; unsetUnderlined; unsetStruckOut; - unsetExtendable; + unsetExtendable; + unsetIndented; color: nil; font: nil \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/isIndented.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/isIndented.st new file mode 100644 index 0000000..b4e1e3a --- /dev/null +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/isIndented.st @@ -0,0 +1,4 @@ +testing +isIndented + + ^ indented \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/isTextIndent.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/isTextIndent.st new file mode 100644 index 0000000..894d8cc --- /dev/null +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/isTextIndent.st @@ -0,0 +1,4 @@ +testing +isTextIndent + + ^ indented \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/setIIndented.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/setIIndented.st new file mode 100644 index 0000000..b08a3b2 --- /dev/null +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/setIIndented.st @@ -0,0 +1,4 @@ +accessing +setIIndented + + indented := true \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/unsetIndented.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/unsetIndented.st new file mode 100644 index 0000000..8fec6d7 --- /dev/null +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/unsetIndented.st @@ -0,0 +1,4 @@ +accessing +unsetIndented + + indented := false \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/updateStyles..st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/updateStyles..st index a8d11da..ffcfd4a 100644 --- a/packages/RichTextEditing-Core.package/TextStructure.class/instance/updateStyles..st +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/updateStyles..st @@ -21,5 +21,9 @@ updateStyles: aSet ifTrue: [self setExtendable] ifFalse: [self unsetExtendable]. + (aSet includes: #indented) + ifTrue: [self setIIndented] + ifFalse: [self unsetIndented]. + self styleSet: aSet \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json b/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json index 3b1c5f2..45f8197 100644 --- a/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json @@ -5,19 +5,22 @@ "newWith:withEmphasis:" : "AG 7/25/2019 13:17" }, "instance" : { "=" : "lh 7/24/2019 20:24", + "amount" : "tok 5/25/2020 16:10", "color" : "AG 6/19/2019 19:03", "color:" : "ls 7/24/2019 21:55", "emphasisCode" : "lh 7/24/2019 22:50", - "emphasizeScanner:" : "lh 7/24/2019 20:17", + "emphasizeScanner:" : "tok 5/25/2020 16:21", "font" : "SR 6/26/2019 18:05", "font:" : "ls 7/24/2019 21:22", "getFont" : "ls 7/24/2019 21:19", "hash" : "lh 7/24/2019 20:47", - "initialize" : "lh 6/26/2019 18:47", + "initialize" : "tok 5/28/2020 10:08", "isBold" : "ls 5/29/2019 17:55", "isExtendable" : "lh 6/5/2019 17:47", + "isIndented" : "tok 5/28/2020 10:09", "isItalic" : "ls 5/29/2019 17:57", "isStruckOut" : "ls 5/29/2019 17:55", + "isTextIndent" : "tok 5/28/2020 10:09", "isTextStructure" : "ls 5/29/2019 17:41", "isUnderlined" : "ls 5/29/2019 17:56", "mayBeExtended" : "ls 6/12/2019 18:49", @@ -30,6 +33,7 @@ "setBold" : "ls 5/29/2019 17:55", "setColor:" : "ls 7/24/2019 21:56", "setExtendable" : "lh 6/5/2019 17:47", + "setIIndented" : "tok 5/28/2020 10:09", "setItalic" : "ls 5/29/2019 17:58", "setStruckOut" : "ls 5/29/2019 17:56", "setUnderlined" : "ls 5/29/2019 17:57", @@ -39,7 +43,8 @@ "styleSet:" : "ls 6/26/2019 21:28", "unsetBold" : "ls 5/29/2019 17:55", "unsetExtendable" : "lh 6/5/2019 17:48", + "unsetIndented" : "tok 5/28/2020 10:09", "unsetItalic" : "ls 5/29/2019 17:58", "unsetStruckOut" : "ls 5/29/2019 17:56", "unsetUnderlined" : "ls 5/29/2019 17:57", - "updateStyles:" : "ls 6/26/2019 21:30" } } + "updateStyles:" : "tok 5/28/2020 10:09" } } diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/properties.json b/packages/RichTextEditing-Core.package/TextStructure.class/properties.json index 87cc8ce..d707125 100644 --- a/packages/RichTextEditing-Core.package/TextStructure.class/properties.json +++ b/packages/RichTextEditing-Core.package/TextStructure.class/properties.json @@ -14,7 +14,8 @@ "extendable", "color", "font", - "styleSet" ], + "styleSet", + "indented" ], "name" : "TextStructure", "pools" : [ ], From cce3a700c46ed932553e5ff529b31355def3d5f1 Mon Sep 17 00:00:00 2001 From: Tobias Kantusch Date: Sun, 31 May 2020 20:55:18 +0200 Subject: [PATCH 09/14] Add right click menu containing basic functionality --- .../class/yellowButtonMenuItems.st | 22 +++++++++++++++++++ .../instance/buildTextFieldWith..st | 1 + .../methodProperties.json | 5 +++-- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 packages/RichTextEditing-Core.package/RichTextEditorModel.class/class/yellowButtonMenuItems.st diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/class/yellowButtonMenuItems.st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/class/yellowButtonMenuItems.st new file mode 100644 index 0000000..74031b8 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/class/yellowButtonMenuItems.st @@ -0,0 +1,22 @@ +accessing +yellowButtonMenuItems + "Returns the standard yellow button menu items" + ^{ + #-. + {'find...(f)' translated. #find}. + {'find again (g)' translated. #findAgain}. + {'find and replace ...' translated. #findReplace}. + {'do/replace again (j)' translated. #again}. + #-. + {'undo (z)' translated. #undo}. + {'redo (Z)' translated. #redo}. + #-. + {'copy (c)' translated. #copySelection}. + {'cut (x)' translated. #cut}. + {'paste (v)' translated. #paste}. + {'paste...' translated. #pasteRecent}. + #-. + {'save (s)' translated. #saveText}. + {'save as' translated. #saveDocumentInSaverWithNamePrompt}. + {'cancel (l)' translated. #cancel}. + } \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildTextFieldWith..st b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildTextFieldWith..st index 60c420d..72d96e1 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildTextFieldWith..st +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/instance/buildTextFieldWith..st @@ -9,4 +9,5 @@ buildTextFieldWith: aBuilder getText: #text; setText: #saveText:; editText: #text:; + menu: #codePaneMenu:shifted:; yourself \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json index 669ff70..23cd3fc 100644 --- a/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextEditorModel.class/methodProperties.json @@ -7,7 +7,8 @@ "open" : "ls 7/24/2019 20:00", "openWith:" : "AG 7/25/2019 13:12", "saverClass" : "ls 5/8/2019 20:28", - "toggleAutocompletion" : "kh 5/18/2020 13:54" }, + "toggleAutocompletion" : "kh 5/18/2020 13:54", + "yellowButtonMenuItems" : "tok 5/31/2020 20:54" }, "instance" : { "addAttribute:" : "ls 7/24/2019 20:26", "addExtendableStructures" : "lh 7/24/2019 22:43", @@ -24,7 +25,7 @@ "buildSaveAsButtonWith:" : "ls 6/26/2019 19:02", "buildSaveButtonWith:" : "ls 6/26/2019 18:54", "buildStructureListWith:" : "ls 6/26/2019 22:27", - "buildTextFieldWith:" : "lh 6/12/2019 17:46", + "buildTextFieldWith:" : "tok 5/31/2020 20:20", "buildUndoButtonWith:" : "MB 5/22/2019 21:03", "buildWith:" : "ls 6/26/2019 18:53", "chosenDocument" : "AG 7/25/2019 13:13", From 6b780ec26ee0789b3e23fcb33c45ccc75852c364 Mon Sep 17 00:00:00 2001 From: Tobias Kantusch Date: Sun, 31 May 2020 21:16:17 +0200 Subject: [PATCH 10/14] Add intializer for list structure --- .../RichTextDocument.class/class/initialListStructure.st | 4 ++++ .../RichTextDocument.class/class/initialTextStructures.st | 2 +- .../RichTextDocument.class/methodProperties.json | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialListStructure.st diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialListStructure.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialListStructure.st new file mode 100644 index 0000000..e90f0a0 --- /dev/null +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialListStructure.st @@ -0,0 +1,4 @@ +constants +initialListStructure + + ^ TextStructure newWith: #list withEmphasis: (self defaultStyles union: {#indented}) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st index b81e448..8af455b 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/class/initialTextStructures.st @@ -8,4 +8,4 @@ initialTextStructures self initialHeading1Structure. self initialHeading2Structure. self initialHeading3Structure. - TextStructure newWith: #list withEmphasis: (self defaultStyles union: {#indented})} asOrderedCollection \ No newline at end of file + self initialListStructure} asOrderedCollection \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json index f3f6e93..b35bca4 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json @@ -9,7 +9,8 @@ "initialHeading2Structure" : "tok 5/22/2020 13:18", "initialHeading3Structure" : "tok 5/22/2020 13:18", "initialItalicStructure" : "tok 5/22/2020 12:32", - "initialTextStructures" : "tok 5/28/2020 10:10", + "initialListStructure" : "tok 5/31/2020 21:15", + "initialTextStructures" : "tok 5/31/2020 21:15", "initialUnderlinedStructure" : "tok 5/22/2020 12:33" }, "instance" : { "addAttribute:from:to:" : "AG 7/25/2019 13:08", From 65939fb218b54f01b0d67755f4f7a6ffbdfa200a Mon Sep 17 00:00:00 2001 From: Tobias Kantusch Date: Mon, 1 Jun 2020 12:52:26 +0200 Subject: [PATCH 11/14] Rename amount for clarification --- .../TextStructure.class/instance/amount.st | 4 ---- .../TextStructure.class/instance/emphasizeScanner..st | 2 +- .../TextStructure.class/instance/indentationAmount.st | 4 ++++ .../TextStructure.class/methodProperties.json | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st create mode 100644 packages/RichTextEditing-Core.package/TextStructure.class/instance/indentationAmount.st diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st deleted file mode 100644 index 54b2e65..0000000 --- a/packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -amount - - ^ 2 \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st index 6a42cf5..da69741 100644 --- a/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st @@ -7,4 +7,4 @@ emphasizeScanner: aScanner self font ifNotNil: [ aScanner setActualFont: self font]. self isTextIndent ifTrue: [ - aScanner indentationLevel: self amount] \ No newline at end of file + aScanner indentationLevel: self indentationAmount] \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/indentationAmount.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/indentationAmount.st new file mode 100644 index 0000000..6f726cd --- /dev/null +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/indentationAmount.st @@ -0,0 +1,4 @@ +accessing +indentationAmount + + ^ 2 \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json b/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json index 45f8197..a655973 100644 --- a/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json @@ -5,15 +5,15 @@ "newWith:withEmphasis:" : "AG 7/25/2019 13:17" }, "instance" : { "=" : "lh 7/24/2019 20:24", - "amount" : "tok 5/25/2020 16:10", "color" : "AG 6/19/2019 19:03", "color:" : "ls 7/24/2019 21:55", "emphasisCode" : "lh 7/24/2019 22:50", - "emphasizeScanner:" : "tok 5/25/2020 16:21", + "emphasizeScanner:" : "tok 6/1/2020 12:51", "font" : "SR 6/26/2019 18:05", "font:" : "ls 7/24/2019 21:22", "getFont" : "ls 7/24/2019 21:19", "hash" : "lh 7/24/2019 20:47", + "indentationAmount" : "tok 6/1/2020 12:51", "initialize" : "tok 5/28/2020 10:08", "isBold" : "ls 5/29/2019 17:55", "isExtendable" : "lh 6/5/2019 17:47", From 80ed47f3da56c8569d2988157cf2a6de41cc9b64 Mon Sep 17 00:00:00 2001 From: Tobias Kantusch Date: Mon, 1 Jun 2020 13:41:29 +0200 Subject: [PATCH 12/14] Add tests for US64 and fix test testUS32CheckAllStylesAreAvailable --- .../TextStructure.class/instance/amount.st | 4 ++++ .../TextStructure.class/instance/emphasizeScanner..st | 2 +- .../TextStructure.class/instance/indentationAmount.st | 4 ---- .../TextStructure.class/methodProperties.json | 4 ++-- .../instance/listTextStructure.st | 5 +++++ .../instance/testUS32StructureIsRendered.st | 2 +- .../instance/testUS64IndentedStructureIsRendered.st | 7 +++++++ .../methodProperties.json | 4 +++- .../instance/testUS32CheckAllStylesAreAvailable.st | 4 ++-- .../instance/testUS64IndentationStyleAvailable.st | 8 ++++++++ .../methodProperties.json | 3 ++- 11 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st delete mode 100644 packages/RichTextEditing-Core.package/TextStructure.class/instance/indentationAmount.st create mode 100644 packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/listTextStructure.st create mode 100644 packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/testUS64IndentedStructureIsRendered.st create mode 100644 packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/instance/testUS64IndentationStyleAvailable.st diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st new file mode 100644 index 0000000..e0fae75 --- /dev/null +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/amount.st @@ -0,0 +1,4 @@ +accessing +amount +"A textIndent attribute has to provide a amount method specifying the indentationAmount" + ^ 2 \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st index da69741..6a42cf5 100644 --- a/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st +++ b/packages/RichTextEditing-Core.package/TextStructure.class/instance/emphasizeScanner..st @@ -7,4 +7,4 @@ emphasizeScanner: aScanner self font ifNotNil: [ aScanner setActualFont: self font]. self isTextIndent ifTrue: [ - aScanner indentationLevel: self indentationAmount] \ No newline at end of file + aScanner indentationLevel: self amount] \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/instance/indentationAmount.st b/packages/RichTextEditing-Core.package/TextStructure.class/instance/indentationAmount.st deleted file mode 100644 index 6f726cd..0000000 --- a/packages/RichTextEditing-Core.package/TextStructure.class/instance/indentationAmount.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -indentationAmount - - ^ 2 \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json b/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json index a655973..cce1325 100644 --- a/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/TextStructure.class/methodProperties.json @@ -5,15 +5,15 @@ "newWith:withEmphasis:" : "AG 7/25/2019 13:17" }, "instance" : { "=" : "lh 7/24/2019 20:24", + "amount" : "tok 6/1/2020 13:32", "color" : "AG 6/19/2019 19:03", "color:" : "ls 7/24/2019 21:55", "emphasisCode" : "lh 7/24/2019 22:50", - "emphasizeScanner:" : "tok 6/1/2020 12:51", + "emphasizeScanner:" : "tok 6/1/2020 13:31", "font" : "SR 6/26/2019 18:05", "font:" : "ls 7/24/2019 21:22", "getFont" : "ls 7/24/2019 21:19", "hash" : "lh 7/24/2019 20:47", - "indentationAmount" : "tok 6/1/2020 12:51", "initialize" : "tok 5/28/2020 10:08", "isBold" : "ls 5/29/2019 17:55", "isExtendable" : "lh 6/5/2019 17:47", diff --git a/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/listTextStructure.st b/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/listTextStructure.st new file mode 100644 index 0000000..19d2568 --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/listTextStructure.st @@ -0,0 +1,5 @@ +utilities +listTextStructure + + ^ TextStructure newWith: #list withEmphasis: ({#indented}) + \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/testUS32StructureIsRendered.st b/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/testUS32StructureIsRendered.st index 9ffded4..75edf49 100644 --- a/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/testUS32StructureIsRendered.st +++ b/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/testUS32StructureIsRendered.st @@ -1,7 +1,7 @@ tests testUS32StructureIsRendered - self assert: self textHasNoStyle. + self assert: self textHasNoStyle. self editorText addAttribute: self combinedTextStructure. self assert: self textHasCombinedStyle diff --git a/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/testUS64IndentedStructureIsRendered.st b/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/testUS64IndentedStructureIsRendered.st new file mode 100644 index 0000000..c211110 --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/instance/testUS64IndentedStructureIsRendered.st @@ -0,0 +1,7 @@ +tests +testUS64IndentedStructureIsRendered + + self enterStringOntoTextField: 'test'. + self assert: ((self editorText indentationAmountAt: (1 to: self editorText size)) = 0). + self editorText addAttribute: self listTextStructure from: 1 to: self editorText size. + self assert: ((self editorText indentationAmountAt: (1 to: self editorText size)) = self listTextStructure amount) \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/methodProperties.json b/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/methodProperties.json index d1c47ba..e5ba5ee 100644 --- a/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/methodProperties.json +++ b/packages/RichTextEditing-Tests.package/RichTextEditorStructureTests.class/methodProperties.json @@ -6,15 +6,17 @@ "combinedEmphasisCode" : "MB 5/29/2019 22:04", "combinedTextStructure" : "AG 5/30/2019 12:33", "emphasisCodeNoStyle" : "AG 6/5/2019 18:56", + "listTextStructure" : "tok 6/1/2020 13:27", "menu" : "ls 6/18/2019 16:37", "selectOptionBold" : "lh 7/24/2019 21:31", "setUpHalfBoldTestText" : "lh 7/24/2019 20:04", "testUS18SelectionStyleIsAppliedToSelection" : "MB 7/25/2019 12:28", "testUS18TextStyleIsSelectedInList" : "MB 7/25/2019 12:27", - "testUS32StructureIsRendered" : "AG 6/21/2019 14:47", + "testUS32StructureIsRendered" : "tok 6/1/2020 13:15", "testUS44OldButtonsHaveBeenRemoved" : "ls 6/18/2019 15:57", "testUS44SelectedStructureIsAssigned" : "ls 6/18/2019 16:00", "testUS44SelectedStylesChangeAccordingToSelectedText" : "lh 7/24/2019 21:38", "testUS44StructureListExists" : "AG 6/18/2019 15:22", + "testUS64IndentedStructureIsRendered" : "tok 6/1/2020 13:35", "textHasCombinedStyle" : "AG 7/25/2019 13:22", "textHasNoStyle" : "AG 7/25/2019 13:22" } } diff --git a/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/instance/testUS32CheckAllStylesAreAvailable.st b/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/instance/testUS32CheckAllStylesAreAvailable.st index d6536fc..46565ed 100644 --- a/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/instance/testUS32CheckAllStylesAreAvailable.st +++ b/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/instance/testUS32CheckAllStylesAreAvailable.st @@ -3,7 +3,7 @@ testUS32CheckAllStylesAreAvailable | styleList essentialStyles | styleList := self structureEditorView findByClass: PluggableListMorphOfMany. - essentialStyles := {#bold . #italic . #underlined . #struckOut . #extendable}. + essentialStyles := {#bold . #italic . #underlined . #struckOut . #extendable} asSet. - self assert: essentialStyles asSet equals: styleList list asSet + self assert: (essentialStyles allSatisfy: [:each | styleList list asSet includes: each]) \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/instance/testUS64IndentationStyleAvailable.st b/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/instance/testUS64IndentationStyleAvailable.st new file mode 100644 index 0000000..ba70f75 --- /dev/null +++ b/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/instance/testUS64IndentationStyleAvailable.st @@ -0,0 +1,8 @@ +tests +testUS64IndentationStyleAvailable + + | styleList | + styleList := self structureEditorView findByClass: PluggableListMorphOfMany. + + self assert: (styleList list asSet includes: #indented) + \ No newline at end of file diff --git a/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/methodProperties.json b/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/methodProperties.json index 60d794a..231f48b 100644 --- a/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/methodProperties.json +++ b/packages/RichTextEditing-Tests.package/RichTextStructureEditorStructureTests.class/methodProperties.json @@ -13,10 +13,11 @@ "secondIndex" : "lh 7/24/2019 20:06", "setStructureAt:toColor:" : "lh 7/24/2019 19:00", "symbolAt:" : "lh 7/3/2019 22:46", - "testUS32CheckAllStylesAreAvailable" : "MB 7/24/2019 18:46", + "testUS32CheckAllStylesAreAvailable" : "tok 6/1/2020 13:12", "testUS43PreviewTextfieldExists" : "ls 6/6/2019 00:27", "testUS43PreviewTextfieldHasSelectedStructureApplied" : "lh 7/24/2019 17:50", "testUS58StructurePriorityCanBeDecreased" : "lh 7/24/2019 20:07", "testUS58StructurePriorityCanBeIncreased" : "lh 7/24/2019 20:07", "testUS58StructureWithHighestPriorityWins" : "ls 7/25/2019 12:53", + "testUS64IndentationStyleAvailable" : "tok 6/1/2020 13:10", "textPreviewLabel" : "MB 6/12/2019 20:29" } } From 3ef7e1dbfe00daec3e20489deb0b9acee1c07d2e Mon Sep 17 00:00:00 2001 From: j-hellenberg <47941549+j-hellenberg@users.noreply.github.com> Date: Mon, 1 Jun 2020 13:42:05 +0200 Subject: [PATCH 13/14] Update github actions badge to target dev branch in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b76346..c306141 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# RichTextEditing ![CI](https://github.com/hpi-swa-teaching/RichTextEditing/workflows/CI/badge.svg)[![Build Status](https://travis-ci.org/hpi-swa-teaching/RichTextEditing.svg?branch=dev)](https://travis-ci.org/hpi-swa-teaching/RichTextEditing)[![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/RichTextEditing/badge.svg?branch=master)](https://coveralls.io/github/hpi-swa-teaching/RichTextEditing?branch=master) +# RichTextEditing ![CI](https://github.com/hpi-swa-teaching/RichTextEditing/workflows/CI/badge.svg?branch=dev)[![Build Status](https://travis-ci.org/hpi-swa-teaching/RichTextEditing.svg?branch=dev)](https://travis-ci.org/hpi-swa-teaching/RichTextEditing)[![Coverage Status](https://coveralls.io/repos/github/hpi-swa-teaching/RichTextEditing/badge.svg?branch=master)](https://coveralls.io/github/hpi-swa-teaching/RichTextEditing?branch=master) ## SWT 2020 - Group 10, SWT 2019 - Group 11 # SquidWord This is an implementation of a text editor in Squeak, which is capable of writing structured text. This means that text can be divided into logical units. Paragraphs are used to structure the text into sections on a broad level and so-called "text structures" are used to assign certain meanings to particular parts of the text. From 350982f33a0ba226a7be9fc74a211a9fbcb639b2 Mon Sep 17 00:00:00 2001 From: Felix Roth Date: Mon, 1 Jun 2020 13:48:27 +0200 Subject: [PATCH 14/14] Improved calculation code quality, explained numbers, correctly detects tab as empty space --- .../instance/charcountExcept..st | 10 ++-------- .../RichTextDocument.class/instance/emptyChars.st | 3 ++- .../RichTextDocument.class/instance/wordcount.st | 15 +++------------ .../RichTextDocument.class/methodProperties.json | 6 +++--- 4 files changed, 10 insertions(+), 24 deletions(-) diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st index be09fe8..e334d4f 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/charcountExcept..st @@ -1,14 +1,8 @@ count charcountExcept: aListOfBytecodes - | byteString count i| + | byteString count| count := 0. byteString := self text string asByteArray. - i := 1. - [i <= byteString size] whileTrue:[ - (aListOfBytecodes includes: (byteString at: i)) ifFalse: [count := count+1]. - i := i + 1 - ]. - - ^ count \ No newline at end of file + ^ byteString count: [:each | (aListOfBytecodes includes: each) not] diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/emptyChars.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/emptyChars.st index 204a175..19bed2c 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/emptyChars.st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/emptyChars.st @@ -1,4 +1,5 @@ count emptyChars +"9: Horizontal tab, 10: Line Feed, 13: Carriage return, 32: Space" - ^ #(182 32 10 13) \ No newline at end of file + ^ #(9 10 13 32) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st index 13ea695..3a4d194 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/instance/wordcount.st @@ -1,16 +1,7 @@ count wordcount - | byteString count i readWord| - count := 0. - readWord := false. + | prev bool byteString| byteString := self text string asByteArray. - - i := 1. - [i <= byteString size] whileTrue:[ - (readWord and: (self emptyChars includes: (byteString at: i))) ifTrue: [readWord := false. count := count+1]. - (self emptyChars includes: (byteString at: i)) ifFalse: [readWord := true]. - i := i + 1 - ]. - readWord ifTrue: [count := count +1]. - ^ count \ No newline at end of file + prev := self emptyChars first. + ^ (byteString count: [:each | bool := ((self emptyChars includes: each) not and: (self emptyChars includes: prev)). prev := each. bool ]) \ No newline at end of file diff --git a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json index 625a010..3bf32a0 100644 --- a/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json +++ b/packages/RichTextEditing-Core.package/RichTextDocument.class/methodProperties.json @@ -7,10 +7,10 @@ "instance" : { "addAttribute:from:to:" : "AG 7/25/2019 13:08", "charcount" : "frc 5/25/2020 16:02", - "charcountExcept:" : "frc 5/19/2020 22:42", + "charcountExcept:" : "frc 6/1/2020 10:14", "copy:" : "MB 7/3/2019 18:58", "createNewStructure:" : "ls 7/24/2019 15:24", - "emptyChars" : "frc 5/25/2020 16:01", + "emptyChars" : "frc 6/1/2020 13:43", "hasStructure:forText:from:to:" : "AG 7/25/2019 13:20", "initialize" : "ls 7/24/2019 15:10", "initializeStructure:" : "ls 7/24/2019 15:13", @@ -35,4 +35,4 @@ "textStructures:" : "MB 7/3/2019 19:29", "textStructuresDo:" : "ls 7/24/2019 21:29", "updateStyle:withEmphasis:" : "ls 6/26/2019 22:44", - "wordcount" : "frc 5/25/2020 16:01" } } + "wordcount" : "frc 6/1/2020 13:46" } }