Exemplo n.º 1
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            int     gid  = group.Number;
            LinkRef tail = cmp.NewLink();

            if (FalseExpression == null)
            {
                //    IfDefined :1
                //      <yes_exp>
                // 1: <tail>

                cmp.EmitIfDefined(gid, tail);
                TrueExpression.Compile(cmp, reverse);
            }
            else
            {
                //    IfDefined :1
                //      <yes_expr>
                //      Jump :2
                // 1:   <no_expr>
                // 2: <tail>

                LinkRef false_expr = cmp.NewLink();
                cmp.EmitIfDefined(gid, false_expr);
                TrueExpression.Compile(cmp, reverse);
                cmp.EmitJump(tail);
                cmp.ResolveLink(false_expr);
                FalseExpression.Compile(cmp, reverse);
            }

            cmp.ResolveLink(tail);
        }
Exemplo n.º 2
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            // can't invoke Group.Compile from here :(
            // so I'll just repeat the code

            LinkRef tail = cmp.NewLink();

            cmp.EmitBalanceStart(this.Number, balance.Number, this.IsNamed, tail);

            int count = Expressions.Count;

            for (int i = 0; i < count; ++i)
            {
                Expression e;
                if (reverse)
                {
                    e = Expressions[count - i - 1];
                }
                else
                {
                    e = Expressions[i];
                }

                e.Compile(cmp, reverse);
            }

            cmp.EmitBalance();
            cmp.ResolveLink(tail);
        }
Exemplo n.º 3
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            if (group == null)
            {
                Alternate.Compile(cmp, reverse);
                return;
            }
            int     index   = group.Index;
            LinkRef linkRef = cmp.NewLink();

            if (base.FalseExpression == null)
            {
                cmp.EmitIfDefined(index, linkRef);
                base.TrueExpression.Compile(cmp, reverse);
            }
            else
            {
                LinkRef linkRef2 = cmp.NewLink();
                cmp.EmitIfDefined(index, linkRef2);
                base.TrueExpression.Compile(cmp, reverse);
                cmp.EmitJump(linkRef);
                cmp.ResolveLink(linkRef2);
                base.FalseExpression.Compile(cmp, reverse);
            }
            cmp.ResolveLink(linkRef);
        }
Exemplo n.º 4
0
 public PackageRef(string[] titles, string[] urls)
 {
     Links = new LinkRef[titles.Length];
     for (int i = 0; i < titles.Length; i++)
     {
         Links[i] = new LinkRef(titles[i], urls[i]);
     }
 }
Exemplo n.º 5
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            LinkRef tail = cmp.NewLink();

            cmp.EmitSub(tail);
            base.Compile(cmp, reverse);
            cmp.EmitTrue();
            cmp.ResolveLink(tail);
        }
Exemplo n.º 6
0
    protected override void OnPreRender(EventArgs e)
    {
        this.CssClass = "ratingStarBlock";
        if (this.UserRef != null)
        {
            this.CssClass += " userActive";
            registerScripts();
        }

        for (int i = 1; i <= NumberOfStars; i++)
        {
            HtmlGenericControl starContainer = new HtmlGenericControl("div");
            HtmlGenericControl starLink      = new HtmlGenericControl("a");

            starContainer.Attributes.Add("class", "star");
            starLink.Attributes.Add("href", "#" + i.ToString());

            if (Rating >= i)
            {
                starLink.Style.Add("width", "100%");
                starContainer.Attributes["class"] += " on";
            }
            else if (Math.Ceiling(Rating) == i)
            {
                int percentage = Convert.ToInt32(Math.Round((Rating - Math.Floor(Rating)) * 100, 0));
                starLink.Style.Add("width", percentage + "%");
                starContainer.Attributes["class"] += " on";
            }
            else
            {
                starLink.Style.Add("width", "100%");
            }

            if (this.UserRef != null)
            {
                starLink.Attributes.Add("onclick", "CuplexService.RateLink(" + LinkRef.ToString() + "," + i.ToString() + ",RateLinkCallback); return false;");
                if (!HasVoted)
                {
                    starLink.Attributes.Add("title", i.ToString() + " av 5");
                }
            }
            else
            {
                starLink.Attributes.Add("onclick", "return false");
            }

            if (this.UserRef == null || HasVoted)
            {
                starContainer.Attributes["class"] += " done";
            }

            starContainer.Controls.Add(starLink);
            this.Controls.Add(starContainer);
        }

        this.Attributes.Add("title", Math.Round(Rating, 2).ToString() + " av 5");
    }
Exemplo n.º 7
0
        //PM_REFACTOR 2011-08-12
        //****************************************************************************
        //*    <placeholder for header>                                              *
        //****************************************************************************
        private void fillInAndGenerate(string aLinkText, string aLink,
                                       LinkRef aLinkRefGenerator)
        {
            //Direct manipulation of GUI elements. Is it proper??
            //Direct fill into the GUI. Is this a bad idea?
            txtLinkText.Text = aLinkText;
            txtURL.Text      = aLink;

            txtRefNumber.Text = aLinkRefGenerator.GetRef();

            generate();
        }
Exemplo n.º 8
0
        //****************************************************************************
        //*    <placeholder for header>                                              *
        //****************************************************************************
        public frmMarkdown(string aTerm, string aURL, LinkRef aLinkRefGenerator)
        {
            InitializeComponent();

            mTerm2 = aTerm;
            mURL2  = aURL;

            mLinkRefGenerator = aLinkRefGenerator;

            mURLparseInfo = new Dictionary <string, URLparseInfoStruct>(2);
            addURLparseInfo("wikipedia.org/wiki", "wikipedia:");
            addURLparseInfo("wiktionary.org/wiki", "wiktionary:");
        }
Exemplo n.º 9
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            LinkRef linkRef = cmp.NewLink();

            cmp.EmitBalanceStart(base.Index, balance.Index, base.IsNamed, linkRef);
            int count = base.Expressions.Count;

            for (int i = 0; i < count; i++)
            {
                Expression expression = (!reverse) ? base.Expressions[i] : base.Expressions[count - i - 1];
                expression.Compile(cmp, reverse);
            }
            cmp.EmitBalance();
            cmp.ResolveLink(linkRef);
        }
Exemplo n.º 10
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            LinkRef linkRef = cmp.NewLink();

            foreach (Expression alternative in Alternatives)
            {
                LinkRef linkRef2 = cmp.NewLink();
                cmp.EmitBranch(linkRef2);
                alternative.Compile(cmp, reverse);
                cmp.EmitJump(linkRef);
                cmp.ResolveLink(linkRef2);
                cmp.EmitBranchEnd();
            }
            cmp.EmitFalse();
            cmp.ResolveLink(linkRef);
            cmp.EmitAlternationEnd();
        }
Exemplo n.º 11
0
 public override void Compile(ICompiler cmp, bool reverse)
 {
     if (this.Expression.IsComplex())
     {
         LinkRef linkRef = cmp.NewLink();
         cmp.EmitRepeat(this.min, this.max, this.lazy, linkRef);
         this.Expression.Compile(cmp, reverse);
         cmp.EmitUntil(linkRef);
     }
     else
     {
         LinkRef linkRef2 = cmp.NewLink();
         cmp.EmitFastRepeat(this.min, this.max, this.lazy, linkRef2);
         this.Expression.Compile(cmp, reverse);
         cmp.EmitTrue();
         cmp.ResolveLink(linkRef2);
     }
 }
Exemplo n.º 12
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            LinkRef linkRef = cmp.NewLink();

            foreach (object obj in this.Alternatives)
            {
                Expression expression = (Expression)obj;
                LinkRef    linkRef2   = cmp.NewLink();
                cmp.EmitBranch(linkRef2);
                expression.Compile(cmp, reverse);
                cmp.EmitJump(linkRef);
                cmp.ResolveLink(linkRef2);
                cmp.EmitBranchEnd();
            }
            cmp.EmitFalse();
            cmp.ResolveLink(linkRef);
            cmp.EmitAlternationEnd();
        }
Exemplo n.º 13
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            //			LinkRef next = cmp.NewLink ();
            LinkRef tail = cmp.NewLink();

            foreach (Expression e in Alternatives)
            {
                LinkRef next = cmp.NewLink();
                cmp.EmitBranch(next);
                e.Compile(cmp, reverse);
                cmp.EmitJump(tail);
                cmp.ResolveLink(next);
                cmp.EmitBranchEnd();
            }

            cmp.EmitFalse();
            cmp.ResolveLink(tail);
            cmp.EmitAlternationEnd();
        }
Exemplo n.º 14
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            if (Expression.IsComplex())
            {
                LinkRef until = cmp.NewLink();

                cmp.EmitRepeat(min, max, lazy, until);
                Expression.Compile(cmp, reverse);
                cmp.EmitUntil(until);
            }
            else
            {
                LinkRef tail = cmp.NewLink();

                cmp.EmitFastRepeat(min, max, lazy, tail);
                Expression.Compile(cmp, reverse);
                cmp.EmitTrue();
                cmp.ResolveLink(tail);
            }
        }
Exemplo n.º 15
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            GetWidth(out int min, out int max);
            cmp.EmitInfo(group_count, min, max);
            AnchorInfo anchorInfo = GetAnchorInfo(reverse);
            LinkRef    linkRef    = cmp.NewLink();

            cmp.EmitAnchor(reverse, anchorInfo.Offset, linkRef);
            if (anchorInfo.IsPosition)
            {
                cmp.EmitPosition(anchorInfo.Position);
            }
            else if (anchorInfo.IsSubstring)
            {
                cmp.EmitString(anchorInfo.Substring, anchorInfo.IgnoreCase, reverse);
            }
            cmp.EmitTrue();
            cmp.ResolveLink(linkRef);
            base.Compile(cmp, reverse);
            cmp.EmitTrue();
        }
        public override void Compile(ICompiler cmp, bool reverse)
        {
            LinkRef linkRef  = cmp.NewLink();
            LinkRef linkRef2 = cmp.NewLink();

            if (!this.negate)
            {
                cmp.EmitTest(linkRef, linkRef2);
            }
            else
            {
                cmp.EmitTest(linkRef2, linkRef);
            }
            this.TestExpression.Compile(cmp, this.reverse);
            cmp.EmitTrue();
            if (base.TrueExpression == null)
            {
                cmp.ResolveLink(linkRef2);
                cmp.EmitFalse();
                cmp.ResolveLink(linkRef);
            }
            else
            {
                cmp.ResolveLink(linkRef);
                base.TrueExpression.Compile(cmp, reverse);
                if (base.FalseExpression == null)
                {
                    cmp.ResolveLink(linkRef2);
                }
                else
                {
                    LinkRef linkRef3 = cmp.NewLink();
                    cmp.EmitJump(linkRef3);
                    cmp.ResolveLink(linkRef2);
                    base.FalseExpression.Compile(cmp, reverse);
                    cmp.ResolveLink(linkRef3);
                }
            }
        }
Exemplo n.º 17
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            // info block

            int min, max;

            GetWidth(out min, out max);
            cmp.EmitInfo(group_count, min, max);

            // anchoring expression

            AnchorInfo info = GetAnchorInfo(reverse);
            //if (reverse)
            //	info = new AnchorInfo (this, GetFixedWidth ());	// FIXME

            LinkRef pattern = cmp.NewLink();

            cmp.EmitAnchor(reverse, info.Offset, pattern);

            if (info.IsPosition)
            {
                cmp.EmitPosition(info.Position);
            }
            else if (info.IsSubstring)
            {
                cmp.EmitString(info.Substring, info.IgnoreCase, reverse);
            }

            cmp.EmitTrue();

            // pattern

            cmp.ResolveLink(pattern);
            base.Compile(cmp, reverse);
            cmp.EmitTrue();
        }
Exemplo n.º 18
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            LinkRef true_expr  = cmp.NewLink();
            LinkRef false_expr = cmp.NewLink();

            // test op: positive / negative

            if (!negate)
            {
                cmp.EmitTest(true_expr, false_expr);
            }
            else
            {
                cmp.EmitTest(false_expr, true_expr);
            }

            // test expression: lookahead / lookbehind

            TestExpression.Compile(cmp, this.reverse);
            cmp.EmitTrue();

            // target expressions

            if (TrueExpression == null)                                 // (?= ...)
            //    Test :1, :2
            //      <test_expr>
            // :2   False
            // :1   <tail>

            {
                cmp.ResolveLink(false_expr);
                cmp.EmitFalse();
                cmp.ResolveLink(true_expr);
            }
            else
            {
                cmp.ResolveLink(true_expr);
                TrueExpression.Compile(cmp, reverse);

                if (FalseExpression == null)                            // (?(...) ...)
                //    Test :1, :2
                //      <test_expr>
                // :1   <yes_expr>
                // :2   <tail>

                {
                    cmp.ResolveLink(false_expr);
                }
                else                                                    // (?(...) ... | ...)
                //    Test :1, :2
                //      <test_expr>
                // :1   <yes_expr>
                //      Jump :3
                // :2   <no_expr>
                // :3   <tail>

                {
                    LinkRef tail = cmp.NewLink();

                    cmp.EmitJump(tail);
                    cmp.ResolveLink(false_expr);
                    FalseExpression.Compile(cmp, reverse);
                    cmp.ResolveLink(tail);
                }
            }
        }
Exemplo n.º 19
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            IntervalCollection metaCollection = intervals.GetMetaCollection(GetIntervalCost);
            int num = metaCollection.Count;

            for (int i = 0; i < pos_cats.Length; i++)
            {
                if (pos_cats[i] || neg_cats[i])
                {
                    num++;
                }
            }
            if (num == 0)
            {
                return;
            }
            LinkRef linkRef = cmp.NewLink();

            if (num > 1)
            {
                cmp.EmitIn(linkRef);
            }
            foreach (Interval item in metaCollection)
            {
                Interval interval = item;
                if (interval.IsDiscontiguous)
                {
                    BitArray bitArray = new BitArray(interval.Size);
                    foreach (Interval interval2 in intervals)
                    {
                        Interval i2 = interval2;
                        if (interval.Contains(i2))
                        {
                            for (int j = i2.low; j <= i2.high; j++)
                            {
                                bitArray[j - interval.low] = true;
                            }
                        }
                    }
                    cmp.EmitSet((char)interval.low, bitArray, negate, ignore, reverse);
                }
                else if (interval.IsSingleton)
                {
                    cmp.EmitCharacter((char)interval.low, negate, ignore, reverse);
                }
                else
                {
                    cmp.EmitRange((char)interval.low, (char)interval.high, negate, ignore, reverse);
                }
            }
            for (int k = 0; k < pos_cats.Length; k++)
            {
                if (pos_cats[k])
                {
                    if (neg_cats[k])
                    {
                        cmp.EmitCategory(Category.AnySingleline, negate, reverse);
                    }
                    else
                    {
                        cmp.EmitCategory((Category)k, negate, reverse);
                    }
                }
                else if (neg_cats[k])
                {
                    cmp.EmitNotCategory((Category)k, negate, reverse);
                }
            }
            if (num > 1)
            {
                if (negate)
                {
                    cmp.EmitTrue();
                }
                else
                {
                    cmp.EmitFalse();
                }
                cmp.ResolveLink(linkRef);
            }
        }
Exemplo n.º 20
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            // create the meta-collection
            IntervalCollection meta =
                intervals.GetMetaCollection(new IntervalCollection.CostDelegate(GetIntervalCost));

            // count ops
            int count = meta.Count;

            for (int i = 0; i < pos_cats.Length; ++i)
            {
                if (pos_cats[i] || neg_cats [i])
                {
                    ++count;
                }
            }

            if (count == 0)
            {
                return;
            }

            // emit in op for |meta| > 1
            LinkRef tail = cmp.NewLink();

            if (count > 1)
            {
                cmp.EmitIn(tail);
            }

            // emit character/range/sets from meta-collection
            // we emit these first so that any 'ignore' flags will be noticed by the evaluator
            foreach (Interval a in meta)
            {
                if (a.IsDiscontiguous)                                          // Set
                {
                    BitArray bits = new BitArray(a.Size);
                    foreach (Interval b in intervals)
                    {
                        if (a.Contains(b))
                        {
                            for (int i = b.low; i <= b.high; ++i)
                            {
                                bits[i - a.low] = true;
                            }
                        }
                    }

                    cmp.EmitSet((char)a.low, bits, negate, ignore, reverse);
                }
                else if (a.IsSingleton)                                         // Character
                {
                    cmp.EmitCharacter((char)a.low, negate, ignore, reverse);
                }
                else                                                            // Range
                {
                    cmp.EmitRange((char)a.low, (char)a.high, negate, ignore, reverse);
                }
            }

            // emit categories
            for (int i = 0; i < pos_cats.Length; ++i)
            {
                if (pos_cats[i])
                {
                    if (neg_cats [i])
                    {
                        cmp.EmitCategory(Category.AnySingleline, negate, reverse);
                    }
                    else
                    {
                        cmp.EmitCategory((Category)i, negate, reverse);
                    }
                }
                else if (neg_cats[i])
                {
                    cmp.EmitNotCategory((Category)i, negate, reverse);
                }
            }

            // finish up
            if (count > 1)
            {
                if (negate)
                {
                    cmp.EmitTrue();
                }
                else
                {
                    cmp.EmitFalse();
                }

                cmp.ResolveLink(tail);
            }
        }
Exemplo n.º 21
0
        public override void Compile(ICompiler cmp, bool reverse)
        {
            // create the meta-collection
            IntervalCollection meta =
                intervals.GetMetaCollection(new IntervalCollection.CostDelegate(GetIntervalCost));

            // count ops

            int count = meta.Count;

            for (int i = 0; i < pos_cats.Length; ++i)
            {
                // use BitArray.Get instead of indexer for speedups
                //if (pos_cats[i]) ++ count;
                //if (neg_cats[i]) ++ count;
                if (pos_cats.Get(i))
                {
                    ++count;
                }
                if (neg_cats.Get(i))
                {
                    ++count;
                }
            }

            if (count == 0)
            {
                return;
            }

            // emit in op for |meta| > 1

            LinkRef tail = cmp.NewLink();

            if (count > 1)
            {
                cmp.EmitIn(tail);
            }


            // emit categories

            for (int i = 0; i < pos_cats.Length; ++i)
            {
                // use BitArray.Get instead of indexer for speedups
                //if (pos_cats[i]) {
                if (pos_cats.Get(i))
                {
                    //if (neg_cats [i])
                    if (neg_cats.Get(i))
                    {
                        cmp.EmitCategory(Category.AnySingleline, negate, reverse);
                    }
                    else
                    {
                        cmp.EmitCategory((Category)i, negate, reverse);
                    }
//				} else if (neg_cats[i]) {
                }
                else if (neg_cats.Get(i))
                {
                    cmp.EmitCategory((Category)i, !negate, reverse);
                }
            }

            // emit character/range/sets from meta-collection

            foreach (Interval a in meta)
            {
                if (a.IsDiscontiguous)                                          // Set
                {
                    BitArray bits = new BitArray(a.Size);
                    foreach (Interval b in intervals)
                    {
                        if (a.Contains(b))
                        {
                            for (int i = b.low; i <= b.high; ++i)
                            {
                                // use BitArray.Get instead of indexer for speedups : bits[i - a.low] = true;
                                bits.Set(i - a.low, true);
                            }
                        }
                    }

                    cmp.EmitSet((char)a.low, bits, negate, ignore, reverse);
                }
                else if (a.IsSingleton)                                         // Character
                {
                    cmp.EmitCharacter((char)a.low, negate, ignore, reverse);
                }
                else                                                            // Range
                {
                    cmp.EmitRange((char)a.low, (char)a.high, negate, ignore, reverse);
                }
            }

            // finish up

            if (count > 1)
            {
                if (negate)
                {
                    cmp.EmitTrue();
                }
                else
                {
                    cmp.EmitFalse();
                }

                cmp.ResolveLink(tail);
            }
        }