def get_embedding_levels(text, storage, upper_is_rtl=False, debug=False):
    """Get the paragraph base embedding level and direction,
    set the storage to the array of chars"""

    prev_surrogate = False
    base_level = storage['base_level']

    # preset the storage's chars
    for _ch in text:
        if _IS_UCS2 and (_SURROGATE_MIN <= ord(_ch) <= _SURROGATE_MAX):
            prev_surrogate = _ch
            continue
        elif prev_surrogate:
            _ch = prev_surrogate + _ch
            prev_surrogate = False

        if upper_is_rtl and _ch.isupper():
            bidi_type = 'R'
        else:
            bidi_type = bidirectional(_ch)

        storage['chars'].append({
            'ch': _ch,
            'level': base_level,
            'type': bidi_type,
            'orig': bidi_type
        })
    if debug:
        debug_storage(storage, base_info=True)
def get_embedding_levels ( text , storage , upper_is_rtl = False , debug = False ) : prev_surrogate = False base_level = storage [ 'base_level' ] for _ch in text : if _IS_UCS2 and ( _SURROGATE_MIN <= ord ( _ch ) <= _SURROGATE_MAX ) : prev_surrogate = _ch continue elif prev_surrogate : _ch = prev_surrogate + _ch prev_surrogate = False if upper_is_rtl and _ch . isupper ( ) : bidi_type = 'R' else : bidi_type = bidirectional ( _ch ) storage [ 'chars' ] . append ( { 'ch' : _ch , 'level' : base_level , 'type' : bidi_type , 'orig' : bidi_type } ) if debug : debug_storage ( storage , base_info = True )
Get the paragraph base embedding level and direction,
    set the storage to the array of chars