Files
Agent-n8n/backups/exhibition-demo-backup-20250928-210916/node_modules/refractor/lang/promql.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

105 lines
2.9 KiB
JavaScript

'use strict'
module.exports = promql
promql.displayName = 'promql'
promql.aliases = []
function promql(Prism) {
// Thanks to: https://github.com/prometheus-community/monaco-promql/blob/master/src/promql/promql.ts
// As well as: https://kausal.co/blog/slate-prism-add-new-syntax-promql/
;(function (Prism) {
// PromQL Aggregation Operators
// (https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators)
var aggregations = [
'sum',
'min',
'max',
'avg',
'group',
'stddev',
'stdvar',
'count',
'count_values',
'bottomk',
'topk',
'quantile'
] // PromQL vector matching + the by and without clauses
// (https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching)
var vectorMatching = [
'on',
'ignoring',
'group_right',
'group_left',
'by',
'without'
] // PromQL offset modifier
// (https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier)
var offsetModifier = ['offset']
var keywords = aggregations.concat(vectorMatching, offsetModifier)
Prism.languages.promql = {
comment: {
pattern: /(^[ \t]*)#.*/m,
lookbehind: true
},
'vector-match': {
// Match the comma-separated label lists inside vector matching:
pattern: new RegExp(
'((?:' + vectorMatching.join('|') + ')\\s*)\\([^)]*\\)'
),
lookbehind: true,
inside: {
'label-key': {
pattern: /\b[^,]+\b/,
alias: 'attr-name'
},
punctuation: /[(),]/
}
},
'context-labels': {
pattern: /\{[^{}]*\}/,
inside: {
'label-key': {
pattern: /\b[a-z_]\w*(?=\s*(?:=|![=~]))/,
alias: 'attr-name'
},
'label-value': {
pattern: /(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,
greedy: true,
alias: 'attr-value'
},
punctuation: /\{|\}|=~?|![=~]|,/
}
},
'context-range': [
{
pattern: /\[[\w\s:]+\]/,
// [1m]
inside: {
punctuation: /\[|\]|:/,
'range-duration': {
pattern: /\b(?:\d+(?:[smhdwy]|ms))+\b/i,
alias: 'number'
}
}
},
{
pattern: /(\boffset\s+)\w+/,
// offset 1m
lookbehind: true,
inside: {
'range-duration': {
pattern: /\b(?:\d+(?:[smhdwy]|ms))+\b/i,
alias: 'number'
}
}
}
],
keyword: new RegExp('\\b(?:' + keywords.join('|') + ')\\b', 'i'),
function: /\b[a-z_]\w*(?=\s*\()/i,
number:
/[-+]?(?:(?:\b\d+(?:\.\d+)?|\B\.\d+)(?:e[-+]?\d+)?\b|\b(?:0x[0-9a-f]+|nan|inf)\b)/i,
operator: /[\^*/%+-]|==|!=|<=|<|>=|>|\b(?:and|or|unless)\b/i,
punctuation: /[{};()`,.[\]]/
}
})(Prism)
}