문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| javascript:maro_pattern [2024/01/28 08:24] – taekgu | javascript:maro_pattern [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| + | ====== Maro Pattern ====== | ||
| + | [[javascript: | ||
| + | [[javascript: | ||
| + | |||
| + | <code javascript> | ||
| + | |||
| + | < | ||
| + | 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 === ' | ||
| + | if (p1.TYPE_CD === ' | ||
| + | src = src.replaceAll(p1.SEARCH, | ||
| + | } | ||
| + | if (p1.TYPE_CD === ' | ||
| + | let re = new RegExp(p1.SEARCH, | ||
| + | src = src.replaceAll(re, | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | this.trans02(source); | ||
| + | |||
| + | this.trans03(source); | ||
| + | |||
| + | out = src.split(' | ||
| + | return out.join(' | ||
| + | } | ||
| + | trans02(source) { | ||
| + | var block = this.findBlock(source, | ||
| + | console.log(block); | ||
| + | } | ||
| + | trans03(source) { | ||
| + | var block = this.findBlock(source, | ||
| + | console.log(block); | ||
| + | } | ||
| + | findBlock(source, | ||
| + | var p = new RegExp(p1, ' | ||
| + | var sLine = -1, eLine = -1; | ||
| + | var block = []; | ||
| + | var m = source.match(p); | ||
| + | var line = 0; | ||
| + | var src = source.split(' | ||
| + | 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(' | ||
| + | block_sLine: | ||
| + | block_eLien: | ||
| + | }); | ||
| + | } | ||
| + | return block; | ||
| + | } | ||
| + | removeComment(source) { | ||
| + | var src = source.split(' | ||
| + | var out = []; | ||
| + | for(var i=0; i < src.length; i++) { | ||
| + | |||
| + | } | ||
| + | } | ||
| + | } | ||
| + | var origin = ` | ||
| + | common.jsp | ||
| + | 89 | ||
| + | < | ||
| + | with(sheet1) | ||
| + | { | ||
| + | search11; | ||
| + | if (true) { | ||
| + | |||
| + | } | ||
| + | } | ||
| + | < | ||
| + | <script onKK> | ||
| + | < | ||
| + | <a> | ||
| + | </a> | ||
| + | kkk | ||
| + | `; | ||
| + | |||
| + | let mp = new MaroPattern(); | ||
| + | mp.addPattern({ | ||
| + | TYPE_CD: ' | ||
| + | KIND_CD: ' | ||
| + | SEARCH: ' | ||
| + | R_VALUE: ' | ||
| + | }); | ||
| + | mp.addPattern({ | ||
| + | TYPE_CD: ' | ||
| + | KIND_CD: ' | ||
| + | SEARCH: ' | ||
| + | R_VALUE: ' | ||
| + | }); | ||
| + | mp.addPattern({ | ||
| + | TYPE_CD: ' | ||
| + | KIND_CD: ' | ||
| + | SEARCH: ' | ||
| + | R_VALUE: ' | ||
| + | }); | ||
| + | |||
| + | console.log(mp.trans01(origin)); | ||
| + | </ | ||
| + | </ | ||