-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
게시글 작성 시 본문 링크 삽입을 하지 않더라도 사용자에게 링크 클릭이 가능하도록 변경 (#706)
* feat: (#703) https | http | www을 판별하는 정규 표현식 구현 * test: (#703) 링크가 포함된 문자를 입력했을 때 문자에서 링크는 [[]]로 감싸서 반환하는 함수 테스트 및 정규표현식 수정 * feat: (#703) 게시글 작성 시 [[ ]] 를 따로 해주지 않고, 렌더링 시 링크에 [[]]로 감싸지도록 적용 * refactor: (#703) 게시글 작성, 댓글 작성 시 링크 넣기 버튼 삭제 * feat: (#703) 링크를 지원할 지 여부를 매개변수로 추가하여 홈에서는 링크를 span으로 렌더되도록 구현 * refactor: (#703) isLinkEnabled early return으로 코드 가독성 향상 * refactor: (#703) 홈에서도 링크에 접속 가능하도록 수정 웹 접근성을 위해 link로 들어가는 태그를 button으로 하여 스페이스바로 진입 가능하도록 함
- Loading branch information
1 parent
1be7c74
commit 89089fb
Showing
8 changed files
with
91 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
import { convertTextToUrl } from '@utils/post/convertTextToUrl'; | ||
|
||
test.each([ | ||
['www.naver.com 이걸 어째', '[[www.naver.com]] 이걸 어째'], | ||
[ | ||
'반갑다 https://github.com/woowacourse-teams/2023-votogether/issues/703 임', | ||
'반갑다 [[https://github.com/woowacourse-teams/2023-votogether/issues/703]] 임', | ||
], | ||
['안녕 wwwww.naver.com', '안녕 wwwww.naver.com'], | ||
['http://localhost:3000/ 피카츄', '[[http://localhost:3000/]] 피카츄'], | ||
[ | ||
'http://localhost:3000/http://localhost:3000/ 피카츄', | ||
'[[http://localhost:3000/http://localhost:3000/]] 피카츄', | ||
], | ||
['www.naver.com', '[[www.naver.com]]'], | ||
['[[www.naver.com]] www.naver.com', '[[www.naver.com]] [[www.naver.com]]'], | ||
[ | ||
'[[http://localhost:3000/]] http://localhost:3000/', | ||
'[[http://localhost:3000/]] [[http://localhost:3000/]]', | ||
], | ||
[ | ||
'[[https://votogether.com/ranking]] https://www.naver.com/', | ||
'[[https://votogether.com/ranking]] [[https://www.naver.com/]]', | ||
], | ||
[ | ||
'www.naver.com www.naver.com www.naver.com https://www.npmjs.com/package/dotenv-webpack', | ||
'[[www.naver.com]] [[www.naver.com]] [[www.naver.com]] [[https://www.npmjs.com/package/dotenv-webpack]]', | ||
], | ||
])( | ||
'convertTextToUrl 함수에서 링크가 포함된 문자를 입력했을 때 문자에서 링크는 [[]]로 감싸서 반환한다.', | ||
(word, expectedWord) => { | ||
const result = convertTextToUrl(word); | ||
|
||
expect(result).toBe(expectedWord); | ||
} | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/** | ||
* https://abc.co.kr/@abc/4 | ||
* https://votogether.com/ | ||
* http://localhost:3000/posts/100035 | ||
* http://votogether.com/ | ||
* (?<!\[\[) 는 앞에 [[로 시작하는 지 여부를 확인한다 | ||
* https?:\/\/는 http:// 혹은 https:// 로 시작하는 지 여부를 확인한다. | ||
* (?!\]\]) 는 뒤에 ]]로 끝나는 지 여부를 확인한다. | ||
* [^\s] 는 공백이 아닌 문자인지 여부를 확인한다. | ||
*/ | ||
const httpsOrHttpRegex = /(?<!\[\[)(https?:\/\/[^\s]+)(?!\]\])/g; | ||
|
||
/** | ||
* www.naver.com | ||
* www.tistory.com | ||
* (?<!\[\[) 는 앞에 [[로 시작하는 지 여부를 확인한다 | ||
* (?<!\/)는 앞에 /로 시작하는 지 여부를 확인한다. https://www 에서 www 앞에 /가 있기에 중복되어 확인하는 것을 방지하기 위함 | ||
* \b(w{3})\b 는 www로 시작하는 지 여부를 정확히 확인한다. w가 4개인 경우 판별하지 않음 | ||
* [^\s] 는 공백이 아닌 문자인지 여부를 확인한다. | ||
* (?!\]\]) 는 뒤에 ]]로 끝나는 지 여부를 확인한다. | ||
*/ | ||
const wwwRegex = /(?<!\[\[)(?<!\/)\b(w{3})\b[^\s]+(?!\]\])/g; | ||
|
||
export const convertTextToUrl = (text: string) => { | ||
const httpOrHttpsConvertedText = text.replace(httpsOrHttpRegex, url => `[[${url}]]`); | ||
const wwwConvertedText = httpOrHttpsConvertedText.replace(wwwRegex, url => `[[${url}]]`); | ||
|
||
return wwwConvertedText; | ||
}; |