updated 计算规则模块化

This commit is contained in:
PASSER-BY committed 2022-11-25 00:43:36 +08:00
1 parent 6fc0260e27
commit adcbd8530b
8 files changed
+117 -57

No files matched your search

+2 -2
View File
@@ -8,6 +8,6 @@
* Released under the MIT License * Released under the MIT License
* https://github.com/mumuy/relationship * https://github.com/mumuy/relationship
* *
* Created on: 2022-11-24 * Created on: 2022-11-25
*/ */
!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](&\d+)?)([^#]+)&l/g,str:"$1,x$2$4"},{exp:/^(.+)?,l([sb](&\d+)?)([^#]+)&o/g,str:"$1,x$2$4"},{exp:/(,o[sb](&\d+)?)+(,o[sb])(&\d+)?/,str:"$3$4"},{exp:/(,l[sb](&\d+)?)+(,l[sb])(&\d+)?/,str:"$3$4"},{exp:/^(.*,[fh1])(,[olx][sb](&\d+)?)+,[olx]b(.*)$/,str:"$1,xb$4#$1$4"},{exp:/^(.*,[mw0])(,[olx][sb](&\d+)?)+,[olx]s(.*)$/,str:"$1,xs$4#$1$4"},{exp:/(,[fh1])(,[olx][sb](&\d+)?)+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb](&\d+)?)+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb](&\d+)?,[olx]b(.+)?$/,str:",xb$2#$2"},{exp:/^,[olx][sb](&\d+)?,[olx]s(.+)?$/,str:",xs$2#$2"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](&\d+)?(,[mf])/g,str:"$2"},{exp:/,[mf],d(&\d+)/,str:",xs$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s(&\d+)/,str:",xb$1"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*,[fh1]|[xol]b(&\d+)?),[mf],s(.*)$/,str:"$1,xb$3#$1$3"},{exp:/^(.*,[mw0]|[xol]s(&\d+)?),[mf],d(.*)$/,str:"$1,xs$3#$1$3"},{exp:/(,[mw0]|[xol]s(&\d+)?),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b(&\d+)?),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",xb$1#,1$1"},{exp:/^,[mf],d(.+)?$/,str:",xs$1#,0$1"},{exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)/g,str:",s$2"},{exp:/,[ds](&[ol\d]+)?,[olx]s(&\d+)/g,str:",d$2"},{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\d]+)?,[olx]s(&\d+)?/g,str:",d$2"},{exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)?/g,str:",s$2"},{exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,m/g,str:"$1"},{exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,str:"$1,h"},{exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,str:"$1"},{exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,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={"{G2C}":{"[f|m],[f|m],[f|m],[f,xs|m,xb|m,xs],[s|d],[s|d]":["重表"],"[f|m],[f|m],[f,xs|m,xb|m,xs],[s|d]":["重表"]},"{G2}":{"f,f,xb":["从祖"],"m,f,xb":["外从祖"]},"{G1}":{"f,xb":["堂","同堂","亲堂","从父","叔伯","从"],"f,xs":["姑表","姑家"],"m,xb":["舅表","舅家"],"m,xs":["姨","从母","两姨","姨表","从"],"f,f,xb,s":["从堂","再从父","远堂","堂叔伯","叔伯叔伯","再从"],"f,f,xb,d":["堂姑表","从父姑表"],"f,f,xs,s":["姑表叔表"],"f,f,xs,d":["姑表姑表"],"f,m,xb,s":["舅表叔表"],"f,m,xb,d":["舅表姑表"],"f,m,xs,s":["从母叔表"],"f,m,xs,d":["从母姑表"],"m,f,xb,s":["堂舅表","从父舅表"],"m,f,xb,d":["堂姨表","从父姨表"],"m,f,xs,s":["姑表舅表"],"m,f,xs,d":["姑表姨表"],"m,m,xb,s":["舅表舅表"],"m,m,xb,d":["舅表姨表"],"m,m,xs,s":["从母舅表"],"m,m,xs,d":["再从母","姨姨","再从"],"f,f,f,xb,s,s":["三从父","再从堂","远堂","族","三从"],"m,m,m,xs,d,d":["三从母","三从"],"f,f,f,f,xb,s,s,s":["四从父","三从堂","远堂","族","四从"],"m,m,m,m,xs,d,d,d":["四从母","四从"]},"{G1M}":{"f,ob":["伯"],"f,lb":["叔","仲","季"],"m,xb":["舅"],"f,f,xb,s":["堂","从父","叔伯","从"],"f,f,xb,s&o":["堂伯","从父伯","叔伯伯","从伯"],"f,f,xb,s&l":["堂叔","从父叔","叔伯叔","从叔"],"f,f,f,xb,s,s":["从堂"],"f,f,f,xb,s,s&o":["从堂伯"],"f,f,f,xb,s,s&l":["从堂叔"],"f,f,f,f,xb,s,s,s":["族"],"f,f,xs,s&o":["姑表伯"],"f,f,xs,s&l":["姑表叔"],"f,m,xb,s&o":["舅表伯"],"f,m,xb,s&l":["舅表叔"],"f,m,xs,s&o":["姨伯","从母伯","从伯"],"f,m,xs,s&l":["姨叔","从母叔","从叔"],"m,f,xb,s":["堂舅","从父舅"],"m,f,xs,s":["姑表舅"],"m,m,xb,s":["舅表舅"],"m,m,xs,s":["姨舅","从母舅"]},"{G1W}":{"f,xs":["姑"],"m,xs":["姨","姏","茙","荻"],"f,f,xb,d":["堂姑","从父姑"],"f,f,f,xb,s,d":["从堂姑"],"f,f,xs,d":["姑表姑"],"f,m,xb,d":["舅表姑"],"f,m,xs,d":["姨姑","从母姑"],"m,f,xb,d":["堂姨","从父姨"],"m,f,xs,d":["姑表姨"],"m,m,xb,d":["舅表姨"],"m,m,xs,d":["姨姨","从母姨"]},"{G0}":{xb:["侄"],"1,xb":["从"],"1,f,xb,s":["再从"],"1,f,f,xb,s,s":["三从"],"h,xb":["叔侄","叔伯"],"w,xb":["舅侄"],xs:["甥","外甥"],"0,xs":["从"],"0,m,xs,d":["再从"],"0,m,m,xs,d,d":["三从"],"h,xs":["姑甥"],"w,xs":["姨甥","襟侄"]},"{M2W}":{"f,f,xb,w":["叔祖眷"],"m,f,xb,w":["叔外祖眷"],"f,m,xb,w":["舅祖眷"],"m,m,xb,w":["舅外祖眷"]},"{M2M}":{"f,f,xs,h":["姑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:()=>D});const x=[{exp:/^(.+)&o([^#]+)&l/g,str:"$1$2"},{exp:/^(.+)&l([^#]+)&o/g,str:"$1$2"},{exp:/^(.+)?,o([sb](&\d+)?)([^#]+)&l/g,str:"$1,x$2$4"},{exp:/^(.+)?,l([sb](&\d+)?)([^#]+)&o/g,str:"$1,x$2$4"},{exp:/(,o[sb](&\d+)?)+(,o[sb])(&\d+)?/,str:"$3$4"},{exp:/(,l[sb](&\d+)?)+(,l[sb])(&\d+)?/,str:"$3$4"},{exp:/^(.*,[fh1])(,[olx][sb](&\d+)?)+,[olx]b(.*)$/,str:"$1,xb$4#$1$4"},{exp:/^(.*,[mw0])(,[olx][sb](&\d+)?)+,[olx]s(.*)$/,str:"$1,xs$4#$1$4"},{exp:/(,[fh1])(,[olx][sb](&\d+)?)+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb](&\d+)?)+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb](&\d+)?,[olx]b(.+)?$/,str:",xb$2#$2"},{exp:/^,[olx][sb](&\d+)?,[olx]s(.+)?$/,str:",xs$2#$2"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](&\d+)?(,[mf])/g,str:"$2"},{exp:/,[mf],d(&\d+)/,str:",xs$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s(&\d+)/,str:",xb$1"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*,[fh1]|[xol]b(&\d+)?),[mf],s(.*)$/,str:"$1,xb$3#$1$3"},{exp:/^(.*,[mw0]|[xol]s(&\d+)?),[mf],d(.*)$/,str:"$1,xs$3#$1$3"},{exp:/(,[mw0]|[xol]s(&\d+)?),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b(&\d+)?),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",xb$1#,1$1"},{exp:/^,[mf],d(.+)?$/,str:",xs$1#,0$1"},{exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)/g,str:",s$2"},{exp:/,[ds](&[ol\d]+)?,[olx]s(&\d+)/g,str:",d$2"},{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\d]+)?,[olx]s(&\d+)?/g,str:",d$2"},{exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)?/g,str:",s$2"},{exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,m/g,str:"$1"},{exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,str:"$1,h"},{exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,str:"$1"},{exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,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=[{exp:/^(\S+?)(应该|得)?(称呼|叫|喊)(\S+?)(什么|啥)??$/,opt:s=>({text:s[4],target:s[1]})},{exp:/^(\S+?)(应该|得)?(如何|怎么)(称呼|叫|喊)(\S+?)??$/,opt:s=>({text:s[5],target:s[1]})},{exp:/^(\S+?)是(\S+?)的(谁|什么|什么亲戚|啥亲戚|什么人)??$/,opt:s=>({text:s[1],target:s[2],type:s[1].indexOf("的")>-1?"default":"chain"})},{exp:/^(\S+?)(应该|得)?管(\S+?)叫(什么|啥)??$/,opt:s=>({text:s[3],target:s[1]})},{exp:/^(\S+?)(和|与)(\S+?)(之间)?是(什么|啥)关系??$/,opt:s=>({text:s[1],target:s[3],type:"pair"})},{exp:/^(\S+?)对于(\S+?)是(什么|啥)关系??$/,opt:s=>({text:s[1],target:s[2],type:"chain"})},{exp:/^(\S+?)(指的)?是(什么|啥)(意思|关系|亲戚关系|辈分|人)??$/,opt:s=>({text:s[1],type:"chain"})},{exp:/^(\S+?)(应该|得)?(称呼|叫|喊)(什么|啥)??$/,opt:s=>({text:s[1]})},{exp:/^(\S+?)(应该|得)?(如何|怎么)(称呼|叫|喊)??$/,opt:s=>({text:s[1]})},{exp:/^(\S+?)是(谁|什么|什么亲戚|啥亲戚|什么人|什么辈分|啥辈分)??$/,opt:s=>({text:s[1],type:s[1].indexOf("的")>-1?"default":"chain"})}],m=[{exp:/^从表/,arr:["从父姑表","从父舅表","从父姨表","从母姑表","从母舅表","从母叔表"]},{exp:/^表表/,arr:["姑表叔表","姑表姑表","姑表舅表","姑表姨表","舅表叔表","舅表姑表","舅表舅表","舅表姨表"]},{exp:/^([夫妻内外]?)表/,arr:["$1姑表","$1舅表"]},{exp:/^([姑舅])表(?=[^伯叔])/,arr:["$1表伯","$1表叔"]},{exp:/^姻/,arr:["姑姻","姨姻","姊妹姻","女姻"]},{exp:/^眷/,arr:["叔眷","舅眷","兄弟眷","男眷"]},{exp:/^亲家/,arr:["姊妹姻","兄弟眷"]},{exp:/^([堂表姨]?)([曾高天烈太远鼻]?)(祖?)([伯叔姑舅姨])/,arr:["$1$4$2$3"]},{exp:/^([曾高天烈太远鼻]?)祖?王姑/,arr:["姑$1祖母"]},{exp:/^([曾玄来晜仍云耳])([侄甥])/,arr:["$2$1"]},{exp:/^外表([伯叔姑舅姨])/,arr:["姑表$1外","舅表$1外"]},{exp:/([堂表姨]?)外甥/,arr:["$1甥"]},{exp:/^([舅叔])([曾玄外]*)孙/,arr:["$1侄$2孙"]},{exp:/^([姨姑])([曾玄外]*)孙/,arr:["$1甥$2孙"]},{exp:/([孙甥侄])$/,arr:["$1男","$1女"]},{exp:/([姑舅姨叔])([孙外]*)([男女])$/,arr:["$1表侄$2$3","$1表甥$2$3"]},{exp:/祖$/,arr:["祖父"]},{exp:/嫂$/,arr:["兄妇"]},{exp:/女儿$/,arr:["女"]}],b={晜:"兄",哥:"兄",姐:"姊",侄:"姪",婿:"壻",祖父:"王父",祖母:"王母",弟媳:"弟妇",嫂:"兄妇",孙女婿:"孙婿",甥女婿:"甥婿",侄女婿:"侄婿",Line truncated
+2 -2
View File
@@ -8,6 +8,6 @@
* Released under the MIT License * Released under the MIT License
* https://github.com/mumuy/relationship * https://github.com/mumuy/relationship
* *
* Created on: 2022-11-24 * Created on: 2022-11-25
*/ */
!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](&\d+)?)([^#]+)&l/g,str:"$1,x$2$4"},{exp:/^(.+)?,l([sb](&\d+)?)([^#]+)&o/g,str:"$1,x$2$4"},{exp:/(,o[sb](&\d+)?)+(,o[sb])(&\d+)?/,str:"$3$4"},{exp:/(,l[sb](&\d+)?)+(,l[sb])(&\d+)?/,str:"$3$4"},{exp:/^(.*,[fh1])(,[olx][sb](&\d+)?)+,[olx]b(.*)$/,str:"$1,xb$4#$1$4"},{exp:/^(.*,[mw0])(,[olx][sb](&\d+)?)+,[olx]s(.*)$/,str:"$1,xs$4#$1$4"},{exp:/(,[fh1])(,[olx][sb](&\d+)?)+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb](&\d+)?)+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb](&\d+)?,[olx]b(.+)?$/,str:",xb$2#$2"},{exp:/^,[olx][sb](&\d+)?,[olx]s(.+)?$/,str:",xs$2#$2"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](&\d+)?(,[mf])/g,str:"$2"},{exp:/,[mf],d(&\d+)/,str:",xs$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s(&\d+)/,str:",xb$1"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*,[fh1]|[xol]b(&\d+)?),[mf],s(.*)$/,str:"$1,xb$3#$1$3"},{exp:/^(.*,[mw0]|[xol]s(&\d+)?),[mf],d(.*)$/,str:"$1,xs$3#$1$3"},{exp:/(,[mw0]|[xol]s(&\d+)?),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b(&\d+)?),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",xb$1#,1$1"},{exp:/^,[mf],d(.+)?$/,str:",xs$1#,0$1"},{exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)/g,str:",s$2"},{exp:/,[ds](&[ol\d]+)?,[olx]s(&\d+)/g,str:",d$2"},{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\d]+)?,[olx]s(&\d+)?/g,str:",d$2"},{exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)?/g,str:",s$2"},{exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,m/g,str:"$1"},{exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,str:"$1,h"},{exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,str:"$1"},{exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,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={"{G2C}":{"[f|m],[f|m],[f|m],[f,xs|m,xb|m,xs],[s|d],[s|d]":["重表"],"[f|m],[f|m],[f,xs|m,xb|m,xs],[s|d]":["重表"]},"{G2}":{"f,f,xb":["從祖"],"m,f,xb":["外從祖"]},"{G1}":{"f,xb":["堂","同堂","親堂","從父","叔伯","從"],"f,xs":["姑表","姑家"],"m,xb":["舅表","舅家"],"m,xs":["姨","從母","兩姨","姨表","從"],"f,f,xb,s":["從堂","再從父","遠堂","堂叔伯","叔伯叔伯","再從"],"f,f,xb,d":["堂姑表","從父姑表"],"f,f,xs,s":["姑表叔表"],"f,f,xs,d":["姑表姑表"],"f,m,xb,s":["舅表叔表"],"f,m,xb,d":["舅表姑表"],"f,m,xs,s":["從母叔表"],"f,m,xs,d":["從母姑表"],"m,f,xb,s":["堂舅表","從父舅表"],"m,f,xb,d":["堂姨表","從父姨表"],"m,f,xs,s":["姑表舅表"],"m,f,xs,d":["姑表姨表"],"m,m,xb,s":["舅表舅表"],"m,m,xb,d":["舅表姨表"],"m,m,xs,s":["從母舅表"],"m,m,xs,d":["再從母","姨姨","再從"],"f,f,f,xb,s,s":["三從父","再從堂","遠堂","族","三從"],"m,m,m,xs,d,d":["三從母","三從"],"f,f,f,f,xb,s,s,s":["四從父","三從堂","遠堂","族","四從"],"m,m,m,m,xs,d,d,d":["四從母","四從"]},"{G1M}":{"f,ob":["伯"],"f,lb":["叔","仲","季"],"m,xb":["舅"],"f,f,xb,s":["堂","從父","叔伯","從"],"f,f,xb,s&o":["堂伯","從父伯","叔伯伯","從伯"],"f,f,xb,s&l":["堂叔","從父叔","叔伯叔","從叔"],"f,f,f,xb,s,s":["從堂"],"f,f,f,xb,s,s&o":["從堂伯"],"f,f,f,xb,s,s&l":["從堂叔"],"f,f,f,f,xb,s,s,s":["族"],"f,f,xs,s&o":["姑表伯"],"f,f,xs,s&l":["姑表叔"],"f,m,xb,s&o":["舅表伯"],"f,m,xb,s&l":["舅表叔"],"f,m,xs,s&o":["姨伯","從母伯","從伯"],"f,m,xs,s&l":["姨叔","從母叔","從叔"],"m,f,xb,s":["堂舅","從父舅"],"m,f,xs,s":["姑表舅"],"m,m,xb,s":["舅表舅"],"m,m,xs,s":["姨舅","從母舅"]},"{G1W}":{"f,xs":["姑"],"m,xs":["姨","姏","茙","荻"],"f,f,xb,d":["堂姑","從父姑"],"f,f,f,xb,s,d":["從堂姑"],"f,f,xs,d":["姑表姑"],"f,m,xb,d":["舅表姑"],"f,m,xs,d":["姨姑","從母姑"],"m,f,xb,d":["堂姨","從父姨"],"m,f,xs,d":["姑表姨"],"m,m,xb,d":["舅表姨"],"m,m,xs,d":["姨姨","從母姨"]},"{G0}":{xb:["侄"],"1,xb":["從"],"1,f,xb,s":["再從"],"1,f,f,xb,s,s":["三從"],"h,xb":["叔侄","叔伯"],"w,xb":["舅侄"],xs:["甥","外甥"],"0,xs":["從"],"0,m,xs,d":["再從"],"0,m,m,xs,d,d":["三從"],"h,xs":["姑甥"],"w,xs":["姨甥","襟侄"]},"{M2W}":{"f,f,xb,w":["叔祖眷"],"m,f,xb,w":["叔外祖眷"],"f,m,xb,w":["舅祖眷"],"m,m,xb,w":["舅外祖眷"]},"{M2M}":{"f,f,xs,h":["姑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:()=>D});const x=[{exp:/^(.+)&o([^#]+)&l/g,str:"$1$2"},{exp:/^(.+)&l([^#]+)&o/g,str:"$1$2"},{exp:/^(.+)?,o([sb](&\d+)?)([^#]+)&l/g,str:"$1,x$2$4"},{exp:/^(.+)?,l([sb](&\d+)?)([^#]+)&o/g,str:"$1,x$2$4"},{exp:/(,o[sb](&\d+)?)+(,o[sb])(&\d+)?/,str:"$3$4"},{exp:/(,l[sb](&\d+)?)+(,l[sb])(&\d+)?/,str:"$3$4"},{exp:/^(.*,[fh1])(,[olx][sb](&\d+)?)+,[olx]b(.*)$/,str:"$1,xb$4#$1$4"},{exp:/^(.*,[mw0])(,[olx][sb](&\d+)?)+,[olx]s(.*)$/,str:"$1,xs$4#$1$4"},{exp:/(,[fh1])(,[olx][sb](&\d+)?)+,[olx]s/g,str:"$1,xs"},{exp:/(,[mw0])(,[olx][sb](&\d+)?)+,[olx]b/g,str:"$1,xb"},{exp:/^,[olx][sb](&\d+)?,[olx]b(.+)?$/,str:",xb$2#$2"},{exp:/^,[olx][sb](&\d+)?,[olx]s(.+)?$/,str:",xs$2#$2"},{exp:/^,x([sb])$/,str:",o$1#,l$1"},{exp:/m,h/g,str:"f"},{exp:/f,w/g,str:"m"},{exp:/,[xol][sb](&\d+)?(,[mf])/g,str:"$2"},{exp:/,[mf],d(&\d+)/,str:",xs$1"},{exp:/,[mf],d&([ol])/,str:",$1s"},{exp:/,[mf],s(&\d+)/,str:",xb$1"},{exp:/,[mf],s&([ol])/,str:",$1b"},{exp:/^(.*,[fh1]|[xol]b(&\d+)?),[mf],s(.*)$/,str:"$1,xb$3#$1$3"},{exp:/^(.*,[mw0]|[xol]s(&\d+)?),[mf],d(.*)$/,str:"$1,xs$3#$1$3"},{exp:/(,[mw0]|[xol]s(&\d+)?),[mf],s/,str:"$1,xb"},{exp:/(,[fh1]|[xol]b(&\d+)?),[mf],d/,str:"$1,xs"},{exp:/^,[mf],s(.+)?$/,str:",xb$1#,1$1"},{exp:/^,[mf],d(.+)?$/,str:",xs$1#,0$1"},{exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)/g,str:",s$2"},{exp:/,[ds](&[ol\d]+)?,[olx]s(&\d+)/g,str:",d$2"},{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\d]+)?,[olx]s(&\d+)?/g,str:",d$2"},{exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)?/g,str:",s$2"},{exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,m/g,str:"$1"},{exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,str:"$1,h"},{exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,str:"$1"},{exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,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=[{exp:/^(\S+?)(應該|得)?(稱呼|叫|喊)(\S+?)(什麼|啥)??$/,opt:s=>({text:s[4],target:s[1]})},{exp:/^(\S+?)(應該|得)?(如何|怎麼)(稱呼|叫|喊)(\S+?)??$/,opt:s=>({text:s[5],target:s[1]})},{exp:/^(\S+?)是(\S+?)的(誰|什麼|什麼親戚|啥親戚|什麼人)??$/,opt:s=>({text:s[1],target:s[2],type:s[1].indexOf("的")>-1?"default":"chain"})},{exp:/^(\S+?)(應該|得)?管(\S+?)叫(什麼|啥)??$/,opt:s=>({text:s[3],target:s[1]})},{exp:/^(\S+?)(和|與)(\S+?)(之間)?是(什麼|啥)關系??$/,opt:s=>({text:s[1],target:s[3],type:"pair"})},{exp:/^(\S+?)對於(\S+?)是(什麼|啥)關系??$/,opt:s=>({text:s[1],target:s[2],type:"chain"})},{exp:/^(\S+?)(指的)?是(什麼|啥)(意思|關系|親戚關系|輩分|人)??$/,opt:s=>({text:s[1],type:"chain"})},{exp:/^(\S+?)(應該|得)?(稱呼|叫|喊)(什麼|啥)??$/,opt:s=>({text:s[1]})},{exp:/^(\S+?)(應該|得)?(如何|怎麼)(稱呼|叫|喊)??$/,opt:s=>({text:s[1]})},{exp:/^(\S+?)是(誰|什麼|什麼親戚|啥親戚|什麼人|什麼輩分|啥輩分)??$/,opt:s=>({text:s[1],type:s[1].indexOf("的")>-1?"default":"chain"})}],m=[{exp:/^從表/,arr:["從父姑表","從父舅表","從父姨表","從母姑表","從母舅表","從母叔表"]},{exp:/^表表/,arr:["姑表叔表","姑表姑表","姑表舅表","姑表姨表","舅表叔表","舅表姑表","舅表舅表","舅表姨表"]},{exp:/^([夫妻內外]?)表/,arr:["$1姑表","$1舅表"]},{exp:/^([姑舅])表(?=[^伯叔])/,arr:["$1表伯","$1表叔"]},{exp:/^姻/,arr:["姑姻","姨姻","姊妹姻","女姻"]},{exp:/^眷/,arr:["叔眷","舅眷","兄弟眷","男眷"]},{exp:/^親家/,arr:["姊妹姻","兄弟眷"]},{exp:/^([堂表姨]?)([曾高天烈太遠鼻]?)(祖?)([伯叔姑舅姨])/,arr:["$1$4$2$3"]},{exp:/^([曾高天烈太遠鼻]?)祖?王姑/,arr:["姑$1祖母"]},{exp:/^([曾玄來晜仍雲耳])([侄甥])/,arr:["$2$1"]},{exp:/^外表([伯叔姑舅姨])/,arr:["姑表$1外","舅表$1外"]},{exp:/([堂表姨]?)外甥/,arr:["$1甥"]},{exp:/^([舅叔])([曾玄外]*)孫/,arr:["$1侄$2孫"]},{exp:/^([姨姑])([曾玄外]*)孫/,arr:["$1甥$2孫"]},{exp:/([孫甥侄])$/,arr:["$1男","$1女"]},{exp:/([姑舅姨叔])([孫外]*)([男女])$/,arr:["$1表侄$2$3","$1表甥$2$3"]},{exp:/祖$/,arr:["祖父"]},{exp:/嫂$/,arr:["兄婦"]},{exp:/女兒$/,arr:["女"]}],b={晜:"兄",哥:"兄",姐:"姊",侄:"姪",婿:"壻",祖父:"王父",祖母:"王母",弟媳:"弟婦",嫂:"兄婦",孫女婿:"孫婿",甥女婿:"甥婿",侄女婿:"侄婿",Line truncated
+1 -1
View File
@@ -1,4 +1,4 @@
// 默认完整映射关系 // 完整关系链数据 - 合并各类关系链数据
import _prefix from './data/prefix'; import _prefix from './data/prefix';
import _branch from './data/branch'; import _branch from './data/branch';
import _main from './data/main'; import _main from './data/main';
+13 -50
View File
@@ -1,8 +1,10 @@
// 通用方法 // 通用方法
import _filter from './filter'; import _filter from './rule/filter';
import _expression from './rule/expression';
import _replace from './rule/replace';
import _similar from './rule/similar';
import _map from './map'; import _map from './map';
import _pair from './data/pair'; import _pair from './data/pair';
import _expression from './expression';
var _mode = {}; // 模式数据 var _mode = {}; // 模式数据
var _data = Object.assign({},_map); // 最终数据 var _data = Object.assign({},_map); // 最终数据
@@ -130,46 +132,6 @@ export function getSelectors(str){
var lists = str.split('的'); var lists = str.split('的');
var result = []; var result = [];
var isMatch = true; var isMatch = true;
// 双向替换
var replaceMap = {
'晜':'兄',
'哥':'兄',
'姐':'姊',
'侄':'姪',
'婿':'壻',
'祖父':'王父',
'祖母':'王母',
'弟媳':'弟妇',
'嫂':'兄妇',
'孙女婿':'孙婿',
'甥女婿':'甥婿',
'侄女婿':'侄婿',
'孙媳妇':'孙妇',
'甥媳妇':'甥妇',
'侄媳妇':'侄妇',
};
// 含义扩展
var replaceFilter = {
'^从表':['从父姑表','从父舅表','从父姨表','从母姑表','从母舅表','从母叔表'],
'^表表':['姑表叔表','姑表姑表','姑表舅表','姑表姨表','舅表叔表','舅表姑表','舅表舅表','舅表姨表'],
'^([夫妻内外]?)表':['$1姑表','$1舅表'],
'^([姑舅])表(?=[^伯叔])':['$1表伯','$1表叔'],
'^姻':['姑姻','姨姻','姊妹姻','女姻'],
'^眷':['叔眷','舅眷','兄弟眷','男眷'],
'^亲家':['姊妹姻','兄弟眷'],
'^([堂表姨]?)([曾高天烈太远鼻]?)(祖?)([伯叔姑舅姨])':['$1$4$2$3'],
'^([曾高天烈太远鼻]?)祖?王姑':['姑$1祖母'],
'^([曾玄来晜仍云耳])([侄甥])':['$2$1'],
'^外表([伯叔姑舅姨])':['姑表$1外','舅表$1外'],
'([堂表姨]?)外甥':['$1甥'],
'^([舅叔])([曾玄外]*)孙':['$1侄$2孙'],
'^([姨姑])([曾玄外]*)孙':['$1甥$2孙'],
'([孙甥侄])$':['$1男','$1女'],
'([姑舅姨叔])([孙外]*)([男女])$':['$1表侄$2$3','$1表甥$2$3'],
'祖$':['祖父'],
'嫂$':['兄妇'],
'女儿$':['女'],
};
while(lists.length){ while(lists.length){
var name = lists.shift(); //当前匹配词 var name = lists.shift(); //当前匹配词
var items = []; //当前匹配词可能性 var items = []; //当前匹配词可能性
@@ -178,19 +140,20 @@ export function getSelectors(str){
var i_items = []; var i_items = [];
var keywords = [name]; var keywords = [name];
var getList = function(name){ var getList = function(name){
for(var filter in replaceFilter){ // 词义扩展
var word_list = replaceFilter[filter]; _replace.forEach(item => {
word_list.forEach(function(word){ item['arr'].forEach(word =>{
var name1 = name.replace(new RegExp(filter),word); var name1 = name.replace(item['exp'],word);
if(name1!=name){ if(name1!=name){
keywords.push(name1); keywords.push(name1);
getList(name1); getList(name1);
} }
}); });
} });
for(var word in replaceMap){ // 同义词替换
var name1 = name.replace(word,replaceMap[word]); for(var word in _similar){
var name2 = name.replace(replaceMap[word],word); var name1 = name.replace(word,_similar[word]);
var name2 = name.replace(_similar[word],word);
if(name1!=name){ if(name1!=name){
keywords.push(name1); keywords.push(name1);
} }
@@ -1,4 +1,4 @@
// 自然语言表达 // 自然语言表达 - 将语句表达转换成参数调用
export default [ export default [
{ {
exp:/^(\S+?)(应该|得)?(称呼|叫|喊)(\S+?)(什么|啥)??$/, exp:/^(\S+?)(应该|得)?(称呼|叫|喊)(\S+?)(什么|啥)??$/,
@@ -1,9 +1,9 @@
// 关系链缩写规则 - 将关系链转换成最短关系链
/* /*
* 关系数据语法说明: * 关系数据语法说明:
* 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹 * 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹
* 【修饰符】 1:男性; 0:女性; &o:年长; &l:年幼; &\d+:排序 #:隔断; [a|b]:并列 * 【修饰符】 1:男性; 0:女性; &o:年长; &l:年幼; &\d+:排序 #:隔断; [a|b]:并列
*/ */
// 关系链缩写规则
export default [ export default [
/* 年龄 */ /* 年龄 */
{//有大有小,增加不确定性 {//有大有小,增加不确定性
+79
View File
@@ -0,0 +1,79 @@
// 词义扩展 - 对称呼词义进行扩展
export default [
{
exp:/^从表/,
arr:['从父姑表','从父舅表','从父姨表','从母姑表','从母舅表','从母叔表']
},
{
exp:/^表表/,
arr:['姑表叔表','姑表姑表','姑表舅表','姑表姨表','舅表叔表','舅表姑表','舅表舅表','舅表姨表']
},
{
exp:/^([夫妻内外]?)表/,
arr:['$1姑表','$1舅表']
},
{
exp:/^([姑舅])表(?=[^伯叔])/,
arr:['$1表伯','$1表叔']
},
{
exp:/^姻/,
arr:['姑姻','姨姻','姊妹姻','女姻']
},
{
exp:/^眷/,
arr:['叔眷','舅眷','兄弟眷','男眷']
},
{
exp:/^亲家/,
arr:['姊妹姻','兄弟眷']
},
{
exp:/^([堂表姨]?)([曾高天烈太远鼻]?)(祖?)([伯叔姑舅姨])/,
arr:['$1$4$2$3']
},
{
exp:/^([曾高天烈太远鼻]?)祖?王姑/,
arr:['姑$1祖母']
},
{
exp:/^([曾玄来晜仍云耳])([侄甥])/,
arr:['$2$1']
},
{
exp:/^外表([伯叔姑舅姨])/,
arr:['姑表$1外','舅表$1外']
},
{
exp:/([堂表姨]?)外甥/,
arr:['$1甥']
},
{
exp:/^([舅叔])([曾玄外]*)孙/,
arr:['$1侄$2孙']
},
{
exp:/^([姨姑])([曾玄外]*)孙/,
arr:['$1甥$2孙']
},
{
exp:/([孙甥侄])$/,
arr:['$1男','$1女']
},
{
exp:/([姑舅姨叔])([孙外]*)([男女])$/,
arr:['$1表侄$2$3','$1表甥$2$3']
},
{
exp:/祖$/,
arr:['祖父']
},
{
exp:/嫂$/,
arr:['兄妇']
},
{
exp:/女儿$/,
arr:['女']
},
];
+18
View File
@@ -0,0 +1,18 @@
// 同义词替换 - 对称呼中的近义词进行替换
export default {
'晜':'兄',
'哥':'兄',
'姐':'姊',
'侄':'姪',
'婿':'壻',
'祖父':'王父',
'祖母':'王母',
'弟媳':'弟妇',
'嫂':'兄妇',
'孙女婿':'孙婿',
'甥女婿':'甥婿',
'侄女婿':'侄婿',
'孙媳妇':'孙妇',
'甥媳妇':'甥妇',
'侄媳妇':'侄妇',
};