Skip to content
Extraits de code Groupes Projets

Add a way to execute a Lua file with Vivy in a click-click way

Fusionnées Kubat a demandé de fusionner lua-exec vers master

Overview

Add the module creation to Vivy. We will see later to apply a module to a .vivy file (with the options found in the .vivy etc).

We now have one file for a script. The .module file that describes the script, the job to do in what order and the different free functions. The .module file also have the different option type declaration for inter-script job reuse.

Sample script for now:

--- Declaration

local custom_opt = DeclareOption { option1 = false }
local time_opt   = DeclareOption { preTime = -900, postTime = 300, }
local color_opt  = DeclareOption { color1 = Vivy:newColor("#314159") }

local module = DeclareModule {
    name        = "sample-spec",
    description = "Sample script used for the specification proposition",
    author      = "Vivy",
    revision    = "rev-1254",
    imports     = { "utils" },
    options     = { custom_opt, time_opt, color_opt },
    functions   = {
        DeclareFunction { "tripleCopySyl" },
        DeclareFunction { "printFoo" },
        ImportFunction  { "utils", "prettyPrint" },
    },
    jobs = {
        DeclareJob { "set_retime", options = { time_opt } },
        DeclareJob { "demultiply_syllabes" },
        ImportJob  { "utils", "color_after_read_3", "utils", options = { color_opt } }
    }
}

--- Implementation

local utils       = module:import { "utils" }
local prettyPrint = module:import { "utils", "prettyPrint" }

local tripleCopySyl = module:export { "tripleCopySyl", function (syl)
    return { syl:copy(), syl:copy(), syl:copy() }
end }

module:export { "printFoo", function () prettyPrint ("Bar") end }

module:export { "retime_lines", LINE, function (opt, line)
    line.start  = line.start + opt.preTime
    line.finish = line.start + opt.postTime
    if line.start <= 0 then line.start = 0 end
    if line.finish >= Vivy:finish() then line.finish = Vivy:finish() end
    return line
end }

module:export { "create_syllabes", SYLLABE, function (opt, syl)
    local newSyls     = tripleCopySyl(syl)
    newSyls[1].start  = syl.line.start
    newSyls[1].finish = syl.start
    newSyls[3].finish = syl.line.finish
    newSyls[3].start  = syl.finish
    return newSyls
end }

-- vim: ft=lua

The minimal small boi:

DeclareModule {
    name        = [[ sample-spec ]],
    author      = [[ Vivy ]]
}

What this MR does

It add the .module script support and creation of the module for a script.

What this MR doesn't do

It doesn't apply a script / module to a vivy file as the vivy file is not available for now.

The multimodule is not available for now.

Modification effectuée par Kubat

Rapports de requête de fusion

Loading
Loading

Activité

Filtrer l'activité
  • Approbations
  • Assignés et relecteurs
  • Commentaires (des bots)
  • Commentaires (des utilisateurs)
  • Branches et validations
  • Modifications
  • Labels
  • État de verrouillage
  • Mentions
  • État de la demande de fusion
  • Suivi
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Veuillez vous inscrire ou vous connecter pour répondre
Chargement en cours