Documentation
¶
Overview ¶
Package core 为 feishu2md 提供核心配置和客户端功能 此文件处理配置管理,包括从环境变量和CLI参数加载配置
Package core - 环境变量配置文件加载器
Index ¶
- Variables
- func LoadEnvFile(filepath string) error
- func LoadEnvFileIfExists(filepath string) error
- type Client
- func (c *Client) DownloadImage(ctx context.Context, imgToken, outDir string) (string, error)
- func (c *Client) DownloadImageRaw(ctx context.Context, imgToken, imgDir string) (string, []byte, error)
- func (c *Client) GetAllChildNodes(ctx context.Context, spaceID, rootNodeToken string) ([]*Document, error)
- func (c *Client) GetChildNodes(ctx context.Context, spaceID, parentNodeToken string) ([]*Document, error)
- func (c *Client) GetDocxContent(ctx context.Context, docToken string) (*lark.DocxDocument, []*lark.DocxBlock, error)
- func (c *Client) GetDocxDocumentMeta(ctx context.Context, docToken string) (*lark.DocxDocument, error)
- func (c *Client) GetDocxTimes(ctx context.Context, docToken string) (createdAt *time.Time, updatedAt *time.Time, err error)
- func (c *Client) GetDriveFolderFileList(ctx context.Context, pageToken *string, folderToken *string) ([]*lark.GetDriveFileListRespFile, error)
- func (c *Client) GetWikiName(ctx context.Context, spaceID string) (string, error)
- func (c *Client) GetWikiNodeInfo(ctx context.Context, token string) (*lark.GetWikiNodeRespNode, error)
- func (c *Client) GetWikiNodeList(ctx context.Context, spaceID string, parentNodeToken *string) ([]*lark.GetWikiNodeListRespItem, error)
- type Config
- type Document
- type FeishuConfig
- type FeishuRateLimiter
- type OutputConfig
- type Parser
- func (p *Parser) ParseDocxBlock(b *lark.DocxBlock, indentLevel int) string
- func (p *Parser) ParseDocxBlockBullet(b *lark.DocxBlock, indentLevel int) string
- func (p *Parser) ParseDocxBlockCallout(b *lark.DocxBlock) string
- func (p *Parser) ParseDocxBlockGrid(b *lark.DocxBlock, indentLevel int) string
- func (p *Parser) ParseDocxBlockHeading(b *lark.DocxBlock, headingLevel int) string
- func (p *Parser) ParseDocxBlockImage(img *lark.DocxBlockImage) string
- func (p *Parser) ParseDocxBlockOrdered(b *lark.DocxBlock, indentLevel int) string
- func (p *Parser) ParseDocxBlockPage(b *lark.DocxBlock) string
- func (p *Parser) ParseDocxBlockQuoteContainer(b *lark.DocxBlock) string
- func (p *Parser) ParseDocxBlockTable(t *lark.DocxBlockTable) string
- func (p *Parser) ParseDocxBlockTableCell(b *lark.DocxBlock) string
- func (p *Parser) ParseDocxBlockText(b *lark.DocxBlockText) string
- func (p *Parser) ParseDocxContent(doc *lark.DocxDocument, blocks []*lark.DocxBlock) string
- func (p *Parser) ParseDocxTextElement(e *lark.DocxTextElement, inline bool) string
- func (p *Parser) ParseDocxTextElementTextRun(tr *lark.DocxTextElementTextRun) string
- func (p *Parser) ParseDocxWhatever(body *lark.DocBody) string
- type PicGoConfig
Constants ¶
This section is empty.
Variables ¶
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 ¶
LoadEnvFile 从指定路径加载环境变量配置文件 支持 .env 格式的配置文件
func LoadEnvFileIfExists ¶
LoadEnvFileIfExists 加载配置文件,如果文件不存在则忽略
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func (*Client) DownloadImage ¶
func (*Client) DownloadImageRaw ¶
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 (*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 (*Client) GetWikiName ¶
func (*Client) GetWikiNodeInfo ¶
func (*Client) GetWikiNodeList ¶
type Config ¶
type Config struct {
Feishu FeishuConfig // 飞书 API 配置
Output OutputConfig // 输出格式配置
PicGo PicGoConfig // PicGo 图床配置
}
Config 表示 feishu2md 应用程序的完整配置
func LoadConfig ¶
LoadConfig 加载配置,优先级:CLI参数 > 环境变量 > 默认值 此函数实现一个级联配置系统,每个源可以覆盖前一个源的设置
type Document ¶
type Document struct {
Token string // 文档令牌
NodeToken string // 节点令牌
Name string // 文档名称
Type string // 文档类型
ParentToken string // 父节点令牌
HasChild bool // 是否有子节点
}
Document 表示知识库文档节点信息
type FeishuConfig ¶
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次
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 (*Parser) ParseDocxBlockBullet ¶
func (*Parser) ParseDocxBlockCallout ¶
func (*Parser) ParseDocxBlockGrid ¶
func (*Parser) ParseDocxBlockHeading ¶
func (*Parser) ParseDocxBlockImage ¶
func (p *Parser) ParseDocxBlockImage(img *lark.DocxBlockImage) string
func (*Parser) ParseDocxBlockOrdered ¶
func (*Parser) ParseDocxBlockQuoteContainer ¶
func (*Parser) ParseDocxBlockTable ¶
func (p *Parser) ParseDocxBlockTable(t *lark.DocxBlockTable) string
func (*Parser) ParseDocxBlockTableCell ¶
func (*Parser) ParseDocxBlockText ¶
func (p *Parser) ParseDocxBlockText(b *lark.DocxBlockText) string
func (*Parser) ParseDocxContent ¶
func (*Parser) ParseDocxTextElement ¶
func (p *Parser) ParseDocxTextElement(e *lark.DocxTextElement, inline bool) string
func (*Parser) ParseDocxTextElementTextRun ¶
func (p *Parser) ParseDocxTextElementTextRun(tr *lark.DocxTextElementTextRun) string
type PicGoConfig ¶ added in v0.2.9
type PicGoConfig struct {
Enabled bool // 是否启用 PicGo 图床上传
}
PicGoConfig 包含 PicGo 图床配置