[JW Lua] RFC: Adding Methods/Properties to RGP Lua that only exist in certain Finale versions
Daniel Grunwald
dgr at leng.de
Thu Aug 25 09:00:58 CEST 2022
Agreed. This is much clearer than a (inexpressively) null check.
Von meinem Xperia™ von Sony-Smartphone gesendet
---- jwlua-request at jwmusic.nu schrieb ----
>Send JWLua mailing list submissions to
> jwlua at jwmusic.nu
>
>To subscribe or unsubscribe via the World Wide Web, visit
> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
>or, via email, send a message with subject or body 'help' to
> jwlua-request at jwmusic.nu
>
>You can reach the person managing the list at
> jwlua-owner at jwmusic.nu
>
>When replying, please edit your Subject line so it is more specific
>than "Re: Contents of JWLua digest..."
>
>
>Today's Topics:
>
> 1. Re: RFC: Adding Methods/Properties to RGP Lua that only exist
> in certain Finale versions (Nick Mazuk)
>
>
>----------------------------------------------------------------------
>
>Message: 1
>Date: Wed, 24 Aug 2022 16:42:17 +0000
>From: "Nick Mazuk" <nick at nickmazuk.com>
>To: "The JW Lua script plug-in." <jwlua at jwmusic.nu>
>Subject: Re: [JW Lua] RFC: Adding Methods/Properties to RGP Lua that
> only exist in certain Finale versions
>Message-ID:
> <l77ufq8b.e8ce6bf0-bc59-4c31-b9b3-c690f52f929c at we.are.superhuman.com>
>Content-Type: text/plain; charset="utf-8"
>
>This seems like a good plan to me.
>
>On Wed, Aug 24, 2022 at 8:58 AM, Robert Patterson < robert at robertgpatterson.com > wrote:
>
>>
>> Instead of pcall, you do:
>>
>>
>> if finenv.RawFinaleVersion >= <min-vers> then
>> do something
>> end
>>
>>
>> It doesn't seem much worse than null checking, and it shows what's really
>> going on. This could all be encapsulated in a client library of course.
>>
>>
>>
>> On Wed, Aug 24, 2022 at 10:51 AM Robert Patterson < robert@ robertgpatterson.
>> com ( robert at robertgpatterson.com ) > wrote:
>>
>>
>>> I have been experimenting with throwing an error out of C++ this morning ,
>>> and it works seamlessly exactly as one would hope. I much prefer an error
>>> message that says, "modula.lua line 420: Finale 26.9 required". (To make
>>> up a Finale version.)
>>>
>>>
>>> Plus, you'll only have to use pcall if you are unwilling to specify
>>> MinFinaleVersion in your plugindef.
>>>
>>>
>>>
>>>
>>> On Wed, Aug 24, 2022 at 10:26 AM Nick Mazuk < nick@ nickmazuk. com (
>>> nick at nickmazuk.com ) > wrote:
>>>
>>>
>>>> Throwing an error might be redundant. For instance, if the following
>>>> prints out nil (for instance, if the method doesn't exist on the object):
>>>>
>>>>
>>>>
>>>> local entry = finale.FCEntry()
>>>>
>>>> print(entry.FooBar)
>>>>
>>>>
>>>>
>>>> then the following will already be thrown an error since nil is not a
>>>> function:
>>>>
>>>>
>>>>
>>>> local entry = finale.FCEntry()
>>>>
>>>> entry:FooBar() ? error!
>>>>
>>>>
>>>>
>>>> The only advantage I can think of by having RGP Lua throw an error if you
>>>> even access it is that you'll potentially get more meaningful error
>>>> messages as a user. As a developer, the plugin will still tell you exactly
>>>> what line of code threw the error. However, it has the disadvantage that
>>>> you must use pcall to capture the error and you cannot simply check if the
>>>> method exists or not (which developers should be doing anyways for any
>>>> newly added features to RGP Lua).
>>>>
>>>>
>>>>
>>>> On Wed, Aug 24, 2022 at 5:24 AM, Robert Patterson < robert@ robertgpatterson.
>>>> com ( robert at robertgpatterson.com ) > wrote:
>>>>
>>>>> Throwing an error is a good idea that I hadn't thought of. However, these
>>>>> errors would have to be thrown out of the PDK Framework, which is not Lua.
>>>>> So far, there is no try/catch/throw in the PDK Framework codebase. That is
>>>>> not to say we couldn't start using it, but it will require approvals from
>>>>> the other clients that share that code.
>>>>>
>>>>>
>>>>> Meanwhile, if the function is missing you'll get the same behavior. It
>>>>> just won't have as helpful an error message. And by leaving it missing,
>>>>> you don't have to resort to pcall. You can simply test if it is there.
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Aug 24, 2022 at 6:18 AM Daniel Grunwald < dgr@ leng. de (
>>>>> dgr at leng.de ) > wrote:
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>> Hi there,
>>>>>>
>>>>>>
>>>>>>
>>>>>> it seems my first reply didn't get through. So I repeat it. I case you
>>>>>> receive this twice you know why.
>>>>>>
>>>>>>
>>>>>>
>>>>>> I am a lua novice having no actual experience in lua so my idea might be
>>>>>> foolish. However from what I learned in terms of clean code in other
>>>>>> languages I would prefer to raise an error instead of not providing the
>>>>>> function.
>>>>>> In order to deal with this users will have to use pcall, as described in https:/
>>>>>> / www. lua. org/ pil/ 8. 4. html ( https://www.lua.org/pil/8.4.html )
>>>>>>
>>>>>>
>>>>>>
>>>>>> Although not knowing if it really is (by lack experience) to me it sounds
>>>>>> like a cleaner approach.
>>>>>>
>>>>>>
>>>>>>
>>>>>> However if you like to use the nil-approach I suggest putting "OrNil" as
>>>>>> suffix to the function's name so the name indicates it possibly being nil.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hope this was helpful.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Best regards
>>>>>> Daniel
>>>>>>
>>>>>>
>>>>>>
>>>>>> Von meinem Xperia? von Sony-Smartphone gesendet
>>>>>>
>>>>>>
>>>>>>
>>>>>> ---- jwlua-request@ jwmusic. nu ( jwlua-request at jwmusic.nu ) schrieb ----
>>>>>>
>>>>>> Send JWLua mailing list submissions to
>>>>>> jwlua@ jwmusic. nu ( jwlua at jwmusic.nu )
>>>>>>
>>>>>> To subscribe or unsubscribe via the World Wide Web, visit
>>>>>> http:/ / jwmusic. nu/ mailman/ listinfo/ jwlua_jwmusic. nu (
>>>>>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu )
>>>>>> or, via email, send a message with subject or body 'help' to
>>>>>> jwlua-request@ jwmusic. nu ( jwlua-request at jwmusic.nu )
>>>>>>
>>>>>> You can reach the person managing the list at
>>>>>> jwlua-owner@ jwmusic. nu ( jwlua-owner at jwmusic.nu )
>>>>>>
>>>>>> When replying, please edit your Subject line so it is more specific
>>>>>> than "Re: Contents of JWLua digest..."
>>>>>>
>>>>>>
>>>>>> Today 's Topics:
>>>>>>
>>>>>> 1. RFC: Adding Methods/Properties to RGP Lua that only exist in
>>>>>> certain Finale versions (Robert Patterson)
>>>>>>
>>>>>>
>>>>>> ----------------------------------------------------------------------
>>>>>>
>>>>>> Message: 1
>>>>>> Date: Mon , 22 Aug 2022 15:03: 15 -0500 ( tel:15%20-0500 )
>>>>>> From: Robert Patterson < robert@ robertgpatterson. com (
>>>>>> robert at robertgpatterson.com ) >
>>>>>> To: "The JW Lua script plug-in." < jwlua@ jwmusic. nu ( jwlua at jwmusic.nu )
>>>>>> >
>>>>>> Subject: [JW Lua] RFC: Adding Methods/Properties to RGP Lua that only
>>>>>> exist in certain Finale versions
>>>>>> Message-ID:
>>>>>> < CAACnceu23XaymU4XNBZQ-1e6wDdP5xP6-ht8fdk3trUduahrUA@ mail. gmail. com (
>>>>>> CAACnceu23XaymU4XNBZQ-1e6wDdP5xP6-ht8fdk3trUduahrUA at mail.gmail.com ) >
>>>>>> Content-Type: text/plain; charset="utf-8"
>>>>>>
>>>>>> I will soon be adding to RGP Lua some methods and properties that are not
>>>>>> available before a certain Finale version. Previously when this has
>>>>>> happened, the methods and properties appear in all Finale versions but
>>>>>> return a default value in earlier Finale versions where they aren't
>>>>>> supported. Until now there has always been an appropriate default value.
>>>>>>
>>>>>> However, these new methods and properties I plan to add do not have useful
>>>>>>
>>>>>> default values in earlier Finale versions. In fact, it would be a bad idea
>>>>>>
>>>>>> to return anything at all unless running in an supported Finale version.
>>>>>>
>>>>>> To me the best solution would appear to be not to hook up these methods
>>>>>> and
>>>>>> properties to Lua if the Finale version doesn't support them. But that
>>>>>> means, in perpetuity, Lua programmers will have to check them for `nil`
>>>>>> before calling them. Does anyone have other/better ideas?
>>>>>> -------------- next part --------------
>>>>>> An HTML attachment was scrubbed...
>>>>>> URL: < http:/ / jwmusic. nu/ pipermail/ jwlua_jwmusic. nu/ attachments/ 20220822/
>>>>>> 224e51a5/ attachment-0001. html> (
>>>>>> http://jwmusic.nu/pipermail/jwlua_jwmusic.nu/attachments/20220822/224e51a5/attachment-0001.html>
>>>>>> ) ;
>>>>>>
>>>>>> ------------------------------
>>>>>>
>>>>>> Subject: Digest Footer
>>>>>>
>>>>>> _______________________________________________
>>>>>> JWLua mailing list
>>>>>> JWLua@ jwmusic. nu ( JWLua at jwmusic.nu )
>>>>>> http:/ / jwmusic. nu/ mailman/ listinfo/ jwlua_jwmusic. nu (
>>>>>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu )
>>>>>>
>>>>>>
>>>>>> ------------------------------
>>>>>>
>>>>>> End of JWLua Digest, Vol 94, Issue 5
>>>>>> ************************************
>>>>>> _______________________________________________
>>>>>> JWLua mailing list
>>>>>> JWLua@ jwmusic. nu ( JWLua at jwmusic.nu )
>>>>>> http:/ / jwmusic. nu/ mailman/ listinfo/ jwlua_jwmusic. nu (
>>>>>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu )
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> JWLua mailing list
>>>>> JWLua@ jwmusic. nu ( JWLua at jwmusic.nu )
>>>>> http:/ / jwmusic. nu/ mailman/ listinfo/ jwlua_jwmusic. nu (
>>>>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu )
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> JWLua mailing list
>>>> JWLua@ jwmusic. nu ( JWLua at jwmusic.nu )
>>>> http:/ / jwmusic. nu/ mailman/ listinfo/ jwlua_jwmusic. nu (
>>>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu )
>>>>
>>>
>>>
>>>
>>
>>
>>
>> _______________________________________________
>> JWLua mailing list
>> JWLua@ jwmusic. nu ( JWLua at jwmusic.nu )
>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
>>
>>
>>
>-------------- next part --------------
>An HTML attachment was scrubbed...
>URL: <http://jwmusic.nu/pipermail/jwlua_jwmusic.nu/attachments/20220824/befa49c3/attachment.html>
>
>------------------------------
>
>Subject: Digest Footer
>
>_______________________________________________
>JWLua mailing list
>JWLua at jwmusic.nu
>http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
>
>
>------------------------------
>
>End of JWLua Digest, Vol 94, Issue 8
>************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://jwmusic.nu/pipermail/jwlua_jwmusic.nu/attachments/20220825/18a43677/attachment.htm>
More information about the JWLua
mailing list