54 lines
1.6 KiB
C#
54 lines
1.6 KiB
C#
using System.Collections.Generic;
|
|
using System.IO;
|
|
using Jint;
|
|
using ln.templates.html;
|
|
|
|
namespace ln.templates;
|
|
|
|
|
|
public class Context
|
|
{
|
|
public Context(ITemplateResolver resolver, IEnumerable<KeyValuePair<string, object>> scriptObjects, TextWriter targetWriter)
|
|
{
|
|
Resolver = resolver;
|
|
Engine = new Engine();
|
|
foreach (KeyValuePair<string,object> pair in scriptObjects)
|
|
Engine.SetValue(pair.Key, pair.Value);
|
|
TargetWriter = targetWriter;
|
|
}
|
|
public Context(ITemplateResolver resolver, Engine engine, TextWriter targetWriter)
|
|
{
|
|
Resolver = resolver;
|
|
Engine = engine;
|
|
TargetWriter = targetWriter;
|
|
}
|
|
public Context(Context source)
|
|
{
|
|
Resolver = source.Resolver;
|
|
Engine = source.Engine;
|
|
TargetWriter = source.TargetWriter;
|
|
}
|
|
|
|
public Engine Engine { get; private set; }
|
|
public ITemplateResolver Resolver { get; }
|
|
|
|
public TextWriter TargetWriter { get; }
|
|
|
|
/**
|
|
* Slots to be used for v-include and v-frame
|
|
*/
|
|
private Dictionary<string, Element> _slots = new Dictionary<string, Element>();
|
|
public bool TryGetSlot(string slotName, out Element slot) => _slots.TryGetValue(slotName, out slot);
|
|
public void SetSlot(string slotName, Element slot) => _slots[slotName] = slot;
|
|
public void ClearSlot(string slotName) => _slots.Remove(slotName);
|
|
public void ClearSlots() => _slots.Clear();
|
|
|
|
public void SetSlots(IEnumerable<KeyValuePair<string, Element>> slots)
|
|
{
|
|
_slots.Clear();
|
|
foreach (var pair in slots)
|
|
_slots.Add(pair.Key, pair.Value);
|
|
}
|
|
}
|
|
|