Compare commits
No commits in common. "master" and "npm" have entirely different histories.
28
.github/workflows/test.yml
vendored
@ -1,28 +0,0 @@
|
||||
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
Normal file
@ -0,0 +1,16 @@
|
||||
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
|
@ -1,6 +0,0 @@
|
||||
module.exports = {
|
||||
presets: ['@babel/preset-env'],
|
||||
plugins: [
|
||||
'@babel/plugin-transform-runtime'
|
||||
]
|
||||
}
|
1
dist/lang/relationship-mode.zh-HK.min.js
vendored
@ -1 +0,0 @@
|
||||
!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
@ -1 +0,0 @@
|
||||
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
13
dist/lang/relationship.zh-HK.min.mjs
vendored
1
dist/relationship-mode.min.js
vendored
@ -1 +0,0 @@
|
||||
!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
@ -1 +0,0 @@
|
||||
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};
|
16
dist/relationship.min.js
vendored
13
dist/relationship.min.mjs
vendored
BIN
favicon.ico
Before Width: | Height: | Size: 4.1 KiB |
37
gulpfile.js
@ -1,25 +1,18 @@
|
||||
const fs = require('fs');
|
||||
const gulp = require('gulp');
|
||||
const uglify = require('gulp-uglify');
|
||||
const rename = require("gulp-rename");
|
||||
const cht = require('gulp-cht');
|
||||
const replace = require('gulp-replace');
|
||||
|
||||
gulp.task('localization', () => {
|
||||
// gulp.src('./index.html')
|
||||
// .pipe(cht())
|
||||
// .pipe(rename("zh-HK.html"))
|
||||
// .pipe(gulp.dest("./"));
|
||||
|
||||
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']))
|
||||
gulp.task('mini', () => (
|
||||
gulp.src('script/relationship.js')
|
||||
.pipe(uglify({
|
||||
output:{
|
||||
comments: function(node, comment){
|
||||
return /^!/.test(comment.value);
|
||||
}
|
||||
}
|
||||
}))
|
||||
.pipe(rename("relationship.min.js"))
|
||||
.pipe(gulp.dest('dist/'))
|
||||
|
||||
));
|
BIN
image/app.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
image/qrcode.jpg
Normal file
After Width: | Height: | Size: 77 KiB |
1097
index.html
8951
package-lock.json
generated
119
package.json
@ -1,80 +1,43 @@
|
||||
{
|
||||
"name": "relationship.js",
|
||||
"version": "1.2.7",
|
||||
"description": "Chinese kinship library",
|
||||
"author": "HaoLe Zheng",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"relationship",
|
||||
"relationship.js",
|
||||
"chinese",
|
||||
"family",
|
||||
"kinship",
|
||||
"家庭亲戚称谓",
|
||||
"亲戚关系算法"
|
||||
],
|
||||
"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"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/mumuy/relationship/issues"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20",
|
||||
"yarn": "please-use-npm",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@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",
|
||||
"gulp-replace": "^1.1.4",
|
||||
"rollup": "^3.29.5",
|
||||
"tape": "^5.9.0",
|
||||
"through2": "^4.0.2"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node test/index.js",
|
||||
"build": "rollup -c && gulp && npm run test",
|
||||
"watch": "rollup -wc"
|
||||
},
|
||||
"homepage": "https://passer-by.com/relationship/",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
}
|
||||
"name": "relationship.js",
|
||||
"officialName": "relationship.js",
|
||||
"version": "1.1.0",
|
||||
"summary": "relationship.js is a javascript library for chinese family relationship. 中国家庭亲戚称谓计算器,家庭关系、亲戚关系算法。",
|
||||
"description": "relationship.js is a javascript library for chinese family relationship.",
|
||||
"author": "mumuy (http://passer-by.com/)",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"relationship",
|
||||
"relationship.js",
|
||||
"chinese",
|
||||
"family",
|
||||
"relationship",
|
||||
"家庭亲戚称谓",
|
||||
"亲戚关系算法"
|
||||
],
|
||||
"main": "dist/relationship.min.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/mumuy/relationship.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/mumuy/relationship/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-rename": "^2.0.0",
|
||||
"gulp-uglify": "^3.0.2",
|
||||
"tape": "^5.3.1",
|
||||
"set-value": ">=4.0.1",
|
||||
"glob-parent": ">=5.1.2"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node test/index.js",
|
||||
"build": "gulp mini && npm run test"
|
||||
},
|
||||
"dependencies": {},
|
||||
"homepage": "https://github.com/mumuy/relationship#readme",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
}
|
||||
}
|
||||
|
186
readme.md
@ -1,121 +1,91 @@
|
||||

|
||||
[](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/)
|
||||
演示地址:[https://passer-by.com/relationship/](http://passer-by.com/relationship/ )
|
||||
|
||||
借助这套算法结合vue开发的APP: [https://passer-by.com/relationship/vue/](http://passer-by.com/relationship/vue/)
|
||||
|
||||
在微信中搜索“亲戚关系”,还可以体验小程序版本
|
||||
|
||||

|
||||
|
||||
## 一、下载 & 安装
|
||||
|
||||
脚本库可以用于浏览器,也可以用于 Nodejs 环境中。
|
||||
该 Javascript 库 / 模块可以用于前端也可以用于后端 Nodejs 中。
|
||||
|
||||
1. 在网页中引入 `<script src="https://passer-by.com/relationship/dist/relationship.min.js">`
|
||||
|
||||
获取全局方法 `relationship`
|
||||
|
||||
2. 使用 npm 安装名为 `relationship.js ` 的包
|
||||
1. 直接下载dist/relationship.min.js,然后使用 `<script>`标签引入,可以得到全局的方法 `relationship`.
|
||||
2. 使用 npm 进行包管理,具体为:
|
||||
|
||||
> **npm install relationship.js**
|
||||
|
||||
在脚本中引入模块
|
||||
然后使用 `require` 引入模块
|
||||
|
||||
```js
|
||||
var relationship = require("relationship.js");
|
||||
```
|
||||
|
||||
```js
|
||||
// CommonJS 引入
|
||||
const relationship = require("relationship.js");
|
||||
```
|
||||
```js
|
||||
// ES Module 引入
|
||||
import relationship from 'relationship.js';
|
||||
```
|
||||
 
|
||||
|
||||
## 二、使用
|
||||
1. 通用方法: 唯一的计算方法 `relationship`.
|
||||
|
||||
* 选项模式 `relationship(options)`
|
||||
|
||||
参数`options`结构为:
|
||||
|
||||
```js
|
||||
var options = {
|
||||
text:'', // 目标对象:目标对象的称谓汉字表达,称谓间用‘的’字分隔
|
||||
target:'', // 相对对象:相对对象的称谓汉字表达,称谓间用‘的’字分隔,空表示自己
|
||||
sex:-1, // 本人性别:0表示女性,1表示男性
|
||||
type:'default', // 转换类型:'default'计算称谓,'chain'计算关系链,'pair'计算关系合称
|
||||
reverse:false, // 称呼方式:true对方称呼我,false我称呼对方
|
||||
mode:'default', // 模式选择:使用setMode方法定制不同地区模式,在此选择自定义模式
|
||||
optimal:false, // 最短关系:计算两者之间的最短关系
|
||||
};
|
||||
```
|
||||
|
||||
代码示例:
|
||||
|
||||
```js
|
||||
// 如:我应该叫外婆的哥哥什么?
|
||||
relationship({text:'妈妈的妈妈的哥哥'});
|
||||
// => ['舅外公']
|
||||
|
||||
// 如:七舅姥爷应该叫我什么?
|
||||
relationship({text:'七舅姥爷',reverse:true,sex:1});
|
||||
// => ['甥外孙']
|
||||
|
||||
// 如:舅公是什么亲戚
|
||||
relationship({text:'舅公',type:'chain'});
|
||||
// => ['爸爸的妈妈的兄弟', '妈妈的妈妈的兄弟', '老公的妈妈的兄弟']
|
||||
|
||||
// 如:舅妈如何称呼外婆?
|
||||
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`.
|
||||
1. 内部属性:获取当前数据量 `relationship.dataCount`.
|
||||
|
||||
3. 内部属性:获取当前数据量 `relationship.dataCount`.
|
||||
2. 内部方法:用户自定义模式 `relationship.setMode(mode_name,mode_data)`.
|
||||
|
||||
4. 内部方法:用户自定义模式 `relationship.setMode(mode_name,mode_data)`.
|
||||
代码示例:
|
||||
|
||||
```js
|
||||
// 关系解析语法
|
||||
// 【关系链】f:父,m:母,h:夫,w:妻,s:子,d:女,xb:兄弟,ob:兄,lb:弟,xs:姐妹,os:姐,ls:妹
|
||||
// 【修饰符】 1:男性,0:女性,&o:年长,&l:年幼,#:隔断,[a|b]:并列
|
||||
relationship.setMode('northern',{
|
||||
'm,f':['姥爷'],
|
||||
'm,m':['姥姥'],
|
||||
'm,xb,s&o':['表哥'],
|
||||
'm,xb,s&l':['表弟'],
|
||||
});
|
||||
```
|
||||
|
||||
3. 通用方法: 唯一的计算方法 `relationship(options)`.
|
||||
|
||||
参数`options`结构为:
|
||||
|
||||
```js
|
||||
var options = {
|
||||
text:'', //输入文本(称谓的汉字表达,称谓间用‘的’字分隔)
|
||||
target:'', //针对对象:空表示自己
|
||||
sex:-1, //自己的性别:0女性,1男性
|
||||
type:'default', //转换类型:'default'算称谓,'chain'算关系
|
||||
reverse:false, //称呼方式:true对方称呼我,false我称呼对方
|
||||
mode:'default' //模式选择,可由用户自定义
|
||||
};
|
||||
```
|
||||
|
||||
代码示例:
|
||||
|
||||
```js
|
||||
// 如:我应该叫外婆的哥哥什么?
|
||||
relationship({text:'妈妈的妈妈的哥哥'});
|
||||
|
||||
// 如:七舅姥爷应该叫我什么?
|
||||
relationship({text:'七舅姥爷','reverse':true,'sex':1});
|
||||
|
||||
// 如:舅公和我是什么关系?
|
||||
relationship({text:'舅公',sex:0,type:'chain'});
|
||||
|
||||
// 如:舅妈如何称呼外婆?
|
||||
relationship({text:'外婆',target:'舅妈',sex:1});
|
||||
```
|
||||
|
||||
代码示例(可参考数据表格式对数据进行覆盖):
|
||||
|
||||
```js
|
||||
// 关系解析语法
|
||||
// 【关系链】f:父,m:母,h:夫,w:妻,s:子,d:女,xb:兄弟,ob:兄,lb:弟,xs:姐妹,os:姐,ls:妹
|
||||
// 【修饰符】 1:男性,0:女性,&o:年长,&l:年幼,#:隔断,[a|b]:并列
|
||||
relationship.setMode('northern',{
|
||||
'm,f':['姥爷'],
|
||||
'm,m':['姥姥'],
|
||||
'm,xb,s&o':['表哥'],
|
||||
'm,xb,s&l':['表弟'],
|
||||
});
|
||||
```
|
||||
|
||||
## 三、开发 & 贡献
|
||||
|
||||
```sh
|
||||
# 安装开发依赖
|
||||
npm install
|
||||
npm install
|
||||
|
||||
# build 模块: 将 relationship 打包压缩
|
||||
npm run build
|
||||
@ -124,31 +94,19 @@ npm run build
|
||||
npm test
|
||||
```
|
||||
|
||||
当然也可以直接浏览器打开 `index.html` 来在查看网页demo。
|
||||
|
||||
|
||||
## 四、关于分歧
|
||||
|
||||
一些称呼存在南北方或地区差异,容易引起歧义,并不保证和你所处地区的称谓习惯一致。
|
||||
一些称呼存在南北方或地区差异,容易引起歧义,并不保证和你所处地区的称谓习惯一致。本程序默认以现代生活常见的理解为主。例如:
|
||||
* 媳妇:在古代或者当今北方地区指儿子的妻子,这里指自己的妻子。
|
||||
* 大爷:北方指父亲的哥哥,这里指爷爷的哥哥
|
||||
* 太太:一些地方指年长的妇人,这里指自己的妻子
|
||||
|
||||
部分称呼有多种关系且跨辈分。例如:
|
||||
* 大爷:爷爷的哥哥 / 父亲的哥哥(北方);
|
||||
* 舅公:爸妈的舅舅 / 老公的舅舅;
|
||||
* 伯公:爸妈的伯父 / 老公的伯父;
|
||||
* 叔公:爸妈的叔叔 / 老公的叔叔;
|
||||
* 姨公:爸妈的姨丈 / 老公的姨丈;
|
||||
* 姨夫:姨妈的老公 / 姨子的老公;
|
||||
* 姑夫:姑妈的老公 / 姑子的老公;
|
||||
* 婶子:叔叔的老婆 / 叔子的老婆;
|
||||
* 妗子:舅舅的老婆 / 舅子的老婆;
|
||||
针对不同地区的使用,你可以通过上述所说的自定义模式实现。
|
||||
|
||||
部分称呼以现代生活常见理解为主。例如:
|
||||
* 媳妇:在古代或者北方地区指儿子的妻子,这里指自己的妻子(儿媳妇写作“息妇”);
|
||||
* 太太:一些地方指年长的妇人或曾祖父母,这里指自己的妻子;
|
||||
|
||||
## 五、教程
|
||||
|
||||
* [算法实现原理](https://github.com/mumuy/relationship/wiki/%E7%AE%97%E6%B3%95%E5%AE%9E%E7%8E%B0)
|
||||
|
||||
## 六、其他
|
||||
## 五、其他
|
||||
|
||||
他们都在用:
|
||||
|
||||
|
@ -1,62 +0,0 @@
|
||||
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/**'
|
||||
}
|
||||
}];
|
274
script/index.js
Normal file
@ -0,0 +1,274 @@
|
||||
// 获取数量
|
||||
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,w':['姐夫'],
|
||||
'ls':['阿妹'],
|
||||
'ls,w':['妹夫'],
|
||||
'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':['外息女'],
|
||||
});
|
||||
|
||||
// 标签页
|
||||
(function(){
|
||||
var $module = document.querySelector('.mod-panel');
|
||||
var $items = $module.querySelectorAll('li');
|
||||
var $panels = $module.querySelectorAll('.c-panel');
|
||||
for(var i=0;i<$items.length;i++){
|
||||
(function(i){
|
||||
$items[i].addEventListener('click',function(){
|
||||
for(var j=0;j<$panels.length;j++){
|
||||
$items[j].className = i==j?'active':'';
|
||||
$panels[j].style.display = i==j?'block':'none';
|
||||
}
|
||||
});
|
||||
})(i);
|
||||
}
|
||||
})();
|
||||
|
||||
// 通过关系找称呼
|
||||
(function(){
|
||||
var $module = document.querySelector('.mod-panel');
|
||||
var $panel = $module.querySelector('.c-panel:nth-child(1)');
|
||||
var $radio = $panel.querySelectorAll('input[type="radio"]');
|
||||
var $mode = $panel.querySelectorAll('input[name="mode"]');
|
||||
var $sex = $panel.querySelectorAll('input[name="sex"]');
|
||||
var $reverse = $panel.querySelectorAll('input[name="reverse"]');
|
||||
var $small_btns = $panel.querySelectorAll('.btn-small');
|
||||
var $input = $panel.querySelector('textarea[name="input"]');
|
||||
var $result = $panel.querySelector('textarea[name="result"]');
|
||||
var toggleSex = function(sex){
|
||||
if(sex){ //男女判断
|
||||
$small_btns[2].disabled=true;
|
||||
$small_btns[3].disabled=false;
|
||||
}else{
|
||||
$small_btns[2].disabled=false;
|
||||
$small_btns[3].disabled=true;
|
||||
}
|
||||
}
|
||||
var count = function(){
|
||||
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 reverse = !$reverse[0].checked;
|
||||
var result = relationship({text:value,sex:sex,reverse:reverse,mode:mode});
|
||||
$result.value = '';
|
||||
if(result.length){
|
||||
$result.value = result.join('\n');
|
||||
}else{
|
||||
$result.value = '貌似他/她跟你不是很熟哦!';
|
||||
}
|
||||
}else{
|
||||
$result.value = '';
|
||||
}
|
||||
};
|
||||
var bindChange = function(){
|
||||
var value = $input.value.trim();
|
||||
if(value){
|
||||
var result = relationship({text:value,sex:-1,type:'chain'});
|
||||
if(result.length){
|
||||
var first_name = result[0].split('的').shift();
|
||||
var name = result[0].split('的').pop();
|
||||
if(first_name=='老公'){
|
||||
$sex[1].checked = true;
|
||||
}else if(first_name=='老婆'){
|
||||
$sex[0].checked = true;
|
||||
}
|
||||
if(!name){
|
||||
toggleSex($sex[0].checked);
|
||||
}else{
|
||||
toggleSex('爸爸,老公,儿子,哥哥,弟弟,兄弟'.indexOf(name)>-1);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$result.value = '';
|
||||
}
|
||||
};
|
||||
|
||||
for(var i=0;i<$small_btns.length;i++){
|
||||
$small_btns[i].onclick = function(){
|
||||
var value = $input.value.trim();
|
||||
var name = this.getAttribute('data-value');
|
||||
if(value){
|
||||
$input.value= value+'的'+name;
|
||||
}else{
|
||||
$input.value= name;
|
||||
}
|
||||
toggleSex('爸爸,老公,儿子,哥哥,弟弟,兄弟'.indexOf(name)>-1);
|
||||
}
|
||||
}
|
||||
for(var i=0;i<$radio.length;i++){
|
||||
$radio[i].onchange=function(){
|
||||
toggleSex($sex[0].checked);
|
||||
if($result.value){
|
||||
count();
|
||||
}
|
||||
}
|
||||
}
|
||||
var hander = null;
|
||||
$input.addEventListener('paste',function(){
|
||||
hander&&clearTimeout(bindChange,250);
|
||||
hander = setTimeout(bindChange,250);
|
||||
});
|
||||
$input.addEventListener('input',function(){
|
||||
hander&&clearTimeout(bindChange,250);
|
||||
hander = setTimeout(bindChange,250);
|
||||
});
|
||||
$panel.querySelector('.btn-orange').addEventListener('click',function(){
|
||||
var value = $input.value.trim();
|
||||
var index = value.lastIndexOf('的');
|
||||
index = Math.max(0,index);
|
||||
var search = value.substr(0,index);
|
||||
$input.value = search;
|
||||
$result.value = '';
|
||||
var name = search.split('的').pop();
|
||||
if(!name){
|
||||
toggleSex($sex[0].checked);
|
||||
}else{
|
||||
toggleSex('爸爸,老公,儿子,哥哥,弟弟'.indexOf(name)>-1);
|
||||
}
|
||||
});
|
||||
$panel.querySelector('.btn-red').addEventListener('click',function(){
|
||||
$result.value = $input.value = '';
|
||||
toggleSex($sex[0].checked);
|
||||
});
|
||||
$panel.querySelector('.btn-green').addEventListener('click',count);
|
||||
|
||||
toggleSex($sex[0].checked);
|
||||
})();
|
||||
|
||||
// 通过称呼找关系
|
||||
(function(){
|
||||
var $module = document.querySelector('.mod-panel');
|
||||
var $panel = $module.querySelector('.c-panel:nth-child(2)');
|
||||
var $radio = $panel.querySelectorAll('input[type="radio"]');
|
||||
var $input = $panel.querySelector('input[name="input"]');
|
||||
var $result = $panel.querySelector('textarea[name="result"]');
|
||||
var count = function(){
|
||||
var value = $input.value.trim();
|
||||
if(value){
|
||||
var result = relationship({text:value,type:'chain'});
|
||||
if(result.length){
|
||||
$result.value = result.join('\n');
|
||||
}else{
|
||||
$result.value = '貌似他/她跟你不是很熟哦!';
|
||||
}
|
||||
}else{
|
||||
$result.value = '';
|
||||
}
|
||||
};
|
||||
$panel.querySelector('.btn-red').onclick = function(){
|
||||
$result.value = $input.value = '';
|
||||
};
|
||||
$panel.querySelector('.btn-green').onclick = count;
|
||||
})();
|
||||
|
||||
// 任意两者间称呼
|
||||
(function(){
|
||||
var $module = document.querySelector('.mod-panel');
|
||||
var $panel = $module.querySelector('.c-panel:nth-child(3)');
|
||||
var $radio = $panel.querySelectorAll('input[type="radio"]');
|
||||
var $reverse = $panel.querySelectorAll('input[name="reverse2"]');
|
||||
var $person = $panel.querySelector('input[name="person"]');
|
||||
var $target = $panel.querySelector('input[name="target"]');
|
||||
var $result = $panel.querySelector('textarea[name="result"]');
|
||||
var count = function(){
|
||||
var person = $person.value.trim();
|
||||
var target = $target.value.trim();
|
||||
if(person){
|
||||
var reverse = !$reverse[1].checked;
|
||||
var result = relationship({text:person,reverse:reverse,target:target});
|
||||
if(result.length){
|
||||
$result.value = result.join('\n');
|
||||
}else{
|
||||
$result.value = '他们貌似不是很熟哦!';
|
||||
}
|
||||
}else{
|
||||
$result.value = '';
|
||||
}
|
||||
};
|
||||
for(var i=0;i<$radio.length;i++){
|
||||
$radio[i].onchange=function(){
|
||||
if($result.value){
|
||||
count();
|
||||
}
|
||||
}
|
||||
}
|
||||
$panel.querySelector('.btn-red').onclick = function(){
|
||||
$result.value = $person.value = $target.value = '';
|
||||
};
|
||||
$panel.querySelector('.btn-green').onclick = count;
|
||||
})();
|
2940
script/relationship.js
Normal file
@ -1,81 +0,0 @@
|
||||
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':['外息女'],
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
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':['大娘'],
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
/*
|
||||
* 缓存数据
|
||||
*/
|
||||
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,604 +0,0 @@
|
||||
/*
|
||||
* 分支关系链 - 旁支亲戚的分支关系链
|
||||
*/
|
||||
export default {
|
||||
// 其他旁系
|
||||
'{G2},s':['父'],
|
||||
'{G2},s,w':['母'],
|
||||
'{G2},s,s':['兄弟'],
|
||||
'{G2},s,s&o':['兄'],
|
||||
'{G2},s,s&l':['弟'],
|
||||
'{G2},s,s,s':['男','子'],
|
||||
'{G2},s,s,d':['女'],
|
||||
'{G2},s,d':['姊妹'],
|
||||
'{G2},s,d&o':['姊'],
|
||||
'{G2},s,d&l':['妹'],
|
||||
// 高祖以上
|
||||
'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}|{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}|{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}|{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':['叔祖父','叔爷爷'],
|
||||
'f,f,{G1},s&l,w':['叔祖母','叔奶奶'],
|
||||
'f,f,{G1},d':['姑祖母','姑奶奶'],
|
||||
'f,f,{G1},d,h':['姑祖父','姑爷爷'],
|
||||
'f,m,{G1},s':['舅祖父','舅爷爷'],
|
||||
'f,m,{G1},s,w':['舅祖母','舅奶奶'],
|
||||
'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':['叔外祖父','叔外公','叔姥爷'],
|
||||
'm,f,{G1},s&l,w':['叔外祖母','叔外婆','叔姥姥'],
|
||||
'm,f,{G1},d':['姑外祖母','姑外婆','姑姥姥'],
|
||||
'm,f,{G1},d,h':['姑外祖父','姑外公','姑姥爷'],
|
||||
'm,m,{G1},s':['舅外祖父','舅外公','舅姥爷'],
|
||||
'm,m,{G1},s,w':['舅外祖母','舅外婆','舅姥姥'],
|
||||
'm,m,{G1},d':['姨外祖母','姨外公','姨姥爷'],
|
||||
'm,m,{G1},d,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':['姑父','姑丈','姑爸','姑夫'],
|
||||
'm,{G1},s':['舅父','舅舅','舅爸','舅'],
|
||||
'm,{G1},s,w':['舅母','舅妈'],
|
||||
'm,{G1},d':['姨母','姨姨','姨妈','姨'],
|
||||
'm,{G1},d,h':['姨父','姨丈','姨爸','姨夫'],
|
||||
// 同辈及以下
|
||||
'{G1},s':['兄弟'],
|
||||
'{G1},s,w':['兄弟妇'],
|
||||
'{G1},s&o':['哥','哥哥','阿哥'],
|
||||
'{G1},s&o,w':['嫂','嫂子','兄妇'],
|
||||
'{G1},s&l':['弟','弟弟','阿弟'],
|
||||
'{G1},s&l,w':['弟媳','弟妇'],
|
||||
'{G1},s,s':['侄男','侄子','侄儿'],
|
||||
'{G1},s,s,w':['侄妇'],
|
||||
'{G1},s,s,s':['侄孙男'],
|
||||
'{G1},s,s,s,w':['侄孙妇'],
|
||||
'{G1},s,s,s,s':['侄曾孙男'],
|
||||
'{G1},s,s,s,s,w':['侄曾孙妇'],
|
||||
'{G1},s,s,s,s,s':['侄玄孙男'],
|
||||
'{G1},s,s,s,s,s,w':['侄玄孙妇'],
|
||||
'{G1},s,s,s,s,d':['侄玄孙女'],
|
||||
'{G1},s,s,s,s,d,h':['侄玄孙婿'],
|
||||
'{G1},s,s,d':['侄孙女'],
|
||||
'{G1},s,s,d,h':['侄孙婿'],
|
||||
'{G1},s,s,s,d':['侄曾孙女'],
|
||||
'{G1},s,s,s,d,h':['侄曾孙婿'],
|
||||
'{G1},s,d':['侄女','侄女儿'],
|
||||
'{G1},s,d,h':['侄婿'],
|
||||
'{G1},s,d,s':['侄外孙男','外孙男'],
|
||||
'{G1},s,d,s,w':['侄外孙妇'],
|
||||
'{G1},s,d,d':['侄外孙女','外孙女'],
|
||||
'{G1},s,d,d,h':['侄外孙婿'],
|
||||
'{G1},d':['姐妹'],
|
||||
'{G1},d,h':['姐妹壻'],
|
||||
'{G1},d&o':['姐','姐姐','阿姐'],
|
||||
'{G1},d&o,h':['姐夫'],
|
||||
'{G1},d&l':['妹','妹妹','阿妹'],
|
||||
'{G1},d&l,h':['妹夫'],
|
||||
'{G1},d,s':['甥男'],
|
||||
'{G1},d,s,w':['甥妇'],
|
||||
'{G1},d,s,s':['甥孙男'],
|
||||
'{G1},d,s,s,w':['甥孙妇'],
|
||||
'{G1},d,s,d':['甥孙女'],
|
||||
'{G1},d,s,d,h':['甥孙婿'],
|
||||
'{G1},d,d':['甥女'],
|
||||
'{G1},d,d,h':['甥婿'],
|
||||
'{G1},d,d,s':['甥外孙男','外孙男'],
|
||||
'{G1},d,d,s,w':['甥外孙妇'],
|
||||
'{G1},d,d,d':['甥外孙女','外孙女'],
|
||||
'{G1},d,d,d,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':['小叔子','小叔弟'],
|
||||
'h,{G1},s&l,w':['小婶子','小叔弟妇'],
|
||||
'h,{G1},s':['伯叔'],
|
||||
'h,{G1},s,w':['妯娌'],
|
||||
'h,{G1},d&o':['大姑子','大姑姐'],
|
||||
'h,{G1},d&o,h':['大姑夫','大姑姐夫'],
|
||||
'h,{G1},d&l':['小姑子','小姑妹'],
|
||||
'h,{G1},d&l,h':['小姑夫','小姑妹夫'],
|
||||
'h,{G1},d':['姑子'],
|
||||
'h,{G1},d,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':['小舅子','小舅弟','舅弟'],
|
||||
'w,{G1},s&l,w':['小舅妇','小舅姆','小舅弟妇','舅弟妇','舅妹','小舅妹','小妗子','小妗儿'],
|
||||
'w,{G1},s':['舅子'],
|
||||
'w,{G1},s,w':['舅嫂'],
|
||||
'w,{G1},d&o':['大姨子','大姨姐','姨姐'],
|
||||
'w,{G1},d&o,h':['大姨夫','大姨姐夫','襟兄','姨兄','大姨哥','大尹子'],
|
||||
'w,{G1},d&l':['小姨子','小姨妹','姨妹'],
|
||||
'w,{G1},d&l,h':['小姨夫','小姨妹夫','襟弟','姨弟','小姨弟','小尹子'],
|
||||
'w,{G1},d':['姨子'],
|
||||
'w,{G1},d,h':['连襟','连桥'],
|
||||
// 子辈及以下
|
||||
'{G0},s':['男','男儿','儿','子','儿子'],
|
||||
'{G0},s,w':['媳妇','媳','妇'],
|
||||
'{G0},s,s':['孙','孙男','孙子'],
|
||||
'{G0},s,s,w':['孙妇'],
|
||||
'{G0},s,s,s':['曾孙','曾孙男'],
|
||||
'{G0},s,s,s,w':['曾孙妇'],
|
||||
'{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':['外孙','外孙男'],
|
||||
'{G0},d,s,w':['外孙妇'],
|
||||
'{G0},d,s,s':['外曾孙','外曾孙男'],
|
||||
'{G0},d,s,s,w':['外曾孙妇'],
|
||||
'{G0},d,s,s,s':['外玄孙','外玄孙男'],
|
||||
'{G0},d,s,s,d':['外玄孙女'],
|
||||
'{G0},d,s,d':['外曾孙女'],
|
||||
'{G0},d,s,d,h':['外曾孙婿'],
|
||||
'{G0},d,s,d,s':['外玄外孙','外玄外孙男'],
|
||||
'{G0},d,s,d,d':['外玄外孙女'],
|
||||
'{G0},d,d':['外孙女'],
|
||||
'{G0},d,d,h':['外孙婿'],
|
||||
'{G0},d,d,s':['外曾外孙','外曾外孙男'],
|
||||
'{G0},d,d,s,w':['外曾外孙妇'],
|
||||
'{G0},d,d,s,s':['外曾外曾孙','外曾外曾孙男'],
|
||||
'{G0},d,d,s,d':['外曾外曾孙女'],
|
||||
'{G0},d,d,d':['外曾外孙女'],
|
||||
'{G0},d,d,d,h':['外曾外孙婿'],
|
||||
'{G0},d,d,d,s':['外曾外曾外孙'],
|
||||
'{G0},d,d,d,d':['外曾外曾外孙女'],
|
||||
// 姻亲关系
|
||||
'{M2W},xb':['舅祖父'],
|
||||
'{M2W},xb,w':['舅祖母'],
|
||||
'{M2W},xb,s&o':['舅表伯父'],
|
||||
'{M2W},xb,s&o,w':['舅表伯母'],
|
||||
'{M2W},xb,s&l':['舅表叔父'],
|
||||
'{M2W},xb,s&l,w':['舅表叔母'],
|
||||
'{M2W},xb,d':['舅表姑母'],
|
||||
'{M2W},xb,d,h':['舅表姑父'],
|
||||
'{M2W},xs':['姨祖母'],
|
||||
'{M2W},xs,h':['姨祖父'],
|
||||
'{M2W},xs,s&o':['姨伯父'],
|
||||
'{M2W},xs,s&o,w':['姨伯母'],
|
||||
'{M2W},xs,s&l':['姨叔父'],
|
||||
'{M2W},xs,s&l,w':['姨叔母'],
|
||||
'{M2W},xs,d':['姨姑母'],
|
||||
'{M2W},xs,d,h':['姨姑父'],
|
||||
'{M2M},xb':['叔祖父'],
|
||||
'{M2M},xb,w':['叔祖母'],
|
||||
'{M2M},xb,s&o':['堂伯父'],
|
||||
'{M2M},xb,s&o,w':['堂伯母'],
|
||||
'{M2M},xb,s&l':['堂叔父'],
|
||||
'{M2M},xb,s&l,w':['堂叔母'],
|
||||
'{M2M},xb,d':['堂姑母'],
|
||||
'{M2M},xb,d,h':['堂姑父'],
|
||||
'{M2M},xs':['姑祖母'],
|
||||
'{M2M},xs,h':['姑祖父'],
|
||||
'{M2M},xs,s&o':['姑表伯父'],
|
||||
'{M2M},xs,s&o,w':['姑表伯母'],
|
||||
'{M2M},xs,s&l':['姑表叔父'],
|
||||
'{M2M},xs,s&l,w':['姑表叔母'],
|
||||
'{M2M},xs,d':['姑表姑母'],
|
||||
'{M2M},xs,d,h':['姑表姑父'],
|
||||
'{M1W},f':['外祖父'],
|
||||
'{M1W},f,xb,s':['堂舅父'],
|
||||
'{M1W},f,xb,s,w':['堂舅母'],
|
||||
'{M1W},f,xb,d':['堂姨母'],
|
||||
'{M1W},f,xb,d,h':['堂姨父'],
|
||||
'{M1W},f,ob':['伯外祖父'],
|
||||
'{M1W},f,ob,w':['伯外祖母'],
|
||||
'{M1W},f,lb':['叔外祖父'],
|
||||
'{M1W},f,lb,w':['叔外祖母'],
|
||||
'{M1W},f,xs':['姑外祖母'],
|
||||
'{M1W},f,xs,h':['姑外祖父'],
|
||||
'{M1W},f,xs,s':['姑表舅父'],
|
||||
'{M1W},f,xs,s,w':['姑表舅母'],
|
||||
'{M1W},f,xs,d':['姑表姨母'],
|
||||
'{M1W},f,xs,d,h':['姑表姨父'],
|
||||
'{M1W},m':['外祖母'],
|
||||
'{M1W},m,xb':['舅外祖父'],
|
||||
'{M1W},m,xb,w':['舅外祖母'],
|
||||
'{M1W},m,xb,s':['舅表舅父'],
|
||||
'{M1W},m,xb,s,w':['舅表舅母'],
|
||||
'{M1W},m,xb,d':['舅表姨母'],
|
||||
'{M1W},m,xb,d,h':['舅表姨父'],
|
||||
'{M1W},m,xs':['姨外祖母'],
|
||||
'{M1W},m,xs,h':['姨外祖父'],
|
||||
'{M1W},m,xs,s':['姨舅父'],
|
||||
'{M1W},m,xs,s,w':['姨舅母'],
|
||||
'{M1W},m,xs,d':['姨姨母'],
|
||||
'{M1W},m,xs,d,h':['姨姨父'],
|
||||
'{M1W},xb':['舅父'],
|
||||
'{M1W},xb,w':['舅母'],
|
||||
'{M1W},xb,[s|d]':['舅表兄弟姊妹'],
|
||||
'{M1W},xb,s':['舅表兄弟'],
|
||||
'{M1W},xb,s,w':['舅表兄弟妇'],
|
||||
'{M1W},xb,s&o':['舅表兄'],
|
||||
'{M1W},xb,s&o,w':['舅表兄妇'],
|
||||
'{M1W},xb,s&l':['舅表弟'],
|
||||
'{M1W},xb,s&l,w':['舅表弟妇'],
|
||||
'{M1W},xb,s,s':['舅表侄男','侄男'],
|
||||
'{M1W},xb,s,s,w':['舅表侄妇','侄妇'],
|
||||
'{M1W},xb,s,d':['舅表侄女','侄女'],
|
||||
'{M1W},xb,s,d,h':['舅表侄婿','侄婿'],
|
||||
'{M1W},xb,d':['舅表姊妹'],
|
||||
'{M1W},xb,d,h':['舅表姊妹壻'],
|
||||
'{M1W},xb,d&o':['舅表姊'],
|
||||
'{M1W},xb,d&o,h':['舅表姊壻'],
|
||||
'{M1W},xb,d&l':['舅表妹'],
|
||||
'{M1W},xb,d&l,h':['舅表妹壻'],
|
||||
'{M1W},xb,d,s':['舅表甥男','甥男'],
|
||||
'{M1W},xb,d,s,w':['舅表甥妇','甥妇'],
|
||||
'{M1W},xb,d,d':['舅表甥女','甥女'],
|
||||
'{M1W},xb,d,d,h':['舅表甥婿','甥婿'],
|
||||
'{M1W},xs':['姨母','姨妈'],
|
||||
'{M1W},xs,h':['姨父','姨丈','姨夫'],
|
||||
'{M1W},xs,[s|d]':['姨表兄弟姊妹'],
|
||||
'{M1W},xs,s':['姨表兄弟'],
|
||||
'{M1W},xs,s,w':['姨表兄弟妇'],
|
||||
'{M1W},xs,s&o':['姨表兄'],
|
||||
'{M1W},xs,s&o,w':['姨表兄妇'],
|
||||
'{M1W},xs,s&l':['姨表弟'],
|
||||
'{M1W},xs,s&l,w':['姨表弟妇'],
|
||||
'{M1W},xs,s,s':['姨表侄男','侄男'],
|
||||
'{M1W},xs,s,s,w':['姨表侄妇','侄妇'],
|
||||
'{M1W},xs,s,d':['姨表侄女','侄女'],
|
||||
'{M1W},xs,s,d,h':['姨表侄婿','侄婿'],
|
||||
'{M1W},xs,d':['姨表姊妹'],
|
||||
'{M1W},xs,d,h':['姨表姊妹壻'],
|
||||
'{M1W},xs,d&o':['姨表姊'],
|
||||
'{M1W},xs,d&o,h':['姨表姊壻'],
|
||||
'{M1W},xs,d&l':['姨表妹'],
|
||||
'{M1W},xs,d&l,h':['姨表妹壻'],
|
||||
'{M1W},xs,d,s':['姨表甥男','甥男'],
|
||||
'{M1W},xs,d,s,w':['姨表甥妇','甥妇'],
|
||||
'{M1W},xs,d,d':['姨表甥女','甥女'],
|
||||
'{M1W},xs,d,d,h':['姨表甥婿','甥婿'],
|
||||
'{M1M},f':['祖父'],
|
||||
'{M1M},f,xb,s&o':['堂伯父'],
|
||||
'{M1M},f,xb,s&o,w':['堂伯母'],
|
||||
'{M1M},f,xb,s&l':['堂叔父'],
|
||||
'{M1M},f,xb,s&l,w':['堂叔母'],
|
||||
'{M1M},f,xb,d':['堂姑母'],
|
||||
'{M1M},f,xb,d,h':['堂姑父'],
|
||||
'{M1M},f,ob':['伯祖父'],
|
||||
'{M1M},f,ob,w':['伯祖母'],
|
||||
'{M1M},f,lb':['叔祖父'],
|
||||
'{M1M},f,lb,w':['叔祖母'],
|
||||
'{M1M},f,xs':['姑祖母'],
|
||||
'{M1M},f,xs,h':['姑祖父'],
|
||||
'{M1M},f,xs,s&o':['姑表伯父'],
|
||||
'{M1M},f,xs,s&o,w':['姑表伯母'],
|
||||
'{M1M},f,xs,s&l':['姑表叔父'],
|
||||
'{M1M},f,xs,s&l,w':['姑表叔母'],
|
||||
'{M1M},f,xs,d':['姑表姑母'],
|
||||
'{M1M},f,xs,d,h':['姑表姑父'],
|
||||
'{M1M},m':['祖母'],
|
||||
'{M1M},m,xb':['舅祖父'],
|
||||
'{M1M},m,xb,w':['舅祖母'],
|
||||
'{M1M},m,xb,s&o':['舅表伯父'],
|
||||
'{M1M},m,xb,s&o,w':['舅表伯母'],
|
||||
'{M1M},m,xb,s&l':['舅表叔父'],
|
||||
'{M1M},m,xb,s&l,w':['舅表叔母'],
|
||||
'{M1M},m,xb,d':['舅表姑母'],
|
||||
'{M1M},m,xb,d,h':['舅表姑父'],
|
||||
'{M1M},m,xs':['姨祖母'],
|
||||
'{M1M},m,xs,h':['姨祖父'],
|
||||
'{M1M},m,xs,s&o':['姨伯父'],
|
||||
'{M1M},m,xs,s&o,w':['姨伯母'],
|
||||
'{M1M},m,xs,s&l':['姨叔父'],
|
||||
'{M1M},m,xs,s&l,w':['姨叔母'],
|
||||
'{M1M},m,xs,d':['姨姑母'],
|
||||
'{M1M},m,xs,d,h':['姨姑父'],
|
||||
'{M1M},xb':['叔伯父'],
|
||||
'{M1M},xb,w':['叔伯母'],
|
||||
'{M1M},ob':['伯父'],
|
||||
'{M1M},ob,w':['伯母'],
|
||||
'{M1M},lb':['叔父'],
|
||||
'{M1M},lb,w':['叔母'],
|
||||
'{M1M},xb,[s|d]':['叔表兄弟姊妹'],
|
||||
'{M1M},xb,s':['叔表兄弟'],
|
||||
'{M1M},xb,s,w':['叔表兄弟妇'],
|
||||
'{M1M},xb,s&o':['叔表兄'],
|
||||
'{M1M},xb,s&o,w':['叔表兄妇'],
|
||||
'{M1M},xb,s&l':['叔表弟'],
|
||||
'{M1M},xb,s&l,w':['叔表弟妇'],
|
||||
'{M1M},xb,s,s':['叔表侄男','侄男'],
|
||||
'{M1M},xb,s,s,w':['叔表侄妇','侄妇'],
|
||||
'{M1M},xb,s,d':['叔表侄女','侄女'],
|
||||
'{M1M},xb,s,d,h':['叔表侄婿','侄婿'],
|
||||
'{M1M},xb,d':['叔表姊妹'],
|
||||
'{M1M},xb,d,h':['叔表姊妹壻'],
|
||||
'{M1M},xb,d&o':['叔表姊'],
|
||||
'{M1M},xb,d&o,h':['叔表姊壻'],
|
||||
'{M1M},xb,d&l':['叔表妹'],
|
||||
'{M1M},xb,d&l,h':['叔表妹壻'],
|
||||
'{M1M},xb,d,s':['叔表甥男','甥男'],
|
||||
'{M1M},xb,d,s,w':['叔表甥妇','甥妇'],
|
||||
'{M1M},xb,d,d':['叔表甥女','甥女'],
|
||||
'{M1M},xb,d,d,h':['叔表甥婿','甥婿'],
|
||||
'{M1M},xs':['姑母','姑妈'],
|
||||
'{M1M},xs,h':['姑父','姑丈','姑夫'],
|
||||
'{M1M},xs,[s|d]':['姑表兄弟姊妹'],
|
||||
'{M1M},xs,s':['姑表兄弟'],
|
||||
'{M1M},xs,s,w':['姑表兄弟妇'],
|
||||
'{M1M},xs,s&o':['姑表兄'],
|
||||
'{M1M},xs,s&o,w':['姑表兄妇'],
|
||||
'{M1M},xs,s&l':['姑表弟'],
|
||||
'{M1M},xs,s&l,w':['姑表弟妇'],
|
||||
'{M1M},xs,s,s':['姑表侄男','侄男'],
|
||||
'{M1M},xs,s,s,w':['姑表侄妇','侄妇'],
|
||||
'{M1M},xs,s,d':['姑表侄女','侄女'],
|
||||
'{M1M},xs,s,d,h':['姑表侄婿','侄婿'],
|
||||
'{M1M},xs,d':['姑表姊妹'],
|
||||
'{M1M},xs,d,h':['姑表姊妹壻'],
|
||||
'{M1M},xs,d&o':['姑表姊'],
|
||||
'{M1M},xs,d&o,h':['姑表姊壻'],
|
||||
'{M1M},xs,d&l':['姑表妹'],
|
||||
'{M1M},xs,d&l,h':['姑表妹壻'],
|
||||
'{M1M},xs,d,s':['姑表甥男','甥男'],
|
||||
'{M1M},xs,d,s,w':['姑表甥妇','甥妇'],
|
||||
'{M1M},xs,d,d':['姑表甥女','甥女'],
|
||||
'{M1M},xs,d,d,h':['姑表甥婿','甥婿'],
|
||||
'{M0},f':['父'],
|
||||
'{M0},f,f':['祖父'],
|
||||
'{M0},f,f,ob':['伯祖父'],
|
||||
'{M0},f,f,ob,w':['伯祖母'],
|
||||
'{M0},f,f,lb':['叔祖父'],
|
||||
'{M0},f,f,lb,w':['叔祖母'],
|
||||
'{M0},f,f,xs':['姑祖母'],
|
||||
'{M0},f,f,xs,h':['姑祖父'],
|
||||
'{M0},f,m':['祖母'],
|
||||
'{M0},f,m,xb':['舅祖父'],
|
||||
'{M0},f,m,xb,w':['舅祖母'],
|
||||
'{M0},f,m,xs':['姨祖母'],
|
||||
'{M0},f,m,xs,h':['姨祖父'],
|
||||
'{M0},f,ob':['伯父'],
|
||||
'{M0},f,ob,w':['伯母'],
|
||||
'{M0},f,lb':['叔父'],
|
||||
'{M0},f,lb,w':['叔母'],
|
||||
'{M0},f,xb,[s|d]':['叔表兄弟姊妹','叔表姊妹兄弟'],
|
||||
'{M0},f,xb,s':['叔表兄弟'],
|
||||
'{M0},f,xb,s,w':['叔表兄弟妇'],
|
||||
'{M0},f,xb,s&o':['叔表兄'],
|
||||
'{M0},f,xb,s&o,w':['叔表兄妇'],
|
||||
'{M0},f,xb,s&l':['叔表弟'],
|
||||
'{M0},f,xb,s&l,w':['叔表弟妇'],
|
||||
'{M0},f,xb,d':['叔表姊妹'],
|
||||
'{M0},f,xb,d,h':['叔表姊妹壻'],
|
||||
'{M0},f,xb,d&o':['叔表姊'],
|
||||
'{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,[s|d]':['姑表兄弟姊妹','姑表姊妹兄弟'],
|
||||
'{M0},f,xs,s':['姑表兄弟'],
|
||||
'{M0},f,xs,s,w':['姑表兄弟妇'],
|
||||
'{M0},f,xs,s&o':['姑表兄'],
|
||||
'{M0},f,xs,s&o,w':['姑表兄妇'],
|
||||
'{M0},f,xs,s&l':['姑表弟'],
|
||||
'{M0},f,xs,s&l,w':['姑表弟妇'],
|
||||
'{M0},f,xs,d':['姑表姊妹'],
|
||||
'{M0},f,xs,d,h':['姑表姊妹壻'],
|
||||
'{M0},f,xs,d&o':['姑表姊'],
|
||||
'{M0},f,xs,d&o,h':['姑表姊壻'],
|
||||
'{M0},f,xs,d&l':['姑表妹'],
|
||||
'{M0},f,xs,d&l,h':['姑表妹壻'],
|
||||
'{M0},m':['母'],
|
||||
'{M0},m,f':['外祖父'],
|
||||
'{M0},m,f,ob':['伯外祖父'],
|
||||
'{M0},m,f,ob,w':['伯外祖母'],
|
||||
'{M0},m,f,lb':['叔外祖父'],
|
||||
'{M0},m,f,lb,w':['叔外祖母'],
|
||||
'{M0},m,f,xs':['姑外祖母'],
|
||||
'{M0},m,f,xs,h':['姑外祖父'],
|
||||
'{M0},m,m':['外祖母'],
|
||||
'{M0},m,m,xb':['舅外祖父'],
|
||||
'{M0},m,m,xb,w':['舅外祖母'],
|
||||
'{M0},m,m,xs':['姨外祖母'],
|
||||
'{M0},m,m,xs,h':['姨外祖父'],
|
||||
'{M0},m,xb':['舅父'],
|
||||
'{M0},m,xb,w':['舅母'],
|
||||
'{M0},m,xb,[s|d]':['舅表兄弟姊妹','舅表姊妹兄弟'],
|
||||
'{M0},m,xb,s':['舅表兄弟'],
|
||||
'{M0},m,xb,s,w':['舅表兄弟妇'],
|
||||
'{M0},m,xb,s&o':['舅表兄'],
|
||||
'{M0},m,xb,s&o,w':['舅表兄妇'],
|
||||
'{M0},m,xb,s&l':['舅表弟'],
|
||||
'{M0},m,xb,s&l,w':['舅表弟妇'],
|
||||
'{M0},m,xb,d':['舅表姊妹'],
|
||||
'{M0},m,xb,d,h':['舅表姊妹壻'],
|
||||
'{M0},m,xb,d&o':['舅表姊'],
|
||||
'{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,[s|d]':['姨兄弟姊妹','姨姊妹兄弟'],
|
||||
'{M0},m,xs,s':['姨兄弟'],
|
||||
'{M0},m,xs,s,w':['姨兄弟妇'],
|
||||
'{M0},m,xs,s&o':['姨兄'],
|
||||
'{M0},m,xs,s&o,w':['姨兄妇'],
|
||||
'{M0},m,xs,s&l':['姨弟'],
|
||||
'{M0},m,xs,s&l,w':['姨弟妇'],
|
||||
'{M0},m,xs,d':['姨姊妹'],
|
||||
'{M0},m,xs,d,h':['姨姊妹壻'],
|
||||
'{M0},m,xs,d&o':['姨姊'],
|
||||
'{M0},m,xs,d&o,h':['姨姊壻'],
|
||||
'{M0},m,xs,d&l':['姨妹'],
|
||||
'{M0},m,xs,d&l,h':['姨妹壻'],
|
||||
'{M0},xb':['兄弟'],
|
||||
'{M0},xb,w':['兄弟妇'],
|
||||
'{M0},xb&o':['兄'],
|
||||
'{M0},xb&o,w':['兄妇','兄嫂','嫂子'],
|
||||
'{M0},xb&l':['弟'],
|
||||
'{M0},xb&l,w':['弟妇','弟妹'],
|
||||
'{M0},xb,s':['侄男','侄子','侄儿'],
|
||||
'{M0},xb,s,w':['侄妇'],
|
||||
'{M0},xb,d':['侄女'],
|
||||
'{M0},xb,d,h':['侄婿'],
|
||||
'{M0},xs':['姊妹'],
|
||||
'{M0},xs,h':['姊妹壻'],
|
||||
'{M0},xs&o':['姊'],
|
||||
'{M0},xs&o,h':['姊壻','姐夫'],
|
||||
'{M0},xs&l':['妹'],
|
||||
'{M0},xs&l,h':['妹壻','妹夫'],
|
||||
'{M0},xs,s':['甥男'],
|
||||
'{M0},xs,s,w':['甥妇'],
|
||||
'{M0},xs,d':['甥女'],
|
||||
'{M0},xs,d,h':['甥婿'],
|
||||
'{M-1},f':['兄弟'],
|
||||
'{M-1},f&o':['兄'],
|
||||
'{M-1},f&l':['弟'],
|
||||
'{M-1},f,f':['父'],
|
||||
'{M-1},f,f,f':['祖父'],
|
||||
'{M-1},f,f,m':['祖母'],
|
||||
'{M-1},f,f,ob':['伯父'],
|
||||
'{M-1},f,f,ob,w':['伯母'],
|
||||
'{M-1},f,f,lb':['叔父'],
|
||||
'{M-1},f,f,lb,w':['叔母'],
|
||||
'{M-1},f,m':['母'],
|
||||
'{M-1},f,m,f':['外祖父'],
|
||||
'{M-1},f,m,m':['外祖母'],
|
||||
'{M-1},f,xb':['叔兄弟'],
|
||||
'{M-1},f,xb,w':['叔兄弟妇'],
|
||||
'{M-1},f,ob':['叔兄'],
|
||||
'{M-1},f,ob,w':['叔兄妇'],
|
||||
'{M-1},f,lb':['叔弟'],
|
||||
'{M-1},f,lb,w':['叔弟妇'],
|
||||
'{M-1},f,xb,s':['叔男'],
|
||||
'{M-1},f,xb,d':['叔女'],
|
||||
'{M-1},f,xs':['姑姊妹'],
|
||||
'{M-1},f,xs,h':['姑姊妹壻'],
|
||||
'{M-1},f,os':['姑姊'],
|
||||
'{M-1},f,os,h':['姑姊壻'],
|
||||
'{M-1},f,ls':['姑妹'],
|
||||
'{M-1},f,ls,h':['姑妹壻'],
|
||||
'{M-1},f,xs,s':['姑男'],
|
||||
'{M-1},f,xs,d':['姑女'],
|
||||
'{M-1},m':['姊妹'],
|
||||
'{M-1},m&o':['姊'],
|
||||
'{M-1},m&l':['妹'],
|
||||
'{M-1},m,f':['父'],
|
||||
'{M-1},m,f,f':['祖父'],
|
||||
'{M-1},m,f,m':['祖母'],
|
||||
'{M-1},m,m':['母'],
|
||||
'{M-1},m,m,f':['外祖父'],
|
||||
'{M-1},m,m,m':['外祖母'],
|
||||
'{M-1},m,xb':['舅兄弟'],
|
||||
'{M-1},m,xb,w':['舅兄弟妇'],
|
||||
'{M-1},m,ob':['舅兄'],
|
||||
'{M-1},m,ob,w':['舅兄妇'],
|
||||
'{M-1},m,lb':['舅弟'],
|
||||
'{M-1},m,lb,w':['舅弟妇'],
|
||||
'{M-1},m,xb,s':['舅男'],
|
||||
'{M-1},m,xb,d':['舅女'],
|
||||
'{M-1},m,xs':['姨姊妹'],
|
||||
'{M-1},m,xs,h':['姨姊妹壻'],
|
||||
'{M-1},m,os':['姨姊'],
|
||||
'{M-1},m,os,h':['姨姊壻'],
|
||||
'{M-1},m,ls':['姨妹'],
|
||||
'{M-1},m,ls,h':['姨妹壻'],
|
||||
'{M-1},m,xs,s':['姨男'],
|
||||
'{M-1},m,xs,d':['姨女'],
|
||||
'{M-1},xb':['男'],
|
||||
'{M-1},xb,w':['妇'],
|
||||
'{M-1},xb,s':['孙男'],
|
||||
'{M-1},xb,s,w':['孙妇'],
|
||||
'{M-1},xb,d':['孙女'],
|
||||
'{M-1},xb,d,h':['孙婿'],
|
||||
'{M-1},xs':['女'],
|
||||
'{M-1},xs,h':['婿'],
|
||||
'{M-1},xs,s':['外孙男'],
|
||||
'{M-1},xs,s,w':['外孙妇'],
|
||||
'{M-1},xs,d':['外孙女'],
|
||||
'{M-1},xs,d,h':['外孙婿'],
|
||||
'{M-2},f':['男'],
|
||||
'{M-2},m':['女'],
|
||||
'{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':['孙女'],
|
||||
'{M-2},xs,h':['孙婿'],
|
||||
};
|
@ -1,17 +0,0 @@
|
||||
/*
|
||||
* 只作为输入关系链判断
|
||||
*/
|
||||
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,473 +0,0 @@
|
||||
/*
|
||||
* 主要关系链
|
||||
*/
|
||||
export default {
|
||||
'':['自己','我','俺','吾','本人','在下'],
|
||||
// 主线
|
||||
'f,f,f,f,f,f,f,f,f,f,f,f':['先祖父','先太爷','十二世祖'],
|
||||
'f,f,f,f,f,f,f,f,f,f,f,m':['先祖母','先太奶'],
|
||||
'f,f,f,f,f,f,f,f,f,f,f':['始祖父','始太爷','十一世祖'],
|
||||
'f,f,f,f,f,f,f,f,f,f,m':['始祖母','始太奶'],
|
||||
'f,f,f,f,f,f,f,f,f,f':['开祖父','开太爷','十世祖'],
|
||||
'f,f,f,f,f,f,f,f,f,m':['开祖母','开太奶'],
|
||||
'f,f,f,f,f,f,f,f,f':['鼻祖父','鼻太爷','九世祖'],
|
||||
'f,f,f,f,f,f,f,f,m':['鼻祖母','鼻太奶'],
|
||||
'f,f,f,f,f,f,f,f':['远祖父','远太爷','八世祖'],
|
||||
'f,f,f,f,f,f,f,m':['远祖母','远太奶'],
|
||||
'f,f,f,f,f,f,f':['太祖父','太太爷','七世祖'],
|
||||
'f,f,f,f,f,f,m':['太祖母','太太奶'],
|
||||
'f,f,f,f,f,f':['烈祖父','烈太爷','六世祖'],
|
||||
'f,f,f,f,f,m':['烈祖母','烈太奶'],
|
||||
'f,f,f,f,f':['天祖父','天太爷','五世祖'],
|
||||
'f,f,f,f,m':['天祖母','天太奶'],
|
||||
// 高祖辈
|
||||
'f,f,f,f':['高祖父','外曾外曾外毑父','曾曾祖父','祖太公','祖太爷','高太爷','祖太翁','祖太爷爷','四世祖'],
|
||||
'f,f,f,m':['高祖母','外曾外曾外毑母','曾曾祖母','祖太婆','祖太奶','高太奶','祖太姆','祖太奶奶'],
|
||||
'f,f,m,f':['高外祖父','外曾外曾毑父','高外翁'],
|
||||
'f,f,m,m':['高外祖母','外曾外曾毑母','高外婆'],
|
||||
'f,m,f,f':['曾外曾祖父','外高外毑父'],
|
||||
'f,m,f,m':['曾外曾祖母','外高外毑母'],
|
||||
'f,m,m,f':['曾外曾外祖父','外高毑父'],
|
||||
'f,m,m,m':['曾外曾外祖母','外高毑母'],
|
||||
'm,f,f,f':['外高祖父','曾外曾外毑父'],
|
||||
'm,f,f,m':['外高祖母','曾外曾外毑母'],
|
||||
'm,f,m,f':['外高外祖父','曾外曾祖毑父'],
|
||||
'm,f,m,m':['外高外祖母','曾外曾祖毑母'],
|
||||
'm,m,f,f':['外曾外曾祖父','高外毑父'],
|
||||
'm,m,f,m':['外曾外曾祖母','高外毑母'],
|
||||
'm,m,m,f':['外曾外曾外祖父','高毑父'],
|
||||
'm,m,m,m':['外曾外曾外祖母','高毑母'],
|
||||
// 曾祖辈
|
||||
'f,f,f':['曾祖父','曾祖','外曾外毑父','太公','太爷','老太爷','太翁','太爷爷','曾爷爷','公太','佬嗲','祖爷','三世祖'],
|
||||
'f,f,m':['曾祖母','外曾外毑母','太婆','太奶','老太奶','太嬷','太姆','太奶奶','曾奶奶','婆太','老娭毑'],
|
||||
'f,m,f':['曾外祖父','曾外祖','外曾毑父','太外公','太外爷','太外翁','太外爷爷'],
|
||||
'f,m,m':['曾外祖母','外曾毑母','太外婆','太外奶','太外嬷','太外姆','太外奶奶'],
|
||||
'm,f,f':['外曾祖父','外曾祖','曾外毑父','外太公','外太爷','外太翁','外太爷爷'],
|
||||
'm,f,m':['外曾祖母','曾外毑母','外太婆','外太奶','外太嬷','外太姆','外太奶奶'],
|
||||
'm,m,f':['外曾外祖父','外曾外祖','曾毑父','外太外公','外太外爷','外太外翁','外太外爷爷','外太姥爷'],
|
||||
'm,m,m':['外曾外祖母','曾毑母','外太外婆','外太外奶','外太外嬷','外太外姆','外太外奶奶','外太姥姥'],
|
||||
// 祖父辈
|
||||
'f,f':['爷爷','祖父','祖公','阿爷','阿公','奶爹','亚爷','亚公','依爷','大父','祖翁','嗲嗲','爷','祖君','奶爷','爷儿','爷老','爷老子','爷老倌','二世祖'],
|
||||
'f,m':['奶奶','祖母','祖婆','阿奶','阿婆','奶娘','亚嬷','亚婆','依奶','大母','祖嫲','嫲嫲','奶','重慈','阿嬷','婻婻','娭毑','嗯奶','娘姆','媪婆','亲婆'],
|
||||
'm,f':['外公','外祖父','姥爷','阿公','外爷','客公','毑父','毑公','姥公','舅家爷','嘎公','嘎爹','嘎嘎爹','嘎爷爷','尕公','毑爹','毑爷','外大父','姥爹','魏公','魏爷','简爷'],
|
||||
'm,m':['外婆','外祖母','姥姥','阿婆','外奶','客婆','毑母','毑婆','姥婆','舅家婆','嘎嘎','嘎婆','嘎嘎婆','嘎奶奶','尕婆','毑娘','毑毑','外大母','姥娘','魏婆','魏奶','简婆','阿嬷','外嬷','嫲嫲','好婆','嫏嫏','嫏娘','姥'],
|
||||
'f,f,ob':['伯公','伯祖','伯翁','大爷爷','大嗲','大爷','大公','大阿爷'],
|
||||
'f,f,ob,w':['伯婆','姆婆','大奶奶','伯娭毑'],
|
||||
'f,f,lb':['叔公','叔祖','叔翁','小爷爷','晚公','幺爷','细嗲'],
|
||||
'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,h':['姨爷爷','姨公公','姨爹','姨丈公','丈公'],
|
||||
'm,f,ob':['伯外公','外伯祖','伯外祖','大外公','大姥爷','大外爷'],
|
||||
'm,f,ob,w':['伯外婆','外姆婆','大外婆','大姥姥','大姥奶'],
|
||||
'm,f,lb':['叔外公','外叔祖','叔外祖','小外公','小姥爷','小外爷'],
|
||||
'm,f,lb,w':['叔外婆','外婶婆','小外婆','小姥姥','婶姥姥','小姥奶'],
|
||||
'm,f,xs':['姑外婆','姑婆','恩婆'],
|
||||
'm,f,xs,h':['姑外公','姑公','恩爹','外姑丈公','外丈公'],
|
||||
'm,m,xb':['舅外公','舅公','舅爹'],
|
||||
'm,m,xb,w':['舅外婆','舅婆','妗姥姥','妗姥娘','妗姥','外妗婆'],
|
||||
'm,m,xs':['姨外婆','姨婆'],
|
||||
'm,m,xs,h':['姨外公','姨公','外姨丈公','外丈公'],
|
||||
// 父系
|
||||
'f':['爸爸','父亲','老父亲','老爸','阿爸','阿父','阿爹','老窦','爹地','依爹','老爹','老汉','老爷子','老子','牙老子','爸','父','爹','老汉儿','牙老倌','爸比','爹爹','爹啲','一世祖'],
|
||||
'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,w':['堂弟媳','堂弟妇','堂弟妹'],
|
||||
'f,xb,s,s':['堂侄','再从子'],
|
||||
'f,xb,s,s,w':['堂侄媳妇'],
|
||||
'f,xb,s,s,s':['堂侄孙','再从孙'],
|
||||
'f,xb,s,s,s,s':['堂曾孙','再曾孙'],
|
||||
'f,xb,s,s,s,s,s':['堂玄孙','再玄孙'],
|
||||
'f,xb,s,d':['堂侄女'],
|
||||
'f,xb,s,d,h':['堂侄女婿'],
|
||||
'f,xb,d&o':['堂姐','堂大姐'],
|
||||
'f,xb,d&o,h':['堂姐夫'],
|
||||
'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,f,xb,s&o':['堂伯'],
|
||||
'f,f,xb,s&o,w':['堂伯母'],
|
||||
'f,f,xb,s&l':['堂叔'],
|
||||
'f,f,xb,s&l,w':['堂婶'],
|
||||
'f,f,xb,s':['堂伯叔父','堂叔伯','从父'],
|
||||
'f,f,xb,s,w':['堂伯叔母','从母'],
|
||||
'f,f,xb,s,s&o':['从堂兄'],
|
||||
'f,f,xb,s,s&l':['从堂弟'],
|
||||
'f,f,xb,s,s,s':['从堂侄','三从子'],
|
||||
'f,f,xb,s,s,s,s':['从堂侄孙','三从孙'],
|
||||
'f,f,xb,s,s,s,s,s':['从堂侄曾孙','三曾孙'],
|
||||
'f,f,xb,s,s,s,s,s,s':['从堂侄玄孙','三玄孙'],
|
||||
'f,f,xb,d':['堂姑'],
|
||||
'f,f,xb,d,h':['堂姑丈'],
|
||||
'f,f,f,xb':['伯叔曾祖父'],
|
||||
'f,f,f,xb,w':['伯叔曾祖母'],
|
||||
'f,f,f,xb,s':['堂伯叔祖父'],
|
||||
'f,f,f,xb,s,w':['堂伯叔祖母'],
|
||||
'f,f,f,xb,s,s&o':['从伯父'],
|
||||
'f,f,f,xb,s,s&o,w':['从伯母'],
|
||||
'f,f,f,xb,s,s&l':['从叔父'],
|
||||
'f,f,f,xb,s,s&l,w':['从叔母'],
|
||||
'f,f,f,xb,s,s':['从伯叔父','再从父'],
|
||||
'f,f,f,xb,s,s,w':['从伯叔母','再从母'],
|
||||
'f,f,f,xb,s,s,s&o':['族兄'],
|
||||
'f,f,f,xb,s,s,s&l':['族弟'],
|
||||
'f,f,f,xb,s,s,s,s':['族侄','四从子','族子'],
|
||||
'f,f,f,xb,s,s,s,s,s':['族侄孙','四从孙','族孙'],
|
||||
'f,f,f,xb,s,s,s,s,s,s':['族侄曾孙','四曾孙','族曾孙'],
|
||||
'f,f,f,xb,s,s,s,s,s,s,s':['族侄玄孙','四玄孙','族玄孙'],
|
||||
'f,f,f,f,xb':['伯叔高祖父'],
|
||||
'f,f,f,f,xb,w':['伯叔高祖母'],
|
||||
'f,f,f,f,xb,s':['堂伯叔曾祖父'],
|
||||
'f,f,f,f,xb,s,w':['堂伯叔曾祖母'],
|
||||
'f,f,f,f,xb,s,s':['从伯叔祖父'],
|
||||
'f,f,f,f,xb,s,s,w':['从伯叔祖母'],
|
||||
'f,f,f,f,xb,s,s,s&o':['族伯父'],
|
||||
'f,f,f,f,xb,s,s,s&o,w':['族伯母'],
|
||||
'f,f,f,f,xb,s,s,s&l':['族叔父'],
|
||||
'f,f,f,f,xb,s,s,s&l,w':['族叔母'],
|
||||
'f,f,f,f,xb,s,s,s':['族伯叔父','三从父','族父'],
|
||||
'f,f,f,f,xb,s,s,s,w':['族伯叔母','三从母','族母'],
|
||||
// 母系
|
||||
'm':['妈妈','母亲','老母亲','老妈','阿妈','阿母','阿娘','老母','妈咪','依妈','老娘','老乸','老妈子','妈子','娘老子','妈','母','娘','阿毑','姆嬷','姆妈','娘亲'],
|
||||
'm,ob':['大舅','大舅舅','舅伯','元舅'],
|
||||
'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,f,xb,s':['堂舅'],
|
||||
'm,f,xb,s,w':['堂舅妈'],
|
||||
'm,f,xb,d':['堂姨'],
|
||||
'm,f,xb,d,h':['堂姨丈'],
|
||||
// 婆家
|
||||
'h,f,f,f':['曾祖公父','曾祖公','太公翁'],
|
||||
'h,f,f,m':['曾祖婆母','曾祖婆','太奶亲'],
|
||||
'h,f,m,f':['曾外祖公父','曾外祖公'],
|
||||
'h,f,m,m':['曾外祖婆母','曾外祖婆'],
|
||||
'h,m,f,f':['外曾祖公父','外曾祖公'],
|
||||
'h,m,f,m':['外曾祖婆母','外曾祖婆'],
|
||||
'h,m,m,f':['外曾外祖公父','外曾外祖公'],
|
||||
'h,m,m,m':['外曾外祖婆母','外曾外祖婆'],
|
||||
'h,f,f,f,ob':['伯曾祖公父','伯曾祖公','太伯翁'],
|
||||
'h,f,f,f,ob,w':['伯曾祖婆母','伯曾祖婆','太姆婆'],
|
||||
'h,f,f,f,lb':['叔曾祖公父','叔曾祖公','太叔翁'],
|
||||
'h,f,f,f,lb,w':['叔曾祖婆母','叔曾祖婆','太婶婆'],
|
||||
'h,f,f,f,xs':['姑曾祖婆母','姑曾祖婆'],
|
||||
'h,f,f,f,xs,h':['姑曾祖公父','姑曾祖婆'],
|
||||
'h,f,f':['祖公父','祖公','祖公公','祖翁','奶公父'],
|
||||
'h,f,m':['祖婆母','祖婆','祖婆婆','奶婆母'],
|
||||
'h,m,f':['外祖公父','毑公父','外祖公','外祖公公','姥公父','姥公'],
|
||||
'h,m,m':['外祖婆母','毑婆母','外祖婆','外祖婆婆','姥婆母','姥婆'],
|
||||
'h,f':['公公','公父','家公','家爷','大官','老公公','老人公','大人公','公公爸','公爹','翁亲','君舅','老公爹','家官','老官','婆父','婆爹'],
|
||||
'h,m':['婆婆','婆母','家婆','家娘','大家','老婆婆','老人婆','大人婆','婆婆妈','婆妈','姑亲','君姑','婆母娘','婆子妈','阿姑'],
|
||||
'h,f,ob':['伯公父','伯公','伯翁','伯公公','伯祖','婆婆伯'],
|
||||
'h,f,ob,w':['伯婆母','伯婆','姆婆','伯婆婆','伯姆','婆婆伯姆'],
|
||||
'h,f,lb':['叔公父','叔公','叔翁','叔公公','叔祖','婆婆叔'],
|
||||
'h,f,lb,w':['叔婆母','叔婆','婶婆','婶婆婆','婶亲','婆婆婶子'],
|
||||
'h,f,xs':['姑婆母','姑婆','姑婆婆','婆婆姑'],
|
||||
'h,f,xs,h':['姑公父','姑公','姑公公','婆婆姑夫'],
|
||||
'h,m,xb':['舅公父','舅公','舅公公'],
|
||||
'h,m,xb,w':['舅婆母','舅婆','妗婆婆','舅婆婆'],
|
||||
'h,m,xs':['姨婆母','姨婆','姨婆婆'],
|
||||
'h,m,xs,h':['姨公父','姨公','姨公公'],
|
||||
'h':['老公','丈夫','先生','夫','男人','新郎','爱爷','夫亲','夫君','官人','汉子','老头子','郎君','相公','夫婿','良人','老公仔','爱人','老伴','那口子','配偶','伴侣','伉俪','卿卿'],
|
||||
'h,ob':['大伯子','大伯儿','大伯兄','伯子','伯仔','伯兄','阿伯','大伯爷','伯爷子','婿伯'],
|
||||
'h,ob,w':['大婶子','大婶儿','大叔兄妇','伯兄妇','伯嫂','伯妇','伯姆','姒妇','姒姆','大伯嫂','姆姆','大姆','大伯妇','大伯娘','姐妇','阿姆'],
|
||||
'h,lb':['小叔子','小叔儿','小叔弟','叔子','叔仔','叔弟','阿叔','叔郎','小郎'],
|
||||
'h,lb,w':['小婶子','小婶儿','小叔弟妇','叔弟妇','叔嫂','叔妇','叔姆','娣妇','娣姆','小叔妇','婶婶','小婶','小婶婶'],
|
||||
'h,xb,s':['叔侄'],
|
||||
'h,xb,d':['叔侄女'],
|
||||
'h,os':['大姑子','大姑姐','大姑儿','大姑娘','姑姊','婆姐','婆婆姐','大娘姑'],
|
||||
'h,os,h':['大姑夫','大姑姐夫','大亘子','婆姐夫','婆婆姐夫'],
|
||||
'h,ls':['小姑子','小姑妹','小姑儿','小姑娘','姑妹','婆妹','婆婆妹'],
|
||||
'h,ls,h':['小姑夫','小姑妹夫','小亘子','婆妹夫','婆婆妹夫'],
|
||||
'h,xs':['姑子','夫姑'],
|
||||
'h,xs,h':['姑夫','姑郎'],
|
||||
'h,xs,s':['姑甥'],
|
||||
'h,xs,d':['姑甥女'],
|
||||
// 岳家
|
||||
'w,f,f,f':['曾祖岳父','曾祖丈人','太爷丈人','祖爷丈人'],
|
||||
'w,f,f,m':['曾祖岳母','曾祖丈母','曾祖丈母娘','祖奶丈母娘','太奶丈母娘'],
|
||||
'w,f,m,f':['曾外祖岳父','曾外祖丈人','祖姥爷丈人','太姥爷丈'],
|
||||
'w,f,m,m':['曾外祖岳母','曾外祖丈母','曾外祖丈母娘','祖姥丈母娘','太姥丈母娘'],
|
||||
'w,m,f,f':['外曾祖岳父','外曾祖丈人','祖奶爷丈人','太奶爷丈人','祖姥爷丈人','太姥爷丈人'],
|
||||
'w,m,f,m':['外曾祖岳母','外曾祖丈母','太奶丈母娘','祖姥丈母娘','太姥丈母娘'],
|
||||
'w,m,m,f':['外曾外祖岳父','外曾外祖丈人','祖姥爷丈人','太姥爷丈人'],
|
||||
'w,m,m,m':['外曾外祖岳母','外曾外祖丈母','外曾外祖丈母娘','祖姥丈母娘','太姥丈母娘'],
|
||||
'w,f,f':['祖岳父','太岳父','奶岳父','祖丈人','爷丈人','奶爷丈人','奶丈爷','奶丈人','老丈爷'],
|
||||
'w,f,m':['祖岳母','太岳母','奶岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈姥','奶丈母','老丈姥'],
|
||||
'w,f,ob':['伯岳父'],
|
||||
'w,f,ob,w':['伯岳母'],
|
||||
'w,f,lb':['叔岳父'],
|
||||
'w,f,lb,w':['叔岳母'],
|
||||
'w,f,f,xb,s&o':['姻伯丈'],
|
||||
'w,f,f,xb,s&o,w':['姻姆'],
|
||||
'w,f,f,xb,s&l':['姻叔丈'],
|
||||
'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,xb':['舅子','舅佬','妻舅','老婆舅','阿舅','亲家舅','舅老倌'],
|
||||
'w,xb,w':['舅嫂','舅妇','舅姆','妻妗','妗仔','妗子','妗儿'],
|
||||
'w,xb,s':['舅侄'],
|
||||
'w,xb,d':['舅侄女'],
|
||||
'w,os':['大姨子','大姨姐','大姨儿','姨姐'],
|
||||
'w,os,h':['大姨夫','大姨姐夫','姨姐夫','襟兄','大尹子'],
|
||||
'w,ls':['小姨子','小姨妹','小茙儿','姨妹','姨仔','姨妹子'],
|
||||
'w,ls,h':['小姨夫','小姨妹夫','姨妹夫','小茙夫','襟弟','小尹子'],
|
||||
'w,xs':['姨子','妻姨'],
|
||||
'w,xs,h':['连襟','姨夫','连桥','两桥','两乔','姨夫爷','老襟','一担挑','老挑','挑担','担儿挑','连襟儿','襟兄弟','友婿','妻尹','娅'],
|
||||
'w,xs,s':['姨甥'],
|
||||
'w,xs,d':['姨甥女'],
|
||||
// 兄弟姐妹系
|
||||
'ob':['哥哥','哥','胞兄','亲哥','兄亲','老哥','依哥','阿哥','兄台','大佬','家兄','兄长','元兄','长兄','几哥'],
|
||||
'ob,w':['嫂子','嫂','嫂嫂','阿嫂','家嫂','兄姊','兄嫂','兄妇','兄妻','几嫂'],
|
||||
'ob,s':['侄子','兄子'],
|
||||
'ob,d':['侄女','兄女'],
|
||||
'lb':['弟弟','弟','胞弟','亲弟','弟亲','老弟','依弟','阿弟','弟子','细佬','小弟','几弟'],
|
||||
'lb,w':['弟妹','弟媳','弟媳妇','弟媳妇子','弟新妇','老弟嫂'],
|
||||
'lb,s':['侄子','弟子'],
|
||||
'lb,d':['侄女','弟女'],
|
||||
'xb,s':['侄子','侄男','侄儿子','侄小子','嫡侄','亲侄','侄儿','侄仔','阿侄','老侄','侄'],
|
||||
'xb,s,w':['侄媳妇','侄媳','侄嫂','侄妇'],
|
||||
'xb,d':['侄女','侄囡','侄女儿','侄丫头','侄闺女'],
|
||||
'xb,d,h':['侄女婿','侄婿','侄郎'],
|
||||
'os':['姐姐','姐','胞姐','亲姐','姊亲','老姐','依姐','阿姐','姊台','家姐','长姐','姊仔','几姐'],
|
||||
'os,h':['姐夫','姐丈','姐婿','姐郎','姊兄','姐夫哥','胞姐夫'],
|
||||
'ls':['妹妹','妹','胞妹','亲妹','妹亲','老妹','依妹','阿妹','妹子','小妹','妹儿','几妹'],
|
||||
'ls,h':['妹夫','妹丈','妹婿','妹郎','妹弟','妹夫子','胞妹夫'],
|
||||
'xs,s':['外甥','甥子','甥男','甥儿','甥儿子','甥仔','甥'],
|
||||
'xs,s,w':['甥媳妇','甥媳','甥嫂','甥妇','甥儿息妇儿'],
|
||||
'xs,s,s':['甥孙','远甥','弥甥'],
|
||||
'xs,s,d':['甥孙女','远甥女','弥甥女'],
|
||||
'xs,d':['外甥女','甥女','甥囡','甥女儿','甥闺女'],
|
||||
'xs,d,h':['甥女婿','甥婿','甥郎','甥儿息婿儿'],
|
||||
// 子系
|
||||
's':['儿子','男儿','息男','闺男','囝囝','囝男','囝儿','小子','娃子','男亲','伢子','长子','次子','幼子','儿','仔','囝','子','阿仔','仔仔','后生','公子','少爷','一世孙'],
|
||||
's,w':['儿媳','儿媳妇','息妇儿','儿媳妇儿','新妇','新妇囝','心抱','息妇','儿妇','子妇','小妇','少奶奶','少夫人'],
|
||||
's,w,f':['亲家公'],
|
||||
's,w,f,f&o':['姻伯'],
|
||||
's,w,f,f&l':['姻叔'],
|
||||
's,w,m':['亲家母'],
|
||||
's,w,xb':['姻侄','世侄'],
|
||||
's,w,xb,w':['姻侄媳'],
|
||||
's,w,xb,s':['姻侄孙'],
|
||||
's,w,xb,d':['姻侄孙女'],
|
||||
's,w,xs':['姻侄女'],
|
||||
's,w,xs,h':['姻侄婿'],
|
||||
's,w,xs,s':['姻侄外孙'],
|
||||
's,w,xs,d':['姻侄外孙女'],
|
||||
's,s':['孙子','孙男','孙男儿','孙儿','长孙','嗣孙','孙仔','孙囝','孙娃子','孙伢子','二世孙'],
|
||||
's,s,w':['孙媳妇','孙媳','孙妇','孙息妇','孙新妇'],
|
||||
's,s,s':['曾孙','曾孙男','重孙','重孙子','息仔','三世孙'],
|
||||
's,s,s,w':['曾孙妇','重孙媳妇'],
|
||||
'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,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,w':['耳孙媳妇'],
|
||||
'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,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,w':['承孙媳妇'],
|
||||
's,s,s,s,s,s,s,s,s,s,s,d':['承孙女'],
|
||||
's,s,s,s,s,s,s,s,s,s,s,d,h':['承孙女婿'],
|
||||
's,s,s,s,s,s,s,s,s,s,d':['胎孙女'],
|
||||
's,s,s,s,s,s,s,s,s,s,d,h':['胎孙女婿'],
|
||||
's,s,s,s,s,s,s,s,s,s,d,s':['承外孙'],
|
||||
's,s,s,s,s,s,s,s,s,s,d,s,w':['承外孙媳妇'],
|
||||
's,s,s,s,s,s,s,s,s,s,d,d':['承外孙女'],
|
||||
's,s,s,s,s,s,s,s,s,s,d,d,h':['承外孙女婿'],
|
||||
's,s,s,s,s,s,s,s,s,d':['弥孙女'],
|
||||
's,s,s,s,s,s,s,s,s,d,h':['弥孙女婿'],
|
||||
's,s,s,s,s,s,s,s,s,d,s':['胎外孙'],
|
||||
's,s,s,s,s,s,s,s,s,d,s,w':['胎外孙媳妇'],
|
||||
's,s,s,s,s,s,s,s,s,d,d':['胎外孙女'],
|
||||
's,s,s,s,s,s,s,s,s,d,d,h':['胎外孙女婿'],
|
||||
's,s,s,s,s,s,s,s,d':['耳孙女'],
|
||||
's,s,s,s,s,s,s,s,d,h':['耳孙女婿'],
|
||||
's,s,s,s,s,s,s,s,d,s':['弥外孙'],
|
||||
's,s,s,s,s,s,s,s,d,s,w':['弥外孙媳妇'],
|
||||
's,s,s,s,s,s,s,s,d,d':['弥外孙女'],
|
||||
's,s,s,s,s,s,s,s,d,d,h':['弥外孙女婿'],
|
||||
's,s,s,s,s,s,s,d':['云孙女'],
|
||||
's,s,s,s,s,s,s,d,h':['云孙女婿'],
|
||||
's,s,s,s,s,s,s,d,s':['耳外孙'],
|
||||
's,s,s,s,s,s,s,d,s,w':['耳外孙媳妇'],
|
||||
's,s,s,s,s,s,s,d,d':['耳外孙女'],
|
||||
's,s,s,s,s,s,s,d,d,h':['耳外孙女婿'],
|
||||
's,s,s,s,s,s,d':['仍孙女','礽孙女'],
|
||||
's,s,s,s,s,s,d,h':['仍孙女婿'],
|
||||
's,s,s,s,s,s,d,s':['云外孙'],
|
||||
's,s,s,s,s,s,d,s,w':['云外孙媳妇'],
|
||||
's,s,s,s,s,s,d,d':['云外孙女'],
|
||||
's,s,s,s,s,s,d,d,h':['云外孙女婿'],
|
||||
's,s,s,s,s,d':['晜孙女'],
|
||||
's,s,s,s,s,d,h':['晜孙女婿'],
|
||||
's,s,s,s,s,d,s':['仍外孙'],
|
||||
's,s,s,s,s,d,s,w':['仍外孙媳妇'],
|
||||
's,s,s,s,s,d,d':['仍外孙女'],
|
||||
's,s,s,s,s,d,d,h':['仍外孙女婿'],
|
||||
's,s,s,s,d':['来孙女'],
|
||||
's,s,s,s,d,h':['来孙女婿'],
|
||||
's,s,s,s,d,s':['晜外孙'],
|
||||
's,s,s,s,d,s,w':['晜外孙媳妇'],
|
||||
's,s,s,s,d,d':['晜外孙女'],
|
||||
's,s,s,s,d,d,h':['晜外孙女婿'],
|
||||
's,s,s,d':['玄孙女','元孙女','膀孙女'],
|
||||
's,s,s,d,h':['玄孙女婿'],
|
||||
's,s,s,d,s':['来外孙'],
|
||||
's,s,s,d,s,w':['来外孙媳妇'],
|
||||
's,s,s,d,d':['来外孙女'],
|
||||
's,s,s,d,d,h':['来外孙女婿'],
|
||||
's,s,d':['曾孙女','重孙女','息女'],
|
||||
's,s,d,h':['曾孙女婿'],
|
||||
's,s,d,s':['玄外孙'],
|
||||
's,s,d,s,w':['玄外孙媳妇'],
|
||||
's,s,d,d':['玄外孙女'],
|
||||
's,s,d,d,h':['玄外孙女婿'],
|
||||
's,d':['孙女','孙女儿','孙囡','孙囡儿','女孙','孙女子'],
|
||||
's,d,h':['孙女婿','孙婿','孙郎','孙息婿'],
|
||||
's,d,s':['曾外孙','外息仔'],
|
||||
's,d,s,w':['曾外孙媳妇'],
|
||||
's,d,s,s':['曾外曾孙'],
|
||||
's,d,s,s,w':['曾外曾孙媳妇'],
|
||||
's,d,s,d':['曾外曾孙女'],
|
||||
's,d,s,d,h':['曾外曾孙女婿'],
|
||||
's,d,d':['曾外孙女','外息女'],
|
||||
's,d,d,h':['曾外孙女婿'],
|
||||
's,d,d,s':['曾外曾外孙'],
|
||||
's,d,d,s,w':['曾外曾外孙媳妇'],
|
||||
's,d,d,d':['曾外曾外孙女'],
|
||||
's,d,d,d,h':['曾外曾外孙女婿'],
|
||||
'd':['女儿','千金','小姐','掌上明珠','息女','闺女','囡囡','囡女','囡儿','乖囡','囡嗯','丫头','姑娘','妮子','女亲','长女','次女','幼女','女','阿女','女女'],
|
||||
'd,h':['女婿','姑爷','姑爷儿','女婿子','女婿儿','儿婿','子婿','息婿','小婿','快婿','郎婿','郎婿子','息婿儿','囝婿','囡婿','东床','半子','甥馆','女夫'],
|
||||
'd,h,f':['亲家公'],
|
||||
'd,h,f,f&o':['姻伯'],
|
||||
'd,h,f,f&l':['姻叔'],
|
||||
'd,h,m':['亲家母'],
|
||||
'd,h,xb':['姻侄','世侄'],
|
||||
'd,h,xb,w':['姻侄媳'],
|
||||
'd,h,xb,s':['姻侄孙'],
|
||||
'd,h,xb,d':['姻侄孙女'],
|
||||
'd,h,xs':['姻侄女'],
|
||||
'd,h,xs,h':['姻侄婿'],
|
||||
'd,h,xs,s':['姻侄外孙'],
|
||||
'd,h,xs,d':['姻侄外孙女'],
|
||||
'd,s':['外孙','外孙子','外孙儿'],
|
||||
'd,s,w':['外孙媳妇','外孙妇','外孙新妇'],
|
||||
'd,s,s':['外曾孙','重外孙','外息仔'],
|
||||
'd,s,s,w':['外曾孙媳妇','外曾孙妇'],
|
||||
'd,s,s,s':['外玄孙','外元孙','外膀孙'],
|
||||
'd,s,s,s,w':['外玄孙媳妇'],
|
||||
'd,s,s,d':['外玄孙女','外元孙女','外膀孙女'],
|
||||
'd,s,s,d,h':['外玄孙女婿'],
|
||||
'd,s,d':['外曾孙女','重外孙女','外息女'],
|
||||
'd,s,d,h':['外曾孙女婿','重外孙女婿'],
|
||||
'd,s,d,s':['外玄外孙'],
|
||||
'd,s,d,s,w':['外玄外孙媳妇'],
|
||||
'd,s,d,d':['外玄外孙女'],
|
||||
'd,s,d,d,h':['外玄外孙女婿'],
|
||||
'd,d':['外孙女','外孙囡','外孙女儿'],
|
||||
'd,d,h':['外孙女婿','外孙婿','外孙郎'],
|
||||
'd,d,s':['外曾外孙','外息仔'],
|
||||
'd,d,s,w':['外曾外孙媳妇'],
|
||||
'd,d,s,s':['外曾外曾孙'],
|
||||
'd,d,s,s,w':['外曾外曾孙媳妇'],
|
||||
'd,d,s,d':['外曾外曾孙女'],
|
||||
'd,d,s,d,h':['外曾外曾孙女婿'],
|
||||
'd,d,d':['外曾外孙女','外息女'],
|
||||
'd,d,d,h':['外曾外孙女婿'],
|
||||
'd,d,d,s':['外曾外曾外孙'],
|
||||
'd,d,d,s,w':['外曾外曾外孙媳妇'],
|
||||
'd,d,d,d':['外曾外曾外孙女'],
|
||||
'd,d,d,d,h':['外曾外曾外孙女婿'],
|
||||
// 和性别相关
|
||||
'1,xb,w,xb':['叔眷兄弟'],
|
||||
'1,xb,w,xb,s':['叔眷舅男'],
|
||||
'1,xb,w,xb,d':['叔眷舅女'],
|
||||
'1,xb,w,xs':['叔眷姊妹'],
|
||||
'1,xb,w,xs,s':['叔眷姨男'],
|
||||
'1,xb,w,xs,d':['叔眷姨女'],
|
||||
'1,xb,s':['从男','从子'],
|
||||
'1,xb,s,s':['从孙'],
|
||||
'1,xb,s,s,s':['从曾孙'],
|
||||
'1,xb,s,s,s,s':['从玄孙'],
|
||||
'1,xb,s,w':['从妇'],
|
||||
'1,xb,d':['从女','从子'],
|
||||
'1,xb,d,h':['从婿'],
|
||||
'1,xs,h,xb':['姑姻兄弟'],
|
||||
'1,xs,h,xb,s':['姑姻叔男'],
|
||||
'1,xs,h,xb,d':['姑姻叔女'],
|
||||
'1,xs,h,xs':['姑姻姊妹'],
|
||||
'1,xs,h,xs,s':['姑姻姑男'],
|
||||
'1,xs,h,xs,d':['姑姻姑女'],
|
||||
'1,xs,s,s':['离孙男','离孙子'],
|
||||
'1,xs,s,d':['离孙女'],
|
||||
'0,xb,w,xb':['舅眷兄弟'],
|
||||
'0,xb,w,xb,s':['舅眷舅男'],
|
||||
'0,xb,w,xb,d':['舅眷舅女'],
|
||||
'0,xb,w,xs':['舅眷姊妹'],
|
||||
'0,xb,w,xs,s':['舅眷姨男'],
|
||||
'0,xb,w,xs,d':['舅眷姨女'],
|
||||
'0,xs,h,xb':['姨姻兄弟'],
|
||||
'0,xs,h,xb,s':['姨姻叔男'],
|
||||
'0,xs,h,xb,d':['姨姻叔女'],
|
||||
'0,xs,h,xs':['姨姻姊妹'],
|
||||
'0,xs,h,xs,s':['姨姻姑男'],
|
||||
'0,xs,h,xs,d':['姨姻姑女'],
|
||||
'0,xb,s':['娘家侄子','娘家侄'],
|
||||
'0,xb,s,s':['归孙男','归孙子'],
|
||||
'0,xb,s,d':['归孙女'],
|
||||
'0,xb,d':['娘家侄女'],
|
||||
'0,xs,s':['姨甥','姨甥男','从男','从子'],
|
||||
'0,xs,s,w':['从妇'],
|
||||
'0,xs,d':['姨甥女','从女','从子'],
|
||||
'0,xs,d,h':['从婿'],
|
||||
'0,xs,s,s':['姨甥孙','姨孙','姨甥孙男','姨孙男'],
|
||||
'0,xs,s,d':['姨甥孙女','姨孙女'],
|
||||
'0,xs,d,s':['姨甥外孙','姨外孙','姨甥外孙男','姨外孙男'],
|
||||
'0,xs,d,d':['姨甥外孙女','姨外孙女'],
|
||||
};
|
@ -1,153 +0,0 @@
|
||||
/*
|
||||
* 并称关系链 - 某个称呼同时包含多层关系链
|
||||
*/
|
||||
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,54 +0,0 @@
|
||||
/*
|
||||
* 关系合称 - 两个人之间的关系合称
|
||||
*/
|
||||
export default {
|
||||
'f#s':['父子'],
|
||||
'm#s':['母子'],
|
||||
'f#d':['父女'],
|
||||
'm#d':['母女'],
|
||||
'h#w':['夫妻'],
|
||||
'ob#lb':['兄弟'],
|
||||
'ob#ls':['兄妹'],
|
||||
'os#ls':['姐妹'],
|
||||
'os#lb':['姐弟'],
|
||||
'w,f#d,h':['翁婿'],
|
||||
'w,m#d,h':['母婿'],
|
||||
'h,f#s,w':['翁媳'],
|
||||
'h,m#s,w':['婆媳'],
|
||||
'f,[f|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':['堂姐弟'],
|
||||
'f,xb,d&o#f,xb,d&l':['堂姐妹'],
|
||||
'f,xs,s&o#m,xb,s&l':['表兄弟'],
|
||||
'm,xb,s&o#f,xs,s&l':['表兄弟'],
|
||||
'f,xs,s&o#m,xb,d&l':['表兄妹'],
|
||||
'm,xb,s&o#f,xs,d&l':['表兄妹'],
|
||||
'f,xs,d&o#m,xb,d&l':['表姐妹'],
|
||||
'm,xb,d&o#f,xs,d&l':['表姐妹'],
|
||||
'f,xs,d&o#m,xb,s&l':['表姐弟'],
|
||||
'm,xb,d&o#f,xs,s&l':['表姐弟'],
|
||||
'm,xs,s&o#m,xs,s&l':['姨兄弟'],
|
||||
'm,xs,s&o#m,xs,d&l':['姨兄妹'],
|
||||
'm,xs,d&o#m,xs,s&l':['姨姐弟'],
|
||||
'm,xs,d&o#m,xs,d&l':['姨姐妹'],
|
||||
'h,ob,w#h,lb,w':['妯娌'],
|
||||
'w,os,h#w,ls,h':['连襟'],
|
||||
'w,os#ls,h':['襟姐弟'],
|
||||
'w,ls#os,h':['襟兄妹'],
|
||||
'xs,h#w,xb':['郎舅'],
|
||||
'xs,h#w,xs':['郎姨'],
|
||||
'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,210 +0,0 @@
|
||||
/*
|
||||
* 分支前缀 - 旁支亲戚的分支节点
|
||||
*/
|
||||
export default {
|
||||
'{G2}':{
|
||||
'f,f,xb':['从祖'],
|
||||
'm,f,xb':['外从祖'],
|
||||
},
|
||||
'{G1}':{
|
||||
'f,xb':['堂','同堂','亲堂','从父','叔伯','堂房','从'],
|
||||
'f,xs':['姑表','姑家'],
|
||||
'm,xb':['舅表','舅家'],
|
||||
'm,xs':['姨','从母','两姨','姨表','从'],
|
||||
'f,f,xb,s':['从堂','再从父','远堂','堂叔伯','叔伯叔伯','再从'],
|
||||
'f,f,xb,d':['堂姑表','从父姑表'],
|
||||
'f,f,xs,s':['姑表叔表'],
|
||||
'f,f,xs,d':['姑表姑表'],
|
||||
'f,m,xb,s':['舅表叔表'],
|
||||
'f,m,xb,d':['舅表姑表'],
|
||||
'f,m,xs,s':['从母叔表'],
|
||||
'f,m,xs,d':['从母姑表'],
|
||||
'm,f,xb,s':['堂舅表','从父舅表'],
|
||||
'm,f,xb,d':['堂姨表','从父姨表'],
|
||||
'm,f,xs,s':['姑表舅表'],
|
||||
'm,f,xs,d':['姑表姨表'],
|
||||
'm,m,xb,s':['舅表舅表'],
|
||||
'm,m,xb,d':['舅表姨表'],
|
||||
'm,m,xs,s':['从母舅表'],
|
||||
'm,m,xs,d':['再从母','姨姨','再从'],
|
||||
'f,f,f,xb,s,s':['三从父','再从堂','远堂','族','三从'],
|
||||
'm,m,m,xs,d,d':['三从母','三从'],
|
||||
'f,f,f,f,xb,s,s,s':['四从父','三从堂','远堂','族','四从'],
|
||||
'm,m,m,m,xs,d,d,d':['四从母','四从'],
|
||||
'[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':['伯'],
|
||||
'f,lb':['叔','仲','季'],
|
||||
'm,xb':['舅'],
|
||||
'f,f,xb,s':['堂','从父','叔伯','从'],
|
||||
'f,f,xb,s&o':['堂伯','从父伯','叔伯伯','从伯'],
|
||||
'f,f,xb,s&l':['堂叔','从父叔','叔伯叔','从叔'],
|
||||
'f,f,f,xb,s,s':['从堂'],
|
||||
'f,f,f,xb,s,s&o':['从堂伯'],
|
||||
'f,f,f,xb,s,s&l':['从堂叔'],
|
||||
'f,f,f,f,xb,s,s,s':['族'],
|
||||
'f,f,xs,s&o':['姑表伯'],
|
||||
'f,f,xs,s&l':['姑表叔'],
|
||||
'f,m,xb,s&o':['舅表伯'],
|
||||
'f,m,xb,s&l':['舅表叔'],
|
||||
'f,m,xs,s&o':['姨伯','从母伯','从伯'],
|
||||
'f,m,xs,s&l':['姨叔','从母叔','从叔'],
|
||||
'm,f,xb,s':['堂舅','从父舅','叔伯舅'],
|
||||
'm,f,xs,s':['姑表舅'],
|
||||
'm,m,xb,s':['舅表舅'],
|
||||
'm,m,xs,s':['姨舅','从母舅'],
|
||||
'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':['姑'],
|
||||
'm,xs':['姨','姏','茙','荻'],
|
||||
'f,f,xb,d':['堂姑','从父姑'],
|
||||
'f,f,f,xb,s,d':['从堂姑'],
|
||||
'f,f,xs,d':['姑表姑'],
|
||||
'f,m,xb,d':['舅表姑'],
|
||||
'f,m,xs,d':['姨姑','从母姑'],
|
||||
'm,f,xb,d':['堂姨','从父姨','叔伯姨'],
|
||||
'm,f,xs,d':['姑表姨'],
|
||||
'm,m,xb,d':['舅表姨'],
|
||||
'm,m,xs,d':['姨姨','从母姨'],
|
||||
'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':['侄'],
|
||||
'1,xb':['从'],
|
||||
'1,f,xb,s':['再从'],
|
||||
'1,f,f,xb,s,s':['三从'],
|
||||
'h,xb':['叔侄','叔伯'],
|
||||
'w,xb':['舅侄'],
|
||||
'xs':['甥','外甥'],
|
||||
'0,xs':['从'],
|
||||
'0,m,xs,d':['再从'],
|
||||
'0,m,m,xs,d,d':['三从'],
|
||||
'h,xs':['姑甥'],
|
||||
'w,xs':['姨甥','襟侄'],
|
||||
},
|
||||
'{M2W}':{
|
||||
'f,f,xb,w':['叔祖眷'],
|
||||
'm,f,xb,w':['叔外祖眷'],
|
||||
'f,m,xb,w':['舅祖眷'],
|
||||
'm,m,xb,w':['舅外祖眷'],
|
||||
},
|
||||
'{M2M}':{
|
||||
'f,f,xs,h':['姑祖姻'],
|
||||
'm,f,xs,h':['姑外祖姻'],
|
||||
'f,m,xs,h':['姨祖姻'],
|
||||
'm,m,xs,h':['姨外祖姻'],
|
||||
},
|
||||
'{M1W}':{
|
||||
'f,xb,w':['叔眷'],
|
||||
'f,f,xb,s,w':['从父叔眷'],
|
||||
'f,f,xs,s,w':['姑表叔眷'],
|
||||
'f,m,xb,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':['从母舅眷'],
|
||||
},
|
||||
'{M1M}':{
|
||||
'f,xs,h':['姑姻'],
|
||||
'f,f,xb,d,h':['从父姑姻'],
|
||||
'f,f,xs,d,h':['姑表姑姻'],
|
||||
'f,m,xb,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':['从母姨姻'],
|
||||
},
|
||||
'{M0}':{
|
||||
'xb,w':['兄弟眷'],
|
||||
'xs,h':['姊妹姻'],
|
||||
'w,xb,w':['舅兄弟眷','内兄弟眷'],
|
||||
'w,xs,h':['姨姊妹姻','内姊妹姻'],
|
||||
'h,xb,w':['叔兄弟眷','外兄弟眷'],
|
||||
'h,xs,h':['姑姊妹姻','外姊妹姻'],
|
||||
'f,xb,s,w':['从父兄弟眷'],
|
||||
'f,xb,d,h':['从父姊妹姻'],
|
||||
'f,xs,s,w':['姑表兄弟眷'],
|
||||
'f,xs,d,h':['姑表姊妹姻'],
|
||||
'm,xb,s,w':['舅表兄弟眷'],
|
||||
'm,xb,d,h':['舅表姊妹姻'],
|
||||
'm,xs,s,w':['从母兄弟眷'],
|
||||
'm,xs,d,h':['从母姊妹姻'],
|
||||
},
|
||||
'{M-1}':{
|
||||
's,w':['男眷','息眷'],
|
||||
'd,h':['女姻','息姻'],
|
||||
'xb,s,w':['侄眷'],
|
||||
'xb,d,h':['侄姻'],
|
||||
'xs,s,w':['甥眷'],
|
||||
'xs,d,h':['甥姻'],
|
||||
'h,xb,s,w':['叔侄眷'],
|
||||
'h,xb,d,h':['叔侄姻'],
|
||||
'h,xs,s,w':['姑甥眷'],
|
||||
'h,xs,d,h':['姑甥姻'],
|
||||
'w,xb,s,w':['舅侄眷'],
|
||||
'w,xb,d,h':['舅侄姻'],
|
||||
'w,xs,s,w':['姨甥眷'],
|
||||
'w,xs,d,h':['姨甥姻'],
|
||||
'f,xb,s,s,w':['堂侄眷'],
|
||||
'f,xb,s,d,h':['堂侄姻'],
|
||||
'f,xb,d,s,w':['堂甥眷'],
|
||||
'f,xb,d,d,h':['堂甥姻'],
|
||||
'f,xs,s,s,w':['姑表侄眷'],
|
||||
'f,xs,s,d,h':['姑表侄姻'],
|
||||
'f,xs,d,s,w':['姑表甥眷'],
|
||||
'f,xs,d,d,h':['姑表甥姻'],
|
||||
'm,xb,s,s,w':['舅表侄眷'],
|
||||
'm,xb,s,d,h':['舅表侄姻'],
|
||||
'm,xb,d,s,w':['舅表甥眷'],
|
||||
'm,xb,d,d,h':['舅表甥姻'],
|
||||
'm,xs,s,s,w':['姨侄眷'],
|
||||
'm,xs,s,d,h':['姨侄姻'],
|
||||
'm,xs,d,s,w':['姨甥眷'],
|
||||
'm,xs,d,d,h':['姨甥姻'],
|
||||
},
|
||||
'{M-2}':{
|
||||
's,s,w':['孙眷'],
|
||||
's,d,h':['孙姻'],
|
||||
'd,s,w':['外孙眷'],
|
||||
'd,d,h':['外孙姻'],
|
||||
'xb,s,s,w':['侄孙眷'],
|
||||
'xb,s,d,h':['侄孙姻'],
|
||||
'xb,d,s,w':['侄外孙眷'],
|
||||
'xb,d,d,h':['侄外孙姻'],
|
||||
'xs,s,s,w':['甥孙眷'],
|
||||
'xs,s,d,h':['甥孙姻'],
|
||||
'xs,d,s,w':['甥外孙眷'],
|
||||
'xs,d,d,h':['甥外孙姻'],
|
||||
'h,xb,s,s,w':['叔侄孙眷','叔伯孙眷','叔孙眷'],
|
||||
'h,xb,s,d,h':['叔侄孙姻','叔伯孙姻','叔孙姻'],
|
||||
'h,xb,d,s,w':['叔侄外孙眷','叔伯外孙眷','叔外孙眷'],
|
||||
'h,xb,d,d,h':['叔侄外孙姻','叔伯外孙姻','叔外孙姻'],
|
||||
'h,xs,s,s,w':['姑甥孙眷','姑孙眷'],
|
||||
'h,xs,s,d,h':['姑甥孙姻','姑孙姻'],
|
||||
'h,xs,d,s,w':['姑甥外孙眷','姑外孙眷'],
|
||||
'h,xs,d,d,h':['姑甥外孙姻','姑外孙姻'],
|
||||
'w,xb,s,s,w':['舅侄孙眷','舅孙眷'],
|
||||
'w,xb,s,d,h':['舅侄孙姻','舅孙姻'],
|
||||
'w,xb,d,s,w':['舅侄外孙眷','舅外孙眷'],
|
||||
'w,xb,d,d,h':['舅侄外孙姻','舅外孙姻'],
|
||||
'w,xs,s,s,w':['姨甥孙眷','姨孙眷'],
|
||||
'w,xs,s,d,h':['姨甥孙姻','姨孙姻'],
|
||||
'w,xs,d,s,w':['姨甥外孙眷','姨外孙眷'],
|
||||
'w,xs,d,d,h':['姨甥外孙姻','姨外孙姻'],
|
||||
}
|
||||
};
|
@ -1,11 +0,0 @@
|
||||
/*
|
||||
* 排序字段
|
||||
*/
|
||||
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
@ -1,201 +0,0 @@
|
||||
/*
|
||||
* 标识符 - 唯一性关系链,将【关系链】转换成【中文表述】
|
||||
*/
|
||||
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;
|
||||
};
|
@ -1,96 +0,0 @@
|
||||
/*
|
||||
* 完整关系链数据 - 合并各类关系链数据
|
||||
*/
|
||||
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;
|
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* 模式数据
|
||||
*/
|
||||
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};
|
@ -1,14 +0,0 @@
|
||||
/*
|
||||
* 通过表达式获取配置
|
||||
*/
|
||||
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 {};
|
||||
};
|
@ -1,76 +0,0 @@
|
||||
/*
|
||||
* 自然语言表达 - 将【语言表达】转换成【参数调用】
|
||||
*/
|
||||
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,191 +0,0 @@
|
||||
/*
|
||||
* 关系链缩写规则 - 将【关系链】缩减成最简表达
|
||||
*
|
||||
* 关系数据语法说明:
|
||||
* 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹
|
||||
* 【修饰符】 1:男性; 0:女性; &o:年长; &l:年幼; &\d+:排序 #:隔断; [a|b]:并列
|
||||
*/
|
||||
export default [
|
||||
/* 年龄 */
|
||||
{//有大有小,增加不确定性
|
||||
exp:/^(.+)&o([^#]+)&l/g,
|
||||
str:'$1$2'
|
||||
},
|
||||
{//有大有小,增加不确定性
|
||||
exp:/^(.+)&l([^#]+)&o/g,
|
||||
str:'$1$2'
|
||||
},
|
||||
{//有大有小,增加不确定性
|
||||
exp:/^(.+)?,o([sb](&\d+)?)([^#]+)&l/g,
|
||||
str:'$1,x$2$4'
|
||||
},
|
||||
{//有大有小,增加不确定性
|
||||
exp:/^(.+)?,l([sb](&\d+)?)([^#]+)&o/g,
|
||||
str:'$1,x$2$4'
|
||||
},
|
||||
/* 兄弟姐妹 */
|
||||
{//哥哥姐姐的哥哥姐姐还是自己的哥哥姐姐(年龄判断)
|
||||
exp:/(,o[sb](&\d+)?)+(,o[sb])(&\d+)?/,
|
||||
str:'$3$4'
|
||||
},
|
||||
{//弟弟妹妹的弟弟妹妹还是自己的弟弟妹妹(年龄判断)
|
||||
exp:/(,l[sb](&\d+)?)+(,l[sb])(&\d+)?/,
|
||||
str:'$3$4'
|
||||
},
|
||||
{//如果自己是男性,兄弟姐妹的兄弟就是自己的兄弟或自己
|
||||
exp:/^(.*,[fh1])(,[olx][sb](&\d+)?)+,[olx]b(.*)$/,
|
||||
str:'$1,xb$4#$1$4'
|
||||
},
|
||||
{//如果自己是女性,兄弟姐妹的姐妹就是自己的姐妹或自己
|
||||
exp:/^(.*,[mw0])(,[olx][sb](&\d+)?)+,[olx]s(.*)$/,
|
||||
str:'$1,xs$4#$1$4'
|
||||
},
|
||||
{//如果自己是男性,兄弟姐妹的姐妹就是自己的姐妹
|
||||
exp:/(,[fh1])(,[olx][sb](&\d+)?)+,[olx]s/g,
|
||||
str:'$1,xs'
|
||||
},
|
||||
{//如果自己是女性,兄弟姐妹的兄弟就是自己的兄弟
|
||||
exp:/(,[mw0])(,[olx][sb](&\d+)?)+,[olx]b/g,
|
||||
str:'$1,xb'
|
||||
},
|
||||
{//不知道性别,兄弟姐妹的兄弟是兄弟或自己
|
||||
exp:/^,[olx][sb](&\d+)?,[olx]b(.+)?$/,
|
||||
str:',xb$2#$2'
|
||||
},
|
||||
{//不知道性别,兄弟姐妹的姐妹是姐妹或自己
|
||||
exp:/^,[olx][sb](&\d+)?,[olx]s(.+)?$/,
|
||||
str:',xs$2#$2'
|
||||
},
|
||||
{//将复合称谓拆分
|
||||
exp:/^,x([sb])$/,
|
||||
str:',o$1#,l$1'
|
||||
},
|
||||
/* 父母 */
|
||||
{//母亲的丈夫是自己的父亲
|
||||
exp:/m,h/g,
|
||||
str:'f'
|
||||
},
|
||||
{//父亲的妻子是自己的母亲
|
||||
exp:/f,w/g,
|
||||
str:'m'
|
||||
},
|
||||
{//兄弟的父母就是自己的父母
|
||||
exp:/,[xol][sb](&\d+)?(,[mf])/g,
|
||||
str:'$2'
|
||||
},
|
||||
/* 父母的子女 */
|
||||
{//父母的女儿排序判断姐妹的排序
|
||||
exp:/,[mf],d(&\d+)/,
|
||||
str:',xs$1'
|
||||
},
|
||||
{//父母的女儿年龄判断是姐姐还是妹妹
|
||||
exp:/,[mf],d&([ol])/,
|
||||
str:',$1s'
|
||||
},
|
||||
{//父母的儿子排序判断兄弟的排序
|
||||
exp:/,[mf],s(&\d+)/,
|
||||
str:',xb$1'
|
||||
},
|
||||
{//父母的儿子年龄判断是哥哥还是弟弟
|
||||
exp:/,[mf],s&([ol])/,
|
||||
str:',$1b'
|
||||
},
|
||||
{//如果自己是男性,父母的儿子是兄弟或者自己
|
||||
exp:/^(.*,[fh1]|[xol]b(&\d+)?),[mf],s(.*)$/,
|
||||
str:'$1,xb$3#$1$3'
|
||||
},
|
||||
{//如果自己是女性,父母的女儿是姐妹或者自己
|
||||
exp:/^(.*,[mw0]|[xol]s(&\d+)?),[mf],d(.*)$/,
|
||||
str:'$1,xs$3#$1$3'
|
||||
},
|
||||
{//如果自己是女性,父母的儿子是自己的兄弟
|
||||
exp:/(,[mw0]|[xol]s(&\d+)?),[mf],s/,
|
||||
str:'$1,xb'
|
||||
},
|
||||
{//如果自己是男性,父母的女儿是自己的姐妹
|
||||
exp:/(,[fh1]|[xol]b(&\d+)?),[mf],d/,
|
||||
str:'$1,xs'
|
||||
},
|
||||
{//父母的儿子是兄弟或自己
|
||||
exp:/^,[mf],s(.+)?$/,
|
||||
str:',xb$1#,1$1'
|
||||
},
|
||||
{//父母的女儿是姐妹或者自己
|
||||
exp:/^,[mf],d(.+)?$/,
|
||||
str:',xs$1#,0$1'
|
||||
},
|
||||
/* 孩子 */
|
||||
{//孩子的兄弟是自己的儿子(排序判断)
|
||||
exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)/g,
|
||||
str:',s$2'
|
||||
},
|
||||
{//孩子的姐妹是自己的女儿(排序判断)
|
||||
exp:/,[ds](&[ol\d]+)?,[olx]s(&\d+)/g,
|
||||
str:',d$2'
|
||||
},
|
||||
{//孩子的兄弟是自己的儿子(年龄判断)
|
||||
exp:/,[ds]&o,ob/g,
|
||||
str:',s&o'
|
||||
},
|
||||
{//孩子的姐妹是自己的女儿(年龄判断)
|
||||
exp:/,[ds]&o,os/g,
|
||||
str:',d&o'
|
||||
},
|
||||
{//孩子的兄弟是自己的儿子(年龄判断)
|
||||
exp:/,[ds]&l,lb/g,
|
||||
str:',s&l'
|
||||
},
|
||||
{//孩子的姐妹是自己的女儿(年龄判断)
|
||||
exp:/,[ds]&l,ls/g,
|
||||
str:',d&l'
|
||||
},
|
||||
{//孩子的姐妹是自己的女儿
|
||||
exp:/,[ds](&[ol\d]+)?,[olx]s(&\d+)?/g,
|
||||
str:',d$2'
|
||||
},
|
||||
{//孩子的兄弟是自己的儿子
|
||||
exp:/,[ds](&[ol\d]+)?,[olx]b(&\d+)?/g,
|
||||
str:',s$2'
|
||||
},
|
||||
/* 夫妻 */
|
||||
{//自己是女性,女儿或儿子的妈妈是自己
|
||||
exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,m/g,
|
||||
str:'$1'
|
||||
},
|
||||
{//自己是女性,女儿或儿子的爸爸是自己的丈夫
|
||||
exp:/(,[mwd0]|,[olx]s)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,
|
||||
str:'$1,h'
|
||||
},
|
||||
{//自己是男性,女儿或儿子的爸爸是自己
|
||||
exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,f/g,
|
||||
str:'$1'
|
||||
},
|
||||
{//自己是男性,女儿或儿子的妈妈是自己的妻子
|
||||
exp:/(,[fhs1]|,[olx]b)(&[ol\d]+)?,[ds](&[ol\d]+)?,m/g,
|
||||
str:'$1,w'
|
||||
},
|
||||
{//不知道性别,子女的妈妈是妻子或自己
|
||||
exp:/^,[ds],m(.+)?$/,
|
||||
str:',w$1#$1'
|
||||
},
|
||||
{//不知道性别,子女的爸爸是丈夫或自己
|
||||
exp:/^,[ds],f(.+)?$/,
|
||||
str:',h$1#$1'
|
||||
},
|
||||
{//夫妻的孩子就是自己的孩子
|
||||
exp:/,[wh](,[ds])/g,
|
||||
str:'$1'
|
||||
},
|
||||
{//夫妻的对方是自己
|
||||
exp:/,w,h|,h,w/g,
|
||||
str:''
|
||||
},
|
||||
{//并列关系处理1 X[A|B|C]Y = XAY#X[B|C]Y
|
||||
exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g,
|
||||
str:'$1$2$4#$1[$3]$4'
|
||||
},
|
||||
{//并列关系处理2 X[A|B]Y = XAY#XBY
|
||||
exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g,
|
||||
str:'$1$2$4#$1$3$4'
|
||||
}
|
||||
];
|
@ -1,93 +0,0 @@
|
||||
/*
|
||||
* 词义扩展 - 对称呼词义进行扩展
|
||||
*/
|
||||
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:['女']
|
||||
},
|
||||
];
|
@ -1,20 +0,0 @@
|
||||
/*
|
||||
* 同义词替换 - 对称呼中的近义词进行替换
|
||||
*/
|
||||
export default {
|
||||
'晜':'兄',
|
||||
'哥':'兄',
|
||||
'姐':'姊',
|
||||
'侄':'姪',
|
||||
'婿':'壻',
|
||||
'嬷':'嫲',
|
||||
'祖父':'王父',
|
||||
'祖母':'王母',
|
||||
'孙女婿':'孙婿',
|
||||
'甥女婿':'甥婿',
|
||||
'侄女婿':'侄婿',
|
||||
'孙媳妇':'孙妇',
|
||||
'甥媳妇':'甥妇',
|
||||
'侄媳妇':'侄妇',
|
||||
'弟媳妇':'弟妇',
|
||||
};
|
@ -1,284 +0,0 @@
|
||||
/*
|
||||
* 选择器 - 非唯一性关系链,将【中文表述】转换为【关系链】
|
||||
*/
|
||||
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);
|
||||
};
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
* 数值转换
|
||||
*/
|
||||
|
||||
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;
|
||||
};
|
@ -1,7 +0,0 @@
|
||||
import guangdong from './locale/guangdong.js';
|
||||
import north from './locale/north.js';
|
||||
|
||||
export default {
|
||||
guangdong,
|
||||
north
|
||||
};
|
@ -1,76 +0,0 @@
|
||||
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';
|
||||
|
||||
// 对外方法
|
||||
let relationship = function (parameter) {
|
||||
if(typeof parameter =='string'){
|
||||
parameter = getOptions(parameter);
|
||||
}
|
||||
let options = Object.assign({
|
||||
text: '', // 目标对象:目标对象的称谓汉字表达,称谓间用‘的’字分隔
|
||||
target: '', // 相对对象:相对对象的称谓汉字表达,称谓间用‘的’字分隔,空表示自己
|
||||
sex: -1, // 本人性别:0表示女性,1表示男性
|
||||
type: 'default', // 转换类型:'default'计算称谓,'chain'计算关系链,'pair'计算关系合称
|
||||
reverse: false, // 称呼方式:true对方称呼我,false我称呼对方
|
||||
mode: 'default', // 模式选择:使用setMode方法定制不同地区模式,在此选择自定义模式
|
||||
optimal: false // 最短关系:计算两者之间的最短关系
|
||||
}, parameter);
|
||||
// 切换模式
|
||||
getModeData(options.mode);
|
||||
let fromSelectors = getSelectors(options.text);
|
||||
let toSelectors = getSelectors(options.target);
|
||||
if (!toSelectors.length) {
|
||||
toSelectors = [''];
|
||||
}
|
||||
const result = fromSelectors.flatMap(fromSelector => {
|
||||
return toSelectors.flatMap(toSelector => {
|
||||
return mergeSelector({
|
||||
from: fromSelector,
|
||||
to: toSelector,
|
||||
sex: options.sex,
|
||||
optimal: options.optimal
|
||||
}).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)$/)){
|
||||
sex = 1;
|
||||
}else{
|
||||
sex = 0;
|
||||
}
|
||||
}
|
||||
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 {
|
||||
return temps.flatMap(id => {
|
||||
let items = getItemsById(id);
|
||||
if (!items.length) {
|
||||
items = getItemsById(sex + ',' + id);
|
||||
}
|
||||
return items;
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
return [...new Set(result)];
|
||||
};
|
||||
|
||||
// 获取数据表
|
||||
relationship.data = modeData;
|
||||
// 获取数据量
|
||||
relationship.dataCount = Object.keys(modeData).length;
|
||||
// 设置语言模式
|
||||
relationship.setMode = setModeData;
|
||||
|
||||
export default relationship;
|
Before Width: | Height: | Size: 25 KiB |
@ -1,53 +0,0 @@
|
||||
<?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">
|
||||
<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">
|
||||
<stop stop-color="#FBFCFD" offset="0%"></stop>
|
||||
<stop stop-color="#F8FCFF" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<radialGradient cx="49.4552285%" cy="50%" fx="49.4552285%" fy="50%" r="94.8348304%" gradientTransform="translate(0.494552,0.500000),scale(0.311111,1.000000),rotate(90.000000),translate(-0.494552,-0.500000)" id="radialGradient-2">
|
||||
<stop stop-color="#FFFFFF" stop-opacity="0.5" offset="0%"></stop>
|
||||
<stop stop-color="#EDF6FF" stop-opacity="0.578179633" offset="100%"></stop>
|
||||
</radialGradient>
|
||||
<rect id="path-3" x="0" y="0" width="1440" height="448"></rect>
|
||||
<linearGradient x1="72.8463444%" y1="12.5451885%" x2="72.8463444%" y2="295.836589%" id="linearGradient-5">
|
||||
<stop stop-color="#FFFFFF" stop-opacity="0" offset="0%"></stop>
|
||||
<stop stop-color="#9FD7FF" stop-opacity="0.383058348" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="16.6159843%" y1="49.1386719%" x2="5.85340543%" y2="50.8613281%" id="linearGradient-6">
|
||||
<stop stop-color="#FFFFFF" stop-opacity="0" offset="0%"></stop>
|
||||
<stop stop-color="#F2F7FC" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<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="#84c1ec" stop-opacity="0.225387893" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<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>
|
||||
</mask>
|
||||
<g>
|
||||
<use fill="url(#linearGradient-1)" xlink:href="#path-3"></use>
|
||||
<use fill="url(#radialGradient-2)" xlink:href="#path-3"></use>
|
||||
</g>
|
||||
<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 fill="url(#linearGradient-8)" mask="url(#mask-4)" x="0" y="166" width="1440" height="282"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 881 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 489 B |
@ -1 +0,0 @@
|
||||
<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>
|
Before Width: | Height: | Size: 158 B |
@ -1,46 +0,0 @@
|
||||
// 头部滚动
|
||||
(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'
|
||||
});
|
||||
});
|
||||
})();
|
506
style/index.css
Normal file
@ -0,0 +1,506 @@
|
||||
html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h3,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;*font-size:100%}legend{color:#000}
|
||||
html{
|
||||
height:100%;
|
||||
}
|
||||
body{
|
||||
height: 100%;
|
||||
font-size: 14px;
|
||||
font-family: Arial,Helvetica,"Microsoft Yahei";
|
||||
color: rgb(110, 119, 129);
|
||||
}
|
||||
button, input {
|
||||
font-family: Arial,Helvetica,"Microsoft Yahei";
|
||||
}
|
||||
img{
|
||||
vertical-align: middle;
|
||||
}
|
||||
a{
|
||||
text-decoration: none;
|
||||
color: rgb(110, 119, 129);
|
||||
}
|
||||
a:hover{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.wrapper{
|
||||
background: #fdfdfd;
|
||||
}
|
||||
.container{
|
||||
padding: 0 15px 30px;
|
||||
}
|
||||
.inner{
|
||||
max-width: 720px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.mod-head .hd,.mod-head .bd{
|
||||
max-width: 540px;
|
||||
padding: 0 10px;
|
||||
margin:0 auto;
|
||||
}
|
||||
.mod-head .hd{
|
||||
position: relative;
|
||||
}
|
||||
.mod-head .hd span.tag{
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 0;
|
||||
display: block;
|
||||
height: 20px;
|
||||
padding: 5px 12px;
|
||||
background: #f0f0f0;
|
||||
line-height: 20px;
|
||||
color: #444;
|
||||
border-bottom-left-radius: 6px;
|
||||
border-bottom-right-radius: 6px;
|
||||
}
|
||||
.mod-head .bd{
|
||||
height: 36px;
|
||||
padding: 10px 10px 0;
|
||||
margin-bottom: 5px;
|
||||
text-align: right;
|
||||
}
|
||||
.mod-head .btn{
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
min-width: 56px;
|
||||
height: 34px;
|
||||
background: #fff;
|
||||
padding: 0 12px;
|
||||
border: 1px solid #ececec;
|
||||
border-radius: 6px;
|
||||
line-height: 34px;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
overflow: hidden;
|
||||
transition: color .2s,opacity .2s;
|
||||
font-family: Tahoma,Arial, Helvetica,"Microsoft YaHei";
|
||||
outline: none;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
.mod-head .btn:after {
|
||||
content: " ";
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #000;
|
||||
left: 0;
|
||||
top: 0;
|
||||
opacity: 0;
|
||||
transition: opacity .2s;
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
}
|
||||
.mod-head .btn span,.mod-head .btn svg{
|
||||
vertical-align: middle;
|
||||
}
|
||||
.mod-head .btn svg,.mod-head .btn svg+span{
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
.mod-head .btn:hover {
|
||||
color: #000;
|
||||
opacity: 1;
|
||||
}
|
||||
.mod-head .btn:hover:after {
|
||||
opacity: .02;
|
||||
}
|
||||
|
||||
.mod-panel {
|
||||
width: 100%;
|
||||
}
|
||||
.mod-panel h1{
|
||||
line-height: 32px;
|
||||
font-size: 22px;
|
||||
color:#212121;
|
||||
}
|
||||
.mod-panel h2{
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
font-weight: normal;
|
||||
font-size: 18px;
|
||||
}
|
||||
.mod-panel .hd,.mod-panel .bd{
|
||||
max-width: 540px;
|
||||
margin:0 auto;
|
||||
}
|
||||
.mod-panel .hd{
|
||||
padding: 10px 0;
|
||||
margin-bottom: 5px;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
}
|
||||
.mod-panel .hd b{
|
||||
margin: 0 3px;
|
||||
color: #fd7474;
|
||||
}
|
||||
.mod-panel .bd .c-hd{
|
||||
height: 36px;
|
||||
margin-bottom: 10px;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
}
|
||||
.mod-panel .bd .c-hd li{
|
||||
float: left;
|
||||
width: 33.33%;
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
}
|
||||
.mod-panel .bd .c-hd li a{
|
||||
display: block;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: #999;
|
||||
cursor: pointer;
|
||||
}
|
||||
.mod-panel .bd .c-hd li.active a{
|
||||
position: relative;
|
||||
color: #333;
|
||||
}
|
||||
.mod-panel .bd .c-hd li.active a::after{
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 0;
|
||||
display: block;
|
||||
content: '';
|
||||
width: 16px;
|
||||
height: 4px;
|
||||
margin-left: -8px;
|
||||
background: #2095f2;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.mod-panel .bd .c-panel{
|
||||
display: none;
|
||||
}
|
||||
.mod-panel .bd .operation{
|
||||
margin: 10px 0;
|
||||
}
|
||||
.mod-panel .bd .row{
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.mod-panel .bd .field{
|
||||
line-height: 28px;
|
||||
}
|
||||
.mod-panel .bd p{
|
||||
overflow: hidden;
|
||||
}
|
||||
.mod-panel .bd label{
|
||||
display: inline-block;
|
||||
min-width: 90px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
.mod-panel .bd label span,.mod-panel .bd label input{
|
||||
vertical-align: middle;
|
||||
}
|
||||
.mod-panel .bd .input-text{
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
background: #fafafa;
|
||||
border: 1px solid #ebebeb;
|
||||
padding: 5px 10px;
|
||||
box-sizing: border-box;
|
||||
line-height: 20px;
|
||||
border-radius: 5px;
|
||||
outline: none;
|
||||
}
|
||||
.mod-panel .bd .input-text-small{
|
||||
width: 200px;
|
||||
}
|
||||
.mod-panel .bd .btn {
|
||||
height: 32px;
|
||||
min-width: 90px;
|
||||
background: #f0f0f0;
|
||||
border: medium none;
|
||||
line-height: 30px;
|
||||
vertical-align: middle;
|
||||
font-size: 15px;
|
||||
color: #333333;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.mod-panel .bd .btn:hover{
|
||||
background: #e4e4e4;
|
||||
}
|
||||
.mod-panel .bd .btn-green{
|
||||
background: #4bae4f;
|
||||
color: #fff;
|
||||
}
|
||||
.mod-panel .bd .btn-green:hover{
|
||||
background: #47a04b;
|
||||
}
|
||||
.mod-panel .bd .btn-red{
|
||||
background: #f56954;
|
||||
color: #fff;
|
||||
}
|
||||
.mod-panel .bd .btn-red:hover{
|
||||
background: #f4543c;;
|
||||
}
|
||||
.mod-panel .bd .btn-orange{
|
||||
background: #ff9000;
|
||||
color: #fff;
|
||||
}
|
||||
.mod-panel .bd .btn-orange:hover{
|
||||
background: #e18309;
|
||||
}
|
||||
.mod-panel .bd .btn-small{
|
||||
min-width: 40px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.mod-panel .bd .btn[disabled]{
|
||||
background: #f0f0f0;
|
||||
color: #aaa;
|
||||
}
|
||||
.mod-panel .bd textarea{
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 120px;
|
||||
padding:5px 10px;
|
||||
background: #fafafa;
|
||||
border: 1px solid #ebebeb;
|
||||
box-sizing: border-box;
|
||||
border-radius: 5px;
|
||||
resize: none;
|
||||
outline: none;
|
||||
}
|
||||
.mod-panel .bd p{
|
||||
line-height: 22px;
|
||||
}
|
||||
.mod-panel .bd p span{
|
||||
margin-right: 10px;
|
||||
}
|
||||
.mod-panel .ft{
|
||||
padding-top: 10px;
|
||||
border-top:1px dotted #e0e0e0;
|
||||
}
|
||||
.mod-panel .about{
|
||||
padding: 0 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.mod-panel .about p{
|
||||
line-height: 24px;
|
||||
text-indent: 2em;
|
||||
}
|
||||
.mod-panel .copy{
|
||||
padding: 10px 0;
|
||||
margin-bottom: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
.mod-panel .copy p{
|
||||
line-height: 22px;
|
||||
}
|
||||
.mod-panel .copy p a,.mod-panel .copy p span{
|
||||
vertical-align: middle;
|
||||
}
|
||||
.mod-panel .copy p.buttons{
|
||||
margin: 10px 0 5px;
|
||||
}
|
||||
.mod-panel .copy .text-red{
|
||||
font-weight: bold;
|
||||
color: #fd7474;
|
||||
}
|
||||
.mod-panel .intro,.mod-panel .article{
|
||||
padding: 15px 20px;
|
||||
margin: 10px 0;
|
||||
background: rgb(246, 248, 250);
|
||||
border-radius: 6px;
|
||||
}
|
||||
.mod-panel .intro h3{
|
||||
margin-bottom: 10px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
color: #646464;
|
||||
}
|
||||
.mod-panel .intro p{
|
||||
line-height: 22px;
|
||||
}
|
||||
.mod-panel .intro p.q{
|
||||
margin-top: 10px;
|
||||
font-weight: bold;
|
||||
color: #646464;
|
||||
}
|
||||
.mod-panel .article p{
|
||||
line-height: 22px;
|
||||
text-indent: 2em;
|
||||
}
|
||||
.mod-panel .banner{
|
||||
border: 1px solid #eee;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
box-shadow: 1px 2px 8px rgba(0,0,0,0.03);
|
||||
}
|
||||
.mod-panel .banner a{
|
||||
display: block;
|
||||
position: relative;
|
||||
height: 160px;
|
||||
padding: 10px;
|
||||
background: #fcfcfc;
|
||||
overflow: hidden;
|
||||
}
|
||||
.mod-panel .banner a:hover{
|
||||
text-decoration: none;
|
||||
background: #fffbf5;
|
||||
}
|
||||
.mod-panel .banner img{
|
||||
margin-top: -5px;
|
||||
}
|
||||
.mod-panel .banner span{
|
||||
display: block;
|
||||
line-height: 32px;
|
||||
}
|
||||
.mod-panel .banner span.picture{
|
||||
float: left;
|
||||
width: 40%;
|
||||
text-align: center;
|
||||
}
|
||||
.mod-panel .banner span.title{
|
||||
margin-top: 45px;
|
||||
margin-left: 50%;
|
||||
font-weight: bold;
|
||||
font-size: 24px;
|
||||
color: #646464;
|
||||
}
|
||||
.mod-panel .banner span.subtitle{
|
||||
margin-left: 50%;
|
||||
font-size: 18px;
|
||||
}
|
||||
.mod-panel .table-inner{
|
||||
overflow-x: auto;
|
||||
}
|
||||
.mod-panel table {
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
border: 1px solid #cee1ee;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
.mod-panel thead{
|
||||
background-color: #e3eef8;
|
||||
}
|
||||
.mod-panel tr {
|
||||
border-bottom: 1px solid #cee1ee;
|
||||
line-height: 24px;
|
||||
font-size: 13px;
|
||||
}
|
||||
.mod-panel tr td,.mod-panel tr th{
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
padding: 5px 8px;
|
||||
border: 1px solid #cee1ee;
|
||||
line-height: 20px;
|
||||
font-weight: normal;
|
||||
}
|
||||
.mod-panel tr p.name{
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.mod-panel tr .download{
|
||||
display: inline-block;
|
||||
padding: 0 15px;
|
||||
background: #32ccc8;
|
||||
color: #fff;
|
||||
line-height: 32px;
|
||||
font-size: 13px;
|
||||
text-align: center;
|
||||
border-radius: 3px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.mod-panel tr .download:hover{
|
||||
background: #2e9e9b;
|
||||
}
|
||||
|
||||
.mod-qrcode{
|
||||
position: fixed;
|
||||
right: 25px;
|
||||
bottom: 25px;
|
||||
text-align: center;
|
||||
}
|
||||
.mod-qrcode .box{
|
||||
width: 150px;
|
||||
height: 148px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.mod-qrcode p{
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
.mod-panel .hd{
|
||||
padding-top: 10px;
|
||||
}
|
||||
.mod-panel .hd h1{
|
||||
font-size: 20px;
|
||||
}
|
||||
.mod-panel .hd p{
|
||||
line-height: 22px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.mod-panel .hd span.tag{
|
||||
top: 5px;
|
||||
margin-left: -148px;
|
||||
font-size: 13px;
|
||||
}
|
||||
.mod-panel .c-hd ul{
|
||||
overflow-x: auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.mod-panel .c-hd li{
|
||||
float: none;
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
}
|
||||
.mod-panel .c-hd li a{
|
||||
padding: 0 4px;
|
||||
}
|
||||
.mod-panel textarea{
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.mod-panel .bd p span{
|
||||
float: left;
|
||||
width: 50%;
|
||||
text-align: center;
|
||||
margin-right: 0;
|
||||
}
|
||||
.mod-panel .btn{
|
||||
width: 48%;
|
||||
margin-bottom: 5px;
|
||||
line-height: 24px;
|
||||
}
|
||||
.mod-panel .btn-3{
|
||||
width: 32%;
|
||||
}
|
||||
.mod-panel .banner a{
|
||||
height: 100px;
|
||||
}
|
||||
.mod-panel .banner img{
|
||||
zoom:0.5;
|
||||
}
|
||||
.mod-panel .banner span{
|
||||
line-height: 24px;
|
||||
}
|
||||
.mod-panel .banner span.picture{
|
||||
width: 35%;
|
||||
}
|
||||
.mod-panel .banner span.title{
|
||||
margin-top: 25px;
|
||||
margin-left: 40%;
|
||||
font-size: 18px;
|
||||
}
|
||||
.mod-panel .banner span.subtitle{
|
||||
margin-left: 40%;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.mod-qrcode{
|
||||
position: static;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.mod-qrcode .box{
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
100
test/index.js
@ -2,79 +2,29 @@
|
||||
var test = require('tape');
|
||||
var relationship = require('..');
|
||||
|
||||
test('[call]', function (t) {
|
||||
// console.log('[test]',relationship({text:'爸爸的妈妈的姐姐的儿子'}));
|
||||
|
||||
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:0}),['老公']);
|
||||
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:'女婿',reverse: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();
|
||||
test('relationship.js show to be tested', function (t) {
|
||||
// TODO
|
||||
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:'岳母',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.end();
|
||||
});
|
||||
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"github": {
|
||||
"silent": true
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 4.2 KiB |
1
vue/css/app.css
Normal file
1
vue/css/chunk-1d9ca9a0.css
Normal file
@ -0,0 +1 @@
|
||||
.container .inner[data-v-34e41ea0],.container[data-v-34e41ea0]{height:100%}.mod-detail[data-v-34e41ea0]{height:100%;background:#333}.mod-detail .hd[data-v-34e41ea0]{height:.48rem;background:#444;border-bottom:1px solid hsla(0,0%,100%,.08)}.mod-detail .hd a[data-v-34e41ea0]{position:relative;display:inline-block;height:.2rem;margin:.09rem .15rem .09rem .24rem;padding:.05rem .1rem .05rem .05rem;background:#333;line-height:.2rem;border-top-right-radius:.03rem;border-bottom-right-radius:.03rem;color:hsla(0,0%,100%,.8)}.mod-detail .hd a[data-v-34e41ea0]:before{position:absolute;left:-.3rem;top:0;content:"";width:0;border:.15rem solid transparent;border-right-color:#333}.mod-detail .bd[data-v-34e41ea0]{padding:.15rem;color:hsla(0,0%,100%,.8)}.mod-detail .bd h3[data-v-34e41ea0]{line-height:.3rem;font-weight:700;font-size:.16rem}.mod-detail .bd p[data-v-34e41ea0]{line-height:.3rem}
|
1
vue/css/chunk-25bca69f.css
Normal file
@ -0,0 +1 @@
|
||||
.container .inner[data-v-8bae315e],.container[data-v-8bae315e]{height:100%}.mod-calculator[data-v-8bae315e]{height:100%;background:#333}.mod-calculator .hd[data-v-8bae315e]{margin:0 .02rem;padding:.15rem 0 .1rem}.mod-calculator .hd .title[data-v-8bae315e]{display:inline-block;line-height:.22rem;border-left:.04rem solid #e7763e;padding-left:.12rem;font-weight:700;font-size:.17rem}.mod-calculator .search[data-v-8bae315e]{padding:0 .16rem;margin-bottom:.2rem;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.mod-calculator .search .row[data-v-8bae315e]{position:relative;width:100%;margin-bottom:.03rem}.mod-calculator .search input[data-v-8bae315e]{padding:.05rem .08rem;background:hsla(0,0%,100%,.1);line-height:.36rem;font-family:Arial,Helvetica,Microsoft Yahei}.mod-calculator .search button[data-v-8bae315e],.mod-calculator .search input[data-v-8bae315e]{display:block;width:100%;border:medium none;height:.36rem;font-size:.16rem;color:hsla(0,0%,100%,.9);border-radius:.05rem;-webkit-box-sizing:border-box;box-sizing:border-box;outline:none}.mod-calculator .search button[data-v-8bae315e]{margin:.1rem 0 .05rem;background:#e7763e}.mod-calculator .search button[data-v-8bae315e]:hover{background:#e66747}.mod-calculator .search .close[data-v-8bae315e]{position:absolute;right:.15rem;top:.09rem;opacity:.6}.mod-calculator .list[data-v-8bae315e]{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:.08rem .16rem;color:hsla(0,0%,100%,.9)}.mod-calculator .list .item[data-v-8bae315e]{padding:.1rem .15rem;margin-bottom:.02rem;background:hsla(0,0%,49%,.15);border-radius:.03rem;line-height:.24rem;font-size:.16rem}
|
1
vue/css/chunk-337d0ccf.css
Normal file
@ -0,0 +1 @@
|
||||
.container .inner[data-v-634b12ec],.container[data-v-634b12ec]{height:100%}.mod-calculator[data-v-634b12ec]{height:100%;background:#333}.mod-calculator .hd[data-v-634b12ec]{margin:0 .02rem;padding:.15rem 0 .1rem}.mod-calculator .hd .title[data-v-634b12ec]{display:inline-block;line-height:.22rem;border-left:.04rem solid #e7763e;padding-left:.12rem;font-weight:700;font-size:.17rem}.mod-calculator .search[data-v-634b12ec]{padding:0 .16rem;margin-bottom:.2rem;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.mod-calculator .search .row[data-v-634b12ec]{position:relative;width:100%;margin-bottom:.03rem}.mod-calculator .search input[data-v-634b12ec]{padding:.05rem .08rem;background:hsla(0,0%,100%,.1);line-height:.36rem;font-family:Arial,Helvetica,Microsoft Yahei}.mod-calculator .search button[data-v-634b12ec],.mod-calculator .search input[data-v-634b12ec]{display:block;width:100%;border:medium none;height:.36rem;font-size:.16rem;color:hsla(0,0%,100%,.9);border-radius:.05rem;-webkit-box-sizing:border-box;box-sizing:border-box;outline:none}.mod-calculator .search button[data-v-634b12ec]{margin:.1rem 0 .05rem;background:#e7763e}.mod-calculator .search button[data-v-634b12ec]:hover{background:#e66747}.mod-calculator .search .close[data-v-634b12ec]{position:absolute;right:.15rem;top:.09rem;opacity:.6}.mod-calculator .search .call[data-v-634b12ec]{display:inline-block;line-height:.24rem;color:#bbb}.mod-calculator .search .exchange[data-v-634b12ec]{float:right;display:inline-block;width:.2rem;height:.2rem;margin:.02rem .1rem;background:#e7763e;line-height:.2rem;text-align:center;font-size:.16rem;border-radius:50%;color:hsla(0,0%,100%,.8)}.mod-calculator .search .exchange[data-v-634b12ec]:hover{background:#e66747}.mod-calculator .list[data-v-634b12ec]{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:.08rem .16rem;color:hsla(0,0%,100%,.9)}.mod-calculator .list .item[data-v-634b12ec]{padding:.1rem .15rem;margin-bottom:.02rem;background:hsla(0,0%,49%,.15);border-radius:.03rem;line-height:.24rem;font-size:.16rem}
|
1
vue/css/chunk-7f98b868.css
Normal file
@ -0,0 +1 @@
|
||||
.container .inner[data-v-247784a0],.container[data-v-247784a0]{height:100%}.mod-calculator[data-v-247784a0]{height:100%;background:#333}.mod-calculator .row[data-v-247784a0]{height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:space-between;-ms-flex-align:space-between;align-items:space-between;-webkit-box-sizing:border-box;box-sizing:border-box}.mod-calculator .row2[data-v-247784a0]{-webkit-box-flex:2;-ms-flex:2;flex:2}.mod-calculator .col[data-v-247784a0]{width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:space-between;-ms-flex-align:space-between;align-items:space-between;-webkit-box-sizing:border-box;box-sizing:border-box}.mod-calculator span[data-v-247784a0]{vertical-align:middle}.mod-calculator .screen[data-v-247784a0]{width:100%;height:40%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:space-between;-ms-flex-align:space-between;align-items:space-between}.mod-calculator .screen .tip[data-v-247784a0]{width:100%;padding:0 .15rem;height:.3rem;line-height:.3rem;color:#bbb;-webkit-box-sizing:border-box;box-sizing:border-box}.mod-calculator .screen .input[data-v-247784a0],.mod-calculator .screen .output[data-v-247784a0]{width:100%;padding:0 .15rem .15rem .1rem;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mod-calculator .screen .input[data-v-247784a0]{-webkit-box-flex:2;-ms-flex:2;flex:2;font-size:.16rem;color:#bbb}.mod-calculator .screen .output[data-v-247784a0]{-webkit-box-flex:3;-ms-flex:3;flex:3;font-size:.21rem;color:#fff}.mod-calculator .screen .setting[data-v-247784a0]{width:100%;padding:0 .15rem;height:.4rem;background:rgba(0,0,0,.15);line-height:.4rem;font-size:.16rem;color:hsla(0,0%,100%,.9);-webkit-box-sizing:border-box;box-sizing:border-box}.mod-calculator .screen .setting input[type=checkbox][data-v-247784a0]{display:none}.mod-calculator .screen .setting .checkbox[data-v-247784a0]{margin:0 .07rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:inline-block;width:.4rem;height:.2rem;background:hsla(0,0%,100%,.15);line-height:.2rem;vertical-align:middle;text-align:center;border-radius:.1rem}.mod-calculator .screen .setting .switch[data-v-247784a0]{position:absolute;left:0;width:.2rem;height:.2rem;content:"";background:hsla(0,0%,100%,.72);border-radius:.1rem}.mod-calculator .screen .setting input:checked+.checkbox .switch[data-v-247784a0]{left:auto;right:0}.mod-calculator .screen .setting .copyright[data-v-247784a0]{float:right;font-size:.14rem;color:#484848}.mod-calculator .panel[data-v-247784a0]{width:100%;height:60%;font-size:.16rem}.mod-calculator .panel a[data-v-247784a0],.mod-calculator .panel button[data-v-247784a0]{position:relative;background:transparent;border:none;border-left:.01rem solid #444;border-top:.01rem solid #444;font-family:Arial,Helvetica,Microsoft Yahei;font-size:.18rem;color:hsla(0,0%,100%,.9);-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;vertical-align:middle;border-radius:.02rem}.mod-calculator .panel a[data-v-247784a0]:active,.mod-calculator .panel button[data-v-247784a0]:active{background-color:rgba(0,0,0,.1);color:hsla(0,0%,100%,.8)}.mod-calculator .panel button[disabled][data-v-247784a0]{background:transparent;color:hsla(0,0%,100%,.3)}.mod-calculator .panel .btn-first[data-v-247784a0]{border-left:none}.mod-calculator .panel .btn-equal[data-v-247784a0]{background:#e7763e}.mod-calculator .panel .btn-equal-hover[data-v-247784a0]{background:#e66747}.mod-calculator .panel .btn-active[data-v-247784a0]{background-color:rgba(0,0,0,.2);color:hsla(0,0%,100%,.7)}
|
@ -1,61 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
|
||||
<meta name="robots" content="all">
|
||||
<meta name="referrer" content="always">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="Cache-Control" content="no-transform" />
|
||||
<meta name="format-detection" content="telephone=no"/>
|
||||
<meta name="applicable-device" content="pc,mobile"/>
|
||||
<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="/relationship/vue/assets/index-BiHcNiMB.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/relationship/vue/assets/index-Bqz9Bu5y.css">
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but caipiao doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<script type="text/javascript">
|
||||
setTimeout(function(){
|
||||
if(location.hostname.indexOf('passer-by.com')==-1&&location.hostname!='localhost'){
|
||||
location.href = 'http://passer-by.com/';
|
||||
}else if( window.top != window.self ) {
|
||||
window.top.location = self.location.href;
|
||||
}
|
||||
},parseInt(3000+15000*Math.random()));
|
||||
</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() {
|
||||
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>
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=https://passer-by.com/relationship/vue/favicon.ico><title>亲戚计算器手机版 亲戚称呼计算器APP</title><meta name=keywords content=家庭称谓,亲戚称呼,亲戚称谓,亲戚叫法,亲戚关系计算器,亲戚计算器,称呼计算器,親戚關係稱呼,亲戚关系大全,叫什么,什么关系><meta name=description content=中国亲戚关系计算器手机版,走亲访友,逢年过节必备神器。它避免了叫错、不会叫亲戚的尴尬,人人必备家庭教育工具。><link href=https://passer-by.com/relationship/vue/css/chunk-1d9ca9a0.css rel=prefetch><link href=https://passer-by.com/relationship/vue/css/chunk-25bca69f.css rel=prefetch><link href=https://passer-by.com/relationship/vue/css/chunk-337d0ccf.css rel=prefetch><link href=https://passer-by.com/relationship/vue/css/chunk-7f98b868.css rel=prefetch><link href=https://passer-by.com/relationship/vue/js/chunk-1d9ca9a0.js rel=prefetch><link href=https://passer-by.com/relationship/vue/js/chunk-25bca69f.js rel=prefetch><link href=https://passer-by.com/relationship/vue/js/chunk-337d0ccf.js rel=prefetch><link href=https://passer-by.com/relationship/vue/js/chunk-7f98b868.js rel=prefetch><link href=https://passer-by.com/relationship/vue/css/app.css rel=preload as=style><link href=https://passer-by.com/relationship/vue/js/app.js rel=preload as=script><link href=https://passer-by.com/relationship/vue/js/chunk-vendors.js rel=preload as=script><link href=https://passer-by.com/relationship/vue/css/app.css rel=stylesheet></head><body><noscript><strong>We're sorry but caipiao doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><script>setTimeout(function(){
|
||||
if(location.hostname.indexOf('passer-by.com')==-1&&location.hostname!='localhost'){
|
||||
location.href = 'http://passer-by.com/';
|
||||
}else if( window.top != window.self ) {
|
||||
window.top.location = self.location.href;
|
||||
}
|
||||
},parseInt(3000+15000*Math.random()));</script><div id=app></div><script src=https://passer-by.com/relationship/script/relationship.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><div style="display: none;"><script>document.writeln('<iframe src="https://passer-by.com/browser/stat.html?type=relationship&ua='+navigator.userAgent+'" width="" height=""></iframe>');</script></div><script src=https://passer-by.com/relationship/vue/js/chunk-vendors.js></script><script src=https://passer-by.com/relationship/vue/js/app.js></script></body></html>
|
2
vue/js/app.js
Normal file
1
vue/js/app.js.map
Normal file
2
vue/js/chunk-1d9ca9a0.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1d9ca9a0"],{"98f3":function(t,a,s){"use strict";var n=s("d83d"),e=s.n(n);e.a},"9fc0":function(t,a,s){"use strict";s.r(a);var n=function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"container"},[s("div",{staticClass:"mod-detail"},[s("div",{staticClass:"hd"},[s("router-link",{attrs:{to:"/"}},[t._v("返回")])],1),t._m(0),s("div",{staticClass:"ft"})])])},e=[function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"bd"},[s("h3",[t._v("使用说明")]),s("p",[s("span",{staticClass:"name"},[t._v("←")]),s("span",[t._v("删除上一层关系")])]),s("p",[s("span",{staticClass:"name"},[t._v("↻")]),s("span",[t._v("清除所有输入")])]),s("p",[s("span",{staticClass:"name"},[t._v("⇌")]),s("span",[t._v("互称间切换")])]),s("p",[t._v("开始计算前,先在键盘左上方选择自己的性别")])])}],c={name:"Help",components:{},data:function(){return{}},computed:{},methods:{},created:function(){}},i=c,d=(s("98f3"),s("2877")),r=Object(d["a"])(i,n,e,!1,null,"34e41ea0",null);a["default"]=r.exports},d83d:function(t,a,s){}}]);
|
||||
//# sourceMappingURL=chunk-1d9ca9a0.js.map
|
1
vue/js/chunk-1d9ca9a0.js.map
Normal file
2
vue/js/chunk-25bca69f.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-25bca69f"],{"0a24":function(t,e,i){},9304:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAgRJREFUWEfNlz1PFFEUhp+3JQFDgJIgFiaWdjZQUWuUCIZEe038BZoICfwCEu0piKiQYE0FDRWUJBQqUIoxaqA95mxmzOzd+biz7mb2NpvNnHPeZ/eee+c9InKZ2TAwBywCt4FxYCxJ/wFcAqfAFrAn6U9MaVUFmdkd4CXwBBitik+e/wTeA+uSTspySgHMbDURH4kUDsN+JxCvi/ILAcxsH5jpUjhMO5A0m1crF8DMvid73CP9VplLSRNhwQ4AM/sK3OylcqbWN0nT2dptAGb2AXjcJ/G07EdJC+mXfwBJw70KxJclrZjZG2C5JlhZ7pqkVmO2AJKjdgi0dbukLGAdiJZ4CmxmFsD76bjnRzQFeAs8z/mFYaEYiNicd5JeyMxuAGeAf+at2IKeWyf2FzDlAE+BjYr9jSkcExPKPHOAT8B8RIOVCXQj7pLbDnAE3I0AKPqLCRoupk9SuWMHOAcmIwE6ILJ5XRzXCwe4AoZqAORCdCHuda4HAqDxLWi8Cd25uM2qWv04hlveAw+BnYYuokcO4GbTr+Iiv1fnkqkT675xqvmX0UC8jhMId8DNGJKMceilEy7q6zaHnGdK++GIU5gOZ1xky/vhjDscsVOVDSa9dMhtTji7N4M7mmUaMx1Ol0p8Y9hw7vc2/3s4DcyGm9b7wAPgVsF4/gXYBT5LcojK9RfajEl0w5N/GQAAAABJRU5ErkJggg=="},9347:function(t,e,i){"use strict";var a=i("0a24"),s=i.n(a);s.a},ad80:function(t,e,i){"use strict";i.r(e);var a=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"container"},[a("div",{staticClass:"mod-calculator"},[t._m(0),a("div",{staticClass:"bd"},[a("div",{staticClass:"search"},[a("div",{staticClass:"row"},[a("input",{directives:[{name:"model",rawName:"v-model",value:t.value,expression:"value"}],attrs:{type:"text",placeholder:"输入你亲戚的称谓"},domProps:{value:t.value},on:{input:[function(e){e.target.composing||(t.value=e.target.value)},t.bindInput]}}),t.value?[a("span",{staticClass:"close",on:{click:t.bindClear}},[a("img",{attrs:{src:i("9304"),width:"16",height:"16",alt:"关闭"}})])]:t._e()],2),a("div",{staticClass:"row"},[a("button",{on:{click:t.bindConfirm}},[t._v("查找")])])]),a("div",{staticClass:"list"},[t.value?[t.items.length?t._l(t.items,(function(e,i){return a("div",{key:i},[a("div",{staticClass:"item"},[t._v(t._s(e))])])})):t._e()]:t._e()],2)])])])},s=[function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"hd"},[i("span",{staticClass:"title"},[t._v("通过称谓查关系")])])}],n={name:"Chain",components:{},data:function(){return{value:"",items:[]}},computed:{},methods:{bindInput:function(t){var e=this;e.value=t.target.value,e.items=[]},bindClear:function(){var t=this;t.value="",t.items=[]},bindConfirm:function(){var t=this,e=t.value,i=window.relationship({text:e,type:"chain"});i.length?t.items=i:t.items=["未找到相应关系!"]}},created:function(){}},c=n,l=(i("9347"),i("2877")),u=Object(l["a"])(c,a,s,!1,null,"8bae315e",null);e["default"]=u.exports}}]);
|
||||
//# sourceMappingURL=chunk-25bca69f.js.map
|
1
vue/js/chunk-25bca69f.js.map
Normal file
2
vue/js/chunk-337d0ccf.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-337d0ccf"],{4422:function(t,e,a){},"8af0":function(t,e,a){"use strict";var i=a("4422"),s=a.n(i);s.a},9304:function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAgRJREFUWEfNlz1PFFEUhp+3JQFDgJIgFiaWdjZQUWuUCIZEe038BZoICfwCEu0piKiQYE0FDRWUJBQqUIoxaqA95mxmzOzd+biz7mb2NpvNnHPeZ/eee+c9InKZ2TAwBywCt4FxYCxJ/wFcAqfAFrAn6U9MaVUFmdkd4CXwBBitik+e/wTeA+uSTspySgHMbDURH4kUDsN+JxCvi/ILAcxsH5jpUjhMO5A0m1crF8DMvid73CP9VplLSRNhwQ4AM/sK3OylcqbWN0nT2dptAGb2AXjcJ/G07EdJC+mXfwBJw70KxJclrZjZG2C5JlhZ7pqkVmO2AJKjdgi0dbukLGAdiJZ4CmxmFsD76bjnRzQFeAs8z/mFYaEYiNicd5JeyMxuAGeAf+at2IKeWyf2FzDlAE+BjYr9jSkcExPKPHOAT8B8RIOVCXQj7pLbDnAE3I0AKPqLCRoupk9SuWMHOAcmIwE6ILJ5XRzXCwe4AoZqAORCdCHuda4HAqDxLWi8Cd25uM2qWv04hlveAw+BnYYuokcO4GbTr+Iiv1fnkqkT675xqvmX0UC8jhMId8DNGJKMceilEy7q6zaHnGdK++GIU5gOZ1xky/vhjDscsVOVDSa9dMhtTji7N4M7mmUaMx1Ol0p8Y9hw7vc2/3s4DcyGm9b7wAPgVsF4/gXYBT5LcojK9RfajEl0w5N/GQAAAABJRU5ErkJggg=="},c2cb:function(t,e,a){"use strict";a.r(e);var i=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"container"},[i("div",{staticClass:"mod-calculator"},[t._m(0),i("div",{staticClass:"bd"},[i("div",{staticClass:"search"},[i("div",{staticClass:"row"},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.target,expression:"target"}],attrs:{type:"text",placeholder:"输入你亲戚的称谓"},domProps:{value:t.target},on:{input:[function(e){e.target.composing||(t.target=e.target.value)},t.bindInputTarget]}}),t.target?[i("span",{staticClass:"close",on:{click:t.bindClearTarget}},[i("img",{attrs:{src:a("9304"),width:"16",height:"16",alt:"关闭"}})])]:t._e()],2),i("div",{staticClass:"row"},[i("span",{staticClass:"call"},[t._v("⇓ 称呼")]),i("span",{staticClass:"exchange",on:{click:t.bindExchange}},[t._v("⇅")])]),i("div",{staticClass:"row"},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.text,expression:"text"}],attrs:{type:"text",placeholder:"输入你亲戚的称谓"},domProps:{value:t.text},on:{input:[function(e){e.target.composing||(t.text=e.target.value)},t.bindInputText]}}),t.text?[i("span",{staticClass:"close",on:{click:t.bindClearText}},[i("img",{attrs:{src:a("9304"),width:"16",height:"16",alt:"关闭"}})])]:t._e()],2),i("div",{staticClass:"row"},[i("button",{on:{click:t.bindConfirm}},[t._v("查找")])])]),i("div",{staticClass:"list"},[t.text&&t.target?[t.items.length?t._l(t.items,(function(e,a){return i("div",{key:a},[i("div",{staticClass:"item"},[t._v(t._s(e))])])})):t._e()]:t._e()],2)])])])},s=[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"hd"},[a("span",{staticClass:"title"},[t._v("两者之间的称谓")])])}],n={name:"Both",components:{},data:function(){return{text:"",target:"",items:[]}},computed:{},methods:{bindInputText:function(t){var e=this;e.text=t.target.value,e.items=[]},bindClearText:function(){var t=this;t.text="",t.items=[]},bindInputTarget:function(t){var e=this;e.target=t.target.value,e.items=[]},bindClearTarget:function(){var t=this;t.target="",t.items=[]},bindExchange:function(){var t=this,e=t.text;t.text=t.target,t.target=e,t.text&&t.target&&t.bindConfirm()},bindConfirm:function(){var t=this;if(t.text&&t.target){var e=window.relationship({text:t.text,target:t.target});e.length?t.items=e:t.items=["未找到相应关系!"]}else alert("请输入相应称谓")}},created:function(){}},c=n,r=(a("8af0"),a("2877")),l=Object(r["a"])(c,i,s,!1,null,"634b12ec",null);e["default"]=l.exports}}]);
|
||||
//# sourceMappingURL=chunk-337d0ccf.js.map
|
1
vue/js/chunk-337d0ccf.js.map
Normal file
2
vue/js/chunk-7f98b868.js
Normal file
1
vue/js/chunk-7f98b868.js.map
Normal file
13
vue/js/chunk-vendors.js
Normal file
1
vue/js/chunk-vendors.js.map
Normal file
820
zh-HK.html
@ -1,820 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0"/>
|
||||
<meta name="robots" content="all">
|
||||
<meta name="referrer" content="always">
|
||||
<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="中國親戚關系計算器是一款最爲全面準確的親戚稱呼計算器及親戚關系在線查詢工具,逢年過節走親訪友必備神器,亦可作爲家庭啓蒙教育應用。"/>
|
||||
<link rel="canonical" href="https://passer-by.com/relationship/"/>
|
||||
<link rel="stylesheet" href="static/style/index.css">
|
||||
<script type="text/javascript">
|
||||
setTimeout(function(){
|
||||
if(location.protocol.indexOf('http')>-1&&location.hostname.indexOf('passer-by.com')==-1){
|
||||
location.href = 'http://passer-by.com/';
|
||||
}else if( window.top != window.self ) {
|
||||
window.top.location = self.location.href;
|
||||
}
|
||||
},parseInt(3000+15000*Math.random()));
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="scroll-container">
|
||||
<header>
|
||||
<div class="mod-head">
|
||||
<div class="inner">
|
||||
<div class="bd">
|
||||
<span class="language">
|
||||
<a href="/relationship/">简体</a>
|
||||
<span>/</span>
|
||||
<a class="active" href="zh-HK.html">繁體</a>
|
||||
</span>
|
||||
<a class="btn" href="https://github.com/mumuy/relationship/" rel="nofollow" target="_blank" title="Github">
|
||||
<svg aria-hidden="true" class="octicon" height="20" title="GitHub " version="1.1" viewBox="0 0 16 16" width="24"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59 0.4 0.07 0.55-0.17 0.55-0.38 0-0.19-0.01-0.82-0.01-1.49-2.01 0.37-2.53-0.49-2.69-0.94-0.09-0.23-0.48-0.94-0.82-1.13-0.28-0.15-0.68-0.52-0.01-0.53 0.63-0.01 1.08 0.58 1.23 0.82 0.72 1.21 1.87 0.87 2.33 0.66 0.07-0.52 0.28-0.87 0.51-1.07-1.78-0.2-3.64-0.89-3.64-3.95 0-0.87 0.31-1.59 0.82-2.15-0.08-0.2-0.36-1.02 0.08-2.12 0 0 0.67-0.21 2.2 0.82 0.64-0.18 1.32-0.27 2-0.27 0.68 0 1.36 0.09 2 0.27 1.53-1.04 2.2-0.82 2.2-0.82 0.44 1.1 0.16 1.92 0.08 2.12 0.51 0.56 0.82 1.27 0.82 2.15 0 3.07-1.87 3.75-3.65 3.95 0.29 0.25 0.54 0.73 0.54 1.48 0 1.07-0.01 1.93-0.01 2.2 0 0.21 0.15 0.46 0.55 0.38C13.71 14.53 16 11.53 16 8 16 3.58 12.42 0 8 0z"></path></svg>
|
||||
<span>Github</span>
|
||||
</a>
|
||||
<a class="btn" href="/">個人網站</a>
|
||||
</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="module mod-panel">
|
||||
<div class="inner">
|
||||
<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"/>
|
||||
</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="panel-right">
|
||||
<div class="c-hd">
|
||||
<ul>
|
||||
<li class="active"><a href="javascript:;" rel="nofollow">關系找稱呼</a></li>
|
||||
<li><a href="javascript:;" rel="nofollow">稱呼找關系</a></li>
|
||||
<li><a href="javascript:;" rel="nofollow">兩者間稱呼</a></li>
|
||||
<li><a href="javascript:;" rel="nofollow">兩者的合稱</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="c-bd">
|
||||
<div class="c-panel" style="display:block;">
|
||||
<div class="row">
|
||||
<div class="field">
|
||||
區域模式:
|
||||
<label for="field-0-1">
|
||||
<input id="field-0-1" type="radio" name="mode" value="default" checked>
|
||||
<span>默認</span>
|
||||
</label>
|
||||
<label for="field-0-2">
|
||||
<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>
|
||||
<div class="field">
|
||||
我的性別:
|
||||
<label for="field-1-1">
|
||||
<input id="field-1-1" type="radio" name="sex" value="1" checked="checked">
|
||||
<span>男</span>
|
||||
</label>
|
||||
<label for="field-1-2">
|
||||
<input id="field-1-2" type="radio" name="sex" value="0">
|
||||
<span>女</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="field">
|
||||
稱呼方式:
|
||||
<label for="field-2-1">
|
||||
<input id="field-2-1" type="radio" name="reverse" value="0" checked>
|
||||
<span>我稱呼對方</span>
|
||||
</label>
|
||||
<label for="field-2-2">
|
||||
<input id="field-2-2" type="radio" name="reverse" value="1">
|
||||
<span>對方稱呼我</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<textarea name="input" placeholder="稱呼之間用'的'字分開…"></textarea>
|
||||
</div>
|
||||
<div class="operation">
|
||||
<div class="row">
|
||||
<p>
|
||||
<span>
|
||||
<button class="btn btn-small" data-value="爸爸">父</button>
|
||||
<button class="btn btn-small" data-value="媽媽">母</button>
|
||||
</span>
|
||||
<span>
|
||||
<button class="btn btn-small" data-value="老公">夫</button>
|
||||
<button class="btn btn-small" data-value="老婆">妻</button>
|
||||
</span>
|
||||
<span>
|
||||
<button class="btn btn-small" data-value="哥哥">兄</button>
|
||||
<button class="btn btn-small" data-value="弟弟">弟</button>
|
||||
</span>
|
||||
<span>
|
||||
<button class="btn btn-small" data-value="姐姐">姐</button>
|
||||
<button class="btn btn-small" data-value="妹妹">妹</button>
|
||||
</span>
|
||||
<span>
|
||||
<button class="btn btn-small" data-value="兒子">子</button>
|
||||
<button class="btn btn-small" data-value="女兒">女</button>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<button class="btn btn-3 btn-orange">回退</button>
|
||||
<button class="btn btn-3 btn-red">清空</button>
|
||||
<button class="btn btn-3 btn-green">計算</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<p>計算結果:</p>
|
||||
<p><textarea name="result" readonly></textarea></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c-panel">
|
||||
<div class="row">
|
||||
<div class="field">
|
||||
輸入稱呼:
|
||||
<input class="input-text" type="text" name="input" placeholder="輸入要查詢的稱呼"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="operation">
|
||||
<div class="row">
|
||||
<button class="btn btn-red">清空</button>
|
||||
<button class="btn btn-green">計算</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<p>計算結果:</p>
|
||||
<p><textarea name="result" readonly></textarea></p>
|
||||
</div>
|
||||
<div class="intro">
|
||||
<h3>應用場景</h3>
|
||||
<p class="q">七舅姥爺和我什麼關系?</p>
|
||||
<p class="q">三叔公是什麼親戚?</p>
|
||||
<p class="q">侄子和外甥的區別在哪裏?</p>
|
||||
<p class="q">太外公和外太公有什麼不同?</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c-panel">
|
||||
<div class="row text-right">
|
||||
<label for="field-3-0">
|
||||
<input id="field-3-0" type="checkbox" name="optimal" value="1" checked>
|
||||
<span>最短關系</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="field">
|
||||
<input class="input-text" type="text" name="person" placeholder="輸入要查詢的稱呼"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="field">
|
||||
稱呼方式:
|
||||
<label for="field-3-1">
|
||||
<input id="field-3-1" type="radio" name="reverse2" value="1" checked>
|
||||
<span>前者稱呼後者</span>
|
||||
</label>
|
||||
<label for="field-3-2">
|
||||
<input id="field-3-2" type="radio" name="reverse2" value="0">
|
||||
<span>後者稱呼前者</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="field">
|
||||
<input class="input-text" type="text" name="target" placeholder="輸入要查詢的稱呼"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="operation">
|
||||
<div class="row">
|
||||
<button class="btn btn-red">清空</button>
|
||||
<button class="btn btn-green">計算</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<p>計算結果:</p>
|
||||
<p><textarea name="result" readonly></textarea></p>
|
||||
</div>
|
||||
<div class="intro">
|
||||
<h3>應用場景</h3>
|
||||
<p class="q">外舅公是我媽的誰?</p>
|
||||
<p class="q">我爸應該叫舅老爺什麼?</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="c-panel">
|
||||
<div class="row text-right">
|
||||
<label for="field-4-0">
|
||||
<input id="field-4-0" type="checkbox" name="optimal" value="1" checked>
|
||||
<span>最短關系</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="field">
|
||||
<input class="input-text" type="text" name="person" placeholder="輸入要查詢的稱呼"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="field" style="text-align:center;">
|
||||
<span>+</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="field">
|
||||
<input class="input-text" type="text" name="target" placeholder="輸入要查詢的稱呼"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="operation">
|
||||
<div class="row">
|
||||
<button class="btn btn-red">清空</button>
|
||||
<button class="btn btn-green">計算</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<p>計算結果:</p>
|
||||
<p><textarea name="result" readonly></textarea></p>
|
||||
</div>
|
||||
<div class="intro">
|
||||
<h3>應用場景</h3>
|
||||
<p class="q">奶奶和外婆之間什麼關系?</p>
|
||||
<p class="q">舅公和爺爺是什麼關系?</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</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"><strong>1.</strong> 使用別稱查詢:</p>
|
||||
<p class="a">姥姥的爸爸的老竇 = 外曾外曾祖父</p>
|
||||
<p class="a">娘子的爹地的母親 = 祖岳母</p>
|
||||
<p class="a">岳丈的媽咪的細佬 = 舅祖岳父</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q"><strong>2.</strong> 使用合稱查詢:</p>
|
||||
<p class="a">姐夫的雙親 = 姊妹姻父 / 姊妹姻母</p>
|
||||
<p class="a">媽媽的祖父母 = 外曾祖父 / 外曾祖母</p>
|
||||
<p class="a">弟弟的孩子 = 侄子 / 侄女</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q"><strong>3.</strong> 大小數字混合查詢:</p>
|
||||
<p class="a">大哥的二姑媽的七舅姥爺 = 舅曾外祖父</p>
|
||||
<p class="a">二女婿的小姨 = 女姻姨妹</p>
|
||||
<p class="a">大佬的三叔的次子 = 堂哥 / 堂弟</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q"><strong>4.</strong> 不限制祖輩孫輩跨度查詢:</p>
|
||||
<p class="a">舅媽的婆婆的外甥的姨媽的侄子 = 舅表舅父</p>
|
||||
<p class="a">老公的丈母娘的兒媳 = 嫂子 / 弟妹</p>
|
||||
<p class="a">外婆的孫子的爸爸的仔 = 舅表哥 / 舅表弟</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q"><strong>5.</strong> 根據年齡推導可能性:</p>
|
||||
<p class="a">哥哥的表姐 = 姑表姐 / 舅表姐</p>
|
||||
<p class="a">堂妹的姐姐 = 堂姐 / 堂妹</p>
|
||||
<p class="a">弟弟的表哥 = 姑表哥 / 姑表弟 / 舅表哥 / 舅表弟</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q"><strong>6.</strong> 根據語境確認性別:</p>
|
||||
<p class="a">老婆的女兒的外婆 = 岳母</p>
|
||||
<p class="a">愛人的婆婆的兒子 = 哥哥 / 弟弟 / 自己</p>
|
||||
<p class="a">岳母的配偶的兒子的爸爸 = 岳父</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q"><strong>7.</strong> 支持古文式表達:</p>
|
||||
<p class="a">吾父之舅父 = 舅爺爺</p>
|
||||
<p class="a">母之兄長之妻 = 大舅媽</p>
|
||||
<p class="a">泰山之高堂 = 祖岳父 / 祖岳母</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q"><strong>8.</strong> 解析某稱謂關系鏈:</p>
|
||||
<p class="a">七舅姥爺 = 媽媽的媽媽的兄弟</p>
|
||||
<p class="a">姑奶奶 = 爸爸的爸爸的姐妹</p>
|
||||
<p class="a">外太公 = 媽媽的爸爸的爸爸</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="item">
|
||||
<p class="q"><strong>9.</strong> 算兩個親戚間的合稱關系:</p>
|
||||
<p class="a">奶奶 + 外婆 = 兒女親家</p>
|
||||
<p class="a">媽媽 + 嬸嬸 = 妯娌</p>
|
||||
<p class="a">岳父 + 我 = 翁婿</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-feature">
|
||||
<div class="inner">
|
||||
<div class="bd">
|
||||
<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>
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-copy">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>算法開源</span></div>
|
||||
<div class="bd">
|
||||
<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>
|
||||
<a class="github-button" href="https://github.com/mumuy/relationship/fork" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Fork mumuy/relationship on GitHub">Fork</a>
|
||||
<a class="github-button" href="https://github.com/mumuy/relationship" data-color-scheme="no-preference: light; light: light; dark: dark;" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star mumuy/relationship on GitHub">Star</a>
|
||||
<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/lang/relationship.zh-HK.min.js"></script></code>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scroll-item">
|
||||
<div class="module mod-app">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>他們都在使用</span></div>
|
||||
<div class="bd">
|
||||
<ul>
|
||||
<li>
|
||||
<div class="app">
|
||||
<span class="icon"><img src="static/image/icon/miui.png" width="64" height="64"/></span>
|
||||
<span class="name">小米計算器</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="app">
|
||||
<span class="icon"><img src="static/image/icon/quanneng.png" width="64" height="64"/></span>
|
||||
<span class="name">全能計算器</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="app">
|
||||
<span class="icon"><img src="static/image/icon/yuwendaren.png" width="64" height="64"/></span>
|
||||
<span class="name">有道語文達人</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="app">
|
||||
<span class="icon"><img src="static/image/icon/qinqi.png" width="64" height="64"/></span>
|
||||
<span class="name">親戚計算器</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="module mod-foot">
|
||||
<div class="inner">
|
||||
<div class="hd"><span>😳支持我的開源</span></div>
|
||||
<div class="bd">
|
||||
<div class="box">
|
||||
<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>
|
||||
</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;
|
||||
|
||||
// 自定義模式
|
||||
for(var key in relationshipMode){
|
||||
relationship.setMode(key,relationshipMode[key]['data']);
|
||||
}
|
||||
|
||||
// 標籤頁
|
||||
(function(){
|
||||
var $module = document.querySelector('.mod-panel');
|
||||
var $items = $module.querySelectorAll('li');
|
||||
var $panels = $module.querySelectorAll('.c-panel');
|
||||
for(var i=0;i<$items.length;i++){
|
||||
(function(i){
|
||||
$items[i].addEventListener('click',function(){
|
||||
for(var j=0;j<$panels.length;j++){
|
||||
$items[j].className = i==j?'active':'';
|
||||
$panels[j].style.display = i==j?'block':'none';
|
||||
}
|
||||
});
|
||||
})(i);
|
||||
}
|
||||
})();
|
||||
|
||||
// 關系找稱呼
|
||||
(function(){
|
||||
var $module = document.querySelector('.mod-panel');
|
||||
var $panel = $module.querySelector('.c-panel:nth-child(1)');
|
||||
var $radio = $panel.querySelectorAll('input[type="radio"]');
|
||||
var $mode = $panel.querySelectorAll('input[name="mode"]');
|
||||
var $sex = $panel.querySelectorAll('input[name="sex"]');
|
||||
var $reverse = $panel.querySelectorAll('input[name="reverse"]');
|
||||
var $small_btns = $panel.querySelectorAll('.btn-small');
|
||||
var $input = $panel.querySelector('textarea[name="input"]');
|
||||
var $result = $panel.querySelector('textarea[name="result"]');
|
||||
var toggleSex = function(sex){
|
||||
if(sex){ //男女判斷
|
||||
$small_btns[2].disabled=true;
|
||||
$small_btns[3].disabled=false;
|
||||
}else{
|
||||
$small_btns[2].disabled=false;
|
||||
$small_btns[3].disabled=true;
|
||||
}
|
||||
}
|
||||
var count = function(){
|
||||
var value = $input.value.trim();
|
||||
if(value){
|
||||
var sex = $sex[0].checked?1:0;
|
||||
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 = '';
|
||||
if(result.length){
|
||||
$result.value = result.join('\n');
|
||||
}else{
|
||||
$result.value = '貌似他/她跟你不是很熟哦!';
|
||||
}
|
||||
}else{
|
||||
$result.value = '';
|
||||
}
|
||||
};
|
||||
var bindChange = function(){
|
||||
var value = $input.value.trim();
|
||||
if(value){
|
||||
var input_result = relationship({text:value.split('的')[0],sex:-1,type:'chain'});
|
||||
var output_result = relationship({text:value,sex:-1,type:'chain'});
|
||||
if(input_result.length){
|
||||
var isFamale = input_result.every(function(value){
|
||||
return value.split('的').shift()=='老公';
|
||||
});
|
||||
var isMale = input_result.every(function(value){
|
||||
return value.split('的').shift()=='老婆';
|
||||
});
|
||||
if(isFamale){
|
||||
$sex[1].checked = true;
|
||||
}else if(isMale){
|
||||
$sex[0].checked = true;
|
||||
}
|
||||
}
|
||||
if(output_result.length){
|
||||
var name = output_result[0].split('的').pop();
|
||||
if(!name){
|
||||
toggleSex($sex[0].checked);
|
||||
}else{
|
||||
toggleSex('爸爸,老公,兒子,哥哥,弟弟,兄弟'.indexOf(name)>-1);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$result.value = '';
|
||||
}
|
||||
};
|
||||
|
||||
for(var i=0;i<$small_btns.length;i++){
|
||||
$small_btns[i].onclick = function(){
|
||||
var value = $input.value.trim();
|
||||
var name = this.getAttribute('data-value');
|
||||
if(value){
|
||||
$input.value= value+'的'+name;
|
||||
}else{
|
||||
$input.value= name;
|
||||
}
|
||||
toggleSex('爸爸,老公,兒子,哥哥,弟弟,兄弟'.indexOf(name)>-1);
|
||||
}
|
||||
}
|
||||
for(var i=0;i<$radio.length;i++){
|
||||
$radio[i].onchange=function(){
|
||||
toggleSex($sex[0].checked);
|
||||
if($result.value){
|
||||
count();
|
||||
}
|
||||
}
|
||||
}
|
||||
var hander = null;
|
||||
$input.addEventListener('paste',function(){
|
||||
hander&&clearTimeout(bindChange,250);
|
||||
hander = setTimeout(bindChange,250);
|
||||
});
|
||||
$input.addEventListener('input',function(){
|
||||
hander&&clearTimeout(bindChange,250);
|
||||
hander = setTimeout(bindChange,250);
|
||||
});
|
||||
$panel.querySelector('.btn-orange').addEventListener('click',function(){
|
||||
var value = $input.value.trim();
|
||||
var index = value.lastIndexOf('的');
|
||||
index = Math.max(0,index);
|
||||
var search = value.substr(0,index);
|
||||
$input.value = search;
|
||||
$result.value = '';
|
||||
var name = search.split('的').pop();
|
||||
if(!name){
|
||||
toggleSex($sex[0].checked);
|
||||
}else{
|
||||
toggleSex('爸爸,老公,兒子,哥哥,弟弟'.indexOf(name)>-1);
|
||||
}
|
||||
});
|
||||
$panel.querySelector('.btn-red').addEventListener('click',function(){
|
||||
$result.value = $input.value = '';
|
||||
toggleSex($sex[0].checked);
|
||||
});
|
||||
$panel.querySelector('.btn-green').addEventListener('click',count);
|
||||
|
||||
toggleSex($sex[0].checked);
|
||||
})();
|
||||
|
||||
// 稱呼找關系
|
||||
(function(){
|
||||
var $module = document.querySelector('.mod-panel');
|
||||
var $panel = $module.querySelector('.c-panel:nth-child(2)');
|
||||
var $radio = $panel.querySelectorAll('input[type="radio"]');
|
||||
var $input = $panel.querySelector('input[name="input"]');
|
||||
var $result = $panel.querySelector('textarea[name="result"]');
|
||||
var count = function(){
|
||||
var value = $input.value.trim();
|
||||
if(value){
|
||||
var result = relationship({text:value,type:'chain'});
|
||||
if(result.length){
|
||||
$result.value = result.join('\n');
|
||||
}else{
|
||||
$result.value = '貌似他/她跟你不是很熟哦!';
|
||||
}
|
||||
}else{
|
||||
$result.value = '';
|
||||
}
|
||||
};
|
||||
$panel.querySelector('.btn-red').onclick = function(){
|
||||
$result.value = $input.value = '';
|
||||
};
|
||||
$panel.querySelector('.btn-green').onclick = count;
|
||||
})();
|
||||
|
||||
// 兩者間稱呼
|
||||
(function(){
|
||||
var $module = document.querySelector('.mod-panel');
|
||||
var $panel = $module.querySelector('.c-panel:nth-child(3)');
|
||||
var $radio = $panel.querySelectorAll('input[type="radio"]');
|
||||
var $reverse = $panel.querySelectorAll('input[name="reverse2"]');
|
||||
var $optimal = $panel.querySelectorAll('input[name="optimal"]');
|
||||
var $person = $panel.querySelector('input[name="person"]');
|
||||
var $target = $panel.querySelector('input[name="target"]');
|
||||
var $result = $panel.querySelector('textarea[name="result"]');
|
||||
var count = function(){
|
||||
var person = $person.value.trim();
|
||||
var target = $target.value.trim();
|
||||
if(person){
|
||||
if($reverse[0].checked){
|
||||
var temp = target;
|
||||
target = person;
|
||||
person = temp;
|
||||
}
|
||||
var result = relationship({text:person,target:target,optimal:$optimal[0].checked});
|
||||
if(result.length){
|
||||
$result.value = result.join('\n');
|
||||
}else{
|
||||
$result.value = '他們貌似不是很熟哦!';
|
||||
}
|
||||
}else{
|
||||
$result.value = '';
|
||||
}
|
||||
};
|
||||
for(var i=0;i<$radio.length;i++){
|
||||
$radio[i].onchange=function(){
|
||||
if($result.value){
|
||||
count();
|
||||
}
|
||||
}
|
||||
}
|
||||
$panel.querySelector('.btn-red').onclick = function(){
|
||||
$result.value = $person.value = $target.value = '';
|
||||
};
|
||||
$panel.querySelector('.btn-green').onclick = count;
|
||||
})();
|
||||
|
||||
// 兩者的稱呼
|
||||
(function(){
|
||||
var $module = document.querySelector('.mod-panel');
|
||||
var $panel = $module.querySelector('.c-panel:nth-child(4)');
|
||||
var $radio = $panel.querySelectorAll('input[type="radio"]');
|
||||
var $optimal = $panel.querySelectorAll('input[name="optimal"]');
|
||||
var $person = $panel.querySelector('input[name="person"]');
|
||||
var $target = $panel.querySelector('input[name="target"]');
|
||||
var $result = $panel.querySelector('textarea[name="result"]');
|
||||
var count = function(){
|
||||
var person = $person.value.trim();
|
||||
var target = $target.value.trim();
|
||||
if(person){
|
||||
var result = relationship({text:person,target:target,type:'pair',optimal:$optimal[0].checked});
|
||||
if(result.length){
|
||||
$result.value = result.join('\n');
|
||||
}else{
|
||||
$result.value = '未找到合稱!';
|
||||
}
|
||||
}else{
|
||||
$result.value = '';
|
||||
}
|
||||
};
|
||||
for(var i=0;i<$radio.length;i++){
|
||||
$radio[i].onchange=function(){
|
||||
if($result.value){
|
||||
count();
|
||||
}
|
||||
}
|
||||
}
|
||||
$panel.querySelector('.btn-red').onclick = function(){
|
||||
$result.value = $person.value = $target.value = '';
|
||||
};
|
||||
$panel.querySelector('.btn-green').onclick = count;
|
||||
})();
|
||||
</script>
|
||||
<script async defer src="https://cdn.bootcdn.net/ajax/libs/github-buttons/2.21.1/buttons.min.js"></script>
|
||||
<script type="text/javascript" src="https://passer-by.com/public/script/stat.js"></script>
|
||||
</body>
|
||||
</html>
|