Boolean parser..
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Wed Oct 3 23:06:27 EDT 2007
Paul McGuire a écrit :
(snip)
<nitpicking>
May I suggest a couple cleanifications for our newbie friends around ?
> from searchparser import SearchQueryParser
>
> products = [ "grape juice", "grape jelly", "orange juice", "orange
> jujubees",
> "strawberry jam", "prune juice", "prune butter", "orange
> marmalade",
> "grapefruit juice" ]
# round 1 : extracting constants from iterations
> class FruitSearchParser(SearchQueryParser):
> def GetWord(self, word):
> return set( p for p in products if p.startswith(word + " ") )
def GetWord(self, word):
target = word + " "
return set(p for p in products if p.startswith(target) )
> def GetWordWildcard(self, word):
> return set( p for p in products if p.startswith(word[:-1]) )
def GetWordWildcard(self, word):
target = word[:-1]
return set( p for p in products if p.startswith(target) )
# round 2 : factoring out common code
class FruitSearchParser(SearchQueryParser):
def _find_products_starting_with(self, target):
return set(p for p in products if p.startswith(target))
def GetWord(self, word):
return self._find_products_starting_with(word + " ")
def GetWordWildcard(self, word):
return self._find_products_starting_with(word[:-1])
# round 3: doing proper encapsulation:
class FruitSearchParser(SearchQueryParser):
def __init__(self, products):
self._products = products
def _find_products_starting_with(self, target):
return set(p for p in self._products if p.startswith(target))
def GetWord(self, word):
return self._find_products_starting_with(word + " ")
def GetWordWildcard(self, word):
return self._find_products_starting_with(word[:-1])
# round 4 : respecting pep08 (naming conventions):
# heck ! I guess that this would need a rewrite of SearchQueryParser
</nitpicking>
More information about the Python-list
mailing list