/// <summary>
        /// This will never return null, it will raise an exception if unable to satisfy the request
        /// </summary>
        public ITextFileLoader Get()
        {
            ITextFileLoader singleFileLoader = new LessCssKeyFrameScoper(_contentLoader);
            var             sourceMappingMarkerIdGenerator = new SourceMappingMarkerIdGenerator();

            if (_sourceMappingMarkerInjection == SourceMappingMarkerInjectionOptions.Inject)
            {
                singleFileLoader = new LessCssLineNumberingTextFileLoader(
                    new LessCssCommentRemovingTextFileLoader(singleFileLoader),
                    sourceMappingMarkerIdGenerator.MarkerGenerator,
                    null                     // optionalSelectorMarkerInsertionCondition (null => insert markers for all selectors)
                    );
            }
            return(new DotLessCssCssLoader(
                       new SameFolderImportFlatteningCssLoader(
                           singleFileLoader,
                           _sourceMappingMarkerInjection == SourceMappingMarkerInjectionOptions.Inject
                                                ? SameFolderImportFlatteningCssLoader.ContentLoaderCommentRemovalBehaviourOptions.CommentsAreAlreadyRemoved
                                                : SameFolderImportFlatteningCssLoader.ContentLoaderCommentRemovalBehaviourOptions.ContentIsUnprocessed,
                           _errorBehaviour,
                           _errorBehaviour,
                           _logger
                           ),
                       () => sourceMappingMarkerIdGenerator.GetInsertedMarkerIds(),
                       null,          // optionalTagNameToRemove (null => no selectors need removing)
                       _errorBehaviour,
                       _logger
                       ));
        }
Exemple #2
0
        public void KeyFrameContentNotBeIdentifiedAsSelectorsToInjectMarkerIdBefore()
        {
            var content = @"
				@keyframes modalbgfadein {
					0% { opacity: 0; }
					100% { opacity: 0.4; }
				}

				@keyframes modalfgmovedown {
					0% { top: 45%; opacity: 0; }
					100% { top: 50%; opacity: 1; }
				}"                ;

            var expected = content.Replace("\r\n", "\n");             // The process replaces "\r\n" with "\n" so we need to replace those but the content is otherwise unaltered

            var filename = "test.css";
            var lineNumberInjectingContentLoader = new LessCssLineNumberingTextFileLoader(
                new FixedListCssContentLoader(
                    new TextFileContents(filename, new DateTime(2013, 2, 5, 21, 18, 0), content)
                    ),
                (relativePath, lineNumber) => "#test.css_" + lineNumber + ",",
                null                 // optionalSelectorMarkerInsertionCondition
                );

            Assert.Equal(
                expected,
                lineNumberInjectingContentLoader.Load(filename).Content
                );
        }
Exemple #3
0
        /// <summary>
        /// This will never return null, it will raise an exception if unable to satisfy the request
        /// </summary>
        public ITextFileLoader Get()
        {
            var             scopingHtmlTagReplaceString = "REPLACEME";
            ITextFileLoader singleFileLoader            = new LessCssOpeningHtmlTagRenamer(
                _contentLoader,
                scopingHtmlTagReplaceString
                );
            var sourceMappingMarkerIdGenerator = new SourceMappingMarkerIdGenerator();

            if (_sourceMappingMarkerInjection == SourceMappingMarkerInjectionOptions.Inject)
            {
                singleFileLoader = new LessCssLineNumberingTextFileLoader(
                    new LessCssCommentRemovingTextFileLoader(singleFileLoader),
                    sourceMappingMarkerIdGenerator.MarkerGenerator,
                    selector => selector != scopingHtmlTagReplaceString                     // Don't insert marker ids on wrapper selectors that will be removed
                    );
            }
            return(new MediaQueryGroupingCssLoader(
                       new DotLessCssCssLoader(
                           new SameFolderImportFlatteningCssLoader(
                               singleFileLoader,
                               _sourceMappingMarkerInjection == SourceMappingMarkerInjectionOptions.Inject
                                                ? SameFolderImportFlatteningCssLoader.ContentLoaderCommentRemovalBehaviourOptions.CommentsAreAlreadyRemoved
                                                : SameFolderImportFlatteningCssLoader.ContentLoaderCommentRemovalBehaviourOptions.ContentIsUnprocessed,
                               _errorBehaviour,
                               _errorBehaviour,
                               _logger
                               ),
                           () => sourceMappingMarkerIdGenerator.GetInsertedMarkerIds(),
                           scopingHtmlTagReplaceString,
                           _errorBehaviour,
                           _logger
                           )
                       ));
        }
Exemple #4
0
        public void FontFaceMustNotBeIdentifiedAsSelectorToInjectMarkerIdBeforeWhenItIsTheFirstContent()
        {
            var content  = "@font-face { }";
            var expected = "@font-face { }";

            var filename = "test.css";
            var lineNumberInjectingContentLoader = new LessCssLineNumberingTextFileLoader(
                new FixedListCssContentLoader(
                    new TextFileContents(filename, new DateTime(2013, 2, 5, 21, 18, 0), content)
                    ),
                (relativePath, lineNumber) => "#test.css_" + lineNumber + ",",
                null                 // optionalSelectorMarkerInsertionCondition
                );

            Assert.Equal(
                expected,
                lineNumberInjectingContentLoader.Load(filename).Content
                );
        }
Exemple #5
0
        public void StylePropertyNamesShouldNotGetMarkersWhenFollowedByNestedSelectorWhichShould()
        {
            var content  = "body\n{\n  color: black;\n  div.Header { background: white; }\n}\n";
            var expected = "#test.css_1,body\n{\n  color: black;#test.css_4,\n  div.Header { background: white; }\n}\n";

            var filename = "test.css";
            var lineNumberInjectingContentLoader = new LessCssLineNumberingTextFileLoader(
                new FixedListCssContentLoader(
                    new TextFileContents(filename, new DateTime(2013, 2, 5, 21, 18, 0), content)
                    ),
                (relativePath, lineNumber) => "#test.css_" + lineNumber + ",",
                null                 // optionalSelectorMarkerInsertionCondition
                );

            Assert.Equal(
                expected,
                lineNumberInjectingContentLoader.Load(filename).Content
                );
        }
Exemple #6
0
        public void NestedSelectorsShouldGetMarkersAsShouldTheTopLevelSelector()
        {
            var content  = "body\n{\n  div.Header\n  {\n    color: black;\n  }\n}\n";
            var expected = "#test.css_1,body\n{#test.css_3,\n  div.Header\n  {\n    color: black;\n  }\n}\n";

            var filename = "test.css";
            var lineNumberInjectingContentLoader = new LessCssLineNumberingTextFileLoader(
                new FixedListCssContentLoader(
                    new TextFileContents(filename, new DateTime(2013, 2, 5, 21, 18, 0), content)
                    ),
                (relativePath, lineNumber) => "#test.css_" + lineNumber + ",",
                null                 // optionalSelectorMarkerInsertionCondition
                );

            Assert.Equal(
                expected,
                lineNumberInjectingContentLoader.Load(filename).Content
                );
        }