dtable-utils
Version:
dtable common utils
73 lines (69 loc) • 2.57 kB
JavaScript
;
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;