Files
Agent-n8n/backups/exhibition-demo-backup-20250928-210916/node_modules/refractor/lang/icu-message-format.js
Yep_Q 67f5dfbe50 feat: 实现多订单班支持系统
主要功能:
- 修改RequirementModal支持12个订单班选择
- 添加OrderClassIconMap图标映射组件
- Store中添加selectedOrderClass状态管理
- WorkflowPage支持传递orderClass参数
- web_result添加URL参数切换功能
- 创建order-class-handler.js动态处理页面主题

技术改进:
- 创建软链接关联订单班数据目录
- 生成wenlu.json和food.json数据结构
- 删除重复的web_result目录
- 添加测试页面test-order-class.html

影响范围:
- 展会策划系统现支持12个订单班
- 结果展示页面自动适配不同订单班主题
- 用户可选择不同行业生成对应方案

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 10:02:15 +08:00

161 lines
5.1 KiB
JavaScript

'use strict'
module.exports = icuMessageFormat
icuMessageFormat.displayName = 'icuMessageFormat'
icuMessageFormat.aliases = []
function icuMessageFormat(Prism) {
// https://unicode-org.github.io/icu/userguide/format_parse/messages/
// https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/MessageFormat.html
;(function (Prism) {
/**
* @param {string} source
* @param {number} level
* @returns {string}
*/
function nested(source, level) {
if (level <= 0) {
return /[]/.source
} else {
return source.replace(/<SELF>/g, function () {
return nested(source, level - 1)
})
}
}
var stringPattern = /'[{}:=,](?:[^']|'')*'(?!')/
var escape = {
pattern: /''/,
greedy: true,
alias: 'operator'
}
var string = {
pattern: stringPattern,
greedy: true,
inside: {
escape: escape
}
}
var argumentSource = nested(
/\{(?:[^{}']|'(?![{},'])|''|<STR>|<SELF>)*\}/.source.replace(
/<STR>/g,
function () {
return stringPattern.source
}
),
8
)
var nestedMessage = {
pattern: RegExp(argumentSource),
inside: {
message: {
pattern: /^(\{)[\s\S]+(?=\}$)/,
lookbehind: true,
inside: null // see below
},
'message-delimiter': {
pattern: /./,
alias: 'punctuation'
}
}
}
Prism.languages['icu-message-format'] = {
argument: {
pattern: RegExp(argumentSource),
greedy: true,
inside: {
content: {
pattern: /^(\{)[\s\S]+(?=\}$)/,
lookbehind: true,
inside: {
'argument-name': {
pattern: /^(\s*)[^{}:=,\s]+/,
lookbehind: true
},
'choice-style': {
// https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1ChoiceFormat.html#details
pattern: /^(\s*,\s*choice\s*,\s*)\S(?:[\s\S]*\S)?/,
lookbehind: true,
inside: {
punctuation: /\|/,
range: {
pattern: /^(\s*)[+-]?(?:\d+(?:\.\d*)?|\u221e)\s*[<#\u2264]/,
lookbehind: true,
inside: {
operator: /[<#\u2264]/,
number: /\S+/
}
},
rest: null // see below
}
},
'plural-style': {
// https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/PluralFormat.html#:~:text=Patterns%20and%20Their%20Interpretation
pattern:
/^(\s*,\s*(?:plural|selectordinal)\s*,\s*)\S(?:[\s\S]*\S)?/,
lookbehind: true,
inside: {
offset: /^offset:\s*\d+/,
'nested-message': nestedMessage,
selector: {
pattern: /=\d+|[^{}:=,\s]+/,
inside: {
keyword: /^(?:few|many|one|other|two|zero)$/
}
}
}
},
'select-style': {
// https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/SelectFormat.html#:~:text=Patterns%20and%20Their%20Interpretation
pattern: /^(\s*,\s*select\s*,\s*)\S(?:[\s\S]*\S)?/,
lookbehind: true,
inside: {
'nested-message': nestedMessage,
selector: {
pattern: /[^{}:=,\s]+/,
inside: {
keyword: /^other$/
}
}
}
},
keyword: /\b(?:choice|plural|select|selectordinal)\b/,
'arg-type': {
pattern: /\b(?:date|duration|number|ordinal|spellout|time)\b/,
alias: 'keyword'
},
'arg-skeleton': {
pattern: /(,\s*)::[^{}:=,\s]+/,
lookbehind: true
},
'arg-style': {
pattern:
/(,\s*)(?:currency|full|integer|long|medium|percent|short)(?=\s*$)/,
lookbehind: true
},
'arg-style-text': {
pattern: RegExp(
/(^\s*,\s*(?=\S))/.source +
nested(/(?:[^{}']|'[^']*'|\{(?:<SELF>)?\})+/.source, 8) +
'$'
),
lookbehind: true,
alias: 'string'
},
punctuation: /,/
}
},
'argument-delimiter': {
pattern: /./,
alias: 'operator'
}
}
},
escape: escape,
string: string
}
nestedMessage.inside.message.inside = Prism.languages['icu-message-format']
Prism.languages['icu-message-format'].argument.inside.content.inside[
'choice-style'
].inside.rest = Prism.languages['icu-message-format']
})(Prism)
}