마크다운 미리보기와 결과가 다릅니다

Creating bug reports for Discourse on Meta 에 따르면

try.discourse.org

https://try.discourse.org/t/word1-word2-word3-word4/1430?u=rokejulianlockhart

discuss.kde.org

https://discuss.kde.org/t/difference-between-preview-and-actual-post/1245/2?u=rokejulianlockhart

1개의 좋아요

Hi @roke_julian_lockhart

재현해 봤는데, 미리보기가 실제 게시글과 다름을 확인했습니다. :slight_smile:

태그 위나 아래에 있는 빈 줄이 여기서는 약간의 역할을 하지만 중요하지는 않습니다. 빈 줄을 제거하면 가장 가까운 앞뒤 콘텐츠만 감싸지, 전체 콘텐츠는 감싸지 않습니다.

빈 줄 없음 추가로, 왜
import QtQuick
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts
import QtPositioning

이렇게 Action, Button, ApplicationWindow, Frame 앞에 QQC2를 붙이는 것은 동작하지 않는데,

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtPositioning
import QtQuick.Controls 2.15 as QQC2

이렇게 QQC2.Button을 추가하는 것([qml+pyqt6] Can't get native control appearance - #2 by carl - Help - KDE Discuss 참조)은 동작하나요?
새 줄


그러나…
이 문제가 <strike>[1]가 인라인 요소이기 때문이라고 생각했습니다. <b>나 <i> 같은 다른 태그로도 재현할 수 있지만, <strong>이나 <em>으로는 재현할 수 없습니다. 따라서 인라인 레벨 요소이기 때문은 아닙니다. 제가 <strong>이나 <em>으로 확인한 바로는, Discourse는 인라인으로 블록을 감싸는 것을 허용하는 것 같습니다.

<strong>
<strong>

추가로, 왜

```qml
import QtQuick
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts
import QtPositioning
```

이렇게 `Action`, `Button`, `ApplicationWindow`, `Frame` 앞에 `QQC2`를 붙이는 것은 동작하지 않는데,

```qml
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtPositioning
import QtQuick.Controls 2.15 as QQC2
```

이렇게 `QQC2.Button`을 추가하는 것(https://discuss.kde.org/t/qml-pyqt6-cant-get-native-control-appearance/1240/2?u=rokejulianlockhart 참조)은 동작하나요?
새 줄

</strong>

허용된 태그와 관련이 없어 보입니다. Discourse는 이 모든 태그(<strike>, <s>, <b>, <strong>, <i>, <em>…)를 허용하기 때문입니다.

markdown-it의 특이사항도 아닌 것 같습니다. 그들의 데모에서 이 문제를 재현할 수 없기 때문입니다.


  1. 참고로 <strike>는 <s>를推荐使用하도록 비추천(deprecated)되었습니다. 이 문제에는 아무런 영향을 미치지 않는 세부 사항이지만, 알아두면 항상 좋은 것… 방금 이제야 알았습니다 :smile: ↩︎

5개의 좋아요

호기심에 잠깐 살펴봤습니다. Nokogiri 라이브러리 관련 문제인 것으로 보입니다. :thinking:

여기서 Discourse가 어떻게 사용하는지 확인해 보면:

Loofah.fragment는 Nokogiri의 HTML4 파서를 사용합니다.

Nokogiri >= 1.14.0 및 Loofah >= 2.21.0 조건을 충족한다면 Loofah.html5_fragment를 사용하여 이 문제를 수정할 수 있습니다. Discourse는 이미 Nokogiri::HTML5.fragment를 사용하므로, 이를 사용하는 것이 합리적일 것입니다.

참고: Loofah 2.21.0은 아직 정식 출시되지 않았으며, 현재 RC1 단계입니다.

11개의 좋아요

훌륭한 디버깅이었어요! 감사합니다
:folded_hands:

6개의 좋아요

30일 동안 이 링크를 북마크해 둘게요. 그때쯤이면 새로운 loofah가 출시되어 간단히 업그레이드할 수 있기를 바랍니다.

2개의 좋아요

방금 loofah의 HTML5 버전을 시도해 보았는데, 보안 문제가 발생하는 것 같습니다:


  1) PrettyText provides safety for img bbcode
     Failure/Error: expect(cooked).to eq(html)
     
       expected: "<p><img src=\"http://aaa.com&lt;script&gt;alert(1);&lt;/script&gt;\" alt=\"\" role=\"presentation\"></p>"
            got: "<p><img src=\"http://aaa.com<script>alert(1);</script>\" alt=\"\" role=\"presentation\"></p>"
     
       (compared using ==)
     # ./spec/lib/pretty_text_spec.rb:2150:in `block (2 levels) in <main>'
     # ./spec/rails_helper.rb:358:in `block (2 levels) in <top (required)>'
     # /home/sam/.gem/ruby/3.2.1/gems/webmock-3.18.1/lib/webmock/rspec.rb:37:in `block (2 levels) in <top (required)>'

이 부분은 제게 매우 위험해 보입니다… 예외가 발생하겠네요…

3개의 좋아요

디버깅에 대해 정말 감사합니다. 다음으로 수정했습니다:

여기서 확인하실 수 있습니다:

또한,

import QtQuick
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts
import QtPositioning

이 코드에서 Action, Button, ApplicationWindow, Frame 앞에 QQC2를 접두사로 붙이는 방식이 작동하지 않는 반면,

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtPositioning
import QtQuick.Controls 2.15 as QQC2

이 코드에서 QQC2.Button을 추가하는 방식([qml+pyqt6] Can't get native control appearance - #2 by carl - Help - KDE Discuss 참조)은 작동하는 이유는 무엇인가요?

4개의 좋아요

이 주제는 2일 후 자동으로 닫혔습니다. 더 이상 답변이 허용되지 않습니다.