전에 SyntaxHighlighter를 Tistory에 적용시키는 글을 포스팅한 적 있다.
[Programming/Web Language] - SyntaxHighlighter 티스토리에 적용하기
Tistory 글쓰기 기능 중 인용구를 이용하여 code:java 식으로 적기만 하면 바로 적용되는 간편한 방법이었다.
허나, 금일 갑자기 오류로 인하여 코드들이 개행 태그마다 abp라는 속성이 붙어서 한줄로 이상하게 출력되기 시작했다.
원 소스 출처인 테크북님 블로그도 같은 증상을 보인다. (http://techbook.tistory.com/entry/tistory-highlight)
왜 그런지 이유를 알아봤더니, 티스토리가 어떤 이유에서인지는 모르겠지만 내부에서 모든 태그에 abp라는 속성을 가지고 일련번호를 달고 있었다.
그래서 급히 이 문제를 해결함과 동시에, 위지윅 에디터에서 Tab키를 누르는 것도 코드에 반영되도록 코드를 수정하여 공개한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 |
<!-- Syntax Highlighter 코드 시작 --> <script type= "text/javascript" src= "https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" ></script> <script type= "text/javascript" src= "./images/shCore.js" ></script> <script type= "text/javascript" src= "./images/shLegacy.js" ></script> <script type= "text/javascript" src= "./images/shBrushAppleScript.js" ></script> <script type= "text/javascript" src= "./images/shBrushAS3.js" ></script> <script type= "text/javascript" src= "./images/shBrushBash.js" ></script> <script type= "text/javascript" src= "./images/shBrushColdFusion.js" ></script> <script type= "text/javascript" src= "./images/shBrushCpp.js" ></script> <script type= "text/javascript" src= "./images/shBrushCSharp.js" ></script> <script type= "text/javascript" src= "./images/shBrushCss.js" ></script> <script type= "text/javascript" src= "./images/shBrushDelphi.js" ></script> <script type= "text/javascript" src= "./images/shBrushDiff.js" ></script> <script type= "text/javascript" src= "./images/shBrushErlang.js" ></script> <script type= "text/javascript" src= "./images/shBrushGroovy.js" ></script> <script type= "text/javascript" src= "./images/shBrushJava.js" ></script> <script type= "text/javascript" src= "./images/shBrushJavaFx.js" ></script> <script type= "text/javascript" src= "./images/shBrushJScript.js" ></script> <script type= "text/javascript" src= "./images/shBrushPerl.js" ></script> <script type= "text/javascript" src= "./images/shBrushPhp.js" ></script> <script type= "text/javascript" src= "./images/shBrushPlain.js" ></script> <script type= "text/javascript" src= "./images/shBrushPowerShell.js" ></script> <script type= "text/javascript" src= "./images/shBrushPython.js" ></script> <script type= "text/javascript" src= "./images/shBrushRuby.js" ></script> <script type= "text/javascript" src= "./images/shBrushSass.js" ></script> <script type= "text/javascript" src= "./images/shBrushScala.js" ></script> <script type= "text/javascript" src= "./images/shBrushSql.js" ></script> <script type= "text/javascript" src= "./images/shBrushVb.js" ></script> <script type= "text/javascript" src= "./images/shBrushXml.js" ></script> <script type= "text/javascript" src= "./images/shBrushObjC.js" ></script> <link type= "text/css" rel= "stylesheet" href= "./images/shCore.css" /> <link type= "text/css" rel= "Stylesheet" href= "./images/shThemeDefault.css" /> <script type= "text/javascript" > /* jQuery 부분 */ jQuery.noConflict(); // 다른 라이브러리와 충돌을 방지한다. jQuery(document).ready( function (){ // 문서가 모두 읽힌 후에 다음을 실행 jQuery( "blockquote" ).each( function () { //blokquote가 사용한 태그 if (jQuery( this ).attr( 'class' ).substr(0,5)== 'brush' ) // 그중 클래스명이 brush로 시작하는 것을 찾아 적용 { jQuery( this ).find( 'p,br' ).each( function () { jQuery( this ).removeAttr( 'abp' ); }); var temp = jQuery( this ).html(); temp = temp.replace(/\n/gi, "" ); temp = temp.replace(/<p style=\ "margin-left: 2em;\">/gi, " \n "); //티스토리내의 Tab키를 지원한다 temp = temp.replace(/<BR>/gi, " \n "); temp = temp.replace(/<BR \/>/gi, " \n "); temp = temp.replace(/<P>/gi, " \n "); temp = temp.replace(/<\/P>/gi, " "); //temp = '<pre class=" '+ jQuery( this ).attr( 'class' ) + '">' +temp+ '</pre>' temp = '<script type="syntaxhighlighter" class="' + jQuery( this ).attr( 'class' ) + '"><![CDATA[' +temp+ ']]><\/script>' ; jQuery( this ).after(temp); // 뒤에 새 작성된 pre 또는 script태그로 붙인다. jQuery( this ).remove(); // 기존의 인용태그 삭제 } else if (jQuery( this ).attr( 'class' ).substr(0,5)== 'code:' ) // 그중 클래스명을 code:로 해도 되게끔 { var length = jQuery( this ).attr( 'class' ).length; jQuery( this ).find( 'p,br' ).each( function () { jQuery( this ).removeAttr( 'abp' ); }); var temp = jQuery( this ).html(); temp = temp.replace(/\n/gi, " "); temp = temp.replace(/<p style=\"margin-left: 2em;\">/gi, " \n "); temp = temp.replace(/<BR>/gi, " \n "); temp = temp.replace(/<BR \/>/gi, " \n "); temp = temp.replace(/<P>/gi, " \n "); temp = temp.replace(/<\/P>/gi, " "); temp = '<script type=" syntaxhighlighter " class=" brush:'+ jQuery( this ).attr( 'class' ).substr(5, length) + '"><![CDATA[' +temp+ ']]><\/script>' ; jQuery( this ).after(temp); jQuery( this ).remove(); } }); /* SyntaxHighlighter 부분 */ SyntaxHighlighter.defaults[ 'toolbar' ] = false ; // 툴바 안 보기 SyntaxHighlighter.all(); }); </script> <!-- Syntax Highlighter 코드 끝 --> |
30번째 라인은 Objective C를 지원하는 브러쉬로 원치 않는 사람은 라인을 빼면 된다.
만약 Objective C 도 지원하고 싶다면 아래 파일을 다운 받아 스킨 업로드하는 곳에 올리면 된다.
사용은 brush:objc 정도로 하면 된다.
'유용한툴' 카테고리의 다른 글
소스코드 깔끔 정리 ColorScripter (0) | 2015.02.03 |
---|---|
에디트플러스 단축키 (0) | 2014.10.23 |
Secure CRT (0) | 2014.08.28 |
Onenote 와 evernote 공유하기 (0) | 2014.08.28 |
에버노트 포터블 (0) | 2014.08.28 |
SyntaxHighlighter 사용하기 편하도록 티스토리에 적용하기 (0) | 2014.08.19 |
SyntaxHighlighter 3.0.83 (0) | 2014.08.19 |
WEB 화면 설계 툴을 찾으 시나요? PowerMockUp 한번 써보세요 ~ (0) | 2014.04.23 |