This statement is used to decompose titles into separate classical components. title is used loosely as the Title field is not directly used.
The source parsing is the same algorithm which is used when decomposing MusicBrainz works to import classical fields. The algorithm is not foolproof.
Input and output is maintained in a container array. Any directed path can be used as long as it resolves to be an array. Every element in the array must be an object which contains a String name of title. Array items which are not Objects or do not contain a non empty title member are ignored.
The action test state will be set to false if the directed path is not an array or does not exist. It will also be set to false if no array elements are valid. Otherwise it will be set to true.
On output the objects can contain the following members. Note that all items are strings except for isClassical. All items are optional.
Example input container:
[ { "title" : "Piano Concerto No. 23 in a Major, K. 488: 1. Allegro" }, { "title" : "Piano Concerto No. 23 in a Major, K. 488: 2. Adagio" }, { "title" : "Piano Concerto No. 23 in a Major, K. 488: 3. Allegro Assai" }, { "title" : "Piano Concerto No. 24 in C Minor, K. 491: 1. Allegro" }, { "title" : "Piano Concerto No. 24 in C Minor, K. 491: 2. Larghetto" }, { "title" : "Piano Concerto No. 24 in C Minor, K. 491: 3. Allegretto" }, { "title" : "Impromptu for Piano in G Flat Major, D. 899/3 (Op. 90/3)" }, { "title" : "Impromptu for Piano in a Flat Major, D. 899/4 (Op. 90/4)" } ]
Example output container:
[ { "classicalCatalog" : "K. 488", "composition" : "Piano Concerto No. 23 in a Major, K. 488", "isClassical" : true, "movementCount" : "3", "movementName" : "Allegro", "movementNumber" : "1", "partName" : "I. Allegro", "title" : "Piano Concerto No. 23 in a Major, K. 488: 1. Allegro" }, { "classicalCatalog" : "K. 488", "composition" : "Piano Concerto No. 23 in a Major, K. 488", "isClassical" : true, "movementCount" : "3", "movementName" : "Adagio", "movementNumber" : "2", "partName" : "II. Adagio", "title" : "Piano Concerto No. 23 in a Major, K. 488: 2. Adagio" }, { "classicalCatalog" : "K. 488", "composition" : "Piano Concerto No. 23 in a Major, K. 488", "isClassical" : true, "movementCount" : "3", "movementName" : "Allegro Assai", "movementNumber" : "3", "partName" : "III. Allegro Assai", "title" : "Piano Concerto No. 23 in a Major, K. 488: 3. Allegro Assai" }, { "classicalCatalog" : "K. 491", "composition" : "Piano Concerto No. 24 in C Minor, K. 491", "isClassical" : true, "movementCount" : "3", "movementName" : "Allegro", "movementNumber" : "1", "partName" : "I. Allegro", "title" : "Piano Concerto No. 24 in C Minor, K. 491: 1. Allegro" }, { "classicalCatalog" : "K. 491", "composition" : "Piano Concerto No. 24 in C Minor, K. 491", "isClassical" : true, "movementCount" : "3", "movementName" : "Larghetto", "movementNumber" : "2", "partName" : "II. Larghetto", "title" : "Piano Concerto No. 24 in C Minor, K. 491: 2. Larghetto" }, { "classicalCatalog" : "K. 491", "composition" : "Piano Concerto No. 24 in C Minor, K. 491", "isClassical" : true, "movementCount" : "3", "movementName" : "Allegretto", "movementNumber" : "3", "partName" : "III. Allegretto", "title" : "Piano Concerto No. 24 in C Minor, K. 491: 3. Allegretto" }, { "classicalCatalog" : "D. 899/3", "composition" : "Impromptu for Piano in G Flat Major, D. 899/3 (Op. 90/3)", "isClassical" : true, "movementCount" : "1", "movementNumber" : "1", "opus" : "90", "title" : "Impromptu for Piano in G Flat Major, D. 899/3 (Op. 90/3)" }, { "classicalCatalog" : "D. 899/4", "composition" : "Impromptu for Piano in a Flat Major, D. 899/4 (Op. 90/4)", "isClassical" : true, "movementCount" : "1", "movementNumber" : "1", "opus" : "90", "title" : "Impromptu for Piano in a Flat Major, D. 899/4 (Op. 90/4)" } ]
The Extract Work and Part from Title action on the resources web page is a good example of how to use this statement.