1- ( function ( ) { function r ( e , n , t ) { function o ( i , f ) { if ( ! n [ i ] ) { if ( ! e [ i ] ) { var c = "function" == typeof require && require ; if ( ! f && c ) return c ( i , ! 0 ) ; if ( u ) return u ( i , ! 0 ) ; var a = new Error ( "Cannot find module '" + i + "'" ) ; throw a . code = "MODULE_NOT_FOUND" , a } var p = n [ i ] = { exports :{ } } ; e [ i ] [ 0 ] . call ( p . exports , function ( r ) { var n = e [ i ] [ 1 ] [ r ] ; return o ( n || r ) } , p , p . exports , r , e , n , t ) } return n [ i ] . exports } for ( var u = "function" == typeof require && require , i = 0 ; i < t . length ; i ++ ) o ( t [ i ] ) ; return o } return r } ) ( ) ( { 1 :[ function ( require , module , exports ) {
2- ( function ( ) {
3- 'use strict' ;
1+ ( function ( f ) { if ( typeof exports === "object" && typeof module !== "undefined" ) { module . exports = f ( ) } else if ( typeof define === "function" && define . amd ) { define ( [ ] , f ) } else { var g ; if ( typeof window !== "undefined" ) { g = window } else if ( typeof global !== "undefined" ) { g = global } else if ( typeof self !== "undefined" ) { g = self } else { g = this } g . BetaCode = f ( ) } } ) ( function ( ) { var define , module , exports ; return ( function ( ) { function r ( e , n , t ) { function o ( i , f ) { if ( ! n [ i ] ) { if ( ! e [ i ] ) { var c = "function" == typeof require && require ; if ( ! f && c ) return c ( i , ! 0 ) ; if ( u ) return u ( i , ! 0 ) ; var a = new Error ( "Cannot find module '" + i + "'" ) ; throw a . code = "MODULE_NOT_FOUND" , a } var p = n [ i ] = { exports :{ } } ; e [ i ] [ 0 ] . call ( p . exports , function ( r ) { var n = e [ i ] [ 1 ] [ r ] ; return o ( n || r ) } , p , p . exports , r , e , n , t ) } return n [ i ] . exports } for ( var u = "function" == typeof require && require , i = 0 ; i < t . length ; i ++ ) o ( t [ i ] ) ; return o } return r } ) ( ) ( { 1 :[ function ( require , module , exports ) {
2+ const betaCodeToUnicode = require ( './vendor/beta-code-json/beta_code_to_unicode.json' ) ;
3+ const unicodeToBetaCode = require ( './vendor/beta-code-json/unicode_to_beta_code.json' ) ;
44
5- var beta_code_to_unicode = require ( './vendor/beta-code-json/beta_code_to_unicode.json' ) ;
6- var unicode_to_beta_code = require ( './vendor/beta-code-json/unicode_to_beta_code.json' ) ;
7- var max_beta_code_character_length = _longestKeyLength ( beta_code_to_unicode ) ;
5+ function longestKeyLength ( obj ) {
6+ const keys = Object . keys ( obj ) ;
7+ let ii ;
8+ let key ;
9+ let length = 0 ;
810
9- function greekToBetaCode ( greek ) {
10- var greek_characters = _normalize ( greek ) . split ( '' ) ;
11- var beta_code_characters = [ ] ;
12- var current_character , ii ;
11+ for ( ii = 0 ; ii < keys . length ; ii += 1 ) {
12+ key = keys [ ii ] ;
1313
14- for ( ii = 0 ; ii < greek_characters . length ; ii ++ ) {
15- current_character = greek_characters [ ii ] ;
16-
17- if ( unicode_to_beta_code . hasOwnProperty ( current_character ) ) {
18- beta_code_characters . push ( unicode_to_beta_code [ current_character ] ) ;
19- } else {
20- beta_code_characters . push ( current_character ) ;
21- }
22- }
23-
24- return beta_code_characters . join ( '' ) ;
25- }
26-
27- function betaCodeToGreek ( beta_code ) {
28- var beta_code_characters = _normalize ( beta_code ) . split ( '' ) ;
29- var greek_characters = [ ] ;
30- var start = 0 ;
31- var end , slice , new_start , current_character , max_length ;
32-
33- while ( start <= beta_code_characters . length ) {
34- current_character = beta_code_characters [ start ] ;
35- new_start = start + 1 ;
36- max_length = _min ( beta_code_characters . length , start + max_beta_code_character_length ) ;
37-
38- // match the longest possible substring that's valid beta code, from left to right
39- // for example 'e)' is valid beta code (ἐ) but 'e)/' is also valid beta code (ἕ)
40- // the string 'e)/' should be interpreted as 'e)/' and not as 'e)' + '/'
41- for ( end = new_start ; end <= max_length ; end ++ ) {
42- slice = beta_code_characters . slice ( start , end ) . join ( '' ) ;
43-
44- if ( beta_code_to_unicode . hasOwnProperty ( slice ) ) {
45- current_character = beta_code_to_unicode [ slice ] ;
46- new_start = end ;
47- }
48- }
49-
50- greek_characters . push ( current_character ) ;
51- start = new_start ;
52- }
53-
54- return _sigmaToEndOfWordSigma ( greek_characters . join ( '' ) ) ;
55- }
56-
57- module . exports = {
58- greekToBetaCode : greekToBetaCode ,
59- betaCodeToGreek : betaCodeToGreek
60- } ;
61-
62- if ( typeof window !== 'undefined' ) {
63- window . greekToBetaCode = greekToBetaCode ;
64- window . betaCodeToGreek = betaCodeToGreek ;
65- }
66-
67- function _longestKeyLength ( obj ) {
68- var key ;
69- var length = 0 ;
70-
71- for ( key in obj ) {
72- if ( obj . hasOwnProperty ( key ) ) {
14+ if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) {
7315 if ( key . length > length ) {
7416 length = key . length ;
7517 }
@@ -84,22 +26,81 @@ function _longestKeyLength (obj) {
8426// - followed by whitespace
8527// - followed by a punctuation character
8628// REGEX NOTE: word boundary \b doesn't work well with unicode
87- function _sigmaToEndOfWordSigma ( string ) {
29+ function sigmaToEndOfWordSigma ( string ) {
8830 return string . replace ( / σ (? = [ , . : ; · \s ] | $ ) / g, 'ς' ) ;
8931}
9032
91- function _min ( a , b ) {
33+ function min ( a , b ) {
9234 return a < b ? a : b ;
9335}
9436
95- function _normalize ( string ) {
37+ function normalize ( string ) {
9638 if ( string . normalize ) {
9739 return string . normalize ( ) ;
9840 }
9941
10042 return string ;
10143}
102- } ) ( ) ;
44+
45+ const maxBetaCodeCharacterLength = longestKeyLength ( betaCodeToUnicode ) ;
46+
47+ function greekToBetaCode ( greek ) {
48+ const greekCharacters = normalize ( greek ) . split ( '' ) ;
49+ const betaCodeCharacters = [ ] ;
50+ let currentCharacter ;
51+ let ii ;
52+
53+ for ( ii = 0 ; ii < greekCharacters . length ; ii += 1 ) {
54+ currentCharacter = greekCharacters [ ii ] ;
55+
56+ if ( Object . prototype . hasOwnProperty . call ( unicodeToBetaCode , currentCharacter ) ) {
57+ betaCodeCharacters . push ( unicodeToBetaCode [ currentCharacter ] ) ;
58+ } else {
59+ betaCodeCharacters . push ( currentCharacter ) ;
60+ }
61+ }
62+
63+ return betaCodeCharacters . join ( '' ) ;
64+ }
65+
66+ function betaCodeToGreek ( betaCode ) {
67+ const betaCodeCharacters = normalize ( betaCode ) . split ( '' ) ;
68+ const greekCharacters = [ ] ;
69+ let start = 0 ;
70+ let end ;
71+ let slice ;
72+ let newStart ;
73+ let currentCharacter ;
74+ let maxLength ;
75+
76+ while ( start <= betaCodeCharacters . length ) {
77+ currentCharacter = betaCodeCharacters [ start ] ;
78+ newStart = start + 1 ;
79+ maxLength = min ( betaCodeCharacters . length , start + maxBetaCodeCharacterLength ) ;
80+
81+ // match the longest possible substring that's valid beta code, from left to right
82+ // for example 'e)' is valid beta code (ἐ) but 'e)/' is also valid beta code (ἕ)
83+ // the string 'e)/' should be interpreted as 'e)/' and not as 'e)' + '/'
84+ for ( end = newStart ; end <= maxLength ; end += 1 ) {
85+ slice = betaCodeCharacters . slice ( start , end ) . join ( '' ) ;
86+
87+ if ( Object . prototype . hasOwnProperty . call ( betaCodeToUnicode , slice ) ) {
88+ currentCharacter = betaCodeToUnicode [ slice ] ;
89+ newStart = end ;
90+ }
91+ }
92+
93+ greekCharacters . push ( currentCharacter ) ;
94+ start = newStart ;
95+ }
96+
97+ return sigmaToEndOfWordSigma ( greekCharacters . join ( '' ) ) ;
98+ }
99+
100+ module . exports = {
101+ greekToBetaCode,
102+ betaCodeToGreek,
103+ } ;
103104
104105} , { "./vendor/beta-code-json/beta_code_to_unicode.json" :2 , "./vendor/beta-code-json/unicode_to_beta_code.json" :3 } ] , 2 :[ function ( require , module , exports ) {
105106module . exports = {
@@ -1110,4 +1111,5 @@ module.exports={
11101111 "—" : "_"
11111112}
11121113
1113- } , { } ] } , { } , [ 1 ] ) ;
1114+ } , { } ] } , { } , [ 1 ] ) ( 1 )
1115+ } ) ;
0 commit comments