private static ProxyFlexiCardsBlock CreateProxyFlexiCardsBlock(IFlexiCardsBlockOptions flexiCardsBlockOptions = default,
                                                                int openingFenceIndex     = default,
                                                                int openingFenceCharCount = default,
                                                                BlockParser blockParser   = default)
 {
     return(new ProxyFlexiCardsBlock(flexiCardsBlockOptions, openingFenceIndex, openingFenceCharCount, blockParser));
 }
Example #2
0
 internal virtual void ValidateDefaultCardOptions(IFlexiCardsBlockOptions flexiCardsBlockOptions)
 {
     if (flexiCardsBlockOptions.DefaultCardOptions == null)
     {
         throw new OptionsException(nameof(IFlexiCardsBlockOptions.DefaultCardOptions), Strings.OptionsException_Shared_ValueMustNotBeNull);
     }
 }
Example #3
0
        /// <summary>
        /// Creates a <see cref="FlexiCardsBlock"/> from a <see cref="ProxyFlexiCardsBlock"/>.
        /// </summary>
        /// <param name="proxyFencedBlock">The <see cref="ProxyFlexiCardsBlock"/> containing data for the <see cref="FlexiCardsBlock"/>.</param>
        /// <param name="blockProcessor">The <see cref="BlockProcessor"/> processing the <see cref="FlexiCardsBlock"/>.</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 FlexiCardsBlock Create(ProxyFlexiCardsBlock proxyFencedBlock, BlockProcessor blockProcessor)
        {
            if (proxyFencedBlock == null)
            {
                throw new ArgumentNullException(nameof(proxyFencedBlock));
            }

            IFlexiCardsBlockOptions flexiCardsBlockOptions = proxyFencedBlock.FlexiCardsBlockOptions;

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

            // Card size
            FlexiCardBlockSize cardSize = flexiCardsBlockOptions.CardSize;

            ValidateCardSize(cardSize);

            // Create block
            var flexiCardsBlock = new FlexiCardsBlock(blockName, cardSize, flexiCardsBlockOptions.Attributes, proxyFencedBlock.Parser)
            {
                Line   = proxyFencedBlock.Line,
                Column = proxyFencedBlock.Column,
                Span   = proxyFencedBlock.Span
            };

            MoveChildren(proxyFencedBlock, flexiCardsBlock);

            return(flexiCardsBlock);
        }
Example #4
0
 /// <summary>
 /// Creates a <see cref="ProxyFlexiCardsBlock"/>.
 /// </summary>
 /// <param name="flexiCardsBlockOptions">The <see cref="IFlexiCardsBlockOptions"/> for the <see cref="FlexiCardsBlock"/>.</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="ProxyFlexiCardsBlock"/>.</param>
 public ProxyFlexiCardsBlock(IFlexiCardsBlockOptions flexiCardsBlockOptions,
                             int openingFenceIndent,
                             int openingFenceCharCount,
                             BlockParser blockParser) :
     base(openingFenceIndent, openingFenceCharCount, nameof(FlexiCardsBlock), blockParser)
 {
     FlexiCardsBlockOptions = flexiCardsBlockOptions;
 }
        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>();
            IFlexiCardsBlockOptions dummyFlexiCardsBlockOptions = _mockRepository.Create <IFlexiCardsBlockOptions>().Object;
            Mock <IOptionsService <IFlexiCardsBlockOptions, IFlexiCardsBlocksExtensionOptions> > mockOptionsService = _mockRepository.
                                                                                                                      Create <IOptionsService <IFlexiCardsBlockOptions, IFlexiCardsBlocksExtensionOptions> >();

            mockOptionsService.Setup(f => f.CreateOptions(dummyBlockProcessor)).
            Returns((dummyFlexiCardsBlockOptions, (IFlexiCardsBlocksExtensionOptions)null));
            Mock <FlexiCardsBlockFactory> mockTestSubject = CreateMockFlexiCardsBlockFactory(mockOptionsService.Object);

            mockTestSubject.CallBase = true;
            mockTestSubject.Setup(t => t.ValidateDefaultCardOptions(dummyFlexiCardsBlockOptions));

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

            // Assert
            _mockRepository.VerifyAll();
            Assert.Same(dummyFlexiCardsBlockOptions, result.FlexiCardsBlockOptions);
            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);
        }