From 978cff648b2f13f238e5d499a8e241915788f59c Mon Sep 17 00:00:00 2001 From: csh Date: Fri, 19 Jul 2024 14:48:26 +0800 Subject: [PATCH] =?UTF-8?q?P.Hyperlinks()=E3=80=81R.Rs()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docx/HyperLinkUnitDecorator@DOCX.tsf | 1 + autoclass/docx/HyperLink@DOCX.tsf | 18 ++++ autoclass/docx/P@DOCX.tsf | 82 +++++++++---------- autoclass/docx/R@DOCX.tsf | 42 ++++++++++ 4 files changed, 102 insertions(+), 41 deletions(-) diff --git a/autoclass/decorator/docx/HyperLinkUnitDecorator@DOCX.tsf b/autoclass/decorator/docx/HyperLinkUnitDecorator@DOCX.tsf index f033828..61ec36e 100644 --- a/autoclass/decorator/docx/HyperLinkUnitDecorator@DOCX.tsf +++ b/autoclass/decorator/docx/HyperLinkUnitDecorator@DOCX.tsf @@ -16,6 +16,7 @@ end; function HyperLinkUnitDecorator.Convert(); begin + {self.}XmlAttrAnchor.Value := object_.XmlAttrAnchor.Value; {self.}XmlAttrId.Value := object_.XmlAttrId.Value; {self.}XmlAttrHistory.Value := object_.XmlAttrHistory.Value; end; \ No newline at end of file diff --git a/autoclass/docx/HyperLink@DOCX.tsf b/autoclass/docx/HyperLink@DOCX.tsf index a598240..7b0a9c4 100644 --- a/autoclass/docx/HyperLink@DOCX.tsf +++ b/autoclass/docx/HyperLink@DOCX.tsf @@ -14,8 +14,11 @@ public property Rs read ReadRs; function ReadRs(_index); + property Anchor read ReadXmlAttrAnchor write WriteXmlAttrAnchor; property Id read ReadXmlAttrId write WriteXmlAttrId; property History read ReadXmlAttrHistory write WriteXmlAttrHistory; + function ReadXmlAttrAnchor(); + function WriteXmlAttrAnchor(_value); function ReadXmlAttrId(); function WriteXmlAttrId(_value); function ReadXmlAttrHistory(); @@ -23,6 +26,7 @@ public public // Attributes + XmlAttrAnchor: OpenXmlAttribute; XmlAttrId: OpenXmlAttribute; XmlAttrHistory: OpenXmlAttribute; @@ -47,6 +51,7 @@ end; function HyperLink.Init();override; begin + {self.}XmlAttrAnchor := new OpenXmlAttribute({self.}Prefix, "anchor", nil); {self.}XmlAttrId := new OpenXmlAttribute("r", "id", nil); {self.}XmlAttrHistory := new OpenXmlAttribute({self.}Prefix, "history", nil); end; @@ -54,6 +59,7 @@ end; function HyperLink.InitAttributes();override; begin attributes_ := array( + {self.}XmlAttrAnchor, {self.}XmlAttrId, {self.}XmlAttrHistory, ); @@ -109,6 +115,8 @@ end; function HyperLink.Copy(_obj: HyperLink);override; begin + if not ifnil(_obj.XmlAttrAnchor.Value) then + {self.}XmlAttrAnchor.Value := _obj.XmlAttrAnchor.Value; if not ifnil(_obj.XmlAttrId.Value) then {self.}XmlAttrId.Value := _obj.XmlAttrId.Value; if not ifnil(_obj.XmlAttrHistory.Value) then @@ -151,6 +159,16 @@ begin return arr; end; +function HyperLink.ReadXmlAttrAnchor(); +begin + return {self.}XmlAttrAnchor.Value; +end; + +function HyperLink.WriteXmlAttrAnchor(_value); +begin + {self.}XmlAttrAnchor.Value := _value; +end; + function HyperLink.ReadXmlAttrId(); begin return {self.}XmlAttrId.Value; diff --git a/autoclass/docx/P@DOCX.tsf b/autoclass/docx/P@DOCX.tsf index 26acbd0..9b69994 100644 --- a/autoclass/docx/P@DOCX.tsf +++ b/autoclass/docx/P@DOCX.tsf @@ -11,28 +11,28 @@ public function AddR(): R; function AddCommentRangeStart(): CommentRange; function AddCommentRangeEnd(): CommentRange; - function AddHyperLink(): HyperLink; function AddBookmarkStart(): Bookmark; function AddBookmarkEnd(): Bookmark; + function AddHyperLink(): HyperLink; function AppendR(): R; function AppendCommentRangeStart(): CommentRange; function AppendCommentRangeEnd(): CommentRange; - function AppendHyperLink(): HyperLink; function AppendBookmarkStart(): Bookmark; function AppendBookmarkEnd(): Bookmark; + function AppendHyperLink(): HyperLink; property Rs read ReadRs; property CommentRangeStarts read ReadCommentRangeStarts; property CommentRangeEnds read ReadCommentRangeEnds; - property HyperLinks read ReadHyperLinks; property BookmarkStarts read ReadBookmarkStarts; property BookmarkEnds read ReadBookmarkEnds; + property Hyperlinks read ReadHyperlinks; function ReadRs(_index); function ReadCommentRangeStarts(_index); function ReadCommentRangeEnds(_index); - function ReadHyperLinks(_index); function ReadBookmarkStarts(_index); function ReadBookmarkEnds(_index); + function ReadHyperlinks(_index); property W14ParaId read ReadXmlAttrW14ParaId write WriteXmlAttrW14ParaId; property W14TextId read ReadXmlAttrW14TextId write WriteXmlAttrW14TextId; @@ -141,9 +141,9 @@ begin pre + "r": obj := {self.}AppendR(); pre + "commentRangeStart": obj := {self.}AppendCommentRangeStart(); pre + "commentRangeEnd": obj := {self.}AppendCommentRangeEnd(); - pre + "hyperlink": obj := {self.}AppendHyperLink(); pre + "bookmarkStart": obj := {self.}AppendBookmarkStart(); pre + "bookmarkEnd": obj := {self.}AppendBookmarkEnd(); + pre + "hyperlink": obj := {self.}AppendHyperLink(); end; if ifObj(obj) then obj.InitNode(node); end @@ -216,19 +216,6 @@ begin return obj; end; -function P.AddHyperLink(): HyperLink; -begin - len := length(child_elements_); - if len = 0 then i := -1; - else begin - for i:=len-1 downto 0 do - if child_elements_[i].LocalName = "hyperlink" then break; - end - obj := new HyperLink(self, {self.}Prefix, "hyperlink"); - {self.}InsertChild(obj, i+1); - return obj; -end; - function P.AddBookmarkStart(): Bookmark; begin len := length(child_elements_); @@ -255,6 +242,19 @@ begin return obj; end; +function P.AddHyperLink(): HyperLink; +begin + len := length(child_elements_); + if len = 0 then i := -1; + else begin + for i:=len-1 downto 0 do + if child_elements_[i].LocalName = "hyperlink" then break; + end + obj := new HyperLink(self, {self.}Prefix, "hyperlink"); + {self.}InsertChild(obj, i+1); + return obj; +end; + function P.AppendR(): R; begin obj := new R(self, {self.}Prefix, "r"); @@ -276,13 +276,6 @@ begin return obj; end; -function P.AppendHyperLink(): HyperLink; -begin - obj := new HyperLink(self, {self.}Prefix, "hyperlink"); - child_elements_[length(child_elements_)] := obj; - return obj; -end; - function P.AppendBookmarkStart(): Bookmark; begin obj := new Bookmark(self, {self.}Prefix, "bookmarkStart"); @@ -297,6 +290,13 @@ begin return obj; end; +function P.AppendHyperLink(): HyperLink; +begin + obj := new HyperLink(self, {self.}Prefix, "hyperlink"); + child_elements_[length(child_elements_)] := obj; + return obj; +end; + function P.ReadRs(_index); begin ind := ifnil(_index) ? -2 : _index; @@ -345,22 +345,6 @@ begin return arr; end; -function P.ReadHyperLinks(_index); -begin - ind := ifnil(_index) ? -2 : _index; - arr := array(); - for k,v in child_elements_ do - begin - if v.LocalName = "hyperlink" then - begin - arr[length(arr)] := v; - ind--; - end; - if ind = -1 then return v; - end; - return arr; -end; - function P.ReadBookmarkStarts(_index); begin ind := ifnil(_index) ? -2 : _index; @@ -393,6 +377,22 @@ begin return arr; end; +function P.ReadHyperlinks(_index); +begin + ind := ifnil(_index) ? -2 : _index; + arr := array(); + for k,v in child_elements_ do + begin + if v.LocalName = "hyperlink" then + begin + arr[length(arr)] := v; + ind--; + end; + if ind = -1 then return v; + end; + return arr; +end; + function P.ReadXmlAttrW14ParaId(); begin return {self.}XmlAttrW14ParaId.Value; diff --git a/autoclass/docx/R@DOCX.tsf b/autoclass/docx/R@DOCX.tsf index b1276b1..9487f37 100644 --- a/autoclass/docx/R@DOCX.tsf +++ b/autoclass/docx/R@DOCX.tsf @@ -8,6 +8,11 @@ public function InitChildren();override; function InitNode(_node: XmlNode);override; function Copy(_obj: R);override; + function AddR(): R; + function AppendR(): R; + + property Rs read ReadRs; + function ReadRs(_index); property WRsidRPr read ReadXmlAttrWRsidRPr write WriteXmlAttrWRsidRPr; property Anchor read ReadXmlAttrAnchor write WriteXmlAttrAnchor; @@ -137,6 +142,7 @@ begin begin obj := nil; case node_name of + pre + "r": obj := {self.}AppendR(); end; if ifObj(obj) then obj.InitNode(node); end @@ -172,6 +178,42 @@ begin {self.}T.Copy(_obj.T); end; +function R.AddR(): R; +begin + len := length(child_elements_); + if len = 0 then i := -1; + else begin + for i:=len-1 downto 0 do + if child_elements_[i].LocalName = "r" then break; + end + obj := new R(self, {self.}Prefix, "r"); + {self.}InsertChild(obj, i+1); + return obj; +end; + +function R.AppendR(): R; +begin + obj := new R(self, {self.}Prefix, "r"); + child_elements_[length(child_elements_)] := obj; + return obj; +end; + +function R.ReadRs(_index); +begin + ind := ifnil(_index) ? -2 : _index; + arr := array(); + for k,v in child_elements_ do + begin + if v.LocalName = "r" then + begin + arr[length(arr)] := v; + ind--; + end; + if ind = -1 then return v; + end; + return arr; +end; + function R.ReadXmlAttrWRsidRPr(); begin return {self.}XmlAttrWRsidRPr.Value;