标题
用于执行的 JavaScript 的样式指南 - 认识标题大小写引擎 AP 计划, (中文(简体) ), 亚太, (中文(简体) ), 芝加哥, (中文(简体) ), 纽约T, (中文(简体) ), 维基百科,以及 英国 样式带有上下文缩写分解,词典支持的实体检测,运行时验证,以及被整理的域名名.
链接
导言
TitleCaser是用于生产出版系统的定型,风格-指向-有意识的标题外壳引擎. 它执行主要编辑标准,采用规则驱动的资本化逻辑,包括上下文缩写分化、复合处理、占有式正常化、有敏锐感的处理、字典辅助实体检测,以及在整个营销、学术界、商业、金融、地理、法律、国防、媒体、名称和技术中执行解析域名词汇.
它的多路口处理架构在支持自定义覆盖,精确的短语保存,受控的词汇执行,以及用于运行时间输入的防御性验证层的同时,确保了决定性输出. 为Node.js和浏览器环境所设计,TitleCaser将清洁地集成到CMS管道中,建立系统,以及自动化编辑工作流程中需要精度和可重复性.
关键特性
多层编辑引擎
内建规则系统 AP 计划, (中文(简体) ), 亚太, (中文(简体) ), 芝加哥, (中文(简体) ), 纽约T, (中文(简体) ), 维基百科 (判决案件)和 英国 样式。 每个样式都应用自己的逻辑来表示小字,连字符复合物,占有物,结肠资本化,和缩写处理,产生一致的可重复输出.
上下文缩略语和缩略语
将区域缩略语与同名小写单词区分开来,使用姿势和周围的词Heuristics.
例如:
"It’s up to us in the US military to decide."
→ "It’s Up to Us in the US Military To Decide."
"us-uk-led coalition"
→ "US-UK-Led Coalition"
- 支持美国、联合王国、欧盟、美国(虚构和倒置表格)
- 手接连字符化合物(美国-背面、美国-联合王国-铅)
- 在括号和逗号分隔上的工作
- 刑满前的缩略语
- 避免在较长的单词中出现假阳性
结构词汇规范化
包括各种品牌、技术、地理、商业、营销、国防、学术界、金融、法律、媒体、名称和娱乐领域的规范化规则.
- 品牌和产品外壳
GOOgle, (中文(简体) ),nodejs, (中文(简体) ),iphone→Google, (中文(简体) ),Node.js, (中文(简体) ),iPhone(中文(简体) ) - 媒体、娱乐和平台名称
fox news, (中文(简体) ),cnn international, (中文(简体) ),apple music→Fox News, (中文(简体) ),CNN International, (中文(简体) ),Apple Music(中文(简体) ) - 技术和开发者术语
aws, (中文(简体) ),github, (中文(简体) ),devops, (中文(简体) ),ddos→AWS, (中文(简体) ),GitHub, (中文(简体) ),DevOps, (中文(简体) ),DDoS(中文(简体) ) - 名称、占有物和化合物
donald duck, (中文(简体) ),o'connor, (中文(简体) ),louis-iv→Donald Duck, (中文(简体) ),O’Connor, (中文(简体) ),Louis-IV(中文(简体) ) - 统一码和国际品牌外壳(
skoda→Škoda(中文(简体) ) - 运行时自定义名词覆盖
- 精确短语替换
字典-维基百科中的相关条目: 句子案
维基百科模式使用词典支持的部分语音数据,给定名和家族名列表,整理出合适的短语,并进行上下文评分来避免过度校正用户意图.
- 保存可能的名称( E)
Donald Duck, (中文(简体) ),John Smith, (中文(简体) ),Maeve O’Connor(中文(简体) ) - 保护已知的媒体和品牌短语(
BBC News, (中文(简体) ),Sky News, (中文(简体) ),The Lincoln Project(中文(简体) ) - 小写以文章为首的普通短语(
The Public Event → the public event(中文(简体) ) - 避免将每个资本字当作适当的名词
- 提供特定规格的进口
lite财务报告和审定财务报表full建立词典
高级连字符和化合物处理
具有特定风格规则的连字符化合物智能处理:
- 多连字符化合物
US-UK-Led Coalition(中文(简体) ) - 风格特异性复合规则(AP vs Chicago)
- 瞬间和瞬间正常化
- 缩略语- 第一个复合逻辑
- 化合物内的罗马数字
- 化合物内的品牌外壳保存
多选项处理
用于稳定处理复杂输入的分层多通道处理:
- 投入正常化(间距和
<br>处理) - 基于托肯的白空保留转换管道
- 样式感知外壳通过
- 缩略语分辨率通过
- 短字更正通过
- 最后背景更正通过
- 可选智能引号转换
- 精确的短语覆盖过关
HTML- 安全 & CMS- Ready
为整合到出版工作流程,CMS管道,以及自动化编辑系统而设计.
- 保留
<br>标记 - 将结号周围的间隔规范化 +
<br> - 保留闪存和符号
- 安全处理过多的空地
- 编辑器安全实时使用的可选空白区保存
- 对脚本标记、不安全控制、bodi控制、emoji、特殊字符进行防御性验证,并允许 HTML 标记
标题Caser不是HTML消毒器。 它的验证层旨在拒绝或允许外壳之前所配置的输入模式,同时仍然支持有意通过安全标记等的编辑工作流程 <br>。 。 。 .
运行时间、 架构和构建支持
AMD/浏览器构建扩展 String.prototype.toTitleCase() 用于客户端环境中的直接字符串使用.
- 节点.js(ES模块)
- 浏览器( 原型扩展通过 AMD 构建)
- AMD 发行架构
- CLI 构建和测试脚本
- 结构化公用事业
src/utils/* - 结构数据
src/data/* - 专门
TitleCaserConfig用于重用运行时间配置的 API
快速启动
npm install @danielhaim/titlecaser
import { TitleCaser } from '@danielhaim/titlecaser';
const titleCaser = new TitleCaser({ style: 'ap' });
titleCaser.toTitleCase('inside the race to secure ai systems before the next cyberattack'); // → "Inside the Race To Secure AI Systems Before the Next Cyberattack"
titleCaser.toTitleCase('how hospitals prepare for ddos attacks on aws'); // → "How Hospitals Prepare for DDoS Attacks on AWS"
titleCaser.toTitleCase('what the us military learned from nato drills'); // → "What the US Military Learned From NATO Drills"
核心用途
编辑-分级转换(AP示例)
处理品牌正常化、缩写、连字符、占有和结肠规则:
import { TitleCaser } from '@danielhaim/titlecaser';
const titleCaser = new TitleCaser({ style: 'ap' });
titleCaser.toTitleCase(
"inside a high-profile, long-term plan for e-commerce growth"
); // → "Inside a High-Profile, Long-Term Plan for E-Commerce Growth"
自定义术语规范化
titleCaser.addReplaceTerm('cms', 'CMS');
titleCaser.toTitleCase('cms audit after hospital breach'); // → "CMS Audit After Hospital Breach"
精确的词组替换
titleCaser.addExactPhraseReplacements([
{ 'public records request': 'Public Records Request' }
]);
titleCaser.toTitleCase('inside the public records request that changed city hall'); // → "Inside the Public Records Request That Changed City Hall"
聪明的引文
const tc = new TitleCaser({
style: 'ap',
smartQuotes: true
});
tc.toTitleCase('"we are not ready," says former nato commander'); // → “We Are Not Ready,” Says Former NATO Commander
白空间正态化
默认启用白空间正常化 .
默认情况下, TitleCaser 将连续的白空间和指向和后向空间的修饰崩溃 :
const tc = new TitleCaser({ style: "ap" });
tc.toTitleCase(" the quick brown fox "); // → "The Quick Brown Fox"
对于必须保留间隔的实时编辑器或环境,取消正常化:
const tc = new TitleCaser({
style: "ap",
normalizeWhitespace: false
});
tc.toTitleCase(" the quick brown fox "); // → " The Quick Brown Fox "
当正态白空间为假时 :
- 保持内部间隔
- 铅 -- -- 拖入的白空间得到保留
- 新行和标签保存
- 只有字母外壳被改变
这种行为允许安全地整合到实时编辑器中,而不会在正常化被禁用时意外的裁剪或光标不稳定(参见 问题17 (供讨论).
标题卡塞尔配置
使用 TitleCaserConfig 如果您想要先验证和再使用一个完整的配置对象,然后将其传递到 TitleCaser。 。 。 .
import { TitleCaser, TitleCaserConfig } from '@danielhaim/titlecaser';
const config = new TitleCaserConfig({
style: 'wikipedia',
minTitleChars: 1,
maxTitleChars: 400,
dictionaryProfile: 'full',
allowEmojis: true,
allowSpecialCharacters: true,
normalizeQuotes: true,
normalizeWhitespace: true,
ignoreList: ['internal-code-name'],
phraseReplacementList: {
'open source initiative': 'Open Source Initiative'
},
security: {
allowHtml: true,
allowedHtmlTags: ['br'],
rejectScriptTags: true,
rejectEventHandlers: true,
rejectControlCharacters: true,
rejectBidiControls: true
}
});
const titleCaser = new TitleCaser(config.toTitleCaserOptions());
titleCaser.toTitleCase('the report cited fox news after the public event');
// → "The report cited Fox News after the public event"
minTitleLength 财务报告和审定财务报表 maxTitleLength 被支持的别名用于 minTitleChars 财务报告和审定财务报表 maxTitleChars。 。 。 .
词典简介
词典配置控制用于词典支持的决定的词典数据。 默认软件包导入指向 full 构建兼容性。 要减少编译的捆绑大小,请导入 lite 切入点而不是只依赖运行时间 dictionaryProfile 选项.
import { TitleCaser as LiteTitleCaser } from '@danielhaim/titlecaser/lite';
import { TitleCaser as FullTitleCaser } from '@danielhaim/titlecaser/full';
| 简介 | 说明 |
|---|---|
lite | 更小的建筑有被整理的正字法,名称,品牌,媒体实体,缩写和域名. 它不包括由WordNet衍生出的部分相声词典,因此维基百科的句子-案例检测不够积极. |
full | 完整的词典辅助构建,包含完整的WordNet衍生出名词,动词,形容词,和副词数据;默认. |
词典被与软件包捆绑在一起,不执行API调用. 运行时间 dictionaryProfile 仍然为默认构建接受,但运行时选择无法删除已编译为捆绑的数据.
浏览器使用
<script src="./path/to/dist/full/titlecaser.amd.js"></script>
<!-- or -->
<script src="./path/to/dist/lite/titlecaser.amd.js"></script>
const output = "inside the race to secure ai systems before the next cyberattack"
.toTitleCase({ style: 'apa' });
console.log(output); // → "Inside the Race to Secure AI Systems Before the Next Cyberattack"
真实世界 DOM 示例
在出版工作流程中自动使编辑标题正常化:
<h2>how nato logistics depend on rail lines, ports, and fuel depots</h2>
<h2>inside the race to secure ai systems before the next cyberattack</h2>
<h2>why local newspapers are turning to nonprofit ownership</h2>
function applyTitleCaseToH2Elements(options = { style: "apa" }) {
const h2Elements = document.querySelectorAll("h2");
h2Elements.forEach((h2) => {
h2.innerHTML = h2.innerHTML.toTitleCase(options);
});
}
applyTitleCaseToH2Elements();
API 参考
构造器
new TitleCaser(options)
选项
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
style | 字符串 | 'ap' | 编辑风格 : 'ap' | 'apa' | 'chicago' | 'nyt' | 'wikipedia' | 'british' |
dictionaryProfile | 字符串 | 'full' | 词典简介 : 'lite' | 'full' |
smartQuotes | 布尔 | false | 转换直引号( E)' ")到打字卷式引用 |
normalizeQuotes | 布尔 | false | 处理前规范左/右引号字符 |
normalizeWhitespace | 布尔 | true | 折叠相继的白相间和相间相间相间相间相间相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 设定为 false 以保留原间隔(编辑安全模式). |
minTitleChars | 编号 | 1 | 字符中最小接受的输入长度 |
maxTitleChars | 编号 | 400 | 字符中最大接受的输入长度 |
allowEmojis | 布尔 | true | 允许输入中的 emoji 字符 |
allowSpecialCharacters | 布尔 | true | 允许在输入中配置特殊字符 |
neverCapitalize | 字符串 [] | [] | 附加的单词应保持小写( 与样式默认合并) |
wordReplacementsList | 对象[] | 内部默认 | 矩阵 { 'term': 'replacement' } 用于术语常态的对象 |
phraseReplacementList | 对象 | {} | 字符串到字符串短语替换映射 |
replaceTerms | 数组 | [] | Tuple 风格替换列表 TitleCaserConfig |
security | 对象 | 默认安全政策 | 控制 HTML, 脚本标记, 事件处理器, 控制特征, bodi, 零宽字符验证 |
debug | 布尔 | false | 处理时启用内部警告日志 |
安全选项
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
allowHtml | 布尔 | false | 仅在启用时允许 HTML 外观输入 |
allowedHtmlTags | 字符串 [] | ['br'] | 启用 HTML 时允许的标记 |
rejectScriptTags | 布尔 | true | 拒绝 <script> 标记 |
rejectEventHandlers | 布尔 | true | 拒绝内置处理器, 如 onclick= |
rejectControlCharacters | 布尔 | true | 拒绝不安全的控制字符 |
rejectBidiControls | 布尔 | true | 拒绝 bodi 覆盖/ 控制字符 |
rejectZeroWidthCharacters | 布尔 | false | 可选拒绝零宽字符 |
方法
切换到TitleCase(文本)
titleCaser.toTitleCase('inside the heat wave response'); // → "Inside the Heat Wave Response"
任期(任期、替换)
titleCaser.addReplaceTerm('cms', 'CMS');
替换( 任期)
titleCaser.removeReplaceTerm('cms');
替换术语( 术语)
titleCaser.setReplaceTerms([
{ 'cms': 'CMS' },
{ 'aws': 'AWS' }
]);
添加精确词组替换( 句子)
titleCaser.addExactPhraseReplacements([
{ 'public records request': 'Public Records Request' },
{ 'city hall': 'City Hall' }
]);
setStyle( 样式)
titleCaser.setStyle('chicago');
创建 TitleCaser Config( 配置)
import { createTitleCaserConfig } from '@danielhaim/titlecaser';
const config = createTitleCaserConfig({
style: 'ap',
maxTitleChars: 300
});
const titleCaser = new TitleCaser(config.toTitleCaserOptions());
测试范围
npm run test
- 广泛的单位测试覆盖率
- 划分AP,APA,芝加哥,NYT和维基百科的样式验证
- 对个人帮助者的公用事业水平测试
- 卫生和运行时间验证测试
- 类型脚本定义测试
- 缩略语解析边缘案例
- 连字符边缘大小写
- 品牌正常化
- 维基百科词典/实体矛盾测试
- 跨风格名称Heuristic和罕见名词陷阱覆盖
焦点测试命令 :
npm run test-ap
npm run test-apa
npm run test-chicago
npm run test-nyt
npm run test-wikipedia
npm run test-utils
npm run test-hygiene
资源
提高你写作知识和语言风格指南的有用材料。 这些资源包括各种书籍和手册,如"美国心理学会出版手册","芝加哥风格手册","AP样式手册"等,被广泛认为是文法,通俗,资本化规则的权威来源.
- AP 样式手册, 第56版
- 《美国心理学会出版物手册》,第七版(2020年)
- 芝加哥风格手册:资本化
- "蓝本:统一引用系统". 剑桥:哈佛法律评论会,2020年
- 芝加哥风格手册 第17版
- 《纽约时报风格和使用手册》
- 维基百科:字母大小写
- 维基百科:作风手册/作词
报告错误
如果您在使用库或演示页时遇到任何错误或问题,请在寄存器的问题跟踪器中打开一新期来报告.
在报告错误时,请提供尽可能多的细节,包括复制问题的步骤和您看到的任何错误信息. 我感谢对改进图书馆的任何贡献.
捐款
我们欢迎捐款! 请看我们的 贡献准则 详细情况.
许可证
这个项目根据Apache许可证2.0获得许可——见 自由主义 详细文件.
更改日志
见 变动情况 用于列出更改和版本历史.
