diff --git a/src/zcl_abapgit_url.clas.abap b/src/zcl_abapgit_url.clas.abap new file mode 100644 index 000000000..c75de293d --- /dev/null +++ b/src/zcl_abapgit_url.clas.abap @@ -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. diff --git a/src/zcl_abapgit_url.clas.xml b/src/zcl_abapgit_url.clas.xml new file mode 100644 index 000000000..34b21db84 --- /dev/null +++ b/src/zcl_abapgit_url.clas.xml @@ -0,0 +1,44 @@ + + + + + + ZCL_ABAPGIT_URL + 1 + E + 2 + 1 + X + X + X + X + + + + ZCL_ABAPGIT_URL + HOST + E + HOST + + + ZCL_ABAPGIT_URL + NAME + E + NAME + + + ZCL_ABAPGIT_URL + PATH_NAME + E + PATH_NAME + + + ZCL_ABAPGIT_URL + REGEX + E + REGEX + + + + +