From fd64e241707596c23815c24326f02025f1d72564 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sun, 4 Aug 2013 13:11:30 +0100 Subject: [PATCH] Fixes #1096450 Stripping the leading and trailing spaces at the end rather than begginning (the space means something, see added comments) Semi-colons (;) denotes comments ONLY when it is the first char of the line ie the whole line is a comment Finally fixed an issue when a verse was being added to the verse order multiple times, thus repeating it over and over and .... --- openlp/plugins/songs/lib/opensongimport.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/openlp/plugins/songs/lib/opensongimport.py b/openlp/plugins/songs/lib/opensongimport.py index f39ad0495..00d6c89b0 100644 --- a/openlp/plugins/songs/lib/opensongimport.py +++ b/openlp/plugins/songs/lib/opensongimport.py @@ -49,6 +49,9 @@ class OpenSongImport(SongImport): the OpenSong web site. However, it doesn't describe the section, so here's an attempt: + If the first charachter of a line is a space, then the rest of that line + is lyrics. If it is not a space the following applies. + Verses can be expressed in one of 2 ways, either in complete verses, or by line grouping, i.e. grouping all line 1's of a verse together, all line 2's of a verse together, and so on. @@ -171,13 +174,11 @@ class OpenSongImport(SongImport): else: lyrics = u'' for this_line in lyrics.split(u'\n'): - # remove comments - semicolon = this_line.find(u';') - if semicolon >= 0: - this_line = this_line[:semicolon] - this_line = this_line.strip() if not this_line: continue + # skip this line if it is a comment + if this_line.startswith(u';'): + continue # skip guitar chords and page and column breaks if this_line.startswith(u'.') or this_line.startswith(u'---') \ or this_line.startswith(u'-!!'): @@ -212,7 +213,6 @@ class OpenSongImport(SongImport): if this_line[0].isdigit(): verse_num = this_line[0] this_line = this_line[1:].strip() - our_verse_order.append([verse_tag, verse_num, inst]) verses.setdefault(verse_tag, {}) verses[verse_tag].setdefault(verse_num, {}) if inst not in verses[verse_tag][verse_num]: @@ -222,6 +222,7 @@ class OpenSongImport(SongImport): this_line = self.tidyText(this_line) this_line = this_line.replace(u'_', u'') this_line = this_line.replace(u'|', u'\n') + this_line = this_line.strip() verses[verse_tag][verse_num][inst].append(this_line) # done parsing # add verses in original order