KLDP(drupal)에 글 쓸 때, 프로그램 소스 붙이기.

cinsk의 이미지

아직까지 drupal 자체 문제인지, BB code를 쓸 때, [code] 안이 제대로 처리되지 않습니다. 특히 "<stdio.h>"와 같은 부분이 tag로 인식되어 화면에 보이지 않는 경우가 있습니다. 또 코드의 syntax highlight 기능도 없는 것 같아서.. (빠른 시일내에 이런 기능이 추가되기 희망합니다.) 나름대로 현재 쓸 수 있는 방법을 정리해 보았습니다.

  • 대괄호 [, ]는 각각 "&#x5b;", "&#x5d;"로 입력할 수 있습니다. 사실, 웬만한 기호 문자는 "&#xHHHH;" 꼴로 입력할 수 있습니다. 이 때 HHHH는 unicode 16진 문자이며, ASCII도 바로 입력할 수 있습니다. ASCII 표를 보려면 "man ascii"를 실행하기 바랍니다.
  • "<", ">", "&", "©"등은 각각 "&lt;", "&gt;", "&amp;", "&copy;"로 입력할 수 있습니다.

문법에 맞게 하이라이트(syntax highligh)하는 방법은 현재 존재하지 않는 것 같습니다. 그래서 vim의 2html.vim script를 써서 다음과 같은 "htmlize" script를 만들었습니다. htmlize를 쓰기 위해, 입력 형식은 "Full HTML"을 써야 합니다. 만약 여러분이 hello.c를 붙여 넣고 싶다면 다음과 같이 실행한 후, 그 결과를 붙여 넣으면 됩니다:

$ cat hello.c | htmlize c

만약 바로 입력하면서 그 결과를 붙여 넣고 싶다면 그냥 실행하면 됩니다. 그리고 다 입력 후 ^D (control + D)를 누르고, 출력 내용을 붙여 넣으면 됩니다:

$ htmlize lisp
(defun foo ()
  (+ 1 2 3 4)   ; sum all numbers
)
^D

눈치챘겠지만, htmlize의 첫번째 인자는 언어 확장자입니다. 즉 c, cc, lisp, sh, php 등 여러가지를 쓸 수 있습니다. 아래는 이 htmlize 소스이며, 이 소스도 htmlize로 만들어 낸 것입니다:

#!/bin/sh

#
# htmlize: htmlize given input with syntax highlighting.
# Copyright (c) 2006  Seong-Kook Shin <cinsky @ gmail dot com>
#
# htmlize comes with ABSOLUTELY NO WARRANTY; 
# This is free software, and you are welcome to redistribute it
# under certain conditions;  Ask Google about GPL for more.
# 
VIM=/usr/bin/vim
TMP=/tmp
CSCHEME=default
BGCOLOR="#000000"
FGCOLOR="#ffffff"

if test $# -eq 0; then
    echo "usage: $0 LANGUAGE" 1>&2
    exit 1
fi

srclang=$1
srcfile=$TMP/htmlize$$.$srclang
outfile=$srcfile.html

trap "rm -f $srcfile $outfile" 1 2 3 6 9 14 15cat > $srcfile

$VIM -e -s $srcfile <<EOF
syn on
colorscheme $CSCHEME
set background=dark
run! syntax/2html.vim
w
qall
EOF

echo "<div class=\"codeblock\" style=\"background-color: $BGCOLOR; color: $FGCOLOR\">"
cat $outfile | awk '/<pre>/,/<\/pre>/ { print $0 } END { print "</div>" }'

rm -f $srcfile $outfile
trap "" 1 2 3 6 9 14 15

댓글

권순선의 이미지

로 하지 마시고 &lt;code &gt; 로 사용해 보세요. codefilter라는 입력 모듈을 가져다 붙였으므로 &lt; 나 &gt; 등이 문제없이 사용 가능합니다. 그리고 syntax highlight도 사용할 수 있는데 실제로 적용할지 여부는 생각 중입니다. 조금만 기다려 주세요....

mach의 이미지

#include <stdio.h>
int main()
{ 
   printf("hello\n");
   return 0;
}

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

익명사용자의 이미지

htmlize 소스 너무 눈이 아파요 !!!<<<<<<<<<<<>>>>>>>>>>>>>>>>
puaxx의 이미지

올리신건 검은 바탕에 어울릴것 같군요.

로미의 이미지

vim의 백그라운드 색지정 기능이 drupal에도 있을까요?

Signature:
끝까지 읽어 주셔서 감사합니다.(이봐 로미, 뭐가 감사한거야?!)

혹시 댓글로 싸움을 즐기려는 님!?
당신은 眞性 변퉤 입니다~ :P

이제는 무늬만 백수로 가장한 개발자가 아닌 진정한 개발자가 되어야겠다.
이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

언제나 newbie의 마음가짐.

brillmarin의 이미지

-

lacovnk의 이미지

Drupal에도 GeSHi filter를 붙일 수 있긴 합니다.
http://drupal.org/project/geshifilter

대신 부하가 좀 걸리겠죠~

세벌의 이미지

#include <stdio.h>
int main(int argc, char** argv)
{
    printf("Linux just for fun\n");
}

http://sebul.sarang.net/

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.