コード例 #1
0
 private static ProxyFlexiTabsBlock CreateProxyFlexiTabsBlock(IFlexiTabsBlockOptions flexiTabsBlockOptions = default,
                                                              int openingFenceIndex     = default,
                                                              int openingFenceCharCount = default,
                                                              BlockParser blockParser   = default)
 {
     return(new ProxyFlexiTabsBlock(flexiTabsBlockOptions, openingFenceIndex, openingFenceCharCount, blockParser));
 }
コード例 #2
0
 internal virtual void ValidateDefaultTabOptions(IFlexiTabsBlockOptions flexiTabsBlockOptions)
 {
     if (flexiTabsBlockOptions.DefaultTabOptions == null)
     {
         throw new OptionsException(nameof(IFlexiTabsBlockOptions.DefaultTabOptions), Strings.OptionsException_Shared_ValueMustNotBeNull);
     }
 }
コード例 #3
0
 /// <summary>
 /// Creates a <see cref="ProxyFlexiTabsBlock"/>.
 /// </summary>
 /// <param name="flexiTabsBlockOptions">The <see cref="IFlexiTabsBlockOptions"/> for the <see cref="FlexiTabsBlock"/>.</param>
 /// <param name="openingFenceIndent">The indent of the opening fence.</param>
 /// <param name="openingFenceCharCount">The number of characters in opening fence.</param>
 /// <param name="blockParser">The <see cref="BlockParser"/> parsing the fenced <see cref="ProxyFlexiTabsBlock"/>.</param>
 public ProxyFlexiTabsBlock(IFlexiTabsBlockOptions flexiTabsBlockOptions,
                            int openingFenceIndent,
                            int openingFenceCharCount,
                            BlockParser blockParser) :
     base(openingFenceIndent, openingFenceCharCount, nameof(FlexiTabsBlock), blockParser)
 {
     FlexiTabsBlockOptions = flexiTabsBlockOptions;
 }
コード例 #4
0
        public void CreateProxyFencedBlock_CreatesProxyFencedBlock()
        {
            // Arrange
            const int      dummyOpeningFenceIndent    = 5;
            const int      dummyOpeningFenceCharCount = 6;
            const int      dummyColumn         = 2;
            var            dummyLine           = new StringSlice("dummyText", 3, 8);
            BlockProcessor dummyBlockProcessor = MarkdigTypesFactory.CreateBlockProcessor();

            dummyBlockProcessor.Column = dummyColumn;
            dummyBlockProcessor.Line   = dummyLine;
            Mock <BlockParser>     dummyBlockParser           = _mockRepository.Create <BlockParser>();
            IFlexiTabsBlockOptions dummyFlexiTabsBlockOptions = _mockRepository.Create <IFlexiTabsBlockOptions>().Object;
            Mock <IOptionsService <IFlexiTabsBlockOptions, IFlexiTabsBlocksExtensionOptions> > mockOptionsService = _mockRepository.
                                                                                                                    Create <IOptionsService <IFlexiTabsBlockOptions, IFlexiTabsBlocksExtensionOptions> >();

            mockOptionsService.Setup(f => f.CreateOptions(dummyBlockProcessor)).
            Returns((dummyFlexiTabsBlockOptions, (IFlexiTabsBlocksExtensionOptions)null));
            Mock <FlexiTabsBlockFactory> mockTestSubject = CreateMockFlexiTabsBlockFactory(mockOptionsService.Object);

            mockTestSubject.CallBase = true;
            mockTestSubject.Setup(t => t.ValidateDefaultTabOptions(dummyFlexiTabsBlockOptions));

            // Act
            ProxyFlexiTabsBlock result = mockTestSubject.Object.CreateProxyFencedBlock(dummyOpeningFenceIndent,
                                                                                       dummyOpeningFenceCharCount,
                                                                                       dummyBlockProcessor,
                                                                                       dummyBlockParser.Object);

            // Assert
            _mockRepository.VerifyAll();
            Assert.Same(dummyFlexiTabsBlockOptions, result.FlexiTabsBlockOptions);
            Assert.Equal(dummyOpeningFenceIndent, result.OpeningFenceIndent);
            Assert.Equal(dummyOpeningFenceCharCount, result.OpeningFenceCharCount);
            Assert.Same(dummyBlockParser.Object, result.Parser);
            Assert.Equal(dummyColumn, result.Column);
            Assert.Equal(dummyLine.Start, result.Span.Start);
            Assert.Equal(0, result.Span.End);
        }
コード例 #5
0
        /// <summary>
        /// Creates a <see cref="FlexiTabsBlock"/> from a <see cref="ProxyFlexiTabsBlock"/>.
        /// </summary>
        /// <param name="proxyFencedBlock">The <see cref="ProxyFlexiTabsBlock"/> containing data for the <see cref="FlexiTabsBlock"/>.</param>
        /// <param name="blockProcessor">The <see cref="BlockProcessor"/> processing the <see cref="FlexiTabsBlock"/>.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="proxyFencedBlock"/> is <c>null</c>.</exception>
        /// <exception cref="OptionsException">Thrown if an option is invalid.</exception>
        public override FlexiTabsBlock Create(ProxyFlexiTabsBlock proxyFencedBlock, BlockProcessor blockProcessor)
        {
            if (proxyFencedBlock == null)
            {
                throw new ArgumentNullException(nameof(proxyFencedBlock));
            }

            IFlexiTabsBlockOptions flexiTabsBlockOptions = proxyFencedBlock.FlexiTabsBlockOptions;

            // Block name
            string blockName = ResolveBlockName(flexiTabsBlockOptions.BlockName);

            // Create block
            var flexiTabsBlock = new FlexiTabsBlock(blockName, flexiTabsBlockOptions.Attributes, proxyFencedBlock.Parser)
            {
                Line   = proxyFencedBlock.Line,
                Column = proxyFencedBlock.Column,
                Span   = proxyFencedBlock.Span
            };

            MoveChildren(proxyFencedBlock, flexiTabsBlock);

            return(flexiTabsBlock);
        }