summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bindings/lang_php5_helpers/php_code.py33
-rw-r--r--bindings/lang_php5_helpers/wrapper_source.py21
-rw-r--r--bindings/lang_python.py36
-rw-r--r--bindings/utils.py49
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
+