필터 조건 설명에 있어 패턴 매칭은 매우 일반적이고 유용한 방법입니다. JavaScript에서는 JSON을 사용하여 패턴을 설명하는 것이 매우 편리하므로 JSON 패턴 일치 도구를 만들어 보겠습니다.
사용 사례 디자인
디스패처로서 알림과 캡처라는 두 가지 방법만 있으면 됩니다. 가장 간단한 사용 사례 중 하나는 다음과 같습니다.
Dispatcher.capture({
"status": 200,
"command": "message"
}, function(json) { /* 메시지 표시 */ })
Dispatcher .notify( {
"status": 200,
"command": "message",
"content": {
"from": "user1",
"to": "user2" ,
"text": "hello"
}
});
물론 로컬 동일 일치로는 충분하지 않으며 다른 연산자도 필요합니다.
Dispatcher.capture({
" value1$eq ": "hello", /* 같음 */
"value2$ne": true, /* 같지 않음 */
"value3$lt": 0, /* 보다 작음 */
"value4 $lte: 1, /* 작거나 같음 */
"value5$gt": 2, /*보다 큼 */
"value6$gte": 3, /* 크거나 같음 */
"value7$in": [1, 3, 5, 7, 9], /* in */
"value8$nin": [2, 4, 6, 8, 10], / * 없음 */
"value9$all": [1, 2, 3, 4, 5], /* 모두 */
"value10$ex": true, /* 존재함 */
"value11$ re": /^A.*/, /* 정규 표현식 */
"value12$ld": function(json) { return true } /* 람다 */
}, function(json) ) {} )
Dispatcher.notify({
"value1": "hello",
"value2": false,
"value3": -1,
" 값4": 1,
"값5": 3,
"값6": 3,
"값7": 5,
"값8": 5,
"값9": [1 , 3, 5, 2, 4],
"value10": "hello",
"value11": "A13579",
"value12": "anything"
})
연산자를 잔뜩 적어놓으면 구현이 복잡해질 것 같죠? 사실 다음 글에서는 어떻게 연산자 인터페이스를 디자인하고 이 연산자들을 하나씩 구현해 보도록 하겠습니다.