當前位置: 首頁>>代碼示例>>Python>>正文


Python unicodedata.bidirectional方法代碼示例

本文整理匯總了Python中unicodedata.bidirectional方法的典型用法代碼示例。如果您正苦於以下問題:Python unicodedata.bidirectional方法的具體用法?Python unicodedata.bidirectional怎麽用?Python unicodedata.bidirectional使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在unicodedata的用法示例。


在下文中一共展示了unicodedata.bidirectional方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: test_ipy2_gh357

# 需要導入模塊: import unicodedata [as 別名]
# 或者: from unicodedata import bidirectional [as 別名]
def test_ipy2_gh357(self):
        """https://github.com/IronLanguages/ironpython2/issues/357"""

        import unicodedata

        if is_cli:
            self.assertEqual(unicodedata.name(u'\u4e2d'), '<CJK IDEOGRAPH, FIRST>..<CJK IDEOGRAPH, LAST>')
        else:
            self.assertEqual(unicodedata.name(u'\u4e2d'), 'CJK UNIFIED IDEOGRAPH-4E2D')

        self.assertRaises(ValueError, unicodedata.decimal, u'\u4e2d')
        self.assertEqual(unicodedata.decimal(u'\u4e2d', 0), 0)
        self.assertRaises(ValueError, unicodedata.digit, u'\u4e2d')
        self.assertEqual(unicodedata.digit(u'\u4e2d', 0), 0)
        self.assertRaises(ValueError, unicodedata.numeric, u'\u4e2d')
        self.assertEqual(unicodedata.numeric(u'\u4e2d', 0), 0)
        self.assertEqual(unicodedata.category(u'\u4e2d'), 'Lo')
        self.assertEqual(unicodedata.bidirectional(u'\u4e2d'), 'L')
        self.assertEqual(unicodedata.combining(u'\u4e2d'), 0)
        self.assertEqual(unicodedata.east_asian_width(u'\u4e2d'), 'W')
        self.assertEqual(unicodedata.mirrored(u'\u4e2d'), 0)
        self.assertEqual(unicodedata.decomposition(u'\u4e2d'), '') 
開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:24,代碼來源:test_regressions.py

示例2: lookup

# 需要導入模塊: import unicodedata [as 別名]
# 或者: from unicodedata import bidirectional [as 別名]
def lookup(self):
        # look up all the external references we need.
        if self.uniNumber is None:
            return
        try:
            self.uniLetter = unicodeToChar(self.uniNumber)
        except:
            # print("GlyphName value error for %04X" % self.uniNumber)
            return
        if self.uniNumber in mathUniNumbers:
            self.isMath = True
        try:
            self.uniName = unicodelist.get(self.uniNumber)
            if self.uniName is None:
                self.uniNameProcessed = ""
            else:
                self.uniNameProcessed = self.uniName
            # NOTE: this is still a dependency on the unicodedata module.
            # Would be nice to extract this data directly from the unicode data
            # but the algotirhm is ot trivial..
            self.bidiType = unicodedata.bidirectional(self.uniLetter)
        except ValueError:
            self.uniName = None
            self.uniNameProcessed = ""
            self.uniLetter = None
            self.bidiType = None
        except:
            import traceback
            traceback.print_exc()
        self.uniRangeName = getRangeName(self.uniNumber)

    # these can be called by a range processor to set the status of a name. 
開發者ID:LettError,項目名稱:glyphNameFormatter,代碼行數:34,代碼來源:__init__.py

示例3: find_bidi

# 需要導入模塊: import unicodedata [as 別名]
# 或者: from unicodedata import bidirectional [as 別名]
def find_bidi(self, el):
        """Get directionality from element text."""

        for node in self.get_children(el, tags=False):

            # Analyze child text nodes
            if self.is_tag(node):

                # Avoid analyzing certain elements specified in the specification.
                direction = DIR_MAP.get(util.lower(self.get_attribute_by_name(node, 'dir', '')), None)
                if (
                    self.get_tag(node) in ('bdi', 'script', 'style', 'textarea', 'iframe') or
                    not self.is_html_tag(node) or
                    direction is not None
                ):
                    continue  # pragma: no cover

                # Check directionality of this node's text
                value = self.find_bidi(node)
                if value is not None:
                    return value

                # Direction could not be determined
                continue  # pragma: no cover

            # Skip `doctype` comments, etc.
            if self.is_special_string(node):
                continue

            # Analyze text nodes for directionality.
            for c in node:
                bidi = unicodedata.bidirectional(c)
                if bidi in ('AL', 'R', 'L'):
                    return ct.SEL_DIR_LTR if bidi == 'L' else ct.SEL_DIR_RTL
        return None 
開發者ID:facelessuser,項目名稱:soupsieve,代碼行數:37,代碼來源:css_match.py

示例4: __print_Unicode_info

# 需要導入模塊: import unicodedata [as 別名]
# 或者: from unicodedata import bidirectional [as 別名]
def __print_Unicode_info(self, char, short):
        name = unicodedata.name(char, "UNKNOWN")
        decCodepoint = ord(char)
        hexCodepoint = hex(decCodepoint)
        lower = char.lower()
        upper = char.upper()
        category = unicodedata.category(char)
        bidirectional = unicodedata.bidirectional(char)
        mirrored = True if (unicodedata.mirrored(char) == 1) else False
        nfc = unicodedata.normalize("NFC", char)
        nfd = unicodedata.normalize("NFD", char)
        if (short):
            print char + "\t" + name + " (U+" + str(hexCodepoint).upper().replace("0X", "") + ")"
        else:
            print "Name          " + name 
            print "Character     " + char 
            print "Dec Codepoint " + str(decCodepoint)
            print "Hex Codepoint " + str(hexCodepoint)
            print "Lowercase     " + lower
            print "Uppercase     " + upper
            print "Category      " + category
            print "Bidirectional " + bidirectional
            print "Mirrored      " + str(mirrored)
            print "NFC           " + nfc
            print "NFD           " + nfd
            print "============="

    # helper: perform a lookup for the given query 
開發者ID:pettarin,項目名稱:glyphIgo,代碼行數:30,代碼來源:glyphIgo.py

示例5: find_bidi

# 需要導入模塊: import unicodedata [as 別名]
# 或者: from unicodedata import bidirectional [as 別名]
def find_bidi(self, el):
        """Get directionality from element text."""

        for node in self.get_children(el, tags=False):

            # Analyze child text nodes
            if self.is_tag(node):

                # Avoid analyzing certain elements specified in the specification.
                direction = DIR_MAP.get(util.lower(self.get_attribute_by_name(node, 'dir', '')), None)
                if (
                    self.get_tag(node) in ('bdi', 'script', 'style', 'textarea') or
                    direction is not None
                ):
                    continue  # pragma: no cover

                # Check directionality of this node's text
                value = self.find_bidi(node)
                if value is not None:
                    return value

                # Direction could not be determined
                continue  # pragma: no cover

            # Skip `doctype` comments, etc.
            if self.is_special_string(node):
                continue

            # Analyze text nodes for directionality.
            for c in node:
                bidi = unicodedata.bidirectional(c)
                if bidi in ('AL', 'R', 'L'):
                    return ct.SEL_DIR_LTR if bidi == 'L' else ct.SEL_DIR_RTL
        return None 
開發者ID:tvaddonsco,項目名稱:plugin.git.browser,代碼行數:36,代碼來源:css_match.py

示例6: check_bidi

# 需要導入模塊: import unicodedata [as 別名]
# 或者: from unicodedata import bidirectional [as 別名]
def check_bidi(label, check_ltr=False):

    # Bidi rules should only be applied if string contains RTL characters
    bidi_label = False
    for (idx, cp) in enumerate(label, 1):
        direction = unicodedata.bidirectional(cp)
        if direction == '':
            # String likely comes from a newer version of Unicode
            raise IDNABidiError('Unknown directionality in label {0} at position {1}'.format(repr(label), idx))
        if direction in ['R', 'AL', 'AN']:
            bidi_label = True
    if not bidi_label and not check_ltr:
        return True

    # Bidi rule 1
    direction = unicodedata.bidirectional(label[0])
    if direction in ['R', 'AL']:
        rtl = True
    elif direction == 'L':
        rtl = False
    else:
        raise IDNABidiError('First codepoint in label {0} must be directionality L, R or AL'.format(repr(label)))

    valid_ending = False
    number_type = False
    for (idx, cp) in enumerate(label, 1):
        direction = unicodedata.bidirectional(cp)

        if rtl:
            # Bidi rule 2
            if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
                raise IDNABidiError('Invalid direction for codepoint at position {0} in a right-to-left label'.format(idx))
            # Bidi rule 3
            if direction in ['R', 'AL', 'EN', 'AN']:
                valid_ending = True
            elif direction != 'NSM':
                valid_ending = False
            # Bidi rule 4
            if direction in ['AN', 'EN']:
                if not number_type:
                    number_type = direction
                else:
                    if number_type != direction:
                        raise IDNABidiError('Can not mix numeral types in a right-to-left label')
        else:
            # Bidi rule 5
            if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
                raise IDNABidiError('Invalid direction for codepoint at position {0} in a left-to-right label'.format(idx))
            # Bidi rule 6
            if direction in ['L', 'EN']:
                valid_ending = True
            elif direction != 'NSM':
                valid_ending = False

    if not valid_ending:
        raise IDNABidiError('Label ends with illegal codepoint directionality')

    return True 
開發者ID:danielecook,項目名稱:gist-alfred,代碼行數:60,代碼來源:core.py

示例7: check_bidi

# 需要導入模塊: import unicodedata [as 別名]
# 或者: from unicodedata import bidirectional [as 別名]
def check_bidi(label, check_ltr=False):

    # Bidi rules should only be applied if string contains RTL characters
    bidi_label = False
    for (idx, cp) in enumerate(label, 1):
        direction = unicodedata.bidirectional(cp)
        if direction == '':
            # String likely comes from a newer version of Unicode
            raise IDNABidiError('Unknown directionality in label {0} at position {1}'.format(repr(label), idx))
        if direction in ['R', 'AL', 'AN']:
            bidi_label = True
            break
    if not bidi_label and not check_ltr:
        return True

    # Bidi rule 1
    direction = unicodedata.bidirectional(label[0])
    if direction in ['R', 'AL']:
        rtl = True
    elif direction == 'L':
        rtl = False
    else:
        raise IDNABidiError('First codepoint in label {0} must be directionality L, R or AL'.format(repr(label)))

    valid_ending = False
    number_type = False
    for (idx, cp) in enumerate(label, 1):
        direction = unicodedata.bidirectional(cp)

        if rtl:
            # Bidi rule 2
            if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
                raise IDNABidiError('Invalid direction for codepoint at position {0} in a right-to-left label'.format(idx))
            # Bidi rule 3
            if direction in ['R', 'AL', 'EN', 'AN']:
                valid_ending = True
            elif direction != 'NSM':
                valid_ending = False
            # Bidi rule 4
            if direction in ['AN', 'EN']:
                if not number_type:
                    number_type = direction
                else:
                    if number_type != direction:
                        raise IDNABidiError('Can not mix numeral types in a right-to-left label')
        else:
            # Bidi rule 5
            if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
                raise IDNABidiError('Invalid direction for codepoint at position {0} in a left-to-right label'.format(idx))
            # Bidi rule 6
            if direction in ['L', 'EN']:
                valid_ending = True
            elif direction != 'NSM':
                valid_ending = False

    if not valid_ending:
        raise IDNABidiError('Label ends with illegal codepoint directionality')

    return True 
開發者ID:getavalon,項目名稱:core,代碼行數:61,代碼來源:core.py


注:本文中的unicodedata.bidirectional方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。