|
From: | tisimst |
Subject: | Re: trying to write a simple python beaming snippet for Frescobaldi |
Date: | Thu, 10 Dec 2015 12:16:40 -0700 (MST) |
You're right, thanks! This showed I was actually doing the correct thing when checking whether a string element was a space. Now I see that actually Frescobaldi starts calculating the lines from the 2nd one (that is, after the line with the initial -*- _expression_). And so the error was when I was assigningmysequence[x] = '['because, as I have just learned, strings in Python are immutable. Gosh. This does not explain everything what was going on, most probably due to my incompetence. But now I have something that's working:x = 0y = 0mysequence = textwhile x < len(text):if text[x] == ' ' and y = 0:mysequence = mysequence + '[ 'y = y + 1else:mysequence = mysequence + text[x]x = x + 1text = mysequence + ']'So when I select "d16 e8 f8" it returns "d16[ e8 f8]" as I intended. Now I will make it nicer :-)Thanks you very much, Jacques!On 10 December 2015 at 12:09, Jacques Menu <[hidden email]> wrote:Hello Leszek,How about:>>> var = "fo a">>> var[2]' '>>> var[2] == ' 'TrueJMLe 10 déc. 2015 à 11:33, Leszek Wroński <[hidden email]> a écrit :_______________________________________________Guys,Frescobaldi has the useful 'slur for the selected notes' snippet under C-(. I want to have the same functionality for beams. That is, I want to be able to select some notes, and then via the snippet insert a '[' in the first space (that is, after the first note), and then a ']' at the end.Unfortunately, I have never in my life written a line of python... till this day, that is. So, I'm trying the following ('W' is for whitespace):1 -*- name: mybeam; python; selection: strip;2 x = 03 mysequence = text4 while x < len(text):5 WW if text[x] == ' ':6 WWWW mysequence[x] = '['7 WWWW break8 WW x = x + 19 text = mysequence + ']'Notice that line 5 contains a space between the quotes. Of course I need to add conditions regarding what to do if there's no space in the selection etc. But that's for later, once this basic script actually works. As you can see, I thought I'd copy the selection to 'mysequence' string to manipulate on it; this is probably unneeded. But after writing the above I got, at line 5, an error "TypeError: 'unicode' object does not support item assignment".What I found weird is that to my untrained eyes line 5 does no assigning, but rather checks whether the xth element of the string text is a space. Anyway, after some googling I decided to substitute "is" for "==" in line 5. Right now the script does not give any errors, but it only adds a ']' at the end of the selection. I'm apparently unable to check whether the xth element of the string text is a space. I triedif text[x] == ' %d':andif text[x] == u"\u0020":andif text[x].isspace():to no avail (the last one gave the "unicode object does not support item assignment" error again, which I don't understand at all, having copied the command from http://www.ehow.com/how_12112665_determine-character-whitespace-python.html). Could anyone give me a hint on this?Best regards,Leszek.
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
http://lilypond.1069038.n5.nabble.com/trying-to-write-a-simple-python-beaming-snippet-for-Frescobaldi-tp184624p184633.htmlIf you reply to this email, your message will be added to the discussion below:To start a new topic under User, email [hidden email]
To unsubscribe from Lilypond, click here.
NAML
[Prev in Thread] | Current Thread | [Next in Thread] |