/// <summary>
        /// Instancira nov permanentni blok
        /// </summary>
        /// <param name="__name">Ime bloka</param>
        /// <param name="__render">Vid prikaza</param>
        /// <returns>Reference to newly created block declaration</returns>
        public syntaxBlockDeclaration addNewBlock(String __name, syntaxBlockRenderMode __render)
        {
            var blk = new syntaxBlockDeclaration();

            blk.name   = __name;
            blk.role   = syntaxBlockRole.permanent;
            blk.render = __render;

            Add(blk);
            _current = blk;
            return(blk);
        }
Пример #2
0
        //public String renderInto(syntaxDeclaration syntax)
        //{
        //    String output = "";
        //    String inner = "";

        //    syntaxBlockDeclaration blockclass = syntax.blocks.find(name);

        //    if (blockclass == null) return output;

        //    syntaxBlockRenderMode mode = blockclass.render;
        //    String tab = "\t".Repeat(level);

        //    switch (mode)
        //    {
        //        case syntaxBlockRenderMode.complete:
        //            tab = "\t".Repeat(level);
        //            break;
        //        case syntaxBlockRenderMode.inner:
        //            tab = "";
        //            break;

        //    }

        //    foreach (ICodeElement cl in children.items)
        //    {
        //        String cls = cl.renderInto(syntax);
        //        if (!string.IsNullOrEmpty(cls))
        //        {
        //            inner = inner + tab + cls;
        //        }
        //    }

        //    switch (mode)
        //    {
        //        case syntaxBlockRenderMode.complete:
        //            output = String.Format(syntax.blockClass.template, new object[] { name, inner });
        //            break;
        //        case syntaxBlockRenderMode.inner:
        //            output = inner;
        //            break;
        //    }

        //    return output;
        //}

        public String render(syntaxDeclaration syntax)
        {
            String output = "";
            String inner  = "";

            syntaxBlockDeclaration blockclass = syntax.blocks.find(name);

            if (blockclass == null)
            {
                return(output);
            }

            syntaxBlockRenderMode mode = blockclass.render;
            String tab = "\t".Repeat(level);

            switch (mode)
            {
            case syntaxBlockRenderMode.complete:
                tab = "\t".Repeat(level);
                break;

            case syntaxBlockRenderMode.inner:
                tab = "";
                break;
            }

            foreach (ICodeElement cl in children.items)
            {
                String cls = cl.render(syntax);
                if (!string.IsNullOrEmpty(cls))
                {
                    inner = inner + tab + cls;
                }
            }

            switch (mode)
            {
            case syntaxBlockRenderMode.complete:
                output = String.Format(syntax.blockClass.template, new object[] { name, inner });
                break;

            case syntaxBlockRenderMode.inner:
                output = inner;
                break;
            }

            return(output);
        }
Пример #3
0
 public syntaxRenderUnit(String __name, syntaxBlockRenderMode __mode)
 {
     _elementName = __name;
     _mode        = __mode;
 }