Exemple #1
0
 public PersonController(PersonRepository personRepository, IMapper mapper, IEmailHelper emailHelper, ITokenClass tokenClass)
 {
     _personRepository = personRepository;
     _mapper = mapper;
     _emailHelper = emailHelper;
     _tokenClass = tokenClass;
 }
Exemple #2
0
 internal static Syntax CreateSourceSyntax
     (
         Syntax left,
         ITokenClass tokenClass,
         IToken token,
         Syntax right)
     => new Syntax(left, tokenClass, token, right);
Exemple #3
0
 public TokenController(IConfiguration config, PersonRepository personRepository, IEmailHelper emailHelper, ITokenClass tokenClass)
 {
     _config           = config;
     _personRepository = personRepository;
     _emailHelper      = emailHelper;
     _tokenClass       = tokenClass;
 }
Exemple #4
0
 internal static ContactType Get(ITokenClass target)
     => target == null
         ? Compatible
         : Lexer.IsAlphaLike(target.Id) || target is Number
             ? AlphaNum
             : target is Text
                 ? Text
                 : Lexer.IsSymbolLike(target.Id)
                     ? Symbol
                     : Compatible;
        internal ResultItems InternalGetWhitespaces
            (
            ITokenClass leftTokenClass,
            int leadingLineBreaks,
            int indentLevel,
            IEnumerable<IItem> whiteSpaces,
            ITokenClass rightTokenClass
            )
        {
            var result = new ResultItems();
            var emptyLines = 0;
            var isBeginOfLine = leadingLineBreaks > 0;
            foreach(var token in whiteSpaces)
            {
                if(isBeginOfLine && !Lexer.IsLineEnd(token))
                {
                    result.AddLineBreak(leadingLineBreaks - emptyLines);
                    result.AddSpaces(indentLevel * Configuration.IndentCount);
                    emptyLines = leadingLineBreaks;
                    leadingLineBreaks = 0;
                    isBeginOfLine = false;
                }

                if(Lexer.IsWhiteSpace(token)
                   || (Lexer.IsLineEnd(token) && !IsRelevantLineBreak(emptyLines, rightTokenClass)))
                    result.AddHidden(token);
                else
                {
                    result.Add(token);

                    if(Lexer.IsLineEnd(token))
                        emptyLines++;
                    else
                        emptyLines = Lexer.IsLineComment(token) ? 1 : 0;

                    isBeginOfLine = !Lexer.IsComment(token);
                }
            }

            if(isBeginOfLine)
            {
                result.AddLineBreak(leadingLineBreaks - emptyLines);
                result.AddSpaces(indentLevel * Configuration.IndentCount);
                leadingLineBreaks = 0;
            }

            if (result.IsEmpty && SeparatorType.Get(leftTokenClass, rightTokenClass) == SeparatorType.Close)
                result.AddSpaces(1);

            Tracer.Assert(leadingLineBreaks == 0);

            return result;
        }
        bool IsRelevantLineBreak(int emptyLines, ITokenClass tokenClass)
        {
            if(Configuration.EmptyLineLimit == null)
                return true;

            if(tokenClass is RightParenthesis
               || tokenClass is LeftParenthesis
               || tokenClass is List)
                return false;

            return emptyLines < Configuration.EmptyLineLimit.Value;
        }
Exemple #7
0
        Syntax
        (
            Syntax left,
            ITokenClass tokenClass,
            IToken token,
            Syntax right)
            : base(NextObjectId++)
        {
            Left = left;
            TokenClass = tokenClass;
            Token = token;
            Right = right;
            Option = new SyntaxOption(this);
            LocatePositionCache = new FunctionCache<int, Syntax>(LocatePositionForCache);

            if(Left != null)
                Left.Parent = this;

            if(Right != null)
                Right.Parent = this;
        }
        internal ResultItems Item
            (
            ITokenClass leftTokenClass,
            int leadingLineBreaks,
            int indentLevel,
            IToken token,
            ITokenClass tokenClass)
        {
            Tracer.Assert(IsRelevant(tokenClass));
            Tracer.Assert(IsRelevant(leftTokenClass));

            var trace = tokenClass.Id == " repeat";
            StartMethodDump
                (trace, leftTokenClass, leadingLineBreaks, indentLevel, token, tokenClass);
            try
            {
                BreakExecution();
                var result = InternalGetWhitespaces
                    (
                        leftTokenClass,
                        leadingLineBreaks,
                        indentLevel,
                        token.PrecededWith,
                        tokenClass
                    );

                result.Add(token);

                return ReturnMethodDump(result);
            }
            finally
            {
                EndMethodDump();
            }
        }
 static bool IsRelevant(ITokenClass tokenClass)
     => (tokenClass as TokenClass)?.IsVisible ?? true;
 public EmailController(PersonRepository personRepository, ITokenClass tokenClass)
 {
     _personRepository = personRepository;
     _tokenClass       = tokenClass;
 }