UNPKG

dtable-utils

Version:

dtable common utils

73 lines (69 loc) 2.57 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var provinceReg = /.+省|.+自治区|.+特别行政区|北京市|天津市|上海市|重庆市|安徽|福建|甘肃|广东|广西|贵州|海南|河北|河南|黑龙江|湖北|湖南|吉林|江苏|江西|辽宁|内蒙古|宁夏|青海|山东|山西|陕西|四川|西藏|新疆|云南|浙江|北京|上海|天津|重庆/; var cityReg = /.+自治州|[^市]+市|.+盟|.+地区|.+区划/; var districtReg = /(.+市|.+县|.+旗|.+区)/; var formatTextToGeolocation = function formatTextToGeolocation(value, columnData) { // compatible with the old version, the old version data may be null or undefined var _ref = columnData || {}, _ref$geo_format = _ref.geo_format, geo_format = _ref$geo_format === void 0 ? 'geolocation' : _ref$geo_format; var cellValue = value || ''; if (cellValue.length < 3) { return {}; } if (geo_format === 'lng_lat') { // match floating point numbers // ^[1-9]\d*\.\d+$ --> floating point type that does not start with 0 // ^0\.\d+$ --> floating point type starting with 0 // ^[1-9]\d*$ --> non-zero integer // 0 var reg = /^-?([1-9]\d*\.\d+|0\.\d+|[1-9]\d*|0)$/; if (cellValue.indexOf(',') < 0) return {}; var lng_lat = cellValue.split(','); if (lng_lat.length !== 2) { return {}; } var lng = lng_lat[0].trim(); var lat = lng_lat[1].trim(); if (!lng || !lat) { return {}; } if (!lng.match(reg) || !lat.match(reg)) { return {}; } return { lng: lng, lat: lat }; } var matchedProvince = cellValue.match(provinceReg); var province = ''; var city = ''; var district = ''; var detail = ''; if (matchedProvince) { province = matchedProvince[0]; cellValue = cellValue.slice(matchedProvince.index + province.length); } var matchedCity = cellValue.match(cityReg); if (matchedCity) { city = matchedCity[0]; cellValue = cellValue.slice(matchedCity.index + city.length); } else if (province.includes('北京') || province.includes('天津') || province.includes('重庆') || province.includes('上海')) { city = province; } var matchedDistrict = cellValue.match(districtReg); if (matchedDistrict) { district = matchedDistrict[0]; cellValue = cellValue.slice(matchedDistrict.index + district.length); } detail = cellValue; return { province: province, city: city, district: district, detail: detail }; }; exports.formatTextToGeolocation = formatTextToGeolocation;