42wim / matterircd

Connect to your mattermost or slack using your IRC-client of choice.
MIT License
294 stars 60 forks source link

Preserve leading whitespace and for code blocks, new/empty lines. Fixes #420 #432

Closed hloeung closed 3 years ago

hloeung commented 3 years ago

This fixes https://github.com/42wim/matterircd/issues/420

```
Test

    Test 2 indent

        Test 3 indent again
```

Becomes:

|23:49 <hloeung> ``` [q53f6qrotfremdiwc6bt1f891c]
|23:49 <hloeung> Test [q53f6qrotfremdiwc6bt1f891c]
|23:49 <hloeung> Test 2 indent [q53f6qrotfremdiwc6bt1f891c]
|23:49 <hloeung> Test 3 indent again [q53f6qrotfremdiwc6bt1f891c]
|23:49 <hloeung> ``` [q53f6qrotfremdiwc6bt1f891c]

Instead, we want to preserve indentation / leading whitespace as well as new lines so with PrefixContext, it will look as follows:

|00:10 <hloeung> [obg5jhw51byafg1uapjp4883we] ```
|00:10 <hloeung> [obg5jhw51byafg1uapjp4883we] Test
|00:10 <hloeung> [obg5jhw51byafg1uapjp4883we]
|00:10 <hloeung> [obg5jhw51byafg1uapjp4883we]     Test 2 indent
|00:10 <hloeung> [obg5jhw51byafg1uapjp4883we]
|00:10 <hloeung> [obg5jhw51byafg1uapjp4883we]         Test 3 indent again
|00:10 <hloeung> [obg5jhw51byafg1uapjp4883we] ```

Also with SuffixContext:

|00:09 <hloeung> ``` [51ou8bffkpyetmibrkm71c5w5c]
|00:09 <hloeung> Test [51ou8bffkpyetmibrkm71c5w5c]
|00:09 <hloeung>  [51ou8bffkpyetmibrkm71c5w5c]
|00:09 <hloeung>     Test 2 indent [51ou8bffkpyetmibrkm71c5w5c]
|00:09 <hloeung>  [51ou8bffkpyetmibrkm71c5w5c]
|00:09 <hloeung>         Test 3 indent again [51ou8bffkpyetmibrkm71c5w5c]
|00:09 <hloeung> ``` [51ou8bffkpyetmibrkm71c5w5c]
hloeung commented 3 years ago

FWIW, https://github.com/42wim/matterircd/pull/270/ added trimming trailing and leading whitespace as well as skipping blank lines.

42wim commented 3 years ago

Not sure if we really need empty lines on irc

hloeung commented 3 years ago

Not sure if we really need empty lines on irc

Why not though? Preserving them seems closest to what's seen or presented in Mattermost. In particular code blocks used to show actual code or CLI output where bits of info are grouped together with blank lines used as separators.

hloeung commented 3 years ago

Not sure if we really need empty lines on irc

Okay, updated PR so empty/new lines are only preserved when used in code blocks. e.g.

```
test1

test2
```

test3

test4

```
test5

test6
```

test7

Produces this with SuffixContext (mattermost):

|20:13 <hloeung> ``` [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> test1 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung>  [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> test2 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> ``` [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> test3 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> test4 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> ``` [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> test5 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung>  [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> test6 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> ``` [@@z5hagkhg9tgt7f61fzybydkm3c]

/scrollback with SuffixContext (mattermost):

|20:13 <hloeung> [2021-05-17 20:13] ``` [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] test1 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13]  [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] test2 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] ``` [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] test3 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] test4 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] ``` [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] test5 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13]  [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] test6 [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] ``` [@@z5hagkhg9tgt7f61fzybydkm3c]
|20:13 <hloeung> [2021-05-17 20:13] test7 [@@z5hagkhg9tgt7f61fzybydkm3c]

No Prefix/Suffix context:

|20:18 <hloeung> ```
|20:18 <hloeung> test1
|20:18 <hloeung>
|20:18 <hloeung> test2
|20:18 <hloeung> ```
|20:18 <hloeung> test3
|20:18 <hloeung> test4
|20:18 <hloeung> ```
|20:18 <hloeung> test5
|20:18 <hloeung>
|20:18 <hloeung> test6
|20:18 <hloeung> ```
|20:18 <hloeung> test7

PrefixContext:

|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] ```
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] test1
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph]
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] test2
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] ```
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] test3
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] test4
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] ```
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] test5
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph]
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] test6
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] ```
|20:18 <hloeung> [@@zrj8rijdpf8q8jysrynzfapjph] test7
42wim commented 3 years ago

Sorry for my delayed responses That's actually a good idea to only make this work in code blocks :+1: