Socket
Socket
Sign inDemoInstall

clean.js

Package Overview
Dependencies
0
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.1 to 0.0.2

source/array/compact.js

943

clean.js

@@ -14,6 +14,9 @@ // 요기는 패키지 정보를 담고있어요.

// 데이터 처리
object : {},
function : {},
array : {},
object : {},
date : {},
string : {},
integer : {},
bool : {},

@@ -24,3 +27,3 @@ // helpers

valid : {},
random : {},
helper : {},

@@ -32,3 +35,6 @@ // 브라우저 전용 패키지들

// 모듈
module : {}
module : {},
// 다국어 지원 (i18n)
korean : {}
};

@@ -41,6 +47,82 @@

// NaN, false, undefined, empty value를 제외한 값을 반환한다
clean.array.compact = function(array) {
// REDUIRED array
return clean.array.filter(array, function(value) {
// 한방에 할 수 있는거 없나요 ㅠㅠ
if(value !== 'undefined' && !isNaN(value) && value !== false && value !== 0 && value !== '') {
return true
} else {
return false
}
});
}
// 배열 요소가 포함되어있는지 확인
clean.array.contains = function(array, search) {
// REQUIRED array
// REQUIRED search
// 배열이 아니거나 값이없으면 false
if (!clean.is.array(array) || array.length == 0) return false;
// 인덱스 검사
if (array.indexOf === Array.prototype.indexOf) return array.indexOf(search) != -1;
// indexOf가 없다면 값을 찾는다
var check = false;
var
// 인덱스에요.
index, leng;
// 모든 요소를 둘러봅니다.
for ( index = 0, leng = array.length; index < leng; index++) {
// 요소를 callback으로 쏴줘요!
// callback 에서 elem 혹은 this로 개별 변수에 접근합니다.
if(array[index] === search) check = true; break;
}
return check;
}
// 배열에서 해당 값이 몇개 존재하는지 찾기
clean.array.count = function(array, search) {
// REQUIRED: array
// REQUIRED: value
var
// 카운트
count = 0;
// 배열의 값을 하나씩 보면서,
clean.array.each(array, function(value) {
// 검사가 일치하면!
if (search === value) count++;
});
// 최종적으로 찾은 값 반환
return count;
};
clean.array.difference = function() {
// OPTIONAL array, array, array...
var result = [];
// 모든 배열을 합친다!
clean.object.each(arguments, function(array) {
result = result.concat(array);
});
return clean.array.filter(result, function(value) {
// 하나씩만 있는 것들을 찾아낸다.
return clean.array.count(result, value) === 1;
});
}
// 배열의 요소를 각각 처리한다!
clean.array.each = function(array, callback) {
//REQUIRED: array
//REQUIRED: callback(elem, index of elem){...}
// REQUIRED: array
// REQUIRED: callback(elem, index of elem){...}

@@ -59,6 +141,27 @@ var

// 배열의 모든 멤버가 지정된 조건에 충족하는지 여부를 확인합니다.
clean.array.every = function(array, callback, args) {
// REQUIRED: array
// REQUIRED: callback(elem, index of elem, args){...}
// OPTIONAL: args
var
// 인덱스에요.
index, leng;
// 모든 요소를 둘러봅니다.
for ( index = 0, leng = array.length; index < leng; index++) {
// 모두 조건에 부합해야 true, 그 외에는 false
if(!callback.apply(array[index], [array[index], index], [array[index], index, args])) {
return false;
}
}
return true;
};
// 배열에서 값들 찾아갖고 배열로 반환!
clean.array.filter = function(array, check) {
//REQUIRED: array
//REQUIRED: check
// REQUIRED: array
// REQUIRED: check

@@ -86,4 +189,4 @@ var

clean.array.find = function(array, check) {
//REQUIRED: array
//REQUIRED: check
// REQUIRED: array
// REQUIRED: check

@@ -112,5 +215,94 @@ var

// 배열의 첫번째 요소를 n만큼 반환한다.
clean.array.first = function(array, n) {
// REQUIRED: array
// OPTIONAL n
// 결과
var result = [];
// 배열길이
var length=array.length;
n = arguments[1] || 1;
// 배열이고 사이즈가 0보다 크며 n이 양수인 경우
if(clean.is.array(array) && length > 0 && n > 0) {
result = array.slice(0, n);
}
return result;
};
// 배열들의 교집합을 구한다.
clean.array.intersection = function(array) {
// REQUIRED array
// OPTIONAL array arguments
// 인자로 들어온 배열들을 하나의 배열로!
var rest = Array.prototype.slice.call(arguments, 1);
// 필터링
return clean.array.filter(clean.array.unique(array), function(value) {
// 나머지 배열들에 대해서 각 배열들의 배열요소가 값과 일치하는지
// 일치 한다면 필터에 걸린다!
return clean.array.every(rest, function(other) {
return clean.array.contains(other, value);
});
});
}
// 배열 요소에 대해 method 함수를 invoke 한다.
clean.array.invoke = function(array, method) {
// REQUIRED array
// REQUIRED method
// OPTIONAL args, args, args...
// argument가 있으면..
var args = Array.prototype.slice.call(arguments, 2);
// 배열을 돌면서
return clean.array.map(array, function(value) {
// 함수 실행
return (clean.is.func(method) ? method : value[method]).apply(value, args);
});
};
// 배열의 마지막 요소를 n만큼 반환한다.
clean.array.last = function(array, n) {
// REQUIRED: array
// OPTIONAL n
// 결과
var result = [];
// 배열길이
var length=array.length;
n = arguments[1] || 1;
// 배열이고 사이즈가 0보다 크며 n이 양수인 경우
if(clean.is.array(array) && length > 0 && n > 0) {
result = array.slice(-n);
}
return result;
};
// 배열 요소에 callback 처리한 배열을 구한다
clean.array.map = function(array, callback) {
// REQUIRED: array
// REQUIRED: callback
var result = [];
// callback 처리한 값의 배열을 반환
clean.object.each(array, function(value) {
result.push(callback(value));
});
return result;
};
// 배열에서 최대 값 찾기
clean.array.max = function(array) {
//REQUIRED: array
// REQUIRED: array

@@ -137,3 +329,3 @@ var

clean.array.min = function(array) {
//REQUIRED: array
// REQUIRED: array

@@ -158,2 +350,128 @@ var

// 키배열과 값배열을 가지고 객체 생성
clean.array.object = function(array, values) {
// REQUIRED array
// REQUIRED values
var result = {};
clean.array.each(array, function(value, index) {
// 키값에 값을 집어넣는다!
result[value] = values[index];
});
return result;
}
// 배열을 해당 범위만큼 만든다
clean.array.range = function(start, stop, step) {
// OPTIONAL start
// REQUIRED: stop
// OPTIONAL step
var array = [];
var index;
var argLength = arguments.length;
// 인자가 정수가 아니면 빈 배열을 리턴
for(index=0; index<argLength; index++) {
if(clean.is.integer(arguments[index]) === false) {
return array;
}
}
// 인자가 하나인 경우 stop으로 간주
if (arguments.length <= 1) {
stop = start;
start = 0;
}
step = arguments[2] || 1;
for(index=start; index < stop; index = index + step) {
array.push(index);
}
return array;
};
// 조건에 해당하지 않는 객체만 배열로 반환
clean.array.reject = function(array, check) {
//REQUIRED: array
//REQUIRED: check
var result = [];
clean.array.each(array, function(value) {
// 조건에 안맞으면!
if(!check(value)) {
result.push(value);
}
});
return result;
};
// 배열에서 값을 제거 한다.
clean.array.remove = function(array) {
// REQUIRED: array
// OPTIONAL element, element, element...
// 결과 배열
var result = array.slice(0);
clean.object.each(arguments, function(arg, key) {
// 해당 배열 외 인자값이 있다면
if(key > 0) {
var index = result.indexOf(arg);
if(index > -1) {
// 존재하는 값을 제거한다.
result.splice(index, 1);
}
}
});
return result;
}
// 배열들의 합집합을 구한다.
clean.array.union = function() {
// OPTIONAL array, array, array...
var result = [];
// 모든 배열을 합친다!
clean.object.each(arguments, function(array) {
result = result.concat(array);
});
// 유니크한 값만 고르기!
return clean.array.unique(result);
}
// 배열에서 유니크한 값만 뽑아낸다
clean.array.unique = function(array) {
// REQUIRED: array
// 결과
var result = [];
// 배열의 값을 하나씩 보면서,
clean.array.each(array, function(value) {
// value 를 포함하고 있지 않으면 푸시!
if (!clean.array.contains(result, value)) {
result.push(value);
}
});
return result;
};
// true, false 중 랜덤하게 반환~!
clean.bool.random = function() {
// 0 이나 1 중에 랜덤하게 받아와서 0이면 false, 1이면 true!!
return clean.integer.random(1) === 1;
};
// 쿠키를 로드해요!

@@ -213,18 +531,9 @@ clean.cookie.get = function(name) {

//getMonth 달을 구한다. 혹시나 ...아주 나중에....
//진짜 나중에.... clean에서 다국어 지원한다면 요긴하게 쓰이겠지만...
//아마 안쓰일꺼예요.... 아 그냥 그렇다구
clean.dom.getMonth = function (int_month){
//REQUIRED: month : 숫자값이예유~
var month_array = new Array("1월", "2월", "3월",
"4월", "5월", "6월",
"7월", "8월", "9월",
"10월", "11월", "12월")
return month_array[int_month]
}
// 날자를 읽기 편하게 보여줘용(YYYY-mm-dd HH:ii:ss)
clean.date.getTimeStamp = function() {
//COMMENT: 형식도 바꿀 수 있게 하면 어떨까요?!
clean.date.timestamp = function() {
var
//요 내부꺼는 좀더 간단하게 할수있음 알려주세용.. 무식하게 돌리는거라.... 따로 함수로 빼긴 그렇고...
this.leadingZeros = function(n, digits) {
leadingZeros = function(n, digits) {
//REQUIRED: n: 숫자에요~!

@@ -248,9 +557,9 @@ //REQUIRED: search: 0을 표시해줄 자릿수예요!!

var result =
this.leadingZeros(d.getFullYear(), 4) + '-' +
this.leadingZeros(d.getMonth() + 1, 2) + '-' +
this.leadingZeros(d.getDate(), 2) + ' ' +
leadingZeros(d.getFullYear(), 4) + '-' +
leadingZeros(d.getMonth() + 1, 2) + '-' +
leadingZeros(d.getDate(), 2) + ' ' +
this.leadingZeros(d.getHours(), 2) + ':' +
this.leadingZeros(d.getMinutes(), 2) + ':' +
this.leadingZeros(d.getSeconds(), 2);
leadingZeros(d.getHours(), 2) + ':' +
leadingZeros(d.getMinutes(), 2) + ':' +
leadingZeros(d.getSeconds(), 2);

@@ -262,6 +571,22 @@ return result;

clean.date.now = function() {
// 지금은 지금이다!
// 롸잇! 나우!
return new Date();
};
// 문서 높이 구하기인데... 마땅히 어디다가 둘때가;;;
//COMMENT: 여기 두심 됩니당!! ㅋㅋ 이름은 좀 변경 했어용!!
clean.dom.docHeight = function() {
var d = document;
// 현재 문서의 높히를 구해요!
return Math.max(
Math.max(d.body.scrollHeight, d.documentElement.scrollHeight),
Math.max(d.body.offsetHeight, d.documentElement.offsetHeight),
Math.max(d.body.clientHeight, d.documentElement.clientHeight)
);
};
// clean.js의 셀렉터입니다!

@@ -275,13 +600,58 @@ clean.dom.find = function(selectors) {

// 문서 높이 구하기인데... 마땅히 어디다가 둘때가;;;
clean.dom.getDocHeight = function() {
//REQUIRED: 현재 문서의 높히를 구해요!
/**
* 특정 콘텍스트에 바인딩한 함수를 만들어서 돌려줍니다.
* @param {Function} funArg
* @param {Object} context
* @returns {Function} {bound}
*/
clean.function.bind = function (funArg, context){
var partial = Array.prototype.splice.call(arguments, 2);
var d = document;
return Math.max(
Math.max(d.body.scrollHeight, d.documentElement.scrollHeight),
Math.max(d.body.offsetHeight, d.documentElement.offsetHeight),
Math.max(d.body.clientHeight, d.documentElement.clientHeight)
);
// 바운드 함수를 만듭니다.
var Bound = function(){
// apply에 전달할 매개변수 배열이 필요합니다.
var args = partial.concat( Array.prototype.splice.call(arguments, 0) );
if ( false === ( funArg instanceof Bound ) ){
return funArg.apply( context, args );
}
funArg.apply( funArg, args );
}
// 프로토타입
Bound.prototype = funArg.prototype;
return Bound;
};
// 몇초를 기다릴까나?
clean.helper.delay = function(seconds, func) {
// seconds 초 기달려!
// 기달리고 func 실행해!
setTimeout(func, seconds * 1000);
};
// 랜덤 색상문자열 생성!
clean.helper.randomColor = function() {
// #09ab77 같은 색상문자열 반환
return '#' + ('00000' + (Math.random() * 16777216 << 0).toString(16)).substr(-6);
};
// func를 몇번 수행할까나??
clean.helper.times = function(times, func) {
var
// index!!!
i;
// 0에서 times 만큼,
for ( i = 0; i < tiems; i += 1) {
// func를 실행한다!!
// index를 넘겨주는건 덤!!
func(i);
}
};
// 브라우저 정보를 가져옵니다.

@@ -320,7 +690,51 @@ clean.info.browser = function() {

// 디바이스 정보를 가져옵니다.
clean.info.device = function(target) {
//TODO:
clean.info.device = (function(){
var agent = navigator.userAgent;
var isIOS = agent.match(/(iPad|iPhone|iPod)/g) ? true : false;
var ios = (function(){
if(isIOS){
var startPoint = agent.indexOf('OS ');
if((agent.indexOf('iPhone') > -1 || agent.indexOf('iPad') > -1) && startPoint > -1){
return 1 * (agent.substr(startPoint + 3, 3).replace('_', '.'));
}
}else{
return false;
}
})();
// device.isIOS : IOS면 true 아니면 false
// device.ios : ios7일 경우 7, ios6.1일 경우 6.1을 리턴, 아니면 false
// 개인적으로는 html에 ios ios-7 클래스 등을 덧붙이도록 만들어서 사용하고 있습니다.
return {
isIOS : isIOS,
ios : ios
}
})();
// 랜덤한 정수 반환~!
clean.integer.random = function(min, max) {
//OPTIONAL: min: 최소값
//REQUIRED: max: 최대값
// max 부분에 값이 없으면 max가 아니라 min이 입력되지 않은것.
if (max === undefined) {
// max 값을 되찾고,
max = min;
// 기본값인 0을 넣어줍니다!
min = 0;
}
// Math 함수들을 이용해서 랜덤한 정수를 반환!!!
return Math.floor(Math.random() * (max - min + 1) + min);
};
//TODO: arguments 객체인지 확인하는 기능이 필요합니다!!
// 배열인가?
clean.is.array = function(target) {
//REQUIRED: target
return target instanceof Array;
};
/**

@@ -344,2 +758,96 @@ * 입력된 값이 정해진 문자열로만 이루어졌는지 확인

// target이 비었나??
clean.is.empty = function(target) {
//REQUIRED: target
var
// isEmpty?
// 일단은 비었다는 가정을 하고!!
isEmpty = true;
// target이 객체면!
if (clean.is.object(target) === true) {
// target의 값들을 돌아보는데,
clean.object.each(target, function(value, key) {
// 어? 비지 않았어?!?!
// 비지 않았네?!?!?
// 그럼 false!!!!
isEmpty = false;
// 더이상 돌아볼 필요도 없다.
return false;
});
}
// target이 문자열이면!!
else if (clean.is.string(target) === true) {
// 빈 문자열이면 얄짤없지!
if (target === '') {
isEmpty = false;
}
}
//TODO: 다른 type들에 대해서도 필요합니다!!
return isEmpty;
};
// target1, 2가 같냐?
clean.is.equal = function(target1, target2) {
//REQUIRED: target1
//REQUIRED: target2
var
// isEqual!
// 일단은 같다고 가정하고 틀리면 false로 바꿔줍시다.
isEqual = true;
// target들이 둘다 객체면!!
if (clean.is.object(target1) === true && clean.is.object(target2) === true) {
// target1의 값들을 돌아보면서,
clean.object.each(target1, function(value, key) {
// target1과 target2의 값이 다르면!
if (target2[key] !== value) {
// 이런. 다르군.
isEqual = false;
// each 중단!
return false;
}
});
// 이번엔 target2의 값들을 돌아보면서,
clean.object.each(target2, function(value, key) {
// target1과 target2의 값이 다르면!
if (target1[key] !== value) {
// 이런. 다르군.
isEqual = false;
// each 중단!
return false;
}
});
}
//TODO: 다른 type들에 대해서도 필요합니다!!
return isEqual;
};
// 니 함수냐?
clean.is.func = function(target) {
//REQUIRED: target: 함순지 확인할 대상
// 그냥 타입을 체크하면 되는듯ㅋ 찡긋ㅋ
return typeof target === 'function';
};
// 정수인가?

@@ -377,3 +885,10 @@ clean.is.integer = function(target) {

*/
// 객체인가?
clean.is.object = function(target) {
//REQUIRED: target: 객체인지 확인할 대상
// typeof로 후려쳤습니다.
return typeof target === 'object';
};
// 문자열인가?

@@ -386,8 +901,31 @@ clean.is.string = function(target) {

// IE에서 toString에 접근하기 위해서는 Object.prototype.toString으로 접근해야합니다.
// 브라우져에 상관없이 쓸 수 있는 typeof을 쓰는 건 어떨가요?
// typeof (new String('abc')) === "object"라는 tipjs님의 말씀에 따라 instanceof 검사로직을 추가합니다.
return typeof target === 'string' || target instanceof String;
// IE에서 toString에 접근하기 위해서는 Object.prototype.toString으로 접근해야합니다.
// 브라우져에 상관없이 쓸 수 있는 typeof을 쓰는 건 어떨가요?
// typeof (new String('abc')) === "object"라는 tipjs님의 말씀에 따라 instanceof 검사로직을 추가합니다.
return typeof target === 'string' || target instanceof String;
//COMMENT: 매우 만족합니당!
};
// 달을 구한다. 혹시나 ...아주 나중에....
// 진짜 나중에.... clean에서 다국어 지원한다면 요긴하게 쓰이겠지만...
// 아마 안쓰일꺼예요.... 아 그냥 그렇다구
//COMMENT: ㅋㅋ 한국어 지원인 만큼 korean 패키지로 이동했습니다.
clean.korean.month = function (month){
//REQUIRED: month: 숫자값이예유~
var monthArray = new Array("1월", "2월", "3월",
"4월", "5월", "6월",
"7월", "8월", "9월",
"10월", "11월", "12월");
return monthArray[month];
};
// 문자열의 특정 값들을 치환하는 템플릿을 생성합니다!!
clean.string.Template = function() {
//TODO: 작성 필요
};
/**

@@ -580,2 +1118,27 @@ * 공통으로 사용되는 인터랙션에 관련된 스크립트를 모아둔 모듈.

// 객체 파워 복사!!!
clean.object.copy = function(object) {
//REQUIRED: object
//TODO: deep copy를 구현해야함!!
//TODO: 이것을 하기 위해선 array copy와 date형 copy등이 필요함!!
};
// object를 살펴보면서, 이미 있는건 무시하고 없는건 defaults에서 넣어줍니당당
clean.object.defaults = function(object, defaults) {
//REQUIRED: object
//REQUIRED: defaults
// defaults의 프로퍼티들을 살펴보면서,
clean.object.each(defaults, function(value, key) {
// 읎네???
if (clean.object.has(object, key) === false) {
// 자! 가져라!
object[key] = value;
}
});
};
// 객체의 프로퍼티를 각각 처리한다!

@@ -597,3 +1160,6 @@ clean.object.each = function(object, callback) {

// 프로퍼티의 값과 키를 callback으로 쏴줘요!
callback(object[key], key);
// 만약 callback의 결과값이 false면 더이상 살펴보지 않고 중단!
if (callback(object[key], key) === false) {
break;
}
}

@@ -603,2 +1169,70 @@ }

// 객체 확!장!
clean.object.extend = function(object, extend) {
//REQUIRED: object: 본래 객체
//REQUIRED: extend: 확장 객체
// 확장 객체의 프로퍼티들을 살펴보면서,
clean.object.each(extend, function(value, key) {
// 본래 객체에 없는거면,
if (clean.object.has(extend, key) === false) {
// 과감하게 삽입!!!
object[key] = value;
}
});
};
// object 내의 function들의 key을 반환해주는 기능!!!
clean.object.functionKeys = function(object) {
//REQUIRED: object
var
// 쓕쓕 뽑아냅시다.
functionKeys = [];
// 객체의 프로퍼티들을 살펴보면서,
clean.object.each(object, function(value, key) {
// 값이 function 이면!
if (clean.is.func(value)) {
// function key들을 솹윕!
functionKeys.push(key);
}
});
// 뽑아낸 funcion key들을 반환!
return functionKeys;
};
// object에 특정 값이 있는지 확인합니다!!
clean.object.has = function(object, key) {
//REQUIRED: object
//REQUIRED: key
// 너 그 값 안갖고있냐?
return object[key] !== undefined;
};
// object를 key와 value의 순서를 바꾸어주는 기능!
clean.object.invert = function(object) {
//REQUIRED: object
var
// 바꿔 바꿔~! 모든걸 다바꿔~!
invert = {};
// 객체의 프로퍼티들을 살펴보면서,
clean.object.each(object, function(value, key) {
// invert 객체의 value에 key를 값으로다가 삽입!!!
invert[value] = key;
});
// 만들어진 invert 반환!
return invert;
};
// object의 키들을 배열로 반환하는 함수

@@ -614,2 +1248,3 @@ clean.object.keys = function(object) {

clean.object.each(object, function(value, key) {
// 키들을 배열에 넣습니다.

@@ -623,2 +1258,78 @@ keys.push(key);

// object의 특정 값들을 제외하고 뽑아내는 기능!!!
clean.object.omit = function(object) {
//REQUIRED: object
//OPTIONAL: arguments[1], arguments[2]...: 제외할 값들의 key!!!
var
// 뽑아낸 값들을 갖고있을 객체!~!
omit = {};
// 객체의 프로퍼티를 일단 넣는다!
clean.object.each(object, function(value, key) {
// 쑤우우우욱~~
omit[key] = value;
});
// omit 함수를 실행할 때 넘어온 arguments 들을 돌아보면서...
clean.object.each(arguments, function(value) {
// 대상이 되는 object는 넘기고~~ 넘기고~~
if (value !== object) {
// 파워제거!
// arguments의 value가 제거할 값들의 key니까 이렇게...
delete omit[value];
}
});
// 뽑아낸 객체를 반환!~!
return omit;
};
// object를 [key, value] 배열로 바꾸어주는 기능!!
clean.object.pairs = function(object) {
//REQUIRED: object
var
// [key, value] 배열!
pairs = [];
// 객체의 프로퍼티들을 살펴보면서,
clean.object.each(object, function(value, key) {
// [key, value]를 배열에 넣습니다!
pairs.push([key, value]);
});
// 최종적으로 [key, value] 배열 반환!
return pairs;
};
// object의 특정 값들을 뽑아내는 기능!!!
clean.object.pick = function(object) {
//REQUIRED: object
//OPTIONAL: arguments[1], arguments[2]...
var
// 뽑아낸 값들을 갖고있을 객체!~!
pick = {};
// pick 함수를 실행할 때 넘어온 arguments 들을 돌아보면서...
clean.object.each(arguments, function(value) {
// 대상이 되는 object는 넘기고~~ 넘기고~~
if (value !== object) {
// 파워삽입!
// arguments의 value가 뽑아낼 값들의 key니까 이렇게...
pick[value] = object[value];
}
});
// 뽑아낸 객체를 반환!~!
return pick;
};
// object의 값들을 배열로 반환하는 함수

@@ -634,2 +1345,3 @@ clean.object.values = function(object) {

clean.object.each(object, function(value) {
// 키들을 배열에 넣습니다.

@@ -643,33 +1355,19 @@ values.push(value);

// 랜덤 색상문자열 생성!
clean.random.color = function() {
// 문자열 사이 값을 출력합니다!
clean.string.between = function(target, start, end) {
//REQUIRED target
//REQUIRED start
//OPTIONAL end
// #09ab77 같은 색상문자열 반환
return '#' + ('00000' + (Math.random() * 16777216 << 0).toString(16)).substr(-6);
};
// 시작점
var startPos = target.indexOf(start);
// 끝점
var endPos = clean.string.reverse(target).indexOf(end);
// 랜덤 문자열을 반환하는 함수입니다.
clean.random.string = function(size) {
//REQUIRED: size: 올매나 긴 문자열을 만들건지 ㅋ
startPos = startPos !== -1 ? startPos : 0;
endPos = endPos !== -1 ? target.length - endPos : target.length;
var
// 너, 문자열.
str = '',
// 랜덤하게 생성 가능한 character 셋
possibleChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
// index!
i;
// size까지 돌면서
for ( i = 0; i < size; i += 1) {
// 문자열에서 랜덤하게 하나의 char을 끄집어 와 추가합니다!
str += possibleChars.charAt(Math.floor(Math.random() * possibleChars.length));
}
// 마지막으로 반! 환!
return str;
};
// 자릅니다!
return target.substring(startPos, endPos);
}
// 문자열에서 해당문자가 포함되었는지 확인합니다

@@ -681,4 +1379,5 @@ clean.string.contains = function(target, search) {

// search를 찾아가지고 인덱스를 확인합니다!
return target.indexOf(search) >= 0;
return target.indexOf(search) != -1;
};
// 글자를 바이트 단위로 자릅니다

@@ -728,2 +1427,13 @@ clean.string.cutByteString = function(message, maximum) {

}
// 문자열을 escape합니다!!
// 특히나 한국어는 escpae가 많이많이 상당히 필요하죵ㅇㅇㅇ!
clean.string.escape = function(string) {
//REQUIRED: string: escape 할 문자열
// encodeURIComponent를 이용합니다!
// 알파벳과 숫자 외 문자를 모두 escape!!
// http://도 http%3A%2F%2F로 바껴요!
return encodeURIComponent(string);
};
// 문자열에서 HTML 태그를 escape 합니다.

@@ -880,2 +1590,26 @@ clean.string.escapeHtml = (function(){

})();
// 랜덤 문자열을 반환하는 함수입니다.
clean.string.random = function(size) {
//REQUIRED: size: 올매나 긴 문자열을 만들건지 ㅋ
var
// 너, 문자열.
str = '',
// 랜덤하게 생성 가능한 character 셋
possibleChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
// index!
i;
// size까지 돌면서
for ( i = 0; i < size; i += 1) {
// 문자열에서 랜덤하게 하나의 char을 끄집어 와 추가합니다!
str += possibleChars.charAt(Math.floor(Math.random() * possibleChars.length));
}
// 마지막으로 반! 환!
return str;
};
// 문자열에서 특정 문자열을 모두 제거한다!

@@ -901,2 +1635,9 @@ clean.string.removeAll = function(target, search) {

// 문자열을 거꾸로!
clean.string.reverse = function(target) {
//REQUIRED target
return target.split('').reverse().join('');
}
// 문자열에서 HTML 태그를 삭제합니다.

@@ -932,2 +1673,12 @@ clean.string.stripTag = (function(){

// escape한 문자열 원래 문자열로 돌립니다!!
// 특히나 한국어는 escpae가 많이많이 상당히 필요하죵ㅇㅇㅇ!
clean.string.unescape = function(escape) {
//REQUIRED: escape: escape 된 문자열
// decodeURIComponent를 이용합니다!
// escape가 encodeURIComponent를 이용하였기 때문!!
return decodeURIComponent(escape);
};
// 어떤 대상을 배열로 변경

@@ -940,24 +1691,32 @@ clean.to.array = function(thing) {

// 정수로 바꾼다!
// 정수로 바꾼다! (32비트 이상도 처리)
clean.to.integer = function(thing) {
//REQUIRED: thing: 변경할 대상
/*
js의 비트연산자는 기본적으로 32비트 signed int를 대상으로 합니다.
피연산자가 다른 형식일 경우 자동으로 해당 형식으로 변환한 뒤 연산
을 시도하구요. 이 과정이 단순히 parseInt를 사용하는지는 모르겠는
데, "0xff"같은 문자열도 16진수로 변환해서 처리를 해주더라구요. 스
펙문서를 제가 못 찾은건지 그건 확인을 못 해봤지만, 어쨌든 그래서
비트연산의 대상이 되면 소수점같은거 없는 깔끔한 정수가 됩니다.
또한, 반환값도 당연히 32비트 정수로 정해져 있기 때문에 null NaN
undefined infinity 그런거 없이 무조건 0을 반환합니다. 예외도 발생
시키지 않구요. 이는 어떠한 값을 "반드시 정수일 것을 보장" 하기에
좋은 방법이라 은근히 많이 사용되는 잔스킬입니다.
// 음.. 더 좋은 방법이 없을까요?
return parseInt(thing, 10);
};
같은 맥락에서 아래 것들도 같은 작용을 합니다.
// 정수로 바꾼다! (32 bit!)
clean.to.integer32 = function(thing) {
//REQUIRED: thing: 변경할 대상
~~v // bitwise NOT
v<<0 // bitwise shift
*/
/*
js의 비트연산자는 기본적으로 32비트 signed int를 대상으로 합니다.
피연산자가 다른 형식일 경우 자동으로 해당 형식으로 변환한 뒤 연산
을 시도하구요. 이 과정이 단순히 parseInt를 사용하는지는 모르겠는
데, "0xff"같은 문자열도 16진수로 변환해서 처리를 해주더라구요. 스
펙문서를 제가 못 찾은건지 그건 확인을 못 해봤지만, 어쨌든 그래서
비트연산의 대상이 되면 소수점같은거 없는 깔끔한 정수가 됩니다.
또한, 반환값도 당연히 32비트 정수로 정해져 있기 때문에 null NaN
undefined infinity 그런거 없이 무조건 0을 반환합니다. 예외도 발생
시키지 않구요. 이는 어떠한 값을 "반드시 정수일 것을 보장" 하기에
좋은 방법이라 은근히 많이 사용되는 잔스킬입니다.
같은 맥락에서 아래 것들도 같은 작용을 합니다.
~~v // bitwise NOT
v<<0 // bitwise shift
*/
return thing | 0;

@@ -964,0 +1723,0 @@ };

4

package.json
{
"name": "clean.js",
"version": "0.0.1",
"description": "깨끗하게 맑게 자신있게~! 누구나 읽기 쉬운 깔끔한 JavaScript!",
"version": "0.0.2",
"description": "누구나 참여하고 누구나 읽기 쉬운 소스코드를 작성한다! 오픈소스 JavaScript 라이브러리, clean.js!",
"main": "clean.js",

@@ -6,0 +6,0 @@ "repository": {

![ScreenShot](https://raw.github.com/cleanjs/clean.js/master/logo.png)
========
clean.js는 언제나 열려있습니다. 아무때나, 편하게 오셔서 커밋한번 하고 가세요~!
___ __ ____ __ _ _ ____ ___

@@ -15,3 +17,13 @@ / __)( ) ( ___) /__\ ( \( ) (_ _)/ __)

- @cleanjs.org 메일 주소 신청받아요~! 네이버 메일과 연동할 수 있어요!
- 코드 공부하시다가 설명이 부족하다 싶은 부분은 이해하시는 대로 주석으로 남겨주세요!
node.js
-------
npm install clean.js
목표
----
<del>underscore.js( http://underscorejs.org )를 뛰어넘는 멋진 JavaScript 라이브러리!</del>
목표 수정! 이번엔 jQuery?
이것만은 지켜주세요!

@@ -22,6 +34,7 @@ ----

- 부담없이 막 올려주세요! 주석이라도 좋으니 1일 1커밋을 해봅시다!
- 주석은 백만줄이라도 좋으니 팍팍 달아주세요. 상세하게 설명할수록 좋아요.
- 주석은 백만줄이라도 좋으니 팍팍 달아주세요. 한글로 상세하게 설명할수록 좋아요.
- 내가 만족하는 코드가 아닌 다른 사람이 '보기 좋은' 코드를 작성해주세요!
- 부담없이 커밋해 주세요! 작성하신 코드를 다른 사람들이 더 발전시켜 줄거에요! :)
- 때에 따라서는 지워질수도 있어요! ;(
- 기능들은 clean.{패키지 명}.{기능 명} 으로 작성해주세요~!
- 기능 하나에 파일 하나! clean.is.good 이라는 기능은 is폴더 안에 good.js로 만들어주세요!

@@ -43,3 +56,3 @@ - 모든 기능은 function으로 만들어주세요 순!수!함!수! :)

원래 한분한분 아이디 작성해 놓았는데 넘 길어지는것 같아 숫자로 대신합니다!<br>
현재 총 27분의 커미터가 계십니다!
현재 총 29분(>=)의 커미터가 계십니다!

@@ -51,2 +64,3 @@ 타임라인

- 2014-02-26: http://cleanjs.org 오픈
- 2014-02-27: npm package로 등록 (https://www.npmjs.org/package/clean.js)

@@ -53,0 +67,0 @@ 라이센스

// 배열의 요소를 각각 처리한다!
clean.array.each = function(array, callback) {
//REQUIRED: array
//REQUIRED: callback(elem, index of elem){...}
// REQUIRED: array
// REQUIRED: callback(elem, index of elem){...}

@@ -6,0 +6,0 @@ var

// 배열에서 값들 찾아갖고 배열로 반환!
clean.array.filter = function(array, check) {
//REQUIRED: array
//REQUIRED: check
// REQUIRED: array
// REQUIRED: check

@@ -6,0 +6,0 @@ var

// 배열에서 값 찾기
clean.array.find = function(array, check) {
//REQUIRED: array
//REQUIRED: check
// REQUIRED: array
// REQUIRED: check

@@ -6,0 +6,0 @@ var

// 배열에서 최대 값 찾기
clean.array.max = function(array) {
//REQUIRED: array
// REQUIRED: array

@@ -5,0 +5,0 @@ var

// 배열에서 최소 값 찾기
clean.array.min = function(array) {
//REQUIRED: array
// REQUIRED: array

@@ -5,0 +5,0 @@ var

// 지금이 언제냐?
clean.date.now = function() {
// 지금은 지금이다!
// 롸잇! 나우!
return new Date();
};

@@ -17,7 +17,7 @@ #자네 DATE공간에 온걸 환영하네.

##getTimeStamp
##timeStamp
이 것은 자네가 만약 디버깅을 할경우나 `년년년년-월월-일일 시시:분분:초초` 형식으로 날짜와 시간을 보고싶다면 아래의 코드를 이용하면 된다네.
```
//코드
console.log(clean.date.getTimeStamp());
console.log(clean.date.timeStamp());

@@ -28,2 +28,2 @@ //결과

자네도 괜찮다면 같이 참여하지 않겠는가?
자네도 괜찮다면 같이 참여하지 않겠는가?
돔을 처리하자.
====
![ScreenShot](https://raw.github.com/cleanjs/clean.js/master/source/dom/dom.jpg)
![ScreenShot](https://raw.github.com/cleanjs/clean.js/master/source/dom/dom.jpg)
// 디바이스 정보를 가져옵니다.
clean.info.device = function(target) {
//TODO:
};
clean.info.device = (function(){
var agent = navigator.userAgent;
var isIOS = agent.match(/(iPad|iPhone|iPod)/g) ? true : false;
var ios = (function(){
if(isIOS){
var startPoint = agent.indexOf('OS ');
if((agent.indexOf('iPhone') > -1 || agent.indexOf('iPad') > -1) && startPoint > -1){
return 1 * (agent.substr(startPoint + 3, 3).replace('_', '.'));
}
}else{
return false;
}
})();
// device.isIOS : IOS면 true 아니면 false
// device.ios : ios7일 경우 7, ios6.1일 경우 6.1을 리턴, 아니면 false
// 개인적으로는 html에 ios ios-7 클래스 등을 덧붙이도록 만들어서 사용하고 있습니다.
return {
isIOS : isIOS,
ios : ios
}
})();

@@ -8,6 +8,8 @@ // 문자열인가?

// IE에서 toString에 접근하기 위해서는 Object.prototype.toString으로 접근해야합니다.
// 브라우져에 상관없이 쓸 수 있는 typeof을 쓰는 건 어떨가요?
// typeof (new String('abc')) === "object"라는 tipjs님의 말씀에 따라 instanceof 검사로직을 추가합니다.
return typeof target === 'string' || target instanceof String;
// IE에서 toString에 접근하기 위해서는 Object.prototype.toString으로 접근해야합니다.
// 브라우져에 상관없이 쓸 수 있는 typeof을 쓰는 건 어떨가요?
// typeof (new String('abc')) === "object"라는 tipjs님의 말씀에 따라 instanceof 검사로직을 추가합니다.
return typeof target === 'string' || target instanceof String;
//COMMENT: 매우 만족합니당!
};

@@ -17,5 +17,8 @@ // 객체의 프로퍼티를 각각 처리한다!

// 프로퍼티의 값과 키를 callback으로 쏴줘요!
callback(object[key], key);
// 만약 callback의 결과값이 false면 더이상 살펴보지 않고 중단!
if (callback(object[key], key) === false) {
break;
}
}
}
};

@@ -11,2 +11,3 @@ // object의 키들을 배열로 반환하는 함수

clean.object.each(object, function(value, key) {
// 키들을 배열에 넣습니다.

@@ -13,0 +14,0 @@ keys.push(key);

@@ -11,2 +11,3 @@ // object의 값들을 배열로 반환하는 함수

clean.object.each(object, function(value) {
// 키들을 배열에 넣습니다.

@@ -13,0 +14,0 @@ values.push(value);

@@ -14,6 +14,9 @@ // 요기는 패키지 정보를 담고있어요.

// 데이터 처리
object : {},
function : {},
array : {},
object : {},
date : {},
string : {},
integer : {},
bool : {},

@@ -24,3 +27,3 @@ // helpers

valid : {},
random : {},
helper : {},

@@ -32,3 +35,6 @@ // 브라우저 전용 패키지들

// 모듈
module : {}
module : {},
// 다국어 지원 (i18n)
korean : {}
};

@@ -35,0 +41,0 @@

@@ -1,34 +0,324 @@

<<<<<<< HEAD
쏘스
===
- 보기좋은 소스가 쓰기도 좋다.
- 왼손이 코딩한걸 오른손이 모르게 하라
- 엔터는 거들뿐
=======
쏘쓰
====
보기좋은 소스가 쓰기도 좋다.
#Cleanjs function list?
패키지
----
패키지들입니다.
Cleanjs 에서 사용되는 함수들 입니당!
- info
[TOC]
데이터 처리
- array
- object
- date
- string
##String's
helpers
- is
- to
- valid
- random
### contains
문자열에 해당문자가 포함되어 있는지 확인합니다.
브라우저 처리
- dom
**Paramaters**
![ScreenShot](https://raw.github.com/cleanjs/clean.js/master/source/source.jpg)
>>>>>>> FETCH_HEAD
1. targetString - String
2. searchString - String
**Return**
`boolean`
**Uasge**
```
var targetString = "암~ 쏘핫 난 너무 멋져~";
var searchString = "너무";
var result = clean.string.contains(targetString, searchString);
console.log(result);
```
**Result**
`true` or `false`
---
### escapeHtml
문자열에서 HTML 태그를 escape 합니다
`escape` => 영어사전적의미는 달아나다, 탈풀하다 또는 나쁜상황에서 벗어나다, 불쾌하거나 위험한것을 피하다 인데 프로그래밍적으로 뭐라해야하나요;;;
**Paramaters**
1. tag - String
**Return**
`String`
**Uasge**
```
var tag = "<a href='http://naver.com'>링크 태그예유~</a>";
var result = clean.string.escapeHtml(tag);
console.log('바꾸기 전 =>' + tag);
```
**Result**
Before
<a href='http://naver.com'>링크 태그예유~</a>
After
&lt;a href=&apos;http://naver.com&apos;&gt;링크 태그예유~&lt;/a&gt;
---
### removeAll
문자열에서 특정 문자열을 모두 제거한다.
**Paramaters**
1. targetString - String
2. removeString - String
**Return**
`String`
**Uasge**
```
var targetString = '아싸라비야 콜롬비야 뿌악뿌악';
var removeString = '뿌악뿌악';
var result = clean.string.removeAll(targetString, removeString);
console.log('삭제후 결과 => ' + result);
```
**Result**
Before
아싸라비야 콜롬비야 뿌악뿌악
After
아싸라비야 콜롬비야
---
### replaceAll
문자열에서 특정 문자열을 모두 변경한다!
**Paramaters**
1. targetString - String
2. searchString - String
3. replaceString - String
**Return**
`String`
**Uasge**
```
var targetString = "가나 초콜릿 가나다 가가가나나나";
var searchString = "나";
var replaceString = "바";
var result = clean.string.replaceAll(targetString, searchString, replaceString);
console.log('결과 => ' + result);
```
**Result**
Before
가나 초콜릿 가나다 가가가나나나
After
가바 초콜릿 가바다 가가가바바바
---
### stripTag
문자열에서 HTML 태그를 삭제합니다.
**Paramaters**
1. tag - String
**Return**
`String`
**Uasge**
```
var tag = "<a href='http://naver.com'>링크 태그예유~</a>";
var result = clean.string.stripTag(tag);
console.log('삭제 후 =>' + result);
```
**Result**
Before
<a href='http://naver.com'>링크 태그예유~</a>
After
링크 태그예유~
---
### trim
문자열의 앞뒤 공백을 제거합니다
**Paramaters**
1. targetString - String
**Return**
`String`
**Uasge**
```
var targetString = " 아싸라비야 콜롬비야 삐약삐약 ";
var result = clean.string.trim(targetString);
console.log('변경후 문자열 => ' + result);
```
**Result**
Before
아싸라비야 콜롬비야 삐약삐약
After
아싸라비야 콜롬비야 삐약삐약
Comment
결과화면엔 별다른 차이점이없지만 문자열의 앞뒤 공백이 제거되었음을 알립니다.
---
### hyphenOnPhoneNum
숫자로만 이루어진 전화번호에 하이픈( - ) 을 넣어서 반환한다.
**Paramaters**
1. targetNumber - String or Interger
**Return**
`String`
**Uasge**
```
var targetNumber = "01012341234";
var result = clean.string.hyphenOnPhoneNum(targetNumber);
console.log('하이픈 넣은후 => ' + result)
```
**Result**
Before
01012341234
After
010-1234-1234
---
### random
알파벳을 지정한 수 만큼 무작위로 반환 합니다.
**Paramaters**
1. Number - Interger
**Return**
`String`
**Uasge**
```
var randomLength = 15;
var randomString = clean.string.random(randomLength);
console.log('랜덤 문자열 =>' + randomString);
```
**Result**
tGASq7LwUj6I591
Comment
랜덤문자열은 항상 다른값으로 출력됩니다.
---
### between
문자열 사이의 값을 출력합니다.
**Paramaters**
1. target - String
2. start - Interger
3. end - Interger
**Return**
`String`
**Uasge**
```
var targetString = "안녕하세요 저는 Cleanjs에 도움말 입니다."
var start = 14;
var end = 21;
var betweenString = clean.string.between(targetString, start, end);
console.log('문자열 뽑기 =>' + randomString);
```
**Result**
Cleanjs
---
### Function
**Paramaters**
**Return**
**Uasge**
**Result**
---

@@ -7,3 +7,3 @@ // 문자열에서 해당문자가 포함되었는지 확인합니다

// search를 찾아가지고 인덱스를 확인합니다!
return target.indexOf(search) >= 0;
};
return target.indexOf(search) != -1;
};

@@ -117,2 +117,13 @@ #String에 찾아온걸 환영하네.

##random
랜덤 문자열을 반환하는 함수입니다.
```
//코드
var randomString = clean.string.random(15);
console.log('랜덤 문자열 =>' + randomString);
//결과
랜덤 문자열 => tGASq7LwUj6I591
```
계속 추가중입니다! 이상한 부분있음 수정해주세요!

@@ -1,24 +0,7 @@

// 정수로 바꾼다!
// 정수로 바꾼다! (32비트 이상도 처리)
clean.to.integer = function(thing) {
//REQUIRED: thing: 변경할 대상
/*
js의 비트연산자는 기본적으로 32비트 signed int를 대상으로 합니다.
피연산자가 다른 형식일 경우 자동으로 해당 형식으로 변환한 뒤 연산
을 시도하구요. 이 과정이 단순히 parseInt를 사용하는지는 모르겠는
데, "0xff"같은 문자열도 16진수로 변환해서 처리를 해주더라구요. 스
펙문서를 제가 못 찾은건지 그건 확인을 못 해봤지만, 어쨌든 그래서
비트연산의 대상이 되면 소수점같은거 없는 깔끔한 정수가 됩니다.
또한, 반환값도 당연히 32비트 정수로 정해져 있기 때문에 null NaN
undefined infinity 그런거 없이 무조건 0을 반환합니다. 예외도 발생
시키지 않구요. 이는 어떠한 값을 "반드시 정수일 것을 보장" 하기에
좋은 방법이라 은근히 많이 사용되는 잔스킬입니다.
같은 맥락에서 아래 것들도 같은 작용을 합니다.
~~v // bitwise NOT
v<<0 // bitwise shift
*/
return thing | 0;
// 음.. 더 좋은 방법이 없을까요?
return parseInt(thing, 10);
};
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc