Beispiel #1
0
        public override void WriteOutput(OutputContext context)
        {
            for (var index = 0; index < Elements.Count; index++)
            {
                var element = Elements[index];
                if (!(element is ParentReferenceSelectorElement))
                {
                    context.Append(element);
                }

                bool isLastElement = index == Elements.Count - 1;
                if (element.HasTrailingWhitespace && !isLastElement)
                {
                    var nextElement = Elements[index + 1];
                    if (element is IdentifierSelectorElement && nextElement is IdentifierSelectorElement)
                    {
                        context.Append(' ');
                    }
                    else
                    {
                        context.AppendOptional(' ');
                    }
                }
            }
        }
Beispiel #2
0
        public override void WriteOutput(OutputContext context)
        {
            using (var scope = context.BeginUndoableScope()) {
                context.Append("@media ");
                for (var index = 0; index < mediaQueries.Count; index++)
                {
                    if (index > 0)
                    {
                        context.Append(", ");
                    }

                    var mediaQuery = mediaQueries[index];
                    context.Append(mediaQuery);
                }

                context.AppendLine(" {");

                using (context.EnterExtenderScope(Extenders))
                {
                    if (context.Append(Block))
                    {
                        scope.KeepChanges();
                    }
                }

                context.AppendLine("}");
            }
        }
Beispiel #3
0
        public override void WriteOutput(OutputContext context)
        {
            if (block.Statements.Count == 0)
            {
                return;
            }

            context.IncreaseIndentLevel();

            context.Indent();

            for (var index = 0; index < keyframePositions.Count; index++)
            {
                var keyframePosition = keyframePositions[index];

                context.Append(keyframePosition);

                if (index < keyframePositions.Count - 1)
                {
                    context.Append(", ");
                }
            }

            context.AppendOptional(' ');
            context.AppendLine("{");

            context.Append(block);

            context.Indent();
            context.AppendLine("}");

            context.DecreaseIndentLevel();
        }
Beispiel #4
0
        public override void WriteOutput(OutputContext context)
        {
            if (Block.RuleCount == 0)
            {
                return;
            }


            if (context.IsReference)
            {
                var extenderSelectorList = new SelectorList(Selectors.Selectors.SelectMany(s => context.Extensions.GetExtensions(s, includeReferences: false)));
                if (extenderSelectorList.IsEmpty())
                {
                    return;
                }

                context.Append(extenderSelectorList);
            }
            else
            {
                context.Append(Selectors);
            }

            context.AppendOptional(' ');
            context.AppendLine("{");
            context.Append(Block);
            context.Indent();
            context.AppendLine("}");
        }
Beispiel #5
0
 public override void WriteOutput(OutputContext context)
 {
     context.Append("@namespace ");
     context.Append(identifier);
     context.Append(' ');
     context.Append(ns);
     context.Append(';');
 }
Beispiel #6
0
 public override void WriteOutput(OutputContext context)
 {
     context.Append(QuoteChar);
     foreach (var lessStringFragment in parts)
     {
         context.Append(lessStringFragment);
     }
     context.Append(QuoteChar);
 }
Beispiel #7
0
 public override void WriteOutput(OutputContext context)
 {
     context.Append(rangeStart);
     if (!string.IsNullOrEmpty(rangeEnd))
     {
         context.Append('-');
         context.Append(rangeEnd);
     }
 }
Beispiel #8
0
 public override void WriteOutput(OutputContext context)
 {
     context.Append(Property);
     context.Append(':');
     context.AppendOptional(' ');
     if (Value != null)
     {
         context.Append(Value);
     }
 }
Beispiel #9
0
        public override void WriteOutput(OutputContext context)
        {
            if (Modifier != MediaQueryModifier.None)
            {
                context.Append(Modifier.ToString().ToLowerInvariant() + " ");
            }

            context.Append("(");
            context.Append(rule);
            context.Append(")");
        }
Beispiel #10
0
        public override void WriteOutput(OutputContext context)
        {
            context.Append("@supports");
            context.Append(' ');
            context.Append(condition);
            context.AppendOptional(' ');

            context.AppendLine("{");
            context.Append(block);
            context.AppendLine("}");
        }
Beispiel #11
0
        public override void WriteOutput(OutputContext context)
        {
            context.Append(prefix);
            context.Append(identifier);

            if (value != null)
            {
                context.Append('(');
                context.Append(value);
                context.Append(')');
            }
        }
Beispiel #12
0
        public override void WriteOutput(OutputContext context)
        {
            context.Append(functionName);
            context.Append('(');

            if (arguments != null)
            {
                context.Append(arguments);
            }

            context.Append(')');
        }
Beispiel #13
0
        public override void WriteOutput(OutputContext context)
        {
            for (var i = 0; i < FeatureQueries.Count; i++)
            {
                if (i > 0)
                {
                    context.Append(" and ");
                }

                var featureQuery = FeatureQueries[i];
                context.Append(featureQuery);
            }
        }
Beispiel #14
0
        public override void WriteOutput(OutputContext context)
        {
            for (var index = 0; index < conditions.Count; index++)
            {
                var supportsCondition = conditions[index];

                context.Append(supportsCondition);

                if (index < conditions.Count - 1)
                {
                    context.Append(" and ");
                }
            }
        }
Beispiel #15
0
        public override void WriteOutput(OutputContext context)
        {
            context.Indent();
            context.Append("@import");
            context.Append(' ');
            context.Append(Url);
            if (mediaQueries.Any())
            {
                context.Append(' ');

                WriteQueries(context);
            }
            context.AppendLine(";");
        }
Beispiel #16
0
 public override void WriteOutput(OutputContext context)
 {
     foreach (var identifierPart in Parts)
     {
         context.Append(identifierPart);
     }
 }
Beispiel #17
0
 public override void WriteOutput(OutputContext context)
 {
     context.Indent();
     context.Append('@');
     context.Append(ruleIdentifier);
     context.Append(' ');
     context.Append(identifier);
     context.AppendOptional(' ');
     context.AppendLine("{");
     foreach (var keyframe in keyframes)
     {
         context.Append(keyframe);
     }
     context.Indent();
     context.AppendLine("}");
 }
Beispiel #18
0
        public override void WriteOutput(OutputContext context)
        {
            context.Indent();
            context.Append("@page");
            if (additionalSelector != null)
            {
                context.Append(' ');
                context.Append(additionalSelector);
            }

            context.AppendOptional(' ');
            context.AppendLine("{");
            context.Append(block);

            context.Indent();
            context.AppendLine("}");
        }
Beispiel #19
0
        public override void WriteOutput(OutputContext context)
        {
            if (Modifier != MediaQueryModifier.None)
            {
                context.Append(Modifier.ToString().ToLowerInvariant() + " ");
            }

            if (parens)
            {
                context.Append('(');
                context.Append(identifier);
                context.Append(')');
            }
            else
            {
                context.Append(identifier);
            }
        }
Beispiel #20
0
        public override void WriteOutput(OutputContext context)
        {
            context.Append(LeftOperand);

            if (keepSpaces)
            {
                context.AppendOptional(' ');
            }

            context.Append(Operator);

            if (keepSpaces)
            {
                context.AppendOptional(' ');
            }

            context.Append(RightOperand);
        }
Beispiel #21
0
        public override void WriteOutput(OutputContext context)
        {
            context.Indent();
            context.Append("@");
            context.Append(identifier);
            if (value != null)
            {
                context.Append(' ');
                context.Append(value);
            }

            context.AppendOptional(' ');
            context.AppendLine("{");
            context.Append(block);

            context.Indent();
            context.AppendLine("}");
        }
Beispiel #22
0
        public override void WriteOutput(OutputContext context)
        {
            using (var scope = context.BeginUndoableScope()) {
                context.IncreaseIndentLevel();

                bool hasOutput = false;

                for (var index = 0; index < Statements.Count; index++)
                {
                    var statement = Statements[index];
                    if (statement is Rule r)
                    {
                        // Rules may exist within media queries, but are only indented and semicolon-terminated within rule blocks
                        context.Indent();

                        hasOutput |= context.Append(r);

                        bool isLast = index == Statements.Count - 1;
                        if (isLast)
                        {
                            context.AppendOptional(';');
                        }
                        else
                        {
                            context.Append(';');
                        }
                        context.AppendLine();
                    }
                    else
                    {
                        hasOutput |= context.Append(statement);
                    }
                }

                if (hasOutput)
                {
                    scope.KeepChanges();
                }

                context.DecreaseIndentLevel();
            }
        }
Beispiel #23
0
        public override void WriteOutput(OutputContext context)
        {
            bool isWhitespaceSeparator = char.IsWhiteSpace(Separator);

            for (var index = 0; index < Values.Count; index++)
            {
                var expression = Values[index];
                context.Append(expression);

                if (index < Values.Count - 1)
                {
                    context.Append(Separator);

                    if (!isWhitespaceSeparator)
                    {
                        context.AppendOptional(' ');
                    }
                }
            }
        }
Beispiel #24
0
        public void Compile(string inputFileName)
        {
            var context  = new EvaluationContext(new LessTreeParser(), new FileResolver(new FileSystem(), inputFileName));
            var rootNode = context.ParseCurrentStylesheet(isReference: false);

            var evaluated = rootNode.EvaluateSingle <Stylesheet>(context);

            var outputContext = new OutputContext(' ', 4);

            outputContext.Append(evaluated);

            Console.WriteLine(outputContext.GetCss());
        }
Beispiel #25
0
        protected void AssertLessUnchanged(string input)
        {
            EvaluationContext context = new EvaluationContext(new LessTreeParser(), GetFileResolver(input));

            var currentStylesheet = context.ParseCurrentStylesheet(isReference: false);
            var evaluated         = currentStylesheet.EvaluateSingle <Stylesheet>(context);

            var output = new OutputContext(' ', 2);

            output.Append(evaluated);

            Assert.Equal(input.Trim(), output.GetCss().Trim());
        }
Beispiel #26
0
        public override void WriteOutput(OutputContext context)
        {
            bool first = true;

            foreach (var node in (IEnumerable <LessNode>)measurements)
            {
                if (!first)
                {
                    context.Append(' ');
                }
                node.WriteOutput(context);

                first = false;
            }
        }
Beispiel #27
0
        private void WriteQueries(OutputContext context)
        {
            bool first = true;

            foreach (var node in (IEnumerable <LessNode>)mediaQueries)
            {
                if (!first)
                {
                    context.Append(',');
                    context.AppendOptional(' ');
                }

                node.WriteOutput(context);

                first = false;
            }
        }
Beispiel #28
0
        public override void WriteOutput(OutputContext context)
        {
            var outputSelectors = Selectors
                                  .Concat(Selectors.SelectMany(s => context.Extensions.GetExtensions(s, includeReferences: true)))
                                  .Distinct()
                                  .ToList();

            for (var index = 0; index < outputSelectors.Count; index++)
            {
                context.Indent();
                var selector = outputSelectors[index];
                context.Append(selector);
                if (index < outputSelectors.Count - 1)
                {
                    context.AppendLine(",");
                }
            }
        }
Beispiel #29
0
        public override void WriteOutput(OutputContext context)
        {
            context.Append("progid:");
            context.Append(Filter);
            context.Append('(');

            for (var index = 0; index < FilterExpressions.Count; index++)
            {
                var filterExpression = FilterExpressions[index];
                context.Append(filterExpression);

                if (index < FilterExpressions.Count - 1)
                {
                    context.Append(", ");
                }
            }

            context.Append(')');
        }
Beispiel #30
0
 public override void WriteOutput(OutputContext context)
 {
     context.Append(Value);
     context.Append(" !important");
 }