Files
Agent-n8n/web_frontend/food-order-demo/node_modules/didyoumean
Yep_Q c3eb7125cc feat: 创建食品订单班演示系统基础框架
详细说明:
- 基于文旅订单班框架复制创建food-order-demo项目
- 修改端口配置为4174避免冲突
- 更新LandingPage为青莳轻食主题(绿色健康风格)
- 重新定义7个食品行业专业Agent:
  * 市场研究专家:轻食市场分析、客群画像
  * 营养配方师:营养成分配比、低卡高蛋白设计
  * 供应链管理专家:有机食材供应、溯源体系
  * 品牌策划师:品牌定位、店铺空间布局
  * 财务分析师:投资预算、ROI分析
  * 运营管理专家:运营流程、品控标准
  * 食品创业导师:中央协调、方案整合
- 创建专用启动脚本start.sh
- 验证系统可正常运行在端口4174
- 实现代码复用率90%,符合预期目标

影响文件: web_frontend/food-order-demo/
技术栈: React 18 + TypeScript + Tailwind CSS + Zustand
2025-09-28 10:32:44 +08:00
..

didYouMean.js - A simple JavaScript matching engine

Available on GitHub.

A super-simple, highly optimized JS library for matching human-quality input to a list of potential matches. You can use it to suggest a misspelled command-line utility option to a user, or to offer links to nearby valid URLs on your 404 page. (The examples below are taken from a personal project, my HTML5 business card, which uses didYouMean.js to suggest correct URLs from misspelled ones, such as dcporter.aws.af.cm/me/instagarm.) Uses the Levenshtein distance algorithm.

didYouMean.js works in the browser as well as in node.js. To install it for use in node:

npm install didyoumean

Examples

Matching against a list of strings:

var input = 'insargrm'
var list = ['facebook', 'twitter', 'instagram', 'linkedin'];
console.log(didYouMean(input, list));
> 'instagram'
// The method matches 'insargrm' to 'instagram'.

input = 'google plus';
console.log(didYouMean(input, list));
> null
// The method was unable to find 'google plus' in the list of options.

Matching against a list of objects:

var input = 'insargrm';
var list = [ { id: 'facebook' }, { id: 'twitter' }, { id: 'instagram' }, { id: 'linkedin' } ];
var key = 'id';
console.log(didYouMean(input, list, key));
> 'instagram'
// The method returns the matching value.

didYouMean.returnWinningObject = true;
console.log(didYouMean(input, list, key));
> { id: 'instagram' }
// The method returns the matching object.

didYouMean(str, list, [key])

  • str: The string input to match.
  • list: An array of strings or objects to match against.
  • key (OPTIONAL): If your list array contains objects, you must specify the key which contains the string to match against.

Returns: the closest matching string, or null if no strings exceed the threshold.

Options

Options are set on the didYouMean function object. You may change them at any time.

threshold

By default, the method will only return strings whose edit distance is less than 40% (0.4x) of their length. For example, if a ten-letter string is five edits away from its nearest match, the method will return null.

You can control this by setting the "threshold" value on the didYouMean function. For example, to set the edit distance threshold to 50% of the input string's length:

didYouMean.threshold = 0.5;

To return the nearest match no matter the threshold, set this value to null.

thresholdAbsolute

This option behaves the same as threshold, but instead takes an integer number of edit steps. For example, if thresholdAbsolute is set to 20 (the default), then the method will only return strings whose edit distance is less than 20. Both options apply.

caseSensitive

By default, the method will perform case-insensitive comparisons. If you wish to force case sensitivity, set the "caseSensitive" value to true:

didYouMean.caseSensitive = true;

nullResultValue

By default, the method will return null if there is no sufficiently close match. You can change this value here.

returnWinningObject

By default, the method will return the winning string value (if any). If your list contains objects rather than strings, you may set returnWinningObject to true.

didYouMean.returnWinningObject = true;

This option has no effect on lists of strings.

returnFirstMatch

By default, the method will search all values and return the closest match. If you're simply looking for a "good- enough" match, you can set your thresholds appropriately and set returnFirstMatch to true to substantially speed things up.

License

didYouMean copyright (c) 2013-2014 Dave Porter.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License here.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.