using TweetDuck.Plugins.Enums;

namespace TweetDuck.Plugins{
    static class PluginScriptGenerator{
        public static string GenerateConfig(PluginConfig config){
            return config.AnyDisabled ? "window.TD_PLUGINS.disabled = [\""+string.Join("\",\"", config.DisabledPlugins)+"\"];" : string.Empty;
        }

        public static string GeneratePlugin(string pluginIdentifier, string pluginContents, int pluginToken, PluginEnvironment environment){
            return PluginGen
                .Replace("%params", environment.GetScriptVariables())
                .Replace("%id", pluginIdentifier)
                .Replace("%token", pluginToken.ToString())
                .Replace("%contents", pluginContents);
        }

        private const string PluginGen = "(function(%params,$d){let tmp={id:'%id',obj:new class extends PluginBase{%contents}};$d(tmp.obj,'$id',{value:'%id'});$d(tmp.obj,'$token',{value:%token});window.TD_PLUGINS.install(tmp);})(%params,Object.defineProperty);";

/* PluginGen

(function(%params, $d){
  let tmp = {
    id: '%id',
    obj: new class extends PluginBase{%contents}
  };
  
  $d(tmp.obj, '$id', { value: '%id' });
  $d(tmp.obj, '$token', { value: %token });
  
  window.TD_PLUGINS.install(tmp);
})(%params, Object.defineProperty);

*/
    }
}