Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"homepage": "https://github.com/larshp/zmjs#readme",
"dependencies": {
"@abaplint/cli": "^2.118.10",
"@abaplint/runtime": "^2.13.9",
"@abaplint/transpiler-cli": "^2.13.9"
"@abaplint/runtime": "^2.13.10",
"@abaplint/transpiler-cli": "^2.13.10"
}
}
40 changes: 21 additions & 19 deletions src/zcl_mjs.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -3014,27 +3014,29 @@ CLASS zcl_mjs IMPLEMENTATION.
IF lv_rxint = 2 OR lv_rxint = 3. lv_rxicase = abap_true. ENDIF.
CLEAR lv_rxout.
lv_rxrem = is_obj-str.
DO.
IF lv_rxicase = abap_true.
FIND FIRST OCCURRENCE OF REGEX ls_rep1-str IN lv_rxrem
MATCH OFFSET lv_rxoff MATCH LENGTH lv_rxmln IGNORING CASE.
ELSE.
FIND FIRST OCCURRENCE OF REGEX ls_rep1-str IN lv_rxrem
MATCH OFFSET lv_rxoff MATCH LENGTH lv_rxmln.
ENDIF.
IF sy-subrc <> 0. EXIT. ENDIF.
IF lv_rxoff > 0.
lv_rxout = lv_rxout && substring( val = lv_rxrem len = lv_rxoff ).
IF lv_rxicase = abap_true.
FIND ALL OCCURRENCES OF REGEX ls_rep1-str IN lv_rxrem
RESULTS DATA(lt_rx_res) IGNORING CASE.
ELSE.
FIND ALL OCCURRENCES OF REGEX ls_rep1-str IN lv_rxrem
RESULTS lt_rx_res.
ENDIF.
IF lv_rxglob = abap_false AND lines( lt_rx_res ) > 1.
DELETE lt_rx_res FROM 2.
ENDIF.
DATA lv_rx_pos TYPE i.
lv_rx_pos = 0.
LOOP AT lt_rx_res ASSIGNING FIELD-SYMBOL(<ls_rx_r>).
IF <ls_rx_r>-offset > lv_rx_pos.
lv_rxout = lv_rxout && substring( val = lv_rxrem off = lv_rx_pos len = <ls_rx_r>-offset - lv_rx_pos ).
ENDIF.
lv_rxout = lv_rxout && lv_rep_to.
lv_rxnxt = lv_rxoff + lv_rxmln.
IF lv_rxnxt >= strlen( lv_rxrem ).
CLEAR lv_rxrem.
EXIT.
ENDIF.
lv_rxrem = substring( val = lv_rxrem off = lv_rxnxt ).
IF lv_rxglob = abap_false. EXIT. ENDIF.
ENDDO.
lv_rx_pos = <ls_rx_r>-offset + <ls_rx_r>-length.
ENDLOOP.
IF lv_rx_pos < strlen( lv_rxrem ).
lv_rxout = lv_rxout && substring( val = lv_rxrem off = lv_rx_pos ).
ENDIF.
CLEAR lv_rxrem.
lv_rxout = lv_rxout && lv_rxrem.
rs_val = string_val( lv_rxout ).
ELSE.
Expand Down
7 changes: 7 additions & 0 deletions src/zcl_mjs.clas.testclasses.abap
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ CLASS ltcl_test DEFINITION FOR TESTING
METHODS test_date_now FOR TESTING RAISING zcx_mjs_runtime.
METHODS test_array_map FOR TESTING RAISING zcx_mjs_runtime.
METHODS test_rest_map FOR TESTING RAISING zcx_mjs_runtime.
METHODS test_replace_regex_anchor FOR TESTING RAISING zcx_mjs_runtime.

METHODS test262 FOR TESTING RAISING zcx_mjs_runtime.

Expand Down Expand Up @@ -902,6 +903,12 @@ CLASS ltcl_test IMPLEMENTATION.
exp = |2 3| ).
ENDMETHOD.

METHOD test_replace_regex_anchor.
cl_abap_unit_assert=>assert_equals(
act = trim( zcl_mjs=>eval( `console.log("abc".replace(/^/g, "x"));` ) )
exp = |xabc| ).
ENDMETHOD.

METHOD test262.
DATA(lv_nl) = cl_abap_char_utilities=>newline.
DATA(lv_js) =
Expand Down
Loading