ting

0.12.0last stable release 6 years ago
Complexity Score
Low
Open Issues
4
Dependent Projects
1
Weekly Downloadsglobal
18

License

  • GPL-3.0

    Downloads

    Readme

    Ting

    Ting can convert between various systems for phonetically writing Mandarin Chinese. It can also handle various representation of tones, so it can be used to convert pinyin with numbers to pinyin with tones.

    Hanyu Pinyin, Bopomofo, Wade-Giles, Tongyong Pinyin and International Phonetic Alphabet (IPA) are supported.

    INSTALL

    • gem install ting

    SYNOPSIS

    To parse your strings create a Reader object. Ting.reader() takes two parameters : the transliteration format, and the way that tones are represented.

    To some extent these can be mixed and matched.

    To generate pinyin/wade-giles/etc. create a Writer object. Use Ting.writer()

    Formats

    • :hanyu Hanyu Pinyin
    • :zhuyin Zhuyin Fuhao (a.k.a. Bopomofo)
    • :wadegiles Wade Giles
    • :ipa International Phonetic Alphabet
    • :tongyong Tongyong Pinyin

    Tones

    • :numbers Simply put a number after the syllable, easy to type
    • :accents Use diacritics, follows the Hanyu Pinyin rules, there needs to be at least one vowel to apply this to, not usable with IPA or Bopomofo
    • :supernum Superscript numerals, typically used for Wade-Giles
    • :marks Tone mark after the syllable, typically used for Bopomofo
    • :ipa IPA tone marks
    • :no_tones Use no tones

    Examples

    Parse Hanyu Pinyin

       require 'ting'
    
       reader = Ting.reader(:hanyu, :numbers)
       reader.( "wo3 ai4 ni3" )
        # => [<Ting::Syllable <initial=Empty, final=Uo, tone=3>>,
        #     <Ting::Syllable <initial=Empty, final=Ai, tone=4>>,
        #     <Ting::Syllable <initial=Ne, final=I, tone=3>>]
    

    Generate Bopomofo

       zhuyin = Ting.writer(:zhuyin, :marks)
       zhuyin.(reader.("wo3 ai4 ni3"))
       # => "ㄨㄛˇ ㄞˋ ㄋㄧˇ"
    

    Generate Wade-Giles

       wadegiles = Ting.writer(:wadegiles, :supernum)
       wadegiles.(reader.("qing2 kuang4 ru2 he2"))
       # => "ch`ing² k`uang⁴ ju² ho²"
    

    Generate IPA

       ipa = Ting.writer.new(:ipa, :ipa)
       ipa.(reader.("you3 peng2 zi4 yuan2 fang1 lai2"))
       # => "iou˧˩˧ pʰeŋ˧˥ ts˥˩ yɛn˧˥ faŋ˥˥ lai˧˥"
    

    Since this is such a common use case, a convenience method exists to add diacritics to pinyin.

       Ting.pretty_tones "wo3 ai4 ni3"
       # => "wǒ ài nǐ"
    

    Note that syllables need to be separated by spaces, feeding “peng2you3” to the parser does not work. The Ting.pretty_tones(string) method does handle these things a bit more gracefully.

    If you need to parse input that does not conform, consider using a regexp to scan for valid syllables, then feed the syllables to the parser one by one. Have a look at Ting.pretty_tones for an example of how to do this, but note that it does not support special cases like erhua (wanr2 = wan2 er) or non-standard Pinyin syllables like 嗯/“ń” or 呣/”ḿ” (which appear in the official Unicode data and some textbooks).

    ting_table

    The ting_table script will spit out a CSV table of all syllables and formats Ting knows about. Useful if you want to do conversion in other languages.

    REQUIREMENTS

    • none, Ting uses nothing but Ruby

    LICENSE

    Copyright (c) 2007-2017, Arne Brasseur. (http://www.arnebrasseur.net)

    Available as Free Software under the GPLv3 License, see LICENSE.txt for details

    Dependencies

    No runtime dependency information found for this package.

    CVE IssuesActive
    0
    Scorecards Score
    3.40
    Test Coverage
    No Data
    Follows Semver
    Yes
    Github Stars
    50
    Dependenciestotal
    3
    DependenciesOutdated
    2
    DependenciesDeprecated
    0
    Threat Modelling
    No
    Repo Audits
    No

    Learn how to distribute ting in your own private RubyGems registry

    gem install ting
    Processing...
    Done

    7 Releases

    RubyGems on Cloudsmith

    Getting started with RubyGems on Cloudsmith is fast and easy.