@ effect/ github - 参考
GitHub的"问题参考语法"作为纯函数: 三门方言中9个收尾关键词真实工具写出——以正文写出,每行1个参考,一行一行一并命名出数个问题. 串入,值出. 没有服务,没有层次,没有客户端,没有网络,也没有依赖图中的octokit: effect 是唯一的对等方,而且根本没有运行时间依赖关系.
预
1.0.0。 。 。 . 此软件包是@effected/*在稳定基础上建造的工具包 效应v4(effect~4.1.0) 并仍在0.x发展。 稳定效果 制作一个工具箱1.0.0可能,不是自动的。 为了保持你的effect财务报告和审定财务报表@effect/*该工具包在线上构建和测试、安装@effected/pnpm-plugin-effected。 。 。 .稳定:不稳定. 此软件包的 API 表面尚未考虑 完成并可能改变
0.x释放 定一个确切的版本——甚至 标记软件包 稳定 在此之前1.0.0可以引入突破性更改 和精确的针 变成一个类型检查错误 而不是一个 跑步时间惊喜。 完全政策: 释放策略。 。 。 .
为什么 @ effect/ github- 引用
决定哪个发布拉出请求关闭是一个语法问题,而不是API调用,答案通常是从一行正则ex的内存中重取. 这个regex是虫子生活的地方:接受一个结肠内线,而你收割的参考文献GitHub不会链接,所以你的管道报告一个问题,就是关闭合并的叶子。 接受 closes 123 没有 # 你报告GitHub没有做一个链接。 读取 Closes #1, #2 and #3 每行一个参考的解析器 你默默地看到第一个问题,然后失去剩下的.
这个软件包是写过一次的语法,有分歧是故意解决的,而不是由最后复制正格克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克 每个方言都是单独的功能,因为每个方言都有不同的出产者:道出由人类为GitHub自己的扫描仪所书写,生成的参考区域由工具为人类所书写. 功能是纯和同步的——不 Effect,没有图层可以提供,在测试中也没有任何可以分解的——所以一个发布脚本,一个提示规则,一个承诺信息检查和一个Action都可以说出相同的语法,而没有安装一个GitHub客户端.
安装
npm install @effected/github-references effect
pnpm add @effected/github-references effect
需要节点.js~~24.11.0.
全体 @effected/* 软件包仅为无害环境管理:只公布出口地图 import 条件,所以 require() 包括解析 CJS 模式的工具 —— 与节点失败 ERR_PACKAGE_PATH_NOT_EXPORTED 而不是装入不存在的 CJS 建筑。 从ES模块导入.
effect v4是唯一的同伴依赖,没有其它类型的依赖. Option 仅是 effect 表面触动,这里没有任何东西会产生影响, 所以每个函数都可以从普通同步代码调用.
快开始
然后读出一条生成的线条
import { harvestIssueReferences, parseClosingList } from "@effected/github-references";
console.log(harvestIssueReferences("Fixes #12 and closes #13."));
// [ { issueNumber: 12, keyword: "fixes", start: 0, end: 9 },
// { issueNumber: 13, keyword: "closes", start: 14, end: 24 } ]
console.log(parseClosingList("Closes #247, #248 and #251"));
// Option.some({ keyword: "closes", issueNumbers: [247, 248, 251] })
内入传道词
harvestIssueReferences 读取 内在辩护 方言:9个收尾关键词之一 CLOSING_KEYWORDS,强制空白,然后 #<number>,在文本的任何地方,对大小写不敏感,以及 无结肠 ——即拼写"GitHub"本身扫描了拉取请求体. 每一个被击中的载体 start 财务报告和审定财务报表 end 被冲入输入中,所以调用者可以下划线,剥去,或重写到位.
import { harvestIssueReferences } from "@effected/github-references";
console.log(harvestIssueReferences("closes: 123 and fixes #9"));
// [ { issueNumber: 9, keyword: "fixes", start: 16, end: 24 } ]
// — the colon spelling is not the inline dialect, and `123` has no `#`
复制件按书面形式出现,因为 fixes #1, fixes #1 意思是一两个意图是打电话者的问题. 这是方言 释放管道收获 从承诺对象和拉请求描述.
赤线
parseBareLineReference 读取 光线 方言:修剪后,全行 实值 引用, 冒号是可选的, 任何遗留的东西都会拒绝该行。 这就是一个生成的引用块的形状, 每行一个引用。 没有抵消,因为如果一个方言的参照线,抵消将重复一个常数.
import { parseBareLineReference } from "@effected/github-references";
console.log(parseBareLineReference("Closes: #12"));
// Option.some({ issueNumber: 12, keyword: "closes" })
console.log(parseBareLineReference("closes #12 for real"));
// Option.none() — the bare-line dialect takes the whole line or nothing
闭幕发言
parseClosingList 读取一条整行在单个关键字下命名多期。 项目为: #<digits> 由逗号分隔,由 and或牛津大学 , and,而关键词的结肠像光线方言一样是可选的.
import { parseClosingList } from "@effected/github-references";
console.log(parseClosingList("Fixes #1, #2, and #3"));
// Option.some({ keyword: "fixes", issueNumbers: [1, 2, 3] })
console.log(parseClosingList("Closes #1 and please review"));
// Option.none() — trailing prose rejects the line rather than parsing a prefix
parseReferenceList 是同一行的广义读取。 此外,它还接受不关闭 REFERENCE_KEYWORDS —— 说 ref, (中文(简体) ), refs, (中文(简体) ), references ——将某一问题联为一体而不予结案,并通过一个报告加以匹配 closing 旗帜. parseClosingList 就是那个引擎的闭合视图 所以 Refs: 行为 Option.none() 那边还有 closing: false 这里:
import { parseClosingList, parseReferenceList } from "@effected/github-references";
console.log(parseReferenceList("Refs #7, #8"));
// Option.some({ keyword: "refs", closing: false, issueNumbers: [7, 8] })
console.log(parseClosingList("Refs #7, #8"));
// Option.none() — a reference list, but not a closing one
内含的收获参考清单
harvestReferenceLists 将收尾列表语法概括到内置正文状态:多个列表可以共享一行运行中文本,每个列表结束于自己的最后一个有效项目.
import { harvestReferenceLists } from "@effected/github-references";
console.log(harvestReferenceLists("Closes #123, Fixes #456"));
// [ { keyword: "closes", closing: true, issueNumbers: [123], start: 0, end: 11 },
// { keyword: "fixes", closing: true, issueNumbers: [456], start: 13, end: 23 } ]
两个关键词集的播放, 完全一样 parseReferenceList,每个命中携带 start 编号 : end 冲抵 harvestIssueReferences。一个问题编号过去 Number.MAX_SAFE_INTEGER 任何一位候选人都会放弃整个候选人, 永远不要一份部分名单, 扫描之后会继续.
读取多行文本
parseBareLines, (中文(简体) ), parseClosingLists 财务报告和审定财务报表 parseReferenceLists 应用其单行解析器,跨越文本的每一行,并按顺序收集点击。 被否决的行无贡献,结果没有行号——一个需要位置的呼叫者保持自己的分路循环.
import { parseBareLines, parseClosingLists } from "@effected/github-references";
console.log(parseBareLines("Closes: #12\nsome unrelated line\nFixed #34"));
// [ { issueNumber: 12, keyword: "closes" }, { issueNumber: 34, keyword: "fixed" } ]
console.log(parseClosingLists("Fixes #1, #2\nRefs #9\nCloses #3 and #4"));
// [ { keyword: "fixes", issueNumbers: [1, 2] }, { keyword: "closes", issueNumbers: [3, 4] } ]
parseReferenceLists 以更广泛的方式读取相同的行 REFERENCE_KEYWORDS 与关闭九.
立刻收集两个姿势
collectReferenceLists 读出一个文本,说明真实的预告片/预告片互页的外观:每行首先作为全行参考列表进行尝试(crosn-liance, p parseReferenceList),并且只有一条不是一条的行被收割入内线(没有结肠,每条 harvestReferenceLists) (中文(简体) ). 这种优先秩序意味着一个没有结肠的拖车线精确地贡献了一次,从来没有一次的姿态。 结果没有抵消——这是行-角读;一个需要跨度的呼叫者 harvestReferenceLists 直接说.
import { collectReferenceLists } from "@effected/github-references";
console.log(collectReferenceLists("Fixes: #10\nprose mentioning closes #11"));
// [ { keyword: "fixes", closing: true, issueNumbers: [10] },
// { keyword: "closes", closing: true, issueNumbers: [11] } ]
关键词家庭
keywordFamily(keyword) 将十二个关键词中的任何一个都崩溃 "close", (中文(简体) ), "fix", (中文(简体) ), "resolve", (中文(简体) ), "ref" ——为一位来电者所建的Closes/Fixes/Refs风格的地图,而不是所有十二个拼音的手动切换.
import { keywordFamily } from "@effected/github-references";
console.log(keywordFamily("resolved"));
// "resolve"
文法规则值得了解
- 这个
#在每种方言中都是强制性的.closes: 123gitHub 不链接它, 并且是一个接受它的解析器 . - 列表方言为全线. 同线白空是
[ \t]因此,嵌入式新行不能通过合同为一行的剖析器偷运出第二行,跟踪内容则拒绝该行,而不是产生部分读取. - 名单从不超越新线、内线或全线——尽管内线可能跨越一条线.
harvestReferenceLists继续分离器是[ \t]因此,一旦一个候选人有了第一个项目,名单就结束于该行;一个新的耐行位置是关键词和第一个关键词之间的开口缺口#,它占用了任何空白 完全一样harvestIssueReferences与收获一样,它不需要结肠——结肠拼写属于parseReferenceList和赤线方言. - 复制品按顺序保存. 是否为
#12, #12意味着一个或两个问题是打电话者的生意; 崩溃会破坏打电话者想要的证据. - 关键词案件无关紧要,结果也只是空想.
CLOSES, (中文(简体) ),Closes财务报告和审定财务报表closes所有匹配,和keyword总是小写回来. - 不安全问题号是有意区别对待的. 数字过去
Number.MAX_SAFE_INTEGER使播种人收获 跳过一个匹配,而列表中的方言——全线和内线——则拒绝 全行或候选人:周围的传教士没有就一个跳出的数字提出权利主张,但列表是针对一组问题提出的单一权利主张,部分结果会歪曲这些问题. - 没有输入被截断, 也不适用长度上限 . 列表方言通过单个字符逐一扫描来解析——完全没有正则表达式——因此敌对的一行无法触发灾难性回溯,也没有任何能用截取来防御.
范围外
交叉检索参考文献owner/repo#12)和全URL参考文献(https://github.com/owner/repo/issues/12)是这个包尚未读取的真正的GitHub拼写——猜测它们的形状会冻结无人驱动的API. 问题 状态 因为国家不是语法 任何问GitHub的问题都属于 @effected/github。 。 。 .
来自@eeffect/github
常住的语法 @effected/github,它仍然再出口 准确的六个原名 - CLOSING_KEYWORDS, (中文(简体) ), ClosingKeyword, (中文(简体) ), IssueReference, (中文(简体) ), harvestIssueReferences, (中文(简体) ), BareLineReference, (中文(简体) ), parseBareLineReference 所以写着反对老房子的代码在不断编译 再出口是一种相容的shim,以后可能会被丢掉 @effected/github 释放; 关闭列表表面被刻意不包含其中. 而不是从此软件包导入,然后删除 @effected/github 完全依赖,如果语法是你想要的.
特征
harvestIssueReferences(text)——在运行中文本中,按文档顺序,每条文本的内置收尾引用issueNumber,犬类keyword财务报告和审定财务报表start编号 :end页:1.harvestReferenceLists(text)——在运行中文本中找到的每个引用列表,按文档顺序排列,每列表与keyword, (中文(简体) ),closing, (中文(简体) ),issueNumbers财务报告和审定财务报表start编号 :end页:1.parseBareLineReference(line)- 整个修剪线带的可选号作为Option。 。 。 .parseBareLines(text)——多行文字中的每一条光线引用,一行一行,按顺序收集.parseClosingList(line)在9个关键词中, 逗号..,and- 或牛津分离.parseClosingLists(text)—— 说parseClosingList适用于文本的每一行,按顺序收集.parseReferenceList(line)——收尾下同一行 财务报告和审定财务报表 非关闭关键词集,通过closing旗帜.parseReferenceLists(text)—— 说parseReferenceList适用于文本的每一行,按顺序收集.collectReferenceLists(text)——多行文本中的每一条参考列表,全行第一并仅为一行不是一行的一行所内入,因此一行无结肠拖车线路从不计数两次.keywordFamily(keyword)- 一个关键词的紧张-崩溃的家庭:close, (中文(简体) ),fix, (中文(简体) ),resolve或者说ref,在两个关键词集中总计.CLOSING_KEYWORDS编号 :ClosingKeyword——"GitHub"9个关键词的动作,以及其中之一的类型.REFERENCE_KEYWORDS编号 :ReferenceKeyword——3个非关闭关键词不关闭关联.IssueReference, (中文(简体) ),BareLineReference, (中文(简体) ),ClosingList, (中文(简体) ),ReferenceList, (中文(简体) ),HarvestedReferenceList——结果类型,每个方言读取1个.KeywordFamily类型keywordFamily返回值 .