_Core/Lang/Plugins/Parser/SortPlugin.cs

(开头部分) 8KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComLib.Lang;


namespace ComLib.Lang.Extensions
{

    /* *************************************************************************
    <doc:example>	
    // Sort plugin allows you to sort a list
    
    // Case 1: sort list of basic types
    var numbers = [4, 3, 1, 7, 5, 2, 6];
    sort numbers asc
    sort numbers desc
    
    // Case 2: start with source <books> and system auto creates variable <book>
    var books = [ 
				    { name: 'book 1', pages: 200, author: 'homey' },
				    { name: 'book 2', pages: 120, author: 'kdog' },
				    { name: 'book 3', pages: 140, author: 'homeslice' }
			    ];     
    sort books by book.pages asc
    sort books by book.pages desc
    sort i in books by i.pages desc
     
    </doc:example>
    ***************************************************************************/

    /// <summary>
    /// Combinator for handling comparisons.
    /// </summary>
    public class SortPlugin : ExprPlugin
    {
        private static string[] _tokens = new string[] { "sort", "Sort" };
        private static IDictionary<Token, bool> _terminators;


        private string _variableName;
        private Expr _source;
        private Expr _filter;


        static SortPlugin()
        {
            _terminators = new Dictionary<Token, bool>();
            _terminators[new IdToken("asc")] = true;
            _terminators[new IdToken("desc")] = true;
        }


        /// <summary>
        /// Initialize
        /// </summary>
        public SortPlugin()
        {
            _startTokens = _tokens;
后面还有 198 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。