private void WritePluginJs(PluginAssembly plugin, StringBuilder js)
        {
            var jsBlocks = new List <JsBlock>();

            //除了放在 commands 文件夹下的 js,都加载进来。
            var assembly  = plugin.Assembly;
            var resources = assembly.GetManifestResourceNames()
                            .Where(r => !r.ToLower().Contains("commands.") && r.ToLower().Contains(".js"))
                            .ToArray();

            foreach (var resource in resources)
            {
                var stream = assembly.GetManifestResourceStream(resource);
                using (var sr = new StreamReader(stream))
                {
                    var jsContent = sr.ReadToEnd();
                    WebCommandJsHelper.LoadCommandJsBlocks(jsContent, jsBlocks);
                }
            }

            JsBlock.SortByHierachy(jsBlocks);

            foreach (var jsBlock in jsBlocks)
            {
                js.AppendLine(jsBlock.JavascriptCode);
            }
        }
Exemple #2
0
        /// <summary>
        /// 通过解析 js 代码格式来添加 WebCommand。
        /// </summary>
        /// <param name="js"></param>
        private void AddByJs(string js)
        {
            var jsClasses = new List <JsBlock>();

            WebCommandJsHelper.LoadCommandJsBlocks(js, jsClasses);

            foreach (var jsClass in jsClasses)
            {
                //在 JS 代码中匹配出元数据属性。
                var command = new WebCommand
                {
                    Name           = jsClass.ClassName,
                    Extend         = jsClass.Extend,
                    JavascriptCode = jsClass.JavascriptCode
                };

                //text
                var textMatch = WebCommandJsHelper.TextRegex.Match(jsClass.JavascriptCode);
                if (textMatch.Success)
                {
                    command.Label = textMatch.Groups["text"].Value;
                }

                //group
                var groupMatch = WebCommandJsHelper.GroupRegex.Match(jsClass.JavascriptCode);
                if (groupMatch.Success)
                {
                    var group = groupMatch.Groups["group"].Value.ToLower();
                    if (group == "view")
                    {
                        command.Group = CommandGroupType.View;
                    }
                    else if (group == "edit")
                    {
                        command.Group = CommandGroupType.Edit;
                    }
                    else if (group == "business")
                    {
                        command.Group = CommandGroupType.Business;
                    }
                }

                this.AddCommand(command);
            }
        }