Пример #1
0
        private void ZnakovyStylImplNew(TextRunEventArgs ev)
        {
            if (_nastaveni.ZahrnoutTextOdstavce)
            {
                _textOdstavceSb.Append(ev.Text);
            }

            //mstrTextOdstavce += ev.Text;
            if (_nastaveni.ZahrnoutTextZnakovychStylu)
            {
                if (_predchoziUsekZnakovehoStylu == null)
                {
                    _predchoziUsekZnakovehoStylu = ev;
                }
                else
                {
                    if (ev.Style.ID == _predchoziUsekZnakovehoStylu.Style.ID)
                    {
                        _predchoziUsekZnakovehoStylu.Text += ev.Text;
                    }

                    else
                    {
                        ZpracovatZnakovyStylJakoJev(_predchoziUsekZnakovehoStylu);
                        _predchoziUsekZnakovehoStylu = ev;
                    }
                }
            }
        }
Пример #2
0
 private void mdxrReader_ZacatekDokumentu(object sender, EventArgs ev)
 {
     _predchoziUsekZnakovehoStylu = null;
     _aktualniSkupinaJevu         = new SkupinaJevu();
     _aktualniOdstavecStack       = new Stack <ParagraphEventArgs>(2);
     ObsahDokumentu  = new List <string>(10000);
     _poradiOdstavce = 0;
     _styly          = new Dictionary <string, int>(60);
 }
Пример #3
0
        void mdxrReader_ZacatekOdstavce(object sender, ParagraphEventArgs ev)
        {
            //mtrTransformace.tagy[2];
            //je potřeba vygenerovat tag: zjistit IDStylu, na jeho základě název,
            // najít název v Transformacích
            mstrPredchoziZnakovyStyl = null;
            mtreaAktualniTextRun     = null;
            mtgAktualniZnakovyTag    = null;

            string sID = Tag.GetIdentifikator(ev.Style.UIName, mstrPredchoziOdstavcovyStyl);

            if (mtrTransformace.Tagy.ContainsID(sID))
            {
                mtgAktualniOdstavcovyTag = mtrTransformace.Tagy.GetTagByID(sID);
            }
            else
            {
                sID = Tag.GetIdentifikator(ev.Style.UIName, null);
                mtgAktualniOdstavcovyTag = mtrTransformace.Tagy.GetTagByID(sID);
            }
            mstrAktualniOdstavcovyStyl = ev.Style.UIName;

            if (mtgAktualniOdstavcovyTag == null && mtrTransformace.Tagy.ContainsID(csHvezdicka))
            {
                string sId = Tag.GetIdentifikator(csHvezdicka, null);

                if (mtrTransformace.Tagy.ContainsID(sId))
                {
                    mtgAktualniOdstavcovyTag = mtrTransformace.Tagy.GetTagByID(sId);
                }
            }

            if (mtgAktualniOdstavcovyTag == null)
            {
                return;
            }

            mtgAktualniOdstavcovyTag.TypTagu = TypTagu.Odstavec;
            if (mtgAktualniOdstavcovyTag.Ignorovat)
            {
                mblnIgnorovat = true;
                mstrIgnorovanyOdstavcovyStyl = ev.Style.UIName;
            }
            else
            {
                GenerujTag(mtgAktualniOdstavcovyTag, mstrAktualniOdstavcovyStyl, false);
            }
            //mxwWriter.WriteStartElement("p");
        }
Пример #4
0
        private void mdxrReader_ZacatekOdstavce(object sender, ParagraphEventArgs ev)
        {
            _predchoziUsekZnakovehoStylu        = null;
            _jevyAktualnihoOdstavce             = new SkupinaJevu();
            _usekyAktulanihoOdstravceInContinuo = new List <Usek>(40);

            _aktualniOdstavecStack.Push(ev);
            _aktualniOdstavecEventArgs = _aktualniOdstavecStack.Peek();
            if (_textOdstavceSb != null)
            {
                _nejdelsiOdstavec = _textOdstavceSb.Length > _nejdelsiOdstavec
                    ? _textOdstavceSb.Length
                    : _nejdelsiOdstavec;
            }
            _textOdstavce   = null;
            _textOdstavceSb = new StringBuilder(_nejdelsiOdstavec);
        }
Пример #5
0
 private void ZpracovatZnakovyStylJakoJevNaKonciUseku()
 {
     ZpracovatZnakovyStylJakoJev(_predchoziUsekZnakovehoStylu);
     _predchoziUsekZnakovehoStylu = null;
 }
Пример #6
0
        private void ZnakovyStylImpl(TextRunEventArgs ev)
        {
            if (_nastaveni.ZahrnoutTextOdstavce)
            {
                _textOdstavceSb.Append(ev.Text);
            }

            //mstrTextOdstavce += ev.Text;
            if (_nastaveni.ZahrnoutTextZnakovychStylu)
            {
                if (ev.Text == null)
                {
                    ev.Text = String.Empty;
                }
                string sText = _nastaveni.OdstranitPocatecniAKoncoveMezery ? ev.Text.Trim() : ev.Text;

                if (Nastaveni.StylyLokace.Contains(ev.Style.UIName))
                {
                    if (_aktualniLokace == null)
                    {
                        _aktualniLokace = sText;
                    }
                    else if (abRegex.IsMatch(sText) && slashAbRegex.IsMatch(_aktualniLokace))
                    {
                        _aktualniLokace = _aktualniLokace.Substring(0, _aktualniLokace.LastIndexOf("/") + 1) + sText;
                    }
                    else
                    {
                        _aktualniLokace = sText;
                    }
                }

                //pokud se odstraňovaly počáteční a koncové mezery a text je prázdný, znamená to, že text obsahoval pouze mezery
                //v tom případě se do výsledků takový text zahrne (půjde o mezery, tabulátory)
                if (_nastaveni.OdstranitPocatecniAKoncoveMezery && sText.Length == 0 && ev.Text != null)
                {
                    sText = ev.Text;
                }

                Jev jv = new Jev(ev.Language, sText, null);

                Jevy jvs = GetJevy(ev.Language, ev.Style.ID, ev.Style.UIName, TypJevu.Useky);
                //jvs.Add(jv);

                Jevy jevyOdstavce = GetJevy(_jevyAktualnihoOdstavce, _souborDocx,
                                            ev.Language, ev.Style.ID, ev.Style.UIName, TypJevu.Useky);
                jevyOdstavce.Add(jv);

                _usekyAktulanihoOdstravceInContinuo.Add(new Usek(ev.Style.UIName, ev.Text, _aktualniLokace));


                //jevyAktualnihoOdstavce.Add(jevyOdstavce);

                if (_nastaveni.ZahrnoutTextOdstavce)
                {
                    string sOdstavecZnak   = _aktualniOdstavecEventArgs.Style.ID + "+" + ev.Style.ID;
                    string sOdstavecZnakID = Jevy.GetID(ev.Language, sOdstavecZnak);

                    if (!_aktualniSkupinaJevu.ContainsID((sOdstavecZnakID)))
                    {
                        jvs       = new Jevy(TypJevu.Useky, _souborDocx, ev.Language, sOdstavecZnak);
                        jvs.Popis = _aktualniOdstavecEventArgs.Style.UIName + " + " + ev.Style.UIName;
                        _aktualniSkupinaJevu.Add(jvs);
                    }

                    _aktualniSkupinaJevu[sOdstavecZnakID].Add(jv.Clone());
                }
            }
        }
Пример #7
0
 private void mdxrReader_ZnakovyStyl(object sender, TextRunEventArgs ev)
 {
     //ZnakovyStylImpl(ev);
     ZnakovyStylImplNew(ev);
 }
Пример #8
0
        private void mdxrReader_KonecOdstavce(object sender, ParagraphEventArgs ev)
        {
            _predchoziUsekZnakovehoStylu = null;

            if (!_nastaveni.ZahrnoutTextOdstavce)
            {
                return;
            }
            string sId = Jevy.GetID(ev.Style.Language, ev.Style.ID);

            if (_textOdstavce == null)
            {
                _textOdstavce = "\r\n";
            }
            if (_textOdstavceSb.Length == 0)
            {
                _textOdstavceSb.AppendLine();
            }
            //Jev jv = new Jev(ev.Style.Language, mstrTextOdstavce, null);
            string sText = _nastaveni.OdstranitPocatecniAKoncoveMezery
                ? _textOdstavceSb.ToString().Trim()
                : _textOdstavceSb.ToString();

            StringBuilder jevySb = new StringBuilder(sText.Length);

            if (!_styly.ContainsKey(ev.Style.UIName))
            {
                _styly.Add(ev.Style.UIName, _styly.Count + 1);
            }
            int stylOdstavce = _styly[ev.Style.UIName];

            //jevySb.Append(String.Format("<p i=\"{0}\" s=\"{1}\">", ++poradiOdstavce, ev.Style.UIName));
            //jevySb.Append(String.Format("<p l=\"{0}\" i=\"{1}\" s=\"{2}\">", _aktualniLokace, ++poradiOdstavce, stylOdstavce));

            XElement root = new XElement("p",
                                         new XAttribute("l", _aktualniLokace ?? "0"),
                                         new XAttribute("i", ++_poradiOdstavce),
                                         new XAttribute("s", stylOdstavce)
                                         );


            char[] xmlEscape = new[] { '&', '<', '>' };

            foreach (Usek jev in _usekyAktulanihoOdstravceInContinuo)
            {
                if (!_styly.ContainsKey(jev.Styl))
                {
                    _styly.Add(jev.Styl, _styly.Count + 1);
                }
                int stylZnaku = _styly[jev.Styl];

                //jevySb.Append(String.Format("<r s=\"{0}\">{1}</r>", jev.Styl, jev.Text));
                string text = jev.Text;
                if (text.IndexOfAny(xmlEscape) > -1)
                {
                    text = jev.Text.Replace("&", "&amp;").Replace("<", "&lt;").Replace(">", "&gt;");
                }
                //jevySb.Append(String.Format("<r l=\"{0}\" s=\"{1}\">{2}</r>", jev.Lokace, stylZnaku, text));
                //jevySb.Append(String.Format("<r s=\"{0}\">{1}</r>", stylZnaku, text));

                root.Add(new XElement("r",
                                      new XAttribute("s", stylZnaku),
                                      new XText(text)
                                      ));
            }

            //jevySb.Append("</p>");

            XDocument document = new XDocument();

            document.Add(root);

            string textOdstavce = jevySb.ToString();

            //ObsahDokumentu.Add(textOdstavce);
            textOdstavce = document.ToString(SaveOptions.DisableFormatting);
            ObsahDokumentu.Add(textOdstavce);

            foreach (Jevy jevy in _jevyAktualnihoOdstavce)
            {
                Jevy tmpJevy = GetJevy(jevy.Jazyk, jevy.Identifikator, jevy.Popis, jevy.Druh);
                foreach (Jev jev in jevy)
                {
                    //jev.Kontexty.Add(sText);
                    //jev.Kontexty.Add(textOdstavce);
                    jev.Kontexty.Add(_poradiOdstavce.ToString(CultureInfo.InvariantCulture));
                    //jev.Kontexty.Add(poradiOdstavce.ToString(CultureInfo.InvariantCulture));
                    tmpJevy.Add(jev);
                }
            }


            Jev  jv  = new Jev(ev.Style.Language, sText, null);
            Jevy jvs = GetJevy(ev.Style.Language, ev.Style.ID, ev.Style.UIName, TypJevu.Odstavce);

            jvs.Add(jv);
            _aktualniSkupinaJevu[sId] = jvs;
            if (_aktualniOdstavecStack.Count == 0)
            {
                _aktualniOdstavecEventArgs = null;
            }
            else
            {
                _aktualniOdstavecEventArgs = _aktualniOdstavecStack.Pop();
            }
        }
Пример #9
0
        void mdxrReader_ZnakovyStyl(object sender, TextRunEventArgs ev)
        {
            if (mtgAktualniOdstavcovyTag != null)
            {
                if (mblnIgnorovat || mtgAktualniOdstavcovyTag.PrazdnyElement)
                {
                    return;
                }
            }
            //Tag tg = null;

            //Zjišťuje se identifikátor tagu na základě jména stylu
            string si = Tag.GetIdentifikator(ev.Style.UIName, null);

            if (!mtrTransformace.Tagy.ContainsID(si))
            {
                //pokud identifikace pomocí jména stylu není možná, zkouší se, jestli je definován tag pomocí hvězdičky
                si = Tag.GetIdentifikator(csHvezdicka, null);
            }

            if (mtreaAktualniTextRun == null)
            {
                if (mtrTransformace.Tagy.ContainsID(si))
                {
                    mtgAktualniZnakovyTag = mtrTransformace.Tagy.GetTagByID(si);
                }
                mtreaAktualniTextRun = ev;
                return;
            }

            //úpravy - začátek
            if (mtrTransformace.Tagy.ContainsID(si))
            {
                Tag tg = mtrTransformace.Tagy.GetTagByID(si);
                if (tg.SloucitSPredchozim)
                {
                    if (tg.BezZnacky)
                    {
                        mtreaAktualniTextRun.Text += ev.Text;
                    }
                    else
                    {
                        //GenerujTag nefunguje
                        //GenerujTag(tg, true, ev.Text);
                    }
                    return;
                }
            }
            //if (mtgAktualniZnakovyTag.SloucitSPredchozim) {
            // mtreaAktualniTextRun.Text += ev.Text;
            //}
            //úpravy - konec
            if (mtreaAktualniTextRun.Style == ev.Style || mtgAktualniZnakovyTag.SloucitSNasledujicim)
            {
                if (mtreaAktualniTextRun.Style.UIName != ev.Style.UIName)
                {
                    string sId = Tag.GetIdentifikator(ev.Style.UIName, null);

                    if (!mtrTransformace.Tagy.ContainsID(sId))
                    {
                        sId = Tag.GetIdentifikator(csHvezdicka, null);
                    }

                    if (mtrTransformace.Tagy.ContainsID(sId))
                    {
                        mtgAktualniZnakovyTag = mtrTransformace.Tagy.GetTagByID(sId);
                    }
                }

                mtreaAktualniTextRun.Text += ev.Text;
            }
            else
            {
                VypsatTagProAktualniZnakovyStyl();

                string sId = Tag.GetIdentifikator(ev.Style.UIName, null);
                if (!mtrTransformace.Tagy.ContainsID(sId))
                {
                    sId = Tag.GetIdentifikator(csHvezdicka, null);
                }

                if (mtrTransformace.Tagy.ContainsID(sId))
                {
                    mtgAktualniZnakovyTag = mtrTransformace.Tagy.GetTagByID(sId);
                }

                mtreaAktualniTextRun     = ev;
                mstrPredchoziZnakovyStyl = mtreaAktualniTextRun.Style.UIName;
            }
            //mxwWriter.WriteStartElement("text");

            /*
             * if(ev != null)
             *      mxwWriter.WriteString(ev.Text);
             * mxwWriter.WriteEndElement();
             */
        }
Пример #10
0
 void mdxrReader_KonecPoznamkyPodCarou(object sender, FootnoteEventArgs ev)
 {
     //poznámka skončila, text poznámky již byl vypsán a není aktuální
     mtreaAktualniTextRun = null;
     mxwWriter.WriteEndElement();            //poznamka
 }