Mercurial > lbo > hg > async-google-apis
changeset 153:87e951988e86
generate: generate nicer scope names
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Tue, 27 Oct 2020 19:23:13 +0100 |
parents | 4074e0f33ca4 |
children | 6604947e0369 |
files | generate/generate.py |
diffstat | 1 files changed, 20 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/generate/generate.py Tue Oct 27 16:37:44 2020 +0100 +++ b/generate/generate.py Tue Oct 27 19:23:13 2020 +0100 @@ -20,7 +20,6 @@ def optionalize(name, optional=True): return 'Option<{}>'.format(name) if optional else name - def replace_keywords(name): return { 'type': ('typ', 'type'), @@ -45,9 +44,22 @@ return ''.join([(r(c) if i > 0 else c.lower()) for i, c in enumerate(sanitize(name))]) +def snake_to_camel(name): + dest = [] + capitalize = True + for c in name: + if c == '_': + capitalize = True + continue + if capitalize: + dest.append(c.upper()) + capitalize = False + continue + dest.append(c) + return ''.join(dest) def global_params_name(api_name): - return capitalize_first(api_name) + 'Params' + return snake_to_camel(api_name + 'Params') def parse_schema_types(name, schema, optional=True, parents=[]): @@ -198,8 +210,8 @@ frags = [] for resourcename, resource in resources.items(): for methodname, method in resource.get('methods', {}).items(): - param_type_name = capitalize_first(super_name) + capitalize_first(resourcename) + capitalize_first( - methodname) + 'Params' + param_type_name = snake_to_camel(super_name + capitalize_first(resourcename) + capitalize_first( + methodname) + 'Params') print("processed:", resourcename, methodname, param_type_name) struct = { 'name': param_type_name, @@ -447,13 +459,13 @@ """Generate types for the `scopes` dictionary (path: auth.oauth2.scopes in a discovery document), containing { scope_url: { description: "..." } }. """ - name = capitalize_first(name) + name = snake_to_camel(name) if len(scopes) == 0: return '' parameters = {'name': name, 'scopes': []} for url, desc in scopes.items(): rawname = url.split('/')[-1] - fancy_name = ''.join([capitalize_first(p) for p in rawname.split('.')]).replace('-', '') + fancy_name = snake_to_camel(rawname.replace('-', '_').replace('.', '_')) parameters['scopes'].append({'scope_name': fancy_name, 'desc': desc.get('description', ''), 'url': url}) return chevron.render(OauthScopesType, parameters) @@ -467,7 +479,7 @@ scopes_type = generate_scopes_type(discdoc['name'], discdoc.get('auth', {}).get('oauth2', {}).get('scopes', {})) # Generate parameter types (*Params - those are used as "side inputs" to requests) - params_struct_name = capitalize_first(discdoc['name']) + 'Params' + params_struct_name = global_params_name(discdoc.get('name')) parameter_types = generate_params_structs(resources, global_params=params_struct_name) # Generate service impls. @@ -486,7 +498,7 @@ # Generate global parameters struct and its Display impl. if 'parameters' in discdoc: schema = {'type': 'object', 'properties': discdoc['parameters']} - name = params_struct_name + name = snake_to_camel(params_struct_name) typ, substructs = parse_schema_types(name, schema) for s in substructs: s['optional_fields'] = s['fields']