tiny-pinyin
Advanced tools
Comparing version 1.1.0 to 1.2.0
@@ -1,1 +0,1 @@ | ||
!function(N,A){"object"==typeof exports&&"object"==typeof module?module.exports=A():"function"==typeof define&&define.amd?define([],A):"object"==typeof exports?exports.Pinyin=A():N.Pinyin=A()}(this,function(){return function(N){function A(I){if(t[I])return t[I].exports;var U=t[I]={i:I,l:!1,exports:{}};return N[I].call(U.exports,U,U.exports,A),U.l=!0,U.exports}var t={};return A.m=N,A.c=t,A.i=function(N){return N},A.d=function(N,t,I){A.o(N,t)||Object.defineProperty(N,t,{configurable:!1,enumerable:!0,get:I})},A.n=function(N){var t=N&&N.__esModule?function(){return N.default}:function(){return N};return A.d(t,"a",t),t},A.o=function(N,A){return Object.prototype.hasOwnProperty.call(N,A)},A.p="",A(A.s=2)}([function(N,A,t){"use strict";function I(N){N&&("function"==typeof N&&(N=[N]),N.forEach&&N.forEach(function(N){"function"==typeof N&&N(r)}))}function U(N){return N||null===u?("object"===("undefined"==typeof Intl?"undefined":o(Intl))&&Intl.Collator?(f=new Intl.Collator(["zh-Hans-CN","zh-CN"]),u=1===Intl.Collator.supportedLocalesOf(["zh-CN"]).length):u=!1,u):u}function e(N){var A=r.UNIHANS,t=r.PINYINS,I=r.EXCEPTIONS,U={source:N};if(N in I)return U.type=E,U.target=I[N],U;var e=-1,n=void 0;if(N.charCodeAt(0)<256)return U.type=O,U.target=N,U;if((n=f.compare(N,G))<0)return U.type=i,U.target=N,U;if(0===n)U.type=E,e=0;else{if((n=f.compare(N,H))>0)return U.type=i,U.target=N,U;0===n&&(U.type=E,e=A.length-1)}if(U.type=E,e<0)for(var o=0,u=A.length-1;o<=u;){e=~~((o+u)/2);var S=A[e];if(0===(n=f.compare(N,S)))break;n>0?o=e+1:u=e-1}return n<0&&e--,U.target=t[e],U.target||(U.type=i,U.target=U.source),U}function n(N){if("string"!=typeof N)throw new Error("argument should be string.");if(!U())throw new Error("not support Intl or zh-CN language.");return N.split("").map(function(N){return e(N)})}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(N){return typeof N}:function(N){return N&&"function"==typeof Symbol&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},r=t(3),G="阿",H="鿿",O=1,E=2,i=3,u=null,f=void 0;N.exports={isSupported:U,parse:n,patchDict:I,convertToPinyin:function(N,A,t){return n(N).map(function(N){return t&&N.type===E?N.target.toLowerCase():N.target}).join(A||"")}}},function(N,A,t){"use strict";N.exports=function(N){N.EXCEPTIONS={"嗲":"DIA","碡":"ZHOU","聒":"GUO","炔":"QUE","蚵":"KE","砉":"HUA","嬷":"MO","蹊":"XI","丬":"PAN","霰":"XIAN","豉":"CHI","饧":"XING","帧":"ZHEN","芎":"XIONG","谁":"SHUI","钶":"KE"},N.UNIHANS[91]="伕",N.UNIHANS[347]="仚",N.UNIHANS[393]="诌",N.UNIHANS[39]="婤",N.UNIHANS[50]="腠",N.UNIHANS[369]="攸",N.UNIHANS[123]="乯",N.UNIHANS[171]="刕",N.UNIHANS[102]="佝",N.UNIHANS[126]="犿",N.UNIHANS[176]="列",N.UNIHANS[178]="刢",N.UNIHANS[252]="娝",N.UNIHANS[330]="偸"}},function(N,A,t){"use strict";var I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(N){return typeof N}:function(N){return N&&"function"==typeof Symbol&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},U=t(0),e=t(1);"object"===("undefined"==typeof navigator?"undefined":I(navigator))&&/safari/i.test(navigator.userAgent)&&!/chrome|android/i.test(navigator.userAgent)&&U.patchDict(e),N.exports=U},function(N,A,t){"use strict";var I=["阿","哎","安","肮","凹","八","挀","扳","邦","勹","陂","奔","伻","屄","边","灬","憋","汃","冫","癶","峬","嚓","偲","参","仓","撡","冊","嵾","曽","叉","芆","辿","伥","抄","车","抻","阷","吃","充","抽","出","欻","揣","巛","刅","吹","旾","逴","呲","匆","凑","粗","汆","崔","邨","搓","咑","呆","丹","当","刀","嘚","扥","灯","氐","甸","刁","爹","丁","丟","东","吺","厾","耑","垖","吨","多","妸","诶","奀","鞥","儿","发","帆","匚","飞","分","丰","覅","仏","紑","夫","旮","侅","甘","冈","皋","戈","给","根","刯","工","勾","估","瓜","乖","关","光","归","丨","呙","哈","咍","佄","夯","茠","诃","黒","拫","亨","噷","叿","齁","乎","花","怀","欢","巟","灰","昏","吙","丌","加","戋","江","艽","阶","巾","坕","冂","丩","凥","姢","噘","军","咔","开","刊","忼","尻","匼","肎","劥","空","抠","扝","夸","蒯","宽","匡","亏","坤","扩","垃","来","兰","啷","捞","肋","勒","崚","哩","俩","奁","良","撩","毟","拎","伶","溜","囖","龙","瞜","噜","驴","娈","掠","抡","罗","呣","妈","埋","嫚","牤","猫","么","呅","门","甿","咪","宀","喵","乜","民","名","谬","摸","哞","毪","嗯","拏","腉","囡","囔","孬","疒","娞","恁","能","妮","拈","娘","鸟","捏","囜","宁","妞","农","羺","奴","女","奻","疟","黁","挪","喔","讴","妑","拍","眅","乓","抛","呸","喷","匉","丕","囨","剽","氕","姘","乒","钋","剖","仆","七","掐","千","呛","悄","癿","亲","靑","卭","丘","区","峑","缺","夋","呥","穣","娆","惹","人","扔","日","茸","厹","邚","挼","堧","婑","瞤","捼","仨","毢","三","桒","掻","閪","森","僧","杀","筛","山","伤","弰","奢","申","升","尸","収","书","刷","衰","闩","双","脽","吮","说","厶","忪","捜","苏","狻","夊","孙","唆","他","囼","坍","汤","夲","忑","熥","剔","天","旫","帖","厅","囲","偷","凸","湍","推","吞","乇","穵","歪","弯","尣","危","昷","翁","挝","乌","夕","虲","仙","乡","灱","些","心","星","凶","休","吁","吅","削","坃","丫","恹","央","幺","倻","一","囙","应","哟","佣","优","扜","囦","曰","晕","帀","災","兂","匨","傮","则","贼","怎","増","扎","捚","沾","张","佋","蜇","贞","争","之","中","州","朱","抓","拽","专","妆","隹","宒","卓","乲","宗","邹","租","钻","厜","尊","昨","兙"],U=["A","AI","AN","ANG","AO","BA","BAI","BAN","BANG","BAO","BEI","BEN","BENG","BI","BIAN","BIAO","BIE","BIN","BING","BO","BU","CA","CAI","CAN","CANG","CAO","CE","CEN","CENG","CHA","CHAI","CHAN","CHANG","CHAO","CHE","CHEN","CHENG","CHI","CHONG","CHOU","CHU","CHUA","CHUAI","CHUAN","CHUANG","CHUI","CHUN","CHUO","CI","CONG","COU","CU","CUAN","CUI","CUN","CUO","DA","DAI","DAN","DANG","DAO","DE","DEN","DENG","DI","DIAN","DIAO","DIE","DING","DIU","DONG","DOU","DU","DUAN","DUI","DUN","DUO","E","EI","EN","ENG","ER","FA","FAN","FANG","FEI","FEN","FENG","FIAO","FO","FOU","FU","GA","GAI","GAN","GANG","GAO","GE","GEI","GEN","GENG","GONG","GOU","GU","GUA","GUAI","GUAN","GUANG","GUI","GUN","GUO","HA","HAI","HAN","HANG","HAO","HE","HEI","HEN","HENG","HM","HONG","HOU","HU","HUA","HUAI","HUAN","HUANG","HUI","HUN","HUO","JI","JIA","JIAN","JIANG","JIAO","JIE","JIN","JING","JIONG","JIU","JU","JUAN","JUE","JUN","KA","KAI","KAN","KANG","KAO","KE","KEN","KENG","KONG","KOU","KU","KUA","KUAI","KUAN","KUANG","KUI","KUN","KUO","LA","LAI","LAN","LANG","LAO","LE","LEI","LENG","LI","LIA","LIAN","LIANG","LIAO","LIE","LIN","LING","LIU","LO","LONG","LOU","LU","LV","LUAN","LVE","LUN","LUO","M","MA","MAI","MAN","MANG","MAO","ME","MEI","MEN","MENG","MI","MIAN","MIAO","MIE","MIN","MING","MIU","MO","MOU","MU","N","NA","NAI","NAN","NANG","NAO","NE","NEI","NEN","NENG","NI","NIAN","NIANG","NIAO","NIE","NIN","NING","NIU","NONG","NOU","NU","NV","NUAN","NVE","NUN","NUO","O","OU","PA","PAI","PAN","PANG","PAO","PEI","PEN","PENG","PI","PIAN","PIAO","PIE","PIN","PING","PO","POU","PU","QI","QIA","QIAN","QIANG","QIAO","QIE","QIN","QING","QIONG","QIU","QU","QUAN","QUE","QUN","RAN","RANG","RAO","RE","REN","RENG","RI","RONG","ROU","RU","RUA","RUAN","RUI","RUN","RUO","SA","SAI","SAN","SANG","SAO","SE","SEN","SENG","SHA","SHAI","SHAN","SHANG","SHAO","SHE","SHEN","SHENG","SHI","SHOU","SHU","SHUA","SHUAI","SHUAN","SHUANG","SHUI","SHUN","SHUO","SI","SONG","SOU","SU","SUAN","SUI","SUN","SUO","TA","TAI","TAN","TANG","TAO","TE","TENG","TI","TIAN","TIAO","TIE","TING","TONG","TOU","TU","TUAN","TUI","TUN","TUO","WA","WAI","WAN","WANG","WEI","WEN","WENG","WO","WU","XI","XIA","XIAN","XIANG","XIAO","XIE","XIN","XING","XIONG","XIU","XU","XUAN","XUE","XUN","YA","YAN","YANG","YAO","YE","YI","YIN","YING","YO","YONG","YOU","YU","YUAN","YUE","YUN","ZA","ZAI","ZAN","ZANG","ZAO","ZE","ZEI","ZEN","ZENG","ZHA","ZHAI","ZHAN","ZHANG","ZHAO","ZHE","ZHEN","ZHENG","ZHI","ZHONG","ZHOU","ZHU","ZHUA","ZHUAI","ZHUAN","ZHUANG","ZHUI","ZHUN","ZHUO","ZI","ZONG","ZOU","ZU","ZUAN","ZUI","ZUN","ZUO",""],e={"曾":"ZENG","沈":"SHEN","嗲":"DIA","碡":"ZHOU","聒":"GUO","炔":"QUE","蚵":"KE","砉":"HUA","嬤":"MO","嬷":"MO","蹒":"PAN","蹊":"XI","丬":"PAN","霰":"XIAN","莘":"XIN","豉":"CHI","饧":"XING","筠":"JUN","长":"CHANG","帧":"ZHEN","峙":"SHI","郍":"NA","芎":"XIONG","谁":"SHUI"};N.exports={PINYINS:U,UNIHANS:I,EXCEPTIONS:e}}])}); | ||
!function(N,A){"object"==typeof exports&&"object"==typeof module?module.exports=A():"function"==typeof define&&define.amd?define([],A):"object"==typeof exports?exports.Pinyin=A():N.Pinyin=A()}(this,function(){return function(N){function A(I){if(t[I])return t[I].exports;var U=t[I]={i:I,l:!1,exports:{}};return N[I].call(U.exports,U,U.exports,A),U.l=!0,U.exports}var t={};return A.m=N,A.c=t,A.i=function(N){return N},A.d=function(N,t,I){A.o(N,t)||Object.defineProperty(N,t,{configurable:!1,enumerable:!0,get:I})},A.n=function(N){var t=N&&N.__esModule?function(){return N.default}:function(){return N};return A.d(t,"a",t),t},A.o=function(N,A){return Object.prototype.hasOwnProperty.call(N,A)},A.p="",A(A.s=3)}([function(N,A,t){"use strict";function I(N){N&&("function"==typeof N&&(N=[N]),N.forEach&&N.forEach(function(N){"function"==typeof N&&N(o)}))}function U(N){return N||null===i?("object"===("undefined"==typeof Intl?"undefined":n(Intl))&&Intl.Collator?(f=new Intl.Collator(["zh-Hans-CN","zh-CN"]),i=1===Intl.Collator.supportedLocalesOf(["zh-CN"]).length):i=!1,i):i}function e(N){var A=o.UNIHANS,t=o.PINYINS,I=o.EXCEPTIONS,U={source:N};if(N in I)return U.type=E,U.target=I[N],U;var e=-1,r=void 0;if(N.charCodeAt(0)<256)return U.type=H,U.target=N,U;if((r=f.compare(N,G))<0)return U.type=u,U.target=N,U;if(0===r)U.type=E,e=0;else{if((r=f.compare(N,O))>0)return U.type=u,U.target=N,U;0===r&&(U.type=E,e=A.length-1)}if(U.type=E,e<0)for(var n=0,i=A.length-1;n<=i;){e=~~((n+i)/2);var S=A[e];if(0===(r=f.compare(N,S)))break;r>0?n=e+1:i=e-1}return r<0&&e--,U.target=t[e],U.target||(U.type=u,U.target=U.source),U}function r(N){if("string"!=typeof N)throw new Error("argument should be string.");if(!U())throw new Error("not support Intl or zh-CN language.");return N.split("").map(function(N){return e(N)})}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(N){return typeof N}:function(N){return N&&"function"==typeof Symbol&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},o=t(2),G="阿",O="鿿",H=1,E=2,u=3,i=null,f=void 0;N.exports={isSupported:U,parse:r,patchDict:I,genToken:e,convertToPinyin:function(N,A,t){return r(N).map(function(N){return t&&N.type===E?N.target.toLowerCase():N.target}).join(A||"")}}},function(N,A,t){"use strict";A=N.exports=function(N){N.EXCEPTIONS={"嗲":"DIA","碡":"ZHOU","聒":"GUO","炔":"QUE","蚵":"KE","砉":"HUA","嬷":"MO","蹊":"XI","丬":"PAN","霰":"XIAN","豉":"CHI","饧":"XING","帧":"ZHEN","芎":"XIONG","谁":"SHUI","钶":"KE"},N.UNIHANS[91]="伕",N.UNIHANS[347]="仚",N.UNIHANS[393]="诌",N.UNIHANS[39]="婤",N.UNIHANS[50]="腠",N.UNIHANS[369]="攸",N.UNIHANS[123]="乯",N.UNIHANS[171]="刕",N.UNIHANS[102]="佝",N.UNIHANS[126]="犿",N.UNIHANS[176]="列",N.UNIHANS[178]="刢",N.UNIHANS[252]="娝",N.UNIHANS[330]="偸"},A.shouldPatch=function(N){return"function"==typeof N&&("FOU"===N("伕").target&&"XIA"===N("仚").target&&"ZHONG"===N("诌").target&&"CHONG"===N("婤").target&&"CONG"===N("腠").target&&"YONG"===N("攸").target&&"HOU"===N("乯").target&&"LENG"===N("刕").target&&"GONG"===N("佝").target&&"HUAI"===N("犿").target&&"LIAO"===N("列").target&&"LIN"===N("刢").target&&"E"===N("钶").target)}},function(N,A,t){"use strict";var I=["阿","哎","安","肮","凹","八","挀","扳","邦","勹","陂","奔","伻","屄","边","灬","憋","汃","冫","癶","峬","嚓","偲","参","仓","撡","冊","嵾","曽","叉","芆","辿","伥","抄","车","抻","阷","吃","充","抽","出","欻","揣","巛","刅","吹","旾","逴","呲","匆","凑","粗","汆","崔","邨","搓","咑","呆","丹","当","刀","嘚","扥","灯","氐","甸","刁","爹","丁","丟","东","吺","厾","耑","垖","吨","多","妸","诶","奀","鞥","儿","发","帆","匚","飞","分","丰","覅","仏","紑","夫","旮","侅","甘","冈","皋","戈","给","根","刯","工","勾","估","瓜","乖","关","光","归","丨","呙","哈","咍","佄","夯","茠","诃","黒","拫","亨","噷","叿","齁","乎","花","怀","欢","巟","灰","昏","吙","丌","加","戋","江","艽","阶","巾","坕","冂","丩","凥","姢","噘","军","咔","开","刊","忼","尻","匼","肎","劥","空","抠","扝","夸","蒯","宽","匡","亏","坤","扩","垃","来","兰","啷","捞","肋","勒","崚","哩","俩","奁","良","撩","毟","拎","伶","溜","囖","龙","瞜","噜","驴","娈","掠","抡","罗","呣","妈","埋","嫚","牤","猫","么","呅","门","甿","咪","宀","喵","乜","民","名","谬","摸","哞","毪","嗯","拏","腉","囡","囔","孬","疒","娞","恁","能","妮","拈","娘","鸟","捏","囜","宁","妞","农","羺","奴","女","奻","疟","黁","挪","喔","讴","妑","拍","眅","乓","抛","呸","喷","匉","丕","囨","剽","氕","姘","乒","钋","剖","仆","七","掐","千","呛","悄","癿","亲","靑","卭","丘","区","峑","缺","夋","呥","穣","娆","惹","人","扔","日","茸","厹","邚","挼","堧","婑","瞤","捼","仨","毢","三","桒","掻","閪","森","僧","杀","筛","山","伤","弰","奢","申","升","尸","収","书","刷","衰","闩","双","脽","吮","说","厶","忪","捜","苏","狻","夊","孙","唆","他","囼","坍","汤","夲","忑","熥","剔","天","旫","帖","厅","囲","偷","凸","湍","推","吞","乇","穵","歪","弯","尣","危","昷","翁","挝","乌","夕","虲","仙","乡","灱","些","心","星","凶","休","吁","吅","削","坃","丫","恹","央","幺","倻","一","囙","应","哟","佣","优","扜","囦","曰","晕","帀","災","兂","匨","傮","则","贼","怎","増","扎","捚","沾","张","佋","蜇","贞","争","之","中","州","朱","抓","拽","专","妆","隹","宒","卓","乲","宗","邹","租","钻","厜","尊","昨","兙"],U=["A","AI","AN","ANG","AO","BA","BAI","BAN","BANG","BAO","BEI","BEN","BENG","BI","BIAN","BIAO","BIE","BIN","BING","BO","BU","CA","CAI","CAN","CANG","CAO","CE","CEN","CENG","CHA","CHAI","CHAN","CHANG","CHAO","CHE","CHEN","CHENG","CHI","CHONG","CHOU","CHU","CHUA","CHUAI","CHUAN","CHUANG","CHUI","CHUN","CHUO","CI","CONG","COU","CU","CUAN","CUI","CUN","CUO","DA","DAI","DAN","DANG","DAO","DE","DEN","DENG","DI","DIAN","DIAO","DIE","DING","DIU","DONG","DOU","DU","DUAN","DUI","DUN","DUO","E","EI","EN","ENG","ER","FA","FAN","FANG","FEI","FEN","FENG","FIAO","FO","FOU","FU","GA","GAI","GAN","GANG","GAO","GE","GEI","GEN","GENG","GONG","GOU","GU","GUA","GUAI","GUAN","GUANG","GUI","GUN","GUO","HA","HAI","HAN","HANG","HAO","HE","HEI","HEN","HENG","HM","HONG","HOU","HU","HUA","HUAI","HUAN","HUANG","HUI","HUN","HUO","JI","JIA","JIAN","JIANG","JIAO","JIE","JIN","JING","JIONG","JIU","JU","JUAN","JUE","JUN","KA","KAI","KAN","KANG","KAO","KE","KEN","KENG","KONG","KOU","KU","KUA","KUAI","KUAN","KUANG","KUI","KUN","KUO","LA","LAI","LAN","LANG","LAO","LE","LEI","LENG","LI","LIA","LIAN","LIANG","LIAO","LIE","LIN","LING","LIU","LO","LONG","LOU","LU","LV","LUAN","LVE","LUN","LUO","M","MA","MAI","MAN","MANG","MAO","ME","MEI","MEN","MENG","MI","MIAN","MIAO","MIE","MIN","MING","MIU","MO","MOU","MU","N","NA","NAI","NAN","NANG","NAO","NE","NEI","NEN","NENG","NI","NIAN","NIANG","NIAO","NIE","NIN","NING","NIU","NONG","NOU","NU","NV","NUAN","NVE","NUN","NUO","O","OU","PA","PAI","PAN","PANG","PAO","PEI","PEN","PENG","PI","PIAN","PIAO","PIE","PIN","PING","PO","POU","PU","QI","QIA","QIAN","QIANG","QIAO","QIE","QIN","QING","QIONG","QIU","QU","QUAN","QUE","QUN","RAN","RANG","RAO","RE","REN","RENG","RI","RONG","ROU","RU","RUA","RUAN","RUI","RUN","RUO","SA","SAI","SAN","SANG","SAO","SE","SEN","SENG","SHA","SHAI","SHAN","SHANG","SHAO","SHE","SHEN","SHENG","SHI","SHOU","SHU","SHUA","SHUAI","SHUAN","SHUANG","SHUI","SHUN","SHUO","SI","SONG","SOU","SU","SUAN","SUI","SUN","SUO","TA","TAI","TAN","TANG","TAO","TE","TENG","TI","TIAN","TIAO","TIE","TING","TONG","TOU","TU","TUAN","TUI","TUN","TUO","WA","WAI","WAN","WANG","WEI","WEN","WENG","WO","WU","XI","XIA","XIAN","XIANG","XIAO","XIE","XIN","XING","XIONG","XIU","XU","XUAN","XUE","XUN","YA","YAN","YANG","YAO","YE","YI","YIN","YING","YO","YONG","YOU","YU","YUAN","YUE","YUN","ZA","ZAI","ZAN","ZANG","ZAO","ZE","ZEI","ZEN","ZENG","ZHA","ZHAI","ZHAN","ZHANG","ZHAO","ZHE","ZHEN","ZHENG","ZHI","ZHONG","ZHOU","ZHU","ZHUA","ZHUAI","ZHUAN","ZHUANG","ZHUI","ZHUN","ZHUO","ZI","ZONG","ZOU","ZU","ZUAN","ZUI","ZUN","ZUO",""],e={"曾":"ZENG","沈":"SHEN","嗲":"DIA","碡":"ZHOU","聒":"GUO","炔":"QUE","蚵":"KE","砉":"HUA","嬤":"MO","嬷":"MO","蹒":"PAN","蹊":"XI","丬":"PAN","霰":"XIAN","莘":"XIN","豉":"CHI","饧":"XING","筠":"JUN","长":"CHANG","帧":"ZHEN","峙":"SHI","郍":"NA","芎":"XIONG","谁":"SHUI"};N.exports={PINYINS:U,UNIHANS:I,EXCEPTIONS:e}},function(N,A,t){"use strict";var I=t(0),U=t(1);I.isSupported()&&U.shouldPatch(I.genToken)&&I.patchDict(U),N.exports=I}])}); |
{ | ||
"name": "tiny-pinyin", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "convert hanzi to pinyin", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -1,2 +0,2 @@ | ||
# tiny-pinyin [![Build Status](https://travis-ci.org/creeperyang/pinyin.svg?branch=master)](https://travis-ci.org/creeperyang/pinyin) | ||
# tiny-pinyin [![Build Status](https://travis-ci.org/creeperyang/pinyin.svg?branch=master)](https://travis-ci.org/creeperyang/pinyin) [![npm version](https://badge.fury.io/js/tiny-pinyin.svg)](https://badge.fury.io/js/tiny-pinyin) | ||
@@ -11,5 +11,5 @@ [English Doc](./README_EN.md) | ||
2. 可以轻松处理 **6763** 个的常用汉字,其它汉字未测试,但应该有相当正确率,欢迎测试。 | ||
3. 同时支持 **node.js和浏览器** 。 | ||
3. 同时支持 **`node.js (4-7)` 和 浏览器 (safari/chrome/firefox/android 6+/ios)** 。 | ||
**注意:不支持多音字;`node 6/7`,最新 `safari/ios/chrome/firefox` 测试通过,`ie/edge` 测试不通过,`android` 需要更新字典。** | ||
**注意:不支持多音字;`ie/edge` 测试未通过。** | ||
@@ -20,7 +20,7 @@ ## 安装和使用 | ||
使用: | ||
使用(浏览器端使用可通过`webpack`等打包,或直接引入demo中[已打包好的JS](https://creeperyang.github.io/pinyin/browser.js)): | ||
```js | ||
// test.js | ||
const pinyin = require('tiny-pinyin') // Or require('tiny-pinyin/dist/browser') for browser | ||
const pinyin = require('tiny-pinyin') | ||
@@ -44,3 +44,5 @@ if (pinyin.isSupported()) { | ||
[![Demo](https://cloud.githubusercontent.com/assets/8046480/25986097/a86896c2-3720-11e7-9bfe-17285f8005f0.png)](https://creeperyang.github.io/pinyin/) | ||
<a href="https://creeperyang.github.io/pinyin/"> | ||
<img src="https://cloud.githubusercontent.com/assets/8046480/25986097/a86896c2-3720-11e7-9bfe-17285f8005f0.png" width="295" height="421" alt="Demo" /> | ||
</a> | ||
@@ -47,0 +49,0 @@ 可点击上面的图片体验[线上版本](https://creeperyang.github.io/pinyin/)。 |
module.exports = { | ||
// pc | ||
sl_chrome: { | ||
base: 'SauceLabs', | ||
browserName: 'chrome', | ||
version: 'latest-2', | ||
group: 0 | ||
version: 'latest-2' | ||
}, | ||
@@ -11,22 +11,17 @@ sl_firefox: { | ||
browserName: 'firefox', | ||
version: 'latest-1', | ||
group: 1 | ||
version: 'latest-1' | ||
}, | ||
// Seems Edge has some problem. | ||
/* | ||
sl_edge: { | ||
sl_mac_safari: { | ||
base: 'SauceLabs', | ||
browserName: 'MicrosoftEdge', | ||
version: '14.14393', | ||
platform: 'Windows 10', | ||
group: 2 | ||
}, | ||
*/ | ||
sl_safari: { | ||
base: 'SauceLabs', | ||
browserName: 'safari', | ||
version: '10.0', | ||
platform: 'macOS 10.12', | ||
group: 3 | ||
platform: 'macOS 10.12' | ||
}, | ||
// sl_edge: { | ||
// base: 'SauceLabs', | ||
// browserName: 'MicrosoftEdge', | ||
// version: 'latest', | ||
// platform: 'Windows 10' | ||
// }, | ||
// mobile | ||
sl_ios_safari: { | ||
@@ -38,17 +33,13 @@ base: 'SauceLabs', | ||
platformVersion: '10.2', | ||
deviceName: 'iPhone 7 Plus Simulator', | ||
group: 3 | ||
} | ||
// We should patch dict for Android. | ||
/* | ||
, | ||
sl_android_4_4: { | ||
base: 'SauceLabs', | ||
browserName: 'Browser', | ||
appiumVersion: '1.6.4', | ||
platformName: 'Android', | ||
platformVersion: '4.4', | ||
deviceName: 'Android Emulator', | ||
group: 4 | ||
deviceName: 'iPhone 7 Plus Simulator' | ||
}, | ||
// Android 4.4-5: should patch dict. | ||
// sl_android_5_1: { | ||
// base: 'SauceLabs', | ||
// browserName: 'Browser', | ||
// appiumVersion: '1.6.4', | ||
// platformName: 'Android', | ||
// platformVersion: '5.1', | ||
// deviceName: 'Android Emulator' | ||
// }, | ||
sl_android_6: { | ||
@@ -60,6 +51,4 @@ base: 'SauceLabs', | ||
platformVersion: '6.0', | ||
deviceName: 'Android Emulator', | ||
group: 4 | ||
deviceName: 'Android Emulator' | ||
} | ||
*/ | ||
} |
@@ -80,7 +80,8 @@ // Karma configuration | ||
sauceLabs: { | ||
testName: 'Pinyin Tests', | ||
testName: 'tiny-pinyin unit tests', | ||
recordScreenshots: false, | ||
connectOptions: { | ||
port: 5757, | ||
logfile: 'sauce_connect.log' | ||
logfile: 'sauce_connect.log', | ||
'no-ssl-bump-domains': 'all' // Ignore SSL error on Android emulator | ||
}, | ||
@@ -93,3 +94,4 @@ public: 'public' | ||
// Increase timeout in case connection in CI is slow | ||
captureTimeout: 400000, | ||
captureTimeout: 320000, | ||
browserNoActivityTimeout: 320000, | ||
singleRun: true | ||
@@ -96,0 +98,0 @@ }) |
@@ -32,3 +32,3 @@ const path = require('path') | ||
{ | ||
entry: path.resolve(ROOT, 'src/browser.js'), | ||
entry: path.resolve(ROOT, 'src/index.js'), | ||
output: { | ||
@@ -35,0 +35,0 @@ filename: 'docs/browser.js', |
143
src/index.js
'use strict' | ||
const DICT = require('./dict') | ||
const pinyin = require('./core') | ||
const patcher56L = require('./patchers/56l') | ||
const FIRST_PINYIN_UNIHAN = '\u963F' | ||
const LAST_PINYIN_UNIHAN = '\u9FFF' | ||
const LATIN = 1 | ||
const PINYIN = 2 | ||
const UNKNOWN = 3 | ||
let supported = null | ||
let COLLATOR | ||
function patchDict (patchers) { | ||
if (!patchers) return | ||
if (typeof patchers === 'function') { | ||
patchers = [patchers] | ||
} | ||
if (patchers.forEach) { | ||
patchers.forEach(p => { | ||
typeof p === 'function' && p(DICT) | ||
}) | ||
} | ||
// Patch dict for icudt56l.dat related env, such as safari|node v4. | ||
if (pinyin.isSupported() && patcher56L.shouldPatch(pinyin.genToken)) { | ||
pinyin.patchDict(patcher56L) | ||
} | ||
function isSupported (force) { | ||
if (!force && supported !== null) { | ||
return supported | ||
} | ||
if (typeof Intl === 'object' && Intl.Collator) { | ||
COLLATOR = new Intl.Collator(['zh-Hans-CN', 'zh-CN']) | ||
supported = Intl.Collator.supportedLocalesOf(['zh-CN']).length === 1 | ||
} else { | ||
supported = false | ||
} | ||
return supported | ||
} | ||
function genToken (ch) { | ||
// Access DICT here, give the chance to patch DICT. | ||
const UNIHANS = DICT.UNIHANS | ||
const PINYINS = DICT.PINYINS | ||
const EXCEPTIONS = DICT.EXCEPTIONS | ||
const token = { | ||
source: ch | ||
} | ||
// First check EXCEPTIONS map, then search with UNIHANS table. | ||
if (ch in EXCEPTIONS) { | ||
token.type = PINYIN | ||
token.target = EXCEPTIONS[ch] | ||
return token | ||
} | ||
let offset = -1 | ||
let cmp | ||
if (ch.charCodeAt(0) < 256) { | ||
token.type = LATIN | ||
token.target = ch | ||
return token | ||
} else { | ||
cmp = COLLATOR.compare(ch, FIRST_PINYIN_UNIHAN) | ||
if (cmp < 0) { | ||
token.type = UNKNOWN | ||
token.target = ch | ||
return token | ||
} else if (cmp === 0) { | ||
token.type = PINYIN | ||
offset = 0 | ||
} else { | ||
cmp = COLLATOR.compare(ch, LAST_PINYIN_UNIHAN) | ||
if (cmp > 0) { | ||
token.type = UNKNOWN | ||
token.target = ch | ||
return token | ||
} else if (cmp === 0) { | ||
token.type = PINYIN | ||
offset = UNIHANS.length - 1 | ||
} | ||
} | ||
} | ||
token.type = PINYIN | ||
if (offset < 0) { | ||
let begin = 0 | ||
let end = UNIHANS.length - 1 | ||
while (begin <= end) { | ||
offset = ~~((begin + end) / 2) | ||
let unihan = UNIHANS[offset] | ||
cmp = COLLATOR.compare(ch, unihan) | ||
// Catch it. | ||
if (cmp === 0) { | ||
break | ||
} | ||
// Search after offset. | ||
else if (cmp > 0) { | ||
begin = offset + 1 | ||
} | ||
// Search before the offset. | ||
else { | ||
end = offset - 1 | ||
} | ||
} | ||
} | ||
if (cmp < 0) { | ||
offset-- | ||
} | ||
token.target = PINYINS[offset] | ||
if (!token.target) { | ||
token.type = UNKNOWN | ||
token.target = token.source | ||
} | ||
return token | ||
} | ||
function parse (str) { | ||
if (typeof str !== 'string') { | ||
throw new Error('argument should be string.') | ||
} | ||
if (!isSupported()) { | ||
throw new Error('not support Intl or zh-CN language.') | ||
} | ||
return str.split('').map(v => genToken(v)) | ||
} | ||
module.exports = { | ||
isSupported, | ||
parse, | ||
patchDict, | ||
convertToPinyin (str, separator, lowerCase) { | ||
return parse(str).map(v => { | ||
if (lowerCase && v.type === PINYIN) { | ||
return v.target.toLowerCase() | ||
} | ||
return v.target | ||
}).join(separator || '') | ||
} | ||
} | ||
module.exports = pinyin |
const assert = require('assert') | ||
const { polyphone, common } = require('./hanziDict') | ||
let PinYin | ||
const PinYin = require('../src') | ||
describe('PinYin', () => { | ||
before(done => { | ||
// Dynamically load lib | ||
if (typeof window === 'object' && window.window === window) { | ||
PinYin = require('../src/browser') | ||
} else { | ||
PinYin = require('../src/index') | ||
} | ||
done() | ||
}) | ||
describe('#isSupported()', () => { | ||
@@ -17,0 +7,0 @@ it('should return true when supported', () => { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
116982
2069
99