diff options
-rw-r--r-- | bindings/lang_php5_helpers/php_code.py | 33 | ||||
-rw-r--r-- | bindings/lang_php5_helpers/wrapper_source.py | 21 | ||||
-rw-r--r-- | bindings/lang_python.py | 36 | ||||
-rw-r--r-- | bindings/utils.py | 49 |
4 files changed, 68 insertions, 71 deletions
diff --git a/bindings/lang_php5_helpers/php_code.py b/bindings/lang_php5_helpers/php_code.py index bbd94958..28f9f77c 100644 --- a/bindings/lang_php5_helpers/php_code.py +++ b/bindings/lang_php5_helpers/php_code.py @@ -20,28 +20,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import re -import string - -def format_attribute(var): - if '_' in var: - return format_underscore_as_py(var) - if var[0] in string.uppercase: - var = var[0].lower() + var[1:] - return var - -def format_underscore_as_py(var): - def rep(s): - return s.group(1)[0].upper() + s.group(1)[1:] - var = re.sub(r'_([A-Za-z0-9]+)', rep, var) - return var - -def format_as_underscored(var): - def rep(s): - return s.group(0)[0] + '_' + s.group(1).lower() - var = re.sub(r'[a-z0-9]([A-Z])', rep, var).lower() - var = var.replace('id_wsf2_', 'idwsf2_') - var = var.replace('_saslresponse', '_sasl_response') - return var + +import utils class PhpCode: def __init__(self, binding_data, fd): @@ -102,7 +82,7 @@ function cptrToPhp ($cptr) { print >> self.fd, '' def generate_constructors(self, klass): - method_prefix = format_as_underscored(klass.name) + '_' + method_prefix = utils.format_as_underscored(klass.name) + '_' for m in self.binding_data.functions: if m.name == method_prefix + 'new': php_args = [] @@ -167,7 +147,7 @@ function cptrToPhp ($cptr) { print >> self.fd, '' for m in klass.members: - mname = format_attribute(m[1]) + mname = utils.format_as_camelcase(m[1]) options = m[2] # Getters @@ -205,7 +185,7 @@ function cptrToPhp ($cptr) { pass # second pass on methods, real methods - method_prefix = format_as_underscored(klass.name) + '_' + method_prefix = utils.format_as_underscored(klass.name) + '_' for m in methods: if m.name.endswith('_new') or m.name.endswith('_new_from_dump') or \ m.name.endswith('_new_full'): @@ -248,7 +228,8 @@ function cptrToPhp ($cptr) { else: c_args = '' - print >> self.fd, ' public function %s(%s) {' % (format_underscore_as_py(mname), php_args) + print >> self.fd, ' public function %s(%s) {' % ( + utils.format_underscore_as_camelcase(mname), php_args) # FIXME: add php api documentation # if m.docstring: # print >> fd, " '''" diff --git a/bindings/lang_php5_helpers/wrapper_source.py b/bindings/lang_php5_helpers/wrapper_source.py index f4b9968d..bdb373ed 100644 --- a/bindings/lang_php5_helpers/wrapper_source.py +++ b/bindings/lang_php5_helpers/wrapper_source.py @@ -20,21 +20,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import sys -import re -import string - -def format_attribute(var): - if '_' in var: - return format_underscore_as_py(var) - if var[0] in string.uppercase: - var = var[0].lower() + var[1:] - return var - -def format_underscore_as_py(var): - def rep(s): - return s.group(1)[0].upper() + s.group(1)[1:] - var = re.sub(r'_([A-Za-z0-9]+)', rep, var) - return var + +import utils class WrapperSource: def __init__(self, binding_data, fd): @@ -237,7 +224,7 @@ PHP_MSHUTDOWN_FUNCTION(lasso) print >> self.fd, '' def generate_getter(self, klassname, m_type, m_name, m_options): - function_name = '%s_%s_get' % (klassname, format_attribute(m_name)) + function_name = '%s_%s_get' % (klassname, utils.format_as_camelcase(m_name)) print >> self.fd, '''PHP_FUNCTION(%s) {''' % function_name self.functions_list.append(function_name) @@ -277,7 +264,7 @@ PHP_MSHUTDOWN_FUNCTION(lasso) print >> self.fd, '' def generate_setter(self, klassname, m_type, m_name, m_options): - function_name = '%s_%s_set' % (klassname, format_attribute(m_name)) + function_name = '%s_%s_set' % (klassname, utils.format_as_camelcase(m_name)) print >> self.fd, '''PHP_FUNCTION(%s) {''' % function_name self.functions_list.append(function_name) diff --git a/bindings/lang_python.py b/bindings/lang_python.py index f493b7e8..16ee7996 100644 --- a/bindings/lang_python.py +++ b/bindings/lang_python.py @@ -22,29 +22,8 @@ import os import sys import re -import string - -def format_as_python(var): - if '_' in var: - return format_underscore_as_py(var) - if var[0] in string.uppercase: - var = var[0].lower() + var[1:] - return var - -def format_as_underscored(var): - def rep(s): - return s.group(0)[0] + '_' + s.group(1).lower() - var = re.sub(r'[a-z0-9]([A-Z])', rep, var).lower() - var = var.replace('id_wsf2_', 'idwsf2_') - var = var.replace('_saslresponse', '_sasl_response') - return var - -def format_underscore_as_py(var): - def rep(s): - return s.group(1)[0].upper() + s.group(1)[1:] - var = re.sub(r'_([A-Za-z0-9]+)', rep, var) - var = re.sub(r'([a-z])(ID)([A-Z]|$)', r'\1Id\3', var) # replace standing ID by Id - return var + +import utils class PythonBinding: def __init__(self, binding_data): @@ -177,7 +156,7 @@ import lasso methods = clss.methods[:] # constructor(s) - method_prefix = 'lasso_' + format_as_underscored(klassname) + '_' + method_prefix = 'lasso_' + utils.format_as_underscored(klassname) + '_' for m in self.binding_data.functions: if m.name == method_prefix + 'new': c_args = [] @@ -218,7 +197,7 @@ import lasso # create properties for members for m in clss.members: - mname = format_as_python(m[1]) + mname = utils.format_as_camelcase(m[1]) options = m[2] print >> fd, ' def get_%s(self):' % mname if self.is_pygobject(m[0]): @@ -253,7 +232,7 @@ import lasso except IndexError: setter = None mname = re.match(r'lasso_.*_get_(\w+)', m.name).group(1) - mname = format_underscore_as_py(mname) + mname = utils.format_underscore_as_camelcase(mname) print >> fd, ' def get_%s(self):' % mname print >> fd, ' return _lasso.%s(self._cptr)' % m.name[6:] @@ -314,7 +293,8 @@ import lasso else: c_args = '' - print >> fd, ' def %s(self%s):' % (format_underscore_as_py(mname), py_args) + print >> fd, ' def %s(self%s):' % ( + utils.format_underscore_as_camelcase(mname), py_args) if m.docstring: print >> fd, " '''" print >> fd, self.format_docstring(m, mname, 8) @@ -412,7 +392,7 @@ register_constants(PyObject *d) def generate_member_wrapper(self, c, fd): klassname = c.name for m in c.members: - mname = format_as_python(m[1]) + mname = utils.format_as_camelcase(m[1]) # getter print >> fd, '''static PyObject* %s_%s_get(PyObject *self, PyObject *args) diff --git a/bindings/utils.py b/bindings/utils.py new file mode 100644 index 00000000..3e95a7ac --- /dev/null +++ b/bindings/utils.py @@ -0,0 +1,49 @@ +# Lasso - A free implementation of the Liberty Alliance specifications. +# +# Copyright (C) 2004-2007 Entr'ouvert +# http://lasso.entrouvert.org +# +# Authors: See AUTHORS file in top-level directory. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import re +import string + +def format_as_camelcase(var): + '''Format an identifier name into CamelCase''' + if '_' in var: + return format_underscore_as_camelcase(var) + if var[0] in string.uppercase: + var = var[0].lower() + var[1:] + return var + +def format_as_underscored(var): + '''Format an identifier name into underscored_name''' + def rep(s): + return s.group(0)[0] + '_' + s.group(1).lower() + var = re.sub(r'[a-z0-9]([A-Z])', rep, var).lower() + var = var.replace('id_wsf2_', 'idwsf2_') + var = var.replace('_saslresponse', '_sasl_response') + return var + +def format_underscore_as_camelcase(var): + '''Format an underscored identifier name into CamelCase''' + def rep(s): + return s.group(1)[0].upper() + s.group(1)[1:] + var = re.sub(r'_([A-Za-z0-9]+)', rep, var) + var = re.sub(r'([a-z])(ID)([A-Z]|$)', r'\1Id\3', var) # replace standing ID by Id + return var + |