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;
        }
示例#3
0
        public RulesController(ICommandBus commandBus, IAppProvider appProvider,
                               IRuleEventRepository ruleEventsRepository, RuleRegistry ruleRegistry)
            : base(commandBus)
        {
            this.appProvider = appProvider;

            this.ruleEventsRepository = ruleEventsRepository;
            this.ruleRegistry         = ruleRegistry;
        }
示例#4
0
 public RulesController(ICommandBus commandBus,
                        IRuleEventRepository ruleEventsRepository,
                        IRuleQueryService ruleQuery,
                        RuleRegistry ruleRegistry)
     : base(commandBus)
 {
     this.ruleEventsRepository = ruleEventsRepository;
     this.ruleQuery            = ruleQuery;
     this.ruleRegistry         = ruleRegistry;
 }
示例#5
0
 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;
 }
示例#6
0
        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());
            }
        }
示例#7
0
        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);
        }
示例#8
0
        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));
        }
示例#9
0
        public RuleActionProcessor(RuleRegistry ruleRegistry)
        {
            Guard.NotNull(ruleRegistry, nameof(ruleRegistry));

            this.ruleRegistry = ruleRegistry;
        }
 public RuleActionProcessor(RuleRegistry ruleRegistry)
 {
     this.ruleRegistry = ruleRegistry;
 }