Beispiel #1
0
        /// <summary>
        /// Get or create <see cref="ILineInlines"/> section in the <paramref name="line"/>.
        /// </summary>
        /// <param name="line"></param>
        /// <param name="inlines">inlines with dictionary</param>
        /// <returns><paramref name="line"/> or inlines key</returns>
        /// <exception cref="LineException">If <paramref name="line"/> doesn't implement <see cref="ILineInlines"/></exception>
        public static ILine GetOrCreateInlines(this ILine line, out ILineInlines inlines)
        {
            ILineInlines _inlines = line.FindInlines();

            if (_inlines != null)
            {
                inlines = _inlines; return(line);
            }
            inlines = _inlines = line.Append <ILineInlines>();
            return(_inlines);
        }
Beispiel #2
0
        /// <summary>
        /// Create inlined <paramref name="subkey"/> resource.
        /// </summary>
        /// <param name="lineFactory"></param>
        /// <param name="subkey">subkey in parametrized format, e.g. "Culture:en"</param>
        /// <param name="value">(optional) value to append, if null removes previously existing the inline</param>
        /// <returns>new line with inlines or <paramref name="lineFactory"/></returns>
        /// <exception cref="LineException">If key can't be inlined.</exception>
        public static ILine Inline(this ILineFactory lineFactory, ILine subkey, byte[] value)
        {
            ILineInlines inlines = lineFactory.Create <ILineInlines>(null);

            if (value != null)
            {
                subkey = subkey.Resource(value);
            }
            if (subkey != null)
            {
                inlines[subkey] = subkey;
            }
            return(inlines);
        }
Beispiel #3
0
        /// <summary>
        /// Inline <paramref name="value"/> to <paramref name="culture"/>.
        /// </summary>
        /// <param name="lineFactory"></param>
        /// <param name="culture">subkey in parametrized format, e.g. "Culture:en", or "Culture:en:N:One"</param>
        /// <param name="value">(optional) value to append, if null removes previously existing the inline</param>
        /// <returns>new line with inlines or <paramref name="lineFactory"/></returns>
        /// <exception cref="LineException">If key can't be inlined.</exception>
        public static ILine InlineCulture(this ILineFactory lineFactory, string culture, IString value)
        {
            ILineInlines inlines = lineFactory.Create <ILineInlines>(null);
            ILine        subkey  = lineFactory.Create <ILineNonCanonicalKey, string, string>(null, "Culture", culture);

            if (value != null)
            {
                subkey = subkey.String(value);
            }
            if (subkey != null)
            {
                inlines[subkey] = subkey;
            }
            return(inlines);
        }
 /// <summary>
 /// Append part.
 /// </summary>
 /// <param name="appender"></param>
 /// <param name="previous"></param>
 /// <param name="line"></param>
 /// <returns></returns>
 public virtual bool TryCreate(ILineFactory appender, ILine previous, out ILineInlines line)
 {
     line = new LineInlines(appender, previous, new Dictionary <ILine, ILine>(LineComparer.Default));
     return(true);
 }
 /// <summary>
 /// Append part.
 /// </summary>
 /// <param name="appender"></param>
 /// <param name="previous"></param>
 /// <param name="inlines"></param>
 /// <param name="line"></param>
 /// <returns></returns>
 public virtual bool TryCreate(ILineFactory appender, ILine previous, IDictionary <ILine, ILine> inlines, out ILineInlines line)
 {
     line = new LineInlines(appender, previous, inlines);
     return(true);
 }