Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz-Vue-R7-Res
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7前端标准模板
iBiz-Vue-R7-Res
提交
0aa2f8f1
提交
0aa2f8f1
编写于
11月 15, 2022
作者:
Mosher
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update:增加工具方法
上级
ed47084f
变更
2
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
149 行增加
和
2 行删除
+149
-2
pluralizeRule.ts
src/utils/util/pluralizeRule.ts
+117
-0
util.ts
src/utils/util/util.ts
+32
-2
未找到文件。
src/utils/util/pluralizeRule.ts
0 → 100644
浏览文件 @
0aa2f8f1
/**
* 复数变化规则
*
*
*/
export
class
PluralizeRule
{
/**
* 不规则
*
* @protected
* @type {string[]}
* @memberof PluralizeRule
*/
protected
irregular
:
Map
<
string
,
string
>
=
new
Map
();
/**
* 不可数
*
* @protected
* @type {string[]}
* @memberof PluralizeRule
*/
protected
uncountable
:
string
[]
=
[
"equipment"
,
"information"
,
"rice"
,
"money"
,
"species"
,
"series"
,
"fish"
,
"sheep"
,
"people"
,
"men"
,
"children"
,
"sexes"
,
"moves"
,
"stadiums"
,
"oxen"
,
"octopi"
,
"viri"
,
"aliases"
,
"quizzes"
,
];
/**
* 初始化pluralizeRule对象
*
* @param opts 额外参数
* @memberof PluralizeRule
*/
public
constructor
(
opts
:
any
=
{})
{
this
.
initIrregular
();
}
/**
* 初始化不规则变化
*
* @param opts 额外参数
* @memberof PluralizeRule
*/
protected
initIrregular
(){
this
.
irregular
.
set
(
"person"
,
"people"
);
this
.
irregular
.
set
(
"man"
,
"men"
);
this
.
irregular
.
set
(
"child"
,
"children"
);
this
.
irregular
.
set
(
"sex"
,
"sexes"
);
this
.
irregular
.
set
(
"move"
,
"moves"
);
this
.
irregular
.
set
(
"stadium"
,
"stadiums"
);
}
/**
* 是否为不可数
*
* @param word 单词
* @returns 返回判断
* @memberof PluralizeRule
*/
public
isUncountable
(
word
:
string
){
const
index
:
number
=
this
.
uncountable
.
findIndex
((
wordStr
:
string
)
=>
{
return
Object
.
is
(
word
,
wordStr
);
})
if
(
index
==
-
1
)
{
return
false
;
}
else
{
return
true
;
}
}
/**
* 不规则变化
*
* @param word 单词
* @returns 返回变化值
* @memberof PluralizeRule
*/
public
irregularChange
(
word
:
string
){
for
(
let
item
of
this
.
irregular
.
entries
()){
if
(
word
&&
word
.
endsWith
(
item
[
0
])){
return
word
.
replace
(
new
RegExp
(
item
[
0
],
'g'
),
item
[
1
]);
}
}
return
this
.
irregular
.
get
(
word
);
}
/**
* 规则变化
*
* @param word 单词
* @returns 返回变化值
* @memberof PluralizeRule
*/
public
ruleChange
(
word
:
string
){
if
(
/
(
ax|test
)
is$/
.
test
(
word
))
return
word
.
replace
(
/is$/
,
"es"
);
if
(
/
(
octop|vir
)
us$/
.
test
(
word
))
return
word
.
replace
(
/us$/
,
"i"
);
if
(
/
(
octop|vir
)
i$/
.
test
(
word
))
return
word
;
if
(
/
(
alias|status
)
$/
.
test
(
word
))
return
word
+
"es"
;
if
(
/
(
bu
)
s$/
.
test
(
word
))
return
word
.
replace
(
/s$/
,
"ses"
);
if
(
/
(
buffal|tomat
)
o$/
.
test
(
word
))
return
word
.
replace
(
/o$/
,
"oes"
);
if
(
/
([
ti
])
um$/
.
test
(
word
))
return
word
.
replace
(
/um$/
,
"a"
);
if
(
/
([
ti
])
a$/
.
test
(
word
))
return
word
;
if
(
/sis$/
.
test
(
word
))
return
word
.
replace
(
/sis$/
,
"ses"
);
if
(
/
(?:([^
f
])
fe|
([
lr
])
f
)
$/
.
test
(
word
))
return
word
.
substring
(
0
,
word
.
length
-
1
)
+
"ves"
;
if
(
/
(
hive
)
$/
.
test
(
word
))
return
word
+
"s"
;
if
(
/
([^
aeiouy
]
|qu
)
y$/
.
test
(
word
))
return
word
.
replace
(
/y$/
,
"ies"
);
if
(
/
(
x|ch|ss|sh
)
$/
.
test
(
word
))
return
word
+
"es"
;
if
(
/
(
matr|vert|ind
)
ix|ex$/
.
test
(
word
))
return
word
.
replace
(
/ix|ex$/
,
"ices"
);
if
(
/
([
m|l
])
ouse$/
.
test
(
word
))
return
word
.
replace
(
/ouse$/
,
"ice"
);
if
(
/
([
m|l
])
ice$/
.
test
(
word
))
return
word
;
if
(
/^
(
ox
)
$$/
.
test
(
word
))
return
word
+
"en"
;
if
(
/
(
quiz
)
$/
.
test
(
word
))
return
word
+
"zes"
;
if
(
/s$/
.
test
(
word
))
return
word
.
replace
(
/s$/
,
"s"
);
return
word
+
"s"
;
}
}
\ No newline at end of file
src/utils/util/util.ts
浏览文件 @
0aa2f8f1
import
qs
from
'qs'
;
import
{
Route
}
from
'vue-router'
;
import
Schema
from
"async-validator"
;
import
{
PanelContainerModel
,
PanelRawitemModel
,
PanelFieldModel
,
PanelControlModel
,
PanelButtonModel
,
PanelUserControlModel
,
PanelTabPanelModel
,
PanelTabPageModel
,
PanelCtrlPosModel
}
from
'@/model/panel-detail'
;
import
{
PluralizeRule
}
from
'./pluralizeRule'
;
/**
* 平台工具类
*
...
...
@@ -10,6 +9,14 @@ import { PanelContainerModel, PanelRawitemModel, PanelFieldModel, PanelControlMo
*/
export
class
Util
{
/**
* @description PluralizeRule对象
* @private
* @type {PluralizeRule}
* @memberof Util
*/
public
static
pluralizeRule
:
PluralizeRule
=
new
PluralizeRule
();
/**
* 创建 UUID
*
...
...
@@ -292,6 +299,29 @@ export class Util {
return
_str
;
}
/**
* 计算单词复数
*
* @static
* @returns {string}
* @memberof Util
*/
public
static
srfpluralize
(
word
:
string
)
{
let
wordStr
=
word
.
trim
().
toLowerCase
();
if
(
wordStr
.
length
==
0
)
{
return
wordStr
;
}
if
(
this
.
pluralizeRule
.
isUncountable
(
wordStr
))
{
return
wordStr
;
}
const
newWordStr
=
this
.
pluralizeRule
.
irregularChange
(
wordStr
);
if
(
newWordStr
)
{
return
newWordStr
;
}
else
{
return
this
.
pluralizeRule
.
ruleChange
(
wordStr
);
}
}
/**
* 附加参数格式化
*
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录