2014-04-10 4 views
1

SQL 함수 소스 코드를 html 문서로 변환하기 위해 pandoc을 사용하려고합니다. 예제 기능이 있습니다 :다중 행 SQL 주석 식별/* ... */

create or replace function test(a integer, b integer) returns integer as $$ 

declare 
    _c int; 
    _d int; 

begin 

/*Do some basic stuff 
---------------------- 
Do some really basic stuff: 

- this is a list 
- this is a list */ 

if a = b then 
    _c:=a+b; 
end if; 

/*Do some more advanced stuff 
---------------------------- 
Description of some advanced stuff */ 

if a <> b then 
    _d:=a*b; 
end if; 

    return 1; 
end; 
$$ language plpgsql; 

의견 내에서 markdown을 사용하고 있습니다. 유효 인하 구문에 전체 파일을 설정하려면, 내가해야 코드가 모든 라인의 시작 부분에

  • 추가 공간을
  • 제거 주석 태그 (/* */)

공간을 추가하는 동안 처음에 쉽게 : 또한

$ sed 's/^/ /' function.sql 

및 제거 주석 태그 :

$ sed 's/\/\*//' function.sql 
$ sed 's/\*\\//' function.sql 

의견이있는 행을 제외하는 방법에 대해서는 잘 모릅니다.

출력은 다음과 같은 모양입니다 : 라벨의

create or replace function test(a integer, b integer) returns integer as $$ 

    declare 
     _c int; 
     _d int; 

    begin 

Do some basic stuff 
---------------------- 
Do some really basic stuff: 

- this is a list 
- this is a list 

    if a = b then 
     _c:=a+b; 
    end if; 

Do some more advanced stuff 
---------------------------- 
Description of some advanced stuff 

    if a <> b then 
     _d:=a*b; 
    end if; 

     return 1; 
    end; 
    $$ language plpgsql; 
+1

,하지만 당신은 [스택 오버플로 정규 표현식 자주 묻는 질문]에서이 답변 (http://stackoverflow.com/a에 관심이있을 수 :

귀하의 의견

, 그것은 생산하는 것/22944075/2736496), "Advanced Regex-Fu"아래에 나열되어 있습니다. [두 중괄호 사이의 문자열 가져 오기 : {{}}] (http://stackoverflow.com/questions/413071/regex-to-get -string-between-curly-braces-i-want-what-between-the-curly-brace)를 사용하는 것이 좋습니다. – aliteralmind

답변

1

만들기 사용하고 한 번에 모든 것을 :

sed '/^\/\*/,/\*\//{s|^/\*||; s|\*/$||; b a};s/^/ /;:a' filename 

이 포함 및 제외한 모든 라인을 들여 것이다 /**/ 제거 사이 그 블록들로부터의 코멘트. 정확히 관련되지

create or replace function test(a integer, b integer) returns integer as $$ 

    declare 
     _c int; 
     _d int; 

    begin 

Do some basic stuff 
---------------------- 
Do some really basic stuff: 

- this is a list 
- this is a list 

    if a = b then 
     _c:=a+b; 
    end if; 

Do some more advanced stuff 
---------------------------- 
Description of some advanced stuff 

    if a <> b then 
     _d:=a*b; 
    end if; 

     return 1; 
    end; 
    $$ language plpgsql;