インスタンスプロパティ


markdownSourcePosition


Markdown ソースの位置属性にアクセスするためのプロパティ。


iOS 16.0+ iPadOS 16.0+ macOS 13.0+ Mac Catalyst 16.0+

tvOS 16.0+ watchOS 9.0+ visionOS 1.0+ Xcode 14.0+

let markdownSourcePosition: AttributeScopes .FoundationAttributes.MarkdownSourcePositionAttribute





議論


この属性は、ソース内のマークアップ文字を省略して、一連の属性付きテキストが開始および終了する Markdown のソース内の位置を示します。たとえば、ソース文字列"This is *emphaized*." を解析した後、emhasized (強調された) テキストの Markdown ソースの位置は列 10 から始まります。このインデックスは、"*" 書式設定文字ではなく"e" 文字です。


ヒント


AttributedString.MarkdownSourcePosition は、行と列のプロパティに 1 から始まるカウントを使用します。列の場合、値は UTF-8 インデックスを表します。したがって、複数バイト文字の場合、列は文字の最初のバイトになります。



Markdown テキストから解析された属性付き文字列には、AttributedString イニシャライザに提供された AttributedString.MarkdownParsingOptionsapplySourcePositionAttributes 値が true の場合にのみ、この属性が含まれます。



以下の例では、markdown ソース文字列には、AttributedString でサポートされているいくつかの形式の Markdown 形式が含まれており、これには、二重アスタリスクが適用された StrongEmphaized インライン提示意図が含まれます。この例ではソース文字列を解析し、appliesSourcePositionAttributes オプションを有効にします。次に、この例は属性付き文字列の実行をループし、markdownSourcePosition 属性と、その値が StrongEmphaized である inlinePresentationIntent の両方を含む実行を探します。そのような実行が見つかった場合は、ソース位置属性と属性付きテキストを出力します。



  1. let markdown = "Examples of *emphasis*, **strong emphasis**, and [link](https://example.com)."
  2. let options = AttributedString.MarkdownParsingOptions(appliesSourcePositionAttributes:true)
  3. if let attString = try? AttributedString(markdown: markdown, options: options) {
  4. for run in attString.runs {
  5. if let sourcePosition = run.markdownSourcePosition,
  6. let sourceRange = Range(sourcePosition, in: markdown),
  7. let presentationIntent = run.inlinePresentationIntent,
  8. presentationIntent.contains(.stronglyEmphasized) {
  9. print("Found strong emphasis: \(sourcePosition), text: '\(markdown[sourceRange])'")
  10. }
  11. }
  12. }
  13. // Prints: Found strong emphasis: MarkdownSourcePosition(startLine: 1, startColumn: 27, endLine: 1, endColumn: 41, startOffsets: Optional(Foundation.AttributedString.MarkdownSourcePosition.Offsets(utf8: 26, utf16: 26, utf8NextCodePoint: 27, utf16CurrentCodePointLength: 1)), endOffsets: Optional(Foundation.AttributedString.MarkdownSourcePosition.Offsets(utf8: 40, utf16: 40, utf8NextCodePoint: 41, utf16CurrentCodePointLength: 1))), text: 'strong emphasis'


これは、AttributedString.MarkdownSourcePosition と Markdown ソース文字列から範囲を作成する Range のコンビニエンスイニシャライザ init(_:in:) を使用します。range(範囲)を操作する方が、AttributedString.MarkdownSourcePosition の開始位置プロパティと終了位置プロパティを操作するよりも便利な場合があります。






以下も見よ


Markdown ソースの位置属性の使用


enum AttributeScopes.FoundationAttributes.MarkdownSourcePositionAttribute

Markdown ソースの位置を属性として使用するための型。


















トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ