Example #1
0
 def parse(self, name, class_name):
     '''
     Parse a name into a tuple of "words".
     
     For example, under default settings, an input of
     '_on_navigation_panel__left_down' would result in an output of
     `('navigation_panel', 'left_down')`.
     
     Returns `None` if there is no match.
     '''
     unmangled_name = name_mangling.unmangle_attribute_name_if_needed(
         name,
         class_name
     )
     n_preceding_underscores = string_tools.get_n_identical_edge_characters(
         unmangled_name,
         character='_',
         head=True
     )
     if n_preceding_underscores not in \
        self.n_preceding_underscores_possibilities:
         return None
     cleaned_name = unmangled_name[n_preceding_underscores:]
     for case_style in self.case_style_possibilites:
         result = case_style.parse(cleaned_name)
         if result is not None:
             return result
     else:
         return None
def test():
    assert unmangle_attribute_name_if_needed('_Cat__meow', 'Cat') == '__meow'
    assert unmangle_attribute_name_if_needed('_Cat__meow',
                                             'Dog') == '_Cat__meow'
    assert unmangle_attribute_name_if_needed('_Cat__meow', '__Cat') == '__meow'
    assert unmangle_attribute_name_if_needed('_Cat__meow',
                                             '__Cat_') == '_Cat__meow'
    assert unmangle_attribute_name_if_needed('_Cat___meow',
                                             '__Cat_') == '__meow'
    assert unmangle_attribute_name_if_needed('_Cat___meow',
                                             '_Cat') == '___meow'
    assert unmangle_attribute_name_if_needed('_Cat___meow',
                                             '_Cat') == '___meow'
    assert unmangle_attribute_name_if_needed('_Cat___meow_',
                                             '_Cat') == '___meow_'
    assert unmangle_attribute_name_if_needed('_Cat___meow__',
                                             '_Cat') == '_Cat___meow__'
def test():
    assert unmangle_attribute_name_if_needed('_Cat__meow',
                                             'Cat') == '__meow'
    assert unmangle_attribute_name_if_needed('_Cat__meow',
                                             'Dog') == '_Cat__meow'
    assert unmangle_attribute_name_if_needed('_Cat__meow',
                                             '__Cat') == '__meow'
    assert unmangle_attribute_name_if_needed('_Cat__meow',
                                             '__Cat_') == '_Cat__meow'
    assert unmangle_attribute_name_if_needed('_Cat___meow',
                                             '__Cat_') == '__meow'
    assert unmangle_attribute_name_if_needed('_Cat___meow',
                                             '_Cat') == '___meow'
    assert unmangle_attribute_name_if_needed('_Cat___meow',
                                             '_Cat') == '___meow'
    assert unmangle_attribute_name_if_needed('_Cat___meow_',
                                             '_Cat') == '___meow_'
    assert unmangle_attribute_name_if_needed('_Cat___meow__',
                                             '_Cat') == '_Cat___meow__'
Example #4
0
    def parse(self, name, class_name):
        '''
        Parse a name into a tuple of "words".

        For example, under default settings, an input of
        '_on_navigation_panel__left_down' would result in an output of
        `('navigation_panel', 'left_down')`.

        Returns `None` if there is no match.
        '''
        unmangled_name = name_mangling.unmangle_attribute_name_if_needed(
            name, class_name)
        n_preceding_underscores = string_tools.get_n_identical_edge_characters(
            unmangled_name, character='_', head=True)
        if n_preceding_underscores not in \
           self.n_preceding_underscores_possibilities:
            return None
        cleaned_name = unmangled_name[n_preceding_underscores:]
        for case_style in self.case_style_possibilites:
            result = case_style.parse(cleaned_name)
            if result is not None:
                return result
        else:
            return None