Documentation
¶
Index ¶
- Constants
- Variables
- func Apply[T Configurable](target *T, options ...Option[T]) error
- func ChompGeneric[T GenericString](text T) (prefix, suffix, content string)
- func CreateATXHeadingGeneric[T GenericString](text T, level int, closed bool) string
- func CreateInlineConverterGeneric[T GenericString](markupFn func() string) func(text T, parentTags map[string]bool) string
- func CreateUnderlinedHeadingGeneric[T GenericString](text T, level int) string
- func EscapeSpecialCharsGeneric[T GenericString](text T, config ClientConfig, parentTags map[string]bool) string
- func ExtractNewlinesGeneric[T GenericString](text T) (leadingNewlines string, content string, trailingNewlines string)
- func IsConflictingOptionsError(err error) bool
- func IsInvalidHTMLError(err error) bool
- func IsInvalidHeadingStyleError(err error) bool
- func IsInvalidNewlineStyleError(err error) bool
- func NormalizeWhitespace(selection *goquery.Selection) *goquery.Selection
- func NormalizeWhitespaceGeneric[T GenericString](text T, inPreBlock bool) string
- type Client
- type ClientConfig
- type ConfigOption
- func WithAutolinks(enabled bool) ConfigOption
- func WithBullets(bullets string) ConfigOption
- func WithCodeLanguage(language string) ConfigOption
- func WithCodeLanguageCallback(callback func(*goquery.Selection) string) ConfigOption
- func WithConvert(tags []string) ConfigOption
- func WithDefaultTitle(enabled bool) ConfigOption
- func WithEscapeAsterisks(enabled bool) ConfigOption
- func WithEscapeMisc(enabled bool) ConfigOption
- func WithEscapeUnderscores(enabled bool) ConfigOption
- func WithHeadingStyle(style string) ConfigOption
- func WithKeepInlineImagesIn(tags []string) ConfigOption
- func WithNewlineStyle(style string) ConfigOption
- func WithStrip(tags []string) ConfigOption
- func WithStripDocument(mode string) ConfigOption
- func WithStrongEmSymbol(symbol string) ConfigOption
- func WithSubSymbol(symbol string) ConfigOption
- func WithSupSymbol(symbol string) ConfigOption
- func WithTableInferHeader(enabled bool) ConfigOption
- func WithWrap(enabled bool) ConfigOption
- func WithWrapWidth(width int) ConfigOption
- type Configurable
- type ConversionContext
- type ConversionFunc
- type Converter
- type ConverterRegistry
- type Error
- type GenericString
- type GoquerySelection
- type HTMLElement
- type HTMLElementConverter
- type HTMLProcessor
- type HTMLTag
- type HTMLToMarkdownConverter
- type MarkdownText
- type MarkupOutput
- type Option
- type OptionValue
- type Pipe
- type Pipeline
- type RegisterKey
- type Rule
- type RuleEngine
- type TagConverterRegistry
Constants ¶
const ( // HeadingStyleATX はATXスタイルの見出し(例: # 見出し)を表します HeadingStyleATX = "atx" // HeadingStyleATXClosed はクローズドATXスタイルの見出し(例: # 見出し #)を表します HeadingStyleATXClosed = "atx_closed" // HeadingStyleUnderlined はアンダーラインスタイルの見出し(例: 見出し\n====)を表します HeadingStyleUnderlined = "underlined" // HeadingStyleSETEXT はHeadingStyleUnderlinedの別名です HeadingStyleSETEXT = HeadingStyleUnderlined )
見出しスタイル定数
const ( // NewlineStyleSpaces は空白2つを使った改行(例: 行末 \n)を表します NewlineStyleSpaces = "spaces" // NewlineStyleBackslash はバックスラッシュを使った改行(例: 行末\\\n)を表します NewlineStyleBackslash = "backslash" )
改行スタイル定数
const ( // SymbolAsterisk はアスタリスク(*)を使った強調を表します SymbolAsterisk = "*" // SymbolUnderscore はアンダースコア(_)を使った強調を表します SymbolUnderscore = "_" )
強調スタイル定数
const ( // StripDocumentNone はドキュメントの先頭/末尾の改行を削除しないことを表します StripDocumentNone = "none" // StripDocumentLSTRIP はドキュメントの先頭の改行を削除することを表します StripDocumentLSTRIP = "lstrip" // StripDocumentRSTRIP はドキュメントの末尾の改行を削除することを表します StripDocumentRSTRIP = "rstrip" // StripDocumentSTRIP はドキュメントの先頭と末尾の改行を削除することを表します StripDocumentSTRIP = "strip" )
ドキュメントストリップスタイル定数
const ( // DefaultAutolinks はautolinksのデフォルト値です DefaultAutolinks = true // DefaultBullets は箇条書きのデフォルト値です DefaultBullets = "*+-" // DefaultCodeLanguage はコードブロックの言語のデフォルト値です DefaultCodeLanguage = "" // DefaultTitle はデフォルトタイトルのデフォルト値です DefaultDefaultTitle = false // DefaultEscapeAsterisks はアスタリスクエスケープのデフォルト値です DefaultEscapeAsterisks = true // DefaultEscapeUnderscores はアンダースコアエスケープのデフォルト値です DefaultEscapeUnderscores = true // DefaultEscapeMisc はその他の文字エスケープのデフォルト値です DefaultEscapeMisc = false // DefaultHeadingStyle は見出しスタイルのデフォルト値です DefaultHeadingStyle = HeadingStyleUnderlined // DefaultNewlineStyle は改行スタイルのデフォルト値です DefaultNewlineStyle = NewlineStyleSpaces // DefaultStrongEmSymbol は強調シンボルのデフォルト値です DefaultStrongEmSymbol = SymbolAsterisk // DefaultSubSymbol はsubscriptシンボルのデフォルト値です DefaultSubSymbol = "" // DefaultSupSymbol はsuperscriptシンボルのデフォルト値です DefaultSupSymbol = "" // DefaultTableInferHeader はテーブルヘッダー推論のデフォルト値です DefaultTableInferHeader = false // DefaultWrap はテキストラップのデフォルト値です DefaultWrap = false // DefaultWrapWidth はラップ幅のデフォルト値です DefaultWrapWidth = 80 // DefaultStripDocument はドキュメントストリップのデフォルト値です DefaultStripDocument = StripDocumentSTRIP )
デフォルト値
const ( // RegexConvertHeading は見出し変換用の正規表現パターン名です RegexConvertHeading = "convert_h(\\d+)" // RegexLineWithContent は内容を含む行用の正規表現パターン名です RegexLineWithContent = "^(.*)" // RegexWhitespace は空白文字用の正規表現パターン名です RegexWhitespace = "[\\t ]+" // RegexAllWhitespace はすべての空白文字用の正規表現パターン名です RegexAllWhitespace = "[\\t \\r\\n]+" // RegexNewlineWhitespace は改行と空白文字用の正規表現パターン名です RegexNewlineWhitespace = "[\\t \\r\\n]*[\\r\\n][\\t \\r\\n]*" // RegexHTMLHeading はHTML見出し用の正規表現パターン名です RegexHTMLHeading = "h(\\d+)" // RegexMakeConvertFnName は変換関数名作成用の正規表現パターン名です RegexMakeConvertFnName = "[\\[\\]:-]" // RegexExtractNewlines は改行抽出用の正規表現パターン名です // Python版の正規表現: r'^(\n*)((?:.*[^\n])?)(n*)$' RegexExtractNewlines = "^(\\n*)((?:.*[^\\n])?)?(\\n*)$" // RegexEscapeMiscChars はその他の文字エスケープ用の正規表現パターン名です RegexEscapeMiscChars = "([\\]\\\\&<`[>~=+|])" // RegexEscapeMiscDashSequences はダッシュシーケンスエスケープ用の正規表現パターン名です RegexEscapeMiscDashSequences = "(\\s|^)(-+(?:\\s|$))" // RegexEscapeMiscHashes はハッシュエスケープ用の正規表現パターン名です RegexEscapeMiscHashes = "(\\s|^)(#{1,6}(?:\\s|$))" // RegexEscapeMiscListItems はリストアイテムエスケープ用の正規表現パターン名です RegexEscapeMiscListItems = "((?:\\s|^)[0-9]{1,9})([.)](?:\\s|$))" )
正規表現パターン名(実際の正規表現はutils.goで定義)
Variables ¶
var ( // ErrInvalidHeadingStyle は無効な見出しスタイルが指定された場合に返されます ErrInvalidHeadingStyle = errors.New("invalid heading style") // ErrInvalidNewlineStyle は無効な改行スタイルが指定された場合に返されます ErrInvalidNewlineStyle = errors.New("invalid newline style") // ErrInvalidStrongEmSymbol は無効な強調シンボルが指定された場合に返されます ErrInvalidStrongEmSymbol = errors.New("invalid strong/em symbol") // ErrInvalidStripDocument は無効なドキュメントストリップオプションが指定された場合に返されます ErrInvalidStripDocument = errors.New("invalid strip document option") // ErrConflictingOptions は競合するオプションが指定された場合に返されます ErrConflictingOptions = errors.New("conflicting options: cannot specify both strip and convert") // ErrInvalidHTML は無効なHTMLが与えられた場合に返されます ErrInvalidHTML = errors.New("invalid HTML") // ErrInvalidOption は無効なオプションが指定された場合に返されます ErrInvalidOption = errors.New("invalid option") // ErrInvalidWrapWidth は無効なラップ幅が指定された場合に返されます ErrInvalidWrapWidth = errors.New("invalid wrap width") )
定義済みエラー
Functions ¶
func Apply ¶
func Apply[T Configurable](target *T, options ...Option[T]) error
Apply はオプションをターゲットに適用
func ChompGeneric ¶
func ChompGeneric[T GenericString](text T) (prefix, suffix, content string)
ChompGeneric はインラインタグ内のテキストの先頭と末尾の空白を処理します あらゆる文字列型に対応するジェネリック版のchomp関数です
func CreateATXHeadingGeneric ¶
func CreateATXHeadingGeneric[T GenericString](text T, level int, closed bool) string
CreateATXHeadingGeneric はATX形式の見出しを作成します あらゆる文字列型に対応するジェネリック版のcreateATXHeading関数です
func CreateInlineConverterGeneric ¶
func CreateInlineConverterGeneric[T GenericString](markupFn func() string) func(text T, parentTags map[string]bool) string
CreateInlineConverterGeneric はインライン要素の変換関数を生成します あらゆる文字列型に対応するジェネリック版のcreateInlineConverter関数です
func CreateUnderlinedHeadingGeneric ¶
func CreateUnderlinedHeadingGeneric[T GenericString](text T, level int) string
CreateUnderlinedHeadingGeneric はアンダーライン形式の見出しを作成します あらゆる文字列型に対応するジェネリック版のcreateUnderlinedHeading関数です
func EscapeSpecialCharsGeneric ¶
func EscapeSpecialCharsGeneric[T GenericString](text T, config ClientConfig, parentTags map[string]bool) string
EscapeSpecialCharsGeneric は特殊文字をエスケープします あらゆる文字列型に対応するジェネリック版のescapeSpecialChars関数です
func ExtractNewlinesGeneric ¶
func ExtractNewlinesGeneric[T GenericString](text T) (leadingNewlines string, content string, trailingNewlines string)
ExtractNewlinesGeneric は文字列から先頭の改行、本文、末尾の改行を抽出します あらゆる文字列型に対応するジェネリック版のextractNewlines関数です
func IsConflictingOptionsError ¶
IsConflictingOptionsError はエラーがErrConflictingOptionsであるかどうかを判定します
func IsInvalidHTMLError ¶
IsInvalidHTMLError はエラーがErrInvalidHTMLであるかどうかを判定します
func IsInvalidHeadingStyleError ¶
IsInvalidHeadingStyleError はエラーがErrInvalidHeadingStyleであるかどうかを判定します
func IsInvalidNewlineStyleError ¶
IsInvalidNewlineStyleError はエラーがErrInvalidNewlineStyleであるかどうかを判定します
func NormalizeWhitespace ¶
NormalizeWhitespace はテキストの空白を正規化するパイプ
func NormalizeWhitespaceGeneric ¶
func NormalizeWhitespaceGeneric[T GenericString](text T, inPreBlock bool) string
NormalizeWhitespaceGeneric は空白文字を正規化します あらゆる文字列型に対応するジェネリック版のnormalizeWhitespace関数です
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client はジェネリクスを活用したHTMLからMarkdownへの変換クライアント
func (*Client) Markdownify ¶
Markdownify はHTMLをMarkdownに変換
func (*Client) MarkdownifyToMarkdownText ¶
func (c *Client) MarkdownifyToMarkdownText(html string) (MarkdownText, error)
MarkdownifyToMarkdownText はHTMLをMarkdownTextに変換
func (*Client) WithConverter ¶
WithConverter は指定したコンバーターを使用するようクライアントを設定
type ClientConfig ¶
type ClientConfig struct { // Autolinks はaタグの内容がhrefと一致する場合に自動リンクスタイルを使用するかどうかを指定します Autolinks bool // Bullets は使用する箇条書きスタイルを指定します Bullets string // CodeLanguage はpreセクションで使用する言語を指定します CodeLanguage string // CodeLanguageCallback はコード言語を抽出するためのコールバック関数です CodeLanguageCallback func(selection *goquery.Selection) string // Convert は変換するタグのリストを指定します Convert []string // Strip は変換から除外するタグのリストを指定します Strip []string // DefaultTitle はタイトルが指定されていない場合にhrefをリンクのタイトルとして使用するかどうかを指定します DefaultTitle bool // EscapeAsterisks はテキスト内のアスタリスクをエスケープするかどうかを指定します EscapeAsterisks bool // EscapeUnderscores はテキスト内のアンダースコアをエスケープするかどうかを指定します EscapeUnderscores bool // EscapeMisc はその他の特殊文字をエスケープするかどうかを指定します EscapeMisc bool // HeadingStyle は見出しの変換スタイルを指定します HeadingStyle string // KeepInlineImagesIn はインライン画像を保持するタグのリストを指定します KeepInlineImagesIn []string // NewlineStyle は改行スタイルを指定します NewlineStyle string // StripDocument はドキュメントの先頭と末尾の改行をどのように扱うかを指定します StripDocument string // StrongEmSymbol は強調に使用するシンボルを指定します StrongEmSymbol string // SubSymbol はsubscriptに使用するシンボルを指定します SubSymbol string // SupSymbol はsuperscriptに使用するシンボルを指定します SupSymbol string // TableInferHeader はテーブルにヘッダーが存在しない場合に最初の行をヘッダーとして扱うかどうかを指定します TableInferHeader bool // Wrap はテキスト段落をラップするかどうかを指定します Wrap bool // WrapWidth はラップする幅を指定します WrapWidth int }
ClientConfig はクライアントの設定を保持します
type ConfigOption ¶
type ConfigOption = Option[ClientConfig]
ConfigOption はClientConfig専用のオプション
func WithAutolinks ¶
func WithAutolinks(enabled bool) ConfigOption
WithAutolinks は自動リンクオプションを設定するオプション
func WithCodeLanguage ¶
func WithCodeLanguage(language string) ConfigOption
WithCodeLanguage はデフォルトのコード言語を設定するオプション
func WithCodeLanguageCallback ¶
func WithCodeLanguageCallback(callback func(*goquery.Selection) string) ConfigOption
WithCodeLanguageCallback はコード言語を決定するためのコールバック関数を設定するオプション
func WithDefaultTitle ¶
func WithDefaultTitle(enabled bool) ConfigOption
WithDefaultTitle はリンクのデフォルトタイトルを有効にするオプション
func WithEscapeAsterisks ¶
func WithEscapeAsterisks(enabled bool) ConfigOption
WithEscapeAsterisks はアスタリスクのエスケープを設定するオプション
func WithEscapeMisc ¶
func WithEscapeMisc(enabled bool) ConfigOption
WithEscapeMisc はその他の文字のエスケープを設定するオプション
func WithEscapeUnderscores ¶
func WithEscapeUnderscores(enabled bool) ConfigOption
WithEscapeUnderscores はアンダースコアのエスケープを設定するオプション
func WithHeadingStyle ¶
func WithHeadingStyle(style string) ConfigOption
WithHeadingStyle は見出しスタイルを設定するオプション
func WithKeepInlineImagesIn ¶
func WithKeepInlineImagesIn(tags []string) ConfigOption
WithKeepInlineImagesIn はインライン画像を維持するタグのリストを設定するオプション
func WithNewlineStyle ¶
func WithNewlineStyle(style string) ConfigOption
WithNewlineStyle は改行スタイルを設定するオプション
func WithStripDocument ¶
func WithStripDocument(mode string) ConfigOption
WithStripDocument はドキュメント改行の処理方法を設定するオプション
func WithStrongEmSymbol ¶
func WithStrongEmSymbol(symbol string) ConfigOption
WithStrongEmSymbol は強調シンボルを設定するオプション
func WithSubSymbol ¶
func WithSubSymbol(symbol string) ConfigOption
WithSubSymbol はsubscript用のシンボルを設定するオプション
func WithSupSymbol ¶
func WithSupSymbol(symbol string) ConfigOption
WithSupSymbol はsuperscript用のシンボルを設定するオプション
func WithTableInferHeader ¶
func WithTableInferHeader(enabled bool) ConfigOption
WithTableInferHeader はテーブルのヘッダー推論を設定するオプション
type ConversionContext ¶
type ConversionContext struct { Text string ParentTags map[string]bool Config ClientConfig }
ConversionContext は変換コンテキスト情報を保持する
type ConversionFunc ¶
type ConversionFunc[T GoquerySelection, R MarkupOutput] func(input T, context ConversionContext) R
ConversionFunc は HTMLElement から MarkupOutput への変換関数
type Converter ¶
type Converter[Input GoquerySelection, Output MarkupOutput] interface { Convert(input Input) Output }
Converter は入力タイプInputから出力タイプOutputへの変換を行うジェネリックインターフェース
type ConverterRegistry ¶
type ConverterRegistry[K RegisterKey, V any] struct { // contains filtered or unexported fields }
ConverterRegistry はHTML要素名と変換関数のマッピングを型安全に管理
func NewConverterRegistry ¶
func NewConverterRegistry[K RegisterKey, V any]() *ConverterRegistry[K, V]
NewConverterRegistry は新しいレジストリを作成します
func (*ConverterRegistry[K, V]) Get ¶
func (r *ConverterRegistry[K, V]) Get(key K) (V, bool)
Get は登録された変換関数を取得
func (*ConverterRegistry[K, V]) Keys ¶
func (r *ConverterRegistry[K, V]) Keys() []K
Keys は登録されているすべてのキーを取得
func (*ConverterRegistry[K, V]) Register ¶
func (r *ConverterRegistry[K, V]) Register(key K, converter V)
Register は変換関数を登録
type Error ¶
Error はmarkdownify処理中に発生するエラーを表します
func NewMarkdownifyError ¶
NewMarkdownifyError は新しいErrorを作成します
type GoquerySelection ¶
GoquerySelection は*goquery.Selection専用の制約を提供
type HTMLElementConverter ¶
type HTMLElementConverter = ConversionFunc[*goquery.Selection, string]
HTMLElementConverter はHTML要素を変換するジェネリック関数型
type HTMLProcessor ¶
type HTMLProcessor struct {
// contains filtered or unexported fields
}
HTMLProcessor はHTML要素の処理パイプライン
func NewHTMLProcessor ¶
func NewHTMLProcessor(pipes ...Pipe[*goquery.Selection]) *HTMLProcessor
NewHTMLProcessor は新しいHTML処理パイプラインを作成
type HTMLTag ¶
type HTMLTag string
HTMLTag は HTML タグを型安全に表現します
const ( TagParagraph HTMLTag = "p" TagDiv HTMLTag = "div" TagSection HTMLTag = "section" TagArticle HTMLTag = "article" TagBlockquote HTMLTag = "blockquote" TagHeading1 HTMLTag = "h1" TagHeading2 HTMLTag = "h2" TagHeading3 HTMLTag = "h3" TagHeading4 HTMLTag = "h4" TagHeading5 HTMLTag = "h5" TagHeading6 HTMLTag = "h6" TagAnchor HTMLTag = "a" TagBold HTMLTag = "b" TagStrong HTMLTag = "strong" TagEm HTMLTag = "em" TagItalic HTMLTag = "i" TagCode HTMLTag = "code" TagBreak HTMLTag = "br" TagImage HTMLTag = "img" TagDel HTMLTag = "del" TagStrike HTMLTag = "s" TagSub HTMLTag = "sub" TagSup HTMLTag = "sup" TagKbd HTMLTag = "kbd" TagSamp HTMLTag = "samp" TagList HTMLTag = "ul" TagOrderedList HTMLTag = "ol" TagListItem HTMLTag = "li" TagDL HTMLTag = "dl" TagDT HTMLTag = "dt" TagDD HTMLTag = "dd" TagTable HTMLTag = "table" TagTableRow HTMLTag = "tr" TagTableCell HTMLTag = "td" TagTableHeader HTMLTag = "th" TagCaption HTMLTag = "caption" TagFigCaption HTMLTag = "figcaption" TagHR HTMLTag = "hr" TagPre HTMLTag = "pre" TagScript HTMLTag = "script" TagStyle HTMLTag = "style" TagMeta HTMLTag = "meta" TagLink HTMLTag = "link" )
HTML タグを列挙型のように定義
func StringToHTMLTag ¶
StringToHTMLTag は文字列からHTMLTagに変換
type HTMLToMarkdownConverter ¶
type HTMLToMarkdownConverter struct {
// contains filtered or unexported fields
}
HTMLToMarkdownConverter はHTML(goquery.Selection)からMarkdownテキストへの変換を実装
func NewHTMLToMarkdownConverter ¶
func NewHTMLToMarkdownConverter(config ClientConfig) *HTMLToMarkdownConverter
NewHTMLToMarkdownConverter は新しいコンバーターを作成
func (*HTMLToMarkdownConverter) Convert ¶
func (c *HTMLToMarkdownConverter) Convert(selection *goquery.Selection) MarkdownText
Convert はHTML全体をMarkdownに変換(Converter[*goquery.Selection, MarkdownText]インターフェースを実装)
type OptionValue ¶
type OptionValue[T comparable] struct { // contains filtered or unexported fields }
OptionValue はオプション値を型安全に扱うための型
func NewOptionValue ¶
func NewOptionValue[T comparable](defaultValue T) OptionValue[T]
NewOptionValue は新しいオプション値を作成
type Pipe ¶
type Pipe[T any] func(T) T
Pipe は変換パイプラインの一部を表す
func RemoveIgnoredElements ¶
func RemoveIgnoredElements(config ClientConfig) Pipe[*goquery.Selection]
RemoveIgnoredElements は無視すべき要素を削除するパイプ
type Pipeline ¶
type Pipeline[T any] struct { // contains filtered or unexported fields }
Pipeline は複数のPipeを組み合わせた処理のチェーン
type RuleEngine ¶
RuleEngine は複数のルールを管理し適用する
func NewRuleEngine ¶
func NewRuleEngine[T any, R any](fallback func(T) R) *RuleEngine[T, R]
NewRuleEngine は新しいルールエンジンを作成
func (*RuleEngine[T, R]) AddRule ¶
func (p *RuleEngine[T, R]) AddRule(match func(T) bool, apply func(T) R)
AddRule はルールを追加
type TagConverterRegistry ¶
type TagConverterRegistry struct {
// contains filtered or unexported fields
}
TagConverterRegistry は型安全なタグと変換関数のマッピングを提供
func NewTagConverterRegistry ¶
func NewTagConverterRegistry() *TagConverterRegistry
NewTagConverterRegistry は HTML タグ専用のレジストリを作成
func (*TagConverterRegistry) Get ¶
func (r *TagConverterRegistry) Get(tag HTMLTag) (HTMLElementConverter, bool)
Get は登録された変換関数を取得
func (*TagConverterRegistry) GetByString ¶
func (r *TagConverterRegistry) GetByString(tagName string) (HTMLElementConverter, bool)
GetByString は文字列からHTMLTagに変換して関数を取得
func (*TagConverterRegistry) Register ¶
func (r *TagConverterRegistry) Register(tag HTMLTag, converter HTMLElementConverter)
Register は変換関数を登録