Compare commits
205 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a706d387cc | ||
|
5de00bca62 | ||
|
04c659b308 | ||
|
9cc35a56df | ||
|
54c8791643 | ||
|
c66ae8243a | ||
|
5ed6e3152f | ||
|
7d97faf262 | ||
|
522a3d25bb | ||
![]() |
dd491db6a9 | ||
|
bef7f03aa8 | ||
|
61f0d22a46 | ||
|
2b9a5ec284 | ||
![]() |
ba1838d28c | ||
![]() |
89a1a805a8 | ||
![]() |
fcd00542c6 | ||
|
227f44dced | ||
|
d54d8044dc | ||
|
dc64307e79 | ||
|
e5a3435926 | ||
|
a4699825ca | ||
|
9c19981052 | ||
|
c66541124a | ||
|
251f4b9383 | ||
|
050a8e9cec | ||
|
f1acfdc534 | ||
|
3843d7bece | ||
|
f358b1e4cd | ||
|
14eec3a7b2 | ||
|
2c6ca7e5e2 | ||
|
a73f632938 | ||
|
c68dcff37e | ||
|
ed24f0b432 | ||
|
d0a93b6aeb | ||
|
e1ce2d85e4 | ||
|
0826185a36 | ||
|
77dab6cada | ||
|
0ed0f82ecb | ||
|
42ceda48ff | ||
|
20021b2904 | ||
|
9c504ff50c | ||
|
565e64db99 | ||
|
443fe3cc4d | ||
|
1148b0bea2 | ||
|
27d424aace | ||
|
ce3dd27698 | ||
|
00cb5e7b59 | ||
|
ca3436184d | ||
|
b26ff77935 | ||
|
ec6e666939 | ||
|
af34067dae | ||
|
cc53b29d05 | ||
|
970094a88f | ||
|
230b0a8d23 | ||
|
6d7dcf0eff | ||
|
c16938b161 | ||
|
93514d6082 | ||
|
e3010a8c9a | ||
|
2583d393c6 | ||
|
4c6306d24e | ||
|
9ae41c29d4 | ||
|
59ea91a07f | ||
|
b9415abcb7 | ||
|
bb465021c4 | ||
|
3849adc916 | ||
|
244d7d4ba3 | ||
|
fb4035a9f6 | ||
|
d78d7212ab | ||
|
b82979f734 | ||
|
9bc5e3010a | ||
|
b6c0666fef | ||
|
c8085cfc35 | ||
|
c1b0196bb2 | ||
|
3c0146618a | ||
|
57af1ba3c0 | ||
|
3796594ae3 | ||
|
461af91bc5 | ||
|
23bf7bd63d | ||
|
fb3a186959 | ||
|
add8c13161 | ||
|
9af1651373 | ||
|
c83716cdfa | ||
|
e8208fd778 | ||
|
0c95ae937c | ||
|
bbb7a97b7e | ||
|
3e421ed1ab | ||
|
179bc147a7 | ||
|
a56fd2d6a3 | ||
|
75631c43d5 | ||
|
617a62d07a | ||
|
e72964395b | ||
|
ae3a3085e0 | ||
|
76947f433f | ||
|
dfd00d4948 | ||
|
e6d3f09d4d | ||
|
ca24176a78 | ||
|
870bb501b8 | ||
|
5b506e6484 | ||
|
917cf68bfd | ||
|
25ffb03099 | ||
|
a2d206f4e5 | ||
|
e1dae092cc | ||
|
7715251d3c | ||
|
79afde4367 | ||
|
341d1bbdeb | ||
|
49d3af23f1 | ||
|
be8eec8973 | ||
|
6306a953d5 | ||
|
47e761e2b9 | ||
|
e260204986 | ||
|
6f17f7800d | ||
|
fd98fec6f3 | ||
|
85073a4c25 | ||
|
c9fa49e2cd | ||
|
c97ecf5f40 | ||
|
fb45c390a3 | ||
|
bd71b41d16 | ||
|
074c314604 | ||
|
fbbd224d4f | ||
|
84ad926d9a | ||
|
0fa76e32be | ||
|
925a01ff81 | ||
|
903bc6a58a | ||
|
0f04bc0cd9 | ||
|
98c88ddc70 | ||
|
10a7658e0c | ||
|
2801e7f536 | ||
|
0203786249 | ||
|
de21673e9c | ||
|
1424c6ac9f | ||
|
c269217a3e | ||
|
d532b63d75 | ||
|
1309331a3c | ||
|
38b3fc43cc | ||
|
24c2601633 | ||
|
99ca69948b | ||
|
707f927d95 | ||
|
2dee5ff69f | ||
|
5add4ae44e | ||
|
8ef4c3eb88 | ||
|
15bcd4ebca | ||
|
4048131aca | ||
|
4a5e77c038 | ||
|
e75837e000 | ||
|
ef92285a7c | ||
|
68b60a12c0 | ||
|
a50674717b | ||
|
6585c6ff45 | ||
|
53971186e4 | ||
|
58cc8f595e | ||
|
97021f0e80 | ||
|
ea679adcb6 | ||
|
318e79bbae | ||
|
0fa8f5d427 | ||
|
0a1e3db510 | ||
|
db93f2c1d8 | ||
|
a3510dc3b5 | ||
|
d568f4514b | ||
|
5cbd9e9dca | ||
|
165c908adb | ||
|
da7bd9058f | ||
|
a90e5abb2f | ||
|
fff5ea0571 | ||
|
0397c0373b | ||
|
a6e5574a59 | ||
|
8e0475864a | ||
|
470ee24c45 | ||
|
f61adeeb28 | ||
|
87b9953768 | ||
|
5fc7d649a9 | ||
|
7a0911d27d | ||
|
adcbd8530b | ||
|
6fc0260e27 | ||
|
25fd5d18ac | ||
|
9c7e78c02f | ||
|
f156b62ee2 | ||
|
fbcd0ae0e4 | ||
|
c5aaefcba3 | ||
|
b116b643ba | ||
|
4436ad24ef | ||
|
f4c1fc2ec1 | ||
|
bfebad6ef4 | ||
|
83d65d8445 | ||
|
43196a265c | ||
|
f30975cb63 | ||
|
dd41acaa36 | ||
|
dd8d19a1cb | ||
|
303128974a | ||
|
b5cb223526 | ||
|
6332afea3a | ||
|
9c5a79c94b | ||
|
1fd73283f7 | ||
|
07c6d08e0d | ||
|
731323a860 | ||
|
7c4ada9667 | ||
|
6c1e03ff66 | ||
|
48459758ef | ||
|
5ee846c96a | ||
|
08feb7355f | ||
|
ab84940618 | ||
|
67064d2aa4 | ||
|
04f6e83799 | ||
|
4565f39e49 | ||
|
e2b9a4e139 | ||
|
dab145b187 |
13
.github/FUNDING.yml
vendored
@ -1,13 +0,0 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: [mumuy]# Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
28
.github/workflows/test.yml
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
name: Project Build Test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.x, 22.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
npm install
|
||||
npm run build
|
16
.travis.yml
@ -1,16 +0,0 @@
|
||||
language: node_js
|
||||
|
||||
node_js:
|
||||
- "6.2.0"
|
||||
- "5.6.0"
|
||||
- "4.4.4"
|
||||
|
||||
install:
|
||||
- npm install
|
||||
|
||||
script:
|
||||
- npm run build
|
||||
|
||||
branches:
|
||||
only:
|
||||
- gh-pages
|
6
babel.config.js
Normal file
@ -0,0 +1,6 @@
|
||||
module.exports = {
|
||||
presets: ['@babel/preset-env'],
|
||||
plugins: [
|
||||
'@babel/plugin-transform-runtime'
|
||||
]
|
||||
}
|
1
dist/lang/relationship-mode.zh-HK.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(f,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):(f="undefined"!=typeof globalThis?globalThis:f||self).relationshipMode=s()}(this,(function(){"use strict";function f(s){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(f){return typeof f}:function(f){return f&&"function"==typeof Symbol&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},f(s)}function s(s){var m=function(s,m){if("object"!=f(s)||!s)return s;var o=s[Symbol.toPrimitive];if(void 0!==o){var d=o.call(s,m||"default");if("object"!=f(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===m?String:Number)(s)}(s,"string");return"symbol"==f(m)?m:m+""}function m(f,m,o){return(m=s(m))in f?Object.defineProperty(f,m,{value:o,enumerable:!0,configurable:!0,writable:!0}):f[m]=o,f}var o;return{guangdong:{name:"廣東",data:(o={f:["老竇"],"f,f":["阿爺"],"f,f,f":["太公"],"f,f,m":["太婆"],"f,m":["阿嫲"],"f,m,f":["太外公"],"f,m,m":["太外婆"],"f,ob":["伯伯"],"f,ob,w":["伯娘"],"f,lb":["阿叔"],"f,lb,w":["阿嬸"],"0,f,xb,d,s":["堂姨甥"],"1,f,xb,d,s":["堂外甥"],"0,f,xb,d,d":["堂姨甥女"],"1,f,xb,d,d":["堂外甥女"],"f,os":["姑母"],"f,ls":["姑姐"],"f,xs,h":["姑丈"],"0,f,xs,d,s":["姑表姨甥"],"1,f,xs,d,s":["姑表外甥"],"0,f,xs,d,d":["姑表姨甥女"],"1,f,xs,d,d":["姑表外甥女"],m:["老母"],"m,f":["阿公"],"m,f,f":["外太公"],"m,f,m":["外太婆"],"m,m":["阿婆"],"m,m,f":["外太外公"],"m,m,m":["外太外婆"],"m,ob":["舅父"],"m,lb":["舅仔"],"m,xb,w":["舅母"],"0,m,xb,d,s":["舅表姨甥"],"1,m,xb,d,s":["舅表外甥"],"0,m,xb,d,d":["舅表姨甥女"],"1,m,xb,d,d":["舅表外甥女"],"m,os":["姨媽"],"m,ls":["姨仔"],"m,xs,h":["姨丈"]},m(m(m(m(m(m(m(m(m(m(o,"0,m,xb,d,s",["姨姨甥"]),"1,m,xb,d,s",["姨外甥"]),"0,m,xb,d,d",["姨姨甥女"]),"1,m,xb,d,d",["姨外甥女"]),"ob",["大佬"]),"ob,w",["阿嫂"]),"lb",["細佬"]),"lb,w",["弟婦"]),"xb,s",["侄"]),"xb,d",["侄女"]),m(m(m(m(m(m(m(m(m(m(o,"os",["家姐"]),"os,h",["姐夫"]),"ls",["阿妹"]),"ls,h",["妹夫"]),"0,xs,s",["姨甥"]),"1,xs,s",["外甥"]),"0,xs,d",["姨甥女"]),"1,xs,d",["外甥女"]),"s",["仔"]),"s,w",["新婦"]),m(m(m(m(m(m(m(m(m(m(o,"s,s",["孫"]),"s,s,w",["孫新婦"]),"s,s,s",["息仔"]),"s,s,d",["息女"]),"s,d",["孫女"]),"s,d,h",["孫女婿"]),"s,d,s",["外息仔"]),"s,d,d",["外息女"]),"d",["女"]),"d,s",["外孫"]),m(m(m(m(m(m(m(o,"d,s,w",["外孫新婦"]),"d,s,s",["外息仔"]),"d,s,d",["外息女"]),"d,d",["外孫女"]),"d,d,h",["外孫女婿"]),"d,d,s",["外息仔"]),"d,d,d",["外息女"]))},north:{name:"北方",data:{"m,m":["姥姥"],"m,m,xs":["姨姥姥"],"m,m,xs,h":["姨姥爺"],"m,m,xb":["舅姥爺"],"m,m,xb,w":["舅姥姥"],"m,f":["姥爺"],"m,f,xs":["姑姥姥"],"m,f,xs,h":["姑姥爺"],"m,f,ob":["大姥爺"],"m,f,ob,w":["大姥姥"],"m,f,lb":["小姥爺"],"m,f,lb,w":["小姥姥"],"f,ob":["大爺"],"f,ob,w":["大娘"]}}}}));
|
1
dist/lang/relationship-mode.zh-HK.min.mjs
vendored
Normal file
@ -0,0 +1 @@
|
||||
function m(s){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(m){return typeof m}:function(m){return m&&"function"==typeof Symbol&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},m(s)}function s(s){var f=function(s,f){if("object"!=m(s)||!s)return s;var d=s[Symbol.toPrimitive];if(void 0!==d){var o=d.call(s,f||"default");if("object"!=m(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===f?String:Number)(s)}(s,"string");return"symbol"==m(f)?f:f+""}function f(m,f,d){return(f=s(f))in m?Object.defineProperty(m,f,{value:d,enumerable:!0,configurable:!0,writable:!0}):m[f]=d,m}var d,o={guangdong:{name:"廣東",data:(d={f:["老竇"],"f,f":["阿爺"],"f,f,f":["太公"],"f,f,m":["太婆"],"f,m":["阿嫲"],"f,m,f":["太外公"],"f,m,m":["太外婆"],"f,ob":["伯伯"],"f,ob,w":["伯娘"],"f,lb":["阿叔"],"f,lb,w":["阿嬸"],"0,f,xb,d,s":["堂姨甥"],"1,f,xb,d,s":["堂外甥"],"0,f,xb,d,d":["堂姨甥女"],"1,f,xb,d,d":["堂外甥女"],"f,os":["姑母"],"f,ls":["姑姐"],"f,xs,h":["姑丈"],"0,f,xs,d,s":["姑表姨甥"],"1,f,xs,d,s":["姑表外甥"],"0,f,xs,d,d":["姑表姨甥女"],"1,f,xs,d,d":["姑表外甥女"],m:["老母"],"m,f":["阿公"],"m,f,f":["外太公"],"m,f,m":["外太婆"],"m,m":["阿婆"],"m,m,f":["外太外公"],"m,m,m":["外太外婆"],"m,ob":["舅父"],"m,lb":["舅仔"],"m,xb,w":["舅母"],"0,m,xb,d,s":["舅表姨甥"],"1,m,xb,d,s":["舅表外甥"],"0,m,xb,d,d":["舅表姨甥女"],"1,m,xb,d,d":["舅表外甥女"],"m,os":["姨媽"],"m,ls":["姨仔"],"m,xs,h":["姨丈"]},f(f(f(f(f(f(f(f(f(f(d,"0,m,xb,d,s",["姨姨甥"]),"1,m,xb,d,s",["姨外甥"]),"0,m,xb,d,d",["姨姨甥女"]),"1,m,xb,d,d",["姨外甥女"]),"ob",["大佬"]),"ob,w",["阿嫂"]),"lb",["細佬"]),"lb,w",["弟婦"]),"xb,s",["侄"]),"xb,d",["侄女"]),f(f(f(f(f(f(f(f(f(f(d,"os",["家姐"]),"os,h",["姐夫"]),"ls",["阿妹"]),"ls,h",["妹夫"]),"0,xs,s",["姨甥"]),"1,xs,s",["外甥"]),"0,xs,d",["姨甥女"]),"1,xs,d",["外甥女"]),"s",["仔"]),"s,w",["新婦"]),f(f(f(f(f(f(f(f(f(f(d,"s,s",["孫"]),"s,s,w",["孫新婦"]),"s,s,s",["息仔"]),"s,s,d",["息女"]),"s,d",["孫女"]),"s,d,h",["孫女婿"]),"s,d,s",["外息仔"]),"s,d,d",["外息女"]),"d",["女"]),"d,s",["外孫"]),f(f(f(f(f(f(f(d,"d,s,w",["外孫新婦"]),"d,s,s",["外息仔"]),"d,s,d",["外息女"]),"d,d",["外孫女"]),"d,d,h",["外孫女婿"]),"d,d,s",["外息仔"]),"d,d,d",["外息女"]))},north:{name:"北方",data:{"m,m":["姥姥"],"m,m,xs":["姨姥姥"],"m,m,xs,h":["姨姥爺"],"m,m,xb":["舅姥爺"],"m,m,xb,w":["舅姥姥"],"m,f":["姥爺"],"m,f,xs":["姑姥姥"],"m,f,xs,h":["姑姥爺"],"m,f,ob":["大姥爺"],"m,f,ob,w":["大姥姥"],"m,f,lb":["小姥爺"],"m,f,lb,w":["小姥姥"],"f,ob":["大爺"],"f,ob,w":["大娘"]}}};export{o as default};
|
13
dist/lang/relationship.zh-HK.min.js
vendored
Normal file
13
dist/lang/relationship.zh-HK.min.mjs
vendored
Normal file
1
dist/relationship-mode.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(f,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define(s):(f="undefined"!=typeof globalThis?globalThis:f||self).relationshipMode=s()}(this,(function(){"use strict";function f(s){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(f){return typeof f}:function(f){return f&&"function"==typeof Symbol&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},f(s)}function s(s){var m=function(s,m){if("object"!=f(s)||!s)return s;var o=s[Symbol.toPrimitive];if(void 0!==o){var d=o.call(s,m||"default");if("object"!=f(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===m?String:Number)(s)}(s,"string");return"symbol"==f(m)?m:m+""}function m(f,m,o){return(m=s(m))in f?Object.defineProperty(f,m,{value:o,enumerable:!0,configurable:!0,writable:!0}):f[m]=o,f}var o;return{guangdong:{name:"广东",data:(o={f:["老窦"],"f,f":["阿爷"],"f,f,f":["太公"],"f,f,m":["太婆"],"f,m":["阿嫲"],"f,m,f":["太外公"],"f,m,m":["太外婆"],"f,ob":["伯伯"],"f,ob,w":["伯娘"],"f,lb":["阿叔"],"f,lb,w":["阿婶"],"0,f,xb,d,s":["堂姨甥"],"1,f,xb,d,s":["堂外甥"],"0,f,xb,d,d":["堂姨甥女"],"1,f,xb,d,d":["堂外甥女"],"f,os":["姑母"],"f,ls":["姑姐"],"f,xs,h":["姑丈"],"0,f,xs,d,s":["姑表姨甥"],"1,f,xs,d,s":["姑表外甥"],"0,f,xs,d,d":["姑表姨甥女"],"1,f,xs,d,d":["姑表外甥女"],m:["老母"],"m,f":["阿公"],"m,f,f":["外太公"],"m,f,m":["外太婆"],"m,m":["阿婆"],"m,m,f":["外太外公"],"m,m,m":["外太外婆"],"m,ob":["舅父"],"m,lb":["舅仔"],"m,xb,w":["舅母"],"0,m,xb,d,s":["舅表姨甥"],"1,m,xb,d,s":["舅表外甥"],"0,m,xb,d,d":["舅表姨甥女"],"1,m,xb,d,d":["舅表外甥女"],"m,os":["姨妈"],"m,ls":["姨仔"],"m,xs,h":["姨丈"]},m(m(m(m(m(m(m(m(m(m(o,"0,m,xb,d,s",["姨姨甥"]),"1,m,xb,d,s",["姨外甥"]),"0,m,xb,d,d",["姨姨甥女"]),"1,m,xb,d,d",["姨外甥女"]),"ob",["大佬"]),"ob,w",["阿嫂"]),"lb",["细佬"]),"lb,w",["弟妇"]),"xb,s",["侄"]),"xb,d",["侄女"]),m(m(m(m(m(m(m(m(m(m(o,"os",["家姐"]),"os,h",["姐夫"]),"ls",["阿妹"]),"ls,h",["妹夫"]),"0,xs,s",["姨甥"]),"1,xs,s",["外甥"]),"0,xs,d",["姨甥女"]),"1,xs,d",["外甥女"]),"s",["仔"]),"s,w",["新妇"]),m(m(m(m(m(m(m(m(m(m(o,"s,s",["孙"]),"s,s,w",["孙新妇"]),"s,s,s",["息仔"]),"s,s,d",["息女"]),"s,d",["孙女"]),"s,d,h",["孙女婿"]),"s,d,s",["外息仔"]),"s,d,d",["外息女"]),"d",["女"]),"d,s",["外孙"]),m(m(m(m(m(m(m(o,"d,s,w",["外孙新妇"]),"d,s,s",["外息仔"]),"d,s,d",["外息女"]),"d,d",["外孙女"]),"d,d,h",["外孙女婿"]),"d,d,s",["外息仔"]),"d,d,d",["外息女"]))},north:{name:"北方",data:{"m,m":["姥姥"],"m,m,xs":["姨姥姥"],"m,m,xs,h":["姨姥爷"],"m,m,xb":["舅姥爷"],"m,m,xb,w":["舅姥姥"],"m,f":["姥爷"],"m,f,xs":["姑姥姥"],"m,f,xs,h":["姑姥爷"],"m,f,ob":["大姥爷"],"m,f,ob,w":["大姥姥"],"m,f,lb":["小姥爷"],"m,f,lb,w":["小姥姥"],"f,ob":["大爷"],"f,ob,w":["大娘"]}}}}));
|
1
dist/relationship-mode.min.mjs
vendored
Normal file
@ -0,0 +1 @@
|
||||
function m(s){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(m){return typeof m}:function(m){return m&&"function"==typeof Symbol&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},m(s)}function s(s){var f=function(s,f){if("object"!=m(s)||!s)return s;var d=s[Symbol.toPrimitive];if(void 0!==d){var o=d.call(s,f||"default");if("object"!=m(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===f?String:Number)(s)}(s,"string");return"symbol"==m(f)?f:f+""}function f(m,f,d){return(f=s(f))in m?Object.defineProperty(m,f,{value:d,enumerable:!0,configurable:!0,writable:!0}):m[f]=d,m}var d,o={guangdong:{name:"广东",data:(d={f:["老窦"],"f,f":["阿爷"],"f,f,f":["太公"],"f,f,m":["太婆"],"f,m":["阿嫲"],"f,m,f":["太外公"],"f,m,m":["太外婆"],"f,ob":["伯伯"],"f,ob,w":["伯娘"],"f,lb":["阿叔"],"f,lb,w":["阿婶"],"0,f,xb,d,s":["堂姨甥"],"1,f,xb,d,s":["堂外甥"],"0,f,xb,d,d":["堂姨甥女"],"1,f,xb,d,d":["堂外甥女"],"f,os":["姑母"],"f,ls":["姑姐"],"f,xs,h":["姑丈"],"0,f,xs,d,s":["姑表姨甥"],"1,f,xs,d,s":["姑表外甥"],"0,f,xs,d,d":["姑表姨甥女"],"1,f,xs,d,d":["姑表外甥女"],m:["老母"],"m,f":["阿公"],"m,f,f":["外太公"],"m,f,m":["外太婆"],"m,m":["阿婆"],"m,m,f":["外太外公"],"m,m,m":["外太外婆"],"m,ob":["舅父"],"m,lb":["舅仔"],"m,xb,w":["舅母"],"0,m,xb,d,s":["舅表姨甥"],"1,m,xb,d,s":["舅表外甥"],"0,m,xb,d,d":["舅表姨甥女"],"1,m,xb,d,d":["舅表外甥女"],"m,os":["姨妈"],"m,ls":["姨仔"],"m,xs,h":["姨丈"]},f(f(f(f(f(f(f(f(f(f(d,"0,m,xb,d,s",["姨姨甥"]),"1,m,xb,d,s",["姨外甥"]),"0,m,xb,d,d",["姨姨甥女"]),"1,m,xb,d,d",["姨外甥女"]),"ob",["大佬"]),"ob,w",["阿嫂"]),"lb",["细佬"]),"lb,w",["弟妇"]),"xb,s",["侄"]),"xb,d",["侄女"]),f(f(f(f(f(f(f(f(f(f(d,"os",["家姐"]),"os,h",["姐夫"]),"ls",["阿妹"]),"ls,h",["妹夫"]),"0,xs,s",["姨甥"]),"1,xs,s",["外甥"]),"0,xs,d",["姨甥女"]),"1,xs,d",["外甥女"]),"s",["仔"]),"s,w",["新妇"]),f(f(f(f(f(f(f(f(f(f(d,"s,s",["孙"]),"s,s,w",["孙新妇"]),"s,s,s",["息仔"]),"s,s,d",["息女"]),"s,d",["孙女"]),"s,d,h",["孙女婿"]),"s,d,s",["外息仔"]),"s,d,d",["外息女"]),"d",["女"]),"d,s",["外孙"]),f(f(f(f(f(f(f(d,"d,s,w",["外孙新妇"]),"d,s,s",["外息仔"]),"d,s,d",["外息女"]),"d,d",["外孙女"]),"d,d,h",["外孙女婿"]),"d,d,s",["外息仔"]),"d,d,d",["外息女"]))},north:{name:"北方",data:{"m,m":["姥姥"],"m,m,xs":["姨姥姥"],"m,m,xs,h":["姨姥爷"],"m,m,xb":["舅姥爷"],"m,m,xb,w":["舅姥姥"],"m,f":["姥爷"],"m,f,xs":["姑姥姥"],"m,f,xs,h":["姑姥爷"],"m,f,ob":["大姥爷"],"m,f,ob,w":["大姥姥"],"m,f,lb":["小姥爷"],"m,f,lb,w":["小姥姥"],"f,ob":["大爷"],"f,ob,w":["大娘"]}}};export{o as default};
|
6
dist/relationship.min.js
vendored
13
dist/relationship.min.mjs
vendored
Normal file
13
dist/relationship.zh-HK.min.js
vendored
BIN
favicon.ico
Normal file
After Width: | Height: | Size: 4.1 KiB |
21
gulpfile.js
@ -1,16 +1,25 @@
|
||||
const fs = require('fs');
|
||||
const gulp = require('gulp');
|
||||
const rename = require("gulp-rename");
|
||||
const cht = require('gulp-cht');
|
||||
const replace = require('gulp-replace');
|
||||
|
||||
gulp.task('mini', () => {
|
||||
gulp.task('localization', () => {
|
||||
// gulp.src('./index.html')
|
||||
// .pipe(cht())
|
||||
// .pipe(rename("zh-HK.html"))
|
||||
// .pipe(gulp.dest("./"));
|
||||
|
||||
return gulp.src('dist/relationship.min.js')
|
||||
.pipe(cht())
|
||||
.pipe(rename("relationship.zh-HK.min.js"))
|
||||
.pipe(gulp.dest('dist/'))
|
||||
return gulp.src([
|
||||
'dist/relationship.min.js',
|
||||
'dist/relationship.min.mjs',
|
||||
'dist/relationship-mode.min.js',
|
||||
'dist/relationship-mode.min.mjs',
|
||||
]).pipe(cht())
|
||||
.pipe(replace('嶽','岳'))
|
||||
.pipe(rename(function(path) {
|
||||
path.basename = path.basename.replace('.min','.zh-HK.min');
|
||||
}))
|
||||
.pipe(gulp.dest('dist/lang/'))
|
||||
});
|
||||
|
||||
gulp.task('default', gulp.series(['localization']))
|
318
index.html
@ -9,6 +9,7 @@
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="Cache-Control" content="no-transform" />
|
||||
<meta name="format-detection" content="telephone=no"/>
|
||||
<link rel="shortcut icon" href="favicon.ico">
|
||||
<title>中国亲戚关系计算器 亲戚称谓计算器 亲戚称呼大全</title>
|
||||
<meta name="keywords" content="家庭称谓,亲戚称呼,亲戚称谓,亲戚叫法,亲属关系,亲属称谓,关系计算器,亲戚计算器,称呼计算器,称谓计算器,辈分计算器,亲戚关系大全,亲戚称呼大全"/>
|
||||
<meta name="description" content="中国亲戚关系计算器是一款最为全面准确的亲戚称呼计算器及亲戚关系在线查询工具,逢年过节走亲访友必备神器,亦可作为家庭启蒙教育应用。"/>
|
||||
@ -25,10 +26,10 @@
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="header">
|
||||
<div class="inner">
|
||||
<div class="scroll-container">
|
||||
<header>
|
||||
<div class="mod-head">
|
||||
<div class="inner">
|
||||
<div class="bd">
|
||||
<span class="language">
|
||||
<a class="active" href="/relationship/">简体</a>
|
||||
@ -43,20 +44,42 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<section class="scroll-item">
|
||||
<div class="mod-bg">
|
||||
<svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto">
|
||||
<defs>
|
||||
<path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"></path>
|
||||
</defs>
|
||||
<g class="parallax">
|
||||
<use xlink:href="#gentle-wave" x="48" y="0" fill="rgba(255,255,255,0.4)"></use>
|
||||
<use xlink:href="#gentle-wave" x="48" y="3" fill="rgba(255,255,255,0.6)"></use>
|
||||
<use xlink:href="#gentle-wave" x="48" y="5" fill="rgba(255,255,255,0.2)"></use>
|
||||
<use xlink:href="#gentle-wave" x="48" y="7" fill="rgba(255,255,255,1)"></use>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="mod-panel">
|
||||
<div class="module mod-panel">
|
||||
<div class="inner">
|
||||
<div class="hd">
|
||||
<div class="bd">
|
||||
<div class="panel-left">
|
||||
<h1><span class="name">中国</span><span>亲戚关系计算器</span><span class="tag">开源算法</span></h1>
|
||||
<p>逢年过节遇到三姑六婆,拒绝叫不出口的尴尬!轻松搞定亲戚关系~</p>
|
||||
<p>当前亲戚称呼大全已收录约<b id="count">-</b>条亲戚关系</p>
|
||||
<p class="text-gray">始于2016年3月</p>
|
||||
<div class="picture">
|
||||
<img src="static/image/app.png" width="512" height="320" alt="亲戚称呼换算APP"/>
|
||||
<a class="btn" href="/relationship/vue/" target="_blank">访问手机版</a>
|
||||
</div>
|
||||
<div class="mobile">
|
||||
<a class="btn" href="vue/" target="_blank">
|
||||
<span class="name">访问手机版</span>
|
||||
<span class="qrcode">
|
||||
<img src="static/image/qrcode.png"/>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bd">
|
||||
<div class="panel-right">
|
||||
<div class="c-hd">
|
||||
<ul>
|
||||
<li class="active"><a href="javascript:;" rel="nofollow">关系找称呼</a></li>
|
||||
@ -75,7 +98,11 @@
|
||||
<span>默认</span>
|
||||
</label>
|
||||
<label for="field-0-2">
|
||||
<input id="field-0-2" type="radio" name="mode" value="cantonese">
|
||||
<input id="field-0-2" type="radio" name="mode" value="north">
|
||||
<span>北方地区</span>
|
||||
</label>
|
||||
<label for="field-0-3">
|
||||
<input id="field-0-3" type="radio" name="mode" value="guangdong">
|
||||
<span>粤语惯用</span>
|
||||
</label>
|
||||
</div>
|
||||
@ -254,14 +281,17 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-intro">
|
||||
</div>
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-intro">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>功能支持</span></div>
|
||||
<div class="bd">
|
||||
<ul>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">1. 使用别称查询:</p>
|
||||
<p class="q"><strong>1.</strong> 使用别称查询:</p>
|
||||
<p class="a">姥姥的爸爸的老窦 = 外曾外曾祖父</p>
|
||||
<p class="a">娘子的爹地的母亲 = 祖岳母</p>
|
||||
<p class="a">岳丈的妈咪的细佬 = 舅祖岳父</p>
|
||||
@ -269,7 +299,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">2. 使用合称查询:</p>
|
||||
<p class="q"><strong>2.</strong> 使用合称查询:</p>
|
||||
<p class="a">姐夫的双亲 = 姊妹姻父 / 姊妹姻母</p>
|
||||
<p class="a">妈妈的祖父母 = 外曾祖父 / 外曾祖母</p>
|
||||
<p class="a">弟弟的孩子 = 侄子 / 侄女</p>
|
||||
@ -277,7 +307,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">3. 大小数字混合查询:</p>
|
||||
<p class="q"><strong>3.</strong> 大小数字混合查询:</p>
|
||||
<p class="a">大哥的二姑妈的七舅姥爷 = 舅曾外祖父</p>
|
||||
<p class="a">二女婿的小姨 = 女姻姨妹</p>
|
||||
<p class="a">大佬的三叔的次子 = 堂哥 / 堂弟</p>
|
||||
@ -285,7 +315,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">4. 不限制祖辈孙辈跨度查询:</p>
|
||||
<p class="q"><strong>4.</strong> 不限制祖辈孙辈跨度查询:</p>
|
||||
<p class="a">舅妈的婆婆的外甥的姨妈的侄子 = 舅表舅父</p>
|
||||
<p class="a">老公的丈母娘的儿媳 = 嫂子 / 弟妹</p>
|
||||
<p class="a">外婆的孙子的爸爸的仔 = 舅表哥 / 舅表弟</p>
|
||||
@ -293,7 +323,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">5. 根据年龄推导可能性:</p>
|
||||
<p class="q"><strong>5.</strong> 根据年龄推导可能性:</p>
|
||||
<p class="a">哥哥的表姐 = 姑表姐 / 舅表姐</p>
|
||||
<p class="a">堂妹的姐姐 = 堂姐 / 堂妹</p>
|
||||
<p class="a">弟弟的表哥 = 姑表哥 / 姑表弟 / 舅表哥 / 舅表弟</p>
|
||||
@ -301,7 +331,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">6. 根据语境确认性别:</p>
|
||||
<p class="q"><strong>6.</strong> 根据语境确认性别:</p>
|
||||
<p class="a">老婆的女儿的外婆 = 岳母</p>
|
||||
<p class="a">爱人的婆婆的儿子 = 哥哥 / 弟弟 / 自己</p>
|
||||
<p class="a">岳母的配偶的儿子的爸爸 = 岳父</p>
|
||||
@ -309,7 +339,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">7. 支持古文式表达:</p>
|
||||
<p class="q"><strong>7.</strong> 支持古文式表达:</p>
|
||||
<p class="a">吾父之舅父 = 舅爷爷</p>
|
||||
<p class="a">母之兄长之妻 = 大舅妈</p>
|
||||
<p class="a">泰山之高堂 = 祖岳父 / 祖岳母</p>
|
||||
@ -317,7 +347,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">8. 解析某称谓关系链:</p>
|
||||
<p class="q"><strong>8.</strong> 解析某称谓关系链:</p>
|
||||
<p class="a">七舅姥爷 = 妈妈的妈妈的兄弟</p>
|
||||
<p class="a">姑奶奶 = 爸爸的爸爸的姐妹</p>
|
||||
<p class="a">外太公 = 妈妈的爸爸的爸爸</p>
|
||||
@ -325,7 +355,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">9. 算两个亲戚间的合称关系:</p>
|
||||
<p class="q"><strong>9.</strong> 算两个亲戚间的合称关系:</p>
|
||||
<p class="a">奶奶 + 外婆 = 儿女亲家</p>
|
||||
<p class="a">妈妈 + 婶婶 = 妯娌</p>
|
||||
<p class="a">岳父 + 我 = 翁婿</p>
|
||||
@ -335,21 +365,110 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-article">
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-feature">
|
||||
<div class="inner">
|
||||
<div class="bd">
|
||||
<p>亲属是基于婚姻、血缘和法律拟制而形成的社会关系。亲属关系包括夫妻、父母、子女、兄弟姊妹、祖父母和外祖父母、孙子女和外孙子女、儿媳和公婆、女婿和岳父母、以及其他三代以内的旁系血亲,如伯、叔、姑、舅、姨、侄子女、甥子女、堂兄弟姊妹、表兄弟姊妹等。</p>
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<p class="title">完整的亲戚关系数据</p>
|
||||
<p class="desc">收录前后多代血亲及姻亲关系数据</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="title">简单易读的数据格式</p>
|
||||
<p class="desc">独创的关系数据结构方便数据查找</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="title">高效全面的网络解析</p>
|
||||
<p class="desc">算法解析包含了网络中的各个节点</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="title">自定义地域称呼功能</p>
|
||||
<p class="desc">让你可以定制符合自己习惯的版本</p>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="panels">
|
||||
<div class="panel">
|
||||
<img src="./static/image/draw/1.svg" height="320">
|
||||
<span class="slogan">包含了数万条亲戚关系及称呼</span>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<img src="./static/image/draw/2.svg" height="320">
|
||||
<span class="slogan">拥有小巧而极致的亲戚数据库</span>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<img src="./static/image/draw/3.svg" height="320">
|
||||
<span class="slogan">不再错过任何一种可能的关系</span>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<img src="./static/image/draw/4.svg" height="320">
|
||||
<span class="slogan">亲戚该怎么称呼全由自己做主</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-article">
|
||||
<div class="inner">
|
||||
<div class="banner">
|
||||
<span>外甥</span>
|
||||
<span>姑姑</span>
|
||||
<span>岳父</span>
|
||||
<span>女儿</span>
|
||||
<span>舅舅</span>
|
||||
<span>姨妈</span>
|
||||
<span>媳妇儿</span>
|
||||
<span>爸爸</span>
|
||||
<span>表姐</span>
|
||||
<span>曾祖母</span>
|
||||
<span>哥哥</span>
|
||||
<span>妯娌</span>
|
||||
<span>姑奶奶</span>
|
||||
<span>老公</span>
|
||||
<span>弟妹</span>
|
||||
<span>堂姐</span>
|
||||
<span>婶婶</span>
|
||||
<span>女婿</span>
|
||||
<span>叔叔</span>
|
||||
<span>婆婆</span>
|
||||
<span>小舅子</span>
|
||||
<span>伯父</span>
|
||||
<span>姻兄弟</span>
|
||||
<span>丈母娘</span>
|
||||
<span>外公</span>
|
||||
<span>侄子</span>
|
||||
<span>舅爷</span>
|
||||
<span>表妹</span>
|
||||
<span>嫂子</span>
|
||||
<span>姥爷</span>
|
||||
<span>连襟</span>
|
||||
<span>爷爷</span>
|
||||
<span>姐夫</span>
|
||||
<span>姑子</span>
|
||||
<span>弟弟</span>
|
||||
<span>亲家</span>
|
||||
<span>孙子</span>
|
||||
<span>姑丈公</span>
|
||||
</div>
|
||||
<div class="hd"><span>关于中国亲戚称呼</span></div>
|
||||
<div class="bd">
|
||||
<p>亲属是基于婚姻、血缘和法律拟制而形成的社会关系。亲属关系包括夫妻、父母、子女、兄弟姊妹、祖父母和外祖父母、孙子女和外孙子女、儿媳和公婆、女婿和岳父母、以及其他三代以内的旁系血亲,如伯、叔、姑、舅、姨、侄子女、甥子女、堂兄弟姊妹、表兄弟姊妹、姨兄弟姊妹等。</p>
|
||||
<p>亲属称谓指是以本人为中心确定亲族成员和本人关系的名称,是基于血亲姻亲基础上的亲属之间相互称呼的名称、叫法。汉族的家族亲属关系条理分明尊卑有序:比自己长一辈的称呼有姨姑舅叔伯,同辈的有兄弟姊妹、堂表亲等等,下一辈有甥侄等等。中国人由于姻亲而产生的亲戚关系相当庞杂,“祖宗十八代”、“五服”、“六亲”、“九族”让人难以区分,其派生出的各种称谓也是中华文化的一大特征。</p>
|
||||
<p>如今由于工作生活节奏差异,很多关系稍疏远的亲戚之间来往并不多,年龄差异长幼辈分模糊。春节拜年走亲戚遇到七大姑八大姨,往往会搞不清楚哪位亲戚应该喊什么称呼,很是尴尬。不仅小孩搞不清亲戚关系和亲戚称谓,就连年轻一代的大人也都常常模糊混乱。</p>
|
||||
<p>“中国亲戚关系计算器”为你避免了叫错、不会叫亲戚的尴尬,收录了中国亲戚关系称呼大全,只需简单的输入即可完成称呼计算。称呼计算器同时兼容了不同地域的方言叫法,你可以称呼父亲为:“老爸”、“爹地”、“老爷子”等等。让您准确的叫出亲戚称谓,理清亲属之间的亲戚关系,轻松掌握中国式的亲戚关系换算,让你更了解中国文化。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-copy">
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-copy">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>算法开源</span></div>
|
||||
<div class="bd">
|
||||
<p>本项目致力于让更多人了解中国传统文化,学习各式各样的中国亲戚称谓。本人深感项目的完善仅凭一己之力是远远不够的,如果你对此感兴趣,欢迎关注本项目。你也可以通过本项目提供的方法和教程,打造更符合自己使用习惯的亲戚计算器版本。</p>
|
||||
<p>本项目致力于让更多人了解中国传统文化,学习各式各样的中国亲戚称谓。本人深感项目的完善仅凭一己之力是远远不够的,如果你对此感兴趣,欢迎关注本项目 或 <a class="text-blue" href="https://github.com/mumuy/relationship/pulls" target="_blank" rel="nofollow">提交代码</a>,与我一起完善它,使它被更多人熟知和使用。你也可以通过本项目提供的方法和教程,打造更符合自己使用习惯的亲戚计算器版本。</p>
|
||||
<p><span>算法基于「<a href="https://github.com/mumuy/relationship/blob/master/LICENSE" rel="nofollow" target="_blank">MIT许可协议</a>」开源,除需在源码中保留版权信息和许可声明外,你有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。</span>算法持续更新中,如发现错漏或有想法建议可在此</span> <a class="text-red" href="https://github.com/mumuy/relationship/issues" rel="nofollow" target="_blank">反馈问题</a>。</p>
|
||||
<div class="buttons">
|
||||
<a class="github-button" href="https://github.com/mumuy" data-color-scheme="no-preference: light; light: light; dark: dark;" data-size="large" aria-label="Follow @mumuy on GitHub">Follow @mumuy</a>
|
||||
@ -362,9 +481,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-app">
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-app">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>他们都在用</span></div>
|
||||
<div class="hd"><span>他们都在使用</span></div>
|
||||
<div class="bd">
|
||||
<ul>
|
||||
<li>
|
||||
@ -395,103 +516,57 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-foot">
|
||||
<div class="module mod-foot">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>😳支持我的开源</span></div>
|
||||
<div class="bd">
|
||||
<div class="box">
|
||||
<p><img src="static/image/qrcode.jpg" width="150" alt="亲戚关系微信小程序"/></p>
|
||||
<p>微信扫一扫,使用小程序</p>
|
||||
<div class="item">
|
||||
<img src="static/image/qrcode-wechat.jpg" height="280" alt="微信支付"/>
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="static/image/qrcode-alipay.jpg" height="280" alt="支付宝支付"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="https://passer-by.com/public/script/projects.js"></script>
|
||||
<div class="ft">
|
||||
<p>Copyright © <a href="http://passer-by.com">passer-by.com</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-fixedbar">
|
||||
<div class="bd">
|
||||
<ul>
|
||||
<li>
|
||||
<a class="qrcode" href="javascript:;" href="javascript:;">
|
||||
<img src="static/image/icon-wechat.png" width="24" height="24"/>
|
||||
<span class="popup">
|
||||
<img src="static/image/qrcode.jpg" width="150" alt="亲戚关系微信小程序"/>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="gotop" href="javascript:;" href="javascript:;">
|
||||
<img src="static/image/icon-gotop.png" width="24" height="24"/>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script type="text/javascript" src="dist/relationship.min.js"></script>
|
||||
<script type="text/javascript" src="dist/relationship-mode.min.js"></script>
|
||||
<script type="text/javascript" src="static/script/index.js"></script>
|
||||
<script type="text/javascript">
|
||||
// 获取数量
|
||||
document.getElementById('count').innerText = relationship.dataCount;
|
||||
|
||||
// 自定义模式
|
||||
relationship.setMode('cantonese',{
|
||||
'f':['阿爸'],
|
||||
'f,f':['阿爷'],
|
||||
'f,f,f':['太公'],
|
||||
'f,f,m':['太婆'],
|
||||
'f,m':['阿嫲'],
|
||||
'f,m,f':['太外公'],
|
||||
'f,m,m':['太外婆'],
|
||||
'f,ob':['大伯'],
|
||||
'f,ob,w':['伯娘'],
|
||||
'f,lb':['阿叔'],
|
||||
'f,lb,w':['阿婶'],
|
||||
'0,f,xb,d,s':['堂姨甥'],
|
||||
'1,f,xb,d,s':['堂外甥'],
|
||||
'0,f,xb,d,d':['堂姨甥女'],
|
||||
'1,f,xb,d,d':['堂外甥女'],
|
||||
'f,os':['姑妈'],
|
||||
'f,ls':['姑姐'],
|
||||
'f,xs,h':['姑丈'],
|
||||
'0,f,xs,d,s':['姑表姨甥'],
|
||||
'1,f,xs,d,s':['姑表外甥'],
|
||||
'0,f,xs,d,d':['姑表姨甥女'],
|
||||
'1,f,xs,d,d':['姑表外甥女'],
|
||||
'm':['阿妈','老母'],
|
||||
'm,f':['阿公'],
|
||||
'm,f,f':['外太公'],
|
||||
'm,f,m':['外太婆'],
|
||||
'm,m':['阿婆'],
|
||||
'm,m,f':['外太外公'],
|
||||
'm,m,m':['外太外婆'],
|
||||
'm,ob':['舅父'],
|
||||
'm,lb':['舅仔'],
|
||||
'm,xb,w':['舅母'],
|
||||
'0,m,xb,d,s':['舅表姨甥'],
|
||||
'1,m,xb,d,s':['舅表外甥'],
|
||||
'0,m,xb,d,d':['舅表姨甥女'],
|
||||
'1,m,xb,d,d':['舅表外甥女'],
|
||||
'm,os':['姨妈'],
|
||||
'm,ls':['姨仔'],
|
||||
'm,xs,h':['姨丈'],
|
||||
'0,m,xb,d,s':['姨姨甥'],
|
||||
'1,m,xb,d,s':['姨外甥'],
|
||||
'0,m,xb,d,d':['姨姨甥女'],
|
||||
'1,m,xb,d,d':['姨外甥女'],
|
||||
'ob':['阿哥'],
|
||||
'ob,w':['阿嫂'],
|
||||
'lb':['阿弟','细佬'],
|
||||
'lb,w':['弟妇'],
|
||||
'xb,s':['侄'],
|
||||
'xb,d':['侄女'],
|
||||
'os':['阿姐'],
|
||||
'os,h':['姐夫'],
|
||||
'ls':['阿妹'],
|
||||
'ls,h':['妹夫'],
|
||||
'0,xs,s':['姨甥'],
|
||||
'1,xs,s':['外甥'],
|
||||
'0,xs,d':['姨甥女'],
|
||||
'1,xs,d':['外甥女'],
|
||||
's':['仔'],
|
||||
's,w':['新妇'],
|
||||
's,s':['孙'],
|
||||
's,s,w':['孙新妇'],
|
||||
's,s,s':['息仔'],
|
||||
's,s,d':['息女'],
|
||||
's,d':['孙女'],
|
||||
's,d,h':['孙女婿'],
|
||||
's,d,s':['外息仔'],
|
||||
's,d,d':['外息女'],
|
||||
'd':['女'],
|
||||
'd,s':['外孙'],
|
||||
'd,s,w':['外孙新妇'],
|
||||
'd,s,s':['外息仔'],
|
||||
'd,s,d':['外息女'],
|
||||
'd,d':['外孙女'],
|
||||
'd,d,h':['外孙女婿'],
|
||||
'd,d,s':['外息仔'],
|
||||
'd,d,d':['外息女'],
|
||||
});
|
||||
for(var key in relationshipMode){
|
||||
relationship.setMode(key,relationshipMode[key]['data']);
|
||||
}
|
||||
|
||||
// 标签页
|
||||
(function(){
|
||||
@ -534,7 +609,12 @@
|
||||
var value = $input.value.trim();
|
||||
if(value){
|
||||
var sex = $sex[0].checked?1:0;
|
||||
var mode = $mode[0].checked?$mode[0].value:$mode[1].value;
|
||||
var mode = 'default';
|
||||
if($mode[1].checked){
|
||||
mode = $mode[1].value;
|
||||
}else if($mode[2].checked){
|
||||
mode = $mode[2].value;
|
||||
}
|
||||
var reverse = !$reverse[0].checked;
|
||||
var result = relationship({text:value,sex:sex,reverse:reverse,mode:mode});
|
||||
$result.value = '';
|
||||
@ -735,28 +815,6 @@
|
||||
})();
|
||||
</script>
|
||||
<script async defer src="https://cdn.bootcdn.net/ajax/libs/github-buttons/2.21.1/buttons.min.js"></script>
|
||||
<script>
|
||||
var _hmt = _hmt || [];
|
||||
(function() {
|
||||
var hm = document.createElement("script");
|
||||
hm.src = "https://hm.baidu.com/hm.js?b86879c9cc57dd112fe1f7dd75206b82";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(hm, s);
|
||||
})();
|
||||
</script>
|
||||
<script>
|
||||
(function(){
|
||||
var bp = document.createElement('script');
|
||||
var curProtocol = window.location.protocol.split(':')[0];
|
||||
if (curProtocol === 'https') {
|
||||
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
|
||||
}
|
||||
else {
|
||||
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
|
||||
}
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(bp, s);
|
||||
})();
|
||||
</script>
|
||||
<script type="text/javascript" src="https://passer-by.com/public/script/stat.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
12323
package-lock.json
generated
57
package.json
@ -1,7 +1,6 @@
|
||||
{
|
||||
"name": "relationship.js",
|
||||
"version": "1.2.0",
|
||||
"summary": "relationship.js is a javascript library for chinese family relationship. 中国家庭亲戚称谓计算器,家庭关系、亲戚关系算法。",
|
||||
"version": "1.2.7",
|
||||
"description": "Chinese kinship library",
|
||||
"author": "HaoLe Zheng",
|
||||
"license": "MIT",
|
||||
@ -10,11 +9,34 @@
|
||||
"relationship.js",
|
||||
"chinese",
|
||||
"family",
|
||||
"relationship",
|
||||
"kinship",
|
||||
"家庭亲戚称谓",
|
||||
"亲戚关系算法"
|
||||
],
|
||||
"main": "dist/relationship.min.js",
|
||||
"main": "./dist/relationship.min.js",
|
||||
"module": "./dist/relationship.min.mjs",
|
||||
"exports": {
|
||||
".": {
|
||||
"import": "./dist/relationship.min.mjs",
|
||||
"require": "./dist/relationship.min.js",
|
||||
"default": "./dist/relationship.min.js"
|
||||
},
|
||||
"./mode": {
|
||||
"import": "./dist/relationship-mode.min.mjs",
|
||||
"require": "./dist/relationship-mode.min.js",
|
||||
"default": "./dist/relationship-mode.min.js"
|
||||
},
|
||||
"./zh-HK": {
|
||||
"import": "./dist/lang/relationship.zh-HK.min.mjs",
|
||||
"require": "./dist/lang/relationship.zh-HK.min.js",
|
||||
"default": "./dist/lang/relationship.zh-HK.min.js"
|
||||
},
|
||||
"./zh-HK/mode": {
|
||||
"import": "./dist/lang/relationship-mode.zh-HK.min.mjs",
|
||||
"require": "./dist/lang/relationship-mode.zh-HK.min.js",
|
||||
"default": "./dist/lang/relationship-mode.zh-HK.min.js"
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/mumuy/relationship.git"
|
||||
@ -22,17 +44,34 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/mumuy/relationship/issues"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20",
|
||||
"yarn": "please-use-npm",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"devDependencies": {
|
||||
"gulp": "^4.0.2",
|
||||
"@babel/core": "^7.26.0",
|
||||
"@babel/plugin-transform-runtime": "^7.25.9",
|
||||
"@babel/preset-env": "^7.26.0",
|
||||
"@babel/runtime": "^7.26.0",
|
||||
"@rollup/plugin-babel": "^6.0.4",
|
||||
"@rollup/plugin-node-resolve": "^15.3.0",
|
||||
"@rollup/plugin-terser": "^0.4.4",
|
||||
"gulp": "^5.0.0",
|
||||
"gulp-cht": "^2.0.20",
|
||||
"gulp-rename": "^2.0.0",
|
||||
"tape": "^5.3.1",
|
||||
"webpack": "^5.74.0",
|
||||
"webpack-cli": "^4.10.0"
|
||||
"gulp-replace": "^1.1.4",
|
||||
"rollup": "^3.29.5",
|
||||
"tape": "^5.9.0",
|
||||
"through2": "^4.0.2"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node test/index.js",
|
||||
"build": "webpack && gulp mini && npm run test"
|
||||
"build": "rollup -c && gulp && npm run test",
|
||||
"watch": "rollup -wc"
|
||||
},
|
||||
"homepage": "https://passer-by.com/relationship/",
|
||||
"directories": {
|
||||
|
47
readme.md
@ -1,32 +1,41 @@
|
||||
[](https://travis-ci.org/mumuy/relationship/)
|
||||

|
||||
|
||||
由于工作生活节奏不同,如今很多关系稍疏远的亲戚之间来往并不多。因此放假回家过年时,往往会搞不清楚哪位亲戚应该喊什么称呼,很是尴尬。然而搞不清亲戚关系和亲戚称谓的不仅是小孩,就连年轻一代的大人也都常常模糊混乱。
|
||||
|
||||
“中国家庭称谓计算器”为你避免了这种尴尬,只需简单的输入即可算出称谓。输入框兼容了不同的叫法,你可以称呼父亲为:“老爸”、“爹地”、“老爷子”等等,方便不同地域的习惯叫法。快捷输入按键,只需简单的点击即可完成关系输入,算法还支持逆向查找称呼哦~!
|
||||
|
||||
|
||||
项目演示地址:[https://passer-by.com/relationship/](https://passer-by.com/relationship/)
|
||||
|
||||
移动版演示地址: [https://passer-by.com/relationship/vue/](https://passer-by.com/relationship/vue/)
|
||||
|
||||
## 一、下载 & 安装
|
||||
|
||||
该 Javascript 库 / 模块可以用于前端也可以用于后端 Nodejs 中。
|
||||
脚本库可以用于浏览器,也可以用于 Nodejs 环境中。
|
||||
|
||||
1. 直接下载dist/relationship.min.js,然后使用 `<script>`标签引入,可以得到全局的方法 `relationship`.
|
||||
2. 使用 npm 进行包管理,具体为:
|
||||
1. 在网页中引入 `<script src="https://passer-by.com/relationship/dist/relationship.min.js">`
|
||||
|
||||
获取全局方法 `relationship`
|
||||
|
||||
2. 使用 npm 安装名为 `relationship.js ` 的包
|
||||
|
||||
> **npm install relationship.js**
|
||||
|
||||
然后使用 `require` 引入模块
|
||||
在脚本中引入模块
|
||||
|
||||
```js
|
||||
var relationship = require("relationship.js");
|
||||
// CommonJS 引入
|
||||
const relationship = require("relationship.js");
|
||||
```
|
||||
|
||||
```js
|
||||
// ES Module 引入
|
||||
import relationship from 'relationship.js';
|
||||
```
|
||||
 
|
||||
|
||||
## 二、使用
|
||||
1. 通用方法: 唯一的计算方法 `relationship(options)`.
|
||||
1. 通用方法: 唯一的计算方法 `relationship`.
|
||||
|
||||
* 选项模式 `relationship(options)`
|
||||
|
||||
参数`options`结构为:
|
||||
|
||||
@ -53,7 +62,7 @@ relationship({text:'妈妈的妈妈的哥哥'});
|
||||
relationship({text:'七舅姥爷',reverse:true,sex:1});
|
||||
// => ['甥外孙']
|
||||
|
||||
// 如:舅公和我具体是什么关系?
|
||||
// 如:舅公是什么亲戚
|
||||
relationship({text:'舅公',type:'chain'});
|
||||
// => ['爸爸的妈妈的兄弟', '妈妈的妈妈的兄弟', '老公的妈妈的兄弟']
|
||||
|
||||
@ -64,8 +73,24 @@ relationship({text:'外婆',target:'舅妈',sex:1});
|
||||
// 如:外婆和奶奶之间是什么关系?
|
||||
relationship({text:'外婆',target:'奶奶',type:'pair'});
|
||||
// => ['儿女亲家']
|
||||
|
||||
```
|
||||
|
||||
* 语句模式 `relationship(exptession)`
|
||||
|
||||
参数`exptession`句式可以为:`xxx是xxx的什么人`、`xxx叫xxx什么`、`xxx如何称呼xxx`等.
|
||||
|
||||
代码示例:
|
||||
|
||||
```js
|
||||
// 如:舅妈如何称呼外婆?
|
||||
relationship('舅妈如何称呼外婆?');
|
||||
// => ['婆婆']
|
||||
|
||||
// 如:外婆和奶奶之间是什么关系?
|
||||
relationship('外婆和奶奶之间是什么关系?');
|
||||
// => ['儿女亲家']
|
||||
```
|
||||
|
||||
2. 内部属性:获取当前数据表 `relationship.data`.
|
||||
|
||||
3. 内部属性:获取当前数据量 `relationship.dataCount`.
|
||||
|
62
rollup.config.mjs
Normal file
@ -0,0 +1,62 @@
|
||||
import resolve from '@rollup/plugin-node-resolve'; // 使用node_modules包
|
||||
import terser from '@rollup/plugin-terser'; // 代码压缩
|
||||
import babel from '@rollup/plugin-babel'; // ECMAScript兼容
|
||||
import pkg from './package.json' with { type:'json' }; // 获取package信息
|
||||
|
||||
// 版权信息
|
||||
const repository = pkg.repository.url.replace(/(.+)(:\/\/.+)\.git$/,'https$2');
|
||||
const now = new Date();
|
||||
const date = (new Date(now.getTime()-now.getTimezoneOffset()*60000)).toISOString().substr(0,10);
|
||||
const banner = `/*!
|
||||
* ${pkg.name} v${pkg.version}
|
||||
* ${pkg.description}
|
||||
* ${pkg.homepage}
|
||||
*
|
||||
* Copyright (c) 2016-present, ${pkg.author}
|
||||
*
|
||||
* Released under the ${pkg.license} License
|
||||
* ${repository}
|
||||
*
|
||||
* Created on: ${date}
|
||||
*/`;
|
||||
|
||||
const commonPlugins = [
|
||||
resolve(),
|
||||
terser(),
|
||||
babel({
|
||||
babelHelpers: 'runtime',
|
||||
exclude:'node_modules/**'
|
||||
})
|
||||
];
|
||||
|
||||
export default [{
|
||||
input: './src/relationship.js',
|
||||
output:[{
|
||||
file: pkg.main,
|
||||
format: 'umd',
|
||||
name: 'relationship',
|
||||
banner
|
||||
},{
|
||||
file: pkg.module,
|
||||
format: 'es',
|
||||
banner
|
||||
}],
|
||||
plugins: commonPlugins,
|
||||
watch: {
|
||||
exclude: 'node_modules/**'
|
||||
}
|
||||
},{
|
||||
input: './src/relationship-mode.js',
|
||||
output:[{
|
||||
file: './dist/relationship-mode.min.js',
|
||||
format: 'umd',
|
||||
name: 'relationshipMode'
|
||||
},{
|
||||
file: './dist/relationship-mode.min.mjs',
|
||||
format: 'es'
|
||||
}],
|
||||
plugins: commonPlugins,
|
||||
watch: {
|
||||
exclude: 'node_modules/**'
|
||||
}
|
||||
}];
|
81
src/locale/guangdong.js
Normal file
@ -0,0 +1,81 @@
|
||||
export default {
|
||||
'name':'广东',
|
||||
'data':{
|
||||
'f':['老窦'],
|
||||
'f,f':['阿爷'],
|
||||
'f,f,f':['太公'],
|
||||
'f,f,m':['太婆'],
|
||||
'f,m':['阿嫲'],
|
||||
'f,m,f':['太外公'],
|
||||
'f,m,m':['太外婆'],
|
||||
'f,ob':['伯伯'],
|
||||
'f,ob,w':['伯娘'],
|
||||
'f,lb':['阿叔'],
|
||||
'f,lb,w':['阿婶'],
|
||||
'0,f,xb,d,s':['堂姨甥'],
|
||||
'1,f,xb,d,s':['堂外甥'],
|
||||
'0,f,xb,d,d':['堂姨甥女'],
|
||||
'1,f,xb,d,d':['堂外甥女'],
|
||||
'f,os':['姑母'],
|
||||
'f,ls':['姑姐'],
|
||||
'f,xs,h':['姑丈'],
|
||||
'0,f,xs,d,s':['姑表姨甥'],
|
||||
'1,f,xs,d,s':['姑表外甥'],
|
||||
'0,f,xs,d,d':['姑表姨甥女'],
|
||||
'1,f,xs,d,d':['姑表外甥女'],
|
||||
'm':['老母'],
|
||||
'm,f':['阿公'],
|
||||
'm,f,f':['外太公'],
|
||||
'm,f,m':['外太婆'],
|
||||
'm,m':['阿婆'],
|
||||
'm,m,f':['外太外公'],
|
||||
'm,m,m':['外太外婆'],
|
||||
'm,ob':['舅父'],
|
||||
'm,lb':['舅仔'],
|
||||
'm,xb,w':['舅母'],
|
||||
'0,m,xb,d,s':['舅表姨甥'],
|
||||
'1,m,xb,d,s':['舅表外甥'],
|
||||
'0,m,xb,d,d':['舅表姨甥女'],
|
||||
'1,m,xb,d,d':['舅表外甥女'],
|
||||
'm,os':['姨妈'],
|
||||
'm,ls':['姨仔'],
|
||||
'm,xs,h':['姨丈'],
|
||||
'0,m,xb,d,s':['姨姨甥'],
|
||||
'1,m,xb,d,s':['姨外甥'],
|
||||
'0,m,xb,d,d':['姨姨甥女'],
|
||||
'1,m,xb,d,d':['姨外甥女'],
|
||||
'ob':['大佬'],
|
||||
'ob,w':['阿嫂'],
|
||||
'lb':['细佬'],
|
||||
'lb,w':['弟妇'],
|
||||
'xb,s':['侄'],
|
||||
'xb,d':['侄女'],
|
||||
'os':['家姐'],
|
||||
'os,h':['姐夫'],
|
||||
'ls':['阿妹'],
|
||||
'ls,h':['妹夫'],
|
||||
'0,xs,s':['姨甥'],
|
||||
'1,xs,s':['外甥'],
|
||||
'0,xs,d':['姨甥女'],
|
||||
'1,xs,d':['外甥女'],
|
||||
's':['仔'],
|
||||
's,w':['新妇'],
|
||||
's,s':['孙'],
|
||||
's,s,w':['孙新妇'],
|
||||
's,s,s':['息仔'],
|
||||
's,s,d':['息女'],
|
||||
's,d':['孙女'],
|
||||
's,d,h':['孙女婿'],
|
||||
's,d,s':['外息仔'],
|
||||
's,d,d':['外息女'],
|
||||
'd':['女'],
|
||||
'd,s':['外孙'],
|
||||
'd,s,w':['外孙新妇'],
|
||||
'd,s,s':['外息仔'],
|
||||
'd,s,d':['外息女'],
|
||||
'd,d':['外孙女'],
|
||||
'd,d,h':['外孙女婿'],
|
||||
'd,d,s':['外息仔'],
|
||||
'd,d,d':['外息女'],
|
||||
}
|
||||
}
|
19
src/locale/north.js
Normal file
@ -0,0 +1,19 @@
|
||||
export default {
|
||||
'name':'北方',
|
||||
'data':{
|
||||
'm,m':['姥姥'],
|
||||
'm,m,xs':['姨姥姥'],
|
||||
'm,m,xs,h':['姨姥爷'],
|
||||
'm,m,xb':['舅姥爷'],
|
||||
'm,m,xb,w':['舅姥姥'],
|
||||
'm,f':['姥爷'],
|
||||
'm,f,xs':['姑姥姥'],
|
||||
'm,f,xs,h':['姑姥爷'],
|
||||
'm,f,ob':['大姥爷'],
|
||||
'm,f,ob,w':['大姥姥'],
|
||||
'm,f,lb':['小姥爷'],
|
||||
'm,f,lb,w':['小姥姥'],
|
||||
'f,ob':['大爷'],
|
||||
'f,ob,w':['大娘'],
|
||||
}
|
||||
}
|
64
src/map.js
@ -1,64 +0,0 @@
|
||||
// 默认完整映射关系
|
||||
import _main from './main';
|
||||
import _prefix from './prefix';
|
||||
import _branch from './branch';
|
||||
|
||||
var _map = {};
|
||||
|
||||
// 分支关系
|
||||
for(var key in _branch){
|
||||
var tag = key.match(/\{.+?\}/)[0];
|
||||
var nameList = _branch[key];
|
||||
for(var k in _prefix[tag]){
|
||||
var prefixList = _prefix[tag][k];
|
||||
var newKey = key.replace(tag,k);
|
||||
var isFilter = ['h,h','w,w','w,h','h,w'].some(pair=>(newKey.includes(pair)));
|
||||
var newList = [];
|
||||
if(!isFilter){
|
||||
prefixList.forEach(function(prefix){
|
||||
nameList.forEach(function(name){
|
||||
if(name.includes('?')){
|
||||
newList.push(name.replace('?',prefix));
|
||||
}else{
|
||||
newList.push(prefix+name);
|
||||
}
|
||||
});
|
||||
});
|
||||
_map[newKey] = [].concat(_map[newKey]||[],newList);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 主要关系
|
||||
for(var key in _main){
|
||||
_map[key] = [].concat(_main[key],_map[key]||[]);
|
||||
}
|
||||
// 版权彩蛋
|
||||
_map['o']=['passer-by.com','\u4f5c\u8005'];
|
||||
// 配偶关系
|
||||
var branch = {
|
||||
'w':['妻','内','岳','岳家','丈人'],
|
||||
'h':['夫','外','公','婆家','婆婆'],
|
||||
};
|
||||
var nameSet = new Set(Object.values(_map).flat());
|
||||
for(var key in _map){
|
||||
if(key.match(/^[fm]/)||key.match(/^[olx][bs]$|^[olx][bs],[^mf]/)){
|
||||
for(var k in branch){
|
||||
var newKey = k+','+key;
|
||||
if(!_map[newKey]){
|
||||
_map[newKey] = [];
|
||||
}
|
||||
var prefixList = branch[k];
|
||||
var nameList = _map[key];
|
||||
prefixList.forEach(function(prefix){
|
||||
nameList.forEach(function(name){
|
||||
var newName = prefix+name;
|
||||
if(!nameSet.has(newName)){ // 配偶组合的称呼不得已原有称呼冲突(如:妻舅!=妻子的舅舅;外舅公!=老公的舅公)
|
||||
_map[newKey].push(newName);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default _map;
|
597
src/method.js
@ -1,597 +0,0 @@
|
||||
// 通用方法
|
||||
import _filter from './filter';
|
||||
import _map from './map';
|
||||
import _pair from './pair';
|
||||
|
||||
var _mode = {}; // 模式数据
|
||||
var _data = Object.assign({},_map); // 最终数据
|
||||
|
||||
// 中文数字转阿拉伯数字
|
||||
var zh2number = function(text){
|
||||
var num = 0;
|
||||
var map = {'大':1,'小':99};
|
||||
var textAttr = ['','一','二','三','四','五','六','七','八','九','十'];
|
||||
if(map[text]){
|
||||
num = map[text];
|
||||
}else{
|
||||
if(text.includes('十')){
|
||||
var numAttr = text.split('十');
|
||||
if(!numAttr[0]){
|
||||
num = 10;
|
||||
}else{
|
||||
num = textAttr.indexOf(numAttr[0])*10;
|
||||
}
|
||||
num += textAttr.indexOf(numAttr[1]);
|
||||
}else{
|
||||
num += textAttr.includes(text)?textAttr.indexOf(text):0;
|
||||
}
|
||||
}
|
||||
return num;
|
||||
};
|
||||
|
||||
// 阿拉伯数字转中文数字
|
||||
var number2zh = function(num){
|
||||
var text = '';
|
||||
var map = {1:'大',99:'小'};
|
||||
var textAttr = ['','一','二','三','四','五','六','七','八','九','十'];
|
||||
if(map[num]){
|
||||
text = map[num];
|
||||
}else{
|
||||
var dec = ~~(num/10);
|
||||
var unit = num%10;
|
||||
if(dec){
|
||||
if(dec>1){
|
||||
text = dec<textAttr.length?textAttr[dec]:'';
|
||||
}
|
||||
text += '十';
|
||||
text += unit<textAttr.length?textAttr[unit]:'';
|
||||
}else{
|
||||
text += num<textAttr.length?textAttr[num]:'';
|
||||
}
|
||||
}
|
||||
return text;
|
||||
};
|
||||
|
||||
// 获得代数
|
||||
var getGen = function(id){
|
||||
var gMap = {'f':1,'m':1,'s':-1,'d':-1};
|
||||
var arr = id.split(',');
|
||||
var gen = 0;
|
||||
arr.forEach(function(sub){
|
||||
var s = sub.replace(/&[ol\d]+/,'');
|
||||
gen += gMap[s]||0;
|
||||
});
|
||||
return gen;
|
||||
};
|
||||
|
||||
// 获得最简
|
||||
var getOptimal = function(options){
|
||||
var from = options['from'];
|
||||
var to = options['to']
|
||||
var sex = options['sex'];
|
||||
var from_chain = options['from'].split(',');
|
||||
var to_chain = options['to'].split(',');
|
||||
for(var i=0;i<from_chain.length&&i<to_chain.length;i++){
|
||||
if(from_chain[i]==to_chain[i]){
|
||||
from = from_chain.slice(i+1).join(',');
|
||||
to = to_chain.slice(i+1).join(',');
|
||||
sex = from_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
|
||||
continue;
|
||||
}else{
|
||||
if(getGen(from_chain[i])==getGen(to_chain[i])&&from_chain[i].match(/^[xol][bs]|^[sd]/)){
|
||||
var from_match = from_chain[i].match(/&([ol\d]+)/);
|
||||
var to_match = to_chain[i].match(/&([ol\d]+)/);
|
||||
if(!from_match){
|
||||
from_match = from_chain[i].match(/([ol])[bs]/);
|
||||
}
|
||||
if(!to_match){
|
||||
to_match = to_chain[i].match(/([ol])[bs]/);
|
||||
}
|
||||
var from_attr = from_match?from_match[1]:'';
|
||||
var to_attr = to_match?to_match[1]:'';
|
||||
if(from_attr&&to_attr){
|
||||
if(!isNaN(from_attr)&&!isNaN(to_attr)){
|
||||
if(+from_attr>+to_attr){
|
||||
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'lb').replace(/^[xol]s|^d/,'ls');
|
||||
}else if(+from_attr<+to_attr){
|
||||
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'ob').replace(/^[xol]s|^d/,'os');
|
||||
}
|
||||
}else if(!isNaN(from_attr)&&to_attr=='o'||from_attr=='l'&&!isNaN(to_attr)){
|
||||
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'lb').replace(/^[xol]s|^d/,'ls');
|
||||
}else if(!isNaN(from_attr)&&to_attr=='l'||from_attr=='o'&&!isNaN(to_attr)){
|
||||
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'ob').replace(/^[xol]s|^d/,'os');
|
||||
}
|
||||
from = from_chain.slice(i).join(',');
|
||||
to = to_chain.slice(i+1).join(',');
|
||||
sex = to_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
|
||||
}else if(options['optimal']){
|
||||
from_match = from_chain[i].match(/([xol])[bs]/);
|
||||
to_match = to_chain[i].match(/([xol])[bs]/);
|
||||
from_attr = from_match?from_match[1]:'';
|
||||
to_attr = to_match?to_match[1]:'';
|
||||
if(from_attr=='x'||to_attr=='x'){
|
||||
from = from_chain.slice(i+1).join(',');
|
||||
to = to_chain.slice(i+1).join(',');
|
||||
sex = from_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return {
|
||||
'from':from,
|
||||
'to':to,
|
||||
'sex':sex
|
||||
};
|
||||
};
|
||||
|
||||
// 数组去重
|
||||
export function unique(arr){
|
||||
var sameList = arr.filter(item=>item==item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''));
|
||||
return arr.filter(item=>{
|
||||
var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,'');
|
||||
return sameList.includes(item)||item!=temp&&!sameList.includes(temp);
|
||||
}).filter((item,idx,arr) => arr.indexOf(item) === idx);
|
||||
};
|
||||
|
||||
// 中文获取选择器
|
||||
export function getSelectors(str){
|
||||
str = str.replace(/之/g,'的').replace(/吾之?(.+)/,'$1').replace(/我的?(.+)/,'$1');
|
||||
if(str.match(/[^娘婆岳亲]家的?/)){
|
||||
str = str.replace(/家的?/,'的');
|
||||
}
|
||||
var lists = str.split('的');
|
||||
var result = [];
|
||||
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){
|
||||
var name = lists.shift(); //当前匹配词
|
||||
var items = []; //当前匹配词可能性
|
||||
var x_items = [];
|
||||
var r_items = [];
|
||||
var keywords = [name];
|
||||
var getList = function(name){
|
||||
for(var filter in replaceFilter){
|
||||
var word_list = replaceFilter[filter];
|
||||
word_list.forEach(function(word){
|
||||
var name1 = name.replace(new RegExp(filter),word);
|
||||
if(name1!=name){
|
||||
keywords.push(name1);
|
||||
getList(name1);
|
||||
}
|
||||
});
|
||||
}
|
||||
for(var word in replaceMap){
|
||||
var name1 = name.replace(word,replaceMap[word]);
|
||||
var name2 = name.replace(replaceMap[word],word);
|
||||
if(name1!=name){
|
||||
keywords.push(name1);
|
||||
}
|
||||
if(name2!=name){
|
||||
keywords.push(name2);
|
||||
}
|
||||
}
|
||||
};
|
||||
getList(name);
|
||||
// 通过关键词找关系
|
||||
keywords.forEach(function(name){
|
||||
var x_name = name.replace(/^[大|小]|^[一|二|三|四|五|六|七|八|九|十]+/,'几');
|
||||
var r_name = name.replace(/^[大|小]|^[一|二|三|四|五|六|七|八|九|十]+/,'');
|
||||
var match = name.match(/^[大|小]|^[一|二|三|四|五|六|七|八|九|十]+/);
|
||||
if(match){
|
||||
var num = zh2number(match[0]);
|
||||
for(var i in _data){
|
||||
var r_i = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num);
|
||||
if(_data[i].includes(x_name)){
|
||||
x_items.push(r_i);
|
||||
}else if(_data[i].includes(r_name)){
|
||||
if(!i.match(/^[mf,]+$/)&&!r_name.match(/^[从世]/)){ // 直系祖辈不参与排序
|
||||
r_items.push(r_i);
|
||||
}
|
||||
}
|
||||
if(_data[i].includes(name)){
|
||||
items.push(r_i);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
for(var i in _data){
|
||||
if(_data[i].includes(name)){
|
||||
items.push(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
// console.log('[keywords]',keywords);
|
||||
// 如找不到结果,再是否存在称呼的排行问题(不直接判断,因存在"大舅""三从父兄""三世祖"这样特俗含义的情况)
|
||||
if(!items.length){
|
||||
items = x_items;
|
||||
}
|
||||
if(!items.length){
|
||||
items = r_items;
|
||||
}
|
||||
// 完全匹配不到结果
|
||||
if(!items.length){
|
||||
isMatch = false;
|
||||
}
|
||||
var res = [];
|
||||
if(!result.length){
|
||||
result = [''];
|
||||
}
|
||||
result.forEach(function(a){
|
||||
items.forEach(function(b){
|
||||
res.push(a+(b?','+b:''));
|
||||
});
|
||||
});
|
||||
result = res;
|
||||
}
|
||||
return isMatch?result:[];
|
||||
};
|
||||
|
||||
// 合并选择器,查找两个对象之间的关系
|
||||
export function mergeSelector(param){
|
||||
var from_selector = param['from'];
|
||||
var to_selector = param['to'];
|
||||
var my_sex = param['sex'];
|
||||
if(my_sex<0){
|
||||
var to_sex = -1;
|
||||
var from_sex = -1;
|
||||
if(from_selector.match(/^,[w1]/)){
|
||||
from_sex = 1;
|
||||
}else if(from_selector.match(/^,[h0]/)){
|
||||
from_sex = 0;
|
||||
}
|
||||
if(to_selector.match(/^,[w1]/)){
|
||||
to_sex = 1;
|
||||
}else if(to_selector.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 [];
|
||||
}
|
||||
}
|
||||
var from_ids = selector2id(param['from'],my_sex);
|
||||
var to_ids = selector2id(param['to'],my_sex);
|
||||
if(!from_ids.length||!to_ids.length){
|
||||
return [];
|
||||
}
|
||||
var result = [];
|
||||
from_ids.forEach(function(from){
|
||||
to_ids.forEach(function(to){
|
||||
var sex = my_sex;
|
||||
var selector = ','+to;
|
||||
if(selector.match(/,([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?$/)){
|
||||
sex = 1;
|
||||
}
|
||||
if(selector.match(/,([mwd0](&[ol\d]+)?|[olx]s)(&[ol\d]+)?$/)){
|
||||
sex = 0;
|
||||
}
|
||||
if(from&&to){
|
||||
var isOptimal = param.optimal;
|
||||
if(from.match(/&\d+/)||to.match(/&\d+/)){
|
||||
isOptimal = true;
|
||||
}
|
||||
if(isOptimal){
|
||||
var ops = getOptimal({
|
||||
'from':from,
|
||||
'to':to,
|
||||
'sex':my_sex,
|
||||
'optimal':param.optimal
|
||||
});
|
||||
from = ops['from'];
|
||||
to = ops['to'];
|
||||
my_sex = ops['sex'];
|
||||
}
|
||||
}
|
||||
var to_rids = to?reverseId(to,my_sex):[''];
|
||||
to_rids.forEach(function(to_r){
|
||||
var selector = (to_r?','+to_r:'')+(from?','+from:'');
|
||||
result.push({
|
||||
'selector':selector,
|
||||
'sex':sex
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
return result;
|
||||
};
|
||||
|
||||
// 选择器转ID
|
||||
export function selector2id(selector,sex){
|
||||
var result = [];
|
||||
var hash = {};
|
||||
if(!selector.match(/^,/)){
|
||||
selector = ','+selector;
|
||||
}
|
||||
//性别判断
|
||||
if(sex<0){
|
||||
if(selector.match(/^,[w1]/)){
|
||||
sex = 1;
|
||||
}else if(selector.match(/^,[h0]/)){
|
||||
sex = 0;
|
||||
}
|
||||
}else if(sex==1&&selector.match(/^,[h0]/)){
|
||||
return [];
|
||||
}else if(sex==0&&selector.match(/^,[w1]/)){
|
||||
return [];
|
||||
}
|
||||
// console.log('[selector]',selector);
|
||||
var getId = function(selector,sex){
|
||||
if(!selector.match(/^,/)){
|
||||
selector = ','+selector;
|
||||
}
|
||||
if(sex>-1&&!selector.includes(',1')&&!selector.includes(',0')){
|
||||
selector = ','+sex+selector;
|
||||
}
|
||||
if(selector.match(/,[mwd0](&[ol\d]+)?,w|,[hfs1](&[ol\d]+)?,h/)){ //同志关系去除
|
||||
return [];
|
||||
}
|
||||
var s='';
|
||||
if(!hash[selector]){
|
||||
hash[selector] = true;
|
||||
do{
|
||||
s = selector;
|
||||
for(var i in _filter){
|
||||
var item = _filter[i];
|
||||
// console.log('[filter]',item['exp'],selector);
|
||||
selector = selector.replace(item['exp'],item['str']);
|
||||
if(selector.includes('#')){
|
||||
selector.split('#').forEach(getId);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}while(s!=selector);
|
||||
if(selector.match(/,[mwd0](&[ol\d+])?,w|,[hfs1](&[ol\d]+)?,h/)){ //同志关系去除
|
||||
return false;
|
||||
}
|
||||
selector = selector.replace(/,[01]/,'').substr(1); //去前面逗号和性别信息
|
||||
result.push(selector);
|
||||
}
|
||||
}
|
||||
getId(selector,sex);
|
||||
return unique(result);
|
||||
};
|
||||
|
||||
// 逆转ID
|
||||
export function reverseId(id,sex){
|
||||
var hash = {
|
||||
f:['d','s'],
|
||||
m:['d','s'],
|
||||
h:['w',''],
|
||||
w:['','h'],
|
||||
s:['m','f'],
|
||||
d:['m','f'],
|
||||
lb:['os','ob'],
|
||||
ob:['ls','lb'],
|
||||
xb:['xs','xb'],
|
||||
ls:['os','ob'],
|
||||
os:['ls','lb'],
|
||||
xs:['xs','xb']
|
||||
};
|
||||
var age = '';
|
||||
if(id.match(/&o$/)){
|
||||
age = '&l';
|
||||
}else if(id.match(/&l$/)){
|
||||
age = '&o';
|
||||
}
|
||||
if(id){
|
||||
id = id.replace(/&[ol\d+]/g,'');
|
||||
//性别判断
|
||||
if(sex<0){
|
||||
if(id.match(/^w/)){
|
||||
sex = 1;
|
||||
}else if(id.match(/^h/)){
|
||||
sex = 0;
|
||||
}
|
||||
}
|
||||
var result = [];
|
||||
var doing = function(sex){
|
||||
var sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0');
|
||||
sid = sid.substring(0,sid.length-2);
|
||||
var id_arr = id.split(',').reverse();
|
||||
var sid_arr = sid.split(',').reverse();
|
||||
var arr = id_arr.map((id,i)=>hash[id][sid_arr[i]]);
|
||||
var r_id = arr.join(',');
|
||||
var gen = getGen(r_id);
|
||||
return r_id +(gen?'':age);
|
||||
};
|
||||
if(sex<0){
|
||||
result.push(doing(1));
|
||||
result.push(doing(0));
|
||||
}else{
|
||||
result.push(doing(sex));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return [''];
|
||||
};
|
||||
|
||||
// 通过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(id.match(/&([\d]+)(,[hw])?$/)){
|
||||
var num = id.match(/&([\d]+)(,[hw])?$/)[1];
|
||||
var zh = number2zh(num);
|
||||
id = id.replace(/&\d+/g,'');
|
||||
if(_data[id]){
|
||||
var item = '';
|
||||
var gen = getGen(id);
|
||||
if(gen<3&&!id.match(/[hw],/)){
|
||||
_data[id].forEach(function(name){
|
||||
if(!item&&name.includes('几')){
|
||||
item = name.replace('几',zh);
|
||||
}
|
||||
});
|
||||
if(!item){
|
||||
item = _data[id][0].match(/^[大小]/)?_data[id][0].replace(/^[大小]/,zh):zh+_data[id][0];
|
||||
}
|
||||
}else{
|
||||
item = _data[id][0]
|
||||
}
|
||||
items.push(item);
|
||||
}
|
||||
}else{
|
||||
id = id.replace(/&\d+/g,'');
|
||||
}
|
||||
// 直接匹配称呼
|
||||
if(!items.length){
|
||||
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){
|
||||
var arr = id.split(',');
|
||||
return arr.map(function(sign){
|
||||
var key = sign.replace(/&[ol\d]+/,'');
|
||||
var data = Object.assign({},_data,{
|
||||
'xb':['兄弟'],
|
||||
'xs':['姐妹']
|
||||
});
|
||||
return data[key][0];
|
||||
}).join('的');
|
||||
};
|
||||
|
||||
// 通过ID获取关系合称
|
||||
export function getPairsByIds(id1,id2){
|
||||
var result = [];
|
||||
var result_x = [];
|
||||
var result_r = [];
|
||||
id1 = id1.replace(/&\d+/,'');
|
||||
id2 = id2.replace(/&\d+/,'');
|
||||
var id1_x = id1.replace(/([ol])([bs])/,'x$2');
|
||||
var id2_x = id2.replace(/([ol])([bs])/,'x$2');
|
||||
var id1_r = id1.replace(/&[ol]/,'');
|
||||
var id2_r = id2.replace(/&[ol]/,'');
|
||||
for(var key in _pair){
|
||||
var selectors = key.split('#');
|
||||
if(selectors.length>1){
|
||||
var list1 = selector2id(selectors[0]);
|
||||
var list2 = selector2id(selectors[1]);
|
||||
var list1_r = list1.map(function(selector){
|
||||
return selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2');
|
||||
});
|
||||
var list2_r = list2.map(function(selector){
|
||||
return selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2');
|
||||
});
|
||||
if(list1.includes(id1)&&list2.includes(id2)||list1.includes(id2)&&list2.includes(id1)){
|
||||
result.push(_pair[key][0]);
|
||||
}
|
||||
if(list1_r.includes(id1_x)&&list2_r.includes(id2_x)||list1_r.includes(id2_x)&&list2_r.includes(id1_x)){
|
||||
result_x.push(_pair[key][0]);
|
||||
}
|
||||
if(list1_r.includes(id1_r)&&list2_r.includes(id2_r)||list1_r.includes(id2_r)&&list2_r.includes(id1_r)){
|
||||
result_r.push(_pair[key][0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!result.length){
|
||||
result = result_x;
|
||||
}
|
||||
if(!result.length){
|
||||
result = result_r;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
// 设置模式数据
|
||||
export function setMode(sign,data){
|
||||
_mode[sign] = Object.assign(_mode[sign]||{},data);
|
||||
};
|
||||
|
||||
// 获取模式数据
|
||||
export function getDataByMode(sign){
|
||||
var data = Object.assign({},_map);
|
||||
if(sign&&_mode[sign]){
|
||||
for(var key in _mode[sign]){
|
||||
data[key] = [].concat(_mode[sign][key],_map[key]||[]);
|
||||
}
|
||||
}
|
||||
return data;
|
||||
};
|
27
src/module/cache.js
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* 缓存数据
|
||||
*/
|
||||
import _input from './data/input.js';
|
||||
import _sort from './data/sort.js';
|
||||
import {modeData} from './mode.js';
|
||||
|
||||
function mergeValues(target, source) {
|
||||
Object.entries(source).forEach(([key, value]) => {
|
||||
target[key] = (target[key] || []).concat(value);
|
||||
});
|
||||
return target;
|
||||
}
|
||||
let _hash = mergeValues({...modeData }, _input);
|
||||
_hash = mergeValues(_hash, _sort);
|
||||
|
||||
let cacheData = {};
|
||||
Object.entries(_hash).forEach(([key, names]) => {
|
||||
names.forEach((name) => {
|
||||
if (!cacheData[name]) {
|
||||
cacheData[name] = [];
|
||||
}
|
||||
cacheData[name].push(key);
|
||||
});
|
||||
});
|
||||
|
||||
export {cacheData};
|
@ -1,120 +1,60 @@
|
||||
// 分支关系链
|
||||
/*
|
||||
* 分支关系链 - 旁支亲戚的分支关系链
|
||||
*/
|
||||
export default {
|
||||
// 其他旁系
|
||||
'{G2}':['祖父'],
|
||||
'{G2},w':['祖母'],
|
||||
'{G2},s':['父'],
|
||||
'{G2},s,w':['母'],
|
||||
'{G2},s,s':['兄弟'],
|
||||
'{G2},s,s&o':['兄'],
|
||||
'{G2},s,s&l':['弟'],
|
||||
'{G2},s,s':['兄弟'],
|
||||
'{G2},s,d&o':['姊'],
|
||||
'{G2},s,d&l':['妹'],
|
||||
'{G2},s,d':['姊妹'],
|
||||
'{G2},s,s,s':['男','子'],
|
||||
'{G2},s,s,d':['女'],
|
||||
'{G2C},s&o':['伯父'],
|
||||
'{G2C},s&o,w':['伯母'],
|
||||
'{G2C},s&l':['叔父'],
|
||||
'{G2C},s&l,w':['叔母'],
|
||||
'{G2C},s,s&o':['兄'],
|
||||
'{G2C},s,s&l':['弟'],
|
||||
'{G2C},s,s,s':['侄男'],
|
||||
'{G2C},s,s,d':['侄女'],
|
||||
'{G2C},s,d&o':['姐'],
|
||||
'{G2C},s,d&l':['妹'],
|
||||
'{G2C},s,d,s':['甥男'],
|
||||
'{G2C},s,d,d':['甥女'],
|
||||
'{G2C},d':['姑母'],
|
||||
'{G2C},d,h':['姑父'],
|
||||
'{G2C},d,s&o':['兄'],
|
||||
'{G2C},d,s&l':['弟'],
|
||||
'{G2C},d,s,s':['侄男'],
|
||||
'{G2C},d,s,d':['侄女'],
|
||||
'{G2C},d,d&o':['姐'],
|
||||
'{G2C},d,d&l':['妹'],
|
||||
'{G2C},d,d,s':['甥男'],
|
||||
'{G2C},d,d,d':['甥女'],
|
||||
'{G2},s,d':['姊妹'],
|
||||
'{G2},s,d&o':['姊'],
|
||||
'{G2},s,d&l':['妹'],
|
||||
// 高祖以上
|
||||
'f,f,f,f,f,f,f,f,{G1M}':['鼻祖父'],
|
||||
'f,f,f,f,f,f,f,f,{G1M},w':['鼻祖母'],
|
||||
'f,f,f,f,f,f,f,f,{G1W}':['鼻祖母'],
|
||||
'f,f,f,f,f,f,f,f,{G1W},h':['鼻祖父'],
|
||||
'f,f,f,f,f,f,f,{G1M}':['远祖父'],
|
||||
'f,f,f,f,f,f,f,{G1M},w':['远祖母'],
|
||||
'f,f,f,f,f,f,f,{G1W}':['远祖母'],
|
||||
'f,f,f,f,f,f,f,{G1W},h':['远祖父'],
|
||||
'f,f,f,f,f,f,{G1M}':['太祖父'],
|
||||
'f,f,f,f,f,f,{G1M},w':['太祖母'],
|
||||
'f,f,f,f,f,f,{G1W}':['姑太祖母'],
|
||||
'f,f,f,f,f,f,{G1W},h':['姑太祖父'],
|
||||
'f,f,f,f,f,{G1M}':['烈祖父'],
|
||||
'f,f,f,f,f,{G1M},w':['烈祖母'],
|
||||
'f,f,f,f,f,{G1W}':['烈祖母'],
|
||||
'f,f,f,f,f,{G1W},h':['烈祖父'],
|
||||
'f,f,f,f,{G1M}':['天祖父'],
|
||||
'f,f,f,f,{G1M},w':['天祖母'],
|
||||
'f,f,f,f,{G1W}':['天祖母'],
|
||||
'f,f,f,f,{G1W},h':['天祖父'],
|
||||
'f,f,f,f,f,f,f,f,[{G1M}|{G1W},h]':['鼻祖父'],
|
||||
'f,f,f,f,f,f,f,f,[{G1M},w|{G1W}]':['鼻祖母'],
|
||||
'f,f,f,f,f,f,f,[{G1M}|{G1W},h]':['远祖父'],
|
||||
'f,f,f,f,f,f,f,[{G1M},w|{G1W}]':['远祖母'],
|
||||
'f,f,f,f,f,f,[{G1M}|{G1W},h]':['太祖父'],
|
||||
'f,f,f,f,f,f,[{G1M},w|{G1W}]':['太祖母'],
|
||||
'f,f,f,f,f,[{G1M}|{G1W},h]':['烈祖父'],
|
||||
'f,f,f,f,f,[{G1M},w|{G1W}]':['烈祖母'],
|
||||
'f,f,f,f,[{G1M}|{G1W},h]':['天祖父'],
|
||||
'f,f,f,f,[{G1M},w|{G1W}]':['天祖母'],
|
||||
// 高祖辈
|
||||
'f,f,f,{G1M}':['高祖父','外曾外曾外毑父'],
|
||||
'f,f,f,{G1M},w':['高祖母','外曾外曾外毑母'],
|
||||
'f,f,f,{G1W}':['高祖母','外曾外曾外毑母'],
|
||||
'f,f,f,{G1W},h':['高祖父','外曾外曾外毑父'],
|
||||
'f,f,m,{G1M}':['高外祖父','外曾外曾毑父'],
|
||||
'f,f,m,{G1M},w':['高外祖母','外曾外曾毑母'],
|
||||
'f,f,m,{G1W}':['高外祖母','外曾外曾毑母'],
|
||||
'f,f,m,{G1W},h':['高外祖父','外曾外曾毑父'],
|
||||
'f,m,f,{G1M}':['曾外曾祖父','外高外毑父'],
|
||||
'f,m,f,{G1M},w':['曾外曾祖母','外高外毑母'],
|
||||
'f,m,f,{G1W}':['曾外曾祖母','外高外毑母'],
|
||||
'f,m,f,{G1W},h':['曾外曾祖父','外高外毑父'],
|
||||
'f,m,m,{G1M}':['曾外曾外祖父','外高毑父'],
|
||||
'f,m,m,{G1M},w':['曾外曾外祖母','外高毑母'],
|
||||
'f,m,m,{G1W}':['曾外曾外祖母','外高毑母'],
|
||||
'f,m,m,{G1W},h':['曾外曾外祖父','外高毑父'],
|
||||
'm,f,f,{G1M}':['外高祖父','曾外曾外毑父'],
|
||||
'm,f,f,{G1M},w':['外高祖母','曾外曾外毑母'],
|
||||
'm,f,f,{G1W}':['外高祖母','曾外曾外毑母'],
|
||||
'm,f,f,{G1W},h':['外高祖父','曾外曾外毑父'],
|
||||
'm,f,m,{G1M}':['外高外祖父','曾外曾祖毑父'],
|
||||
'm,f,m,{G1M},w':['外高外祖母','曾外曾祖毑母'],
|
||||
'm,f,m,{G1W}':['外高外祖母','曾外曾祖毑母'],
|
||||
'm,f,m,{G1W},h':['外高外祖父','曾外曾祖毑父'],
|
||||
'm,m,f,{G1M}':['外曾外曾祖父','高外毑父'],
|
||||
'm,m,f,{G1M},w':['外曾外曾祖母','高外毑母'],
|
||||
'm,m,f,{G1W}':['外曾外曾祖母','高外毑母'],
|
||||
'm,m,f,{G1W},h':['外曾外曾祖父','高外毑父'],
|
||||
'm,m,m,{G1M}':['外曾外曾外祖父','高毑父'],
|
||||
'm,m,m,{G1M},w':['外曾外曾外祖母','高毑母'],
|
||||
'm,m,m,{G1W}':['外曾外曾外祖母','高毑母'],
|
||||
'm,m,m,{G1W},h':['外曾外曾外祖父','高毑父'],
|
||||
'f,f,f,[{G1M}|{G1W},h]':['高祖父','外曾外曾外毑父'],
|
||||
'f,f,f,[{G1M},w|{G1W}]':['高祖母','外曾外曾外毑母'],
|
||||
'f,f,m,[{G1M}|{G1W},h]':['高外祖父','外曾外曾毑父'],
|
||||
'f,f,m,[{G1M},w|{G1W}]':['高外祖母','外曾外曾毑母'],
|
||||
'f,m,f,[{G1M}|{G1W},h]':['曾外曾祖父','外高外毑父'],
|
||||
'f,m,f,[{G1M},w|{G1W}]':['曾外曾祖母','外高外毑母'],
|
||||
'f,m,m,[{G1M}|{G1W},h]':['曾外曾外祖父','外高毑父'],
|
||||
'f,m,m,[{G1M},w|{G1W}]':['曾外曾外祖母','外高毑母'],
|
||||
'm,f,f,[{G1M}|{G1W},h]':['外高祖父','曾外曾外毑父'],
|
||||
'm,f,f,[{G1M},w|{G1W}]':['外高祖母','曾外曾外毑母'],
|
||||
'm,f,m,[{G1M}|{G1W},h]':['外高外祖父','曾外曾祖毑父'],
|
||||
'm,f,m,[{G1M},w|{G1W}]':['外高外祖母','曾外曾祖毑母'],
|
||||
'm,m,f,[{G1M}|{G1W},h]':['外曾外曾祖父','高外毑父'],
|
||||
'm,m,f,[{G1M},w|{G1W}]':['外曾外曾祖母','高外毑母'],
|
||||
'm,m,m,[{G1M}|{G1W},h]':['外曾外曾外祖父','高毑父'],
|
||||
'm,m,m,[{G1M},w|{G1W}]':['外曾外曾外祖母','高毑母'],
|
||||
// 曾祖辈
|
||||
'f,f,{G1M}':['?曾祖父','曾?祖父','?太公','太?公','?公太','太?爷','?太爷','?太爷爷','太?爷爷'],
|
||||
'f,f,{G1M},w':['?曾祖母','曾?祖母','?太婆','太?婆','?婆太','太?奶','?太奶','?太奶奶','太?奶奶'],
|
||||
'f,f,{G1W}':['?曾祖母','曾?祖母','?太婆','太?婆','?婆太','太?奶','?太奶','?太奶奶','太?奶奶'],
|
||||
'f,f,{G1W},h':['?曾祖父','曾?祖父','?太公','太?公','?公太','太?爷','?太爷','?太爷爷','太?爷爷'],
|
||||
'f,m,{G1M}':['?曾外祖父','曾外?祖父','?太外公','太外?公','太外?爷','?太外爷','?太外爷爷','太外?爷爷'],
|
||||
'f,m,{G1M},w':['?曾外祖母','曾外?祖母','?太外婆','太外?婆','太外?奶','?太外奶','?太外奶奶','太外?奶奶'],
|
||||
'f,m,{G1W}':['?曾外祖母','曾外?祖母','?太外婆','太外?婆','太外?奶','?太外奶','?太外奶奶','太外?奶奶'],
|
||||
'f,m,{G1W},h':['?曾外祖父','曾外?祖父','?太外公','太外?公','太外?爷','?太外爷','?太外爷爷','太外?爷爷'],
|
||||
'm,f,{G1M}':['?外曾祖父','外曾?祖父','?外太公','外太?公','外太?爷','?外太爷','?外太爷爷','外太?爷爷'],
|
||||
'm,f,{G1M},w':['?外曾祖母','外曾?祖母','?外太婆','外太?婆','外太?奶','?外太奶','?外太奶奶','外太?奶奶'],
|
||||
'm,f,{G1W}':['?外曾祖母','外曾?祖母','?外太婆','外太?婆','外太?奶','?外太奶','?外太奶奶','外太?奶奶'],
|
||||
'm,f,{G1W},h':['?外曾祖父','外曾?祖父','?外太公','外太?公','外太?爷','?外太爷','?外太爷爷','外太?爷爷'],
|
||||
'm,m,{G1M}':['?外曾外祖父','外曾外?祖父','?外太外公','外太外?公','外太外?爷','?外太外爷','?外太外爷爷','外太外?爷爷'],
|
||||
'm,m,{G1M},w':['?外曾外祖母','外曾外?祖母','?外太外婆','外太外?婆','外太外?奶','?外太外奶','?外太外奶奶','外太外?奶奶'],
|
||||
'm,m,{G1W}':['?外曾外祖母','外曾外?祖母','?外太外婆','外太外?婆','外太外?奶','?外太外奶','?外太外奶奶','外太外?奶奶'],
|
||||
'm,m,{G1W},h':['?外曾外祖父','外曾外?祖父','?外太外公','外太外?公','外太外?爷','?外太外爷','?外太外爷爷','外太?外爷爷'],
|
||||
'f,f,[{G1M}|{G1W},h]':['?曾祖父','曾?祖父','?太公','太?公','?公太','太?爷','?太爷','?太爷爷','太?爷爷'],
|
||||
'f,f,[{G1M},w|{G1W}]':['?曾祖母','曾?祖母','?太婆','太?婆','?婆太','太?奶','?太奶','?太奶奶','太?奶奶'],
|
||||
'f,m,[{G1M}|{G1W},h]':['?曾外祖父','曾外?祖父','?太外公','太外?公','太外?爷','?太外爷','?太外爷爷','太外?爷爷'],
|
||||
'f,m,[{G1M},w|{G1W}]':['?曾外祖母','曾外?祖母','?太外婆','太外?婆','太外?奶','?太外奶','?太外奶奶','太外?奶奶'],
|
||||
'm,f,[{G1M}|{G1W},h]':['?外曾祖父','外曾?祖父','?外太公','外太?公','外太?爷','?外太爷','?外太爷爷','外太?爷爷'],
|
||||
'm,f,[{G1M},w|{G1W}]':['?外曾祖母','外曾?祖母','?外太婆','外太?婆','外太?奶','?外太奶','?外太奶奶','外太?奶奶'],
|
||||
'm,m,[{G1M}|{G1W},h]':['?外曾外祖父','外曾外?祖父','?外太外公','外太外?公','外太外?爷','?外太外爷','?外太外爷爷','外太外?爷爷'],
|
||||
'm,m,[{G1M},w|{G1W}]':['?外曾外祖母','外曾外?祖母','?外太外婆','外太外?婆','外太外?奶','?外太外奶','?外太外奶奶','外太外?奶奶'],
|
||||
// 祖辈
|
||||
'f,{G1M}':['祖父','公','太?父','奶爷','爷爷','爷'],
|
||||
'f,{G1M},w':['祖母','婆','太?母','奶奶','奶'],
|
||||
'f,{G1W}':['祖母','婆','太?母','奶奶','奶'],
|
||||
'f,{G1W},h':['祖父','公','太?父','奶爷','爷爷','爷'],
|
||||
'm,{G1M}':['外祖父','外公','外爷','外?公','外?祖父','外太?父','太外?父','姥爷','姥公','毑公','毑爷','毑父','嘎公'],
|
||||
'm,{G1M},w':['外祖母','外婆','外奶','外?婆','外?祖母','外太?母','太外?母','姥姥','姥娘','姥婆','毑婆','毑毑','毑母','嘎嘎','嫏嫏','嫏娘','姥'],
|
||||
'm,{G1W}':['外祖母','外婆','外奶','外?婆','外?祖母','外太?母','太外?母','姥姥','姥娘','姥婆','毑婆','毑毑','毑母','嘎嘎','嫏嫏','嫏娘','姥'],
|
||||
'm,{G1W},h':['外祖父','外公','外爷','外?公','外?祖父','外太?父','太外?父','姥爷','姥公','毑公','毑爷','毑父','嘎公'],
|
||||
'f,[{G1M}|{G1W},h]':['祖父','公','太?父','奶爷','爷爷','爷'],
|
||||
'f,[{G1M},w|{G1W}]':['祖母','婆','太?母','奶奶','奶'],
|
||||
'm,[{G1M}|{G1W},h]':['外祖父','外公','外爷','外?公','外?祖父','外太?父','太外?父','姥爷','姥公','毑公','毑爷','毑父','嘎公'],
|
||||
'm,[{G1M},w|{G1W}]':['外祖母','外婆','外奶','外?婆','外?祖母','外太?母','太外?母','姥姥','姥婆','毑婆','毑毑','毑母','嘎嘎'],
|
||||
'f,f,{G1},s&o':['伯祖父','伯爷爷'],
|
||||
'f,f,{G1},s&o,w':['伯祖母','伯奶奶'],
|
||||
'f,f,{G1},s&l':['叔祖父','叔爷爷'],
|
||||
@ -123,8 +63,8 @@ export default {
|
||||
'f,f,{G1},d,h':['姑祖父','姑爷爷'],
|
||||
'f,m,{G1},s':['舅祖父','舅爷爷'],
|
||||
'f,m,{G1},s,w':['舅祖母','舅奶奶'],
|
||||
'f,m,{G1},d':['姨祖母','姨爷爷'],
|
||||
'f,m,{G1},d,h':['姨祖父','姨奶奶'],
|
||||
'f,m,{G1},d':['姨祖母','姨奶奶'],
|
||||
'f,m,{G1},d,h':['姨祖父','姨爷爷'],
|
||||
'm,f,{G1},s&o':['伯外祖父','伯外公','伯姥爷'],
|
||||
'm,f,{G1},s&o,w':['伯外祖母','伯外婆','伯姥姥'],
|
||||
'm,f,{G1},s&l':['叔外祖父','叔外公','叔姥爷'],
|
||||
@ -136,26 +76,24 @@ export default {
|
||||
'm,m,{G1},d':['姨外祖母','姨外公','姨姥爷'],
|
||||
'm,m,{G1},d,h':['姨外祖父','姨外婆','姨姥姥'],
|
||||
// 父辈
|
||||
'{G1M}':['父'],
|
||||
'{G1M},w':['母'],
|
||||
'{G1W}':['母'],
|
||||
'{G1W},h':['父'],
|
||||
'{G1M}#{G1W},h':['父'],
|
||||
'{G1M},w#{G1W}':['母'],
|
||||
'f,{G1},s&o':['伯父','伯伯','伯','大爷'],
|
||||
'f,{G1},s&o,w':['伯母','大娘'],
|
||||
'f,{G1},s&l':['叔父','叔爸','叔叔','叔'],
|
||||
'f,{G1},s&l,w':['叔母','婶'],
|
||||
'f,{G1},d':['姑母','姑姑','姑妈','姑'],
|
||||
'f,{G1},d,h':['姑父'],
|
||||
'f,{G1},d,h':['姑父','姑丈','姑爸','姑夫'],
|
||||
'm,{G1},s':['舅父','舅舅','舅爸','舅'],
|
||||
'm,{G1},s,w':['舅母','舅妈'],
|
||||
'm,{G1},d':['姨母','姨姨','姨妈','姨'],
|
||||
'm,{G1},d,h':['姨父','姨爸','姨丈'],
|
||||
'm,{G1},d,h':['姨父','姨丈','姨爸','姨夫'],
|
||||
// 同辈及以下
|
||||
'{G1},[s&o|s&l]':['兄弟'],
|
||||
'{G1},[s&o|s&l],w':['兄弟妇'],
|
||||
'{G1},s&o':['哥','兄'],
|
||||
'{G1},s':['兄弟'],
|
||||
'{G1},s,w':['兄弟妇'],
|
||||
'{G1},s&o':['哥','哥哥','阿哥'],
|
||||
'{G1},s&o,w':['嫂','嫂子','兄妇'],
|
||||
'{G1},s&l':['弟'],
|
||||
'{G1},s&l':['弟','弟弟','阿弟'],
|
||||
'{G1},s&l,w':['弟媳','弟妇'],
|
||||
'{G1},s,s':['侄男','侄子','侄儿'],
|
||||
'{G1},s,s,w':['侄妇'],
|
||||
@ -177,11 +115,11 @@ export default {
|
||||
'{G1},s,d,s,w':['侄外孙妇'],
|
||||
'{G1},s,d,d':['侄外孙女','外孙女'],
|
||||
'{G1},s,d,d,h':['侄外孙婿'],
|
||||
'{G1},[d&o|d&l]':['姐妹'],
|
||||
'{G1},[d&o|d&l],h':['姐妹壻'],
|
||||
'{G1},d&o':['姐'],
|
||||
'{G1},d':['姐妹'],
|
||||
'{G1},d,h':['姐妹壻'],
|
||||
'{G1},d&o':['姐','姐姐','阿姐'],
|
||||
'{G1},d&o,h':['姐夫'],
|
||||
'{G1},d&l':['妹'],
|
||||
'{G1},d&l':['妹','妹妹','阿妹'],
|
||||
'{G1},d&l,h':['妹夫'],
|
||||
'{G1},d,s':['甥男'],
|
||||
'{G1},d,s,w':['甥妇'],
|
||||
@ -196,18 +134,12 @@ export default {
|
||||
'{G1},d,d,d':['甥外孙女','外孙女'],
|
||||
'{G1},d,d,d,h':['甥外孙婿'],
|
||||
// 夫族
|
||||
'h,f,{G1M}':['祖公父','祖公','祖翁','奶公'],
|
||||
'h,f,{G1M},w':['祖婆母','祖婆','祖姆','奶婆'],
|
||||
'h,f,{G1W}':['祖婆母','祖婆','祖姆','奶婆'],
|
||||
'h,f,{G1W},h':['祖公父','祖公','祖翁','奶公'],
|
||||
'h,m,{G1M}':['外祖公父','外祖公','外祖翁','姥公'],
|
||||
'h,m,{G1M},w':['外祖婆母','外祖婆','外祖姆','姥婆'],
|
||||
'h,m,{G1W}':['外祖婆母','外祖婆','外祖姆','姥婆'],
|
||||
'h,m,{G1W},h':['外祖公父','外祖公','外祖翁','姥公'],
|
||||
'h,{G1M}':['公父','公公'],
|
||||
'h,{G1M},w':['婆母','婆婆'],
|
||||
'h,{G1W}':['婆母','婆婆'],
|
||||
'h,{G1W},h':['公父','公公'],
|
||||
'h,f,[{G1M}|{G1W},h]':['祖公父','祖公','祖翁','奶公'],
|
||||
'h,f,[{G1M},w|{G1W}]':['祖婆母','祖婆','祖姆','奶婆'],
|
||||
'h,m,[{G1M}|{G1W},h]':['外祖公父','外祖公','外祖翁','姥公'],
|
||||
'h,m,[{G1M},w|{G1W}]':['外祖婆母','外祖婆','外祖姆','姥婆'],
|
||||
'h,[{G1M}|{G1W},h]':['公父','公公'],
|
||||
'h,[{G1M},w|{G1W}]':['婆母','婆婆'],
|
||||
'h,{G1},s&o':['大伯子','大伯兄'],
|
||||
'h,{G1},s&o,w':['大婶子','大伯嫂'],
|
||||
'h,{G1},s&l':['小叔子','小叔弟'],
|
||||
@ -221,18 +153,12 @@ export default {
|
||||
'h,{G1},d':['姑子'],
|
||||
'h,{G1},d,h':['姑夫'],
|
||||
// 妻族
|
||||
'w,f,{G1M}':['祖岳父','太?岳','祖丈人','爷丈人','奶爷丈人'],
|
||||
'w,f,{G1M},w':['祖岳母','太?岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈母'],
|
||||
'w,f,{G1W}':['祖岳母','太?岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈母'],
|
||||
'w,f,{G1W},h':['祖岳父','太?岳父','祖丈人','爷丈人','奶爷丈人'],
|
||||
'w,m,{G1M}':['外祖岳父','外太?岳父','太外?岳父','外祖丈人','姥爷丈人'],
|
||||
'w,m,{G1M},w':['外祖岳母','外太?岳母','太外?岳母','外祖丈母','外祖丈母娘','姥丈母娘','姥丈母'],
|
||||
'w,m,{G1W}':['外祖岳母','外太?岳母','太外?岳母','外祖丈母','外祖丈母娘','姥丈母娘','姥丈母'],
|
||||
'w,m,{G1W},h':['外祖岳父','外太?岳父','太外?岳父','外祖丈人','外爷丈人','姥爷丈人'],
|
||||
'w,{G1M}':['岳父','丈人','丈人爹'],
|
||||
'w,{G1M},w':['岳母','丈母','丈母娘'],
|
||||
'w,{G1W}':['岳母','丈母','丈母娘'],
|
||||
'w,{G1W},h':['岳父','丈人','丈人爹'],
|
||||
'w,f,[{G1M}|{G1W},h]':['祖岳父','太?岳','祖丈人','爷丈人','奶爷丈人'],
|
||||
'w,f,[{G1M},w|{G1W}]':['祖岳母','太?岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈母'],
|
||||
'w,m,[{G1M}|{G1W},h]':['外祖岳父','外太?岳父','太外?岳父','外祖丈人','姥爷丈人'],
|
||||
'w,m,[{G1M},w|{G1W}]':['外祖岳母','外太?岳母','太外?岳母','外祖丈母','外祖丈母娘','姥丈母娘','姥丈母'],
|
||||
'w,[{G1M}|{G1W},h]':['岳父','丈人','丈人爹'],
|
||||
'w,[{G1M},w|{G1W}]':['岳母','丈母','丈母娘'],
|
||||
'w,{G1},s&o':['大舅子','大舅兄','舅兄'],
|
||||
'w,{G1},s&o,w':['大舅妇','大舅姆','大舅兄妇','舅兄妇','舅姐','大舅姐','大妗子','大妗儿'],
|
||||
'w,{G1},s&l':['小舅子','小舅弟','舅弟'],
|
||||
@ -252,22 +178,30 @@ export default {
|
||||
'{G0},s,s,w':['孙妇'],
|
||||
'{G0},s,s,s':['曾孙','曾孙男'],
|
||||
'{G0},s,s,s,w':['曾孙妇'],
|
||||
'{G0},s,s,s,s':['玄孙','玄孙男'],
|
||||
'{G0},s,s,s,d':['玄孙女'],
|
||||
'{G0},s,s,s,s':['玄孙','玄孙男','元孙','元孙男'],
|
||||
'{G0},s,s,s,s,w':['玄孙妇'],
|
||||
'{G0},s,s,s,d':['玄孙女','元孙女'],
|
||||
'{G0},s,s,s,d,h':['玄孙婿'],
|
||||
'{G0},s,s,d':['曾孙女'],
|
||||
'{G0},s,s,d,h':['曾孙婿'],
|
||||
'{G0},s,s,d,s':['玄外孙','玄外孙男'],
|
||||
'{G0},s,s,d,s,w':['玄外孙妇'],
|
||||
'{G0},s,s,d,d':['玄外孙女'],
|
||||
'{G0},s,s,d,d,h':['玄外孙婿'],
|
||||
'{G0},s,d':['孙女'],
|
||||
'{G0},s,d,h':['孙婿'],
|
||||
'{G0},s,d,s':['曾外孙','曾外孙男'],
|
||||
'{G0},s,d,s,w':['曾外孙妇'],
|
||||
'{G0},s,d,s,s':['曾外曾孙','曾外曾孙男'],
|
||||
'{G0},s,d,s,s,w':['曾外曾孙妇'],
|
||||
'{G0},s,d,s,d':['曾外曾孙女'],
|
||||
'{G0},s,d,s,d,h':['曾外曾孙婿'],
|
||||
'{G0},s,d,d':['曾外孙女'],
|
||||
'{G0},s,d,d,h':['曾外孙婿'],
|
||||
'{G0},s,d,d,s':['曾外曾外孙','曾外曾外孙男'],
|
||||
'{G0},s,d,d,s,w':['曾外曾外孙妇'],
|
||||
'{G0},s,d,d,d':['曾外曾外孙女'],
|
||||
'{G0},s,d,d,d,h':['曾外曾外孙婿'],
|
||||
'{G0},d':['女','女儿'],
|
||||
'{G0},d,h':['女婿','婿'],
|
||||
'{G0},d,s':['外孙','外孙男'],
|
||||
@ -374,8 +308,8 @@ export default {
|
||||
'{M1W},xb,d,s,w':['舅表甥妇','甥妇'],
|
||||
'{M1W},xb,d,d':['舅表甥女','甥女'],
|
||||
'{M1W},xb,d,d,h':['舅表甥婿','甥婿'],
|
||||
'{M1W},xs':['姨母'],
|
||||
'{M1W},xs,h':['姨父'],
|
||||
'{M1W},xs':['姨母','姨妈'],
|
||||
'{M1W},xs,h':['姨父','姨丈','姨夫'],
|
||||
'{M1W},xs,[s|d]':['姨表兄弟姊妹'],
|
||||
'{M1W},xs,s':['姨表兄弟'],
|
||||
'{M1W},xs,s,w':['姨表兄弟妇'],
|
||||
@ -460,8 +394,8 @@ export default {
|
||||
'{M1M},xb,d,s,w':['叔表甥妇','甥妇'],
|
||||
'{M1M},xb,d,d':['叔表甥女','甥女'],
|
||||
'{M1M},xb,d,d,h':['叔表甥婿','甥婿'],
|
||||
'{M1M},xs':['姑母'],
|
||||
'{M1M},xs,h':['姑父'],
|
||||
'{M1M},xs':['姑母','姑妈'],
|
||||
'{M1M},xs,h':['姑父','姑丈','姑夫'],
|
||||
'{M1M},xs,[s|d]':['姑表兄弟姊妹'],
|
||||
'{M1M},xs,s':['姑表兄弟'],
|
||||
'{M1M},xs,s,w':['姑表兄弟妇'],
|
||||
@ -513,8 +447,8 @@ export default {
|
||||
'{M0},f,xb,d&o,h':['叔表姊壻'],
|
||||
'{M0},f,xb,d&l':['叔表妹'],
|
||||
'{M0},f,xb,d&l,h':['叔表妹壻'],
|
||||
'{M0},f,xs':['姑母'],
|
||||
'{M0},f,xs,h':['姑父'],
|
||||
'{M0},f,xs':['姑母','姑妈'],
|
||||
'{M0},f,xs,h':['姑父','姑丈','姑夫'],
|
||||
'{M0},f,xs,[s|d]':['姑表兄弟姊妹','姑表姊妹兄弟'],
|
||||
'{M0},f,xs,s':['姑表兄弟'],
|
||||
'{M0},f,xs,s,w':['姑表兄弟妇'],
|
||||
@ -556,8 +490,8 @@ export default {
|
||||
'{M0},m,xb,d&o,h':['舅表姊壻'],
|
||||
'{M0},m,xb,d&l':['舅表妹'],
|
||||
'{M0},m,xb,d&l,h':['舅表妹壻'],
|
||||
'{M0},m,xs':['姨母'],
|
||||
'{M0},m,xs,h':['姨父'],
|
||||
'{M0},m,xs':['姨母','姨妈'],
|
||||
'{M0},m,xs,h':['姨父','姨丈','姨夫'],
|
||||
'{M0},m,xs,[s|d]':['姨兄弟姊妹','姨姊妹兄弟'],
|
||||
'{M0},m,xs,s':['姨兄弟'],
|
||||
'{M0},m,xs,s,w':['姨兄弟妇'],
|
||||
@ -658,15 +592,11 @@ export default {
|
||||
'{M-1},xs,d':['外孙女'],
|
||||
'{M-1},xs,d,h':['外孙婿'],
|
||||
'{M-2},f':['男'],
|
||||
'{M-2},f,f&o':['兄'],
|
||||
'{M-2},f,f&l':['弟'],
|
||||
'{M-2},f,m&o':['姊'],
|
||||
'{M-2},f,m&l':['妹'],
|
||||
'{M-2},m':['女'],
|
||||
'{M-2},m,f&o':['兄'],
|
||||
'{M-2},m,f&l':['弟'],
|
||||
'{M-2},m,m&o':['姊'],
|
||||
'{M-2},m,m&l':['妹'],
|
||||
'{M-2},[f|m],f&o':['兄'],
|
||||
'{M-2},[f|m],f&l':['弟'],
|
||||
'{M-2},[f|m],m&o':['姊'],
|
||||
'{M-2},[f|m],m&l':['妹'],
|
||||
'{M-2},xb':['孙男'],
|
||||
'{M-2},xb,w':['孙妇'],
|
||||
'{M-2},xs':['孙女'],
|
17
src/module/data/input.js
Normal file
@ -0,0 +1,17 @@
|
||||
/*
|
||||
* 只作为输入关系链判断
|
||||
*/
|
||||
export default {
|
||||
'xb':['兄弟','亲兄弟','同胞兄弟'],
|
||||
'xb,w':['兄弟媳妇','兄弟妇'],
|
||||
'xs':['姐妹','亲姐妹','同胞姐妹'],
|
||||
'xs,h':['姐妹夫','姊妹婿'],
|
||||
'f,xb':['伯叔父'],
|
||||
'f,xb,w':['伯叔母'],
|
||||
'f,f,xb':['从祖祖父','从祖父'],
|
||||
'f,f,xb,w':['从祖祖母','从祖母'],
|
||||
'm,f,xb':['外从祖祖父'],
|
||||
'm,f,xb,w':['外从祖祖母'],
|
||||
'h,xb':['伯叔'],
|
||||
'h,xb,w':['妯娌','娣姒','娣姒姊妹','婶子'],
|
||||
};
|
@ -1,159 +1,8 @@
|
||||
// 主要关系链
|
||||
/*
|
||||
* 主要关系链
|
||||
*/
|
||||
export default {
|
||||
'':['自己','我','俺','吾','本人','在下'],
|
||||
//并称
|
||||
'[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,[f|m],m,':['老外婆','老外奶','老姥姥','老姥娘','老嫏娘'],
|
||||
'm,[f|m]':['外祖父母','外公外婆','姥姥姥爷'],
|
||||
'm,f,[f,xs|m,xb],s':['舅姑姥爷'],
|
||||
'm,[xb|xb,w]':['舅父母'],
|
||||
'm,xb,[s|d]':['舅表兄弟姐妹'],
|
||||
'm,[xs|xs,h]':['姨父母'],
|
||||
'm,xs,[s|d]':['姨兄弟姐妹','姨姐妹兄弟','从母兄弟姐妹'],
|
||||
'[f|m]':['父母','爹娘','爹妈','爸妈','爸爸妈妈','父母亲','双亲','二亲','两亲','二老','高堂'],
|
||||
'[f|m],[f,xs|m,xb],s':['舅姑爸','姑舅爸'],
|
||||
'[f|m],[f,xs|m,xb],s&o,w':['舅姑姆','姑舅姆'],
|
||||
'[f|m],[f,xs|m,xb],s&l,w':['舅姑婶','姑舅婶'],
|
||||
'[f|m],[f,xs|m,xb],d':['姑舅娘娘'],
|
||||
'[f|m],m,xs,s':['两姨爸'],
|
||||
'[f|m],m,xs,s&o,w':['两姨姆'],
|
||||
'[f|m],m,xs,s&l,w':['两姨婶'],
|
||||
'[f|m],m,xs,d':['两姨娘娘'],
|
||||
'w,[f|m]':['岳父母','岳父岳母','丈人丈母','舅姑'],
|
||||
'w,f,[ob|ob,w]':['伯岳父母'],
|
||||
'w,f,[lb|lb,w]':['叔岳父母'],
|
||||
'w,f,[xs|xs,h]':['姑岳父母'],
|
||||
'w,m,[xb|xb,w]':['舅岳父母'],
|
||||
'w,m,[xs|xs,h]':['姨岳父母'],
|
||||
'w,[ls|os],h':['襟兄弟'],
|
||||
'w,[f,xs|m,xb],d':['姑舅姨子'],
|
||||
'w,[f,xs|m,xb],d,h':['姑舅连襟','姑舅连桥'],
|
||||
'h,[f|m]':['公婆','翁姑','姑翁','大家官','公公婆婆','姑嫜'],
|
||||
'h,f,[ob|ob,w]':['伯公婆'],
|
||||
'h,f,[lb|lb,w]':['叔公婆'],
|
||||
'h,f,[xs|xs,h]':['姑公婆'],
|
||||
'h,m,[xb|xb,w]':['舅公婆'],
|
||||
'h,m,[xs|xs,h]':['姨公婆'],
|
||||
'[ob|lb]':['兄弟','晜弟','亲兄弟','同胞兄弟'],
|
||||
'[ob|lb],w':['兄弟媳妇','兄弟妇'],
|
||||
'[os|ls]':['姐妹','亲姐妹','同胞姐妹'],
|
||||
'[os|ls],h':['姐妹夫','姊妹婿'],
|
||||
'[xb|xs]':['兄弟姐妹','同胞','同胞兄弟姐妹','手足'],
|
||||
'[ob|os]':['哥哥姐姐'],
|
||||
'[lb|ls]':['弟弟妹妹'],
|
||||
'[ob|ob,w]':['哥哥嫂嫂'],
|
||||
'[f,xb|m,xs],[s|d]':['从兄弟姐妹','从姐妹兄弟'],
|
||||
'[f,xs|m,xb],[s|d]':['表兄弟姐妹','表姐妹兄弟','老表','阿表'],
|
||||
'[f,xs|m,xb],s':['姑舅兄弟','舅姑兄弟'],
|
||||
'[f,xs|m,xb],s&o':['姑舅哥','姑舅哥哥'],
|
||||
'[f,xs|m,xb],s&l':['姑舅弟','姑舅弟弟'],
|
||||
'[f,xs|m,xb],d':['姑舅姊妹','舅姑姊妹'],
|
||||
'[f,xs|m,xb],d&o':['姑舅姐','姑舅姐姐'],
|
||||
'[f,xs|m,xb],d&l':['姑舅妹','姑舅妹妹'],
|
||||
'[f,xs|m,xb],s,s':['姑舅儿子'],
|
||||
'[f,xs|m,xb],s,d':['姑舅女儿'],
|
||||
'[xb|xs],[s|d]':['侄甥'],
|
||||
'xb,[s|d]':['侄子女','侄子侄女'],
|
||||
'xs,[s|d]':['甥子女','外甥子女'],
|
||||
'[w|s|d]':['妻儿'],
|
||||
'[s|d]':['子女','儿女','小孩','孩子','孩子们','孩儿','小孩儿','宝宝','宝贝','娃','儿辈','子辈','子息','子嗣','崽','幺儿'],
|
||||
'[s|d],[s|d]':['孙辈','孙息','孙枝'],
|
||||
's,[s|d]':['孙子女'],
|
||||
'd,[s|d]':['外孙子女'],
|
||||
's#xb,s':['子侄'],
|
||||
's#s,w':['子媳'],
|
||||
'[s|d]#[s|d],[s|d]':['儿孙','子孙','孙息'],
|
||||
'[s,w|d,h],[f|m]':['亲家','儿女亲家'],
|
||||
'[s,w|d,h],f':['亲家公','亲家父','亲家翁','亲家世翁','姻翁'],
|
||||
'[s,w|d,h],f,f':['太姻翁'],
|
||||
'[s,w|d,h],f,m':['太姻姆'],
|
||||
'[s,w|d,h],f,f,f':['太姻翁'],
|
||||
'[s,w|d,h],f,f,m':['太姻姆'],
|
||||
'[s,w|d,h],f,f,ob':['姻伯翁'],
|
||||
'[s,w|d,h],f,f,ob,w':['姻伯姆'],
|
||||
'[s,w|d,h],f,f,lb':['姻叔翁'],
|
||||
'[s,w|d,h],f,f,lb,w':['姻叔母'],
|
||||
'[s,w|d,h],f,f,xb,s&o':['姻家兄'],
|
||||
'[s,w|d,h],f,f,xb,s&o,w':['姻家兄妇'],
|
||||
'[s,w|d,h],f,f,xb,s&l':['姻家弟'],
|
||||
'[s,w|d,h],f,f,xb,s&l,w':['姻家弟妇'],
|
||||
'[s,w|d,h],f,f,xb,s,s':['姻家侄'],
|
||||
'[s,w|d,h],f,f,xb,s,s,w':['姻家侄妇'],
|
||||
'[s,w|d,h],f,ob':['姻兄'],
|
||||
'[s,w|d,h],f,ob,w':['姻兄妇'],
|
||||
'[s,w|d,h],f,lb':['姻弟'],
|
||||
'[s,w|d,h],f,lb,w':['姻弟妇'],
|
||||
'[s,w|d,h],f,xb,s':['姻侄'],
|
||||
'[s,w|d,h],f,xb,s,w':['姻侄妇'],
|
||||
'[s,w|d,h],m':['亲家母','亲家婆','亲家姆','亲姆','姻姆'],
|
||||
'[s,w|d,h],m,ob':['姻仁兄'],
|
||||
'[s,w|d,h],m,ob,w':['姻仁兄妇'],
|
||||
'[s,w|d,h],m,lb':['姻仁弟'],
|
||||
'[s,w|d,h],m,lb,w':['姻仁弟妇'],
|
||||
'[s,w|d,h],[f|m],f':['姻太翁'],
|
||||
'[s,w|d,h],[f|m],m':['姻太姆'],
|
||||
// 主线
|
||||
'f,f,f,f,f,f,f,f,f,f,f,f':['先祖父','先太爷','十二世祖'],
|
||||
'f,f,f,f,f,f,f,f,f,f,f,m':['先祖母','先太奶'],
|
||||
@ -174,8 +23,8 @@ export default {
|
||||
// 高祖辈
|
||||
'f,f,f,f':['高祖父','外曾外曾外毑父','曾曾祖父','祖太公','祖太爷','高太爷','祖太翁','祖太爷爷','四世祖'],
|
||||
'f,f,f,m':['高祖母','外曾外曾外毑母','曾曾祖母','祖太婆','祖太奶','高太奶','祖太姆','祖太奶奶'],
|
||||
'f,f,m,f':['高外祖父','外曾外曾毑父'],
|
||||
'f,f,m,m':['高外祖母','外曾外曾毑母'],
|
||||
'f,f,m,f':['高外祖父','外曾外曾毑父','高外翁'],
|
||||
'f,f,m,m':['高外祖母','外曾外曾毑母','高外婆'],
|
||||
'f,m,f,f':['曾外曾祖父','外高外毑父'],
|
||||
'f,m,f,m':['曾外曾祖母','外高外毑母'],
|
||||
'f,m,m,f':['曾外曾外祖父','外高毑父'],
|
||||
@ -189,8 +38,8 @@ export default {
|
||||
'm,m,m,f':['外曾外曾外祖父','高毑父'],
|
||||
'm,m,m,m':['外曾外曾外祖母','高毑母'],
|
||||
// 曾祖辈
|
||||
'f,f,f':['曾祖父','曾祖','外曾外毑父','太公','太爷','老太爷','太翁','太爷爷','佬嗲','祖爷','三世祖'],
|
||||
'f,f,m':['曾祖母','外曾外毑母','太婆','太奶','老太奶','太嬷','太姆','太奶奶','老娭毑'],
|
||||
'f,f,f':['曾祖父','曾祖','外曾外毑父','太公','太爷','老太爷','太翁','太爷爷','曾爷爷','公太','佬嗲','祖爷','三世祖'],
|
||||
'f,f,m':['曾祖母','外曾外毑母','太婆','太奶','老太奶','太嬷','太姆','太奶奶','曾奶奶','婆太','老娭毑'],
|
||||
'f,m,f':['曾外祖父','曾外祖','外曾毑父','太外公','太外爷','太外翁','太外爷爷'],
|
||||
'f,m,m':['曾外祖母','外曾毑母','太外婆','太外奶','太外嬷','太外姆','太外奶奶'],
|
||||
'm,f,f':['外曾祖父','外曾祖','曾外毑父','外太公','外太爷','外太翁','外太爷爷'],
|
||||
@ -198,28 +47,28 @@ export default {
|
||||
'm,m,f':['外曾外祖父','外曾外祖','曾毑父','外太外公','外太外爷','外太外翁','外太外爷爷','外太姥爷'],
|
||||
'm,m,m':['外曾外祖母','曾毑母','外太外婆','外太外奶','外太外嬷','外太外姆','外太外奶奶','外太姥姥'],
|
||||
// 祖父辈
|
||||
'f,f':['爷爷','祖父','奶爷','阿爷','阿公','依爷','嗲嗲','爷儿','大父','爷','爷老','爷老子','爷老倌','二世祖'],
|
||||
'f,m':['奶奶','祖母','阿奶','阿姆','阿婆','依奶','阿嬷','阿嫲','大母','奶','嫲嫲','婻婻','娭毑','嗯奶','娘姆','媪婆','亲婆'],
|
||||
'm,f':['外公','外祖父','姥爷','阿公','外爷','客公','毑父','毑公','姥公','舅家爷','嘎公','嘎嘎爹','尕公','毑爹','外大父','毑爷'],
|
||||
'm,m':['外婆','外祖母','姥姥','阿婆','外奶','客婆','毑母','毑婆','姥婆','舅家婆','嘎嘎','嘎嘎婆','尕婆','毑毑','外大母','姥娘','阿嬷','阿嫲','嫲嫲','好婆','嫏嫏','嫏娘'],
|
||||
'f,f':['爷爷','祖父','祖公','阿爷','阿公','奶爹','亚爷','亚公','依爷','大父','祖翁','嗲嗲','爷','祖君','奶爷','爷儿','爷老','爷老子','爷老倌','二世祖'],
|
||||
'f,m':['奶奶','祖母','祖婆','阿奶','阿婆','奶娘','亚嬷','亚婆','依奶','大母','祖嫲','嫲嫲','奶','重慈','阿嬷','婻婻','娭毑','嗯奶','娘姆','媪婆','亲婆'],
|
||||
'm,f':['外公','外祖父','姥爷','阿公','外爷','客公','毑父','毑公','姥公','舅家爷','嘎公','嘎爹','嘎嘎爹','嘎爷爷','尕公','毑爹','毑爷','外大父','姥爹','魏公','魏爷','简爷'],
|
||||
'm,m':['外婆','外祖母','姥姥','阿婆','外奶','客婆','毑母','毑婆','姥婆','舅家婆','嘎嘎','嘎婆','嘎嘎婆','嘎奶奶','尕婆','毑娘','毑毑','外大母','姥娘','魏婆','魏奶','简婆','阿嬷','外嬷','嫲嫲','好婆','嫏嫏','嫏娘','姥'],
|
||||
'f,f,ob':['伯公','伯祖','伯翁','大爷爷','大嗲','大爷','大公','大阿爷'],
|
||||
'f,f,ob,w':['伯婆','姆婆','大奶奶'],
|
||||
'f,f,ob,w':['伯婆','姆婆','大奶奶','伯娭毑'],
|
||||
'f,f,lb':['叔公','叔祖','叔翁','小爷爷','晚公','幺爷','细嗲'],
|
||||
'f,f,lb,w':['叔婆','婶婆','晚婆','幺奶','小奶奶'],
|
||||
'f,f,xb':['伯叔祖父','从祖父','几爷爷','几大爷','几嗲','几爷','几公'],
|
||||
'f,f,xb,w':['伯叔祖母','从祖母','几奶奶','几大娘','几奶','几婆'],
|
||||
'f,f,xs':['姑奶奶','祖姑','恩婆'],
|
||||
'f,f,xs,h':['姑爷爷','姑公公','恩爹','祖姑丈','姑丈公','丈公'],
|
||||
'f,f,lb,w':['叔婆','婶婆','小奶奶','叔娭毑','晚婆','幺奶'],
|
||||
'f,f,xs':['姑奶奶','祖姑','姑奶','恩婆','姑娭毑'],
|
||||
'f,f,xs,h':['姑爷爷','祖姑丈','恩爹','姑丈公','丈公'],
|
||||
'f,m,ob':['大舅爷','大舅爹'],
|
||||
'f,m,ob,w':['大舅婆'],
|
||||
'f,m,lb':['小舅爷','小舅爹'],
|
||||
'f,m,lb,w':['小舅婆'],
|
||||
'f,m,xb':['舅爷爷','舅祖','舅爹','太舅父'],
|
||||
'f,m,xb,w':['舅奶奶','妗婆','舅婆','妗奶','太舅母'],
|
||||
'f,m,xs':['姨奶奶','姨奶'],
|
||||
'f,m,xs':['姨奶奶','姨奶','姨娭毑'],
|
||||
'f,m,xs,h':['姨爷爷','姨公公','姨爹','姨丈公','丈公'],
|
||||
'm,f,ob':['伯外公','外伯祖','伯外祖','大外公','大姥爷','大外爷'],
|
||||
'm,f,ob,w':['伯外婆','外姆婆','大外婆','大姥姥','大姥奶'],
|
||||
'm,f,lb':['叔外公','外叔祖','叔外祖','小外公','小姥爷','小外爷'],
|
||||
'm,f,lb,w':['叔外婆','外婶婆','小外婆','小姥姥','婶姥姥','小姥奶'],
|
||||
'm,f,xb':['堂外祖父','几外公','几姥爷','几外爷'],
|
||||
'm,f,xb,w':['堂外祖母','几外婆','几姥姥','几姥奶','几外奶','几姥'],
|
||||
'm,f,xs':['姑外婆','姑婆','恩婆'],
|
||||
'm,f,xs,h':['姑外公','姑公','恩爹','外姑丈公','外丈公'],
|
||||
'm,m,xb':['舅外公','舅公','舅爹'],
|
||||
@ -228,15 +77,13 @@ export default {
|
||||
'm,m,xs,h':['姨外公','姨公','外姨丈公','外丈公'],
|
||||
// 父系
|
||||
'f':['爸爸','父亲','老父亲','老爸','阿爸','阿父','阿爹','老窦','爹地','依爹','老爹','老汉','老爷子','老子','牙老子','爸','父','爹','老汉儿','牙老倌','爸比','爹爹','爹啲','一世祖'],
|
||||
'f,ob':['伯父','伯伯','伯爸','伯爷','依伯','世父','大爷','大爸','大爸爸','大爹','伯儿','大伯','大大','阿伯','几伯','伯'],
|
||||
'f,ob,w':['伯母','伯妈','伯娘','依姆','世母','大娘','大妈','大妈妈','大嬷','伯妇','大嬷','大姆妈','伯姐','姆'],
|
||||
'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','叔儿','仲父','季父','叔仔','依叔','小叔','小爹','小爸','尕爸','幺爸','幺爹','幺叔','细叔','满叔','晚叔','几叔','叔'],
|
||||
'f,lb,w':['婶婶','婶母','婶妈','婶娘','阿婶','婶儿','仲母','季母','叔妇','依婶','小婶','小娘','小妈','尕婶','幺妈','幺娘','幺婶','细婶','满婶','晚婆','几婶','婶','婶子','家婶','叔母','叔妈','叔娘','婶爹'],
|
||||
'f,xb':['伯叔父','叔伯','几爸爸','几爸','几爹'],
|
||||
'f,xb,w':['伯叔母','几妈妈','几妈','几娘'],
|
||||
'f,xb,s&o':['堂哥','堂阿哥','堂房哥哥','堂房阿哥','叔伯哥哥','叔伯阿哥','堂老兄'],
|
||||
'f,ob':['伯父','伯伯','伯爸','阿伯','伯爷','依伯','伯儿','大伯','大爹','大爸','大爸爸','世父','大爷','大大','几伯','伯'],
|
||||
'f,ob,w':['伯母','伯妈','伯娘','依姆','世母','大娘','伯妇','大嬷','大妈','大妈妈','大姆妈','伯姐','姆'],
|
||||
'f,lb':['叔叔','叔父','叔爸','阿叔','叔爹','依叔','叔儿','小叔','小爹','小爸','小爸爸','仲父','季父','叔仔','几叔','叔'],
|
||||
'f,lb,w':['婶婶','叔母','叔妈','阿婶','叔娘','依婶','婶儿','小婶','小娘','小妈','小妈妈','仲母','季母','叔妇','几婶','婶','婶母','婶妈','婶娘','婶子','家婶','婶爹','嬢嬢'],
|
||||
'f,xb,s&o':['堂哥','堂老兄'],
|
||||
'f,xb,s&o,w':['堂嫂','堂兄嫂'],
|
||||
'f,xb,s&l':['堂弟','堂阿弟','堂房弟弟','堂房阿弟','叔伯弟弟','叔伯老弟','堂老弟'],
|
||||
'f,xb,s&l':['堂弟','堂老弟'],
|
||||
'f,xb,s&l,w':['堂弟媳','堂弟妇','堂弟妹'],
|
||||
'f,xb,s,s':['堂侄','再从子'],
|
||||
'f,xb,s,s,w':['堂侄媳妇'],
|
||||
@ -245,20 +92,20 @@ export default {
|
||||
'f,xb,s,s,s,s,s':['堂玄孙','再玄孙'],
|
||||
'f,xb,s,d':['堂侄女'],
|
||||
'f,xb,s,d,h':['堂侄女婿'],
|
||||
'f,xb,d&o':['堂姐','堂阿姐','堂房姐姐','堂房阿姐','叔伯姐姐','叔伯阿姊','堂大姐'],
|
||||
'f,xb,d&o':['堂姐','堂大姐'],
|
||||
'f,xb,d&o,h':['堂姐夫'],
|
||||
'f,xb,d&l':['堂妹','堂阿妹','堂房妹妹','堂房阿妹','叔伯妹妹','叔伯老妹','堂细妹'],
|
||||
'f,xb,d&l':['堂妹','堂细妹'],
|
||||
'f,xb,d&l,h':['堂妹夫'],
|
||||
'f,xb,d,s':['堂外甥'],
|
||||
'f,xb,d,s,w':['堂外甥媳妇'],
|
||||
'f,xb,d,d':['堂外甥女'],
|
||||
'f,xb,d,d,h':['堂外甥女婿'],
|
||||
'f,os':['大姑','大姑妈','姑姊'],
|
||||
'f,os,h':['大姑丈','大姑父','大姑爸','恩伯'],
|
||||
'f,ls':['小姑','小姑妈','姑姐','姑妹','姑仔','尕娘','幺姑','幺姑姐','老姑','细姑','满姑'],
|
||||
'f,ls,h':['小姑丈','小姑父','小姑爹','恩叔'],
|
||||
'f,xs':['姑妈','姑母','姑姑','恩妈','嬢嬢','娘娘','几姑','姑','阿姑'],
|
||||
'f,xs,h':['姑丈','姑父','姑爸','恩爸','姑爹','姑夫','姑婿','亘'],
|
||||
'f,os':['大姑','姑姊','姑嬷'],
|
||||
'f,os,h':['大姑丈','大姑夫','恩伯'],
|
||||
'f,ls':['小姑','姑姐','姑妹','姑仔','尕娘','幺姑姐','老姑'],
|
||||
'f,ls,h':['小姑丈','小姑夫','恩叔'],
|
||||
'f,xs':['姑妈','姑母','姑姑','恩妈','几姑','姑','嬢嬢','娘娘'],
|
||||
'f,xs,h':['姑丈','姑父','姑爸','恩爸','姑伯','姑爹','姑夫','姑婿','姑郎','亘'],
|
||||
'f,f,xb,s&o':['堂伯'],
|
||||
'f,f,xb,s&o,w':['堂伯母'],
|
||||
'f,f,xb,s&l':['堂叔'],
|
||||
@ -304,17 +151,17 @@ export default {
|
||||
// 母系
|
||||
'm':['妈妈','母亲','老母亲','老妈','阿妈','阿母','阿娘','老母','妈咪','依妈','老娘','老乸','老妈子','妈子','娘老子','妈','母','娘','阿毑','姆嬷','姆妈','娘亲'],
|
||||
'm,ob':['大舅','大舅舅','舅伯','元舅'],
|
||||
'm,ob,w':['大舅妈','大妗','舅嫲'],
|
||||
'm,lb':['小舅','小舅舅','舅仔','舅父仔','幺舅','老舅','细舅','满舅','尕阿舅'],
|
||||
'm,ob,w':['大舅妈','大妗','舅嬷'],
|
||||
'm,lb':['小舅','小舅舅','舅仔','舅父仔','尕阿舅','老舅'],
|
||||
'm,lb,w':['小舅妈','小妗','细妗'],
|
||||
'm,xb':['舅舅','舅爸','舅父','舅爹','娘舅','母舅','阿舅','妗公','几舅','舅'],
|
||||
'm,xb,w':['舅妈','舅母','舅娘','舅妻','舅姆','舅姆妈','舅媳妇','舅妇','舅姥','老妗','妗子','妗妗','妗妈','妗娘','妗母','阿妗','妗门','妗婆仔','妗儿妈','妗'],
|
||||
'm,os':['大姨','大姨妈'],
|
||||
'm,os,h':['大姨丈','大姨父','大姨爸','姨伯'],
|
||||
'm,ls':['小姨','小姨妈','姨仔','幺姨','老姨','满姨','细姨','尕姨娘'],
|
||||
'm,ls,h':['小姨丈','小姨父','小姨爹','老姨夫','姨叔'],
|
||||
'm,xs':['姨妈','姨母','姨姨','姨娘','阿姨','几姨','姨','从母'],
|
||||
'm,xs,h':['姨丈','姨父','姨爸','姨爹','姨夫','姨婿','姨郎','尹'],
|
||||
'm,xb':['舅舅','舅爸','舅父','舅爹','娘舅','母舅','阿舅','妗公','舅台','几舅','舅'],
|
||||
'm,xb,w':['舅妈','舅母','舅娘','娘妗','舅妻','舅姆','舅姆妈','舅媳妇','舅妇','舅姥','舅毑','老妗','妗子','妗妗','妗妗儿','妗爹','妗娘','妗爸','妗妈','妗母','阿妗','妗门','妗婆仔','妗儿妈','娘妗子','妗','嬢嬢'],
|
||||
'm,os':['大姨','姨嬷'],
|
||||
'm,os,h':['大姨丈','大姨父','大姨夫','姨伯'],
|
||||
'm,ls':['小姨','姨仔','老姨'],
|
||||
'm,ls,h':['小姨丈','小姨父','小姨夫','姨叔'],
|
||||
'm,xs':['姨妈','姨母','姨姨','姨娘','阿姨','从母','几姨','姨','嬢嬢'],
|
||||
'm,xs,h':['姨丈','姨父','姨夫','姨爸','姨爹','姨婿','姨郎','尹'],
|
||||
'm,f,xb,s':['堂舅'],
|
||||
'm,f,xb,s,w':['堂舅妈'],
|
||||
'm,f,xb,d':['堂姨'],
|
||||
@ -338,8 +185,8 @@ export default {
|
||||
'h,f,m':['祖婆母','祖婆','祖婆婆','奶婆母'],
|
||||
'h,m,f':['外祖公父','毑公父','外祖公','外祖公公','姥公父','姥公'],
|
||||
'h,m,m':['外祖婆母','毑婆母','外祖婆','外祖婆婆','姥婆母','姥婆'],
|
||||
'h,f':['公公','公父','家公','家官','家翁','家爷','翁亲','老官','大官','老公公','老人公','大人公','公爹','老公爹','婆父','婆爹','君舅'],
|
||||
'h,m':['婆婆','婆母','家婆','家娘','姑亲','大家','老婆婆','老人婆','大人婆','婆妈','婆母娘','婆子妈','君姑'],
|
||||
'h,f':['公公','公父','家公','家爷','大官','老公公','老人公','大人公','公公爸','公爹','翁亲','君舅','老公爹','家官','老官','婆父','婆爹'],
|
||||
'h,m':['婆婆','婆母','家婆','家娘','大家','老婆婆','老人婆','大人婆','婆婆妈','婆妈','姑亲','君姑','婆母娘','婆子妈','阿姑'],
|
||||
'h,f,ob':['伯公父','伯公','伯翁','伯公公','伯祖','婆婆伯'],
|
||||
'h,f,ob,w':['伯婆母','伯婆','姆婆','伯婆婆','伯姆','婆婆伯姆'],
|
||||
'h,f,lb':['叔公父','叔公','叔翁','叔公公','叔祖','婆婆叔'],
|
||||
@ -353,10 +200,8 @@ export default {
|
||||
'h':['老公','丈夫','先生','夫','男人','新郎','爱爷','夫亲','夫君','官人','汉子','老头子','郎君','相公','夫婿','良人','老公仔','爱人','老伴','那口子','配偶','伴侣','伉俪','卿卿'],
|
||||
'h,ob':['大伯子','大伯儿','大伯兄','伯子','伯仔','伯兄','阿伯','大伯爷','伯爷子','婿伯'],
|
||||
'h,ob,w':['大婶子','大婶儿','大叔兄妇','伯兄妇','伯嫂','伯妇','伯姆','姒妇','姒姆','大伯嫂','姆姆','大姆','大伯妇','大伯娘','姐妇','阿姆'],
|
||||
'h,lb':['小叔子','小叔儿','小叔弟','叔子','叔仔','叔弟','阿叔'],
|
||||
'h,lb,w':['小婶子','小婶儿','小叔弟妇','叔弟妇','叔嫂','叔妇','叔姆','娣妇','娣姆','小叔妇','婶婶','小婶','小叔妇','小婶婶'],
|
||||
'h,[ob|lb]':['伯叔'],
|
||||
'h,xb,w':['妯娌','娣姒','娣姒姊妹','婶子'],
|
||||
'h,lb':['小叔子','小叔儿','小叔弟','叔子','叔仔','叔弟','阿叔','叔郎','小郎'],
|
||||
'h,lb,w':['小婶子','小婶儿','小叔弟妇','叔弟妇','叔嫂','叔妇','叔姆','娣妇','娣姆','小叔妇','婶婶','小婶','小婶婶'],
|
||||
'h,xb,s':['叔侄'],
|
||||
'h,xb,d':['叔侄女'],
|
||||
'h,os':['大姑子','大姑姐','大姑儿','大姑娘','姑姊','婆姐','婆婆姐','大娘姑'],
|
||||
@ -388,48 +233,48 @@ export default {
|
||||
'w,f,f,xb,s&l,w':['姻婶'],
|
||||
'w,m,f':['外祖岳父','毑岳父','外祖丈人爹','外祖丈人','外太岳父','姥岳父','姥丈爷','姥丈人','姥丈人爹','老丈爷','姥爷丈人'],
|
||||
'w,m,m':['外祖岳母','毑岳母','外祖丈母娘','外祖丈母','外太岳母','姥岳母','姥丈姥','姥丈母','姥丈母娘','老丈娘'],
|
||||
'w,f':['岳父','丈人','老丈人','外父','泰山','外舅','老亲爷','丈人爹','老干爷','丈人公','丈母爷','丈爷','丈爷爹','丈父','岳老子','老丈杆子','岳丈','岳翁','家岳'],
|
||||
'w,m':['岳母','丈母','老丈母','外母','泰水','外姑','老亲娘','丈人娘','老干娘','丈人婆','丈母娘','丈姥','丈姥娘','丈姆','岳母娘','丈母婆','丈姆婆'],
|
||||
'w':['老婆','妻子','媳妇','媳妇儿','太太','妻','女人','新娘','爱姥','妻亲','娘子','新娘子','夫人','婆娘','老太婆','内人','内子','内助','贤内助','爱妻','发妻','婆子','老婆子','老婆儿','老婆仔','堂客','爱人','老伴','那口子','配偶','伴侣','伉俪','卿卿'],
|
||||
'w,ob':['大舅子','大舅哥','大舅佬','大阿舅','舅哥'],
|
||||
'w,ob,w':['大舅妇','大舅姆','大舅兄嫂','大舅嫂','大舅姐','大舅媳妇','大妗子','大妗儿'],
|
||||
'w,lb':['小舅子','小舅弟','小舅佬','小阿舅','舅弟'],
|
||||
'w,lb,w':['小舅妇','小舅姆','小舅弟妇','小舅嫂','舅弟媳','小舅妹','小舅媳妇','小妗子','小妗儿'],
|
||||
'w,f':['岳父','丈人','老丈人','外父','泰山','外舅','老亲爷','丈人爹','老干爷','丈人公','丈母爷','丈爷','丈爷爹','丈父','岳老子','老丈杆子','岳丈','岳翁','妻公','妇翁','冰翁'],
|
||||
'w,m':['岳母','丈母','老丈母','外母','泰水','外姑','老亲娘','丈人娘','老干娘','丈人婆','丈母娘','丈姥','丈姥娘','丈姆','岳母娘','丈母婆','丈姆婆','丈姆娘'],
|
||||
'w':['老婆','妻子','媳妇','媳妇儿','媳妇子','太太','妻','女人','新娘','爱姥','妻亲','娘子','新娘子','夫人','婆娘','老太婆','内人','内子','内助','贤内助','爱妻','发妻','婆姨','婆子','老婆子','老婆儿','老婆仔','堂客','爱人','老伴','那口子','配偶','伴侣','伉俪','卿卿'],
|
||||
'w,ob':['大舅子','大舅哥','大舅佬','大阿舅','丈人兄','舅哥'],
|
||||
'w,ob,w':['大舅妇','大妗子','大妗儿','大舅姆','大舅兄嫂','大舅嫂','大舅姐','大舅媳妇','丈人嫂'],
|
||||
'w,lb':['小舅子','小舅弟','小舅佬','小阿舅','丈人弟','舅弟'],
|
||||
'w,lb,w':['小舅妇','小妗子','小妗儿','小舅姆','小舅弟妇','小舅嫂','舅弟媳','小舅妹','小舅媳妇'],
|
||||
'w,xb':['舅子','舅佬','妻舅','老婆舅','阿舅','亲家舅','舅老倌'],
|
||||
'w,xb,w':['舅嫂','舅妇','舅姆','妻妗','妗仔','妗子','妗儿'],
|
||||
'w,xb,s':['舅侄'],
|
||||
'w,xb,d':['舅侄女'],
|
||||
'w,os':['大姨子','大姨姐','大姨儿','姨姐'],
|
||||
'w,os,h':['大姨夫','大姨姐夫','襟兄','大尹子'],
|
||||
'w,os,h':['大姨夫','大姨姐夫','姨姐夫','襟兄','大尹子'],
|
||||
'w,ls':['小姨子','小姨妹','小茙儿','姨妹','姨仔','姨妹子'],
|
||||
'w,ls,h':['小姨夫','小姨妹夫','小茙夫','襟弟','小尹子'],
|
||||
'w,ls,h':['小姨夫','小姨妹夫','姨妹夫','小茙夫','襟弟','小尹子'],
|
||||
'w,xs':['姨子','妻姨'],
|
||||
'w,xs,h':['连襟','连桥','两桥','姨夫','姨夫爷','一担挑','老挑','挑担','担儿挑','连襟儿','妻尹','娅'],
|
||||
'w,xs,h':['连襟','姨夫','连桥','两桥','两乔','姨夫爷','老襟','一担挑','老挑','挑担','担儿挑','连襟儿','襟兄弟','友婿','妻尹','娅'],
|
||||
'w,xs,s':['姨甥'],
|
||||
'w,xs,d':['姨甥女'],
|
||||
// 兄弟姐妹系
|
||||
'ob':['哥哥','哥','胞兄','亲哥','老哥','依哥','阿哥','家兄','兄长','大佬','元兄','长兄','几哥'],
|
||||
'ob':['哥哥','哥','胞兄','亲哥','兄亲','老哥','依哥','阿哥','兄台','大佬','家兄','兄长','元兄','长兄','几哥'],
|
||||
'ob,w':['嫂子','嫂','嫂嫂','阿嫂','家嫂','兄姊','兄嫂','兄妇','兄妻','几嫂'],
|
||||
'ob,s':['侄子','兄子'],
|
||||
'ob,d':['侄女','兄女'],
|
||||
'lb':['弟弟','弟','胞弟','亲弟','老弟','阿弟','细佬','依弟','小弟','幺弟','细弟','满弟','幼弟','几弟'],
|
||||
'lb':['弟弟','弟','胞弟','亲弟','弟亲','老弟','依弟','阿弟','弟子','细佬','小弟','几弟'],
|
||||
'lb,w':['弟妹','弟媳','弟媳妇','弟媳妇子','弟新妇','老弟嫂'],
|
||||
'lb,s':['侄子','弟子'],
|
||||
'lb,d':['侄女','弟女'],
|
||||
'xb,s':['侄子','侄男','侄儿','侄儿子','侄','侄仔','阿侄'],
|
||||
'xb,s':['侄子','侄男','侄儿子','侄小子','嫡侄','亲侄','侄儿','侄仔','阿侄','老侄','侄'],
|
||||
'xb,s,w':['侄媳妇','侄媳','侄嫂','侄妇'],
|
||||
'xb,d':['侄女','侄囡','侄女儿','侄闺女'],
|
||||
'xb,d,h':['侄女婿','侄婿'],
|
||||
'os':['姐姐','姐','胞姐','亲姐','阿姐','阿姊','姊仔','家姐','依姐','长姐','几姐'],
|
||||
'xb,d':['侄女','侄囡','侄女儿','侄丫头','侄闺女'],
|
||||
'xb,d,h':['侄女婿','侄婿','侄郎'],
|
||||
'os':['姐姐','姐','胞姐','亲姐','姊亲','老姐','依姐','阿姐','姊台','家姐','长姐','姊仔','几姐'],
|
||||
'os,h':['姐夫','姐丈','姐婿','姐郎','姊兄','姐夫哥','胞姐夫'],
|
||||
'ls':['妹妹','妹','胞妹','亲妹','阿妹','妹儿','妹子','依妹','幺妹','细妹','满妹','幼妹','几妹'],
|
||||
'ls':['妹妹','妹','胞妹','亲妹','妹亲','老妹','依妹','阿妹','妹子','小妹','妹儿','几妹'],
|
||||
'ls,h':['妹夫','妹丈','妹婿','妹郎','妹弟','妹夫子','胞妹夫'],
|
||||
'xs,s':['外甥','甥子','甥男','甥儿','甥儿子','甥','甥仔'],
|
||||
'xs,s':['外甥','甥子','甥男','甥儿','甥儿子','甥仔','甥'],
|
||||
'xs,s,w':['甥媳妇','甥媳','甥嫂','甥妇','甥儿息妇儿'],
|
||||
'xs,s,s':['甥孙','远甥','弥甥'],
|
||||
'xs,s,d':['甥孙女','远甥女','弥甥女'],
|
||||
'xs,d':['外甥女','甥女','甥囡','甥女儿','甥闺女'],
|
||||
'xs,d,h':['甥女婿','甥婿','甥儿息婿儿'],
|
||||
'xs,d,h':['甥女婿','甥婿','甥郎','甥儿息婿儿'],
|
||||
// 子系
|
||||
's':['儿子','男儿','息男','闺男','囝囝','囝男','囝儿','小子','娃子','男亲','伢子','长子','次子','幼子','儿','仔','囝','子','阿仔','仔仔','后生','公子','少爷','一世孙'],
|
||||
's,w':['儿媳','儿媳妇','息妇儿','儿媳妇儿','新妇','新妇囝','心抱','息妇','儿妇','子妇','小妇','少奶奶','少夫人'],
|
||||
@ -445,21 +290,21 @@ export default {
|
||||
's,w,xs,h':['姻侄婿'],
|
||||
's,w,xs,s':['姻侄外孙'],
|
||||
's,w,xs,d':['姻侄外孙女'],
|
||||
's,s':['孙子','孙男','孙男儿','孙儿','长孙','孙仔','孙囝','孙娃子','孙伢子','二世孙'],
|
||||
's,s':['孙子','孙男','孙男儿','孙儿','长孙','嗣孙','孙仔','孙囝','孙娃子','孙伢子','二世孙'],
|
||||
's,s,w':['孙媳妇','孙媳','孙妇','孙息妇','孙新妇'],
|
||||
's,s,s':['曾孙','曾孙男','重孙','重孙子','息仔','三世孙'],
|
||||
's,s,s,w':['曾孙妇','重孙媳妇'],
|
||||
's,s,s,s':['玄孙','元孙','膀孙','四世孙'],
|
||||
's,s,s,s':['玄孙','元孙','膀孙','重重孙','四世孙'],
|
||||
's,s,s,s,w':['玄孙媳妇'],
|
||||
's,s,s,s,s':['来孙','五世孙'],
|
||||
's,s,s,s,s,w':['来孙媳妇'],
|
||||
's,s,s,s,s,s':['晜孙','六世孙'],
|
||||
's,s,s,s,s,s':['晜孙','昆孙','六世孙'],
|
||||
's,s,s,s,s,s,w':['晜孙媳妇'],
|
||||
's,s,s,s,s,s,s':['仍孙','礽孙','七世孙'],
|
||||
's,s,s,s,s,s,s,w':['仍孙媳妇'],
|
||||
's,s,s,s,s,s,s,s':['云孙','八世孙'],
|
||||
's,s,s,s,s,s,s,s,w':['云孙媳妇'],
|
||||
's,s,s,s,s,s,s,s,s':['耳孙','远孙','九世孙'],
|
||||
's,s,s,s,s,s,s,s,s':['耳孙','远孙','裔孙','季孙','九世孙'],
|
||||
's,s,s,s,s,s,s,s,s,w':['耳孙媳妇'],
|
||||
's,s,s,s,s,s,s,s,s,s':['弥孙','十世孙'],
|
||||
's,s,s,s,s,s,s,s,s,s,w':['弥孙媳妇'],
|
||||
@ -524,7 +369,7 @@ export default {
|
||||
's,s,d,d':['玄外孙女'],
|
||||
's,s,d,d,h':['玄外孙女婿'],
|
||||
's,d':['孙女','孙女儿','孙囡','孙囡儿','女孙','孙女子'],
|
||||
's,d,h':['孙女婿','孙婿','孙息婿'],
|
||||
's,d,h':['孙女婿','孙婿','孙郎','孙息婿'],
|
||||
's,d,s':['曾外孙','外息仔'],
|
||||
's,d,s,w':['曾外孙媳妇'],
|
||||
's,d,s,s':['曾外曾孙'],
|
||||
@ -538,7 +383,7 @@ export default {
|
||||
's,d,d,d':['曾外曾外孙女'],
|
||||
's,d,d,d,h':['曾外曾外孙女婿'],
|
||||
'd':['女儿','千金','小姐','掌上明珠','息女','闺女','囡囡','囡女','囡儿','乖囡','囡嗯','丫头','姑娘','妮子','女亲','长女','次女','幼女','女','阿女','女女'],
|
||||
'd,h':['女婿','姑爷','姑爷儿','女婿子','女婿儿','儿婿','子婿','息婿','小婿','郎婿','郎婿子','息婿儿','囝婿','囡婿','东床','半子'],
|
||||
'd,h':['女婿','姑爷','姑爷儿','女婿子','女婿儿','儿婿','子婿','息婿','小婿','快婿','郎婿','郎婿子','息婿儿','囝婿','囡婿','东床','半子','甥馆','女夫'],
|
||||
'd,h,f':['亲家公'],
|
||||
'd,h,f,f&o':['姻伯'],
|
||||
'd,h,f,f&l':['姻叔'],
|
||||
@ -566,7 +411,7 @@ export default {
|
||||
'd,s,d,d':['外玄外孙女'],
|
||||
'd,s,d,d,h':['外玄外孙女婿'],
|
||||
'd,d':['外孙女','外孙囡','外孙女儿'],
|
||||
'd,d,h':['外孙女婿','外孙婿'],
|
||||
'd,d,h':['外孙女婿','外孙婿','外孙郎'],
|
||||
'd,d,s':['外曾外孙','外息仔'],
|
||||
'd,d,s,w':['外曾外孙媳妇'],
|
||||
'd,d,s,s':['外曾外曾孙'],
|
||||
@ -599,7 +444,8 @@ export default {
|
||||
'1,xs,h,xs':['姑姻姊妹'],
|
||||
'1,xs,h,xs,s':['姑姻姑男'],
|
||||
'1,xs,h,xs,d':['姑姻姑女'],
|
||||
'1,xs,s,s':['离孙'],
|
||||
'1,xs,s,s':['离孙男','离孙子'],
|
||||
'1,xs,s,d':['离孙女'],
|
||||
'0,xb,w,xb':['舅眷兄弟'],
|
||||
'0,xb,w,xb,s':['舅眷舅男'],
|
||||
'0,xb,w,xb,d':['舅眷舅女'],
|
||||
@ -613,7 +459,8 @@ export default {
|
||||
'0,xs,h,xs,s':['姨姻姑男'],
|
||||
'0,xs,h,xs,d':['姨姻姑女'],
|
||||
'0,xb,s':['娘家侄子','娘家侄'],
|
||||
'0,xb,s,s':['归孙'],
|
||||
'0,xb,s,s':['归孙男','归孙子'],
|
||||
'0,xb,s,d':['归孙女'],
|
||||
'0,xb,d':['娘家侄女'],
|
||||
'0,xs,s':['姨甥','姨甥男','从男','从子'],
|
||||
'0,xs,s,w':['从妇'],
|
153
src/module/data/multiple.js
Normal file
@ -0,0 +1,153 @@
|
||||
/*
|
||||
* 并称关系链 - 某个称呼同时包含多层关系链
|
||||
*/
|
||||
export default {
|
||||
'[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,[f|m],m,':['老外婆','老外奶','老姥姥','老姥娘','老嫏娘'],
|
||||
'm,[f|m]':['外祖父母','外公外婆','姥姥姥爷'],
|
||||
'm,f,[f,xs|m,xb],s':['舅姑姥爷'],
|
||||
'm,[xb|xb,w]':['舅父母'],
|
||||
'm,xb,[s|d]':['舅表兄弟姐妹'],
|
||||
'm,[xs|xs,h]':['姨父母'],
|
||||
'm,xs,[s|d]':['姨兄弟姐妹','姨姐妹兄弟','从母兄弟姐妹'],
|
||||
'[f|m]':['父母','爹娘','爹妈','爸妈','爸爸妈妈','父母亲','双亲','二亲','两亲','二老','高堂'],
|
||||
'[f|m],[f,xs|m,xb],s':['舅姑爸','姑舅爸'],
|
||||
'[f|m],[f,xs|m,xb],s&o,w':['舅姑姆','姑舅姆'],
|
||||
'[f|m],[f,xs|m,xb],s&l,w':['舅姑婶','姑舅婶'],
|
||||
'[f|m],[f,xs|m,xb],d':['姑舅娘娘'],
|
||||
'[f|m],m,xs,s':['两姨爸'],
|
||||
'[f|m],m,xs,s&o,w':['两姨姆'],
|
||||
'[f|m],m,xs,s&l,w':['两姨婶'],
|
||||
'[f|m],m,xs,d':['两姨娘娘'],
|
||||
'w,[f|m]':['岳父母','岳父岳母','丈人丈母','舅姑'],
|
||||
'w,f,[ob|ob,w]':['伯岳父母'],
|
||||
'w,f,[lb|lb,w]':['叔岳父母'],
|
||||
'w,f,[xs|xs,h]':['姑岳父母'],
|
||||
'w,m,[xb|xb,w]':['舅岳父母'],
|
||||
'w,m,[xs|xs,h]':['姨岳父母'],
|
||||
'w,[f,xs|m,xb],d':['姑舅姨子'],
|
||||
'w,[f,xs|m,xb],d,h':['姑舅连襟','姑舅连桥'],
|
||||
'h,[f|m]':['公婆','翁姑','姑翁','姑舅','大家官','公公婆婆','姑章','姑嫜'],
|
||||
'h,f,[ob|ob,w]':['伯公婆'],
|
||||
'h,f,[lb|lb,w]':['叔公婆'],
|
||||
'h,f,[xs|xs,h]':['姑公婆'],
|
||||
'h,m,[xb|xb,w]':['舅公婆'],
|
||||
'h,m,[xs|xs,h]':['姨公婆'],
|
||||
'[xb|xs]':['兄弟姐妹','同胞','同胞兄弟姐妹','手足'],
|
||||
'[ob|os]':['哥哥姐姐'],
|
||||
'[lb|ls]':['弟弟妹妹'],
|
||||
'[ob|ob,w]':['哥哥嫂嫂','兄嫂'],
|
||||
'[f,xb|m,xs],[s|d]':['从兄弟姐妹','从姐妹兄弟'],
|
||||
'[f,xs|m,xb],[s|d]':['表兄弟姐妹','表姐妹兄弟','老表','阿表'],
|
||||
'[f,xs|m,xb],s':['姑舅兄弟','舅姑兄弟'],
|
||||
'[f,xs|m,xb],s&o':['姑舅哥','姑舅哥哥'],
|
||||
'[f,xs|m,xb],s&l':['姑舅弟','姑舅弟弟'],
|
||||
'[f,xs|m,xb],d':['姑舅姊妹','舅姑姊妹'],
|
||||
'[f,xs|m,xb],d&o':['姑舅姐','姑舅姐姐'],
|
||||
'[f,xs|m,xb],d&l':['姑舅妹','姑舅妹妹'],
|
||||
'[f,xs|m,xb],s,s':['姑舅儿子'],
|
||||
'[f,xs|m,xb],s,d':['姑舅女儿'],
|
||||
'[xb|xs],[s|d]':['侄甥'],
|
||||
'xb,[s|d]':['侄子女','侄子侄女'],
|
||||
'xs,[s|d]':['甥子女','外甥子女'],
|
||||
'[w|s|d]':['妻儿','妻小'],
|
||||
'[w|d]':['妻女'],
|
||||
'[s|d]':['子女','儿女','仔女','小孩','孩子','孩子们','孩儿','小孩儿','宝宝','宝贝','娃','娃子','儿辈','子辈','细伢','伢子','子息','子嗣','崽','幺儿'],
|
||||
'[s|d],[s|d]':['孙辈','孙息','孙枝'],
|
||||
's,[s|d]':['孙子女'],
|
||||
'd,[s|d]':['外孙子女'],
|
||||
's#xb,s':['子侄'],
|
||||
's#s,w':['子媳'],
|
||||
'[s|d]#[s|d],[s|d]':['儿孙','子孙','孙息'],
|
||||
'[s,w|d,h],[f|m]':['亲家','儿女亲家'],
|
||||
'[s,w|d,h],f':['亲家公','亲家父','亲家翁','亲家世翁','姻翁'],
|
||||
'[s,w|d,h],f,f':['太姻翁'],
|
||||
'[s,w|d,h],f,m':['太姻姆'],
|
||||
'[s,w|d,h],f,f,f':['太姻翁'],
|
||||
'[s,w|d,h],f,f,m':['太姻姆'],
|
||||
'[s,w|d,h],f,f,ob':['姻伯翁'],
|
||||
'[s,w|d,h],f,f,ob,w':['姻伯姆'],
|
||||
'[s,w|d,h],f,f,lb':['姻叔翁'],
|
||||
'[s,w|d,h],f,f,lb,w':['姻叔母'],
|
||||
'[s,w|d,h],f,f,xb,s&o':['姻家兄'],
|
||||
'[s,w|d,h],f,f,xb,s&o,w':['姻家兄妇'],
|
||||
'[s,w|d,h],f,f,xb,s&l':['姻家弟'],
|
||||
'[s,w|d,h],f,f,xb,s&l,w':['姻家弟妇'],
|
||||
'[s,w|d,h],f,f,xb,s,s':['姻家侄'],
|
||||
'[s,w|d,h],f,f,xb,s,s,w':['姻家侄妇'],
|
||||
'[s,w|d,h],f,ob':['姻兄'],
|
||||
'[s,w|d,h],f,ob,w':['姻兄妇'],
|
||||
'[s,w|d,h],f,lb':['姻弟'],
|
||||
'[s,w|d,h],f,lb,w':['姻弟妇'],
|
||||
'[s,w|d,h],f,xb,s':['姻侄'],
|
||||
'[s,w|d,h],f,xb,s,w':['姻侄妇'],
|
||||
'[s,w|d,h],m':['亲家母','亲家婆','亲家姆','亲姆','姻姆'],
|
||||
'[s,w|d,h],m,ob':['姻仁兄'],
|
||||
'[s,w|d,h],m,ob,w':['姻仁兄妇'],
|
||||
'[s,w|d,h],m,lb':['姻仁弟'],
|
||||
'[s,w|d,h],m,lb,w':['姻仁弟妇'],
|
||||
'[s,w|d,h],[f|m],f':['姻太翁'],
|
||||
'[s,w|d,h],[f|m],m':['姻太姆'],
|
||||
};
|
@ -1,4 +1,6 @@
|
||||
// 关系合称
|
||||
/*
|
||||
* 关系合称 - 两个人之间的关系合称
|
||||
*/
|
||||
export default {
|
||||
'f#s':['父子'],
|
||||
'm#s':['母子'],
|
||||
@ -13,11 +15,15 @@ export default {
|
||||
'w,m#d,h':['母婿'],
|
||||
'h,f#s,w':['翁媳'],
|
||||
'h,m#s,w':['婆媳'],
|
||||
'[f|m],[f|m]#[s|d],[s|d]':['祖孙'],
|
||||
'f,[xb|xb,w]#xb,[s|d]':['叔侄'],
|
||||
'f,[xs|xs,h]#xb,[s|d]':['姑侄'],
|
||||
'm,[xb|xb,w]#xs,[s|d]':['舅甥'],
|
||||
'm,[xs|xs,h]#xs,[s|d]':['姨甥'],
|
||||
'f,[f|m]#s,[s|d]':['祖孙'],
|
||||
'm,f#d,[s|d]':['公孙'],
|
||||
'm,m#d,[s|d]':['婆孙'],
|
||||
'f,[ob|ob,w]#[lb|h,lb],[s|d]':['伯侄'],
|
||||
'f,lb#ob,[s|d]':['叔侄'],
|
||||
'f,lb,w#h,ob,[s|d]':['婶侄'],
|
||||
'f,[xs|xs,h]#[xb|w,xb],[s|d]':['姑侄'],
|
||||
'm,[xb|xb,w]#[xs|h,xs],[s|d]':['舅甥'],
|
||||
'm,[xs|xs,h]#[xs|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':['堂姐弟'],
|
||||
@ -35,10 +41,14 @@ export default {
|
||||
'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':['连襟','连桥'],
|
||||
'w,os,h#w,ls,h':['连襟'],
|
||||
'w,os#ls,h':['襟姐弟'],
|
||||
'w,ls#os,h':['襟兄妹'],
|
||||
'xs,h#w,xb':['郎舅'],
|
||||
'xs,h#w,xs':['郎姨'],
|
||||
'xb,w#h,xb':['叔嫂'],
|
||||
'lb,w#h,ob':['伯媳'],
|
||||
'ob,w#h,lb':['叔嫂'],
|
||||
'xb,w#h,xs':['姑嫂'],
|
||||
'xs,h,xb#xb,w,xb':['姻兄弟'],
|
||||
'd,h,[f|m]#s,w,[f|m]':['儿女亲家'],
|
||||
}
|
@ -1,25 +1,16 @@
|
||||
// 分支前缀
|
||||
import {
|
||||
selector2id
|
||||
} from './method';
|
||||
// 合并写法
|
||||
var prefixMap = {
|
||||
'{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]':['重表'], // 祖辈的表兄弟姐妹的子女
|
||||
},
|
||||
};
|
||||
// 分解写法
|
||||
var prefix = {
|
||||
/*
|
||||
* 分支前缀 - 旁支亲戚的分支节点
|
||||
*/
|
||||
export default {
|
||||
'{G2}':{
|
||||
'f,f,xb':['从祖'],
|
||||
'm,f,xb':['外从祖'],
|
||||
},
|
||||
'{G1}':{
|
||||
'f,xb':['堂','同堂','亲堂','从父','叔伯','从'],
|
||||
'f,xb':['堂','同堂','亲堂','从父','叔伯','堂房','从'],
|
||||
'f,xs':['姑表','姑家'],
|
||||
'm,xb':['舅表','舅家'],
|
||||
'm,xs':['姨','从母','姨家','两姨','从'],
|
||||
'm,xs':['姨','从母','两姨','姨表','从'],
|
||||
'f,f,xb,s':['从堂','再从父','远堂','堂叔伯','叔伯叔伯','再从'],
|
||||
'f,f,xb,d':['堂姑表','从父姑表'],
|
||||
'f,f,xs,s':['姑表叔表'],
|
||||
@ -40,6 +31,8 @@ var prefix = {
|
||||
'm,m,m,xs,d,d':['三从母','三从'],
|
||||
'f,f,f,f,xb,s,s,s':['四从父','三从堂','远堂','族','四从'],
|
||||
'm,m,m,m,xs,d,d,d':['四从母','四从'],
|
||||
'[f|m],[f|m],[f|m],[f,xs|m,xb],[s|d],[s|d],[s|d]':['重表'],
|
||||
'[f|m],[f|m],[f,xs|m,xb],[s|d],[s|d]':['重表'],
|
||||
},
|
||||
'{G1M}':{
|
||||
'f,ob':['伯'],
|
||||
@ -58,10 +51,16 @@ var prefix = {
|
||||
'f,m,xb,s&l':['舅表叔'],
|
||||
'f,m,xs,s&o':['姨伯','从母伯','从伯'],
|
||||
'f,m,xs,s&l':['姨叔','从母叔','从叔'],
|
||||
'm,f,xb,s':['堂舅','从父舅'],
|
||||
'm,f,xb,s':['堂舅','从父舅','叔伯舅'],
|
||||
'm,f,xs,s':['姑表舅'],
|
||||
'm,m,xb,s':['舅表舅'],
|
||||
'm,m,xs,s':['姨舅','从母舅'],
|
||||
'f,[f|m],[f|m],[f,xs|m,xb],[s|d],[s|d],s&o':['重表伯'],
|
||||
'f,[f|m],[f|m],[f,xs|m,xb],[s|d],[s|d],s&l':['重表叔'],
|
||||
'f,[f|m],[f,xs|m,xb],[s|d],s&o':['重表伯'],
|
||||
'f,[f|m],[f,xs|m,xb],[s|d],s&l':['重表叔'],
|
||||
'm,[f|m],[f|m],[f,xs|m,xb],[s|d],[s|d],s':['重表舅'],
|
||||
'm,[f|m],[f,xs|m,xb],[s|d],s':['重表舅'],
|
||||
},
|
||||
'{G1W}':{
|
||||
'f,xs':['姑'],
|
||||
@ -71,10 +70,14 @@ var prefix = {
|
||||
'f,f,xs,d':['姑表姑'],
|
||||
'f,m,xb,d':['舅表姑'],
|
||||
'f,m,xs,d':['姨姑','从母姑'],
|
||||
'm,f,xb,d':['堂姨','从父姨'],
|
||||
'm,f,xb,d':['堂姨','从父姨','叔伯姨'],
|
||||
'm,f,xs,d':['姑表姨'],
|
||||
'm,m,xb,d':['舅表姨'],
|
||||
'm,m,xs,d':['姨姨','从母姨'],
|
||||
'f,[f|m],[f|m],[f,xs|m,xb],[s|d],[s|d],d':['重表姑'],
|
||||
'f,[f|m],[f,xs|m,xb],[s|d],d':['重表姑'],
|
||||
'm,[f|m],[f|m],[f,xs|m,xb],[s|d],[s|d],d':['重表姨'],
|
||||
'm,[f|m],[f,xs|m,xb],[s|d],d':['重表姨'],
|
||||
},
|
||||
'{G0}':{
|
||||
'xb':['侄'],
|
||||
@ -107,24 +110,24 @@ var prefix = {
|
||||
'f,f,xb,s,w':['从父叔眷'],
|
||||
'f,f,xs,s,w':['姑表叔眷'],
|
||||
'f,m,xb,s,w':['舅表叔眷'],
|
||||
'f,m,xs,s,w':['姨表叔眷'],
|
||||
'f,m,xs,s,w':['从母叔眷'],
|
||||
'm,xb,w':['舅眷'],
|
||||
'm,f,xb,s,w':['从父舅眷'],
|
||||
'm,f,xs,s,w':['姑表舅眷'],
|
||||
'm,m,xb,s,w':['舅表舅眷'],
|
||||
'm,m,xs,s,w':['姨表舅眷'],
|
||||
'm,m,xs,s,w':['从母舅眷'],
|
||||
},
|
||||
'{M1M}':{
|
||||
'f,xs,h':['姑姻'],
|
||||
'f,f,xb,d,h':['从父姑姻'],
|
||||
'f,f,xs,d,h':['姑表姑姻'],
|
||||
'f,m,xb,d,h':['舅表姑姻'],
|
||||
'f,m,xs,d,h':['姨表姑姻'],
|
||||
'f,m,xs,d,h':['从母姑姻'],
|
||||
'm,xs,h':['姨姻'],
|
||||
'm,f,xb,d,h':['从父姨姻'],
|
||||
'm,f,xs,d,h':['姑表姨姻'],
|
||||
'm,m,xb,d,h':['舅表姨姻'],
|
||||
'm,m,xs,d,h':['姨表姨姻'],
|
||||
'm,m,xs,d,h':['从母姨姻'],
|
||||
},
|
||||
'{M0}':{
|
||||
'xb,w':['兄弟眷'],
|
||||
@ -205,17 +208,3 @@ var prefix = {
|
||||
'w,xs,d,d,h':['姨甥外孙姻','姨外孙姻'],
|
||||
}
|
||||
};
|
||||
|
||||
for(var key in prefixMap){
|
||||
for(var selector in prefixMap[key]){
|
||||
var ids = selector2id(selector);
|
||||
if(typeof prefix[key]=='undefined'){
|
||||
prefix[key] = {};
|
||||
}
|
||||
ids.forEach(function(id){
|
||||
prefix[key][id] = prefixMap[key][selector];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default prefix;
|
11
src/module/data/sort.js
Normal file
@ -0,0 +1,11 @@
|
||||
/*
|
||||
* 排序字段
|
||||
*/
|
||||
export default {
|
||||
'f,xb':['几爸爸','几爸','几爹'],
|
||||
'f,xb,w':['几妈妈','几妈','几娘'],
|
||||
'f,f,xb':['几爷爷','几大爷','几嗲','几爷','几公'],
|
||||
'f,f,xb,w':['几奶奶','几大娘','几奶','几婆'],
|
||||
'm,f,xb':['几外公','几姥爷','几外爷'],
|
||||
'm,f,xb,w':['几外婆','几姥姥','几姥奶','几外奶','几姥'],
|
||||
};
|
201
src/module/id.js
Normal file
@ -0,0 +1,201 @@
|
||||
/*
|
||||
* 标识符 - 唯一性关系链,将【关系链】转换成【中文表述】
|
||||
*/
|
||||
import _pair from './data/pair.js';
|
||||
import _sort from './data/sort.js';
|
||||
|
||||
import {number2zh} from './unit.js';
|
||||
import {selector2id} from './selector.js';
|
||||
import {modeData} from './mode.js';
|
||||
|
||||
// 逆转ID
|
||||
export function reverseId(id,sex){
|
||||
if(!id){
|
||||
return [''];
|
||||
}
|
||||
// 映射关系
|
||||
let hash = {
|
||||
f:['d','s'],
|
||||
m:['d','s'],
|
||||
h:['w',''],
|
||||
w:['','h'],
|
||||
s:['m','f'],
|
||||
d:['m','f'],
|
||||
lb:['os','ob'],
|
||||
ob:['ls','lb'],
|
||||
xb:['xs','xb'],
|
||||
ls:['os','ob'],
|
||||
os:['ls','lb'],
|
||||
xs:['xs','xb']
|
||||
};
|
||||
// 年纪判断
|
||||
let age = '';
|
||||
if(id.match(/&o$/)){
|
||||
age = '&l';
|
||||
}else if(id.match(/&l$/)){
|
||||
age = '&o';
|
||||
}
|
||||
id = id.replace(/&[ol\d+]/g,'');
|
||||
// 性别判断
|
||||
if(sex<0){
|
||||
if(id.match(/^w/)){
|
||||
sex = 1;
|
||||
}else if(id.match(/^h/)){
|
||||
sex = 0;
|
||||
}
|
||||
}
|
||||
const doing = function(sex){
|
||||
const sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0');
|
||||
const sid_arr = sid.substring(0,sid.length-2).split(',').reverse();
|
||||
const r_id = id.split(',').reverse().map((id,i)=>hash[id][sid_arr[i]]).join(',');
|
||||
const gen = getGenById(r_id);
|
||||
return r_id + (gen?'':age);
|
||||
};
|
||||
if(sex<0){
|
||||
return [doing(1),doing(0)];
|
||||
}else{
|
||||
return [doing(sex)];
|
||||
}
|
||||
};
|
||||
|
||||
// ID列表去重
|
||||
export function filterId(arr){
|
||||
const sameList = arr.filter(item => item === item.replace(/[ol](?=[s|b])/g,'x').replace(/&[ol]/,''));
|
||||
return arr.filter(item => {
|
||||
const temp = item.replace(/[ol](?=[s|b])/g,'x').replace(/&[ol]/,'');
|
||||
return sameList.includes(item)||item!=temp&&!sameList.includes(temp);
|
||||
}).filter((item,idx,arr) => arr.indexOf(item) === idx);
|
||||
};
|
||||
|
||||
// 通过ID获取世代数
|
||||
export function getGenById(id){
|
||||
const gMap = {'f':1,'m':1,'s':-1,'d':-1};
|
||||
let gen = 0;
|
||||
id.split(',').forEach(sub => {
|
||||
const s = sub.replace(/&[ol\d]+/,'');
|
||||
gen += gMap[s]||0;
|
||||
});
|
||||
return gen;
|
||||
};
|
||||
|
||||
// 通过ID获取关系称呼
|
||||
export function getItemsById(id){
|
||||
let items = [];
|
||||
const getData = function(key){
|
||||
let ids = [];
|
||||
const k1 = key.replace(/(,[sd])(,[wh])?$/,'$1&o$2');
|
||||
const k2 = key.replace(/(,[sd])(,[wh])?$/,'$1&l$2');
|
||||
if(modeData[k1]&&modeData[k2]){
|
||||
ids = [k1,k2];
|
||||
}else if(modeData[key]){
|
||||
ids = [key];
|
||||
}
|
||||
return filterId(ids).map(id => modeData[id][0]);
|
||||
};
|
||||
// 对排序进行处理
|
||||
if(id.match(/&([\d]+)(,[hw])?$/)){
|
||||
const num = id.match(/&([\d]+)(,[hw])?$/)[1];
|
||||
const zh = number2zh(num);
|
||||
id = id.replace(/&\d+/g,'');
|
||||
if(_sort[id]){
|
||||
items.push(_sort[id][0].replace('几',zh));
|
||||
}else if(modeData[id]){
|
||||
const gen = getGenById(id);
|
||||
let item = '';
|
||||
if(gen<3&&!id.match(/[hw],/)){
|
||||
modeData[id].forEach(function(name){
|
||||
if(!item&&name.includes('几')){
|
||||
item = name.replace('几',zh);
|
||||
}
|
||||
});
|
||||
if(!item){
|
||||
item = modeData[id][0];
|
||||
item = item.match(/^[大小]/)?item.replace(/^[大小]/,zh):zh+item;
|
||||
}
|
||||
}
|
||||
items.push(item);
|
||||
}
|
||||
}
|
||||
// 直接匹配称呼
|
||||
if(!items.length){
|
||||
id = id.replace(/&\d+/g,'');
|
||||
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){
|
||||
let l = id.replace(/x/g,'l');
|
||||
let o = id.replace(/x/g,'o');
|
||||
items = items.concat(getData(o),getData(l));
|
||||
}
|
||||
return items;
|
||||
};
|
||||
|
||||
// 通过ID获取关系链
|
||||
let data = {
|
||||
...modeData,
|
||||
'xb': ['兄弟'],
|
||||
'xs': ['姐妹']
|
||||
};
|
||||
export function getChainById(id,sex=-1){
|
||||
let item = id.split(',').map(sign => {
|
||||
const key = sign.replace(/&[ol\d]+/,'');
|
||||
return data[key][0];
|
||||
}).join('的');
|
||||
if(sex>-1&&data[sex+','+id]){
|
||||
if(sex==0){
|
||||
item = '(女性)'+item;
|
||||
}else if(sex==1){
|
||||
item = '(男性)'+item;
|
||||
}
|
||||
}
|
||||
return item;
|
||||
};
|
||||
|
||||
// 通过ID获取关系合称
|
||||
export function getPairsById(id1,id2){
|
||||
id1 = id1.replace(/&\d+/g,'');
|
||||
id2 = id2.replace(/&\d+/g,'');
|
||||
const id1_x = id1.replace(/([ol])([bs])/g,'x$2');
|
||||
const id2_x = id2.replace(/([ol])([bs])/g,'x$2');
|
||||
const id1_r = id1.replace(/&[ol]/g,'');
|
||||
const id2_r = id2.replace(/&[ol]/g,'');
|
||||
|
||||
let result = [];
|
||||
let result_x = [];
|
||||
let result_r = [];
|
||||
for(const key in _pair){
|
||||
const selectors = key.split('#');
|
||||
if(selectors.length>1){
|
||||
const list1 = selector2id(selectors[0]);
|
||||
const list2 = selector2id(selectors[1]);
|
||||
const list1_r = list1.map(selector => selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2'));
|
||||
const list2_r = list2.map(selector => selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2'));
|
||||
if(list1.includes(id1)&&list2.includes(id2)||list1.includes(id2)&&list2.includes(id1)){
|
||||
result.push(_pair[key][0]);
|
||||
}
|
||||
if(list1_r.includes(id1_x)&&list2_r.includes(id2_x)||list1_r.includes(id2_x)&&list2_r.includes(id1_x)){
|
||||
result_x.push(_pair[key][0]);
|
||||
}
|
||||
if(list1_r.includes(id1_r)&&list2_r.includes(id2_r)||list1_r.includes(id2_r)&&list2_r.includes(id1_r)){
|
||||
result_r.push(_pair[key][0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!result.length){
|
||||
result = result_x;
|
||||
}
|
||||
if(!result.length){
|
||||
result = result_r;
|
||||
}
|
||||
return result;
|
||||
};
|
96
src/module/map.js
Normal file
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* 完整关系链数据 - 合并各类关系链数据
|
||||
*/
|
||||
import _prefix from './data/prefix.js';
|
||||
import _branch from './data/branch.js';
|
||||
import _main from './data/main.js';
|
||||
import _multipie from './data/multiple.js';
|
||||
|
||||
import {expandSelector} from './selector.js';
|
||||
|
||||
let _map = { ..._multipie };
|
||||
|
||||
// 分支 - 前缀处理
|
||||
const prefixMap = {};
|
||||
for(const key in _prefix){
|
||||
prefixMap[key] = {};
|
||||
for(const selector in _prefix[key]){
|
||||
expandSelector(selector).forEach(function(s){
|
||||
prefixMap[key][s] = _prefix[key][selector];
|
||||
});
|
||||
}
|
||||
}
|
||||
// 分支 - 节点处理
|
||||
const branchMap = {};
|
||||
for(const selector in _branch){
|
||||
expandSelector(selector).forEach(function(s){
|
||||
branchMap[s] = _branch[selector];
|
||||
});
|
||||
}
|
||||
// 分支 - 合并
|
||||
const getMap = function(prefixMap,branchMap){
|
||||
const map = {};
|
||||
for(const key in branchMap){
|
||||
const tag = key.match(/\{.+?\}/)[0];
|
||||
const nameList = branchMap[key];
|
||||
for(const k in prefixMap[tag]){
|
||||
const prefixList = prefixMap[tag][k];
|
||||
const newKey = key.replace(tag,k);
|
||||
const isFilter = ['h,h','w,w','w,h','h,w'].some(pair=>(newKey.includes(pair)));
|
||||
if(!isFilter){
|
||||
const newList = prefixList.flatMap((prefix) =>
|
||||
nameList.map((name) => (name.includes('?') ? name.replace('?', prefix) : prefix + name))
|
||||
);
|
||||
if(!map[newKey]){
|
||||
map[newKey] = _map[newKey]||[];
|
||||
}
|
||||
map[newKey] = newList.concat(map[newKey]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return map;
|
||||
};
|
||||
_map = {..._map,...getMap(prefixMap,branchMap)};
|
||||
|
||||
// 主要关系
|
||||
for(let key in _main){
|
||||
_map[key] = [..._main[key], ...(_map[key] || [])];
|
||||
}
|
||||
|
||||
// 版权彩蛋
|
||||
_map['o']=['passer-by.com','\u4f5c\u8005'];
|
||||
|
||||
// 配偶关系
|
||||
const mateMap = {
|
||||
'w':['妻','内','岳','岳家','丈人'],
|
||||
'h':['夫','外','公','婆家','婆婆'],
|
||||
};
|
||||
const nameSet = new Set(Object.values(_map).flat());
|
||||
for(const key in _map){
|
||||
if(key.match(/^[fm]/)||key.match(/^[olx][bs]$|^[olx][bs],[^mf]/)){ // 只对长辈或者兄弟辈匹配
|
||||
for(const k in mateMap){
|
||||
let newKey = k+','+key;
|
||||
if(key.match(/[fm]/)){
|
||||
let newKey_x = newKey.replace(/,[ol]([sb])(,[wh])?$/,',x$1$2').replace(/(,[sd])&[ol](,[wh])?$/,'$1$2');
|
||||
if(newKey_x!=newKey&&_map[newKey_x]){ // 不扩大解释年龄
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if(!_map[newKey]){
|
||||
_map[newKey] = [];
|
||||
}
|
||||
const prefixList = mateMap[k];
|
||||
const nameList = _map[key];
|
||||
prefixList.forEach(function(prefix){
|
||||
nameList.forEach(function(name){
|
||||
const newName = prefix+name;
|
||||
if(!nameSet.has(newName)){ // 配偶组合的称呼不得与原有称呼冲突(如:妻舅!=妻子的舅舅;外舅公!=老公的舅公)
|
||||
_map[newKey].push(newName);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default _map;
|
25
src/module/mode.js
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* 模式数据
|
||||
*/
|
||||
import _map from './map.js';
|
||||
|
||||
let _mode = {}; // 模式缓存
|
||||
let modeData = { ..._map }; // 最终数据
|
||||
|
||||
// 设置模式数据
|
||||
export function setModeData(sign,data){
|
||||
_mode[sign] = { ...(_mode[sign] || {}), ...data };
|
||||
};
|
||||
|
||||
// 获取模式数据
|
||||
export function getModeData(sign){
|
||||
modeData = { ..._map };
|
||||
if(sign&&_mode[sign]){
|
||||
for(const key in _mode[sign]){
|
||||
modeData[key] = [].concat(_mode[sign][key],_map[key]||[]);
|
||||
}
|
||||
}
|
||||
return modeData;
|
||||
};
|
||||
|
||||
export {modeData};
|
14
src/module/options.js
Normal file
@ -0,0 +1,14 @@
|
||||
/*
|
||||
* 通过表达式获取配置
|
||||
*/
|
||||
import _expression from './rule/expression.js';
|
||||
|
||||
export function getOptions(text){
|
||||
for(const item of _expression){
|
||||
const match = text.match(item['exp']);
|
||||
if(match){
|
||||
return item['opt'](match);
|
||||
}
|
||||
}
|
||||
return {};
|
||||
};
|
76
src/module/rule/expression.js
Normal file
@ -0,0 +1,76 @@
|
||||
/*
|
||||
* 自然语言表达 - 将【语言表达】转换成【参数调用】
|
||||
*/
|
||||
export default [
|
||||
{
|
||||
exp:/^(\S+?)(应该|得)?(称呼|叫|喊)(\S+?)(什么|啥)??$/,
|
||||
opt:match=>({
|
||||
text:match[4],
|
||||
target:match[1]
|
||||
})
|
||||
},
|
||||
{
|
||||
exp:/^(\S+?)(应该|得)?(如何|怎么)(称呼|叫|喊)(\S+?)??$/,
|
||||
opt:match=>({
|
||||
text:match[5],
|
||||
target:match[1]
|
||||
})
|
||||
},
|
||||
{
|
||||
exp:/^(\S+?)是(\S+?)的(谁|什么|什么亲戚|啥亲戚|什么人)??$/,
|
||||
opt:match=>({
|
||||
text:match[1],
|
||||
target:match[2],
|
||||
type:match[1].includes('的')?'default':'chain'
|
||||
})
|
||||
},
|
||||
{
|
||||
exp:/^(\S+?)(应该|得)?管(\S+?)叫(什么|啥)??$/,
|
||||
opt:match=>({
|
||||
text:match[3],
|
||||
target:match[1]
|
||||
})
|
||||
},
|
||||
{
|
||||
exp:/^(\S+?)(和|与)(\S+?)(之间)?是(什么|啥)关系??$/,
|
||||
opt:match=>({
|
||||
text:match[1],
|
||||
target:match[3],
|
||||
type:'pair'
|
||||
})
|
||||
},
|
||||
{
|
||||
exp:/^(\S+?)对于(\S+?)是(什么|啥)关系??$/,
|
||||
opt:match=>({
|
||||
text:match[1],
|
||||
target:match[2],
|
||||
type:'chain'
|
||||
})
|
||||
},
|
||||
{
|
||||
exp:/^(\S+?)(指的)?是(什么|啥)(意思|关系|亲戚关系|辈分|人)??$/,
|
||||
opt:match=>({
|
||||
text:match[1],
|
||||
type:'chain'
|
||||
})
|
||||
},
|
||||
{
|
||||
exp:/^(\S+?)(应该|得)?(称呼|叫|喊)(什么|啥)??$/,
|
||||
opt:match=>({
|
||||
text:match[1]
|
||||
})
|
||||
},
|
||||
{
|
||||
exp:/^(\S+?)(应该|得)?(如何|怎么)(称呼|叫|喊)??$/,
|
||||
opt:match=>({
|
||||
text:match[1]
|
||||
})
|
||||
},
|
||||
{
|
||||
exp:/^(\S+?)是(谁|什么|什么亲戚|啥亲戚|什么人|什么辈分|啥辈分)??$/,
|
||||
opt:match=>({
|
||||
text:match[1],
|
||||
type:match[1].includes('的')?'default':'chain'
|
||||
})
|
||||
},
|
||||
];
|
@ -1,9 +1,10 @@
|
||||
/*
|
||||
* 关系链缩写规则 - 将【关系链】缩减成最简表达
|
||||
*
|
||||
* 关系数据语法说明:
|
||||
* 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹
|
||||
* 【修饰符】 1:男性; 0:女性; &o:年长; &l:年幼; &\d+:排序 #:隔断; [a|b]:并列
|
||||
*/
|
||||
// 关系链缩写规则
|
||||
export default [
|
||||
/* 年龄 */
|
||||
{//有大有小,增加不确定性
|
93
src/module/rule/replace.js
Normal file
@ -0,0 +1,93 @@
|
||||
/*
|
||||
* 词义扩展 - 对称呼词义进行扩展
|
||||
*/
|
||||
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:['$1父','$1母']
|
||||
},
|
||||
{
|
||||
exp:/(.+)公婆$/,
|
||||
arr:['$1公','$1婆']
|
||||
},
|
||||
{
|
||||
exp:/祖$/,
|
||||
arr:['祖父']
|
||||
},
|
||||
{
|
||||
exp:/(新妇|媳)$/,
|
||||
arr:['媳妇']
|
||||
},
|
||||
{
|
||||
exp:/嫂$/,
|
||||
arr:['兄妇']
|
||||
},
|
||||
{
|
||||
exp:/女儿$/,
|
||||
arr:['女']
|
||||
},
|
||||
];
|
20
src/module/rule/similar.js
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* 同义词替换 - 对称呼中的近义词进行替换
|
||||
*/
|
||||
export default {
|
||||
'晜':'兄',
|
||||
'哥':'兄',
|
||||
'姐':'姊',
|
||||
'侄':'姪',
|
||||
'婿':'壻',
|
||||
'嬷':'嫲',
|
||||
'祖父':'王父',
|
||||
'祖母':'王母',
|
||||
'孙女婿':'孙婿',
|
||||
'甥女婿':'甥婿',
|
||||
'侄女婿':'侄婿',
|
||||
'孙媳妇':'孙妇',
|
||||
'甥媳妇':'甥妇',
|
||||
'侄媳妇':'侄妇',
|
||||
'弟媳妇':'弟妇',
|
||||
};
|
284
src/module/selector.js
Normal file
@ -0,0 +1,284 @@
|
||||
/*
|
||||
* 选择器 - 非唯一性关系链,将【中文表述】转换为【关系链】
|
||||
*/
|
||||
import _filter from './rule/filter.js';
|
||||
import _replace from './rule/replace.js';
|
||||
import _similar from './rule/similar.js';
|
||||
|
||||
import {zh2number} from './unit.js';
|
||||
import {reverseId,filterId,getGenById} from './id.js';
|
||||
import {cacheData} from './cache.js';
|
||||
|
||||
// 获得最简
|
||||
const getOptimal = function(options){
|
||||
let {
|
||||
from,
|
||||
to,
|
||||
sex
|
||||
} = options;
|
||||
let from_chain = from.split(',');
|
||||
let to_chain = to.split(',');
|
||||
for(let i=0;i<from_chain.length&&i<to_chain.length;i++){
|
||||
if(from_chain[i]==to_chain[i]){
|
||||
from = from_chain.slice(i+1).join(',');
|
||||
to = to_chain.slice(i+1).join(',');
|
||||
sex = from_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
|
||||
continue;
|
||||
}else{
|
||||
if(getGenById(from_chain[i])==getGenById(to_chain[i])&&from_chain[i].match(/^[xol][bs]|^[sd]/)&&to_chain[i].match(/^[xol][bs]|^[sd]/)){
|
||||
let form_type = from_chain[i].replace(/&([ol\d]+)/,'').replace(/^[xol]([bs])/,'$1');
|
||||
let to_type = to_chain[i].replace(/&([ol\d]+)/,'').replace(/^[xol]([bs])/,'$1');
|
||||
if(form_type!=to_type){
|
||||
break;
|
||||
}
|
||||
let from_attr = from_chain[i].match(/&([ol\d]+)/)?.[1]||from_chain[i].match(/([ol])[bs]/)?.[1]||'';
|
||||
let to_attr = to_chain[i].match(/&([ol\d]+)/)?.[1]||to_chain[i].match(/([ol])[bs]/)?.[1]||'';
|
||||
if(from_attr&&to_attr){
|
||||
if(!isNaN(from_attr)&&!isNaN(to_attr)){
|
||||
if(+from_attr>+to_attr){
|
||||
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'lb').replace(/^[xol]s|^d/,'ls');
|
||||
}else if(+from_attr<+to_attr){
|
||||
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'ob').replace(/^[xol]s|^d/,'os');
|
||||
}
|
||||
}else if(!isNaN(from_attr)&&to_attr=='o'||from_attr=='l'&&!isNaN(to_attr)){
|
||||
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'lb').replace(/^[xol]s|^d/,'ls');
|
||||
}else if(!isNaN(from_attr)&&to_attr=='l'||from_attr=='o'&&!isNaN(to_attr)){
|
||||
from_chain[i] = from_chain[i].replace(/^[xol]b|^s/,'ob').replace(/^[xol]s|^d/,'os');
|
||||
}
|
||||
from = from_chain.slice(i).join(',');
|
||||
to = to_chain.slice(i+1).join(',');
|
||||
sex = to_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
|
||||
}else if(options['optimal']){
|
||||
from_attr = from_chain[i].match(/([xol])[bs]/)?.[1]||'';
|
||||
to_attr = to_chain[i].match(/([xol])[bs]/)?.[1]||'';
|
||||
if(from_attr=='x'||to_attr=='x'){
|
||||
from = from_chain.slice(i+1).join(',');
|
||||
to = to_chain.slice(i+1).join(',');
|
||||
sex = from_chain[i].match(/^([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?/)?1:0;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return {
|
||||
from,
|
||||
to,
|
||||
sex
|
||||
};
|
||||
};
|
||||
|
||||
// 中文获取选择器
|
||||
export function getSelectors(str){
|
||||
str = str.replace(/之/g,'的').replace(/吾之?(.+)/,'$1').replace(/我的?(.+)/,'$1');
|
||||
// 惯用口语标准化
|
||||
// str = str.replace(/(?<![娘婆岳亲])家的?(?=(孩子|儿子|女儿))/,'的');
|
||||
if(str.match(/[^娘婆岳亲]家的?(孩子|儿子|女儿)/)){
|
||||
str = str.replace(/家的?/,'的');
|
||||
}
|
||||
str = str.replace(/(舅|姑)+(爸|父|丈|妈|母)?家的?(哥|姐|弟|妹)+/,'$1表$3').replace(/(舅|姑)+(爸|父|丈|妈|母)?家的?/,'$1表');
|
||||
str = str.replace(/(伯|叔)+(父|母)?家的?(哥|姐|弟|妹)+/,'堂$3').replace(/(伯|叔)+(父|母)?家的?/,'堂');
|
||||
str = str.replace(/姨+(爸|父|丈|妈|母)?家的?(哥|姐|弟|妹)+/,'姨$2').replace(/姨+(爸|父|丈|妈|母)?家的?/,'姨');
|
||||
|
||||
const lists = str.split('的');
|
||||
let result = [];
|
||||
let isMatch = true;
|
||||
while(lists.length){
|
||||
const name = lists.shift(); //当前匹配词
|
||||
let items = []; //当前匹配词可能性
|
||||
const keywords = [name];
|
||||
let getList = function(name){
|
||||
// 词义扩展
|
||||
_replace.forEach(item => {
|
||||
item['arr'].forEach(word =>{
|
||||
const name1 = name.replace(item['exp'],word);
|
||||
if(name1!=name){
|
||||
keywords.push(name1);
|
||||
getList(name1);
|
||||
}
|
||||
});
|
||||
});
|
||||
// 同义词替换
|
||||
for(const word in _similar){
|
||||
const name1 = name.replace(word,_similar[word]);
|
||||
const name2 = name.replace(_similar[word],word);
|
||||
if(name1!=name){
|
||||
keywords.push(name1);
|
||||
}
|
||||
if(name2!=name){
|
||||
keywords.push(name2);
|
||||
}
|
||||
}
|
||||
};
|
||||
getList(name);
|
||||
// 通过关键词找关系
|
||||
const items_map = [[],[],[]];
|
||||
keywords.forEach(function(name){
|
||||
name = name.replace(/^[尕幺细满碎晚末尾幼]/,'小');
|
||||
const match = name.match(/^[大|小]|^[一|二|三|四|五|六|七|八|九|十]+/);
|
||||
if(match){ // 匹配排序
|
||||
const x_name = name.replace(match[0],'几');
|
||||
const r_name = name.replace(match[0],'');
|
||||
const num = zh2number(match[0]);
|
||||
[x_name,r_name,name].forEach((name, index) => {
|
||||
const ids = cacheData[name];
|
||||
if(ids&&ids.length){
|
||||
ids.forEach(i => {
|
||||
const id = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num);
|
||||
if(!i.match(/^[mf,]+$/)&&!name.match(/^[从世]/)){ // 直系祖辈不参与排序
|
||||
items_map[index].push(id);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
items = items.concat(cacheData[name]||[]);
|
||||
});
|
||||
// console.log('[keywords]',keywords);
|
||||
// 如找不到结果,再是否存在称呼的排行问题(不直接判断,因存在"大舅""三从父兄""三世祖"这样特俗含义的情况)
|
||||
items_map.forEach(function(items_x){
|
||||
if(!items.length){
|
||||
items = items_x;
|
||||
}
|
||||
});
|
||||
// 完全匹配不到结果
|
||||
if(!items.length){
|
||||
isMatch = false;
|
||||
}
|
||||
const res = [];
|
||||
if(!result.length){
|
||||
result = [''];
|
||||
}
|
||||
result.forEach(function(a){
|
||||
items.forEach(function(b){
|
||||
res.push(a+(b?','+b:''));
|
||||
});
|
||||
});
|
||||
result = res;
|
||||
}
|
||||
return isMatch?filterId(result):[];
|
||||
};
|
||||
|
||||
// 合并选择器,查找两个对象之间的关系
|
||||
export function mergeSelector(param){
|
||||
let {
|
||||
from:from_selector,
|
||||
to:to_selector,
|
||||
sex:my_sex
|
||||
} = param;
|
||||
if(my_sex<0){
|
||||
const fromSex = from_selector.match(/^,[w1]/) ? 1 : from_selector.match(/^,[h0]/) ? 0 : -1;
|
||||
const toSex = to_selector.match(/^,[w1]/) ? 1 : to_selector.match(/^,[h0]/) ? 0 : -1;
|
||||
if (fromSex === -1 && toSex > -1) {
|
||||
my_sex = toSex;
|
||||
} else if (fromSex > -1 && toSex === -1) {
|
||||
my_sex = fromSex;
|
||||
} else if (fromSex === toSex) {
|
||||
my_sex = fromSex;
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
let from_ids = selector2id(param['from'],my_sex);
|
||||
let to_ids = selector2id(param['to'],my_sex);
|
||||
if(!from_ids.length||!to_ids.length){
|
||||
return [];
|
||||
}
|
||||
const result = [];
|
||||
from_ids.forEach(from => {
|
||||
to_ids.forEach(to => {
|
||||
let sex = my_sex;
|
||||
let selector = ','+to;
|
||||
if(selector.match(/,([fhs1](&[ol\d]+)?|[olx]b)(&[ol\d]+)?$/)){
|
||||
sex = 1;
|
||||
}
|
||||
if(selector.match(/,([mwd0](&[ol\d]+)?|[olx]s)(&[ol\d]+)?$/)){
|
||||
sex = 0;
|
||||
}
|
||||
if(from&&to){
|
||||
let isOptimal = param.optimal;
|
||||
if(from.match(/&\d+/)||to.match(/&\d+/)){
|
||||
isOptimal = true;
|
||||
}
|
||||
if(isOptimal){
|
||||
({
|
||||
from,
|
||||
to,
|
||||
sex:my_sex
|
||||
} = getOptimal({
|
||||
from,
|
||||
to,
|
||||
sex:my_sex,
|
||||
optimal:param.optimal
|
||||
}));
|
||||
}
|
||||
}
|
||||
let to_rids = to?reverseId(to,my_sex):[''];
|
||||
to_rids.forEach(function(to_r){
|
||||
let selector = (to_r?','+to_r:'')+(from?','+from:'');
|
||||
result.push({
|
||||
selector,
|
||||
sex
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
return result;
|
||||
};
|
||||
|
||||
// 扩展选择器
|
||||
export function expandSelector(selector){
|
||||
const result = [];
|
||||
const hash = {};
|
||||
const getSelector = function(selector){
|
||||
if(!hash[selector]){
|
||||
hash[selector] = true;
|
||||
let s='';
|
||||
do{
|
||||
s = selector;
|
||||
for(const item of _filter){
|
||||
// console.log('[filter]',item['exp'],selector);
|
||||
selector = selector.replace(item['exp'],item['str']);
|
||||
if(selector.includes('#')){
|
||||
selector.split('#').forEach(getSelector);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}while(s!=selector);
|
||||
if(selector.match(/,[mwd0](&[ol\d+])?,w|,[hfs1](&[ol\d]+)?,h/)){ //同志关系去除
|
||||
return false;
|
||||
}
|
||||
result.push(selector);
|
||||
}
|
||||
};
|
||||
getSelector(selector);
|
||||
return result;
|
||||
};
|
||||
|
||||
// 选择器转ID
|
||||
export function selector2id(selector,sex){
|
||||
if(!selector.match(/^,/)){
|
||||
selector = ','+selector;
|
||||
}
|
||||
//性别判断
|
||||
if(sex<0){
|
||||
if(selector.match(/^,[w1]/)){
|
||||
sex = 1;
|
||||
}else if(selector.match(/^,[h0]/)){
|
||||
sex = 0;
|
||||
}
|
||||
}else if(sex==1&&selector.match(/^,[h0]/)){
|
||||
return [];
|
||||
}else if(sex==0&&selector.match(/^,[w1]/)){
|
||||
return [];
|
||||
}
|
||||
if(sex>-1&&!selector.includes(',1')&&!selector.includes(',0')){
|
||||
selector = ','+sex+selector;
|
||||
}
|
||||
if(selector.match(/,[mwd0](&[ol\d]+)?,w|,[hfs1](&[ol\d]+)?,h/)){ //同志关系去除
|
||||
return [];
|
||||
}
|
||||
const result = expandSelector(selector).map(selector => selector.replace(/,[01]/, '').substr(1)); //去前面逗号和性别信息
|
||||
return filterId(result);
|
||||
};
|
32
src/module/unit.js
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 数值转换
|
||||
*/
|
||||
|
||||
const textAttr = ['','一','二','三','四','五','六','七','八','九','十'];
|
||||
|
||||
// 中文数字转阿拉伯数字
|
||||
export function zh2number(text){
|
||||
let num = 0;
|
||||
const map = {'大':1,'小':99};
|
||||
if(map[text]){
|
||||
num = map[text];
|
||||
}else{
|
||||
let [unit,dec=0] = text.replace(/^十/,'一十').split('十').map(word=> textAttr.indexOf(word)).reverse();
|
||||
num = dec*10+unit;
|
||||
}
|
||||
return num;
|
||||
};
|
||||
|
||||
// 阿拉伯数字转中文数字
|
||||
export function number2zh(num){
|
||||
let text = '';
|
||||
const map = {1:'大',99:'小'};
|
||||
if(map[num]){
|
||||
text = map[num];
|
||||
}else{
|
||||
let dec = ~~(num/10);
|
||||
let unit = num%10;
|
||||
text = (dec?(textAttr[dec]+'十').replace('一十','十'):'')+textAttr[unit];
|
||||
}
|
||||
return text;
|
||||
};
|
7
src/relationship-mode.js
Normal file
@ -0,0 +1,7 @@
|
||||
import guangdong from './locale/guangdong.js';
|
||||
import north from './locale/north.js';
|
||||
|
||||
export default {
|
||||
guangdong,
|
||||
north
|
||||
};
|
@ -1,20 +1,14 @@
|
||||
import {
|
||||
unique,
|
||||
getSelectors,
|
||||
mergeSelector,
|
||||
selector2id,
|
||||
reverseId,
|
||||
getItemsById,
|
||||
getChainById,
|
||||
getPairsByIds,
|
||||
setMode,
|
||||
getDataByMode
|
||||
} from './method';
|
||||
var _data = getDataByMode(); // 最终数据
|
||||
import {getOptions} from './module/options.js';
|
||||
import {getSelectors,mergeSelector,selector2id} from './module/selector.js';
|
||||
import {reverseId,getItemsById,getChainById,getPairsById} from './module/id.js';
|
||||
import {setModeData,getModeData,modeData} from './module/mode.js';
|
||||
|
||||
// 对外方法
|
||||
var relationship = function (parameter){
|
||||
var options = Object.assign({
|
||||
let relationship = function (parameter) {
|
||||
if(typeof parameter =='string'){
|
||||
parameter = getOptions(parameter);
|
||||
}
|
||||
let options = Object.assign({
|
||||
text: '', // 目标对象:目标对象的称谓汉字表达,称谓间用‘的’字分隔
|
||||
target: '', // 相对对象:相对对象的称谓汉字表达,称谓间用‘的’字分隔,空表示自己
|
||||
sex: -1, // 本人性别:0表示女性,1表示男性
|
||||
@ -23,30 +17,25 @@ var relationship = function (parameter){
|
||||
mode: 'default', // 模式选择:使用setMode方法定制不同地区模式,在此选择自定义模式
|
||||
optimal: false // 最短关系:计算两者之间的最短关系
|
||||
}, parameter);
|
||||
_data = getDataByMode(options.mode);
|
||||
var from_selectors = getSelectors(options.text);
|
||||
var to_selectors = getSelectors(options.target);
|
||||
if(!to_selectors.length){
|
||||
to_selectors = [''];
|
||||
// 切换模式
|
||||
getModeData(options.mode);
|
||||
let fromSelectors = getSelectors(options.text);
|
||||
let toSelectors = getSelectors(options.target);
|
||||
if (!toSelectors.length) {
|
||||
toSelectors = [''];
|
||||
}
|
||||
var result = []; //匹配结果
|
||||
// console.log('[selectors]',from_selectors,to_selectors);
|
||||
from_selectors.forEach(function(from_selector){
|
||||
to_selectors.forEach(function(to_selector){
|
||||
var list = mergeSelector({
|
||||
from:from_selector,
|
||||
to:to_selector,
|
||||
const result = fromSelectors.flatMap(fromSelector => {
|
||||
return toSelectors.flatMap(toSelector => {
|
||||
return mergeSelector({
|
||||
from: fromSelector,
|
||||
to: toSelector,
|
||||
sex: options.sex,
|
||||
optimal: options.optimal
|
||||
});
|
||||
list.forEach(function(data){
|
||||
// console.log('[data]',from_selector,to_selector,data);
|
||||
var ids = data?selector2id(data['selector'],data['sex']):null;
|
||||
// console.log('[ids]',data['selector'],data['sex'],ids);
|
||||
if(ids){
|
||||
ids.forEach(function(id){
|
||||
var temps = [id];
|
||||
var sex = data['sex'];
|
||||
}).flatMap(data => {
|
||||
const ids = data ? selector2id(data['selector'], data['sex']) : [];
|
||||
return ids.flatMap(id => {
|
||||
let temps = [id];
|
||||
let sex = data['sex'];
|
||||
if (options.reverse) {
|
||||
temps = reverseId(id,sex);
|
||||
if(id.match(/([fhs1](&[ol\d]+)?|[olx]b)$/)){
|
||||
@ -55,51 +44,33 @@ var relationship = function (parameter){
|
||||
sex = 0;
|
||||
}
|
||||
}
|
||||
if(options.type=='chain'){
|
||||
temps.forEach(function(id){
|
||||
var item = getChainById(id);
|
||||
if(data['sex']>-1&&_data[data['sex']+','+id]){
|
||||
if(data['sex']==0){
|
||||
item = '(女性)'+item;
|
||||
}else if(data['sex']==1){
|
||||
item = '(男性)'+item;
|
||||
}
|
||||
}
|
||||
if(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);
|
||||
}
|
||||
});
|
||||
if (options.type === 'chain') {
|
||||
return temps.map(id => getChainById(id, sex)).filter(item => item);
|
||||
} else if (options.type === 'pair') {
|
||||
const reversedTemps = reverseId(id, data['sex']);
|
||||
return reversedTemps.flatMap(rId => getPairsById(id, rId));
|
||||
} else {
|
||||
temps.forEach(function(id){
|
||||
var items = getItemsById(id);
|
||||
return temps.flatMap(id => {
|
||||
let items = getItemsById(id);
|
||||
if (!items.length) {
|
||||
items = getItemsById(sex + ',' + id);
|
||||
}
|
||||
if(items.length){
|
||||
result = result.concat(items);
|
||||
}
|
||||
return items;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
return unique(result);
|
||||
|
||||
return [...new Set(result)];
|
||||
};
|
||||
|
||||
// 获取数据表
|
||||
relationship.data = _data;
|
||||
relationship.data = modeData;
|
||||
// 获取数据量
|
||||
relationship.dataCount = Object.keys(_data).length;
|
||||
relationship.dataCount = Object.keys(modeData).length;
|
||||
// 设置语言模式
|
||||
relationship.setMode = setMode;
|
||||
relationship.setMode = setModeData;
|
||||
|
||||
export default relationship;
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 25 KiB |
@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1440px" height="448px" viewBox="0 0 1440 448" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 59.1 (86144) - https://sketch.com -->
|
||||
<title>编组 5备份</title>
|
||||
<title>Background</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<linearGradient x1="-5.68700053%" y1="45.5298642%" x2="84.7892757%" y2="53.934985%" id="linearGradient-1">
|
||||
@ -24,14 +23,14 @@
|
||||
<rect id="path-7" x="0" y="259" width="1440" height="189"></rect>
|
||||
<linearGradient x1="54.7550093%" y1="16.6478641%" x2="54.7550093%" y2="112.331979%" id="linearGradient-8">
|
||||
<stop stop-color="#FFFFFF" stop-opacity="0" offset="0%"></stop>
|
||||
<stop stop-color="#D2ECFF" stop-opacity="0.225387893" offset="100%"></stop>
|
||||
<stop stop-color="#84c1ec" stop-opacity="0.225387893" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="导航方案备份">
|
||||
<g id="编组-5备份">
|
||||
<g id="路径备份">
|
||||
<g id="蒙版">
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<g transform="translate(0.000000, 0.000000)">
|
||||
<mask id="mask-4" fill="white">
|
||||
<use xlink:href="#path-3"></use>
|
||||
@ -40,11 +39,11 @@
|
||||
<use fill="url(#linearGradient-1)" xlink:href="#path-3"></use>
|
||||
<use fill="url(#radialGradient-2)" xlink:href="#path-3"></use>
|
||||
</g>
|
||||
<g id="矩形备份-32" mask="url(#mask-4)">
|
||||
<g mask="url(#mask-4)">
|
||||
<use fill="url(#linearGradient-5)" xlink:href="#path-7"></use>
|
||||
<use fill="url(#linearGradient-6)" xlink:href="#path-7"></use>
|
||||
</g>
|
||||
<rect id="矩形" fill="url(#linearGradient-8)" mask="url(#mask-4)" x="0" y="166" width="1440" height="282"></rect>
|
||||
<rect fill="url(#linearGradient-8)" mask="url(#mask-4)" x="0" y="166" width="1440" height="282"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.1 KiB |
1
static/image/draw/1.svg
Normal file
After Width: | Height: | Size: 11 KiB |
1
static/image/draw/2.svg
Normal file
After Width: | Height: | Size: 7.6 KiB |
1
static/image/draw/3.svg
Normal file
After Width: | Height: | Size: 19 KiB |
1
static/image/draw/4.svg
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
static/image/icon-gotop.png
Normal file
After Width: | Height: | Size: 881 B |
BIN
static/image/icon-wechat.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
static/image/qrcode-alipay.jpg
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
static/image/qrcode-wechat.jpg
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
static/image/qrcode.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
static/image/scan.png
Normal file
After Width: | Height: | Size: 489 B |
1
static/image/summary-bg.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' width='25' height='25' viewBox='0 0 25 25'><circle cx='1.5' cy='1.5' r='2' fill='#DCE2E6' fill-rule='evenodd'/></svg>
|
After Width: | Height: | Size: 158 B |
46
static/script/index.js
Normal file
@ -0,0 +1,46 @@
|
||||
// 头部滚动
|
||||
(function(){
|
||||
let $header = document.querySelector('.mod-head');
|
||||
document.querySelector('.scroll-container').addEventListener('scroll',function(){
|
||||
let scrollTop = this.scrollTop;
|
||||
let ratio = Math.min(scrollTop/1000,1);
|
||||
$header.style.background = 'rgba(255,255,255,'+(ratio*0.8)+')';
|
||||
$header.style.boxShadow = '1px 1px 6px rgba(0,0,0,'+(ratio*0.1)+')';
|
||||
});
|
||||
})();
|
||||
|
||||
// 特征选项卡
|
||||
(function(){
|
||||
let $mod_feature = document.querySelector('.mod-feature');
|
||||
let $nav = $mod_feature.querySelectorAll('.nav li');
|
||||
let $panels = $mod_feature.querySelectorAll('.panels .panel');
|
||||
let togglePanel = function(index = 0){
|
||||
$nav.forEach(function($li){
|
||||
$li.classList.remove('active');
|
||||
});
|
||||
$nav[index].classList.add('active');
|
||||
$panels.forEach(function($panel){
|
||||
$panel.classList.remove('active');
|
||||
});
|
||||
$panels[index].classList.add('active');
|
||||
};
|
||||
$nav.forEach(function($item,index){
|
||||
$item.addEventListener('click',function(){
|
||||
togglePanel(index);
|
||||
});
|
||||
});
|
||||
togglePanel(0);
|
||||
})();
|
||||
|
||||
// 底部滚动
|
||||
(function(){
|
||||
let $gotop = document.querySelector('.mod-fixedbar .gotop');
|
||||
let $container = document.querySelector('.scroll-container');
|
||||
$gotop.addEventListener('click',function(){
|
||||
$container.scrollTo({
|
||||
left:0,
|
||||
top:0,
|
||||
behavior:'smooth'
|
||||
});
|
||||
});
|
||||
})();
|
@ -2,42 +2,79 @@
|
||||
var test = require('tape');
|
||||
var relationship = require('..');
|
||||
|
||||
test('relationship.js show to be tested', function (t) {
|
||||
// console.log('[test]',relationship({text:'堂哥',target:'叔叔',type:'pair',optimal:true}));
|
||||
test('[call]', function (t) {
|
||||
// console.log('[test]',relationship({text:'爸爸的妈妈的姐姐的儿子'}));
|
||||
|
||||
t.deepEqual(relationship({text:'儿子的爸爸的妈妈',sex:1}),['妈妈']);
|
||||
t.deepEqual(relationship({text:'爸爸的哥哥的弟弟的儿子'}),['堂哥','堂弟','哥哥','弟弟','自己']);
|
||||
t.deepEqual(relationship({text:'爸爸的妹妹的女儿的老公'}),['姑表姐夫','姑表妹夫']);
|
||||
t.deepEqual(relationship({text:'表姐的哥哥',sex:1}),['姑表哥','舅表哥']);
|
||||
t.deepEqual(relationship({text:'表姐的妹妹',sex:1}),['姑表姐','姑表妹','舅表姐','舅表妹']);
|
||||
t.deepEqual(relationship({text:'弟弟的表哥',sex:1}),['姑表哥','姑表弟','舅表哥','舅表弟']);
|
||||
t.deepEqual(relationship({text:'姐姐的老公的姐姐的老公'}),['姊妹姻姊妹壻']);
|
||||
t.deepEqual(relationship({text:'哥哥的弟弟的爸爸的儿子',sex:1}),['哥哥','弟弟','自己']);
|
||||
t.deepEqual(relationship({text:'爱人',sex:1}),['老婆']);
|
||||
t.deepEqual(relationship({text:'爱人的爱人',sex:1}),['自己']);
|
||||
t.deepEqual(relationship({text:'老婆的爱人',sex:1}),['自己']);
|
||||
t.deepEqual(relationship({text:'老婆的老公',sex:1}),['自己']);
|
||||
t.deepEqual(relationship({text:'老婆的外孙的姥爷',sex:1}),['自己']);
|
||||
t.deepEqual(relationship({text:'表姐的哥哥',sex:1}),['姑表哥','舅表哥']);
|
||||
t.deepEqual(relationship({text:'表姐的妹妹',sex:1}),['姑表姐','姑表妹','舅表姐','舅表妹']);
|
||||
t.deepEqual(relationship({text:'弟弟的表哥',sex:1}),['姑表哥','姑表弟','舅表哥','舅表弟']);
|
||||
t.deepEqual(relationship({text:'老公的老婆的儿子的爸爸',sex:0}),['老公']);
|
||||
t.deepEqual(relationship({text:'哥哥的弟弟的爸爸的儿子',sex:1}),['哥哥','弟弟','自己']);
|
||||
t.deepEqual(relationship({text:'爸爸的舅舅',sex:0,reverse:true}),['甥孙女']);
|
||||
t.deepEqual(relationship({text:'舅爷爷',type:'chain'}),['爸爸的妈妈的兄弟']);
|
||||
t.deepEqual(relationship({text:'堂兄弟的孩子',sex:1}),['堂侄','堂侄女']);
|
||||
t.deepEqual(relationship({text:'儿子的爸爸的妈妈',sex:1}),['妈妈']);
|
||||
t.deepEqual(relationship({text:'岳母的配偶的孩子的爸爸'}),['岳父']);
|
||||
t.deepEqual(relationship({text:'爸爸的妈妈的姐姐的儿子'}),['姨伯父','姨叔父']);
|
||||
t.end();
|
||||
});
|
||||
test('[target]', function (t) {
|
||||
t.deepEqual(relationship({text:'我',target:'爸爸'}),['儿子','女儿']);
|
||||
t.deepEqual(relationship({text:'老公的父母',target:'孩子'}),['爷爷','奶奶']);
|
||||
t.deepEqual(relationship({text:'爱人',target:'娘家侄子'}),['姑丈']);
|
||||
t.end();
|
||||
});
|
||||
test('[reverse]', function (t) {
|
||||
t.deepEqual(relationship({text:'爸爸的舅舅',sex:0,reverse:true}),['甥孙女']);
|
||||
t.deepEqual(relationship({text:'岳母',target:'女儿',reverse:true}),['外孙女']);
|
||||
t.deepEqual(relationship({text:'姑妈',target:'舅妈',reverse:true}),['兄弟眷兄弟妇']);
|
||||
t.deepEqual(relationship({text:'舅妈',target:'女儿',reverse:true}),['姑甥孙女','姑甥外孙女']);
|
||||
t.deepEqual(relationship({text:'老公的父母',target:'孩子'}),['爷爷','奶奶']);
|
||||
t.deepEqual(relationship({text:'爸爸的哥哥的弟弟的儿子'}),['堂哥','堂弟','哥哥','弟弟','自己']);
|
||||
t.deepEqual(relationship({text:'外婆',target:'女婿',reverse:true}),['外曾孙女婿','外曾外孙女婿']);
|
||||
t.deepEqual(relationship({text:'我',target:'爸爸'}),['儿子','女儿']);
|
||||
t.deepEqual(relationship({text:'爱人',target:'娘家侄子'}),['姑丈']);
|
||||
t.deepEqual(relationship({text:'岳母的配偶的孩子的爸爸'}),['岳父']);
|
||||
t.deepEqual(relationship({text:'舅妈',target:'外婆',type:'pair'}),['婆媳']);
|
||||
t.deepEqual(relationship({text:'妈妈的二哥'}),['二舅']);
|
||||
t.deepEqual(relationship({text:'爸爸的二哥'}),['二伯']);
|
||||
t.deepEqual(relationship({text:'二舅妈',target:'二舅',type:'pair'}),['夫妻']);
|
||||
t.deepEqual(relationship({text:'二舅妈',target:'大舅',type:'pair'}),['叔嫂']);
|
||||
t.deepEqual(relationship({text:'舅妈',target:'二舅',type:'pair'}),['叔嫂','夫妻']);
|
||||
t.deepEqual(relationship({text:'二舅妈',target:'三舅'}),['二嫂']);
|
||||
t.deepEqual(relationship({text:'爸爸的二爸'}),['二爷爷']);
|
||||
t.deepEqual(relationship({text:'大舅',target:'二舅的儿子'}),['大伯']);
|
||||
t.deepEqual(relationship({text:'堂哥',target:'叔叔',type:'pair'}),['叔侄','父子']);
|
||||
t.deepEqual(relationship({text:'堂哥',target:'叔叔',type:'pair',optimal:true}),['父子']);
|
||||
t.end();
|
||||
});
|
||||
test('[filter]', function (t) {
|
||||
t.deepEqual(relationship({text:'内侄'}),['舅侄','舅侄女']);
|
||||
t.end();
|
||||
});
|
||||
test('[type:chain]', function (t) {
|
||||
t.deepEqual(relationship({text:'舅爷爷',type:'chain'}),['爸爸的妈妈的兄弟']);
|
||||
t.deepEqual(relationship({text:'妻儿',type:'chain'}),['老婆','儿子','女儿']);
|
||||
t.deepEqual(relationship({text:'父母',target:'老公',type:'chain'}),['老婆的爸爸','老婆的妈妈']);
|
||||
t.end();
|
||||
});
|
||||
test('[type:pair]', function (t) {
|
||||
t.deepEqual(relationship({text:'舅妈',target:'哥哥',type:'pair'}),['舅甥']);
|
||||
t.deepEqual(relationship({text:'舅妈',target:'外婆',type:'pair'}),['婆媳']);
|
||||
t.deepEqual(relationship({text:'舅妈',target:'二舅',type:'pair'}),['伯媳','叔嫂','夫妻']);
|
||||
t.deepEqual(relationship({text:'堂哥',target:'叔叔',type:'pair'}),['伯侄', '叔侄', '父子']);
|
||||
t.end();
|
||||
});
|
||||
test('[age]', function (t) {
|
||||
t.deepEqual(relationship({text:'妈妈的二哥'}),['二舅']);
|
||||
t.deepEqual(relationship({text:'爸爸的二哥'}),['二伯']);
|
||||
t.deepEqual(relationship({text:'二舅妈',target:'三舅'}),['二嫂']);
|
||||
t.deepEqual(relationship({text:'爸爸的二爸'}),['二爷爷']);
|
||||
t.deepEqual(relationship({text:'姑姑',target:'叔叔',optimal:true}),['姐姐','妹妹']);
|
||||
t.deepEqual(relationship({text:'大舅',target:'二舅的儿子'}),['伯父']);
|
||||
t.deepEqual(relationship({text:'二舅妈',target:'二舅',type:'pair'}),['夫妻']);
|
||||
t.deepEqual(relationship({text:'二舅妈',target:'大舅',type:'pair'}),['伯媳']);
|
||||
t.end();
|
||||
});
|
||||
test('[expression]', function (t) {
|
||||
t.deepEqual(relationship('外婆和奶奶之间是什么关系?'),['儿女亲家']);
|
||||
t.deepEqual(relationship('妈妈应该如何称呼姑姑'),['姑子']);
|
||||
t.deepEqual(relationship('姑奶奶是什么关系'),['爸爸的爸爸的姐妹']);
|
||||
t.deepEqual(relationship('姑奶奶和爸爸是什么关系'),['姑侄']);
|
||||
t.deepEqual(relationship('我应该叫外婆的哥哥什么?'),['舅外公']);
|
||||
t.deepEqual(relationship('七舅姥爷应该叫我什么?'),['甥外孙','甥外孙女']);
|
||||
t.deepEqual(relationship('舅公是什么关系?'),['爸爸的妈妈的兄弟', '妈妈的妈妈的兄弟', '老公的妈妈的兄弟']);
|
||||
t.deepEqual(relationship('舅妈如何称呼外婆?'),['婆婆']);
|
||||
t.deepEqual(relationship('外婆和奶奶之间是什么关系?'),['儿女亲家']);
|
||||
t.end();
|
||||
});
|
||||
|
5
vercel.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"github": {
|
||||
"silent": true
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
25
vue/assets/index-BiHcNiMB.js
Normal file
1
vue/assets/index-Bqz9Bu5y.css
Normal file
@ -10,14 +10,14 @@
|
||||
<meta http-equiv="Cache-Control" content="no-transform" />
|
||||
<meta name="format-detection" content="telephone=no"/>
|
||||
<meta name="applicable-device" content="pc,mobile"/>
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black"/>
|
||||
<link rel="icon" href="./assets/favicon.71a59e4c.ico">
|
||||
<meta name="mobile-web-app-capable" content="yes"/>
|
||||
<meta name="mobile-web-app-status-bar-style" content="black"/>
|
||||
<link rel="icon" href="/relationship/vue/assets/favicon-CcRSb4Ef.ico">
|
||||
<title>亲戚计算器手机版 亲戚称呼计算器APP</title>
|
||||
<meta name="keywords" content="家庭称谓,亲戚称呼,亲戚称谓,亲戚叫法,亲戚关系计算器,亲戚计算器,称呼计算器,親戚關係稱呼,亲戚关系大全,叫什么,什么关系">
|
||||
<meta name="description" content="中国亲戚关系计算器手机版,走亲访友,逢年过节必备神器。它避免了叫错、不会叫亲戚的尴尬,人人必备家庭教育工具。">
|
||||
<script type="module" crossorigin src="./assets/index.05002aa2.js"></script>
|
||||
<link rel="stylesheet" href="./assets/index.e63eeab7.css">
|
||||
<script type="module" crossorigin src="/relationship/vue/assets/index-BiHcNiMB.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/relationship/vue/assets/index-Bqz9Bu5y.css">
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
@ -34,7 +34,6 @@
|
||||
</script>
|
||||
<div id="app"></div>
|
||||
<script type="text/javascript" src="https://passer-by.com/relationship/dist/relationship.min.js"></script>
|
||||
|
||||
<script>
|
||||
var _hmt = _hmt || [];
|
||||
(function() {
|
||||
|
@ -1,41 +0,0 @@
|
||||
var path = require('path');
|
||||
var webpack = require('webpack');
|
||||
const TerserJSPlugin = require('terser-webpack-plugin');
|
||||
const pkg = require('./package');
|
||||
|
||||
var repository = pkg.repository.url.replace(/(.+)(:\/\/.+)\.git$/,'https$2');
|
||||
var now = new Date();
|
||||
var date = (new Date(now.getTime()-now.getTimezoneOffset()*60000)).toISOString().substr(0,10);
|
||||
var copyright = `${pkg.name} v${pkg.version}
|
||||
${pkg.description}
|
||||
${pkg.homepage}
|
||||
|
||||
Copyright (c) 2016-present, ${pkg.author}
|
||||
|
||||
Released under the ${pkg.license} License
|
||||
${repository}
|
||||
|
||||
Create on: ${date}`;
|
||||
|
||||
module.exports = {
|
||||
mode: 'production',
|
||||
entry: './src/relationship.js',
|
||||
output: {
|
||||
path: path.resolve(__dirname,'dist'),
|
||||
filename: 'relationship.min.js',
|
||||
globalObject: 'this',
|
||||
library: 'relationship',
|
||||
libraryTarget: 'umd',
|
||||
libraryExport:'default'
|
||||
},
|
||||
plugins: [
|
||||
new webpack.BannerPlugin(copyright)
|
||||
],
|
||||
optimization: {
|
||||
minimizer: [
|
||||
new TerserJSPlugin({
|
||||
extractComments: false
|
||||
}),
|
||||
]
|
||||
}
|
||||
};
|
334
zh-HK.html
@ -9,6 +9,7 @@
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="Cache-Control" content="no-transform" />
|
||||
<meta name="format-detection" content="telephone=no"/>
|
||||
<link rel="shortcut icon" href="favicon.ico">
|
||||
<title>中國親戚關系計算器 親戚稱謂計算器 親戚稱呼大全</title>
|
||||
<meta name="keywords" content="家庭稱謂,親戚稱呼,親戚稱謂,親戚叫法,親屬關系,親屬稱謂,關系計算器,親戚計算器,稱呼計算器,稱謂計算器,輩分計算器,親戚關系大全,親戚稱呼大全"/>
|
||||
<meta name="description" content="中國親戚關系計算器是一款最爲全面準確的親戚稱呼計算器及親戚關系在線查詢工具,逢年過節走親訪友必備神器,亦可作爲家庭啓蒙教育應用。"/>
|
||||
@ -25,10 +26,10 @@
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="header">
|
||||
<div class="inner">
|
||||
<div class="scroll-container">
|
||||
<header>
|
||||
<div class="mod-head">
|
||||
<div class="inner">
|
||||
<div class="bd">
|
||||
<span class="language">
|
||||
<a href="/relationship/">简体</a>
|
||||
@ -43,20 +44,42 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<section class="scroll-item">
|
||||
<div class="mod-bg">
|
||||
<svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto">
|
||||
<defs>
|
||||
<path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"></path>
|
||||
</defs>
|
||||
<g class="parallax">
|
||||
<use xlink:href="#gentle-wave" x="48" y="0" fill="rgba(255,255,255,0.4)"></use>
|
||||
<use xlink:href="#gentle-wave" x="48" y="3" fill="rgba(255,255,255,0.6)"></use>
|
||||
<use xlink:href="#gentle-wave" x="48" y="5" fill="rgba(255,255,255,0.2)"></use>
|
||||
<use xlink:href="#gentle-wave" x="48" y="7" fill="rgba(255,255,255,1)"></use>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="mod-panel">
|
||||
<div class="module mod-panel">
|
||||
<div class="inner">
|
||||
<div class="hd">
|
||||
<div class="bd">
|
||||
<div class="panel-left">
|
||||
<h1><span class="name">中國</span><span>親戚關系計算器</span><span class="tag">開源算法</span></h1>
|
||||
<p>逢年過節遇到三姑六婆,拒絕叫不出口的尷尬!輕鬆搞定親戚關系~</p>
|
||||
<p>當前親戚稱呼大全已收錄約<b id="count">-</b>條親戚關系</p>
|
||||
<p class="text-gray">始於2016年3月</p>
|
||||
<div class="picture">
|
||||
<img src="static/image/app.png" width="512" height="320" alt="親戚稱呼換算APP"/>
|
||||
<a class="btn" href="/relationship/vue/" target="_blank">訪問手機版</a>
|
||||
</div>
|
||||
<div class="mobile">
|
||||
<a class="btn" href="vue/" target="_blank">
|
||||
<span class="name">訪問手機版</span>
|
||||
<span class="qrcode">
|
||||
<img src="static/image/qrcode.png"/>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bd">
|
||||
<div class="panel-right">
|
||||
<div class="c-hd">
|
||||
<ul>
|
||||
<li class="active"><a href="javascript:;" rel="nofollow">關系找稱呼</a></li>
|
||||
@ -75,7 +98,11 @@
|
||||
<span>默認</span>
|
||||
</label>
|
||||
<label for="field-0-2">
|
||||
<input id="field-0-2" type="radio" name="mode" value="cantonese">
|
||||
<input id="field-0-2" type="radio" name="mode" value="north">
|
||||
<span>北方地區</span>
|
||||
</label>
|
||||
<label for="field-0-3">
|
||||
<input id="field-0-3" type="radio" name="mode" value="guangdong">
|
||||
<span>粵語慣用</span>
|
||||
</label>
|
||||
</div>
|
||||
@ -254,22 +281,25 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-intro">
|
||||
</div>
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-intro">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>功能支持</span></div>
|
||||
<div class="bd">
|
||||
<ul>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">1. 使用別稱查詢:</p>
|
||||
<p class="q"><strong>1.</strong> 使用別稱查詢:</p>
|
||||
<p class="a">姥姥的爸爸的老竇 = 外曾外曾祖父</p>
|
||||
<p class="a">娘子的爹地的母親 = 祖嶽母</p>
|
||||
<p class="a">嶽丈的媽咪的細佬 = 舅祖嶽父</p>
|
||||
<p class="a">娘子的爹地的母親 = 祖岳母</p>
|
||||
<p class="a">岳丈的媽咪的細佬 = 舅祖岳父</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">2. 使用合稱查詢:</p>
|
||||
<p class="q"><strong>2.</strong> 使用合稱查詢:</p>
|
||||
<p class="a">姐夫的雙親 = 姊妹姻父 / 姊妹姻母</p>
|
||||
<p class="a">媽媽的祖父母 = 外曾祖父 / 外曾祖母</p>
|
||||
<p class="a">弟弟的孩子 = 侄子 / 侄女</p>
|
||||
@ -277,7 +307,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">3. 大小數字混合查詢:</p>
|
||||
<p class="q"><strong>3.</strong> 大小數字混合查詢:</p>
|
||||
<p class="a">大哥的二姑媽的七舅姥爺 = 舅曾外祖父</p>
|
||||
<p class="a">二女婿的小姨 = 女姻姨妹</p>
|
||||
<p class="a">大佬的三叔的次子 = 堂哥 / 堂弟</p>
|
||||
@ -285,7 +315,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">4. 不限制祖輩孫輩跨度查詢:</p>
|
||||
<p class="q"><strong>4.</strong> 不限制祖輩孫輩跨度查詢:</p>
|
||||
<p class="a">舅媽的婆婆的外甥的姨媽的侄子 = 舅表舅父</p>
|
||||
<p class="a">老公的丈母娘的兒媳 = 嫂子 / 弟妹</p>
|
||||
<p class="a">外婆的孫子的爸爸的仔 = 舅表哥 / 舅表弟</p>
|
||||
@ -293,7 +323,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">5. 根據年齡推導可能性:</p>
|
||||
<p class="q"><strong>5.</strong> 根據年齡推導可能性:</p>
|
||||
<p class="a">哥哥的表姐 = 姑表姐 / 舅表姐</p>
|
||||
<p class="a">堂妹的姐姐 = 堂姐 / 堂妹</p>
|
||||
<p class="a">弟弟的表哥 = 姑表哥 / 姑表弟 / 舅表哥 / 舅表弟</p>
|
||||
@ -301,23 +331,23 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">6. 根據語境確認性別:</p>
|
||||
<p class="a">老婆的女兒的外婆 = 嶽母</p>
|
||||
<p class="q"><strong>6.</strong> 根據語境確認性別:</p>
|
||||
<p class="a">老婆的女兒的外婆 = 岳母</p>
|
||||
<p class="a">愛人的婆婆的兒子 = 哥哥 / 弟弟 / 自己</p>
|
||||
<p class="a">嶽母的配偶的兒子的爸爸 = 嶽父</p>
|
||||
<p class="a">岳母的配偶的兒子的爸爸 = 岳父</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">7. 支持古文式表達:</p>
|
||||
<p class="q"><strong>7.</strong> 支持古文式表達:</p>
|
||||
<p class="a">吾父之舅父 = 舅爺爺</p>
|
||||
<p class="a">母之兄長之妻 = 大舅媽</p>
|
||||
<p class="a">泰山之高堂 = 祖嶽父 / 祖嶽母</p>
|
||||
<p class="a">泰山之高堂 = 祖岳父 / 祖岳母</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">8. 解析某稱謂關系鏈:</p>
|
||||
<p class="q"><strong>8.</strong> 解析某稱謂關系鏈:</p>
|
||||
<p class="a">七舅姥爺 = 媽媽的媽媽的兄弟</p>
|
||||
<p class="a">姑奶奶 = 爸爸的爸爸的姐妹</p>
|
||||
<p class="a">外太公 = 媽媽的爸爸的爸爸</p>
|
||||
@ -325,31 +355,120 @@
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q">9. 算兩個親戚間的合稱關系:</p>
|
||||
<p class="q"><strong>9.</strong> 算兩個親戚間的合稱關系:</p>
|
||||
<p class="a">奶奶 + 外婆 = 兒女親家</p>
|
||||
<p class="a">媽媽 + 嬸嬸 = 妯娌</p>
|
||||
<p class="a">嶽父 + 我 = 翁婿</p>
|
||||
<p class="a">岳父 + 我 = 翁婿</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-article">
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-feature">
|
||||
<div class="inner">
|
||||
<div class="bd">
|
||||
<p>親屬是基於婚姻、血緣和法律擬制而形成的社會關系。親屬關系包括夫妻、父母、子女、兄弟姊妹、祖父母和外祖父母、孫子女和外孫子女、兒媳和公婆、女婿和嶽父母、以及其他三代以內的旁系血親,如伯、叔、姑、舅、姨、侄子女、甥子女、堂兄弟姊妹、表兄弟姊妹等。</p>
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<p class="title">完整的親戚關係數據</p>
|
||||
<p class="desc">收錄前後多代血親及姻親關係數據</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="title">簡單易讀的數據格式</p>
|
||||
<p class="desc">獨創的關係數據結構方便數據查找</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="title">高效全麵的網絡解析</p>
|
||||
<p class="desc">算法解析包含了網絡中的各個節點</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="title">自定義地域稱呼功能</p>
|
||||
<p class="desc">讓你可以定製符合自己習慣的版本</p>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="panels">
|
||||
<div class="panel">
|
||||
<img src="./static/image/draw/1.svg" height="320">
|
||||
<span class="slogan">包含了數萬條親戚關係及稱呼</span>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<img src="./static/image/draw/2.svg" height="320">
|
||||
<span class="slogan">擁有小巧而極緻的親戚數據庫</span>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<img src="./static/image/draw/3.svg" height="320">
|
||||
<span class="slogan">不再錯過任何一種可能的關係</span>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<img src="./static/image/draw/4.svg" height="320">
|
||||
<span class="slogan">親戚該怎麼稱呼全由自己做主</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-article">
|
||||
<div class="inner">
|
||||
<div class="banner">
|
||||
<span>外甥</span>
|
||||
<span>姑姑</span>
|
||||
<span>岳父</span>
|
||||
<span>女兒</span>
|
||||
<span>舅舅</span>
|
||||
<span>姨媽</span>
|
||||
<span>媳婦兒</span>
|
||||
<span>爸爸</span>
|
||||
<span>錶姐</span>
|
||||
<span>曾祖母</span>
|
||||
<span>哥哥</span>
|
||||
<span>妯娌</span>
|
||||
<span>姑奶奶</span>
|
||||
<span>老公</span>
|
||||
<span>弟妹</span>
|
||||
<span>堂姐</span>
|
||||
<span>嬸嬸</span>
|
||||
<span>女婿</span>
|
||||
<span>叔叔</span>
|
||||
<span>婆婆</span>
|
||||
<span>小舅子</span>
|
||||
<span>伯父</span>
|
||||
<span>姻兄弟</span>
|
||||
<span>丈母娘</span>
|
||||
<span>外公</span>
|
||||
<span>侄子</span>
|
||||
<span>舅爺</span>
|
||||
<span>錶妹</span>
|
||||
<span>嫂子</span>
|
||||
<span>姥爺</span>
|
||||
<span>連襟</span>
|
||||
<span>爺爺</span>
|
||||
<span>姐夫</span>
|
||||
<span>姑子</span>
|
||||
<span>弟弟</span>
|
||||
<span>親家</span>
|
||||
<span>孫子</span>
|
||||
<span>姑丈公</span>
|
||||
</div>
|
||||
<div class="hd"><span>關於中國親戚稱呼</span></div>
|
||||
<div class="bd">
|
||||
<p>親屬是基於婚姻、血緣和法律擬制而形成的社會關系。親屬關系包括夫妻、父母、子女、兄弟姊妹、祖父母和外祖父母、孫子女和外孫子女、兒媳和公婆、女婿和岳父母、以及其他三代以內的旁系血親,如伯、叔、姑、舅、姨、侄子女、甥子女、堂兄弟姊妹、表兄弟姊妹、姨兄弟姊妹等。</p>
|
||||
<p>親屬稱謂指是以本人爲中心確定親族成員和本人關系的名稱,是基於血親姻親基礎上的親屬之間相互稱呼的名稱、叫法。漢族的家族親屬關系條理分明尊卑有序:比自己長一輩的稱呼有姨姑舅叔伯,同輩的有兄弟姊妹、堂表親等等,下一輩有甥侄等等。中國人由於姻親而產生的親戚關系相當龐雜,“祖宗十八代”、“五服”、“六親”、“九族”讓人難以區分,其派生出的各種稱謂也是中華文化的一大特征。</p>
|
||||
<p>如今由於工作生活節奏差異,很多關系稍疏遠的親戚之間來往並不多,年齡差異長幼輩分模糊。春節拜年走親戚遇到七大姑八大姨,往往會搞不清楚哪位親戚應該喊什麼稱呼,很是尷尬。不僅小孩搞不清親戚關系和親戚稱謂,就連年輕一代的大人也都常常模糊混亂。</p>
|
||||
<p>“中國親戚關系計算器”爲你避免了叫錯、不會叫親戚的尷尬,收錄了中國親戚關系稱呼大全,只需簡單的輸入即可完成稱呼計算。稱呼計算器同時兼容了不同地域的方言叫法,你可以稱呼父親爲:“老爸”、“爹地”、“老爺子”等等。讓您準確的叫出親戚稱謂,理清親屬之間的親戚關系,輕鬆掌握中國式的親戚關系換算,讓你更了解中國文化。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-copy">
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-copy">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>算法開源</span></div>
|
||||
<div class="bd">
|
||||
<p>本項目致力於讓更多人了解中國傳統文化,學習各式各樣的中國親戚稱謂。本人深感項目的完善僅憑一己之力是遠遠不夠的,如果你對此感興趣,歡迎關注本項目。你也可以通過本項目提供的方法和教程,打造更符合自己使用習慣的親戚計算器版本。</p>
|
||||
<p>本項目致力於讓更多人了解中國傳統文化,學習各式各樣的中國親戚稱謂。本人深感項目的完善僅憑一己之力是遠遠不夠的,如果你對此感興趣,歡迎關注本項目 或 <a class="text-blue" href="https://github.com/mumuy/relationship/pulls" target="_blank" rel="nofollow">提交代碼</a>,與我一起完善它,使它被更多人熟知和使用。你也可以通過本項目提供的方法和教程,打造更符合自己使用習慣的親戚計算器版本。</p>
|
||||
<p><span>算法基於「<a href="https://github.com/mumuy/relationship/blob/master/LICENSE" rel="nofollow" target="_blank">MIT許可協議</a>」開源,除需在源碼中保留版權信息和許可聲明外,你有權利使用、復制、修改、合並、出版發行、散布、再授權及販售軟件及軟件的副本。</span>算法持續更新中,如發現錯漏或有想法建議可在此</span> <a class="text-red" href="https://github.com/mumuy/relationship/issues" rel="nofollow" target="_blank">反饋問題</a>。</p>
|
||||
<div class="buttons">
|
||||
<a class="github-button" href="https://github.com/mumuy" data-color-scheme="no-preference: light; light: light; dark: dark;" data-size="large" aria-label="Follow @mumuy on GitHub">Follow @mumuy</a>
|
||||
@ -358,13 +477,15 @@
|
||||
<a class="github-button" href="https://github.com/mumuy/relationship/archive/HEAD.zip" data-icon="octicon-download" data-size="large" aria-label="Download mumuy/relationship on GitHub">Download</a>
|
||||
</div>
|
||||
<p>爲了及時獲取最新最全的親戚關系數據,建議你直接引用本項目腳本文件:</p>
|
||||
<code><script type="text/javascript" src="https://passer-by.com/relationship/dist/relationship.zh-HK.min.js"></script></code>
|
||||
<code><script type="text/javascript" src="https://passer-by.com/relationship/dist/lang/relationship.zh-HK.min.js"></script></code>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-app">
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-app">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>他們都在用</span></div>
|
||||
<div class="hd"><span>他們都在使用</span></div>
|
||||
<div class="bd">
|
||||
<ul>
|
||||
<li>
|
||||
@ -395,103 +516,57 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-foot">
|
||||
<div class="module mod-foot">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>😳支持我的開源</span></div>
|
||||
<div class="bd">
|
||||
<div class="box">
|
||||
<p><img src="static/image/qrcode.jpg" width="150" alt="親戚關系微信小程序"/></p>
|
||||
<p>微信掃一掃,使用小程序</p>
|
||||
<div class="item">
|
||||
<img src="static/image/qrcode-wechat.jpg" height="240" alt="微信支付"/>
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="static/image/qrcode-alipay.jpg" height="240" alt="支付寶支付"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="https://passer-by.com/public/script/projects.js"></script>
|
||||
<div class="ft">
|
||||
<p>Copyright © <a href="http://passer-by.com">passer-by.com</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mod-fixedbar">
|
||||
<div class="bd">
|
||||
<ul>
|
||||
<li>
|
||||
<a class="qrcode" href="javascript:;" href="javascript:;">
|
||||
<img src="static/image/icon-wechat.png" width="24" height="24"/>
|
||||
<span class="popup">
|
||||
<img src="static/image/qrcode.jpg" width="150" alt="親戚關係微信小程序"/>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="gotop" href="javascript:;" href="javascript:;">
|
||||
<img src="static/image/icon-gotop.png" width="24" height="24"/>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="dist/relationship.zh-HK.min.js"></script>
|
||||
</section>
|
||||
</div>
|
||||
<script type="text/javascript" src="dist/lang/relationship.zh-HK.min.js"></script>
|
||||
<script type="text/javascript" src="dist/lang/relationship-mode.zh-HK.min.js"></script>
|
||||
<script type="text/javascript" src="static/script/index.js"></script>
|
||||
<script type="text/javascript">
|
||||
// 獲取數量
|
||||
document.getElementById('count').innerText = relationship.dataCount;
|
||||
|
||||
// 自定義模式
|
||||
relationship.setMode('cantonese',{
|
||||
'f':['阿爸'],
|
||||
'f,f':['阿爺'],
|
||||
'f,f,f':['太公'],
|
||||
'f,f,m':['太婆'],
|
||||
'f,m':['阿嫲'],
|
||||
'f,m,f':['太外公'],
|
||||
'f,m,m':['太外婆'],
|
||||
'f,ob':['大伯'],
|
||||
'f,ob,w':['伯娘'],
|
||||
'f,lb':['阿叔'],
|
||||
'f,lb,w':['阿嬸'],
|
||||
'0,f,xb,d,s':['堂姨甥'],
|
||||
'1,f,xb,d,s':['堂外甥'],
|
||||
'0,f,xb,d,d':['堂姨甥女'],
|
||||
'1,f,xb,d,d':['堂外甥女'],
|
||||
'f,os':['姑媽'],
|
||||
'f,ls':['姑姐'],
|
||||
'f,xs,h':['姑丈'],
|
||||
'0,f,xs,d,s':['姑表姨甥'],
|
||||
'1,f,xs,d,s':['姑表外甥'],
|
||||
'0,f,xs,d,d':['姑表姨甥女'],
|
||||
'1,f,xs,d,d':['姑表外甥女'],
|
||||
'm':['阿媽','老母'],
|
||||
'm,f':['阿公'],
|
||||
'm,f,f':['外太公'],
|
||||
'm,f,m':['外太婆'],
|
||||
'm,m':['阿婆'],
|
||||
'm,m,f':['外太外公'],
|
||||
'm,m,m':['外太外婆'],
|
||||
'm,ob':['舅父'],
|
||||
'm,lb':['舅仔'],
|
||||
'm,xb,w':['舅母'],
|
||||
'0,m,xb,d,s':['舅表姨甥'],
|
||||
'1,m,xb,d,s':['舅表外甥'],
|
||||
'0,m,xb,d,d':['舅表姨甥女'],
|
||||
'1,m,xb,d,d':['舅表外甥女'],
|
||||
'm,os':['姨媽'],
|
||||
'm,ls':['姨仔'],
|
||||
'm,xs,h':['姨丈'],
|
||||
'0,m,xb,d,s':['姨姨甥'],
|
||||
'1,m,xb,d,s':['姨外甥'],
|
||||
'0,m,xb,d,d':['姨姨甥女'],
|
||||
'1,m,xb,d,d':['姨外甥女'],
|
||||
'ob':['阿哥'],
|
||||
'ob,w':['阿嫂'],
|
||||
'lb':['阿弟','細佬'],
|
||||
'lb,w':['弟婦'],
|
||||
'xb,s':['侄'],
|
||||
'xb,d':['侄女'],
|
||||
'os':['阿姐'],
|
||||
'os,h':['姐夫'],
|
||||
'ls':['阿妹'],
|
||||
'ls,h':['妹夫'],
|
||||
'0,xs,s':['姨甥'],
|
||||
'1,xs,s':['外甥'],
|
||||
'0,xs,d':['姨甥女'],
|
||||
'1,xs,d':['外甥女'],
|
||||
's':['仔'],
|
||||
's,w':['新婦'],
|
||||
's,s':['孫'],
|
||||
's,s,w':['孫新婦'],
|
||||
's,s,s':['息仔'],
|
||||
's,s,d':['息女'],
|
||||
's,d':['孫女'],
|
||||
's,d,h':['孫女婿'],
|
||||
's,d,s':['外息仔'],
|
||||
's,d,d':['外息女'],
|
||||
'd':['女'],
|
||||
'd,s':['外孫'],
|
||||
'd,s,w':['外孫新婦'],
|
||||
'd,s,s':['外息仔'],
|
||||
'd,s,d':['外息女'],
|
||||
'd,d':['外孫女'],
|
||||
'd,d,h':['外孫女婿'],
|
||||
'd,d,s':['外息仔'],
|
||||
'd,d,d':['外息女'],
|
||||
});
|
||||
for(var key in relationshipMode){
|
||||
relationship.setMode(key,relationshipMode[key]['data']);
|
||||
}
|
||||
|
||||
// 標籤頁
|
||||
(function(){
|
||||
@ -534,7 +609,12 @@
|
||||
var value = $input.value.trim();
|
||||
if(value){
|
||||
var sex = $sex[0].checked?1:0;
|
||||
var mode = $mode[0].checked?$mode[0].value:$mode[1].value;
|
||||
var mode = 'default';
|
||||
if($mode[1].checked){
|
||||
mode = $mode[1].value;
|
||||
}else if($mode[2].checked){
|
||||
mode = $mode[2].value;
|
||||
}
|
||||
var reverse = !$reverse[0].checked;
|
||||
var result = relationship({text:value,sex:sex,reverse:reverse,mode:mode});
|
||||
$result.value = '';
|
||||
@ -735,28 +815,6 @@
|
||||
})();
|
||||
</script>
|
||||
<script async defer src="https://cdn.bootcdn.net/ajax/libs/github-buttons/2.21.1/buttons.min.js"></script>
|
||||
<script>
|
||||
var _hmt = _hmt || [];
|
||||
(function() {
|
||||
var hm = document.createElement("script");
|
||||
hm.src = "https://hm.baidu.com/hm.js?b86879c9cc57dd112fe1f7dd75206b82";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(hm, s);
|
||||
})();
|
||||
</script>
|
||||
<script>
|
||||
(function(){
|
||||
var bp = document.createElement('script');
|
||||
var curProtocol = window.location.protocol.split(':')[0];
|
||||
if (curProtocol === 'https') {
|
||||
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
|
||||
}
|
||||
else {
|
||||
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
|
||||
}
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(bp, s);
|
||||
})();
|
||||
</script>
|
||||
<script type="text/javascript" src="https://passer-by.com/public/script/stat.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|