[JW Lua] RFC: Adding Methods/Properties to RGP Lua that only exist in certain Finale versions

Robert Patterson robert at robertgpatterson.com
Wed Aug 24 17:58:19 CEST 2022


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 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 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 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 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
>>>>
>>>> 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[image: ™] 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. 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
>>>> From: Robert Patterson <robert at robertgpatterson.com>
>>>> To: "The JW Lua script plug-in." <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 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&gt
>>>> ;
>>>>
>>>> ------------------------------
>>>>
>>>> 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 5
>>>> ************************************
>>>> _______________________________________________
>>>> JWLua mailing list
>>>> JWLua at jwmusic.nu
>>>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
>>>>
>>> _______________________________________________
>>> JWLua mailing list
>>> JWLua at jwmusic.nu
>>> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
>>>
>>
>> _______________________________________________
>> JWLua mailing list
>> 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/07f94c25/attachment-0001.html>


More information about the JWLua mailing list