public DefaultExpressionCompiler(ICompiledHandlebarsConfiguration configuration, ClosureFeature closureFeature) { _closureFeature = closureFeature; _templateClosure = closureFeature?.TemplateClosure; _closure = closureFeature?.ClosureInternal; _expressionMiddleware = configuration.ExpressionMiddleware; }
private ExpressionContainer GetOrAddExpressionContainer(IfDefSet ifDefs) { ExpressionContainer container; if (_knownReferences.TryGetValue(ifDefs, out container)) { return(container); } if (ifDefs.Count == 1) { return(AddIfDefExpressionContainer(ifDefs.First())); } container = new ExpressionContainer(); var listContainers = new List <ExpressionContainer>(ifDefs.Count); foreach (var ifDef in ifDefs) { listContainers.Add(GetOrAddExpressionContainer(new IfDefSet(ifDef))); } var operands = new Operands(listContainers.Select(_ => _.FlatExpression.Operands).SelectMany(_ => _) .Distinct().OrderBy(_ => _).ToArray()); var flatExpr = new FlatExpression(operands); foreach (var c in listContainers) { flatExpr = flatExpr.Or(c.FlatExpression); } container.FlatExpression = flatExpr; _knownReferences.Add(ifDefs, container); return(container); }
private void GenerateCommandParameterProperties(List <ExpressionContainer> expressionContainers) { foreach (IGrouping <string, ExpressionContainer> expressions in expressionContainers.GroupBy(x => x.TargetObject)) { const string attributeName = "CommandParameter"; Regex commandParameterEventRegex = new Regex("^(?<eventName>[a-zA-Z0-9_]+)\\." + attributeName, RegexOptions.Compiled | RegexOptions.IgnoreCase); List <ExpressionContainer> commandParameterEventExpressions = expressions.Where(x => commandParameterEventRegex.IsMatch(x.TargetField)).ToList(); ExpressionContainer commandParameterExpression = expressions.SingleOrDefault(x => attributeName.Equals(x.TargetField, StringComparison.InvariantCultureIgnoreCase)); commandParameterEventExpressions.ForEach(x => x.IsCommandParameterExpression = true); if (commandParameterExpression != null) { commandParameterExpression.IsCommandParameterExpression = true; } foreach (ExpressionContainer expression in commandParameterEventExpressions) { //find associated event (if exists) string eventName = commandParameterEventRegex.Match(expression.TargetField).Groups["eventName"].Value; ExpressionContainer associatedExpression = expressions.FirstOrDefault(x => eventName.Equals(x.TargetField, StringComparison.InvariantCultureIgnoreCase) && !x.IsCommandParameterExpression); if (associatedExpression != null) { // create proxy property CommandParameterProxy to handle this var result = CodeGeneratorHelper.GenerateProxyProperty(NameGeneratorHelper.GetCommandParameterName(), "CommandParameterProxy"); Properties.Add(result.Item2); Fields.Add(result.Item1); string propertyName = CodeGeneratorHelper.GetPropertyReference(result.Item2).PropertyName; // retarget the binding expression to this new property and to the Value field expression.TargetObject = propertyName; expression.TargetField = "Value"; associatedExpression.CommandParameterTarget = propertyName; } } if (commandParameterExpression != null) { // create proxy property CommandParameterProxy to handle this var result = CodeGeneratorHelper.GenerateProxyProperty(NameGeneratorHelper.GetCommandParameterName(), "CommandParameterProxy"); Properties.Add(result.Item2); Fields.Add(result.Item1); string propertyName = CodeGeneratorHelper.GetPropertyReference(result.Item2).PropertyName; // retarget the binding expression to this new property and to the Value field commandParameterExpression.TargetObject = propertyName; commandParameterExpression.TargetField = "Value"; foreach (ExpressionContainer associatedExpression in expressions.Where(x => string.IsNullOrEmpty(x.CommandParameterTarget) && !x.IsCommandParameterExpression)) { associatedExpression.CommandParameterTarget = propertyName; } } } }
public GageRRFieldBuilder(IExpressionsSerializer serializer, string expressionXml) { _expressionXml = expressionXml; _expressionContainer = serializer.Deserialize(expressionXml); _connections = GetRelatedConnections(); _sourceFields = GetRelatedSourceFields(); }
public void ToExpressionWithInterferingTypeFromOtherAssembly() { var container = new ExpressionContainer(); var expression = container.GetExpression(); var node = expression.ToExpressionNode(); var result = node.ToExpression(); ExpressionAssert.AreEqual(expression, result); }
GameObject SpawnExpressionContainer(Expression e, Vector3 pos, Quaternion rot) { GameObject expressionContainerInstance = Instantiate(ExpressionContainerPrefab, pos, rot); ExpressionContainer expressionContainerScript = expressionContainerInstance.GetComponent <ExpressionContainer>(); expressionContainerScript.Expression = e; return(expressionContainerInstance); }
GameObject SpawnExpressionContainer(Expression e, Vector3 pos, Quaternion rot, Transform parent) { GameObject expressionContainerInstance = Instantiate(expressionContainerPrefab, parent.position + pos, parent.rotation * Quaternion.Euler(0, 0, 90) * Quaternion.Euler(90, 0, 0) * rot); ExpressionContainer expressionContainerScript = expressionContainerInstance.GetComponent <ExpressionContainer>(); expressionContainerScript.Expression = e; return(expressionContainerInstance); }
protected override async Task Context() { await base.Context(); _snapshot = new ExpressionContainer { Name = "Plasma", Value = 5 }; _expressionContainerMapperContext.Molecule = _enzyme; _expressionContainerMapperContext.ExpressionParameters = new Cache <string, IParameter> { { _snapshot.Name, _relativeExpressionParameter } }; }
private void SwagItemsControl_Remove(object sender, RoutedEventArgs e) { FrameworkElement fe = (FrameworkElement)e.OriginalSource; BooleanExpression exp = (BooleanExpression)fe.DataContext; if (exp.Parent == null) { ExpressionContainer.Remove(exp); } else { exp.Parent.Children.Remove(exp); } }
public static double Calculate(ExpressionContainer container) { ExpressionContainer resultContainer; // Считаем приоритетные операции. resultContainer = CalculateContainer(container, typeof(ExpressionPriorityOperation)); // Считаем базовые операции resultContainer = CalculateContainer(container, typeof(ExpressionSimpleOperation)); ExpressionNumber result = (ExpressionNumber)resultContainer.Get(); return(result.Convert()); }
private ExpressionContainer AddIfDefExpressionContainer(IfDefReference ifdef) { var expr = new FlatExpression(new Operands(ifdef.Node.Value), new FlatExpressionLine(ifdef.Defined ? 1ul : 0ul)); if (ifdef.Node.Extra.Define.IfDefs?.Count > 0) { var parentIfDefs = ifdef.Node.Extra.Define.IfDefs; var listContainers = new List <ExpressionContainer>(parentIfDefs.Count); foreach (var ifDef in parentIfDefs) { listContainers.Add(GetOrAddExpressionContainer(new IfDefSet(ifDef))); } var operands = new Operands(listContainers .Select(_ => _.FlatExpression.Operands.Concat(expr.Operands)) .SelectMany(_ => _) .Distinct() .OrderBy(_ => _) .ToArray()); var flatExpr = new FlatExpression(operands); foreach (var c in listContainers) { flatExpr = flatExpr.Or(c.FlatExpression); } expr = flatExpr.And(expr); } if (ifdef.Defined) { ifdef.Node.Extra.Define.IfDefExpression = expr.AsTreeExpression().ToString(); } else { ifdef.Node.Extra.Define.IfNotDefExpression = expr.AsTreeExpression().ToString(); } var container = new ExpressionContainer { FlatExpression = expr }; _knownReferences.Add(new IfDefSet(ifdef), container); return(container); }
private static ExpressionContainer CalculateContainer(ExpressionContainer container, System.Type operationType) { List <ExpressionElement> expression = container.GetExpression(); bool isComplited = false; while (isComplited == false) { // Идея просчёт в том, что мы последовательно обходим всё выражение. // Если нам попадаются простые операции(+, -), мы их пропускаем, // если попались приоритетные операции, то мы их считаем и сразу удаляем // из выражения записывая на их место результат. isComplited = true; for (int i = 0; i < expression.Count; i++) { ExpressionElement element = expression[i]; if (element is ExpressionNumber || element.GetType().IsSubclassOf(operationType) == false) { continue; } ExpressionOperation operation = (ExpressionOperation)element; ExpressionNumber number1 = (ExpressionNumber)expression[i - 1]; ExpressionNumber number2 = (ExpressionNumber)expression[i + 1]; expression[i - 1] = new ExpressionNumber(operation.Calculate(number1, number2).ToString()); expression.Remove(expression[i + 1]); expression.Remove(expression[i]); isComplited = false; break; } } return(new ExpressionContainer(expression)); }
public CompilationContextArgs(CompilationContext context) { BindingContext = new ExpressionContainer <BindingContext>(context.BindingContext); EncodedWriter = new ExpressionContainer <EncodedTextWriter>(context.EncodedWriter); }
protected override Task Context() { _parameterMapper = A.Fake <ParameterMapper>(); _expressionContainerMapper = A.Fake <ExpressionContainerMapper>(); _executionContext = A.Fake <IExecutionContext>(); _individualMoleculeFactoryResolver = A.Fake <IIndividualMoleculeFactoryResolver>(); _ontogenyMapper = A.Fake <OntogenyMapper>(); _ontogenyTask = A.Fake <IOntogenyTask <Individual> >(); _individualMoleculeParametersTask = A.Fake <IMoleculeParameterTask>(); sut = new MoleculeMapper(_parameterMapper, _expressionContainerMapper, _ontogenyMapper, _individualMoleculeFactoryResolver, _executionContext, _ontogenyTask, _individualMoleculeParametersTask); _ontogeny = new DatabaseOntogeny { Name = "Ontogeny" }; _enzyme = new IndividualEnzyme { Name = "Enzyme", Description = "Help", Ontogeny = _ontogeny, }; _transporter = new IndividualTransporter { Name = "Transporter", Description = "Help" }; _otherProtein = new IndividualOtherProtein { Name = "OtherProtein", Description = "Help" }; _enzymeGlobalParameter = DomainHelperForSpecs.ConstantParameterWithValue(5, isDefault: true).WithName(CoreConstants.Parameters.HALF_LIFE_LIVER); _enzymeGlobalParameterSnapshot = new Parameter(); A.CallTo(() => _parameterMapper.MapToSnapshot(_enzymeGlobalParameter)).Returns(_enzymeGlobalParameterSnapshot); _expressionContainer1 = new MoleculeExpressionContainer { Name = "Exp Container1" }; _expressionContainer2 = new MoleculeExpressionContainer { Name = "Exp Container2" }; _enzyme.AddChildren(_expressionContainer1, _expressionContainer2, _enzymeGlobalParameter); _relativeExpressionParameter1 = DomainHelperForSpecs.ConstantParameterWithValue(0.5).WithName(CoreConstants.Parameters.REL_EXP); _relativeExpressionParameterNorm1 = DomainHelperForSpecs.ConstantParameterWithValue(1).WithName(CoreConstants.Parameters.REL_EXP_NORM); _expressionContainer1.Add(_relativeExpressionParameter1); _expressionContainer1.Add(_relativeExpressionParameterNorm1); _relativeExpressionParameterNotSet = DomainHelperForSpecs.ConstantParameterWithValue(0).WithName(CoreConstants.Parameters.REL_EXP); _relativeExpressionParameterNotSetNorm = DomainHelperForSpecs.ConstantParameterWithValue(0).WithName(CoreConstants.Parameters.REL_EXP_NORM); _expressionContainer2.Add(_relativeExpressionParameterNotSet); _expressionContainer2.Add(_relativeExpressionParameterNotSetNorm); _relativeExpressionContainerSnapshot1 = new ExpressionContainer(); _relativeExpressionContainerSnapshot2 = new ExpressionContainer(); A.CallTo(() => _expressionContainerMapper.MapToSnapshot(_expressionContainer1)).Returns(_relativeExpressionContainerSnapshot1); A.CallTo(() => _expressionContainerMapper.MapToSnapshot(_expressionContainer2)).Returns(_relativeExpressionContainerSnapshot2); _snapshotOntogeny = new Snapshots.Ontogeny(); A.CallTo(() => _ontogenyMapper.MapToSnapshot(_ontogeny)).Returns(_snapshotOntogeny); _individual = new Individual(); return(_completed); }
protected override Task Context() { _parameterMapper = A.Fake <ParameterMapper>(); _expressionContainerMapper = A.Fake <ExpressionContainerMapper>(); _expressionProfileFactory = A.Fake <IExpressionProfileFactory>(); _ontogenyMapper = A.Fake <OntogenyMapper>(); _ontogenyTask = A.Fake <IOntogenyTask>(); _moleculeExpressionTask = A.Fake <IMoleculeExpressionTask <Individual> >(); _moleculeParameterTask = A.Fake <IMoleculeParameterTask>(); sut = new ExpressionProfileMapper( _parameterMapper, _expressionContainerMapper, _ontogenyMapper, _ontogenyTask, _moleculeExpressionTask, _expressionProfileFactory, _moleculeParameterTask); _ontogeny = new DatabaseOntogeny { Name = "Ontogeny" }; _expressionProfileEnzyme = DomainHelperForSpecs.CreateExpressionProfile <IndividualEnzyme>("Enzyme"); _expressionProfileEnzyme.Molecule.Ontogeny = _ontogeny; _expressionProfileEnzyme.Description = "Help"; _expressionProfileTransporter = DomainHelperForSpecs.CreateExpressionProfile <IndividualTransporter>("Transporter"); _expressionProfileTransporter.Description = "Help"; _expressionProfileOtherProtein = DomainHelperForSpecs.CreateExpressionProfile <IndividualOtherProtein>("OtherProtein"); _enzymeGlobalParameter = DomainHelperForSpecs.ConstantParameterWithValue(5, isDefault: true) .WithName(CoreConstants.Parameters.HALF_LIFE_LIVER); _enzymeGlobalParameterSnapshot = new Parameter(); A.CallTo(() => _parameterMapper.MapToSnapshot(_enzymeGlobalParameter)).Returns(_enzymeGlobalParameterSnapshot); _expressionContainer1 = new MoleculeExpressionContainer { Name = "Exp Container1" }; _expressionContainer2 = new MoleculeExpressionContainer { Name = "Exp Container2" }; _expressionProfileEnzyme.Individual.AddChildren(_expressionContainer1, _expressionContainer2, _enzymeGlobalParameter); _expressionProfileEnzyme.Molecule.DowncastTo <IndividualEnzyme>().Localization = Localization.Intracellular | Localization.BloodCellsMembrane; _relativeExpressionParameter1 = DomainHelperForSpecs.ConstantParameterWithValue(0.5).WithName(CoreConstants.Parameters.REL_EXP); _expressionContainer1.Add(_relativeExpressionParameter1); _relativeExpressionParameterNotSet = DomainHelperForSpecs.ConstantParameterWithValue(0).WithName(CoreConstants.Parameters.REL_EXP); _expressionContainer2.Add(_relativeExpressionParameterNotSet); _relativeExpressionContainerSnapshot1 = new ExpressionContainer(); _relativeExpressionContainerSnapshot2 = new ExpressionContainer(); A.CallTo(() => _expressionContainerMapper.MapToSnapshot(_expressionContainer1)).Returns(_relativeExpressionContainerSnapshot1); A.CallTo(() => _expressionContainerMapper.MapToSnapshot(_expressionContainer2)).Returns(_relativeExpressionContainerSnapshot2); _snapshotOntogeny = new Snapshots.Ontogeny(); A.CallTo(() => _ontogenyMapper.MapToSnapshot(_ontogeny)).Returns(_snapshotOntogeny); _individual = new Individual(); return(_completed); }
private void SwagItemsControl_Clear(object sender, RoutedEventArgs e) { ExpressionContainer.Clear(); CollectionViewSource.GetDefaultView(ExpressionContainer).Refresh(); }
public ClosureVisitor(ExpressionContainer <object[]> arg, TemplateClosure templateClosure) { _templateClosure = templateClosure; _templateClosureArg = arg; }
public ClosureExpressionMiddleware(TemplateClosure closure, ExpressionContainer <object[]> closureArg) { _closure = closure; _closureArg = closureArg; }
/// <summary> /// Serializes the designer to a deserializeble string. /// </summary> /// <param name="expression">An instance of <see cref="ExpressionContainer"/> to serialize.</param> /// <returns><see cref="System.String"/></returns> public abstract string Serialize(ExpressionContainer expression);