VBCommons/parsers/ParserNPA.cls

180 lines
6.3 KiB
OpenEdge ABL
Raw Permalink Normal View History

2024-06-07 20:46:40 +03:00
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "ParserNPA"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
' ====== Legal document title parser =======
' Shared module version: 20220614
' Tested in:
' Depends on:
' Required reference: z_ParserRegex, PC_InfoNPA
Option Explicit
Private rxTitleFirst_ As RegExp
Private rxTitleLast_ As RegExp
Private rxCreatorPrefix_ As RegExp
Private rxTitle_ As RegExp
Private rxImmediate_ As RegExp
Public data_ As New PC_InfoNPA
Private Sub Class_Initialize()
Set rxTitleFirst_ = New RegExp
rxTitleFirst_.Pattern = P_NPA_TITLE_FIRST
rxTitleFirst_.Global = False
Set rxTitleLast_ = New RegExp
rxTitleLast_.Pattern = P_NPA_PROPS_FIRST
rxTitleLast_.Global = False
Set rxCreatorPrefix_ = New RegExp
rxCreatorPrefix_.Pattern = P_NPA_DOCTYPE
rxCreatorPrefix_.Global = False
Set rxTitle_ = New RegExp
rxTitle_.Pattern = P_NPA_COMPOSITE_TITLE
rxTitle_.Global = False
Set rxImmediate_ = New RegExp
rxImmediate_.Pattern = P_NPA_IMMEDIATE
rxImmediate_.Global = False
End Sub
Public Function Test(target$) As Boolean
Test = rxTitleLast_.Test(target)
If Not Test Then Test = rxTitleFirst_.Test(target)
End Function
Public Function Parse(target$) As Boolean
Set data_ = New PC_InfoNPA
Dim matches As Object
Dim isTitleLast As Boolean
isTitleLast = rxTitleLast_.Test(target)
If Not isTitleLast Then
If Not rxTitleFirst_.Test(target) Then
Parse = False
Exit Function
End If
End If
Parse = True
If isTitleLast Then
Set matches = rxTitleLast_.Execute(target)
data_.prefix_ = matches.Item(0).SubMatches(0)
data_.date_ = matches.Item(0).SubMatches(1)
data_.number_ = Trim(matches.Item(0).SubMatches(2))
data_.title_ = Trim(matches.Item(0).SubMatches(3))
Else
Set matches = rxTitleFirst_.Execute(target)
data_.title_ = Trim(matches.Item(0).SubMatches(0))
data_.prefix_ = Trim(matches.Item(0).SubMatches(1))
data_.date_ = Trim(matches.Item(0).SubMatches(2))
data_.number_ = Trim(matches.Item(0).SubMatches(3))
End If
Call ParsePrefix
Call ParseTitle
End Function
Public Function GetData() As Collection
Set GetData = data_.AsCollection()
End Function
Public Function GetDataDescription() As Scripting.Dictionary
Set GetDataDescription = data_.AsDescription()
End Function
Public Function Transform(sText$, sParam$) As String
Transform = sText
End Function
' =======
Private Function ParsePrefix()
If data_.prefix_ = vbNullString Then _
Exit Function
If Not rxCreatorPrefix_.Test(data_.prefix_) Then
data_.creator_ = data_.prefix_
Exit Function
End If
Dim matches As Object: Set matches = rxCreatorPrefix_.Execute(data_.prefix_)
data_.docType_ = CapitalizeFirstLetter(Trim(matches.Item(0).Value))
If Len(data_.docType_) <> Len(data_.prefix_) Then _
data_.creator_ = Trim(Right(data_.prefix_, Len(data_.prefix_) - Len(data_.docType_)))
Call FixTypeCase
End Function
Private Function ParseTitle()
Dim theTitle$: theTitle = data_.title_
If theTitle = vbNullString Then _
Exit Function
data_.isTimeBound_ = rxImmediate_.Test(theTitle)
If Not rxTitle_.Test(theTitle) Then _
Exit Function
Dim matches As Object: Set matches = rxTitle_.Execute(theTitle)
data_.titlePrefix_ = Trim(matches.Item(0).SubMatches(0))
data_.titleDoc_ = Trim(matches.Item(0).SubMatches(1))
End Function
Private Function FixTypeCase()
If Len(data_.docType_) = 0 Then _
Exit Function
Select Case Left(data_.docType_, 1)
Case "<22>"
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
Case "<22>"
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD>")
Case "<22>"
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
Case "<22>"
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
Case "<22>"
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
Case "<22>"
If data_.docType_ = "<22><><EFBFBD><EFBFBD><EFBFBD>" Then
data_.docType_ = "<22><><EFBFBD><EFBFBD>"
Else
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
End If
Case "<22>"
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD>")
data_.docType_ = Replace(data_.docType_, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD>")
End Select
End Function