Repository: tsroten/dragonmapper

Issue:
Pinyin/Zhuyin/IPA syllable `o` is missing.
```python
>>> print(transcriptions.pinyin_to_zhuyin(ó))
Traceback (most recent call last):
  File "D:\OneDrive\My Programs\zhuyin converter\Convert2BopomofoPunctuation.py", line 100, in <module>
    print(printBopomofo(eachLine)+"\n"*3)
  File "D:\OneDrive\My Programs\zhuyin converter\Convert2BopomofoPunctuation.py", line 42, in printBopomofo
    bopomofoDictionary=makeToneDictionary(hanzistring2)
  File "D:\OneDrive\My Programs\zhuyin converter\Convert2BopomofoPunctuation.py", line 35, in makeToneDictionary
    bopomofoList=listBopomofo(hanzi)
  File "D:\OneDrive\My Programs\zhuyin converter\Convert2BopomofoPunctuation.py", line 11, in listBopomofo
    print(transcriptions.pinyin_to_zhuyin(ó))
NameError: name 'ó' is not defined
```

also the following string returns an error
```
 (1 4 事情是這樣的 ， 父親讀到也看到許多偉大而奇妙的事時 ， 他向主高呼許多事 ， 諸如 ： 哦 ， 主神全能者 ， 您的事工多麼偉大而奇妙 ！ 您的寶座在高天之上 ， 您的大能、良善和慈悲廣被世上全民 ， 而且 ， 由於您的慈悲 ， 您不會讓歸向您的人滅亡 ！ ) 
```

```python
>>> pinyin=hanzi.to_zhuyin(hanzistring)
Traceback (most recent call last):
  File "C:\Users\Kei\AppData\Local\Programs\Python\Python35\lib\site-packages\dragonmapper\transcriptions.py", line 227, in pinyin_syllable_to_zhuyin
    zhuyin_syllable = _PINYIN_MAP[pinyin_syllable.lower()]['Zhuyin']
KeyError: 'o'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\OneDrive\My Programs\zhuyin converter\Convert2BopomofoPunctuation.py", line 100, in <module>
    print(printBopomofo(eachLine)+"\n"*3)
  File "D:\OneDrive\My Programs\zhuyin converter\Convert2BopomofoPunctuation.py", line 42, in printBopomofo
    bopomofoDictionary=makeToneDictionary(hanzistring2)
  File "D:\OneDrive\My Programs\zhuyin converter\Convert2BopomofoPunctuation.py", line 35, in makeToneDictionary
    bopomofoList=listBopomofo(hanzi)
  File "D:\OneDrive\My Programs\zhuyin converter\Convert2BopomofoPunctuation.py", line 12, in listBopomofo
    pinyin=hanzi.to_zhuyin(hanzistring)
  File "C:\Users\Kei\AppData\Local\Programs\Python\Python35\lib\site-packages\dragonmapper\hanzi.py", line 190, in to_zhuyin
    zhuyin = pinyin_to_zhuyin(numbered_pinyin)
  File "C:\Users\Kei\AppData\Local\Programs\Python\Python35\lib\site-packages\dragonmapper\transcriptions.py", line 365, in pinyin_to_zhuyin
    remove_apostrophes=True, separate_syllables=True)
  File "C:\Users\Kei\AppData\Local\Programs\Python\Python35\lib\site-packages\dragonmapper\transcriptions.py", line 341, in _convert
    new += syllable_function(match.group())
  File "C:\Users\Kei\AppData\Local\Programs\Python\Python35\lib\site-packages\dragonmapper\transcriptions.py", line 229, in pinyin_syllable_to_zhuyin
    raise ValueError('Not a valid syllable: %s' % s)
ValueError: Not a valid syllable: o2
```

Comments:

Patch:
diff --git a/dragonmapper/data/transcriptions.csv b/dragonmapper/data/transcriptions.csv
index 6447017..072be78 100644
--- a/dragonmapper/data/transcriptions.csv
+++ b/dragonmapper/data/transcriptions.csv
@@ -234,6 +234,7 @@ nun,ㄋㄨㄣ,nwən
 nuo,ㄋㄨㄛ,nwɔ
 nü,ㄋㄩ,ny
 nüe,ㄋㄩㄝ,nɥœ
+o,ㄛ,ɔ
 ou,ㄡ,oʊ
 pa,ㄆㄚ,pʰa
 pai,ㄆㄞ,pʰaɪ


Test patch:
diff --git a/dragonmapper/tests/test-transcriptions.py b/dragonmapper/tests/test-transcriptions.py
index a4d5e14..04a5733 100644
--- a/dragonmapper/tests/test-transcriptions.py
+++ b/dragonmapper/tests/test-transcriptions.py
@@ -173,3 +173,9 @@ class TestConvertFunctions(unittest.TestCase):
         numbered = 'Ao4di4li4'
 
         self.assertEqual(numbered, trans.accented_to_numbered(accented))
+
+    def test_issue_23(self):
+        pinyin = 'ó'
+        zhuyin = 'ㄛˊ'
+
+        self.assertEqual(zhuyin, trans.pinyin_to_zhuyin(pinyin))