diff --git a/lepiter/85tlqwkx87y3o3gry2try5ch8.lepiter b/lepiter/85tlqwkx87y3o3gry2try5ch8.lepiter index 97523484d..7cc972800 100644 --- a/lepiter/85tlqwkx87y3o3gry2try5ch8.lepiter +++ b/lepiter/85tlqwkx87y3o3gry2try5ch8.lepiter @@ -90,7 +90,7 @@ "__type" : "time", "time" : { "__type" : "dateAndTime", - "dateAndTimeString" : "2024-10-04T09:10:04.415473+02:00" + "dateAndTimeString" : "2024-10-15T09:54:06.281713+02:00" } }, "editEmail" : { @@ -101,7 +101,7 @@ "__type" : "time", "time" : { "__type" : "dateAndTime", - "dateAndTimeString" : "2024-10-04T09:11:05.480043+02:00" + "dateAndTimeString" : "2024-10-15T09:54:46.995484+02:00" } }, "uid" : { @@ -111,7 +111,232 @@ "paragraphStyle" : { "__type" : "textStyle" }, - "string" : "To allow for the changing behaviour, we'll add classes that do lookup based on the content (`StringContentDictionary`?)." + "string" : "There are three broad approaches to dealing with this scenario:" + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:55:10.374172+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:56:04.270531+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "IKdvAuHgDQCMJh37DVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "Replacing the instance creation of, e.g. {{gtClass:Dictionary}} with {{gtClass:GtStringContentDictionary}} means that no further modifications are required since the string comparison is used even when strict symbol comparisons are enabled." + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:54:47.884809+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:55:09.092272+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "WHUYAeHgDQCLRR2zDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "### Change the class of the collection" + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:56:22.575681+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:57:02.022372+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "JVy9BuHgDQCSHvNZDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "This can be done by converting the key just prior to use, e.g. `aString asSymbol`, " + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:56:05.027042+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:57:09.737034+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "T5axBeHgDQCRNMuNDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "## Ensure the key has the correct class when accessing" + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:57:35.571937+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:58:01.647347+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "3lesCuHgDQCV65e0DVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "This frequently occurs when loading data from json files, resulting in a dictionary having String keys when they would normally be expected to have Symbols." + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:57:14.753644+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:57:28.052814+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "iofZCeHgDQCUiROqDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "## Ensure the key has the correct class when loading / initialising" } ] }, diff --git a/lepiter/abcgwjyhd2e56v2lddmluww98.lepiter b/lepiter/abcgwjyhd2e56v2lddmluww98.lepiter new file mode 100644 index 000000000..afcc1fefa --- /dev/null +++ b/lepiter/abcgwjyhd2e56v2lddmluww98.lepiter @@ -0,0 +1,185 @@ +{ + "__schema" : "4.1", + "__type" : "page", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:16:41.353487+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:16:56.919709+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "116eTuHgDQC5Uru/DVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "Enabling comparison during development can be done in a few different ways:" + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:17:34.272042+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:18:36.79772+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "cueJUuHgDQC76FWiDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "This logs individual string / symbol comparison mismatches. This is not usable early on in conversion due to the flood of signals, but is fine once the conversion is largely done." + }, + { + "__type" : "pharoSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:17:19.613016+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:17:21.387925+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "ziuqUeHgDQC72vs7DVk8rg==" + }, + "code" : "GtStrictSymbolEqualityArgumentSignal setLogStringSymbolOnly; start.\nCircularMemoryLogger startFor: GtStrictSymbolEqualityArgumentSignal." + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:16:57.209502+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:17:16.808337+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "B2BUUOHgDQC7MJPQDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "### Log EqualityArgumentSignals" + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:16:28.438071+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:16:28.438071+02:00" + } + }, + "pageType" : { + "__type" : "namedPage", + "title" : "Strict Symbol Comparison logging during development" + }, + "uid" : { + "__type" : "uuid", + "uuid" : "4c5d9d4e-e1e0-0d00-b951-67630d593cae" + } +} \ No newline at end of file diff --git a/lepiter/abcgwjyqygdadpj0byd0p7hbq.lepiter b/lepiter/abcgwjyqygdadpj0byd0p7hbq.lepiter new file mode 100644 index 000000000..372a95a6e --- /dev/null +++ b/lepiter/abcgwjyqygdadpj0byd0p7hbq.lepiter @@ -0,0 +1,111 @@ +{ + "__schema" : "4.1", + "__type" : "page", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "pharoSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:08:24.286618+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:11:36.173227+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "IrzBMeHgDQCsZgSpDVk8rg==" + }, + "code" : "GtStrictSymbolInstallation new enableStrictSymbolComparison\r\t" + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:08:14.088117+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:08:22.092652+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "Bcr6L+HgDQCqGYr0DVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "To enable strict symbol comparison in the image:" + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:07:54.373329+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:07:54.373329+02:00" + } + }, + "pageType" : { + "__type" : "namedPage", + "title" : "Strict Symbol Comparison - Enabling" + }, + "uid" : { + "__type" : "uuid", + "uuid" : "765cf92f-e1e0-0d00-aa18-496c0d593cae" + } +} \ No newline at end of file diff --git a/lepiter/abcgwjyx9oczchnpn3cu0lllw.lepiter b/lepiter/abcgwjyx9oczchnpn3cu0lllw.lepiter new file mode 100644 index 000000000..1bba04933 --- /dev/null +++ b/lepiter/abcgwjyx9oczchnpn3cu0lllw.lepiter @@ -0,0 +1,549 @@ +{ + "__schema" : "4.1", + "__type" : "page", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:01:50.396257+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:02:34.438832+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "ikLKF+HgDQCd9SMiDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "One of the early ways of identifying all the places in GT that will need to be modified is to run all automated tests and log every instance of a mismatched comparison." + }, + { + "__type" : "pharoSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:05:32.437414+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:05:41.913115+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "zZKDJ+HgDQCn1/J6DVk8rg==" + }, + "code" : "logFile := '/path/to/log.ston' asFileReference." + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:02:52.19503+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:03:00.314285+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "Y3v2HeHgDQCkl6O5DVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "To Be Supplied." + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:02:35.11441+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:02:50.955016+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "bs7xHOHgDQCj3hFLDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "## Log comparisons during a test run" + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:04:43.010335+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:05:24.678431+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "BkgkIOHgDQCmL7qeDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "Load a log file generated in the previous section:" + }, + { + "__type" : "pharoSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:04:39.6744+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:11:56.817599+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "63leJOHgDQCmfh+9DVk8rg==" + }, + "code" : "utility := GtStrictSymbolInstallation new \r\tloadEqualityStatsFromFile: logFile." + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:03:01.099458+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:03:15.929426+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "KFp+HuHgDQClHQ5aDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "## Load comparisons from a log file" + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:12:49.733979+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:13:11.833904+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "nTKUQeHgDQCuta4sDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "This will replace all mismatched instances of `#=` with `#sameContentAs:`:" + }, + { + "__type" : "pharoSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:12:28.349378+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:13:21.291018+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "7dNNQOHgDQCucERiDVk8rg==" + }, + "code" : "utility refactorEqualityCalls" + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:11:58.496838+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:12:24.399533+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "NGGGPuHgDQCtKwONDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "## Refactor equality calls based on the log file" + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:13:34.958016+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:14:30.710231+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "dURGROHgDQCw/bPMDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "This will replace most instance creation of {{gtClass:Dictionary}}, {{gtClass:Set}} and {{gtClass:WeakSet}} with their string content equivalents." + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:14:31.034592+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:14:56.339949+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "SeedR+HgDQC0EsQKDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "This is generally not recommended due to the large number of changes that are made, many of which are probably better handled using one of the other techniques." + }, + { + "__type" : "pharoSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:15:00.164433+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:15:37.4715+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "lWVaSeHgDQC3UfD6DVk8rg==" + }, + "code" : "utility\r\trefactorDictionaryReferences;\n\trefactorSetReferences;\n\trefactorWeakSetReferences." + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:13:23.042532+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:13:33.42465+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "EmiQQ+HgDQCwOw3BDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "## Refactor references to collections" + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:01:08.557056+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:01:08.557056+02:00" + } + }, + "pageType" : { + "__type" : "namedPage", + "title" : "Strict Symbol Comparison logging offline" + }, + "uid" : { + "__type" : "uuid", + "uuid" : "a418c917-e1e0-0d00-9df4-20720d593cae" + } +} \ No newline at end of file diff --git a/lepiter/evkv84ecrzkeptlaux3fuvu0m.lepiter b/lepiter/evkv84ecrzkeptlaux3fuvu0m.lepiter index b3dbd4277..52f3ede07 100644 --- a/lepiter/evkv84ecrzkeptlaux3fuvu0m.lepiter +++ b/lepiter/evkv84ecrzkeptlaux3fuvu0m.lepiter @@ -360,7 +360,7 @@ "__type" : "time", "time" : { "__type" : "dateAndTime", - "dateAndTimeString" : "2024-10-03T13:34:12.893827+02:00" + "dateAndTimeString" : "2024-10-15T09:58:22.254003+02:00" } }, "uid" : { @@ -370,7 +370,156 @@ "paragraphStyle" : { "__type" : "textStyle" }, - "string" : "There are X scenarios that we need to deal with:" + "string" : "There are 4 scenarios that we need to deal with:" + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:00:05.956052+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:01:06.733563+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "yN4NFOHgDQCc/U62DVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "[[Strict Symbol Comparison logging offline]] " + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:16:12.547486+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:16:26.142695+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "It+qTeHgDQC4D796DVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "[[Strict Symbol Comparison logging during development]] " + } + ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:59:20.932326+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T09:59:55.968959+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "/NxeEeHgDQCZ69CxDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "To facilitate enabling strict symbol comparison there are a number of tools in the `GToolkit-Pharo-StrictSymbolComparison` package" + }, + { + "__type" : "textSnippet", + "children" : { + "__type" : "snippets", + "items" : [ ] + }, + "createEmail" : { + "__type" : "email", + "emailString" : "" + }, + "createTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:07:40.27613+02:00" + } + }, + "editEmail" : { + "__type" : "email", + "emailString" : "" + }, + "editTime" : { + "__type" : "time", + "time" : { + "__type" : "dateAndTime", + "dateAndTimeString" : "2024-10-15T10:07:52.548339+02:00" + } + }, + "uid" : { + "__type" : "uid", + "uidString" : "zNVXLuHgDQCo9H4xDVk8rg==" + }, + "paragraphStyle" : { + "__type" : "textStyle" + }, + "string" : "[[Strict Symbol Comparison - Enabling]] " } ] }, diff --git a/src/GToolkit-PharoBasePatch-StrictSymbol/SequenceableCollection.extension.st b/src/GToolkit-PharoBasePatch-StrictSymbol/SequenceableCollection.extension.st index 9358efc96..9646de799 100644 --- a/src/GToolkit-PharoBasePatch-StrictSymbol/SequenceableCollection.extension.st +++ b/src/GToolkit-PharoBasePatch-StrictSymbol/SequenceableCollection.extension.st @@ -1,5 +1,21 @@ Extension { #name : #SequenceableCollection } +{ #category : #'*GToolkit-PharoBasePatch-StrictSymbol' } +SequenceableCollection >> hasSameContentElements: otherCollection [ + "Answer whether the receiver's size is the same as otherCollection's + size, and each of the receiver's elements equal the corresponding + element of otherCollection. + Compare strings and symbols based on their content ." + | size | + + (otherCollection isKindOf: SequenceableCollection) ifFalse: [ ^ false ]. + (size := self size) = otherCollection size ifFalse: [ ^ false ]. + 1 to: size do: [ :index | + ((self at: index) sameContentAs: (otherCollection at: index)) + ifFalse: [ ^ false ] ]. + ^ true +] + { #category : #'*GToolkit-PharoBasePatch-StrictSymbol' } SequenceableCollection >> sameContentAs: otherCollection [ "Answer true if the receiver is equivalent to the otherCollection. diff --git a/src/GToolkit-PharoBasePatch-StrictSymbol/Text.extension.st b/src/GToolkit-PharoBasePatch-StrictSymbol/Text.extension.st new file mode 100644 index 000000000..5e3d12758 --- /dev/null +++ b/src/GToolkit-PharoBasePatch-StrictSymbol/Text.extension.st @@ -0,0 +1,12 @@ +Extension { #name : #Text } + +{ #category : #'*GToolkit-PharoBasePatch-StrictSymbol' } +Text >> sameContentAs: other [ + "Am I equal to the other Text or String? + ***** Warning ***** Two Texts are considered equal if they have the same characters in them. They might have completely different emphasis, fonts, sizes, text actions, or embedded morphs. If you need to find out if one is a true copy of the other, you must do (text1 = text2 and: [text1 runs = text2 runs])." + + other isText ifTrue: ["This is designed to run fast even for megabytes" + ^ string == other string or: [string = other string]]. + other isString ifTrue: [^ string == other or: [string sameContentAs: other]]. + ^ false +]