public SerializationInitializer(JsonSerializer jsonNetSerializer, IJsonSerializer jsonSerializer, RuleRegistry ruleRegistry) { this.jsonNetSerializer = jsonNetSerializer; this.jsonSerializer = jsonSerializer; this.ruleRegistry = ruleRegistry; }
private static async Task UpdateSheetRulesAsync(string file, IEnumerable <CssSelectorChangeData> set) { ////Get off the UI thread //await Task.Factory.StartNew(() => { }); var doc = DocumentFactory.GetDocument(file, true); if (doc == null) { return; } var oldSnapshotOnChange = doc.IsProcessingUnusedCssRules; var window = EditorExtensionsPackage.DTE.ItemOperations.OpenFile(file); window.Activate(); var buffer = ProjectHelpers.GetCurentTextBuffer(); var flattenedRules = FlattenRules(doc); var allEdits = new List <CssRuleBlockSyncAction>(); doc.IsProcessingUnusedCssRules = false; doc.Reparse(buffer.CurrentSnapshot.GetText()); foreach (var item in set) { var selectorName = RuleRegistry.StandardizeSelector(item.Rule); var matchingRules = flattenedRules.Where(x => string.Equals(x.CleansedSelectorName, selectorName, StringComparison.Ordinal)).OrderBy(x => x.Offset).ToList(); var rule = matchingRules[item.RuleIndex]; var actions = await CssRuleDefinitionSync.ComputeSyncActionsAsync(rule.Source, item.NewValue, item.OldValue); allEdits.AddRange(actions); } var compositeEdit = buffer.CreateEdit(); try { foreach (var action in allEdits) { action(window, compositeEdit); } } catch { compositeEdit.Cancel(); } finally { if (!compositeEdit.Canceled) { compositeEdit.Apply(); EditorExtensionsPackage.ExecuteCommand("Edit.FormatDocument"); window.Document.Save(); } } //await Task.Delay(2000); //<-- Try to wait for the files to actually save doc.IsProcessingUnusedCssRules = oldSnapshotOnChange; }
public RulesController(ICommandBus commandBus, IAppProvider appProvider, IRuleEventRepository ruleEventsRepository, RuleRegistry ruleRegistry) : base(commandBus) { this.appProvider = appProvider; this.ruleEventsRepository = ruleEventsRepository; this.ruleRegistry = ruleRegistry; }
public RulesController(ICommandBus commandBus, IRuleEventRepository ruleEventsRepository, IRuleQueryService ruleQuery, RuleRegistry ruleRegistry) : base(commandBus) { this.ruleEventsRepository = ruleEventsRepository; this.ruleQuery = ruleQuery; this.ruleRegistry = ruleRegistry; }
public RulesController(ICommandBus commandBus, IRuleEventRepository ruleEventsRepository, IRuleQueryService ruleQuery, IRuleRunnerService ruleRunnerService, RuleRegistry ruleRegistry, EventJsonSchemaGenerator eventJsonSchemaGenerator) : base(commandBus) { this.ruleEventsRepository = ruleEventsRepository; this.ruleQuery = ruleQuery; this.ruleRunnerService = ruleRunnerService; this.ruleRegistry = ruleRegistry; this.eventJsonSchemaGenerator = eventJsonSchemaGenerator; }
public async Task TestGetRuleAsync() { var candles = await ImportIOhlcvDatasAsync(); RuleRegistry.Register("isbelowsma30_2", "ic.Get<SimpleMovingAverage>(30)[ic.Index].Tick.IsTrue(t => t > ic.Close)"); RuleRegistry.Register("isbelowsma30", (ic, p) => ic.Get <SimpleMovingAverage>(p[0])[ic.Index].Tick.IsTrue(t => t > ic.Close)); using (var ctx = new AnalyzeContext(candles)) { var result = new SimpleRuleExecutor(ctx, ctx.GetRule("isbelowsma30_2")).Execute(); var result2 = new SimpleRuleExecutor(ctx, ctx.GetRule("isbelowsma30", 30)).Execute(); var result3 = new SimpleRuleExecutor(ctx, ic => ic.IsBelowSma(30)).Execute(); Assert.AreEqual(result.Count(), result3.Count()); Assert.AreEqual(result2.Count(), result3.Count()); } }
public async Task TestGetRuleByRuleCreateAsync() { var candles = await ImportIOhlcvDatasAsync(); RuleRegistry.Register("isabovesmax", (ic, p) => ic.Get <SimpleMovingAverage>(p[0])[ic.Index].Tick.IsTrue(t => t < ic.Close)); RuleRegistry.Register("isbelowsmax", (ic, p) => ic.Get <SimpleMovingAverage>(p[0])[ic.Index].Tick.IsTrue(t => t > ic.Close)); var buyRule = Rule.Create(ic => ic.Eval("isabovesmax", 30)); var sellRule = Rule.Create(ic => ic.Eval("isbelowsmax", 30)); var runner = new Builder() .Add(candles) .Buy(buyRule) .Sell(sellRule) .Build(); var result = runner.Run(10000); Assert.IsTrue(true); }
public Predicate <T> GetRule <T>(string name, params decimal[] parameters) where T : IIndexedObject <TInput> { var func = (Func <T, IReadOnlyList <decimal>, bool>)RuleRegistry.Get(name); return(ic => func(ic, parameters)); }
public RuleActionProcessor(RuleRegistry ruleRegistry) { Guard.NotNull(ruleRegistry, nameof(ruleRegistry)); this.ruleRegistry = ruleRegistry; }
public RuleActionProcessor(RuleRegistry ruleRegistry) { this.ruleRegistry = ruleRegistry; }