using System; using System.Collections.Generic; using ScriptCs.Contracts; namespace ScriptCs { public class ScriptEnvironment : IScriptEnvironment { private readonly IConsole _console; private readonly Printers _printers; public ScriptEnvironment(string[] scriptArgs, IConsole console, Printers printers) { _console = console; _printers = printers; ScriptArgs = scriptArgs; } public IReadOnlyList ScriptArgs { get; private set; } public void AddCustomPrinter(Func printer) { _console.WriteLine("Adding custom printer for " + typeof(T).Name); _printers.AddCustomPrinter(printer); } public void Print(object o) { _console.WriteLine(_printers.GetStringFor(o)); } public void Print(T o) { _console.WriteLine(_printers.GetStringFor(o)); } } }