diff options
author | Walter Bender <walter@sugarlabs.org> | 2010-10-02 13:09:25 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2010-10-02 13:09:25 (GMT) |
commit | d94941f3c40a369e611855533c389fce0f91c80f (patch) | |
tree | e242585895ce65e8783553fe420d10ad928fbde6 | |
parent | eb838e67153a1e314712a930f0fc94cd4cd94677 (diff) |
improved filename parsing
-rw-r--r-- | VisualMatchActivity.py | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/VisualMatchActivity.py b/VisualMatchActivity.py index 35c3f83..546a236 100644 --- a/VisualMatchActivity.py +++ b/VisualMatchActivity.py @@ -126,6 +126,36 @@ def _separator_factory(toolbar, visible=True, expand=False): _separator.show() +def _find_the_number_in_the_name(name): + """ Find which element in an array (journal entry title) is a number """ + parts = name.split('.') + before = '' + after = '' + for i in range(len(parts)): + ii = len(parts) - i - 1 + try: + int(parts[ii]) + for j in range(ii): + before += (parts[j] + '.') + for j in range(ii + 1, len(parts)): + after += ('.' + parts[j]) + return before, after, ii + except ValueError: + pass + return '', '', -1 + + +def _construct_a_name(before, i, after): + """ Make a numbered file name from parts """ + name = '' + if before != '': + name += before + name += str(i) + if after != '': + name += after + return name + + class VisualMatchActivity(activity.Activity): """ Dimension matching game """ def __init__(self, handle): @@ -218,20 +248,17 @@ class VisualMatchActivity(activity.Activity): self._find_custom_paths(name, mime_type) def _find_custom_paths(self, name, mime_type): - parts = name.split('.') - basename = parts[0] - suffix = '' - if len(parts) > 2: - for i in range(2,len(name)): - suffix += '.' - suffix += parts[i] + basename, suffix, i = _find_the_number_in_the_name(name) + if i < 0: # not part of a numbered sequence + self.vmw.card_type = 'pattern' + return dsobjects, nobjects = datastore.find({'mime_type': str(mime_type)}) self.vmw.custom_paths = [] if nobjects > 0: for j in range(DECKSIZE): for i in range(nobjects): if dsobjects[i].metadata['title'] == \ - basename + '.' + str(j+1) + suffix: + _construct_a_name(basename, j + 1, suffix): _logger.debug('result of find: %s' %\ dsobjects[i].metadata['title']) self.vmw.custom_paths.append(dsobjects[i].file_path) @@ -248,7 +275,7 @@ class VisualMatchActivity(activity.Activity): if self.vmw.card_type == 'custom': self.button_custom.set_icon('new-custom-game') self.button_custom.set_tooltip(_('New custom game')) - self.metadata['custom_name'] = basename + self.metadata['custom_name'] = name self.metadata['custom_mime_type'] = mime_type self.set_level_label() return |