import six


def to_camel_case_name(name):
    """
    Converts a string from snake_case to camelCase

    :param name: the string to convert
    :return: the name converted to camelCase

    >>> to_camel_case_name(22)
    22
    >>> to_camel_case_name("hello_world")
    'helloWorld'
    >>> to_camel_case_name("_hello_world")
    'helloWorld'
    >>> to_camel_case_name("__hello___world___")
    'helloWorld'
    >>> to_camel_case_name("hello")
    'hello'
    >>> to_camel_case_name("Hello_world")
    'helloWorld'
    >>> to_camel_case_name("one_two_three_four")
    'oneTwoThreeFour'
    >>> to_camel_case_name("oneTwoThreeFour")
    'oneTwoThreeFour'
    """

    def first_lower(s):
        return s[:1].lower() + s[1:]

    def first_upper(s):
        return s[:1].upper() + s[1:]

    if not isinstance(name, six.string_types):
        return name
    else:
        name = name.strip("_")
        pieces = name.split("_")
        return first_lower(pieces[0]) + "".join(first_upper(x) for x in pieces[1:])