From d3ee527d102f32864215803900fe0fa9bfaa191f Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Sun, 17 Oct 2021 14:02:51 +0600 Subject: [PATCH 01/12] Added SingletonTrait --- src/SingletonTrait.php | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/SingletonTrait.php diff --git a/src/SingletonTrait.php b/src/SingletonTrait.php new file mode 100644 index 0000000..35d2d29 --- /dev/null +++ b/src/SingletonTrait.php @@ -0,0 +1,37 @@ + Date: Sun, 17 Oct 2021 14:22:17 +0600 Subject: [PATCH 02/12] Change of directory structure and underlying class names, to inherit better contracts, reduce code repeatation using traits --- src/BanglaString.php | 4 +- src/Contracts/TranslatorContract.php | 18 +++++++ src/SingletonTrait.php | 37 -------------- src/Traits/SingletonTrait.php | 35 +++++++++++++ .../{ => AvroToBijoy}/CharacterMap.php | 2 +- .../Translator.php} | 49 +++---------------- .../Translator.php} | 42 +++------------- src/Translator/TranslatorInterface.php | 8 --- 8 files changed, 70 insertions(+), 125 deletions(-) create mode 100644 src/Contracts/TranslatorContract.php delete mode 100644 src/SingletonTrait.php create mode 100644 src/Traits/SingletonTrait.php rename src/Translator/{ => AvroToBijoy}/CharacterMap.php (99%) rename src/Translator/{AvroUnicode.php => AvroToBijoy/Translator.php} (82%) rename src/Translator/{BijoyAnsi.php => BijoyToAvro/Translator.php} (70%) delete mode 100644 src/Translator/TranslatorInterface.php diff --git a/src/BanglaString.php b/src/BanglaString.php index d889bd8..b2ef3e0 100644 --- a/src/BanglaString.php +++ b/src/BanglaString.php @@ -56,7 +56,7 @@ public static function translate($string) */ public function toBijoy() { - return Translator\AvroUnicode::getInstance()->translate($this->string); + return Translator\AvroToBijoy\Translator::getInstance()->translate($this->string); } /** @@ -66,6 +66,6 @@ public function toBijoy() */ public function toAvro() { - return Translator\BijoyAnsi::getInstance()->translate($this->string); + return Translator\BijoyToAvro\Translator::getInstance()->translate($this->string); } } diff --git a/src/Contracts/TranslatorContract.php b/src/Contracts/TranslatorContract.php new file mode 100644 index 0000000..fbd48ee --- /dev/null +++ b/src/Contracts/TranslatorContract.php @@ -0,0 +1,18 @@ +init(); + } + + protected function init() + { + } + + final private function __wakeup() + { + } + + final private function __clone() + { + } +} diff --git a/src/Translator/CharacterMap.php b/src/Translator/AvroToBijoy/CharacterMap.php similarity index 99% rename from src/Translator/CharacterMap.php rename to src/Translator/AvroToBijoy/CharacterMap.php index 7304848..240aa70 100644 --- a/src/Translator/CharacterMap.php +++ b/src/Translator/AvroToBijoy/CharacterMap.php @@ -1,6 +1,6 @@ Date: Sun, 17 Oct 2021 15:08:59 +0600 Subject: [PATCH 03/12] Removed singleton approach as it makes zero sense to use this pattern for something like this, shoutout to past me for being this dumb, good job, loser --- src/BanglaString.php | 22 ++++++++++++-- src/Traits/SingletonTrait.php | 35 ----------------------- src/Translator/AvroToBijoy/Translator.php | 3 +- src/Translator/BijoyToAvro/Translator.php | 3 +- 4 files changed, 21 insertions(+), 42 deletions(-) delete mode 100644 src/Traits/SingletonTrait.php diff --git a/src/BanglaString.php b/src/BanglaString.php index b2ef3e0..72b68c4 100644 --- a/src/BanglaString.php +++ b/src/BanglaString.php @@ -2,10 +2,15 @@ namespace MirazMac\BanglaString; +use MirazMac\BanglaString\Translator\AvroToBijoy\Translator as AvroToBijoyTranslator; +use MirazMac\BanglaString\Translator\BijoyToAvro\Translator as BijoyToAvroTranslator; + /** * BanglaString * -* A wannabe all-in-all Bangla String Manupulation Library! +* This is not an ideal way to use this, but when I created this I knew very little about OOP. +* You should directly import the Translator classes and use them as such. +* However this will stay as is for backwards compatibility reasons. * * @author Miraz Mac * @link https://mirazmac.info Author Homepage @@ -23,6 +28,8 @@ class BanglaString */ protected $string; + protected $translators = []; + /** * Create a new BanglaString instance * @@ -49,6 +56,15 @@ public static function translate($string) return new self($string); } + protected function getTranslator($name) + { + if (!isset($this->translators[$name])) { + $this->translators[$name] = new $name(); + } + + return $this->translators[$name]; + } + /** * Translate the loaded string to Bijoy ANSI * @@ -56,7 +72,7 @@ public static function translate($string) */ public function toBijoy() { - return Translator\AvroToBijoy\Translator::getInstance()->translate($this->string); + return $this->getTranslator(AvroToBijoyTranslator::class)->translate($this->string); } /** @@ -66,6 +82,6 @@ public function toBijoy() */ public function toAvro() { - return Translator\BijoyToAvro\Translator::getInstance()->translate($this->string); + return $this->getTranslator(BijoyToAvroTranslator::class)->translate($this->string); } } diff --git a/src/Traits/SingletonTrait.php b/src/Traits/SingletonTrait.php deleted file mode 100644 index 542abac..0000000 --- a/src/Traits/SingletonTrait.php +++ /dev/null @@ -1,35 +0,0 @@ -init(); - } - - protected function init() - { - } - - final private function __wakeup() - { - } - - final private function __clone() - { - } -} diff --git a/src/Translator/AvroToBijoy/Translator.php b/src/Translator/AvroToBijoy/Translator.php index f9550de..d413219 100644 --- a/src/Translator/AvroToBijoy/Translator.php +++ b/src/Translator/AvroToBijoy/Translator.php @@ -16,8 +16,6 @@ class Translator implements TranslatorContract { - use SingletonTrait; - /** * Translates Avro Unicode string to Bijoy ANSI * @@ -33,6 +31,7 @@ public function translate($string) // Pre-replacement - All the letters, numbers and juktabornas.. $string = str_replace(array_keys($charmap), array_values($charmap), $string); + // Post-replacement // Replace kars from the very beginning of the string $start_regex = "/\A{$kars}/um"; diff --git a/src/Translator/BijoyToAvro/Translator.php b/src/Translator/BijoyToAvro/Translator.php index fe7c943..c284db7 100644 --- a/src/Translator/BijoyToAvro/Translator.php +++ b/src/Translator/BijoyToAvro/Translator.php @@ -16,8 +16,6 @@ class Translator implements TranslatorContract { - use SingletonTrait; - /** * Translates Bijoy ANSI text to Avro * @@ -33,6 +31,7 @@ public function translate($string) // Pre-replacement - All the letters, numbers and juktabornas.. $string = str_replace(array_values($charmap), array_keys($charmap), $string); + // Build the regex pattern for post replacement $regex = "/{$kars}/um"; // Post-replacement - All kars From 4b1e0b835a2035ece42eb652bdc37388c2d99c68 Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Sun, 17 Oct 2021 15:09:53 +0600 Subject: [PATCH 04/12] =?UTF-8?q?Fixed=20Sharbarna=20replacement=20for=20t?= =?UTF-8?q?he=20char=20=E0=A6=86=20Av?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Translator/AvroToBijoy/CharacterMap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Translator/AvroToBijoy/CharacterMap.php b/src/Translator/AvroToBijoy/CharacterMap.php index 240aa70..991961d 100644 --- a/src/Translator/AvroToBijoy/CharacterMap.php +++ b/src/Translator/AvroToBijoy/CharacterMap.php @@ -82,7 +82,7 @@ public static function getLetterCharMap() 'হ্য' => 'n¨', 'হ্র' => 'nª', 'হ্ল' => 'n¬', 'ভ্ল' => 'f¬', /** Sharbarnas */ - 'ঁ' => 'u', 'ং' => 's', 'ঃ' => 't', 'অ' => 'A', 'আ' => 'Av', + 'ঁ' => 'u', 'ং' => 's', 'ঃ' => 't', 'আ' => 'Av', 'অ' => 'A', 'ই' => 'B', 'ঈ' => 'C', 'উ' => 'D', 'ঊ' => 'E', 'ঋ' => 'F', 'ঌ' => 'ঌ', 'এ' => 'G', 'ঐ' => 'H', 'ও' => 'I', 'ঔ' => 'J', From ff8f34d8749a24ac4f3e58ab6ea8be4c7410a2ec Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Sun, 17 Oct 2021 15:11:06 +0600 Subject: [PATCH 05/12] Changed example to usage --- example.php | 26 -------------------------- usage/usage.php | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 26 deletions(-) delete mode 100644 example.php create mode 100644 usage/usage.php diff --git a/example.php b/example.php deleted file mode 100644 index b399afb..0000000 --- a/example.php +++ /dev/null @@ -1,26 +0,0 @@ -toAvro(); -?> -
-toBijoy(); -?> diff --git a/usage/usage.php b/usage/usage.php new file mode 100644 index 0000000..d159474 --- /dev/null +++ b/usage/usage.php @@ -0,0 +1,17 @@ +Bijoy to Avro
"; +echo BanglaString::translate('wgqvu n„`‡qi PÂjZv e‡Ü eªZx n‡j Rxeb cwic‚Y© n‡e bvbv i‡Oi dy‡j| KyÅwUKv cÖfÄb k¼vi KviY jÊfÊ K‡i hvq aivi A½b| w¶ß n‡j mv½ n‡e weÁR‡b e‡j kvš— n‡j G eªþv‡Ê evwÃZdj †g‡j| Avlv‡p Ckvb †Kv‡b nVvr So D‡V MMb †g‡N‡Z Xv‡K e„wó bv‡g gv‡V Elvi AvKv‡k bv‡g mܨvi Qvqv H †`‡Lv †_‡g †M‡Q cvivcv‡i †Lqv| kir FZy‡Z Pvu` Av‡jvq Askygvb myL `ytL cvkv cvwk mn Ae¯’vb| †h R‡j‡Z Ck¦i Z„òv †gUvq †mB R‡j‡Z RxeKy‡j webvk NUvq| †ivM hw` †`n †Q‡o g‡b wM‡q a‡i Jl‡ai mva¨ wK ev Zv‡i my¯’ K‡i?')->toAvro(); +?> +
+ +

Avro to Bijoy


+ +toBijoy(); +?> + From 7a6d456dc3cb88945602bfd8a76d35a46ac0b953 Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Mon, 18 Oct 2021 19:28:26 +0600 Subject: [PATCH 06/12] Refactored entire AvroToBijoyTranslator --- src/Translator/AvroToBijoy/CharacterMap.php | 128 ----- src/Translator/AvroToBijoy/KeyMapping.php | 584 ++++++++++++++++++++ src/Translator/AvroToBijoy/Translator.php | 196 ++++--- src/Translator/BijoyToAvro/Translator.php | 5 +- 4 files changed, 706 insertions(+), 207 deletions(-) delete mode 100644 src/Translator/AvroToBijoy/CharacterMap.php create mode 100644 src/Translator/AvroToBijoy/KeyMapping.php diff --git a/src/Translator/AvroToBijoy/CharacterMap.php b/src/Translator/AvroToBijoy/CharacterMap.php deleted file mode 100644 index 991961d..0000000 --- a/src/Translator/AvroToBijoy/CharacterMap.php +++ /dev/null @@ -1,128 +0,0 @@ - Bijoy format - * - * @return array - */ - public static function getLetterCharMap() - { - return [ - /** Juktabarnas */ - 'ক্ক' => '°', 'ক্ট' => '±', 'ক্ট্র' => '±ª', 'ক্ত' => '³', 'ক্ত্র' => '³«', - 'ক্ব' => 'K¡', 'ক্ম' => '´', 'ক্য' => 'K¨', 'ক্র' => 'µ', 'ক্ল' => 'K¬', - 'ক্ষ্ণ' => '¶è', 'ক্ষ্ব' => '¶¡', 'ক্ষ্ম' => '²', 'ক্ষ্ম্য' => '²¨', - 'ক্ষ্য' => '¶¨', 'ক্ষ' => '¶', 'ক্স' => '·', 'খ্য' => 'L¨', 'খ্র' => 'Lª', - 'গ্‌ণ' => 'M&Y', 'গ্ধ' => '»', 'গ্ধ্য' => '»¨', 'গ্ধ্র' => '»ª', 'গ্ন' => 'Mœ', - 'গ্ন্য' => 'Mœ¨', 'গ্ব' => 'M¦', 'গ্ম' => 'M¥', 'গ্য' => 'M¨', 'গ্র' => 'MÖ', - 'গ্র্য' => 'M¨©', 'গ্ল' => 'M­', 'ঘ্ন' => 'Nœ', 'ঘ্য' => 'N¨', 'ঘ্র' => 'Nª', - 'ঙ্ক' => '¼', 'ঙ্‌ক্ত' => 'O&³', 'ঙ্ক্য' => '¼¨', 'ঙ্ক্ষ' => '•¶', 'ঙ্খ' => '•L', - 'ঙ্গ' => '½', 'ঙ্গ্য' => '½¨', 'ঙ্ঘ' => '•N', 'ঙ্ঘ্য' => '•N¨', 'ঙ্ঘ্র' => '•Nª', - 'ঙ্ম' => '•g', 'চ্চ' => '”P', 'চ্ছ' => '”Q', 'চ্ছ্ব' => '”Q¡', 'চ্ছ্র' => '”Qª', - 'চ্ঞ' => '”T', 'চ্ব' => '”¡', 'চ্য' => 'P¨', 'জ্জ' => '¾', 'জ্জ্ব' => '¾¡', - 'জ্ঝ' => 'À', 'জ্ঞ' => 'Á', 'জ্ব' => 'R¡', 'জ্য' => 'R¨', 'জ্র' => 'Rª', - 'ঞ্চ' => 'Â', 'ঞ্ছ' => 'Ã', 'ঞ্জ' => 'Ä', 'ঞ্ঝ' => 'Å', 'ট্ট' => 'Æ', - 'ট্ব' => 'U¡', 'ট্ম' => 'U¥', 'ট্য' => 'U¨', 'ট্র' => 'Uª', 'ড্ড' => 'Ç', - 'ড্ব' => 'W¡', 'ড্য' => 'W¨', 'ড্র' => 'Wª', 'ড়্গ' => 'ÿ', 'ঢ্য' => 'X¨', - 'ঢ্র' => 'Xª', 'ণ্ট' => 'È', 'ণ্ঠ' => 'É', 'ণ্ঠ্য' => 'ɨ', 'ণ্ড' => 'Ê', - 'ণ্ড্য' => 'ʨ', 'ণ্ড্র' => 'ʪ', 'ণ্ঢ' => 'YX', 'ণ্ণ' => 'Yè', 'ণ্ব' => 'Y¡', - 'ণ্ম' => 'Y¥', 'ণ্য' => 'Y¨', 'ৎক' => 'rK', 'ত্ত' => 'Ë', 'ত্ত্ব' => 'Ë¡', - 'ত্ত্য' => '˨', 'ত্থ' => 'Ì', 'ত্ন' => 'Zœ', 'ত্ব' => 'Z¡', 'ত্ম' => 'Í', - 'ত্ম্য' => 'ͨ', 'ত্য' => 'Z¨', 'ত্র' => 'Î', 'ত্র্য' => 'Z¨©', 'ৎল' => 'rj', - 'ৎস' => 'rm', 'থ্ব' => '_¡', 'থ্য' => '_¨', 'থ্র' => '_ª', 'দ্গ' => '˜M', - 'দ্ঘ' => '™N', 'দ্দ' => 'Ï', 'দ্দ্ব' => 'Ï¡', 'দ্ধ' => '×', 'দ্ব' => 'Ø', - 'দ্ভ' => '™¢', 'দ্ভ্র' => '™£', 'দ্ম' => 'Ù', 'দ্য' => '`¨', 'দ্র' => '`ª', - 'দ্র্য' => '`¨©', 'ধ্ন' => 'aœ', 'ধ্ব' => 'aŸ', 'ধ্ম' => 'a¥', 'ধ্র' => 'aª', - 'ন্ট্র' => '›Uª', 'ন্ট' => '›U', 'ন্ঠ' => 'Ú', 'ন্ড' => 'Û', 'ন্ড্র' => 'Ûª', - 'ন্ত্ব' => 'š—¡', 'ন্ত্য' => 'š—¨', 'ন্ত্র' => 'š¿', 'ন্ত্র্য' => 'š—¨©', - 'ন্ত' => 'š—', 'ন্থ্র' => 'š’ª', 'ন্থ' => 'š’', 'ন্দ' => '›`', 'ন্দ্য' => '›`¨', - 'ন্দ্ব' => '›Ø', 'ন্দ্র' => '›`ª', 'ন্ধ্য' => 'ܨ', 'ন্ধ্র' => 'ܪ', 'ন্ধ' => 'Ü', - 'ধ্য' => 'a¨', 'ন্ন' => 'bœ', 'ন্ব' => 'š^', 'ন্ম' => 'b¥', 'ন্য' => 'b¨', - 'প্ট' => 'Þ', 'প্ত' => 'ß', 'প্ন' => 'cœ', 'প্প' => 'à', 'প্য' => 'c¨', - 'প্র' => 'cÖ', 'প্র্য' => 'c¨©', 'প্ল' => 'c­', 'প্স' => 'á', 'ফ্র' => 'd«', - 'ফ্ল' => 'd¬', 'ব্জ' => 'â', 'ব্দ' => 'ã', 'ব্ধ' => 'ä', 'ব্ব' => 'eŸ', - 'ব্য' => 'e¨', 'ব্র' => 'eª', 'ব্ল' => 'e­', 'ভ্ব' => 'f¡', 'ভ্য' => 'f¨', - 'ভ্র' => 'å', 'ম্ন' => 'æ', 'ম্প' => '¤c', 'ম্প্র' => '¤cÖ', 'ম্ফ' => 'ç', - 'ম্ব' => '¤^', 'ম্ব্র' => '¤^ª', 'ম্ভ' => '¤¢', 'ম্ভ্র' => '¤£', 'ম্ম' => '¤§', - 'ম্য' => 'g¨', 'ম্র' => 'gª', 'ম্ল' => '¤¬', 'অ্য' => 'A¨', 'য্য' => 'h¨', - 'র্ক' => 'K©', 'র্ক্য' => 'K¨©', 'র্গ্য' => 'M¨©', 'র্ঘ্য' => 'N¨©', 'র্চ্য' => 'P¨©', - 'র্জ্য' => 'R¨©', 'র্ণ্য' => 'Y¨©', 'র্ত্য' => 'Z¨©', 'র্থ্য' => '_¨©', 'র্ব্য' => 'e¨©', - 'র্ম্য' => 'g¨©', 'র্শ্য' => 'k¨©', 'র্ষ্য' => 'l¨©', 'র্হ্য' => 'n¨©', 'র্খ' => 'L©', - 'র্গ' => 'M©', 'র্গ্র' => 'MÖ©', 'র্ঘ' => 'N©', 'র্চ' => 'P©', 'র্ছ' => 'Q©', - 'র্জ' => 'R©', 'র্ঝ' => 'S©', 'র্ট' => 'U©', 'র্ড' => 'W©', 'র্ণ' => 'Y©', - 'র্ত' => 'Z©', 'র্ত্র' => 'Ω', 'র্থ' => '_©', 'র্দ' => '`©', 'র্দ্ব' => 'Ø©', - 'র্দ্র' => '`ª©', 'র্ধ' => 'a©', 'র্ধ্ব' => 'aŸ©', 'র্ন' => 'b©', 'র্প' => 'c©', - 'র্ফ' => 'd©', 'র্ভ' => 'f©', 'র্ম' => 'g©', 'র্য' => 'h©', 'র্ল' => 'j©', - 'র্শ' => 'k©', 'র্শ্ব' => 'k¦©', 'র্ষ' => 'l©', 'র্স' => 'm©', 'র্হ' => 'n©', - 'র্ঢ্য' => 'X¨©', 'ল্ক' => 'é', 'ল্ক্য' => 'é¨', 'ল্গ' => 'ê', 'ল্ট' => 'ë', - 'ল্ড' => 'ì', 'ল্প' => 'í', 'ল্‌ফ' => 'j&d', 'ল্ব' => 'j¡', 'ল্‌ভ' => 'j&f', - 'ল্ম' => 'j¥', 'ল্য' => 'j¨', 'ল্ল' => 'j­', 'শ্চ' => 'ð', 'শ্ছ' => 'ñ', - 'শ্ন' => 'kœ', 'শ্ব' => 'k¦', 'শ্ম' => 'k¥', 'শ্য' => 'k¨', 'শ্র' => 'kª', - 'শ্ল' => 'k­', 'ষ্ক' => '®‹', 'ষ্ক্র' => '®Œ', 'ষ্ট' => 'ó', 'ষ্ট্য' => 'ó¨', - 'ষ্ট্র' => 'óª', 'ষ্ঠ' => 'ô', 'ষ্ঠ্য' => 'ô¨', 'ষ্ণ' => 'ò', 'ষ্প' => '®c', - 'ষ্প্র' => '®cÖ', 'ষ্ফ' => 'õ', 'ষ্ব' => '®^', 'ষ্ম' => '®§', 'ষ্য' => 'l¨', - 'স্ক' => '¯‹', 'স্ক্র' => '¯Œ', 'স্খ' => 'ö', 'স্ট' => '÷', 'স্ট্র' => '÷ª', - 'স্ত' => '¯—', 'স্ত্ব' => '¯—¡', 'স্ত্য' => '¯—¨', 'স্ত্র' => '¯¿', 'স্থ' => '¯’', - 'স্থ্য' => '¯’¨', 'স্ন' => 'ø', 'স্প' => '¯c', 'স্প্র' => '¯cÖ', 'স্প্‌ল' => '¯c&j', - 'স্ফ' => 'ù', 'স্ব' => '¯^', 'স্ম' => '¯§', 'স্য' => 'm¨', 'স্র' => 'mª', - 'স্ল' => '¯¬', 'হ্ণ' => 'nœ', 'হ্ন' => 'ý', 'হ্ব' => 'nŸ', 'হ্ম' => 'þ', - 'হ্য' => 'n¨', 'হ্র' => 'nª', 'হ্ল' => 'n¬', 'ভ্ল' => 'f¬', - - /** Sharbarnas */ - 'ঁ' => 'u', 'ং' => 's', 'ঃ' => 't', 'আ' => 'Av', 'অ' => 'A', - 'ই' => 'B', 'ঈ' => 'C', 'উ' => 'D', 'ঊ' => 'E', 'ঋ' => 'F', - 'ঌ' => 'ঌ', 'এ' => 'G', 'ঐ' => 'H', 'ও' => 'I', 'ঔ' => 'J', - - /** Byanjon Barnas */ - 'ক' => 'K', 'খ' => 'L', 'গ' => 'M', 'ঘ' => 'N', 'ঙ' => 'O', - 'চ' => 'P', 'ছ' => 'Q', 'জ' => 'R', 'ঝ' => 'S', 'ঞ' => 'T', - 'ট' => 'U', 'ঠ' => 'V', 'ড' => 'W', 'ঢ' => 'X', 'ণ' => 'Y', - 'ত' => 'Z', 'থ' => '_', 'দ' => '`', 'ধ' => 'a', 'ন' => 'b', - 'প' => 'c', 'ফ' => 'd', 'ব' => 'e', 'ভ' => 'f', 'ম' => 'g', - 'য' => 'h', 'র' => 'i', 'ল' => 'j', 'শ' => 'k', 'ষ' => 'l', - 'স' => 'm', 'হ' => 'n', '়' => '়', 'ঽ' => 'ঽ', - - /** Simple Kars */ - 'া' => 'v', 'ী' => 'x', 'ু' => 'y', 'ূ' => '‚', 'ৃ' => '„', - 'ৄ' => 'ৄ', '্' => '', 'ৎ' => 'r', 'ৗ' => '', 'ড়' => 'o', - 'ঢ়' => 'p', 'য়' => 'q', 'ৠ' => 'ৠ', - - /** Numeric chars. */ - '০' => '0', '১' => '1', '২' => '2', '৩' => '3', '৪' => '4', '৫' => '5', - '৬' => '6', '৭' => '7', '৮' => '8', '৯' => '9', '।' => '|' - ]; - } - - /** - * Get list of kars for Bijoy ANSI - * - * @return string - */ - public static function getBijoyKars() - { - return "(°|±|±ª|³|³«|K¡|´|K¨|µ|K¬|¶|¶è|¶¡|²|²¨|¶¨|·|L¨|Lª|M&Y|»|»¨|»ª|Mœ|Mœ¨|M¦|M¥|M¨|MÖ|M¨©|M­|Nœ|N¨|Nª|¼|O&³|¼¨|•¶|•L|½|½¨|•N|•N¨|•Nª|•g|”P|”Q|”Q¡|”Qª|”T|”¡|P¨|¾|¾¡|À|Á|R¡|R¨|Rª|Â|Ã|Ä|Å|Æ|U¡|U¥|U¨|Uª|Ç|W¡|W¨|Wª|ÿ|X¨|Xª|È|É|ɨ|Ê|ʨ|ʪ|YX|Yè|Y¡|Y¥|Y¨|rK|Ë|Ë¡|˨|Ì|Zœ|Z¡|Í|ͨ|Z¨|Î|Z¨©|rj|rm|_¡|_¨|_ª|˜M|™N|Ï|Ï¡|×|Ø|™¢|™£|Ù|`¨|`ª|`¨©|aœ|aŸ|a¥|a¨|aª|›U|›Uª|Ú|Û|Ûª|š—|š—¡|š—¨|š¿|š—¨©|š’|š’ª|›`|›`¨|›Ø|›`ª|Ü|ܨ|ܪ|bœ|š^|b¥|b¨|Þ|ß|cœ|à|c¨|cÖ|c¨©|c­|á|d«|d¬|â|ã|ä|eŸ|e¨|eª|e­|f¡|f¨|å|æ|¤c|¤cÖ|ç|¤^|¤^ª|¤¢|¤£|¤§|g¨|gª|¤¬|h¨|K©|K¨©|M¨©|N¨©|P¨©|R¨©|Y¨©|Z¨©|_¨©|e¨©|g¨©|k¨©|l¨©|n¨©|L©|M©|MÖ©|N©|P©|Q©|R©|S©|U©|W©|Y©|Z©|Ω|_©|`©|Ø©|`ª©|a©|aŸ©|b©|c©|d©|f©|g©|h©|j©|k©|k¦©|l©|m©|n©|X¨©|é|é¨|ê|ë|ì|í|j&d|j¡|j&f|j¥|j¨|j­|ð|ñ|kœ|k¦|k¥|k¨|kª|k­|®‹|®Œ|ó|ó¨|óª|ô|ô¨|ò|®c|®cÖ|õ|®^|®§|l¨|¯‹|¯Œ|ö|÷|÷ª|¯—|¯—¡|¯—¨|¯¿|¯’|¯’¨|ø|¯c|¯cÖ|¯c&j|ù|¯^|¯§|m¨|mª|¯¬|nœ|ý|nŸ|þ|n¨|nª|n|F|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|_|`|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q)(ি|ে|ো|ৌ|ৈ)"; - } - - /** - * Get list of kars for Avro - * - * @return string - */ - public static function getAvroKars() - { - return "(‡|†|w)(ক্ক|ক্ট|ক্ট্র|ক্ত|ক্ত্র|ক্ব|´|ক্য|ক্র|ক্ল|ক্ষ|ক্ষè|ক্ষ¡|ক্ষ্ম|ক্ষ্ম্য|ক্ষ্য|ক্স|খ্য|খ্র|গ্ণ|গ্ধ|গ্ধ্য|গ্ধ্র|গ্ন|গ্ন্য|গ¦|গ্ম|গ্য|গ্র|র্গ্য|গ্ল|ঘœ|ঘ্য|ঘ্র|ঙ্ক|ঙ্ক্ত|ঙ্ক্য|ক্সক্ষ|ঙ্খ|ঙ্গ|ঙ্গ্য|ঙ্ঘ|ঙ্ঘ্য|ঙ্ঘ্র|ক্সম|চ্চ|চ্ছ|চ্ছ্ব|চ্ছ্র|চ্ঞ|”¡|চ্য|জ্জ|জ্জ্ব|জ্ঝ|জ্ঞ|জ্ব|জ্য|জ্র|ঞ্চ|ঞ্ছ|ঞ্জ|ঞ্ঝ|ট্ট|ট্ব|ট্ম|ট্য|ট্র|ড্ড|ড¡|ড্য|ড্র|ক্ষ|ঢ্য|ঢ্র|ণ্ট|ণ্ঠ|ণ্ঠ্য|ণ্ড|ণ্ড্য|ণ্ড্র|ণঢ|ণè|ণ¡|ণ¥|ণ্য|ৎক|ত্ত|ত্ত্ব|ত্ত্য|ত্থ|তœ|ত্ব|Í|Í্য|ত্য|ত্র|র্ত্য|ৎল|ৎস|থ্ব|থ্য|থ্র|দ্গ|™ঘ|দ্দ|দ্দ¡|দ্ধ|দ্ব|দ্ভ|™£|দ্ম|দ্য|দ্র|র্দ্য|ধœ|ধ্ব|ধ্ম|ধ্য|ধ্র|ন্ট|ন্ট্র|ন্ঠ|ন্ড|ন্ড্র|ন্ত|ন্ত্ব|ন্ত্য|ন্ত্র|র্ন্ত্য|ন্থ|ন্থ্র|ন্দ|ন্দ্য|ন্দ্ব|ন্দ্র|ন্ধ|ন্ধ্য|ন্ধ্র|ন্ন|ন্ব|ন্ম|ন্য|প্ট|প্ত|প্ন|প্প|প্য|প্র|র্প্য|প্ল|প্স|ফ্র|ফ্ল|ব্জ|ব্দ|ব্ধ|ব্ব|ব্য|ব্র|ব্ল|ভ¡|ভ্য|ভ্র|ু|¤প|ম্প্র|ম্ফ|ম্ব|ম্ব্র|ম্ভ|ম্ভ্র|ম্ম|ম্য|ম্র|¤¬|য্য|র্ক|র্ক্য|র্গ্য|র্ঘ্য|র্চ্য|র্জ্য|র্ণ্য|র্ত্য|র্থ্য|র্ব্য|র্ম্য|র্শ্য|র্ষ্য|র্হ্য|র্খ|র্গ|র্গ্র|র্ঘ|র্চ|র্ছ|র্জ|র্ঝ|র্ট|র্ড|র্ণ|র্ত|র্ত্র|র্থ|র্দ|র্দ্ব|র্দ্র|র্ধ|র্ধ্ব|র্ন|র্প|র্ফ|র্ভ|র্ম|র্য|র্ল|র্শ|র্শ্ব|র্ষ|র্স|র্হ|র্ঢ্য|ল্ক|ল্ক্য|ল্গ|ল্ট|ল্ড|ল্প|ল্ফ|ল¡|ল্ভ|ল্ম|ল্য|ল্ল|শ্চ|ñ|শ্ন|শ্ব|শ্ম|শ্য|শ্র|শ্ল|ষ্ক|ষ্ক্র|ষ্ট|ষ্ট্য|ষ্ট্র|ষ্ঠ|ষ্ঠ্য|ষ্ণ|®প|®প্র|ষ্ফ|®^|ষ্ম|ষ্য|স্ক|স্ক্র|স্খ|স্ট|স্ট্র|স্ত|স্ত¡|স্ত্য|স্ত্র|স্থ|স্থ্য|ø|¯প|¯প্র|¯প্ল|স্ফ|স্ব|স্ম|স্য|স্র|¯¬|হœ|হ্ন|হ্ব|হ্ম|হ্য|হ্র|হ|ঋ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ|ঞ|ট|ঠ|ড|ঢ|ণ|ত|থ|দ|ধ|ন|প|ফ|ব|ভ|ম|য|র|ল|শ|ষ|স|হ|ড়|ঢ়|য়)"; - } -} diff --git a/src/Translator/AvroToBijoy/KeyMapping.php b/src/Translator/AvroToBijoy/KeyMapping.php new file mode 100644 index 0000000..1db606f --- /dev/null +++ b/src/Translator/AvroToBijoy/KeyMapping.php @@ -0,0 +1,584 @@ + value pair + * + * @var array + */ + const SORTED_CONJ_RULES = [ + 'ন্ত্র্য' => 'š—¨©', + 'ক্ষ্ম্য' => '²¨', + 'স্প্\u200cল' => '¯c&j', + 'ঙ্\u200cক্ত' => 'O&³', + + 'স্প্র' => '¯cÖ', + 'স্থ্য' => '¯’¨', + 'স্ত্র' => '¯¿', + 'স্ত্য' => '¯—¨', + 'স্ত্ব' => '¯—¡', + + 'স্ট্র' => '÷ª', + 'স্ক্র' => '¯Œ', + 'ষ্প্র' => '®cÖ', + 'ষ্ঠ্য' => 'ô¨', + 'ষ্ট্র' => 'óª', + + 'ষ্ট্য' => 'ó¨', + 'ষ্ক্র' => '®Œ', + 'ল্ক্য' => 'é¨', + 'র্হ্য' => 'n¨©', + 'র্ষ্য' => 'l¨©', + + 'র্শ্য' => 'k¨©', + 'র্শ্ব' => 'k¦©', + 'র্ম্য' => 'g¨©', + 'র্ব্য' => 'e¨©', + 'র্ধ্ব' => 'aŸ©', + + 'র্দ্র' => '`ª©', + 'র্দ্ব' => 'Ø©', + 'র্থ্য' => '_¨©', + 'র্ত্র' => 'Ω', + 'র্ত্য' => 'Z¨©', + + 'র্ণ্য' => 'Y¨©', + 'র্ঢ্য' => 'X¨©', + 'র্জ্য' => 'R¨©', + 'র্চ্য' => 'P¨©', + 'র্ঘ্য' => 'N¨©', + + 'র্গ্র' => 'MÖ©', + 'র্গ্য' => 'M¨©', + 'র্ক্য' => 'K¨©', + 'ম্ভ্র' => '¤£', + 'ম্ব্র' => '¤^ª', + + 'ম্প্র' => '¤cÖ', + 'প্র্য' => 'c¨©', + 'ন্ধ্র' => 'ܪ', + 'ন্ধ্য' => 'ܨ', + 'ন্দ্র' => '›`ª', + + 'ন্দ্য' => '›`¨', + 'ন্দ্ব' => '›Ø', + 'ন্থ্র' => 'š’ª', + 'ন্ত্র' => 'š¿', + 'ন্ত্য' => 'š—¨', + + 'ন্ত্ব' => 'š—¡', + 'ন্ড্র' => 'Ûª', + 'ন্ট্র' => '›Uª', + 'দ্র্য' => '`¨©', + 'দ্ভ্র' => '™£', + + 'দ্দ্ব' => 'Ï¡', + 'ত্র্য' => 'Z¨©', + 'ত্ম্য' => 'ͨ', + 'ত্ত্র' => 'Ë«', + 'ত্ত্য' => '˨', + + 'ত্ত্ব' => 'Ë¡', + 'ণ্ড্র' => 'ʪ', + 'ণ্ড্য' => 'ʨ', + 'ণ্ঠ্য' => 'ɨ', + 'জ্জ্ব' => '¾¡', + + 'চ্ছ্র' => '”Qª', + 'চ্ছ্ব' => '”Q¡', + 'ঙ্ঘ্র' => '•Nª', + 'ঙ্ঘ্য' => '•N¨', + 'ঙ্গ্য' => '½¨', + + 'ঙ্ক্ষ' => '•¶', + 'ঙ্ক্য' => '¼¨', + 'গ্র্য' => 'M¨©', + 'গ্ন্য' => 'Mœ¨', + 'গ্ধ্র' => '»ª', + + 'গ্ধ্য' => '»¨', + 'ক্ষ্য' => '¶¨', + 'ক্ষ্ম' => '²', + 'ক্ষ্ব' => '¶¡', + 'ক্ষ্ণ' => '¶è', + + 'ক্ত্র' => '³«', + 'ক্ট্র' => '±ª', + 'ল্\u200cভ' => 'j&f', + 'ল্\u200cফ' => 'j&d', + + 'গ্\u200cণ' => 'M&Y', + 'হ্ল' => 'n\xad', + 'হ্র' => 'nª', + 'হ্য' => 'n¨', + 'হ্ম' => 'þ', + 'হ্ব' => 'nŸ', + + 'হ্ন' => 'ý', + 'হ্ণ' => 'nœ', + 'স্ল' => '¯¬', + 'স্র' => 'mª', + 'স্য' => 'm¨', + 'স্ম' => '¯§', + + 'স্ব' => '¯^', + 'স্ফ' => 'ù', + 'স্প' => '¯c', + 'স্ন' => 'ø', + 'স্থ' => '¯’', + 'স্ত' => '¯Í', + + 'স্ট' => '÷', + 'স্খ' => 'ö', + 'স্ক' => '¯‹', + 'ষ্য' => 'l¨', + 'ষ্ম' => '®§', + 'ষ্ব' => '®^', + + 'ষ্ফ' => 'õ', + 'ষ্প' => '®c', + 'ষ্ণ' => 'ò', + 'ষ্ঠ' => 'ô', + 'ষ্ট' => 'ó', + 'ষ্ক' => '®‹', + + 'শ্ল' => 'k\xad', + 'শ্র' => 'kª', + 'শ্য' => 'k¨', + 'শ্ম' => 'k¥', + 'শ্ব' => 'k¦', + 'শ্ন' => 'kœ', + + 'শ্ছ' => 'ñ', + 'শ্চ' => 'ð', + 'ল্ল' => 'j\xad', + 'ল্য' => 'j¨', + 'ল্ম' => 'j¥', + 'ল্ব' => 'j¡', + + 'ল্প' => 'í', + 'ল্ড' => 'ì', + 'ল্ট' => 'ë', + 'ল্গ' => 'ê', + 'ল্ক' => 'é', + 'র্হ' => 'n©', + 'র্স' => 'm©', + + 'র্ষ' => 'l©', + 'র্শ' => 'k©', + 'র্ল' => 'j©', + 'র্য' => 'h©', + 'র্ম' => 'g©', + 'র্ভ' => 'f©', + + 'র্ফ' => 'd©', + 'র্প' => 'c©', + 'র্ন' => 'b©', + 'র্ধ' => 'a©', + 'র্দ' => '`©', + 'র্থ' => '_©', + + 'র্ত' => 'Z©', + 'র্ণ' => 'Y©', + 'র্ড' => 'W©', + 'র্ট' => 'U©', + 'র্ঝ' => 'S©', + 'র্জ' => 'R©', + + 'র্ছ' => 'Q©', + 'র্চ' => 'P©', + 'র্ঘ' => 'N©', + 'র্গ' => 'M©', + 'র্খ' => 'L©', + 'র্ক' => 'K©', + + 'য্য' => 'h¨', + 'ম্ল' => '¤¬', + 'ম্র' => 'gª', + 'ম্য' => 'g¨', + 'ম্ম' => '¤§', + 'ম্ভ' => '¤¢', + + 'ম্ব' => '¤^', + 'ম্ফ' => 'ç', + 'ম্প' => '¤c', + 'ম্ন' => 'æ', + 'ভ্র' => 'å', + 'ভ্য' => 'f¨', + + 'ভ্ব' => 'f¡', + 'ব্ল' => 'e\xad', + 'ব্র' => 'eª', + 'ব্য' => 'e¨', + 'ব্ব' => 'eŸ', + 'ব্ধ' => 'ä', + + 'ব্দ' => 'ã', + 'ব্জ' => 'â', + 'ফ্ল' => 'd¬', + 'ফ্র' => 'd«', + 'প্স' => 'á', + 'প্ল' => 'c\xad', + + 'প্র' => 'cÖ', + 'প্য' => 'c¨', + 'প্প' => 'à', + 'প্ন' => 'cœ', + 'প্ত' => 'ß', + 'প্ট' => 'Þ', + + 'ন্য' => 'b¨', + 'ন্ম' => 'b¥', + 'ন্ব' => 'š^', + 'ন্ন' => 'bœ', + 'ন্ধ' => 'Ü', + 'ন্দ' => '›`', + + 'ন্থ' => 'š’', + 'ন্ত' => 'šÍ', + 'ন্ড' => 'Û', + 'ন্ঠ' => 'Ú', + 'ন্ট' => '›U', + 'ধ্র' => 'aª', + + 'ধ্য' => 'a¨', + 'ধ্ম' => 'a¥', + 'ধ্ব' => 'aŸ', + 'ধ্ন' => 'aœ', + 'দ্র' => '`ª', + 'দ্য' => '`¨', + + 'দ্ম' => 'Ù', + 'দ্ভ' => '™¢', + 'দ্ব' => 'Ø', + 'দ্ধ' => '×', + 'দ্দ' => 'Ï', + 'দ্ঘ' => '™N', + + 'দ্গ' => '˜M', + 'থ্র' => '_ª', + 'থ্য' => '_¨', + 'থ্ব' => '_¡', + 'ত্র' => 'Î', + 'ত্য' => 'Z¨', + + 'ত্ম' => 'Z¥', + 'ত্ব' => 'Z¡', + 'ত্ন' => 'Zœ', + 'ত্থ' => 'Ì', + 'ত্ত' => 'Ë', + 'ণ্য' => 'Y¨', + + 'ণ্ম' => 'Y¥', + 'ণ্ব' => 'Y¡', + 'ণ্ণ' => 'Yè', + 'ণ্ঢ' => 'YX', + 'ণ্ড' => 'Ð', + 'ণ্ঠ' => 'É', + + 'ণ্ট' => 'È', + 'ঢ্র' => 'Xª', + 'ঢ্য' => 'X¨', + 'ড্র' => 'Wª', + 'ড্য' => 'W¨', + 'ড্ব' => 'W¡', + + 'ড্ড' => 'Ç', + 'ট্র' => 'Uª', + 'ট্য' => 'U¨', + 'ট্ম' => 'U¥', + 'ট্ব' => 'U¡', + 'ট্ট' => 'Æ', + + 'ঞ্ঝ' => 'Å', + 'ঞ্জ' => 'Ä', + 'ঞ্ছ' => 'Ã', + 'ঞ্চ' => 'Â', + 'জ্র' => 'Rª', + 'জ্য' => 'R¨', + + 'জ্ব' => 'R¡', + 'জ্ঞ' => 'Á', + 'জ্ঝ' => 'À', + 'জ্জ' => '¾', + 'চ্য' => 'P¨', + 'চ্ব' => '”¡', + + 'চ্ঞ' => '”T', + 'চ্ছ' => '”Q', + 'চ্চ' => '”P', + 'ঙ্ম' => '•g', + 'ঙ্ঘ' => '•N', + 'ঙ্গ' => '½', + + 'ঙ্খ' => '•L', + 'ঙ্ক' => '¼', + 'ঘ্র' => 'Nª', + 'ঘ্য' => 'N¨', + 'ঘ্ন' => 'Nœ', + 'গ্ল' => 'M\xad', + + 'গ্র' => 'MÖ', + 'গ্য' => 'M¨', + 'গ্ম' => 'M¥', + 'গ্ব' => 'M¦', + 'গ্ন' => 'Mœ', + 'গ্ধ' => '»', + + 'খ্র' => 'Lª', + 'খ্য' => 'L¨', + 'ক্স' => '·', + 'ক্ষ' => '¶', + 'ক্ল' => 'K¬', + 'ক্র' => 'µ', + + 'ক্য' => 'K¨', + 'ক্ম' => '´', + 'ক্ব' => 'K¡', + 'ক্ত' => '³', + 'ক্ট' => '±', + 'ক্ক' => '°', + 'ৎস' => 'rm', + 'ৎল' => 'rj', + ]; + + const FIX_ODD_CHARS = [ + 'ড়্গ' => 'ÿ', + '…' => '...', + 'ৎ' => 'r', + "‘" => "Ô", + "’" => "Õ", + "“" => "Ò", + "”" => "Ó", + '–' => '-', + '–' => '-', + '—' => '-', + 'ব়' => 'i', + 'য়' => 'q', + 'ড়' => 'o', + 'ঢ়' => 'p', + ]; + + /** + * Bengali characters as key => value map + * + * @var array + */ + const CHAR_RULES = [ + 'ং' => 's', + 'ঃ' => 't', + 'অ' => 'A', + 'আ' => 'Av', + 'ই' => 'B', + 'ঈ' => 'C', + 'উ' => 'D', + 'ঊ' => 'E', + 'ঋ' => 'F', + 'এ' => 'G', + 'ঐ' => 'H', + 'ও' => 'I', + 'ঔ' => 'J', + 'ক' => 'K', + 'খ' => 'L', + 'গ' => 'M', + 'ঘ' => 'N', + 'ঙ' => 'O', + 'চ' => 'P', + 'ছ' => 'Q', + 'জ' => 'R', + 'ঝ' => 'S', + 'ঞ' => 'T', + 'ট' => 'U', + 'ঠ' => 'V', + 'ড' => 'W', + 'ঢ' => 'X', + 'ণ' => 'Y', + 'ত' => 'Z', + 'থ' => '_', + 'দ' => '`', + 'ধ' => 'a', + 'ন' => 'b', + 'প' => 'c', + 'ফ' => 'd', + 'ব' => 'e', + 'ভ' => 'f', + 'ম' => 'g', + 'য' => 'h', + 'র' => 'i', + 'ল' => 'j', + 'শ' => 'k', + 'ষ' => 'l', + 'স' => 'm', + 'হ' => 'n', + 'ঢ়' => '~p', + 'ড়' => 'o', + 'ঁ' => 'u', + + // There are some people in the world....for + 'য়' => 'q', + 'য়' => 'q', + ]; + + /** + * Kar rules + * + * @var array + */ + const KAR_RULES = [ + 'া' => 'v', + 'ী' => 'x', + 'ু' => 'y', + 'রু' => 'iªy', # special case: র + উ-কার + 'ূ' => '‚', + 'ৃ' => '…' + ]; + + /** + * Kars that positions before the characters + * + * @var array + */ + const KAR_BEFORE_CHAR_RULES = [ + 'ি' => 'w', + 'ে' => '‡', + 'ৈ' => 'ˆ', + ]; + + /** + * Kars that wraps the character + * + * @var array + */ + const KAR_AROUND_CHAR_RULES = [ + ' ো' => ' †v', + 'ো' => '‡v', + ' ৌ' => ' †Š', + 'ৌ' => '‡Š', + ]; + + /** + * Appends to static::KAR_AROUND_CHAR_RULES + * + * @var array + */ + const KAR_AROUND_CHAR_RULES_PREPENDS = [ + '¨' + ]; + + /** + * Number rules + * + * @var array + */ + const NUM_RULES = [ + '০' => '0', + '১' => '1', + '২' => '2', + '৩' => '3', + '৪' => '4', + '৫' => '5', + '৬' => '6', + '৭' => '7', + '৮' => '8', + '৯' => '9', + ]; + + /** + * Rejoin rules + * + * @var array + */ + const REJOIN_RULES = [ + 'šÔ' => "š‘", + ' ‡' => " †", + '¯Õ' => "¯’v", + 'ÓQ' => "”Q", + # '¯—' => "¯Í", + # '¯-' => "¯Í", + # 'š—' => "šÍ", + # 'š-' => "šÍ", + '¯\'' => "¯’", + # '`ª“' => "`ªæ", + # 'y' => "z", + # '“' => "æ", + ' ‰' => " ˆ", + '~' => "‚", + //'iz' => "i“", + ]; + + /** + * Basic symbols + * + * @var array + */ + const SYM = [ + '।' => '|', + ]; + + /** + * Unicode based rejoin rules + * + * @var array + */ + const REJOIN_RULES_UNICODE = [ + 'š‘' => "ন্তু", + 'র্যাব' => "র‌্যাব", + 'র্যাবে' => "র‌্যাবে", + '¯’া' => "স্থা", + '”েছ' => "চ্ছে", + '¯’' => "স্থ", + 'র“' => "রু", + '¯’্য' => "স্থ্য", + '¯্রা' => "স্রা", + '¤œা' => "ম্না", + 'ত্র“' => "ত্রু", + 'তœ' => "ত্ন", + 'Ñ' => "-", + ]; + + /** + * Basic list of odd unicode characters + * + * @var array + */ + const FIX_UNICODE = [ + 'য়' => 'য়', + 'ব়' => 'র', + 'ঢ়' => 'ঢ়', + 'ড়' => 'ড়', + ]; + + /** + * Kars that reside before the character + * + * @var array + */ + const KARS_BEFORE_CHAR = ['ি', 'ে', 'ৈ']; + + /** + * Will be prepended before static::KARS_BEFORE_CHAR if exists + * + * @var array + */ + const KARS_BEFORE_PREPEND_CHAR = ['š']; +} diff --git a/src/Translator/AvroToBijoy/Translator.php b/src/Translator/AvroToBijoy/Translator.php index d413219..f812a9b 100644 --- a/src/Translator/AvroToBijoy/Translator.php +++ b/src/Translator/AvroToBijoy/Translator.php @@ -2,12 +2,11 @@ namespace MirazMac\BanglaString\Translator\AvroToBijoy; -use MirazMac\BanglaString\Traits\SingletonTrait; use MirazMac\BanglaString\Contracts\TranslatorContract; -use MirazMac\BanglaString\Translator\AvroToBijoy\CharacterMap; +use MirazMac\BanglaString\Translator\AvroToBijoy\KeyMapping; /** -* Translates Bengali strings written in Avro Unicode to Bijoy ANSI +* Translates Bengali strings written in Avro to Bijoy Classic (Based on Bijoy 71) * * @version 0.1 * @since 0.1 @@ -17,113 +16,154 @@ class Translator implements TranslatorContract { /** - * Translates Avro Unicode string to Bijoy ANSI + * Translates Avro Unicode string to Bijoy Classic ANSI * * @param string $string Text written via avro * @return string */ public function translate($string) { - // Import character maps - $charmap = CharacterMap::getLetterCharMap(); - $kars = CharacterMap::getBijoyKars(); + $string = $this->fixOddChars($string); - // Pre-replacement - All the letters, numbers and juktabornas.. - $string = str_replace(array_keys($charmap), array_values($charmap), $string); + $string = $this->fixUnicode($string); + $string = $this->replaceConjuctions($string); - // Post-replacement - // Replace kars from the very beginning of the string - $start_regex = "/\A{$kars}/um"; - $string = preg_replace_callback($start_regex, [$this, 'translateKarsCallbackStart'], $string); + $string = $this->swapKarsLocation($string); - $space_before_regex = "/\s{$kars}/um"; - $string = preg_replace_callback($space_before_regex, [$this, 'translateKarsCallbackSpaceBefore'], $string); + $string = $this->handleSurroundingKars($string); - $anywhere_regex = "/{$kars}/um"; - $string = preg_replace_callback($anywhere_regex, [$this, 'translateKarsCallback'], $string); + $ruleSet = KeyMapping::getRules(); + + $string = str_replace( + array_keys($ruleSet), + array_values($ruleSet), + $string + ); - // Finally hand-over the string! return $string; } /** - * Callback method for self::translate(), for strings that has "kar" at the - * very beginning of the string + * Handles kars that surrounds a character * - * @param array $match The matches - * @return string + * @param string $string The string + * + * @return string */ - protected function translateKarsCallbackStart($match = []) + protected function handleSurroundingKars($string) { - switch ($match[2]) { - case 'ি': - return 'w' . $match[1]; - - case 'ে': - return '†' . $match[1]; - - case 'ো': - return '†' . $match[1] . 'v'; - - case 'ৈ': - return 'ˆ' . $match[1]; - - case 'ৌ': - return '†' . $match[1] . 'Š'; - } + // We are accounting for characters that has space before + // but for the regex we only need the kars + // so trim the spaces, and use only unique keys + $rules = array_keys(KeyMapping::KAR_AROUND_CHAR_RULES); + $rules = array_map('trim', $rules); + $rules = array_unique($rules); + + $kars = join('', $rules); + $prepends = join('', KeyMapping::KAR_AROUND_CHAR_RULES_PREPENDS); + + $regEx = "/(\s)?(?P[^{$kars}])(?P[{$prepends}])?(?P[{$kars}])/um"; + + return preg_replace_callback( + $regEx, + function ($match) { + $space = ''; + $key = $match['kar']; + + if ($count = mb_strlen($match[1])) { + $space = ' '; + $key = $space . $key; + } + + + $rule = KeyMapping::KAR_AROUND_CHAR_RULES[$key]; + $char = $match['char']; + if (isset($match['b'])) { + $char .= $match['b']; + } + $rule = str_replace('', $char, $rule); + + return $space . $rule; + }, + $string + ); } - /** - * Callback method for self::translate(), for strings that has "kar" - * with a space before + /** + * Swaps the kars location * - * @param array $match The matches - * @return string + * @param string $string The string + * + * @return string */ - protected function translateKarsCallbackSpaceBefore($match = []) + protected function swapKarsLocation($string) { - switch ($match[2]) { - case 'ি': - return ' w' . $match[1]; - - case 'ে': - return ' †' . $match[1]; - - case 'ো': - return ' †' . $match[1] . 'v'; + $kars = join('', KeyMapping::KARS_BEFORE_CHAR); + $prepends = join('', KeyMapping::KARS_BEFORE_PREPEND_CHAR); + + $regEx = "/(?P[{$prepends}])?(?P[^{$kars}])(?P[{$kars}])/um"; + + return preg_replace_callback( + $regEx, + function ($match) { + $return = $match['kar']; + if (isset($match['b'])) { + $return .= $match['b']; + } + $return .= $match['char']; + return $return; + }, + $string + ); + } - case 'ৈ': - return ' ˆ' . $match[1]; - case 'ৌ': - return ' †'.$match[1].'Š'; - } + /** + * Replaces conjuctions using KeyMapping::SORTED_CONJ_RULES + * + * @param string $string The string + * + * @return string + */ + protected function replaceConjuctions($string) + { + return str_replace( + array_keys(KeyMapping::SORTED_CONJ_RULES), + array_values(KeyMapping::SORTED_CONJ_RULES), + $string + ); } /** - * Callback method for self::translate(), for strings that has "kar" at anywhere in the string + * Normalizes some odd chars by replacing them using KeyMapping::FIX_ODD_CHARS * - * @param array $match The matches - * @return string + * @param string $string The string + * + * @return string */ - protected function translateKarsCallback($match = []) + protected function fixOddChars($string) { - switch ($match[2]) { - case 'ি': - return 'w' . $match[1]; - - case 'ে': - return '‡' . $match[1]; - - case 'ো': - return '‡' . $match[1] . 'v'; - - case 'ৈ': - return '‰' . $match[1]; + return str_replace( + array_keys(KeyMapping::FIX_ODD_CHARS), + array_values(KeyMapping::FIX_ODD_CHARS), + $string + ); + } - case 'ৌ': - return '‡'.$match[1].'Š'; - } + /** + * Normalizes some unicode chars by replacing them using KeyMapping::FIX_UNICODE + * + * @param string $string The string + * + * @return string + */ + protected function fixUnicode($string) + { + return str_replace( + array_keys(KeyMapping::FIX_UNICODE), + array_values(KeyMapping::FIX_UNICODE), + $string + ); } } diff --git a/src/Translator/BijoyToAvro/Translator.php b/src/Translator/BijoyToAvro/Translator.php index c284db7..e106ea8 100644 --- a/src/Translator/BijoyToAvro/Translator.php +++ b/src/Translator/BijoyToAvro/Translator.php @@ -2,7 +2,6 @@ namespace MirazMac\BanglaString\Translator\BijoyToAvro; -use MirazMac\BanglaString\Traits\SingletonTrait; use MirazMac\BanglaString\Contracts\TranslatorContract; use MirazMac\BanglaString\Translator\AvroToBijoy\CharacterMap; @@ -28,6 +27,10 @@ public function translate($string) $charmap = CharacterMap::getLetterCharMap(); $kars = CharacterMap::getAvroKars(); + $string = str_replace(['…', '~', 'z'], ['ৃ', 'ূ', 'ু'], $string); + + + // Pre-replacement - All the letters, numbers and juktabornas.. $string = str_replace(array_values($charmap), array_keys($charmap), $string); From 2c939ef3fb91b581a24fb0ad62af26ae46e0aae7 Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Mon, 18 Oct 2021 21:44:13 +0600 Subject: [PATCH 07/12] =?UTF-8?q?Fixed=20=E0=A6=AF=20=E0=A6=AB=E0=A6=B2?= =?UTF-8?q?=E0=A6=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Translator/AvroToBijoy/KeyMapping.php | 2 ++ src/Translator/AvroToBijoy/Translator.php | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Translator/AvroToBijoy/KeyMapping.php b/src/Translator/AvroToBijoy/KeyMapping.php index 1db606f..5e3c219 100644 --- a/src/Translator/AvroToBijoy/KeyMapping.php +++ b/src/Translator/AvroToBijoy/KeyMapping.php @@ -581,4 +581,6 @@ public static function getRules() * @var array */ const KARS_BEFORE_PREPEND_CHAR = ['š']; + + const KARS_BEFORE_EDGE_CASE = ['¨']; } diff --git a/src/Translator/AvroToBijoy/Translator.php b/src/Translator/AvroToBijoy/Translator.php index f812a9b..cc904fe 100644 --- a/src/Translator/AvroToBijoy/Translator.php +++ b/src/Translator/AvroToBijoy/Translator.php @@ -101,17 +101,23 @@ protected function swapKarsLocation($string) { $kars = join('', KeyMapping::KARS_BEFORE_CHAR); $prepends = join('', KeyMapping::KARS_BEFORE_PREPEND_CHAR); - - $regEx = "/(?P[{$prepends}])?(?P[^{$kars}])(?P[{$kars}])/um"; + $edge = join('', KeyMapping::KARS_BEFORE_EDGE_CASE); + $regEx = "/(?{$prepends})?(?P[^{$kars}])(?{$edge})?(?P[{$kars}])/um"; return preg_replace_callback( $regEx, function ($match) { + // r($match); $return = $match['kar']; - if (isset($match['b'])) { + if (!empty($match['b'])) { $return .= $match['b']; } $return .= $match['char']; + + if (!empty($match['z'])) { + $return .= $match['z']; + } + return $return; }, $string From d0daa2ab2c2a51ff2487f54c86aa1b47cfc6e410 Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Tue, 19 Oct 2021 12:57:16 +0600 Subject: [PATCH 08/12] Changed tests --- composer.json | 5 ++++- phpunit.xml | 2 +- tests/BanglaStringTest.php | 29 ++++++----------------------- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/composer.json b/composer.json index 3663bb4..b57e4bd 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,10 @@ "require": { "php": ">=5.4.0" }, + "scripts": { + "phpunit": "vendor/bin/phpunit --configuration phpunit.xml" + }, "require-dev": { - "phpunit/phpunit": "^4.8" + "phpunit/phpunit": "4.8.36" } } diff --git a/phpunit.xml b/phpunit.xml index deb55cf..18057c2 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -14,4 +14,4 @@ - \ No newline at end of file + diff --git a/tests/BanglaStringTest.php b/tests/BanglaStringTest.php index a8b0ed1..e10133a 100644 --- a/tests/BanglaStringTest.php +++ b/tests/BanglaStringTest.php @@ -1,38 +1,21 @@ banglaStr = new BanglaString('hello'); - } - - public function tearDown() - { - $this->banglaStr = null; - } - public function testTranslate() { $this->assertInstanceOf('MirazMac\BanglaString\BanglaString', BanglaString::translate('hello')); } - public function testToBijoy() - { - $this->assertEquals('hello', $this->banglaStr->toBijoy('Ahello')); - } - - public function testToAvro() - { - $this->assertEquals('যবষষড়', $this->banglaStr->toAvro('hello')); - } - public function testBanglaStringWithInvalidString() { $this->setExpectedException('\InvalidArgumentException'); From 076c0f8683eeb14bb993f4dcf268c0f6ddf1b91a Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Tue, 19 Oct 2021 12:58:40 +0600 Subject: [PATCH 09/12] Ignored lockfile --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 34cf04b..d769eb5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ vendor -.phpunit.result.cache \ No newline at end of file +.phpunit.result.cache +composer.lock From 7bf03ba0daa76a9e348ed73ecbb96fa9b4c5ed62 Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Tue, 19 Oct 2021 12:59:37 +0600 Subject: [PATCH 10/12] Updated usage --- usage/usage.php | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/usage/usage.php b/usage/usage.php index d159474..fffc687 100644 --- a/usage/usage.php +++ b/usage/usage.php @@ -2,16 +2,43 @@ require '../vendor/autoload.php'; -use MirazMac\BanglaString\BanglaString; +use MirazMac\BanglaString\Translator\AvroToBijoy\Translator as AvroToBijoyTranslator; +use MirazMac\BanglaString\Translator\BijoyToAvro\Translator as BijoyToAvroTranslator; -echo "

Bijoy to Avro


"; -echo BanglaString::translate('wgqvu n„`‡qi PÂjZv e‡Ü eªZx n‡j Rxeb cwic‚Y© n‡e bvbv i‡Oi dy‡j| KyÅwUKv cÖfÄb k¼vi KviY jÊfÊ K‡i hvq aivi A½b| w¶ß n‡j mv½ n‡e weÁR‡b e‡j kvš— n‡j G eªþv‡Ê evwÃZdj †g‡j| Avlv‡p Ckvb †Kv‡b nVvr So D‡V MMb †g‡N‡Z Xv‡K e„wó bv‡g gv‡V Elvi AvKv‡k bv‡g mܨvi Qvqv H †`‡Lv †_‡g †M‡Q cvivcv‡i †Lqv| kir FZy‡Z Pvu` Av‡jvq Askygvb myL `ytL cvkv cvwk mn Ae¯’vb| †h R‡j‡Z Ck¦i Z„òv †gUvq †mB R‡j‡Z RxeKy‡j webvk NUvq| †ivM hw` †`n †Q‡o g‡b wM‡q a‡i Jl‡ai mva¨ wK ev Zv‡i my¯’ K‡i?')->toAvro(); +$bijoyToAvro = new BijoyToAvroTranslator; + +$avroToBijoy = new AvroToBijoyTranslator; ?> + + + + + + BanglaString + + +

Bijoy to Avro

+
+translate("A_©nxb †jLv hvi gv‡S Av‡Q A‡bK wKQz| n¨vu, GB †jLvi gv‡SB Av‡Q A‡bK wKQz| hw` Zzwg g‡b K‡iv, GUv †Zvgvi Kv‡R jvM‡e, Zvn‡j Zv jvM‡e Kv‡R| wb‡Ri fvlvq †jLv †`L‡Z Af¨¯— nI| g‡b ivL‡e †jLv A_©nxb nq, hLb Zzwg Zv‡K A_©nxb g‡b K‡iv; Avi †jLv A_©‡evaKZv ˆZwi K‡i, hLb Zzwg Zv‡Z A_© Xv‡jv| †h‡Kv‡bv †jLvB †Zvgvi Kv‡Q A_©‡evaKZv ˆZwi Ki‡Z cv‡i, hw` Zzwg †mLv‡b A_©‡`¨vZbv †`L‡Z cvI| ...wQ`ªv‡š^lY? bv, Zv n‡e †Kb? †h K_v‡K Kv‡R jvMv‡Z PvI, Zv‡K Kv‡R jvMv‡bvi K_v wPš—v Kivi Av‡M fv‡ev, Zzwg wK †mB K_vi Rv`y‡Z Av”Qbœ n‡q †MQ wKbv| Zzwg hw` wbwðZ nI †h, Zzwg †Kv‡bv †gvnv”Qvw`Z Ave‡n Avweó n‡q A‡b¨i †kLv‡bv eywj Avͯ’ Ki‡Qv bv, Zvn‡j Zzwg wbf©‡q, wbwð‡š— AMÖmi nI| Zzwg †mB K_v‡K Rv‡bv, ey‡Sv, Avͯ’ K‡iv; g‡b ivL‡e, hv AbymiY Ki‡Z P‡j‡Qv, Zv Av‡M Abyaveb Kiv Ri“wi; GLv‡b wKsKZ©e¨weg~p nevi †Kv‡bv my‡hvM †bB| †Kv‡bv K_v †kvbvgvÎB wK Zzwg Zv wek¦vm Ki‡e? nq‡Zv ej‡e, Ki‡e, nq‡Zv ej‡e ÒAvwg Ki‡ev bv|Ó n¨v, ÒAvwg Ki‡ev bvÓ ej‡jB mewKQz A¯^xKvi Kiv hvq bv, nq‡Zv Zzwg g‡bi Mnxb Mfxi †_‡K wVKB wek¦vm Ki‡Z ïi“ K‡i‡Qv †mB K_vwU, wKš‘ gy‡L A¯^xKvi Ki‡Qv| ZvB m‡PZb _v‡Kv, Zzwg Kx fve‡Qv— Zvi cÖwZ; m‡PZb _v‡Kv, Zzwg wK Avm‡jB wek¦vm Ki‡Z P‡j‡Qv H K_vwU... ïay GZUzKz ewj, hv-B wek¦vm K‡iv bv †Kb, Av‡M hvPvB K‡i bvI; Avi G‡Z PvB †Zvgvi cÖZ¨yrcbœgwZZ¡| ZvB †Kvb K_vwU Kv‡R jvM‡e, Zv wba©viY Ki‡e Zzwg— n¨vu, Zzwg| nq‡Zv mvgvb¨ K’Uv evsjv A¶i: LÛ-Z, Aby¯^vi, wetmM© wKsev P›`ªwe›`y— wKš‘ hw` Zzwg wek¦vm K‡iv, Zvn‡j nq‡Zv Zzwg Zv w`‡qB ˆZwi Ki‡Z cv‡iv GK D”PgvM©xq gnvKve¨- GK wPimeyR AN¨©| iwPZ n‡Z cv‡i c„w_exi 1g weivg wP‡ýi BwZK_v – GK bZzb Elv| ...gnvKve¨ wjL‡Z Fwl-gywb nIqv jv‡M bv| A_©nxbZv Avi A_©‡`¨vZbvi †mB Cl©vKvZi †gvnvweóZv ZvB ˆZwi K‡i bvI wb‡Ri gv‡S- PvB GKUzLvwb JrmyK¨| wb‡RB wVK K‡iv, wb‡Ri fvlvUv wK A_©nxb, bvwK wKQz mwZ¨B ej‡Q! ")); ?> +

-

Avro to Bijoy


- +

Avro to Bijoy

toBijoy(); +$bijoy = nl2br($avroToBijoy->translate('অর্থহীন লেখা যার মাঝে আছে অনেক কিছু। হ্যাঁ, এই লেখার মাঝেই আছে অনেক কিছু। যদি তুমি মনে করো, এটা তোমার কাজে লাগবে, তাহলে তা লাগবে কাজে। নিজের ভাষায় লেখা দেখতে অভ্যস্ত হও। মনে রাখবে লেখা অর্থহীন হয়, যখন তুমি তাকে অর্থহীন মনে করো; আর লেখা অর্থবোধকতা তৈরি করে, যখন তুমি তাতে অর্থ ঢালো। যেকোনো লেখাই তোমার কাছে অর্থবোধকতা তৈরি করতে পারে, যদি তুমি সেখানে অর্থদ্যোতনা দেখতে পাও। …ছিদ্রান্বেষণ? না, তা হবে কেন? + +যে কথাকে কাজে লাগাতে চাও, তাকে কাজে লাগানোর কথা চিন্তা করার আগে ভাবো, তুমি কি সেই কথার জাদুতে আচ্ছন্ন হয়ে গেছ কিনা। তুমি যদি নিশ্চিত হও যে, তুমি কোনো মোহাচ্ছাদিত আবহে আবিষ্ট হয়ে অন্যের শেখানো বুলি আত্মস্থ করছো না, তাহলে তুমি নির্ভয়ে, নিশ্চিন্তে অগ্রসর হও। তুমি সেই কথাকে জানো, বুঝো, আত্মস্থ করো; মনে রাখবে, যা অনুসরণ করতে চলেছো, তা আগে অনুধাবন করা জরুরি; এখানে কিংকর্তব্যবিমূঢ় হবার কোনো সুযোগ নেই। + +কোনো কথা শোনামাত্রই কি তুমি তা বিশ্বাস করবে? হয়তো বলবে, করবে, হয়তো বলবে “আমি করবো না।” হ্যা, “আমি করবো না” বললেই সবকিছু অস্বীকার করা যায় না, হয়তো তুমি মনের গহীন গভীর থেকে ঠিকই বিশ্বাস করতে শুরু করেছো সেই কথাটি, কিন্তু মুখে অস্বীকার করছো। তাই সচেতন থাকো, তুমি কী ভাবছো— তার প্রতি; সচেতন থাকো, তুমি কি আসলেই বিশ্বাস করতে চলেছো ঐ কথাটি… শুধু এতটুকু বলি, যা-ই বিশ্বাস করো না কেন, আগে যাচাই করে নাও; আর এতে চাই তোমার প্রত্যুৎপন্নমতিত্ব। + +তাই কোন কথাটি কাজে লাগবে, তা নির্ধারণ করবে তুমি— হ্যাঁ, তুমি। হয়তো সামান্য ক’টা বাংলা অক্ষর: খন্ড-ত, অনুস্বার, বিঃসর্গ কিংবা চন্দ্রবিন্দু— কিন্তু যদি তুমি বিশ্বাস করো, তাহলে হয়তো তুমি তা দিয়েই তৈরি করতে পারো এক উচ্চমার্গীয় মহাকাব্য- এক চিরসবুজ অর্ঘ্য। রচিত হতে পারে পৃথিবীর ১ম বিরাম চিহ্নের ইতিকথা – এক নতুন ঊষা। …মহাকাব্য লিখতে ঋষি-মুনি হওয়া লাগে না। +অর্থহীনতা আর অর্থদ্যোতনার সেই ঈর্ষাকাতর মোহাবিষ্টতা তাই তৈরি করে নাও নিজের মাঝে- চাই একটুখানি ঔৎসুক্য। নিজেই ঠিক করো, নিজের ভাষাটা কি অর্থহীন, নাকি কিছু সত্যিই বলছে!')); ?> -
+

Output in SutonnyMJ font:

+
+ +
+

Raw output:

+
+ + From e6c3fd14feaae22c9ca3a43233747d4dd6b5bfa2 Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Tue, 19 Oct 2021 13:02:00 +0600 Subject: [PATCH 11/12] Fixes to the BijoyToAvro Translator --- src/Translator/BijoyToAvro/CharacterMap.php | 417 ++++++++++++++++++++ src/Translator/BijoyToAvro/Translator.php | 14 +- 2 files changed, 425 insertions(+), 6 deletions(-) create mode 100644 src/Translator/BijoyToAvro/CharacterMap.php diff --git a/src/Translator/BijoyToAvro/CharacterMap.php b/src/Translator/BijoyToAvro/CharacterMap.php new file mode 100644 index 0000000..ef56bce --- /dev/null +++ b/src/Translator/BijoyToAvro/CharacterMap.php @@ -0,0 +1,417 @@ + Bijoy format + * + * @return array + */ + public static function getLetterCharMap() + { + return [ + 'M\\xad' => 'গ্ল', + 'c\\xad' => 'প্ল', + 'e\\xad' => 'ব্ল', + 'j\\xad' => 'ল্ল', + 'k\\xad' => 'শ্ল', + 'n\\xad' => 'হ্ল', + '¯c&j' => 'স্প্‌ল', + 'š—¨©' => 'ন্ত্র্য', + 'š—¡' => 'ন্ত্ব', + 'M¨©' => 'র্গ্য', + 'e¨©' => 'র্ব্য', + '_¨©' => 'র্থ্য', + 'R¨©' => 'র্জ্য', + 'P¨©' => 'র্চ্য', + 'N¨©' => 'র্ঘ্য', + 'K¨©' => 'র্ক্য', + '•Nª' => 'ঙ্ঘ্র', + 'Mœ¨' => 'গ্ন্য', + 'M&Y' => 'গ্‌ণ', + 'k¨©' => 'র্শ্য', + 'O&³' => 'ঙ্‌ক্ত', + 'Mªy' => 'গ্রু', + 'Y¨©' => 'র্ণ্য', + '›Uª' => 'ন্ট্র', + '›`¨' => 'ন্দ্য', + '›`ª' => 'ন্দ্র', + 'š—¨' => 'ন্ত্য', + 'š’ª' => 'ন্থ্র', + '¯—¡' => 'স্ত্ব', + 'g¨©' => 'র্ম্য', + 'kª“' => 'শ্রু', + '¤^ª' => 'ম্ব্র', + '¤cÖ' => 'ম্প্র', + '`¨©' => 'দ্র্য', + '®cÖ' => 'ষ্প্র', + '¯—¨' => 'স্ত্য', + 'l¨©' => 'র্ষ্য', + '¯’¨' => 'স্থ্য', + '¯cÖ' => 'স্প্র', + '”Qª' => 'চ্ছ্র', + '”Q¡' => 'চ্ছ্ব', + 'c¨©' => 'প্র্য', + 'Z¨©' => 'র্ত্য', + '•N¨' => 'ঙ্ঘ্য', + 'X¨©' => 'র্ঢ্য', + 'n¨©' => 'র্হ্য', + '`ª©' => 'র্দ্র', + 'aŸ©' => 'র্ধ্ব', + 'k¦©' => 'র্শ্ব', + 'MÖ©' => 'র্গ্র', + 'j&d' => 'ল্‌ফ', + 'j&f' => 'ল্‌ভ', + '•N' => 'ঙ্ঘ', + '•¶' => 'ঙ্ক্ষ', + '¼¨' => 'ঙ্ক্য', + '•g' => 'ঙ্ম', + '”P' => 'চ্চ', + '”Q' => 'চ্ছ', + 'n¨' => 'হ্য', + '”T' => 'চ্ঞ', + 'P¨' => 'চ্য', + 'U¡' => 'ট্ব', + '¾¡' => 'জ্জ্ব', + 'nŸ' => 'হ্ব', + 'R¡' => 'জ্ব', + '”¡' => 'চ্ব', + 'R¨' => 'জ্য', + 'Rª' => 'জ্র', + 'nœ' => 'হ্ণ', + 'mª' => 'স্র', + '¯¬' => 'স্ল', + '½¨' => 'ঙ্গ্য', + 'Wª' => 'ড্র', + 'Zœ' => 'ত্ন', + 'U¨' => 'ট্য', + 'W¡' => 'ড্ব', + 'W¨' => 'ড্য', + '˨' => 'ত্ত্য', + '¯^' => 'স্ব', + 'X¨' => 'ঢ্য', + 'Xª' => 'ঢ্র', + 'Nª' => 'ঘ্র', + 'ɨ' => 'ণ্ঠ্য', + 'ʨ' => 'ণ্ড্য', + 'ʪ' => 'ণ্ড্র', + 'U¥' => 'ট্ম', + 'YX' => 'ণ্ঢ', + 'Yè' => 'ণ্ণ', + 'Y¡' => 'ণ্ব', + 'Y¥' => 'ণ্ম', + 'Y¨' => 'ণ্য', + 'rK' => 'ৎক', + '¯c' => 'স্প', + 'ܪ' => 'ন্ধ্র', + 'Uª' => 'ট্র', + 'm¨' => 'স্য', + '›Ø' => 'ন্দ্ব', + 'Ë¡' => 'ত্ত্ব', + 'rm' => 'ৎস', + 'Nœ' => 'ঘ্ন', + 'ͨ' => 'ত্ম্য', + 'Z¨' => 'ত্য', + '¯’' => 'স্থ', + 'M­' => 'গ্ল', + 'rj' => 'ৎল', + '_¡' => 'থ্ব', + '_¨' => 'থ্য', + 'Ï¡' => 'দ্দ্ব', + '™£' => 'দ্ভ্র', + '˜M' => 'দ্গ', + '™¢' => 'দ্ভ', + '™N' => 'দ্ঘ', + '¯¿' => 'স্ত্র', + 'MÖ' => 'গ্র', + 'Ë«' => 'ত্ত্র', + '¯Í' => 'স্ত', + 'šÍ' => 'ন্ত', + 'Z¥' => 'ত্ম', + '_ª' => 'থ্র', + 'aœ' => 'ধ্ন', + 'Z¡' => 'ত্ব', + 'š¿' => 'ন্ত্র', + 'M¦' => 'গ্ব', + '`ª' => 'দ্র', + 'aŸ' => 'ধ্ব', + 'a¥' => 'ধ্ম', + 'aª' => 'ধ্র', + 'kª' => 'শ্র', + '÷ª' => 'স্ট্র', + 'Ûª' => 'ন্ড্র', + '¯—' => 'স্ত', + '`¨' => 'দ্য', + 'š—' => 'ন্ত', + 'š‘' => 'ন্ত', + 'nª' => 'হ্র', + 'š’' => 'ন্থ', + '•¸' => 'ঙ্গু', + '›`' => 'ন্দ', + 'Mœ' => 'গ্ন', + 'N¨' => 'ঘ্য', + 'ܨ' => 'ন্ধ্য', + '¯§' => 'স্ম', + 'M¥' => 'গ্ম', + '›U' => 'ন্ট', + '®§' => 'ষ্ম', + 'b¥' => 'ন্ম', + 'b¨' => 'ন্য', + '¯Œ' => 'স্ক্র', + '¯‹' => 'স্ক', + 'cœ' => 'প্ন', + 'l¨' => 'ষ্য', + 'c¨' => 'প্য', + 'cÖ' => 'প্র', + '»ª' => 'গ্ধ্র', + 'f¨' => 'ভ্য', + '®c' => 'ষ্প', + 'd«' => 'ফ্র', + 'd¬' => 'ফ্ল', + '®^' => 'ষ্ব', + '»¨' => 'গ্ধ্য', + 'eŸ' => 'ব্ব', + 'e¨' => 'ব্য', + 'eª' => 'ব্র', + 'e­' => 'ব্ল', + 'K¬' => 'ক্ল', + '¶è' => 'ক্ষ্ণ', + 'c­' => 'প্ল', + 'f¡' => 'ভ্ব', + 'L©' => 'র্খ', + 'š^' => 'ন্ব', + '•L' => 'ঙ্খ', + 'i“' => 'রু', + 'ô¨' => 'ষ্ঠ্য', + '¤^' => 'ম্ব', + '¤¢' => 'ম্ভ', + '¤£' => 'ম্ভ্র', + '¤§' => 'ম্ম', + 'g¨' => 'ম্য', + 'gª' => 'ম্র', + 'A¨' => 'অ্য', + 'n¬' => 'হ্ল', + '¤¬' => 'ম্ল', + '¤c' => 'ম্প', + 'h¨' => 'য্য', + 'K©' => 'র্ক', + 'Lª' => 'খ্র', + 'L¨' => 'খ্য', + 'f¬' => 'ভ্ল', + '¶¨' => 'ক্ষ্য', + '²¨' => 'ক্ষ্ম্য', + '¶¡' => 'ক্ষ্ব', + 'M©' => 'র্গ', + 'M¨' => 'গ্য', + '®Œ' => 'ষ্ক্র', + 'h©' => 'র্য', + 'P©' => 'র্চ', + 'Q©' => 'র্ছ', + 'R©' => 'র্জ', + 'S©' => 'র্ঝ', + 'U©' => 'র্ট', + 'W©' => 'র্ড', + 'Y©' => 'র্ণ', + 'Z©' => 'র্ত', + '_©' => 'র্থ', + '`©' => 'র্দ', + 'Ω' => 'র্ত্র', + 'bœ' => 'ন্ন', + 'f©' => 'র্ভ', + 'd©' => 'র্ফ', + 'c©' => 'র্প', + 'b©' => 'র্ন', + 'Av' => 'আ', + 'a©' => 'র্ধ', + 'K¨' => 'ক্য', + 'l©' => 'র্ষ', + 'Ø©' => 'র্দ্ব', + 'N©' => 'র্ঘ', + 'g©' => 'র্ম', + 'a¨' => 'ধ্য', + 'j¡' => 'ল্ব', + 'm©' => 'র্স', + 'j©' => 'র্ল', + 'ª¨' => '্র্য', + 'i¨' => 'র‌্য', + '³«' => 'ক্ত্র', + 'óª' => 'ষ্ট্র', + 'ó¨' => 'ষ্ট্য', + '®‹' => 'ষ্ক', + 'k©' => 'র্শ', + 'é¨' => 'ল্ক্য', + '±ª' => 'ক্ট্র', + 'kœ' => 'শ্ন', + 'K¡' => 'ক্ব', + 'k¨' => 'শ্য', + 'k¥' => 'শ্ম', + 'k¦' => 'শ্ব', + 'n©' => 'র্হ', + 'k­' => 'শ্ল', + 'j¥' => 'ল্ম', + 'j­' => 'ল্ল', + 'j¨' => 'ল্য', + '·' => 'ক্স', + '¸' => 'গু', + 'Ã' => 'ঞ্ছ', + '¼' => 'ঙ্ক', + '½' => 'ঙ্গ', + '¾' => 'জ্জ', + 'À' => 'জ্ঝ', + '¶' => 'ক্ষ', + 'B' => 'ই', + 'Á' => 'জ্ঞ', + 'Â' => 'ঞ্চ', + 'ý' => 'হ্ন', + 'Þ' => 'প্ট', + 'Û' => 'ন্ড', + 'Ø' => 'দ্ব', + '²' => 'ক্ষ্ম', + 'Ù' => 'দ্ম', + 'Í' => 'ত্ম', + 'õ' => 'ষ্ফ', + 'Å' => 'ঞ্ঝ', + 'Î' => 'ত্র', + 'Ï' => 'দ্দ', + '×' => 'দ্ধ', + 'Ú' => 'ন্ঠ', + 'µ' => 'ক্র', + 'Æ' => 'ট্ট', + 'Ä' => 'ঞ্জ', + 'Ü' => 'ন্ধ', + '»' => 'গ্ধ', + '³' => 'ক্ত', + '´' => 'ক্ম', + 'ò' => 'ষ্ণ', + 'ç' => 'ম্ফ', + 'ö' => 'স্খ', + 'â' => 'ব্জ', + 'Ð' => 'ণ্ড', + 'Ó' => '”', + 'ð' => 'শ্চ', + 'í' => 'ল্প', + 'ì' => 'ল্ড', + 'ë' => 'ল্ট', + 'ê' => 'ল্গ', + 'é' => 'ল্ক', + '±' => 'ক্ট', + 'ñ' => 'শ্ছ', + 'Ê' => 'ণ্ড', + 'å' => 'ভ্র', + 'ä' => 'ব্ধ', + 'ã' => 'ব্দ', + 'á' => 'প্স', + '÷' => 'স্ট', + 'u' => 'ঁ', + 'ø' => 'স্ন', + 'ù' => 'স্ফ', + 'þ' => 'হ্ম', + 'ó' => 'ষ্ট', + 'û' => 'হু', + 'ü' => 'হৃ', + 's' => 'ং', + 'à' => 'প্প', + 't' => 'ঃ', + 'A' => 'অ', + 'ô' => 'ষ্ঠ', + 'ï' => 'শু', + 'ß' => 'প্ত', + 'æ' => 'ম্ন', + 'Ë' => 'ত্ত', + 'y' => 'ু', + 'É' => 'ণ্ঠ', + 'p' => 'ঢ়', + '‚' => 'ূ', + '„' => 'ৃ', + 'ৄ' => 'ৄ', + 'Š' => 'ৗ', + 'r' => 'ৎ', + 'o' => 'ড়', + 'q' => 'য়', + 'V' => 'ঠ', + 'ৠ' => 'ৠ', + '0' => '০', + '2' => '২', + '…' => 'ৃ', + '3' => '৩', + '5' => '৫', + '6' => '৬', + '1' => '১', + 'i' => 'র', + '8' => '৮', + 'M' => 'গ', + 'L' => 'খ', + 'I' => 'ও', + 'N' => 'ঘ', + 'S' => 'ঝ', + 'H' => 'ঐ', + 'U' => 'ট', + 'ঌ' => 'ঌ', + 'G' => 'এ', + 'P' => 'চ', + 'Q' => 'ছ', + 'F' => 'ঋ', + 'J' => 'ঔ', + 'T' => 'ঞ', + 'R' => 'জ', + 'K' => 'ক', + 'O' => 'ঙ', + '7' => '৭', + '9' => '৯', + 'È' => 'ণ্ট', + 'ঽ' => 'ঽ', + 'j' => 'ল', + 'k' => 'শ', + 'l' => 'ষ', + 'm' => 'স', + 'n' => 'হ', + '়' => '়', + 'v' => 'া', + 'h' => 'য', + 'x' => 'ী', + 'E' => 'ঊ', + '°' => 'ক্ক', + 'C' => 'ঈ', + 'Ì' => 'ত্থ', + 'Ç' => 'ড্ড', + 'ÿ' => 'ড়্গ', + 'D' => 'উ', + 'g' => 'ম', + '|' => '।', + 'X' => 'ঢ', + 'Ô' => '‘', + 'Õ' => '’', + 'Ò' => '“', + '~' => 'ূ', + 'z' => 'ু', + 'W' => 'ড', + 'f' => 'ভ', + 'Y' => 'ণ', + 'e' => 'ব', + 'Z' => 'ত', + '_' => 'থ', + '`' => 'দ', + 'a' => 'ধ', + 'b' => 'ন', + 'c' => 'প', + 'd' => 'ফ', + '4' => '৪', + ]; + } + + /** + * Get list of kars for Avro + * + * @return string + */ + public static function getAvroKars() + { + return "(‡|†|w|ˆ)(ক্ক|ক্ট|ক্ট্র|ক্ত|ক্ত্র|ক্ব|´|ক্য|ক্র|ক্ল|ক্ষ|ক্ষè|ক্ষ¡|ক্ষ্ম|ক্ষ্ম্য|ক্ষ্য|ক্স|খ্য|খ্র|গ্ণ|গ্ধ|গ্ধ্য|গ্ধ্র|গ্ন|গ্ন্য|গ¦|গ্ম|গ্য|গ্র|র্গ্য|গ্ল|ঘœ|ঘ্য|ঘ্র|ঙ্ক|ঙ্ক্ত|ঙ্ক্য|ক্সক্ষ|ঙ্খ|ঙ্গ|ঙ্গ্য|ঙ্ঘ|ঙ্ঘ্য|ঙ্ঘ্র|ক্সম|চ্চ|চ্ছ|চ্ছ্ব|চ্ছ্র|চ্ঞ|”¡|চ্য|জ্জ|জ্জ্ব|জ্ঝ|জ্ঞ|জ্ব|জ্য|জ্র|ঞ্চ|ঞ্ছ|ঞ্জ|ঞ্ঝ|ট্ট|ট্ব|ট্ম|ট্য|ট্র|ড্ড|ড¡|ড্য|ড্র|ক্ষ|ঢ্য|ঢ্র|ণ্ট|ণ্ঠ|ণ্ঠ্য|ণ্ড|ণ্ড্য|ণ্ড্র|ণঢ|ণè|ণ¡|ণ¥|ণ্য|ৎক|ত্ত|ত্ত্ব|ত্ত্য|ত্থ|তœ|ত্ব|Í|Í্য|ত্য|ত্র|র্ত্য|ৎল|ৎস|থ্ব|থ্য|থ্র|দ্গ|™ঘ|দ্দ|দ্দ¡|দ্ধ|দ্ব|দ্ভ|™£|দ্ম|দ্য|দ্র|র্দ্য|ধœ|ধ্ব|ধ্ম|ধ্য|ধ্র|ন্ট|ন্ট্র|ন্ঠ|ন্ড|ন্ড্র|ন্ত|ন্ত্ব|ন্ত্য|ন্ত্র|র্ন্ত্য|ন্থ|ন্থ্র|ন্দ|ন্দ্য|ন্দ্ব|ন্দ্র|ন্ধ|ন্ধ্য|ন্ধ্র|ন্ন|ন্ব|ন্ম|ন্য|প্ট|প্ত|প্ন|প্প|প্য|প্র|র্প্য|প্ল|প্স|ফ্র|ফ্ল|ব্জ|ব্দ|ব্ধ|ব্ব|ব্য|ব্র|ব্ল|ভ¡|ভ্য|ভ্র|ু|¤প|ম্প্র|ম্ফ|ম্ব|ম্ব্র|ম্ভ|ম্ভ্র|ম্ম|ম্য|ম্র|¤¬|য্য|র্ক|র্ক্য|র্গ্য|র্ঘ্য|র্চ্য|র্জ্য|র্ণ্য|র্ত্য|র্থ্য|র্ব্য|র্ম্য|র্শ্য|র্ষ্য|র্হ্য|র্খ|র্গ|র্গ্র|র্ঘ|র্চ|র্ছ|র্জ|র্ঝ|র্ট|র্ড|র্ণ|র্ত|র্ত্র|র্থ|র্দ|র্দ্ব|র্দ্র|র্ধ|র্ধ্ব|র্ন|র্প|র্ফ|র্ভ|র্ম|র্য|র্ল|র্শ|র্শ্ব|র্ষ|র্স|র্হ|র্ঢ্য|ল্ক|ল্ক্য|ল্গ|ল্ট|ল্ড|ল্প|ল্ফ|ল¡|ল্ভ|ল্ম|ল্য|ল্ল|শ্চ|ñ|শ্ন|শ্ব|শ্ম|শ্য|শ্র|শ্ল|ষ্ক|ষ্ক্র|ষ্ট|ষ্ট্য|ষ্ট্র|ষ্ঠ|ষ্ঠ্য|ষ্ণ|®প|®প্র|ষ্ফ|®^|ষ্ম|ষ্য|স্ক্র|স্ক|স্খ|স্ট|স্ট্র|স্ত|স্ত¡|স্ত্য|স্ত্র|স্থ|স্থ্য|ø|¯প|¯প্র|¯প্ল|স্ফ|স্ব|স্ম|স্য|স্র|¯¬|হৃ|হ্ন|হ্ব|হ্ম|হ্য|হ্র|হ|ঋ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ|ঞ|ট|ঠ|ড|ঢ|ণ|ত|থ|দ|ধ|ন|প|ফ|ব|ভ|ম|য|র|ল|শ|ষ|স|হ|ড়|ঢ়|য়)"; + } +} diff --git a/src/Translator/BijoyToAvro/Translator.php b/src/Translator/BijoyToAvro/Translator.php index e106ea8..04f207f 100644 --- a/src/Translator/BijoyToAvro/Translator.php +++ b/src/Translator/BijoyToAvro/Translator.php @@ -3,7 +3,8 @@ namespace MirazMac\BanglaString\Translator\BijoyToAvro; use MirazMac\BanglaString\Contracts\TranslatorContract; -use MirazMac\BanglaString\Translator\AvroToBijoy\CharacterMap; +use MirazMac\BanglaString\Translator\AvroToBijoy\KeyMapping; +use MirazMac\BanglaString\Translator\BijoyToAvro\CharacterMap; /** * Translates Bengali text written in Bijoy ANSI to Avro Unicode @@ -26,13 +27,12 @@ public function translate($string) // Import character maps $charmap = CharacterMap::getLetterCharMap(); $kars = CharacterMap::getAvroKars(); - - $string = str_replace(['…', '~', 'z'], ['ৃ', 'ূ', 'ু'], $string); - - + $def = $string; // Pre-replacement - All the letters, numbers and juktabornas.. - $string = str_replace(array_values($charmap), array_keys($charmap), $string); + $string = str_replace(array_keys($charmap), array_values($charmap), $string); + // + // Build the regex pattern for post replacement @@ -57,6 +57,8 @@ protected function translateKarsCallback($match = []) case '†': return $match[2] . 'ে'; // A~ kar + case 'ˆ': + return $match[2] . 'ৈ'; // A~ kar case '‡': return $match[2] . 'ে'; // A~ Kar ( Bijoy has 2 of 'em ) From ae2844920e3d4715d97e6be4b5290d29d3618923 Mon Sep 17 00:00:00 2001 From: Miraz Mac Date: Tue, 19 Oct 2021 13:04:05 +0600 Subject: [PATCH 12/12] changed comments --- src/BanglaString.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/BanglaString.php b/src/BanglaString.php index 72b68c4..623f0b8 100644 --- a/src/BanglaString.php +++ b/src/BanglaString.php @@ -28,6 +28,11 @@ class BanglaString */ protected $string; + /** + * Translator instances + * + * @var array + */ protected $translators = []; /** @@ -49,13 +54,20 @@ public function __construct($string) * This is identical as self::__construct(), but the difference is it allows to call the method statically * * @param string $string The text to be converted - * @return object + * @return self */ public static function translate($string) { return new self($string); } + /** + * Gets the translator. + * + * @param string $name The name + * + * @return \MirazMac\BanglaString\Contracts\TranslatorContract + */ protected function getTranslator($name) { if (!isset($this->translators[$name])) {