core

package
v0.2.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 10, 2026 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Package core 为 feishu2md 提供核心配置和客户端功能 此文件处理配置管理,包括从环境变量和CLI参数加载配置

Package core - 环境变量配置文件加载器

Index

Constants

This section is empty.

Variables

View Source
var DocxCodeLang2MdStr = map[lark.DocxCodeLanguage]string{
	lark.DocxCodeLanguagePlainText:    "",
	lark.DocxCodeLanguageABAP:         "abap",
	lark.DocxCodeLanguageAda:          "ada",
	lark.DocxCodeLanguageApache:       "apache",
	lark.DocxCodeLanguageApex:         "apex",
	lark.DocxCodeLanguageAssembly:     "assembly",
	lark.DocxCodeLanguageBash:         "bash",
	lark.DocxCodeLanguageCSharp:       "csharp",
	lark.DocxCodeLanguageCPlusPlus:    "cpp",
	lark.DocxCodeLanguageC:            "c",
	lark.DocxCodeLanguageCOBOL:        "cobol",
	lark.DocxCodeLanguageCSS:          "css",
	lark.DocxCodeLanguageCoffeeScript: "coffeescript",
	lark.DocxCodeLanguageD:            "d",
	lark.DocxCodeLanguageDart:         "dart",
	lark.DocxCodeLanguageDelphi:       "delphi",
	lark.DocxCodeLanguageDjango:       "django",
	lark.DocxCodeLanguageDockerfile:   "dockerfile",
	lark.DocxCodeLanguageErlang:       "erlang",
	lark.DocxCodeLanguageFortran:      "fortran",
	lark.DocxCodeLanguageFoxPro:       "foxpro",
	lark.DocxCodeLanguageGo:           "go",
	lark.DocxCodeLanguageGroovy:       "groovy",
	lark.DocxCodeLanguageHTML:         "html",
	lark.DocxCodeLanguageHTMLBars:     "htmlbars",
	lark.DocxCodeLanguageHTTP:         "http",
	lark.DocxCodeLanguageHaskell:      "haskell",
	lark.DocxCodeLanguageJSON:         "json",
	lark.DocxCodeLanguageJava:         "java",
	lark.DocxCodeLanguageJavaScript:   "javascript",
	lark.DocxCodeLanguageJulia:        "julia",
	lark.DocxCodeLanguageKotlin:       "kotlin",
	lark.DocxCodeLanguageLateX:        "latex",
	lark.DocxCodeLanguageLisp:         "lisp",
	lark.DocxCodeLanguageLogo:         "logo",
	lark.DocxCodeLanguageLua:          "lua",
	lark.DocxCodeLanguageMATLAB:       "matlab",
	lark.DocxCodeLanguageMakefile:     "makefile",
	lark.DocxCodeLanguageMarkdown:     "markdown",
	lark.DocxCodeLanguageNginx:        "nginx",
	lark.DocxCodeLanguageObjective:    "objectivec",
	lark.DocxCodeLanguageOpenEdgeABL:  "openedge-abl",
	lark.DocxCodeLanguagePHP:          "php",
	lark.DocxCodeLanguagePerl:         "perl",
	lark.DocxCodeLanguagePostScript:   "postscript",
	lark.DocxCodeLanguagePower:        "powershell",
	lark.DocxCodeLanguageProlog:       "prolog",
	lark.DocxCodeLanguageProtoBuf:     "protobuf",
	lark.DocxCodeLanguagePython:       "python",
	lark.DocxCodeLanguageR:            "r",
	lark.DocxCodeLanguageRPG:          "rpg",
	lark.DocxCodeLanguageRuby:         "ruby",
	lark.DocxCodeLanguageRust:         "rust",
	lark.DocxCodeLanguageSAS:          "sas",
	lark.DocxCodeLanguageSCSS:         "scss",
	lark.DocxCodeLanguageSQL:          "sql",
	lark.DocxCodeLanguageScala:        "scala",
	lark.DocxCodeLanguageScheme:       "scheme",
	lark.DocxCodeLanguageScratch:      "scratch",
	lark.DocxCodeLanguageShell:        "shell",
	lark.DocxCodeLanguageSwift:        "swift",
	lark.DocxCodeLanguageThrift:       "thrift",
	lark.DocxCodeLanguageTypeScript:   "typescript",
	lark.DocxCodeLanguageVBScript:     "vbscript",
	lark.DocxCodeLanguageVisual:       "vbnet",
	lark.DocxCodeLanguageXML:          "xml",
	lark.DocxCodeLanguageYAML:         "yaml",
}

Functions

func LoadEnvFile

func LoadEnvFile(filepath string) error

LoadEnvFile 从指定路径加载环境变量配置文件 支持 .env 格式的配置文件

func LoadEnvFileIfExists

func LoadEnvFileIfExists(filepath string) error

LoadEnvFileIfExists 加载配置文件,如果文件不存在则忽略

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(appID, appSecret string) *Client

func (*Client) DownloadImage

func (c *Client) DownloadImage(ctx context.Context, imgToken, outDir string) (string, error)

func (*Client) DownloadImageRaw

func (c *Client) DownloadImageRaw(ctx context.Context, imgToken, imgDir string) (string, []byte, error)

func (*Client) GetAllChildNodes

func (c *Client) GetAllChildNodes(ctx context.Context, spaceID, rootNodeToken string) ([]*Document, error)

GetAllChildNodes 递归获取指定父节点下的所有子节点(包括子节点的子节点)

func (*Client) GetChildNodes

func (c *Client) GetChildNodes(ctx context.Context, spaceID, parentNodeToken string) ([]*Document, error)

GetChildNodes 获取指定父节点下的所有直接子节点

func (*Client) GetDocxContent

func (c *Client) GetDocxContent(ctx context.Context, docToken string) (*lark.DocxDocument, []*lark.DocxBlock, error)

func (*Client) GetDocxDocumentMeta

func (c *Client) GetDocxDocumentMeta(ctx context.Context, docToken string) (*lark.DocxDocument, error)

GetDocxDocumentMeta 仅获取文档的基本信息(不拉取块列表),用于快速判断修订版本

func (*Client) GetDocxTimes

func (c *Client) GetDocxTimes(ctx context.Context, docToken string) (createdAt *time.Time, updatedAt *time.Time, err error)

GetDocxTimes 获取 docx 文档的创建时间与最近修改时间 返回值为指针,若对应字段不可用则为 nil

func (*Client) GetDriveFolderFileList

func (c *Client) GetDriveFolderFileList(ctx context.Context, pageToken *string, folderToken *string) ([]*lark.GetDriveFileListRespFile, error)

func (*Client) GetWikiName

func (c *Client) GetWikiName(ctx context.Context, spaceID string) (string, error)

func (*Client) GetWikiNodeInfo

func (c *Client) GetWikiNodeInfo(ctx context.Context, token string) (*lark.GetWikiNodeRespNode, error)

func (*Client) GetWikiNodeList

func (c *Client) GetWikiNodeList(ctx context.Context, spaceID string, parentNodeToken *string) ([]*lark.GetWikiNodeListRespItem, error)

type Config

type Config struct {
	Feishu FeishuConfig // 飞书 API 配置
	Output OutputConfig // 输出格式配置
	PicGo  PicGoConfig  // PicGo 图床配置
}

Config 表示 feishu2md 应用程序的完整配置

func LoadConfig

func LoadConfig(appId, appSecret string) (*Config, error)

LoadConfig 加载配置,优先级:CLI参数 > 环境变量 > 默认值 此函数实现一个级联配置系统,每个源可以覆盖前一个源的设置

func NewConfig

func NewConfig(appId, appSecret string) *Config

NewConfig 使用提供的应用凭据和默认输出设置创建新配置

type Document

type Document struct {
	Token       string // 文档令牌
	NodeToken   string // 节点令牌
	Name        string // 文档名称
	Type        string // 文档类型
	ParentToken string // 父节点令牌
	HasChild    bool   // 是否有子节点
}

Document 表示知识库文档节点信息

type FeishuConfig

type FeishuConfig struct {
	AppId     string // 飞书应用ID
	AppSecret string // 飞书应用密钥
}

FeishuConfig 包含飞书/LarkSuite API 凭据

type FeishuRateLimiter added in v0.1.8

type FeishuRateLimiter struct {
	// contains filtered or unexported fields
}

FeishuRateLimiter 飞书API限流器 限制: 100次/分钟 且 5次/秒

func NewFeishuRateLimiter added in v0.1.8

func NewFeishuRateLimiter() *FeishuRateLimiter

NewFeishuRateLimiter 创建飞书API限流器

func (*FeishuRateLimiter) Allow added in v0.1.8

func (l *FeishuRateLimiter) Allow() bool

Allow 检查是否可以立即执行(不等待)

func (*FeishuRateLimiter) AllowN added in v0.1.8

func (l *FeishuRateLimiter) AllowN(n int) bool

AllowN 检查是否可以立即执行N次

func (*FeishuRateLimiter) Wait added in v0.1.8

func (l *FeishuRateLimiter) Wait(ctx context.Context) error

Wait 等待直到可以执行飞书API请求 必须同时满足两个限流器的条件

func (*FeishuRateLimiter) WaitN added in v0.1.8

func (l *FeishuRateLimiter) WaitN(ctx context.Context, n int) error

WaitN 等待N个令牌

type OutputConfig

type OutputConfig struct {
	OutputDir       string // 文档输出目录
	ImageDir        string // 存储下载图片的目录
	TitleAsFilename bool   // 使用文档标题作为文件名而不是令牌
	UseHTMLTags     bool   // 使用HTML标签而不是markdown进行某些格式化
	SkipImgDownload bool   // 跳过下载图片并保留原始链接
	NoBodyTitle     bool   // 禁用正文开头的 H1 标题(因为 frontmatter 已包含 title)
}

OutputConfig 包含文档输出格式设置

type Parser

type Parser struct {
	ImgTokens []string
	// contains filtered or unexported fields
}

func NewParser

func NewParser(config OutputConfig) *Parser

func (*Parser) ParseDocxBlock

func (p *Parser) ParseDocxBlock(b *lark.DocxBlock, indentLevel int) string

func (*Parser) ParseDocxBlockBullet

func (p *Parser) ParseDocxBlockBullet(b *lark.DocxBlock, indentLevel int) string

func (*Parser) ParseDocxBlockCallout

func (p *Parser) ParseDocxBlockCallout(b *lark.DocxBlock) string

func (*Parser) ParseDocxBlockGrid

func (p *Parser) ParseDocxBlockGrid(b *lark.DocxBlock, indentLevel int) string

func (*Parser) ParseDocxBlockHeading

func (p *Parser) ParseDocxBlockHeading(b *lark.DocxBlock, headingLevel int) string

func (*Parser) ParseDocxBlockImage

func (p *Parser) ParseDocxBlockImage(img *lark.DocxBlockImage) string

func (*Parser) ParseDocxBlockOrdered

func (p *Parser) ParseDocxBlockOrdered(b *lark.DocxBlock, indentLevel int) string

func (*Parser) ParseDocxBlockPage

func (p *Parser) ParseDocxBlockPage(b *lark.DocxBlock) string

func (*Parser) ParseDocxBlockQuoteContainer

func (p *Parser) ParseDocxBlockQuoteContainer(b *lark.DocxBlock) string

func (*Parser) ParseDocxBlockTable

func (p *Parser) ParseDocxBlockTable(t *lark.DocxBlockTable) string

func (*Parser) ParseDocxBlockTableCell

func (p *Parser) ParseDocxBlockTableCell(b *lark.DocxBlock) string

func (*Parser) ParseDocxBlockText

func (p *Parser) ParseDocxBlockText(b *lark.DocxBlockText) string

func (*Parser) ParseDocxContent

func (p *Parser) ParseDocxContent(doc *lark.DocxDocument, blocks []*lark.DocxBlock) string

func (*Parser) ParseDocxTextElement

func (p *Parser) ParseDocxTextElement(e *lark.DocxTextElement, inline bool) string

func (*Parser) ParseDocxTextElementTextRun

func (p *Parser) ParseDocxTextElementTextRun(tr *lark.DocxTextElementTextRun) string

func (*Parser) ParseDocxWhatever

func (p *Parser) ParseDocxWhatever(body *lark.DocBody) string

type PicGoConfig added in v0.2.9

type PicGoConfig struct {
	Enabled bool // 是否启用 PicGo 图床上传
}

PicGoConfig 包含 PicGo 图床配置

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL