当前位置: 首页>>代码示例>>Python>>正文


Python StringElem.flatten方法代码示例

本文整理汇总了Python中translate.storage.placeables.StringElem.flatten方法的典型用法代码示例。如果您正苦于以下问题:Python StringElem.flatten方法的具体用法?Python StringElem.flatten怎么用?Python StringElem.flatten使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在translate.storage.placeables.StringElem的用法示例。


在下文中一共展示了StringElem.flatten方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: parse

# 需要导入模块: from translate.storage.placeables import StringElem [as 别名]
# 或者: from translate.storage.placeables.StringElem import flatten [as 别名]
def parse(tree, parse_funcs):
    """Parse placeables from the given string or sub-tree by using the
    parsing functions provided.

    The output of this function is **heavily** dependent on the order of the
    parsing functions. This is because of the algorithm used.

    An over-simplification of the algorithm: the leaves in the ``StringElem``
    tree are expanded to the output of the first parsing function in
    ``parse_funcs``. The next level of recursion is then started on the new
    set of leaves with the used parsing function removed from
    ``parse_funcs``.

    :type  tree: unicode|StringElem
    :param tree: The string or string element sub-tree to parse.
    :type  parse_funcs: A list of parsing functions. It must take exactly
                        one argument (a ``unicode`` string to parse) and
                        return a list of ``StringElem``s which, together,
                        form the original string. If nothing could be
                        parsed, it should return ``None``.
    """
    if isinstance(tree, unicode):
        tree = StringElem(tree)
    if not parse_funcs:
        return tree

    parse_func = parse_funcs[0]

    for leaf in tree.flatten():
        # FIXME: we might rather want to test for editability, but for now this
        # works better
        if not leaf.istranslatable:
            continue

        unileaf = unicode(leaf)
        if not unileaf:
            continue

        subleaves = parse_func(unileaf)
        if subleaves is not None:
            if len(subleaves) == 1 and isinstance(subleaves[0], type(leaf)) and leaf == subleaves[0]:
                pass
            elif isinstance(leaf, unicode):
                parent = tree.get_parent_elem(leaf)
                if parent is not None:
                    if len(parent.sub) == 1:
                        parent.sub = subleaves
                        leaf = parent
                    else:
                        leafindex = parent.sub.index(leaf)
                        parent.sub[leafindex] = StringElem(subleaves)
                        leaf = parent.sub[leafindex]
            else:
                leaf.sub = subleaves

        parse(leaf, parse_funcs[1:])

        if isinstance(leaf, StringElem):
            leaf.prune()
    return tree
开发者ID:riverspirit,项目名称:kuma,代码行数:62,代码来源:parse.py

示例2: _rewrite_prepend_append

# 需要导入模块: from translate.storage.placeables import StringElem [as 别名]
# 或者: from translate.storage.placeables.StringElem import flatten [as 别名]
 def _rewrite_prepend_append(self, string, prepend, append=None):
     if append is None:
         append = prepend
     if not isinstance(string, StringElem):
         string = StringElem(string)
     string.sub.insert(0, prepend)
     if six.text_type(string).endswith(u'\n'):
         # Try and remove the last character from the tree
         try:
             lastnode = string.flatten()[-1]
             if isinstance(lastnode.sub[-1], six.text_type):
                 lastnode.sub[-1] = lastnode.sub[-1].rstrip(u'\n')
         except IndexError:
             pass
         string.sub.append(append + u'\n')
     else:
         string.sub.append(append)
     return string
开发者ID:dwaynebailey,项目名称:translate,代码行数:20,代码来源:podebug.py


注:本文中的translate.storage.placeables.StringElem.flatten方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。