def accept(self, visitor, *args, **kwargs): """Accepts a visitor from Visitor Pattern. Args: visitor: a visitor with .visit_CLASSNAME(type_reference_node) method where CLASSNAME is the name of a visited class. *args: additional positional arguments to be passed to the visitor call. **kwargs: additional keyword arguments to be passed to the visitor call. Returns: A value returned by the visitor. """ lower_underscore_class_name = string_util.camel_case_to_lower_underscore( self.__class__.__name__, ) visitor_method_name = 'visit_' + lower_underscore_class_name visitor_method = getattr(visitor, visitor_method_name) return visitor_method(self, *args, **kwargs)
def test_with_upper_camel_case_with_additional_underscore(self): actual = string_util.camel_case_to_lower_underscore('Upper_CamelCase') self.assertEqual(actual, 'upper_camel_case')
def test_with_empty_string(self): actual = string_util.camel_case_to_lower_underscore('') self.assertEqual(actual, '')
def test_with_capitals_ony(self): actual = string_util.camel_case_to_lower_underscore('UPPER') self.assertEqual(actual, 'upper')
def test_with_digits_and_a_few_capitals_in_a_row(self): actual = string_util.camel_case_to_lower_underscore('Upper33CAMELCase') self.assertEqual(actual, 'upper33_camel_case')
def test_with_digits_at_the_end(self): actual = string_util.camel_case_to_lower_underscore('UpperCamelCase33') self.assertEqual(actual, 'upper_camel_case33')
def test_with_digits_at_the_beginning(self): actual = string_util.camel_case_to_lower_underscore('24UpperCamelCase') self.assertEqual(actual, '24_upper_camel_case')
def test_with_digits_only(self): actual = string_util.camel_case_to_lower_underscore('42') self.assertEqual(actual, '42')
def test_with_digits_inside(self): actual = string_util.camel_case_to_lower_underscore('UpperCamel42Case') self.assertEqual(actual, 'upper_camel42_case')
def test_with_lower_camel_case_with_addidtional_underscore_after_one_letter( self, ): actual = string_util.camel_case_to_lower_underscore('l_CamelCase') self.assertEqual(actual, 'l_camel_case')
def test_with_lower_camel_case_with_initial_underscore(self): actual = string_util.camel_case_to_lower_underscore('_lowerCamelCase') self.assertEqual(actual, '_lower_camel_case')
def test_with_a_few_capitals_in_a_row_at_the_beginning(self): actual = string_util.camel_case_to_lower_underscore('UPPERCamelCase') self.assertEqual(actual, 'upper_camel_case')
def test_with_a_few_capitals_in_a_row_inside(self): actual = string_util.camel_case_to_lower_underscore('UpperCAMELCase') self.assertEqual(actual, 'upper_camel_case')
def test_with_a_few_capitals_in_a_row_at_the_end(self): actual = string_util.camel_case_to_lower_underscore('UpperCamelCASE') self.assertEqual(actual, 'upper_camel_case')