updated bue修复及功能添加
修复两者称谓性别判断s和xs逻辑问题,及关系链输出性别参数带出等问题; 添加合称功能
This commit is contained in:
1 parent
0a707df25b
commit
72d0eef45d
8 files changed
+232
-131
No files matched your search
Vendored
+1
-1
@@ -6,4 +6,4 @@
|
|||||||
* Released under the MIT License.
|
* Released under the MIT License.
|
||||||
* https://github.com/mumuy/relationship/
|
* https://github.com/mumuy/relationship/
|
||||||
*/
|
*/
|
||||||
!function(s,f){"object"==typeof exports&&"object"==typeof module?module.exports=f():"function"==typeof define&&define.amd?define([],f):"object"==typeof exports?exports.relationship=f():s.relationship=f()}(this,(()=>(()=>{"use strict";var s={d:(f,x)=>{for(var d in x)s.o(x,d)&&!s.o(f,d)&&Object.defineProperty(f,d,{enumerable:!0,get:x[d]})},o:(s,f)=>Object.prototype.hasOwnProperty.call(s,f)},f={};s.d(f,{default:()=>q});const x=[{exp:/^(.+)&o([^#]+)&l/g,str:"$1$2"},{exp:/^(.+)&l([^#]+)&o/g,str:"$1$2"},{exp:/^(.+)?,o([sb])([^#]+)&l/g,str:"$1,x$2$3"},{exp:/^(.+)?,l([sb])([^#]+)&o/g,str:"$1,x$2$3"},{exp:/(,[ds],(.+),[ds])&[ol]/g,str:"$1"},{exp:/(,o[sb])+(,o[sb])/,str:"$2"},{exp:/(,l[sb])+(,l[sb])/,str:"$2"},{exp:/^(.*)(,[fh1])(,[olx][sb])+,[olx]b(.*)$/,str:"$1$2,xb$4#$1$2$4"},{exp:/^(.*)(,[mw0])(,[olx][sb])+,[olx]s(.*)$/,str:"$1$2,xs$4#$1$2$4"},{exp:/(,[fh1])(,[olx][sb])+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb])+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb],[olx]b(.+)?$/,str:",xb$1#$1"},{exp:/^,[olx][sb],[olx]s(.+)?$/,str:",xs$1#$1"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](,[mf])/g,str:"$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*)(,[fh1]|[xol]b),[mf],s(.*)$/,str:"$1$2,xb$3#$1$2$3"},{exp:/^(.*)(,[mw0]|[xol]s),[mf],d(.*)$/,str:"$1$2,xs$3#$1$2$3"},{exp:/(,[mw0]|[xol]s),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",xb$1#,1$1"},{exp:/^,[mf],d(.+)?$/,str:",xs$1#,0$1"},{exp:/,[ds]&o,ob/g,str:",s&o"},{exp:/,[ds]&o,os/g,str:",d&o"},{exp:/,[ds]&l,lb/g,str:",s&l"},{exp:/,[ds]&l,ls/g,str:",d&l"},{exp:/,[ds](&[ol])?,[olx]s/g,str:",d"},{exp:/,[ds](&[ol])?,[olx]b/g,str:",s"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,m/g,str:"$1"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,f/g,str:"$1,h"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,f/g,str:"$1"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,m/g,str:"$1,w"},{exp:/^,[ds],m(.+)?$/,str:",w$1#$1"},{exp:/^,[ds],f(.+)?$/,str:",h$1#$1"},{exp:/,[wh](,[ds])/g,str:"$1"},{exp:/,w,h|,h,w/g,str:""},{exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g,str:"$1$2$4#$1[$3]$4"},{exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g,str:"$1$2$4#$1$3$4"}],d={"":["自己","我","俺","吾","本人","在下"],"[f,f|f,m|m,f],[f,m],f":["老太奶爷","祖太奶爷"],"[f,f|f,m|m,f],[f,m],m":["老太奶奶","祖太奶奶"],"[f,m|m,f|m,m],[f,m],f":["老太姥爷","祖太姥爷"],"[f,m|m,f|m,m],[f,m],m":["老太姥姥","祖太姥姥"],"[f|m],[f|m],f":["太老爷"],"[f|m],[f|m],f,ob":["伯太老爷"],"[f|m],[f|m],f,ob,w":["伯太老姥"],"[f|m],[f|m],f,lb":["叔太老爷"],"[f|m],[f|m],f,lb,w":["叔太老姥"],"[f|m],[f|m],f,xs":["姑太老姥"],"[f|m],[f|m],f,xs,h":["姑太老爷"],"[f|m],[f|m],m":["太老姥"],"[f|m],[f|m],m,xb":["舅太老爷"],"[f|m],[f|m],m,xb,w":["舅太老姥"],"[f|m],[f|m],m,xs":["姨太老姥"],"[f|m],[f|m],m,xs,h":["姨太老爷"],"[f,f|f,m|m,f],f":["太奶爷","祖奶爷"],"[f,f|f,m|m,f],f,ob":["伯太奶爷","太伯奶爷"],"[f,f|f,m|m,f],f,ob,w":["伯太奶奶","太伯奶奶"],"[f,f|f,m|m,f],f,lb":["叔太奶爷","太叔奶爷"],"[f,f|f,m|m,f],f,lb,w":["叔太奶奶","太叔奶奶"],"[f,f|f,m|m,f],f,xs":["姑太奶奶","太姑奶奶"],"[f,f|f,m|m,f],f,xs,h":["姑太奶爷","太姑奶爷"],"[f,f|f,m|m,f],m":["太奶奶","祖奶奶"],"[f,f|f,m|m,f],m,xb":["舅太奶爷","太舅奶爷"],"[f,f|f,m|m,f],m,xb,w":["舅太奶奶","太舅奶奶"],"[f,f|f,m|m,f],m,xs":["姨太奶奶","太姨奶奶"],"[f,f|f,m|m,f],m,xs,h":["姨太奶爷","太姨奶爷"],"[f,m|m,f|m,m],f":["太姥爷","祖姥爷","太毑爷"],"[f,m|m,f|m,m],f,ob":["伯太姥爷","伯叔姥爷"],"[f,m|m,f|m,m],f,ob,w":["伯太姥姥","太伯姥姥"],"[f,m|m,f|m,m],f,lb":["叔太姥爷","太叔姥爷"],"[f,m|m,f|m,m],f,lb,w":["叔太姥姥","太叔姥姥"],"[f,m|m,f|m,m],f,xs":["姑太姥姥","太姑姥姥"],"[f,m|m,f|m,m],f,xs,h":["姑太姥爷","太姑姥爷"],"[f,m|m,f|m,m],m":["太姥姥","祖姥姥","太毑毑","太姥"],"[f,m|m,f|m,m],m,xb":["舅太姥爷","太舅姥爷"],"[f,m|m,f|m,m],m,xb,w":["舅太姥姥","太舅姥姥"],"[f,m|m,f|m,m],m,xs":["姨太姥姥","太姨姥姥"],"[f,m|m,f|m,m],m,xs,h":["姨太姥爷","太姨姥爷"],"[f|m],[f|m],[f|m]":["曾祖辈","祖祖","老太"],"[f|m],[f|m]":["祖辈"],"[f|m],f":["老爷"],"[f|m],f,ob":["伯老爷"],"[f|m],f,ob,w":["伯老姥"],"[f|m],f,lb":["叔老爷"],"[f|m],f,lb,w":["叔老姥"],"[f|m],f,xs":["姑老姥"],"[f|m],f,xs,h":["姑老爷"],"[f|m],m":["老姥"],"[f|m],m,xb":["舅老爷"],"[f|m],m,xb,w":["舅老姥"],"[f|m],m,xs":["姨老姥"],"[f|m],m,xs,h":["姨老爷"],"f,f,[f|m]":["曾祖父母"],"f,f,[f,xs|m,xb],s":["舅姑爷爷","舅姑爷"],"f,[f|m]":["祖父母","爷爷奶奶"],"f,[ob|ob,w]":["伯父母"],"f,[lb|lb,w]":["叔父母"],"f,xb,[s|d]":["堂兄弟姐妹","堂姐妹兄弟","从父兄弟姐妹"],"f,[xs|xs,h]":["姑父母"],"f,xs,[s|d]":["姑表兄弟姐妹"],"m,[f|m],f":["老外公","老外爷","老姥爷"],"m,[Line truncated
|
!function(s,f){"object"==typeof exports&&"object"==typeof module?module.exports=f():"function"==typeof define&&define.amd?define([],f):"object"==typeof exports?exports.relationship=f():s.relationship=f()}(this,(()=>(()=>{"use strict";var s={d:(f,x)=>{for(var d in x)s.o(x,d)&&!s.o(f,d)&&Object.defineProperty(f,d,{enumerable:!0,get:x[d]})},o:(s,f)=>Object.prototype.hasOwnProperty.call(s,f)},f={};s.d(f,{default:()=>z});const x=[{exp:/^(.+)&o([^#]+)&l/g,str:"$1$2"},{exp:/^(.+)&l([^#]+)&o/g,str:"$1$2"},{exp:/^(.+)?,o([sb])([^#]+)&l/g,str:"$1,x$2$3"},{exp:/^(.+)?,l([sb])([^#]+)&o/g,str:"$1,x$2$3"},{exp:/(,[ds],(.+),[ds])&[ol]/g,str:"$1"},{exp:/(,o[sb])+(,o[sb])/,str:"$2"},{exp:/(,l[sb])+(,l[sb])/,str:"$2"},{exp:/^(.*)(,[fh1])(,[olx][sb])+,[olx]b(.*)$/,str:"$1$2,xb$4#$1$2$4"},{exp:/^(.*)(,[mw0])(,[olx][sb])+,[olx]s(.*)$/,str:"$1$2,xs$4#$1$2$4"},{exp:/(,[fh1])(,[olx][sb])+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb])+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb],[olx]b(.+)?$/,str:",xb$1#$1"},{exp:/^,[olx][sb],[olx]s(.+)?$/,str:",xs$1#$1"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](,[mf])/g,str:"$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*)(,[fh1]|[xol]b),[mf],s(.*)$/,str:"$1$2,xb$3#$1$2$3"},{exp:/^(.*)(,[mw0]|[xol]s),[mf],d(.*)$/,str:"$1$2,xs$3#$1$2$3"},{exp:/(,[mw0]|[xol]s),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",xb$1#,1$1"},{exp:/^,[mf],d(.+)?$/,str:",xs$1#,0$1"},{exp:/,[ds]&o,ob/g,str:",s&o"},{exp:/,[ds]&o,os/g,str:",d&o"},{exp:/,[ds]&l,lb/g,str:",s&l"},{exp:/,[ds]&l,ls/g,str:",d&l"},{exp:/,[ds](&[ol])?,[olx]s/g,str:",d"},{exp:/,[ds](&[ol])?,[olx]b/g,str:",s"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,m/g,str:"$1"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,f/g,str:"$1,h"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,f/g,str:"$1"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,m/g,str:"$1,w"},{exp:/^,[ds],m(.+)?$/,str:",w$1#$1"},{exp:/^,[ds],f(.+)?$/,str:",h$1#$1"},{exp:/,[wh](,[ds])/g,str:"$1"},{exp:/,w,h|,h,w/g,str:""},{exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g,str:"$1$2$4#$1[$3]$4"},{exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g,str:"$1$2$4#$1$3$4"}],d={"":["自己","我","俺","吾","本人","在下"],"[f,f|f,m|m,f],[f,m],f":["老太奶爷","祖太奶爷"],"[f,f|f,m|m,f],[f,m],m":["老太奶奶","祖太奶奶"],"[f,m|m,f|m,m],[f,m],f":["老太姥爷","祖太姥爷"],"[f,m|m,f|m,m],[f,m],m":["老太姥姥","祖太姥姥"],"[f|m],[f|m],f":["太老爷"],"[f|m],[f|m],f,ob":["伯太老爷"],"[f|m],[f|m],f,ob,w":["伯太老姥"],"[f|m],[f|m],f,lb":["叔太老爷"],"[f|m],[f|m],f,lb,w":["叔太老姥"],"[f|m],[f|m],f,xs":["姑太老姥"],"[f|m],[f|m],f,xs,h":["姑太老爷"],"[f|m],[f|m],m":["太老姥"],"[f|m],[f|m],m,xb":["舅太老爷"],"[f|m],[f|m],m,xb,w":["舅太老姥"],"[f|m],[f|m],m,xs":["姨太老姥"],"[f|m],[f|m],m,xs,h":["姨太老爷"],"[f,f|f,m|m,f],f":["太奶爷","祖奶爷"],"[f,f|f,m|m,f],f,ob":["伯太奶爷","太伯奶爷"],"[f,f|f,m|m,f],f,ob,w":["伯太奶奶","太伯奶奶"],"[f,f|f,m|m,f],f,lb":["叔太奶爷","太叔奶爷"],"[f,f|f,m|m,f],f,lb,w":["叔太奶奶","太叔奶奶"],"[f,f|f,m|m,f],f,xs":["姑太奶奶","太姑奶奶"],"[f,f|f,m|m,f],f,xs,h":["姑太奶爷","太姑奶爷"],"[f,f|f,m|m,f],m":["太奶奶","祖奶奶"],"[f,f|f,m|m,f],m,xb":["舅太奶爷","太舅奶爷"],"[f,f|f,m|m,f],m,xb,w":["舅太奶奶","太舅奶奶"],"[f,f|f,m|m,f],m,xs":["姨太奶奶","太姨奶奶"],"[f,f|f,m|m,f],m,xs,h":["姨太奶爷","太姨奶爷"],"[f,m|m,f|m,m],f":["太姥爷","祖姥爷","太毑爷"],"[f,m|m,f|m,m],f,ob":["伯太姥爷","伯叔姥爷"],"[f,m|m,f|m,m],f,ob,w":["伯太姥姥","太伯姥姥"],"[f,m|m,f|m,m],f,lb":["叔太姥爷","太叔姥爷"],"[f,m|m,f|m,m],f,lb,w":["叔太姥姥","太叔姥姥"],"[f,m|m,f|m,m],f,xs":["姑太姥姥","太姑姥姥"],"[f,m|m,f|m,m],f,xs,h":["姑太姥爷","太姑姥爷"],"[f,m|m,f|m,m],m":["太姥姥","祖姥姥","太毑毑","太姥"],"[f,m|m,f|m,m],m,xb":["舅太姥爷","太舅姥爷"],"[f,m|m,f|m,m],m,xb,w":["舅太姥姥","太舅姥姥"],"[f,m|m,f|m,m],m,xs":["姨太姥姥","太姨姥姥"],"[f,m|m,f|m,m],m,xs,h":["姨太姥爷","太姨姥爷"],"[f|m],[f|m],[f|m]":["曾祖辈","祖祖","老太"],"[f|m],[f|m]":["祖辈"],"[f|m],f":["老爷"],"[f|m],f,ob":["伯老爷"],"[f|m],f,ob,w":["伯老姥"],"[f|m],f,lb":["叔老爷"],"[f|m],f,lb,w":["叔老姥"],"[f|m],f,xs":["姑老姥"],"[f|m],f,xs,h":["姑老爷"],"[f|m],m":["老姥"],"[f|m],m,xb":["舅老爷"],"[f|m],m,xb,w":["舅老姥"],"[f|m],m,xs":["姨老姥"],"[f|m],m,xs,h":["姨老爷"],"f,f,[f|m]":["曾祖父母"],"f,f,[f,xs|m,xb],s":["舅姑爷爷","舅姑爷"],"f,[f|m]":["祖父母","爷爷奶奶"],"f,[ob|ob,w]":["伯父母"],"f,[lb|lb,w]":["叔父母"],"f,xb,[s|d]":["堂兄弟姐妹","堂姐妹兄弟","从父兄弟姐妹"],"f,[xs|xs,h]":["姑父母"],"f,xs,[s|d]":["姑表兄弟姐妹"],"m,[f|m],f":["老外公","老外爷","老姥爷"],"m,[Line truncated
|
||||||
Vendored
+1
-1
@@ -6,4 +6,4 @@
|
|||||||
* Released under the MIT License.
|
* Released under the MIT License.
|
||||||
* https://github.com/mumuy/relationship/
|
* https://github.com/mumuy/relationship/
|
||||||
*/
|
*/
|
||||||
!function(s,f){"object"==typeof exports&&"object"==typeof module?module.exports=f():"function"==typeof define&&define.amd?define([],f):"object"==typeof exports?exports.relationship=f():s.relationship=f()}(this,(()=>(()=>{"use strict";var s={d:(f,x)=>{for(var d in x)s.o(x,d)&&!s.o(f,d)&&Object.defineProperty(f,d,{enumerable:!0,get:x[d]})},o:(s,f)=>Object.prototype.hasOwnProperty.call(s,f)},f={};s.d(f,{default:()=>q});const x=[{exp:/^(.+)&o([^#]+)&l/g,str:"$1$2"},{exp:/^(.+)&l([^#]+)&o/g,str:"$1$2"},{exp:/^(.+)?,o([sb])([^#]+)&l/g,str:"$1,x$2$3"},{exp:/^(.+)?,l([sb])([^#]+)&o/g,str:"$1,x$2$3"},{exp:/(,[ds],(.+),[ds])&[ol]/g,str:"$1"},{exp:/(,o[sb])+(,o[sb])/,str:"$2"},{exp:/(,l[sb])+(,l[sb])/,str:"$2"},{exp:/^(.*)(,[fh1])(,[olx][sb])+,[olx]b(.*)$/,str:"$1$2,xb$4#$1$2$4"},{exp:/^(.*)(,[mw0])(,[olx][sb])+,[olx]s(.*)$/,str:"$1$2,xs$4#$1$2$4"},{exp:/(,[fh1])(,[olx][sb])+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb])+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb],[olx]b(.+)?$/,str:",xb$1#$1"},{exp:/^,[olx][sb],[olx]s(.+)?$/,str:",xs$1#$1"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](,[mf])/g,str:"$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*)(,[fh1]|[xol]b),[mf],s(.*)$/,str:"$1$2,xb$3#$1$2$3"},{exp:/^(.*)(,[mw0]|[xol]s),[mf],d(.*)$/,str:"$1$2,xs$3#$1$2$3"},{exp:/(,[mw0]|[xol]s),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",xb$1#,1$1"},{exp:/^,[mf],d(.+)?$/,str:",xs$1#,0$1"},{exp:/,[ds]&o,ob/g,str:",s&o"},{exp:/,[ds]&o,os/g,str:",d&o"},{exp:/,[ds]&l,lb/g,str:",s&l"},{exp:/,[ds]&l,ls/g,str:",d&l"},{exp:/,[ds](&[ol])?,[olx]s/g,str:",d"},{exp:/,[ds](&[ol])?,[olx]b/g,str:",s"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,m/g,str:"$1"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,f/g,str:"$1,h"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,f/g,str:"$1"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,m/g,str:"$1,w"},{exp:/^,[ds],m(.+)?$/,str:",w$1#$1"},{exp:/^,[ds],f(.+)?$/,str:",h$1#$1"},{exp:/,[wh](,[ds])/g,str:"$1"},{exp:/,w,h|,h,w/g,str:""},{exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g,str:"$1$2$4#$1[$3]$4"},{exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g,str:"$1$2$4#$1$3$4"}],d={"":["自己","我","俺","吾","本人","在下"],"[f,f|f,m|m,f],[f,m],f":["老太奶爺","祖太奶爺"],"[f,f|f,m|m,f],[f,m],m":["老太奶奶","祖太奶奶"],"[f,m|m,f|m,m],[f,m],f":["老太姥爺","祖太姥爺"],"[f,m|m,f|m,m],[f,m],m":["老太姥姥","祖太姥姥"],"[f|m],[f|m],f":["太老爺"],"[f|m],[f|m],f,ob":["伯太老爺"],"[f|m],[f|m],f,ob,w":["伯太老姥"],"[f|m],[f|m],f,lb":["叔太老爺"],"[f|m],[f|m],f,lb,w":["叔太老姥"],"[f|m],[f|m],f,xs":["姑太老姥"],"[f|m],[f|m],f,xs,h":["姑太老爺"],"[f|m],[f|m],m":["太老姥"],"[f|m],[f|m],m,xb":["舅太老爺"],"[f|m],[f|m],m,xb,w":["舅太老姥"],"[f|m],[f|m],m,xs":["姨太老姥"],"[f|m],[f|m],m,xs,h":["姨太老爺"],"[f,f|f,m|m,f],f":["太奶爺","祖奶爺"],"[f,f|f,m|m,f],f,ob":["伯太奶爺","太伯奶爺"],"[f,f|f,m|m,f],f,ob,w":["伯太奶奶","太伯奶奶"],"[f,f|f,m|m,f],f,lb":["叔太奶爺","太叔奶爺"],"[f,f|f,m|m,f],f,lb,w":["叔太奶奶","太叔奶奶"],"[f,f|f,m|m,f],f,xs":["姑太奶奶","太姑奶奶"],"[f,f|f,m|m,f],f,xs,h":["姑太奶爺","太姑奶爺"],"[f,f|f,m|m,f],m":["太奶奶","祖奶奶"],"[f,f|f,m|m,f],m,xb":["舅太奶爺","太舅奶爺"],"[f,f|f,m|m,f],m,xb,w":["舅太奶奶","太舅奶奶"],"[f,f|f,m|m,f],m,xs":["姨太奶奶","太姨奶奶"],"[f,f|f,m|m,f],m,xs,h":["姨太奶爺","太姨奶爺"],"[f,m|m,f|m,m],f":["太姥爺","祖姥爺","太毑爺"],"[f,m|m,f|m,m],f,ob":["伯太姥爺","伯叔姥爺"],"[f,m|m,f|m,m],f,ob,w":["伯太姥姥","太伯姥姥"],"[f,m|m,f|m,m],f,lb":["叔太姥爺","太叔姥爺"],"[f,m|m,f|m,m],f,lb,w":["叔太姥姥","太叔姥姥"],"[f,m|m,f|m,m],f,xs":["姑太姥姥","太姑姥姥"],"[f,m|m,f|m,m],f,xs,h":["姑太姥爺","太姑姥爺"],"[f,m|m,f|m,m],m":["太姥姥","祖姥姥","太毑毑","太姥"],"[f,m|m,f|m,m],m,xb":["舅太姥爺","太舅姥爺"],"[f,m|m,f|m,m],m,xb,w":["舅太姥姥","太舅姥姥"],"[f,m|m,f|m,m],m,xs":["姨太姥姥","太姨姥姥"],"[f,m|m,f|m,m],m,xs,h":["姨太姥爺","太姨姥爺"],"[f|m],[f|m],[f|m]":["曾祖輩","祖祖","老太"],"[f|m],[f|m]":["祖輩"],"[f|m],f":["老爺"],"[f|m],f,ob":["伯老爺"],"[f|m],f,ob,w":["伯老姥"],"[f|m],f,lb":["叔老爺"],"[f|m],f,lb,w":["叔老姥"],"[f|m],f,xs":["姑老姥"],"[f|m],f,xs,h":["姑老爺"],"[f|m],m":["老姥"],"[f|m],m,xb":["舅老爺"],"[f|m],m,xb,w":["舅老姥"],"[f|m],m,xs":["姨老姥"],"[f|m],m,xs,h":["姨老爺"],"f,f,[f|m]":["曾祖父母"],"f,f,[f,xs|m,xb],s":["舅姑爺爺","舅姑爺"],"f,[f|m]":["祖父母","爺爺奶奶"],"f,[ob|ob,w]":["伯父母"],"f,[lb|lb,w]":["叔父母"],"f,xb,[s|d]":["堂兄弟姐妹","堂姐妹兄弟","從父兄弟姐妹"],"f,[xs|xs,h]":["姑父母"],"f,xs,[s|d]":["姑表兄弟姐妹"],"m,[f|m],f":["老外公","老外爺","老姥爺"],"m,[Line truncated
|
!function(s,f){"object"==typeof exports&&"object"==typeof module?module.exports=f():"function"==typeof define&&define.amd?define([],f):"object"==typeof exports?exports.relationship=f():s.relationship=f()}(this,(()=>(()=>{"use strict";var s={d:(f,x)=>{for(var d in x)s.o(x,d)&&!s.o(f,d)&&Object.defineProperty(f,d,{enumerable:!0,get:x[d]})},o:(s,f)=>Object.prototype.hasOwnProperty.call(s,f)},f={};s.d(f,{default:()=>z});const x=[{exp:/^(.+)&o([^#]+)&l/g,str:"$1$2"},{exp:/^(.+)&l([^#]+)&o/g,str:"$1$2"},{exp:/^(.+)?,o([sb])([^#]+)&l/g,str:"$1,x$2$3"},{exp:/^(.+)?,l([sb])([^#]+)&o/g,str:"$1,x$2$3"},{exp:/(,[ds],(.+),[ds])&[ol]/g,str:"$1"},{exp:/(,o[sb])+(,o[sb])/,str:"$2"},{exp:/(,l[sb])+(,l[sb])/,str:"$2"},{exp:/^(.*)(,[fh1])(,[olx][sb])+,[olx]b(.*)$/,str:"$1$2,xb$4#$1$2$4"},{exp:/^(.*)(,[mw0])(,[olx][sb])+,[olx]s(.*)$/,str:"$1$2,xs$4#$1$2$4"},{exp:/(,[fh1])(,[olx][sb])+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb])+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb],[olx]b(.+)?$/,str:",xb$1#$1"},{exp:/^,[olx][sb],[olx]s(.+)?$/,str:",xs$1#$1"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](,[mf])/g,str:"$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*)(,[fh1]|[xol]b),[mf],s(.*)$/,str:"$1$2,xb$3#$1$2$3"},{exp:/^(.*)(,[mw0]|[xol]s),[mf],d(.*)$/,str:"$1$2,xs$3#$1$2$3"},{exp:/(,[mw0]|[xol]s),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",xb$1#,1$1"},{exp:/^,[mf],d(.+)?$/,str:",xs$1#,0$1"},{exp:/,[ds]&o,ob/g,str:",s&o"},{exp:/,[ds]&o,os/g,str:",d&o"},{exp:/,[ds]&l,lb/g,str:",s&l"},{exp:/,[ds]&l,ls/g,str:",d&l"},{exp:/,[ds](&[ol])?,[olx]s/g,str:",d"},{exp:/,[ds](&[ol])?,[olx]b/g,str:",s"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,m/g,str:"$1"},{exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,f/g,str:"$1,h"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,f/g,str:"$1"},{exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,m/g,str:"$1,w"},{exp:/^,[ds],m(.+)?$/,str:",w$1#$1"},{exp:/^,[ds],f(.+)?$/,str:",h$1#$1"},{exp:/,[wh](,[ds])/g,str:"$1"},{exp:/,w,h|,h,w/g,str:""},{exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g,str:"$1$2$4#$1[$3]$4"},{exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g,str:"$1$2$4#$1$3$4"}],d={"":["自己","我","俺","吾","本人","在下"],"[f,f|f,m|m,f],[f,m],f":["老太奶爺","祖太奶爺"],"[f,f|f,m|m,f],[f,m],m":["老太奶奶","祖太奶奶"],"[f,m|m,f|m,m],[f,m],f":["老太姥爺","祖太姥爺"],"[f,m|m,f|m,m],[f,m],m":["老太姥姥","祖太姥姥"],"[f|m],[f|m],f":["太老爺"],"[f|m],[f|m],f,ob":["伯太老爺"],"[f|m],[f|m],f,ob,w":["伯太老姥"],"[f|m],[f|m],f,lb":["叔太老爺"],"[f|m],[f|m],f,lb,w":["叔太老姥"],"[f|m],[f|m],f,xs":["姑太老姥"],"[f|m],[f|m],f,xs,h":["姑太老爺"],"[f|m],[f|m],m":["太老姥"],"[f|m],[f|m],m,xb":["舅太老爺"],"[f|m],[f|m],m,xb,w":["舅太老姥"],"[f|m],[f|m],m,xs":["姨太老姥"],"[f|m],[f|m],m,xs,h":["姨太老爺"],"[f,f|f,m|m,f],f":["太奶爺","祖奶爺"],"[f,f|f,m|m,f],f,ob":["伯太奶爺","太伯奶爺"],"[f,f|f,m|m,f],f,ob,w":["伯太奶奶","太伯奶奶"],"[f,f|f,m|m,f],f,lb":["叔太奶爺","太叔奶爺"],"[f,f|f,m|m,f],f,lb,w":["叔太奶奶","太叔奶奶"],"[f,f|f,m|m,f],f,xs":["姑太奶奶","太姑奶奶"],"[f,f|f,m|m,f],f,xs,h":["姑太奶爺","太姑奶爺"],"[f,f|f,m|m,f],m":["太奶奶","祖奶奶"],"[f,f|f,m|m,f],m,xb":["舅太奶爺","太舅奶爺"],"[f,f|f,m|m,f],m,xb,w":["舅太奶奶","太舅奶奶"],"[f,f|f,m|m,f],m,xs":["姨太奶奶","太姨奶奶"],"[f,f|f,m|m,f],m,xs,h":["姨太奶爺","太姨奶爺"],"[f,m|m,f|m,m],f":["太姥爺","祖姥爺","太毑爺"],"[f,m|m,f|m,m],f,ob":["伯太姥爺","伯叔姥爺"],"[f,m|m,f|m,m],f,ob,w":["伯太姥姥","太伯姥姥"],"[f,m|m,f|m,m],f,lb":["叔太姥爺","太叔姥爺"],"[f,m|m,f|m,m],f,lb,w":["叔太姥姥","太叔姥姥"],"[f,m|m,f|m,m],f,xs":["姑太姥姥","太姑姥姥"],"[f,m|m,f|m,m],f,xs,h":["姑太姥爺","太姑姥爺"],"[f,m|m,f|m,m],m":["太姥姥","祖姥姥","太毑毑","太姥"],"[f,m|m,f|m,m],m,xb":["舅太姥爺","太舅姥爺"],"[f,m|m,f|m,m],m,xb,w":["舅太姥姥","太舅姥姥"],"[f,m|m,f|m,m],m,xs":["姨太姥姥","太姨姥姥"],"[f,m|m,f|m,m],m,xs,h":["姨太姥爺","太姨姥爺"],"[f|m],[f|m],[f|m]":["曾祖輩","祖祖","老太"],"[f|m],[f|m]":["祖輩"],"[f|m],f":["老爺"],"[f|m],f,ob":["伯老爺"],"[f|m],f,ob,w":["伯老姥"],"[f|m],f,lb":["叔老爺"],"[f|m],f,lb,w":["叔老姥"],"[f|m],f,xs":["姑老姥"],"[f|m],f,xs,h":["姑老爺"],"[f|m],m":["老姥"],"[f|m],m,xb":["舅老爺"],"[f|m],m,xb,w":["舅老姥"],"[f|m],m,xs":["姨老姥"],"[f|m],m,xs,h":["姨老爺"],"f,f,[f|m]":["曾祖父母"],"f,f,[f,xs|m,xb],s":["舅姑爺爺","舅姑爺"],"f,[f|m]":["祖父母","爺爺奶奶"],"f,[ob|ob,w]":["伯父母"],"f,[lb|lb,w]":["叔父母"],"f,xb,[s|d]":["堂兄弟姐妹","堂姐妹兄弟","從父兄弟姐妹"],"f,[xs|xs,h]":["姑父母"],"f,xs,[s|d]":["姑表兄弟姐妹"],"m,[f|m],f":["老外公","老外爺","老姥爺"],"m,[Line truncated
|
||||||
@@ -35,7 +35,7 @@ var options = {
|
|||||||
text:'', //目标对象:目标对象的称谓汉字表达,称谓间用‘的’字分隔
|
text:'', //目标对象:目标对象的称谓汉字表达,称谓间用‘的’字分隔
|
||||||
target:'', //相对对象:相对对象的称谓汉字表达,称谓间用‘的’字分隔,空表示自己
|
target:'', //相对对象:相对对象的称谓汉字表达,称谓间用‘的’字分隔,空表示自己
|
||||||
sex:-1, //本人性别:0表示女性,1表示男性
|
sex:-1, //本人性别:0表示女性,1表示男性
|
||||||
type:'default', //转换类型:'default'计算称谓,'chain'计算关系
|
type:'default', //转换类型:'default'计算称谓,'chain'计算关系链,'pair'计算关系合称
|
||||||
reverse:false, //称呼方式:true对方称呼我,false我称呼对方
|
reverse:false, //称呼方式:true对方称呼我,false我称呼对方
|
||||||
mode:'default' //模式选择:使用setMode方法定制不同地区模式,在此选择自定义模式
|
mode:'default' //模式选择:使用setMode方法定制不同地区模式,在此选择自定义模式
|
||||||
};
|
};
|
||||||
@@ -46,15 +46,24 @@ var options = {
|
|||||||
```js
|
```js
|
||||||
// 如:我应该叫外婆的哥哥什么?
|
// 如:我应该叫外婆的哥哥什么?
|
||||||
relationship({text:'妈妈的妈妈的哥哥'});
|
relationship({text:'妈妈的妈妈的哥哥'});
|
||||||
|
// => ['舅外公']
|
||||||
|
|
||||||
// 如:七舅姥爷应该叫我什么?
|
// 如:七舅姥爷应该叫我什么?
|
||||||
relationship({text:'七舅姥爷','reverse':true,'sex':1});
|
relationship({text:'七舅姥爷',reverse:true,sex:1});
|
||||||
|
// => ['甥外孙']
|
||||||
|
|
||||||
// 如:舅公和我是什么关系?
|
// 如:舅公和我具体是什么关系?
|
||||||
relationship({text:'舅公',sex:0,type:'chain'});
|
relationship({text:'舅公',type:'chain'});
|
||||||
|
// => ['爸爸的妈妈的兄弟', '妈妈的妈妈的兄弟', '老公的妈妈的兄弟']
|
||||||
|
|
||||||
// 如:舅妈如何称呼外婆?
|
// 如:舅妈如何称呼外婆?
|
||||||
relationship({text:'外婆',target:'舅妈',sex:1});
|
relationship({text:'外婆',target:'舅妈',sex:1});
|
||||||
|
// => ['婆婆']
|
||||||
|
|
||||||
|
// 如:外婆和奶奶之间是什么关系?
|
||||||
|
relationship({text:'外婆',target:'奶奶',type:'pair'});
|
||||||
|
// => ['儿女亲家']
|
||||||
|
|
||||||
```
|
```
|
||||||
2. 内部属性:获取当前数据表 `relationship.data`.
|
2. 内部属性:获取当前数据表 `relationship.data`.
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -227,7 +227,7 @@ export default {
|
|||||||
'm,m,xs':['姨外婆','姨婆'],
|
'm,m,xs':['姨外婆','姨婆'],
|
||||||
'm,m,xs,h':['姨外公','姨公','外姨丈公','外丈公'],
|
'm,m,xs,h':['姨外公','姨公','外姨丈公','外丈公'],
|
||||||
// 父系
|
// 父系
|
||||||
'f':['爸爸','父亲','老爸','阿爸','阿父','阿爹','老窦','爹地','依爹','老爹','老汉','老爷子','老子','牙老子','爸','父','爹','老汉儿','牙老倌','爸比','爹爹','爹啲','一世祖'],
|
'f':['爸爸','父亲','老父亲','老爸','阿爸','阿父','阿爹','老窦','爹地','依爹','老爹','老汉','老爷子','老子','牙老子','爸','父','爹','老汉儿','牙老倌','爸比','爹爹','爹啲','一世祖'],
|
||||||
'f,ob':['伯父','伯伯','伯爸','伯爷','依伯','世父','大爷','大爸','大爸爸','大爹','伯儿','大伯','大大','阿伯','伯'],
|
'f,ob':['伯父','伯伯','伯爸','伯爷','依伯','世父','大爷','大爸','大爸爸','大爹','伯儿','大伯','大大','阿伯','伯'],
|
||||||
'f,ob,w':['伯母','伯妈','伯娘','依姆','世母','大娘','大妈','大妈妈','大嬷','伯妇','大嬷','大姆妈','伯姐','姆'],
|
'f,ob,w':['伯母','伯妈','伯娘','依姆','世母','大娘','大妈','大妈妈','大嬷','伯妇','大嬷','大姆妈','伯姐','姆'],
|
||||||
'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','叔儿','仲父','季父','叔仔','依叔','小叔','小爹','小爸','尕爸','幺爸','幺爹','幺叔','细叔','满叔','晚叔','叔'],
|
'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','叔儿','仲父','季父','叔仔','依叔','小叔','小爹','小爸','尕爸','幺爸','幺爹','幺叔','细叔','满叔','晚叔','叔'],
|
||||||
@@ -304,7 +304,7 @@ export default {
|
|||||||
'f,f,f,f,xb,s,s,[s&o|s&l]':['族伯叔父','三从父','族父'],
|
'f,f,f,f,xb,s,s,[s&o|s&l]':['族伯叔父','三从父','族父'],
|
||||||
'f,f,f,f,xb,s,s,[s&o|s&l],w':['族伯叔母','三从母','族母'],
|
'f,f,f,f,xb,s,s,[s&o|s&l],w':['族伯叔母','三从母','族母'],
|
||||||
// 母系
|
// 母系
|
||||||
'm':['妈妈','母亲','老妈','阿妈','阿母','阿娘','老母','妈咪','依妈','老娘','老乸','老妈子','妈子','娘老子','妈','母','娘','阿毑','姆嬷','姆妈','娘亲'],
|
'm':['妈妈','母亲','老母亲','老妈','阿妈','阿母','阿娘','老母','妈咪','依妈','老娘','老乸','老妈子','妈子','娘老子','妈','母','娘','阿毑','姆嬷','姆妈','娘亲'],
|
||||||
'm,ob':['大舅','大舅舅','舅伯','元舅'],
|
'm,ob':['大舅','大舅舅','舅伯','元舅'],
|
||||||
'm,ob,w':['大舅妈','大妗','舅嫲'],
|
'm,ob,w':['大舅妈','大妗','舅嫲'],
|
||||||
'm,lb':['小舅','小舅舅','舅仔','舅父仔','幺舅','老舅','细舅','满舅','尕阿舅'],
|
'm,lb':['小舅','小舅舅','舅仔','舅父仔','幺舅','老舅','细舅','满舅','尕阿舅'],
|
||||||
|
|||||||
+145
-111
@@ -1,6 +1,7 @@
|
|||||||
// 通用方法
|
// 通用方法
|
||||||
import _filter from './filter';
|
import _filter from './filter';
|
||||||
import _map from './map';
|
import _map from './map';
|
||||||
|
import _pair from './pair';
|
||||||
|
|
||||||
var _mode = {}; // 模式数据
|
var _mode = {}; // 模式数据
|
||||||
var _data = Object.assign({},_map); // 最终数据
|
var _data = Object.assign({},_map); // 最终数据
|
||||||
@@ -137,6 +138,71 @@ export function getSelectors(str){
|
|||||||
return isMatch?result:[];
|
return isMatch?result:[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 合并选择器,查找两个对象之间的关系
|
||||||
|
export function mergeSelector(from,to,my_sex){
|
||||||
|
if(my_sex<0){
|
||||||
|
var to_sex = -1;
|
||||||
|
var from_sex = -1;
|
||||||
|
if(from.match(/^,[w1]/)){
|
||||||
|
from_sex = 1;
|
||||||
|
}else if(from.match(/^,[h0]/)){
|
||||||
|
from_sex = 0;
|
||||||
|
}
|
||||||
|
if(to.match(/^,[w1]/)){
|
||||||
|
to_sex = 1;
|
||||||
|
}else if(to.match(/^,[h0]/)){
|
||||||
|
to_sex = 0;
|
||||||
|
}
|
||||||
|
if(from_sex==-1&&to_sex>-1){
|
||||||
|
my_sex = to_sex;
|
||||||
|
}else if(from_sex>-1&&to_sex==-1){
|
||||||
|
my_sex = from_sex;
|
||||||
|
}else if(from_sex==to_sex){
|
||||||
|
my_sex = from_sex;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var sex = my_sex;
|
||||||
|
var from_ids = selector2id(from,my_sex);
|
||||||
|
var to_ids = selector2id(to,my_sex);
|
||||||
|
var to_rids = [];
|
||||||
|
if(!from_ids.length||!to_ids.length){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(to){
|
||||||
|
var toIsMale = false;
|
||||||
|
var toIsFemale = false;
|
||||||
|
to_ids.forEach(function(id){
|
||||||
|
var selector = ','+id;
|
||||||
|
if(selector.match(/,([fhs1](&[ol])?|[olx]b)$/)){
|
||||||
|
toIsMale = true;
|
||||||
|
}
|
||||||
|
if(selector.match(/,([mwd0](&[ol])?|[olx]s)$/)){
|
||||||
|
toIsFemale = true;
|
||||||
|
}
|
||||||
|
to_rids = to_rids.concat(reverseId(id,my_sex));
|
||||||
|
});
|
||||||
|
to_rids = unique(to_rids);
|
||||||
|
if(toIsMale&&toIsFemale){
|
||||||
|
sex = -1;
|
||||||
|
}else if(toIsMale){
|
||||||
|
sex = 1;
|
||||||
|
}else if(toIsFemale){
|
||||||
|
sex = 0;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
to_rids = [''];
|
||||||
|
}
|
||||||
|
// console.log('[from_ids]',from_ids,'to_rids',to_rids);
|
||||||
|
var from_selector = from_ids.length>1?'['+from_ids.join('|')+']':from_ids[0];
|
||||||
|
var to_selector = to_rids.length>1?'['+to_rids.join('|')+']':to_rids[0];
|
||||||
|
return {
|
||||||
|
'selector':(to?','+to_selector:'')+(from?','+from_selector:''),
|
||||||
|
'sex':sex
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
// 选择器转ID
|
// 选择器转ID
|
||||||
export function selector2id(selector,sex){
|
export function selector2id(selector,sex){
|
||||||
var result = [];
|
var result = [];
|
||||||
@@ -158,6 +224,9 @@ export function selector2id(selector,sex){
|
|||||||
}
|
}
|
||||||
// console.log('[selector]',selector);
|
// console.log('[selector]',selector);
|
||||||
var getId = function(selector,sex){
|
var getId = function(selector,sex){
|
||||||
|
if(!selector.match(/^,/)){
|
||||||
|
selector = ','+selector;
|
||||||
|
}
|
||||||
if(sex>-1&&selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){
|
if(sex>-1&&selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){
|
||||||
selector = ','+sex+selector;
|
selector = ','+sex+selector;
|
||||||
}
|
}
|
||||||
@@ -190,55 +259,6 @@ export function selector2id(selector,sex){
|
|||||||
return unique(result);
|
return unique(result);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 通过ID获取数据
|
|
||||||
export function getItemsById(id){
|
|
||||||
var items = [];
|
|
||||||
var getData = function(d){
|
|
||||||
var res = [];
|
|
||||||
if(_data[d]){
|
|
||||||
res.push(_data[d][0]);
|
|
||||||
}else{
|
|
||||||
for(var i in _data){
|
|
||||||
if(i.replace(/&[ol]/g,'')==d){
|
|
||||||
res.push(_data[i][0]);
|
|
||||||
}else{
|
|
||||||
var expr = d;
|
|
||||||
while (expr.match(/[ol](b|s)/)){
|
|
||||||
expr = expr.replace(/[ol](b|s)/,'x$1');
|
|
||||||
if(expr==i){
|
|
||||||
res.push(_data[i][0]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
};
|
|
||||||
if(_data[id]){ // 直接匹配称呼
|
|
||||||
items.push(_data[id][0]);
|
|
||||||
}else{
|
|
||||||
items = getData(id);
|
|
||||||
// 忽略年龄条件查找
|
|
||||||
if(!items.length){
|
|
||||||
id = id.replace(/&[ol]/g,'');
|
|
||||||
items = getData(id);
|
|
||||||
}
|
|
||||||
// 忽略年龄条件查找
|
|
||||||
if(!items.length){
|
|
||||||
id = id.replace(/[ol](b|s)/g,'x$1');
|
|
||||||
items = getData(id);
|
|
||||||
}
|
|
||||||
// 缩小访问查找
|
|
||||||
if(!items.length){
|
|
||||||
var l = id.replace(/x/g,'l');
|
|
||||||
var o = id.replace(/x/g,'o');
|
|
||||||
items = items.concat(getData(o),getData(l));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return items;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 逆转ID
|
// 逆转ID
|
||||||
export function reverseId(id,sex){
|
export function reverseId(id,sex){
|
||||||
var hash = {
|
var hash = {
|
||||||
@@ -296,89 +316,103 @@ export function reverseId(id,sex){
|
|||||||
return [''];
|
return [''];
|
||||||
};
|
};
|
||||||
|
|
||||||
// 通过ID获取关系链条
|
// 通过ID获取关系称呼
|
||||||
|
export function getItemsById(id){
|
||||||
|
var items = [];
|
||||||
|
var getData = function(d){
|
||||||
|
var res = [];
|
||||||
|
if(_data[d]){
|
||||||
|
res.push(_data[d][0]);
|
||||||
|
}else{
|
||||||
|
for(var i in _data){
|
||||||
|
if(i.replace(/&[ol]/g,'')==d){
|
||||||
|
res.push(_data[i][0]);
|
||||||
|
}else{
|
||||||
|
var expr = d;
|
||||||
|
while (expr.match(/[ol](b|s)/)){
|
||||||
|
expr = expr.replace(/[ol](b|s)/,'x$1');
|
||||||
|
if(expr==i){
|
||||||
|
res.push(_data[i][0]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
if(_data[id]){ // 直接匹配称呼
|
||||||
|
items.push(_data[id][0]);
|
||||||
|
}else{
|
||||||
|
items = getData(id);
|
||||||
|
// 忽略年龄条件查找
|
||||||
|
if(!items.length){
|
||||||
|
id = id.replace(/&[ol]/g,'');
|
||||||
|
items = getData(id);
|
||||||
|
}
|
||||||
|
// 忽略年龄条件查找
|
||||||
|
if(!items.length){
|
||||||
|
id = id.replace(/[ol](b|s)/g,'x$1');
|
||||||
|
items = getData(id);
|
||||||
|
}
|
||||||
|
// 缩小访问查找
|
||||||
|
if(!items.length){
|
||||||
|
var l = id.replace(/x/g,'l');
|
||||||
|
var o = id.replace(/x/g,'o');
|
||||||
|
items = items.concat(getData(o),getData(l));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return items;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 通过ID获取关系链
|
||||||
export function getChainById(id){
|
export function getChainById(id){
|
||||||
var arr = id.split(',');
|
var arr = id.split(',');
|
||||||
return arr.map(function(sign){
|
return arr.map(function(sign){
|
||||||
var key = sign.replace(/&[ol]/,'');
|
var key = sign.replace(/&[ol]/,'');
|
||||||
var data = Object.assign({},_data,{
|
var data = Object.assign({},_data,{
|
||||||
'xb':['兄弟'],
|
'xb':['兄弟'],
|
||||||
'xs':['姐妹'],
|
'xs':['姐妹']
|
||||||
});
|
});
|
||||||
return data[key][0];
|
return data[key][0];
|
||||||
}).join('的');
|
}).join('的');
|
||||||
};
|
};
|
||||||
|
|
||||||
// 合并选择器,查找两个对象之间的关系
|
// 通过ID获取关系合称
|
||||||
export function mergeSelector(from,to,my_sex){
|
export function getPairsByIds(id1,id2){
|
||||||
if(my_sex<0){
|
var result = [];
|
||||||
var to_sex = -1;
|
var result_r = [];
|
||||||
var from_sex = -1;
|
for(var key in _pair){
|
||||||
if(from.match(/^,[w1]/)){
|
var selectors = key.split('#');
|
||||||
from_sex = 1;
|
if(selectors.length>1){
|
||||||
}else if(from.match(/^,[h0]/)){
|
var list1 = selector2id(selectors[0]);
|
||||||
from_sex = 0;
|
var list2 = selector2id(selectors[1]);
|
||||||
}
|
var list1_r = list1.map(function(selector){
|
||||||
if(to.match(/^,[w1]/)){
|
return selector.replace(/&[o|l]/,'').replace(/[o|l]b/,'xb').replace(/[o|l]s/,'xs');
|
||||||
to_sex = 1;
|
});
|
||||||
}else if(to.match(/^,[h0]/)){
|
var list2_r = list2.map(function(selector){
|
||||||
to_sex = 0;
|
return selector.replace(/&[o|l]/,'').replace(/[o|l]b/,'xb').replace(/[o|l]s/,'xs');
|
||||||
}
|
});
|
||||||
if(from_sex==-1&&to_sex>-1){
|
if(list1.indexOf(id1)>-1&&list2.indexOf(id2)>-1||list1.indexOf(id2)>-1&&list2.indexOf(id1)>-1){
|
||||||
my_sex = to_sex;
|
result.push(_pair[key][0]);
|
||||||
}else if(from_sex>-1&&to_sex==-1){
|
|
||||||
my_sex = from_sex;
|
|
||||||
}else if(from_sex==to_sex){
|
|
||||||
my_sex = from_sex;
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var sex = my_sex;
|
|
||||||
var from_ids = selector2id(from,my_sex);
|
|
||||||
var to_ids = selector2id(to,my_sex);
|
|
||||||
var to_rids = [];
|
|
||||||
if(!from_ids.length||!to_ids.length){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(to){
|
|
||||||
var toIsMale = false;
|
|
||||||
var toIsFemale = false;
|
|
||||||
to_ids.forEach(function(id){
|
|
||||||
if(id.match(/([fhs1](&[ol])?|[olx]b)$/)){
|
|
||||||
toIsMale = true;
|
|
||||||
}
|
}
|
||||||
if(id.match(/([mwd0](&[ol])?|[olx]s)$/)){
|
if(list1_r.indexOf(id1)>-1&&list2_r.indexOf(id2)>-1||list1_r.indexOf(id2)>-1&&list2_r.indexOf(id1)>-1){
|
||||||
toIsFemale = true;
|
result_r.push(_pair[key][0]);
|
||||||
}
|
}
|
||||||
to_rids = to_rids.concat(reverseId(id,my_sex));
|
|
||||||
});
|
|
||||||
to_rids = unique(to_rids);
|
|
||||||
if(toIsMale&&toIsFemale){
|
|
||||||
sex = -1;
|
|
||||||
}else if(toIsMale){
|
|
||||||
sex = 1;
|
|
||||||
}else if(toIsFemale){
|
|
||||||
sex = 0;
|
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
to_rids = [''];
|
|
||||||
}
|
}
|
||||||
// console.log('[from_ids]',from_ids,'to_rids',to_rids);
|
if(!result.length){
|
||||||
var from_selector = from_ids.length>1?'['+from_ids.join('|')+']':from_ids[0];
|
result = result_r;
|
||||||
var to_selector = to_rids.length>1?'['+to_rids.join('|')+']':to_rids[0];
|
}
|
||||||
return {
|
return result;
|
||||||
'selector':(to?','+to_selector:'')+(from?','+from_selector:''),
|
|
||||||
'sex':sex
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// 设置模式
|
// 设置模式数据
|
||||||
export function setMode(sign,data){
|
export function setMode(sign,data){
|
||||||
_mode[sign] = Object.assign(_mode[sign]||{},data);
|
_mode[sign] = Object.assign(_mode[sign]||{},data);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 获取指定模式数据
|
// 获取模式数据
|
||||||
export function getDataByMode(sign){
|
export function getDataByMode(sign){
|
||||||
var data = Object.assign({},_map);
|
var data = Object.assign({},_map);
|
||||||
if(sign&&_mode[sign]){
|
if(sign&&_mode[sign]){
|
||||||
|
|||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
// 关系合称
|
||||||
|
export default {
|
||||||
|
'f#s':['父子'],
|
||||||
|
'm#s':['母子'],
|
||||||
|
'f#d':['父女'],
|
||||||
|
'm#d':['母女'],
|
||||||
|
'h#w':['夫妻'],
|
||||||
|
'ob#lb':['兄弟'],
|
||||||
|
'ob#ls':['兄妹'],
|
||||||
|
'os#ls':['姐妹'],
|
||||||
|
'os#lb':['姐弟'],
|
||||||
|
'w,f#d,h':['翁婿'],
|
||||||
|
'w,m#d,h':['母婿'],
|
||||||
|
'h,f#s,w':['翁媳'],
|
||||||
|
'h,m#s,w':['婆媳'],
|
||||||
|
'f,f#s,[s|d]':['公孙'],
|
||||||
|
'[f|m],[f|m]#[s|d],[s|d]':['祖孙'],
|
||||||
|
'f,xb#xb,[s|d]':['叔侄'],
|
||||||
|
'f,xb,w#h,xb,[s|d]':['叔侄'],
|
||||||
|
'f,xs#xb,[s|d]':['姑侄'],
|
||||||
|
'f,xs,h#w,xb,[s|d]':['姑侄'],
|
||||||
|
'm,xb#xs,[s|d]':['舅甥'],
|
||||||
|
'm,xb,w#h,xs,[s|d]':['舅甥'],
|
||||||
|
'm,xs#xs,[s|d]':['姨甥'],
|
||||||
|
'm,xs,h#w,xs,[s|d]':['姨甥'],
|
||||||
|
'f,xb,s&o#f,xb,s&l':['堂兄弟'],
|
||||||
|
'f,xb,s&o#f,xb,d&l':['堂兄妹'],
|
||||||
|
'f,xb,d&o#f,xb,s&l':['堂姐弟'],
|
||||||
|
'f,xb,d&o#f,xb,d&l':['堂姐妹'],
|
||||||
|
'f,xs,s&o#m,xb,s&l':['表兄弟'],
|
||||||
|
'm,xb,s&o#f,xs,s&l':['表兄弟'],
|
||||||
|
'f,xs,s&o#m,xb,d&l':['表兄妹'],
|
||||||
|
'm,xb,s&o#f,xs,d&l':['表兄妹'],
|
||||||
|
'f,xs,d&o#m,xb,d&l':['表姐妹'],
|
||||||
|
'm,xb,d&o#f,xs,d&l':['表姐妹'],
|
||||||
|
'f,xs,d&o#m,xb,s&l':['表姐弟'],
|
||||||
|
'm,xb,d&o#f,xs,s&l':['表姐弟'],
|
||||||
|
'm,xs,s&o#m,xs,s&l':['姨兄弟'],
|
||||||
|
'm,xs,s&o#m,xs,d&l':['姨兄妹'],
|
||||||
|
'm,xs,d&o#m,xs,s&l':['姨姐弟'],
|
||||||
|
'm,xs,d&o#m,xs,d&l':['姨姐妹'],
|
||||||
|
'h,ob,w#h,lb,w':['妯娌'],
|
||||||
|
'w,os,h#w,ob,h':['连襟','连桥'],
|
||||||
|
'xs,h#w,xb':['郎舅'],
|
||||||
|
'xs,h#w,xs':['郎姨'],
|
||||||
|
'xb,w#h,xb':['叔嫂'],
|
||||||
|
'xb,w#h,xs':['姑嫂'],
|
||||||
|
'd,h,[f|m]#s,w,[f|m]':['儿女亲家'],
|
||||||
|
}
|
||||||
+20
-12
@@ -1,15 +1,15 @@
|
|||||||
import {
|
import {
|
||||||
unique,
|
unique,
|
||||||
getSelectors,
|
getSelectors,
|
||||||
selector2id,
|
|
||||||
getItemsById,
|
|
||||||
reverseId,
|
|
||||||
getChainById,
|
|
||||||
mergeSelector,
|
mergeSelector,
|
||||||
|
selector2id,
|
||||||
|
reverseId,
|
||||||
|
getItemsById,
|
||||||
|
getChainById,
|
||||||
|
getPairsByIds,
|
||||||
setMode,
|
setMode,
|
||||||
getDataByMode
|
getDataByMode
|
||||||
} from './method';
|
} from './method';
|
||||||
|
|
||||||
var _data = getDataByMode(); // 最终数据
|
var _data = getDataByMode(); // 最终数据
|
||||||
|
|
||||||
// 对外方法
|
// 对外方法
|
||||||
@@ -51,17 +51,25 @@ var relationship = function (parameter){
|
|||||||
if(options.type=='chain'){
|
if(options.type=='chain'){
|
||||||
temps.forEach(function(id){
|
temps.forEach(function(id){
|
||||||
var item = getChainById(id);
|
var item = getChainById(id);
|
||||||
if(item){
|
if(data['sex']>-1&&_data[data['sex']+','+id]){
|
||||||
if(id.match(/^[^hw]/)){
|
if(data['sex']==0){
|
||||||
if(data['sex']==0){
|
item = '(女性)'+item;
|
||||||
item = '(女性)'+item;
|
}else if(data['sex']==1){
|
||||||
}else if(data['sex']==1){
|
item = '(男性)'+item;
|
||||||
item = '(男性)'+item;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if(item){
|
||||||
result.push(item);
|
result.push(item);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}else if(options.type=='pair'){
|
||||||
|
temps = reverseId(id,data['sex']);
|
||||||
|
temps.forEach(function(r_id){
|
||||||
|
var pairs = getPairsByIds(id,r_id);
|
||||||
|
if(pairs.length){
|
||||||
|
result = result.concat(pairs);
|
||||||
|
}
|
||||||
|
});
|
||||||
}else{
|
}else{
|
||||||
temps.forEach(function(id){
|
temps.forEach(function(id){
|
||||||
var items = getItemsById(id);
|
var items = getItemsById(id);
|
||||||
|
|||||||
@@ -27,5 +27,6 @@ test('relationship.js show to be tested', function (t) {
|
|||||||
t.deepEqual(relationship({text:'我',target:'爸爸'}),['儿子','女儿']);
|
t.deepEqual(relationship({text:'我',target:'爸爸'}),['儿子','女儿']);
|
||||||
t.deepEqual(relationship({text:'爱人',target:'娘家侄子'}),['姑丈']);
|
t.deepEqual(relationship({text:'爱人',target:'娘家侄子'}),['姑丈']);
|
||||||
t.deepEqual(relationship({text:'岳母的配偶的孩子的爸爸'}),['岳父']);
|
t.deepEqual(relationship({text:'岳母的配偶的孩子的爸爸'}),['岳父']);
|
||||||
|
t.deepEqual(relationship({text:'舅妈',target:'外婆',type:'pair'}),['婆媳']);
|
||||||
t.end();
|
t.end();
|
||||||
});
|
});
|
||||||
Reference in new issue
Block a user