add global class zcl_abapgit_url

This commit is contained in:
Christian Günter 2017-11-15 19:44:51 +00:00
parent 4c2d9ad45f
commit dcaeb74280
2 changed files with 135 additions and 0 deletions

View File

@ -0,0 +1,91 @@
CLASS zcl_abapgit_url DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS:
host
IMPORTING
!iv_repo TYPE string
RETURNING
VALUE(rv_host) TYPE string
RAISING
zcx_abapgit_exception,
name
IMPORTING
!iv_repo TYPE string
RETURNING
VALUE(rv_name) TYPE string
RAISING
zcx_abapgit_exception,
path_name
IMPORTING
!iv_repo TYPE string
RETURNING
VALUE(rv_path_name) TYPE string
RAISING
zcx_abapgit_exception .
PRIVATE SECTION.
CLASS-METHODS:
regex
IMPORTING
!iv_repo TYPE string
EXPORTING
!ev_host TYPE string
!ev_path TYPE string
!ev_name TYPE string
RAISING
zcx_abapgit_exception .
ENDCLASS.
CLASS zcl_abapgit_url IMPLEMENTATION.
METHOD host.
regex( EXPORTING iv_repo = iv_repo
IMPORTING ev_host = rv_host ).
ENDMETHOD.
METHOD name.
regex( EXPORTING iv_repo = iv_repo
IMPORTING ev_name = rv_name ).
ENDMETHOD.
METHOD path_name.
DATA: lv_host TYPE string ##NEEDED.
FIND REGEX '(.*://[^/]*)(.*)' IN iv_repo
SUBMATCHES lv_host rv_path_name.
ENDMETHOD.
METHOD regex.
FIND REGEX '(.*://[^/]*)(.*/)([^\.]*)[\.git]?' IN iv_repo
SUBMATCHES ev_host ev_path ev_name.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Malformed URL' ).
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_URL</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
<DESCRIPTIONS>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_URL</CLSNAME>
<CMPNAME>HOST</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>HOST</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_URL</CLSNAME>
<CMPNAME>NAME</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>NAME</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_URL</CLSNAME>
<CMPNAME>PATH_NAME</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>PATH_NAME</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_URL</CLSNAME>
<CMPNAME>REGEX</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>REGEX</DESCRIPT>
</SEOCOMPOTX>
</DESCRIPTIONS>
</asx:values>
</asx:abap>
</abapGit>