Skip to content

Commit

Permalink
Added a method for most efficient to concatenate many strings.
Browse files Browse the repository at this point in the history
  • Loading branch information
RodolfoSilva committed Jan 3, 2016
1 parent 329c356 commit aa20d9f
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions verbalexpressions/verbal_expressions.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class VerEx(object):
except `tab` and `add`.
'''
def __init__(self):
self.s = ''
self.s = []
self.modifiers = {'I': 0, 'M': 0}

def __getattr__(self, attr):
Expand All @@ -32,20 +32,20 @@ def __getattr__(self, attr):
return getattr(regex, attr)

def __str__(self):
return self.s
return ''.join(self.s)

def add(self, value):
self.s += value
def add(self, *args):
self.s.extend(list(args))
return self

def regex(self):
''' get a regular expression object. '''
return re.compile(self.s, self.modifiers['I'] | self.modifiers['M'])
return re.compile(str(self), self.modifiers['I'] | self.modifiers['M'])
compile = regex

def source(self):
''' return the raw string'''
return self.s
return str(self)
raw = value = source

# ---------------------------------------------
Expand All @@ -55,28 +55,28 @@ def anything(self):

@re_escape
def anything_but(self, value):
return self.add('([^' + value + ']*)')
return self.add('([^', value, ']*)')

def end_of_line(self):
return self.add('$')

@re_escape
def maybe(self, value):
return self.add("(" + value + ")?")
return self.add("(", value, ")?")

def start_of_line(self):
return self.add('^')

@re_escape
def find(self, value):
return self.add('(' + value + ')')
return self.add('(', value, ')')
then = find

# special characters and groups

@re_escape
def any(self, value):
return self.add("([" + value + "])")
return self.add("([", value, "])")
any_of = any

def line_break(self):
Expand All @@ -86,7 +86,7 @@ def line_break(self):
@re_escape
def range(self, *args):
from_tos = [args[i:i+2] for i in range(0, len(args), 2)]
return self.add("([" + ''.join(['-'.join(i) for i in from_tos]) + "])")
return self.add("([", ''.join(['-'.join(i) for i in from_tos]), "])")

def tab(self):
return self.add(r'\t')
Expand Down

0 comments on commit aa20d9f

Please sign in to comment.