내용으로 건너뛰기
GaramX
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
현재 위치:
home
»
javascript
»
maro_pattern
추적:
javascript:maro_pattern
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Maro Pattern ====== [[javascript:maro_pattern:remove_comment|removeComment]] [[javascript:maro_pattern:example|연습하기]] <code javascript> <script> class MaroPattern { constructor() { this.ps = []; } addPattern(p1) { this.ps.push(p1); } trans01(source) { var src = source; var out = []; this.ps.filter(function (p) { return p.KIND_CD === 'all'; }).forEach(p1 => { if (p1.TYPE_CD === 'text') { src = src.replaceAll(p1.SEARCH, p1.R_VALUE); } if (p1.TYPE_CD === 'regEx') { let re = new RegExp(p1.SEARCH, 'g'); src = src.replaceAll(re, p1.R_VALUE); } }); this.trans02(source); this.trans03(source); out = src.split('\n'); return out.join('\n'); } trans02(source) { var block = this.findBlock(source, /<script(.)*>/, '<script(.)*>', '<\/script>'); console.log(block); } trans03(source) { var block = this.findBlock(source, /with\((sheet)\d*\)/, '{', '}'); console.log(block); } findBlock(source, p1, sta, end) { var p = new RegExp(p1, 'g'); var sLine = -1, eLine = -1; var block = []; var m = source.match(p); var line = 0; var src = source.split('\n'); var p2 = new RegExp(sta); var p3 = new RegExp(end); if (!m) { return {}; } for(var k=0; k < m.length; k++) { var bStr = []; var isFind = false; var depth = 0; for (var i = line; i < src.length; i++, line++) { if (p.test(src[i])) { sLine = i; isFind = true; } if(isFind && p2.test(src[i])){ break; } if( isFind ){ bStr.push(src[i]); } } if (isFind) { for (var i = line; i < src.length; i++, line++) { if (p2.test(src[i]) ){ depth++; } if (p3.test(src[i])) { depth--; if( depth == 0) { bStr.push(src[i]); eLine = i; break; } } bStr.push(src[i]); } } block.push({ block: bStr.join('\n'), block_sLine: sLine, block_eLien: eLine }); } return block; } removeComment(source) { var src = source.split('\n'); var out = []; for(var i=0; i < src.length; i++) { } } } var origin = ` common.jsp 89 <script> with(sheet1) { search11; if (true) { } } <\/script> <script onKK> <\/script> <a> </a> kkk `; let mp = new MaroPattern(); mp.addPattern({ TYPE_CD: 'text', // text, regEx KIND_CD: 'all', // all, ibSheetFunction, javascript, with SEARCH: 'common.jsp', R_VALUE: 'common2.jsp', }); mp.addPattern({ TYPE_CD: 'regEx', // text, regEx KIND_CD: 'all', // all, ibSheetFunction, javascript, with SEARCH: '[0-9]{2}', R_VALUE: '56', }); mp.addPattern({ TYPE_CD: 'regEx', // regEx KIND_CD: 'all', // all, javascript, with SEARCH: 'kkk', R_VALUE: 'kkkk123', }); console.log(mp.trans01(origin)); </script> </code>
javascript/maro_pattern.txt
· 마지막으로 수정됨: 2025/04/15 10:05 저자
127.0.0.1
문서 도구
문서 보기
이전 판
역링크
맨 위로