コード例 #1
0
 public static SpecialCharValues Create(SpecialCharFlags flags, ModifierElement modifier)
 {
     return(new SpecialCharValues
     {
         Flags = flags,
         ModifierElement = modifier
     });
 }
コード例 #2
0
 /// <summary>
 /// Create a print mode modifier element.
 /// </summary>
 /// <param name="element">The element to create.</param>
 /// <returns>The created modifier.</returns>
 public virtual IModifier CreateModifier(ModifierElement element)
 {
     throw new NotImplementedException();
 }
コード例 #3
0
        /// <summary>
        /// Resolves the pseudo selector by element
        /// </summary>
        private ModifierBase resolveModifier(ModifierElement element)
        {
            var descriptors = DescriptorRepository.GetModifierDescriptors();
            var elements = descriptors.Where(descriptor => NameMatcher.Match(descriptor.Value, element.Name))
                                      .Where(descriptor => descriptor.Arguments.Count() == element.Arguments.Count())
                                      .Select(pseudo => new
                                      {
                                          pseudo.Type,
                                          Arguments = element.Arguments.Select(createModifierSelectorArgument)
                                      })
                                      .ToArray();

            if (elements.Length > 1)
                throw new Exception($"Ambiguity of modifier selector: {element.Name}");
            if (!elements.Any())
                throw new Exception($"Not found modifier selector: {element.Name}");

            var modifier = elements.Single();
            return SelectorFactory.CreateModifier(modifier.Type, modifier.Arguments);
        }