mirror of
https://github.com/erkin/ponysay.git
synced 2024-11-22 12:27:59 +01:00
do not bias toward images with symlinks
Signed-off-by: Mattias Andrée <maandree@operamail.com>
This commit is contained in:
parent
b2eeeff049
commit
456a11aa54
2 changed files with 14 additions and 6 deletions
|
@ -2586,7 +2586,7 @@ comment field. Leading line breaks in the comment field is ignored.
|
|||
@cindex pony quote infrastructure
|
||||
@cindex quote infrastructure
|
||||
|
||||
When compiling, two indices for the pony quotes are built. These indices
|
||||
When compiling, three indices for the pony quotes are built. These indices
|
||||
are dbm databases; if you have gdbm, which you probably have, python will
|
||||
using gdbm. If you later uninstall gdbm, you will have to reinstall ponysay
|
||||
so it is built without, gdbm.
|
||||
|
@ -2616,6 +2616,8 @@ installed files. This just happened to be solved at the same time.
|
|||
Pinkie Pie had so many images that the resolution quote files' names
|
||||
were to long and quotes had to be duplicated. And Pinkie Pie became
|
||||
even more likely to be randomly selected.
|
||||
@item
|
||||
Random selection algorithm with biased towards images with symlink alternatives.
|
||||
@end itemize
|
||||
|
||||
|
||||
|
|
16
setup.py
16
setup.py
|
@ -522,7 +522,7 @@ class Setup():
|
|||
if filein is not None: filein .close()
|
||||
|
||||
if conf['ponyquotes'] is not None:
|
||||
Setup.makeQuotesDatabase('ponies', 'ponyquotes', 'share/by-master', 'share/by-file', Setup.validateFreedom if self.free else None)
|
||||
Setup.makeQuotesDatabase('ponies', 'ponyquotes', 'share/by-master', 'share/by-image', 'share/by-file', Setup.validateFreedom if self.free else None)
|
||||
|
||||
for (sharedir, hasponies) in [(sharedir[0], sharedir[3]) for sharedir in sharedirs]:
|
||||
if hasponies and os.path.isdir(sharedir):
|
||||
|
@ -626,7 +626,7 @@ class Setup():
|
|||
if conf[file[0]] is not None:
|
||||
self.cp(False, 'share/' + file[1], [ponyshare + file[0]], Setup.validateFreedom if self.free else None)
|
||||
if conf['ponyquotes'] is not None:
|
||||
for file in ('by-file', 'by-master'):
|
||||
for file in ('by-file', 'by-image', 'by-master'):
|
||||
self.cp(False, 'share/' + file, [ponyshare + file], Setup.validateFreedom if self.free else None)
|
||||
for file in miscfiles:
|
||||
self.cp(False, file[0], [conf[file[0]]], Setup.validateFreedom if self.free else None)
|
||||
|
@ -678,6 +678,7 @@ class Setup():
|
|||
if conf[file[0]] is not None:
|
||||
files.append(ponyshare + file[0])
|
||||
files.append(ponyshare + 'by-file')
|
||||
files.append(ponyshare + 'by-image')
|
||||
files.append(ponyshare + 'by-master')
|
||||
for file in miscfiles:
|
||||
files.append(conf[file[0]])
|
||||
|
@ -717,7 +718,7 @@ class Setup():
|
|||
def clean(self):
|
||||
print('\033[1;34m::\033[39mCleaning...\033[21m')
|
||||
|
||||
files = ['ponysay.info', 'ponysay.info.gz', 'ponysay.info.xz', 'ponysay.pdf.gz', 'ponysay.pdf.xz', 'ponysay.install', 'share/by-file', 'share/by-master']
|
||||
files = ['ponysay.info', 'ponysay.info.gz', 'ponysay.info.xz', 'ponysay.pdf.gz', 'ponysay.pdf.xz', 'ponysay.install', 'share/by-file', 'share/by-image', 'share/by-master']
|
||||
files += ['src/%s.install' % file for file in ponysaysrc]
|
||||
dirs = []
|
||||
for comp in ['install', 'gz', 'xz']:
|
||||
|
@ -759,7 +760,7 @@ class Setup():
|
|||
Generate quotes database
|
||||
'''
|
||||
@staticmethod
|
||||
def makeQuotesDatabase(ponydir, quotedir, masterdb, filedb, validatehook):
|
||||
def makeQuotesDatabase(ponydir, quotedir, masterdb, imagedb, filedb, validatehook):
|
||||
allponies = {}
|
||||
ponies = os.listdir(quotedir,)
|
||||
for pony in ponies:
|
||||
|
@ -817,7 +818,7 @@ class Setup():
|
|||
continue
|
||||
count = allponies[master]
|
||||
|
||||
by_master[master] = [count] + ponies
|
||||
by_master[master] = [count] + filter(lambda p : not os.path.islink('%s/%s.pony' % (ponydir, p)), ponies)
|
||||
for pony in ponies:
|
||||
if pony not in by_file:
|
||||
by_file[pony] = []
|
||||
|
@ -828,6 +829,11 @@ class Setup():
|
|||
db[key] = ' '.join(by_master[key])
|
||||
db.close()
|
||||
|
||||
db = dbm.open(imagedb, 'n')
|
||||
for key in filter(lambda p : not os.path.islink('%s/%s.pony' % (ponydir, p)), by_file.keys()):
|
||||
db[key] = ' '.join(by_file[key])
|
||||
db.close()
|
||||
|
||||
db = dbm.open(filedb, 'n')
|
||||
for key in by_file:
|
||||
db[key] = ' '.join(by_file[key])
|
||||
|
|
Loading…
Reference in a new issue