3

학제 간 질문/답변 에 편향 될 수 있기 때문에 잠재적으로 위험한 질문입니다.하지만 어쨌든 찌르기는합니다. 모두 좋은 정신으로!어떤 일반 템플릿 프로세서를 사용해야합니까?

그럼, 여기 있습니다. Emacs를위한 주요 편집 모드를 언어에 대해 쓰고 있는데 아직 거의 지원하지 않습니다. 그리고 나는 프로젝트 파일을 생성하는 방법을 결정해야하는 시점에 있습니다. 아래 작업의 강의 계획은 다음과 같습니다.

  • 템플릿은 단일 파일뿐만 아니라 프로젝트 디렉토리 트리를 나타내야합니다.

  • 결과 파일은 SGML과 유사한 언어를 포함하여 다양한 형식 일 수 있지만 이러한 종류에만 국한되지는 않습니다. 또한 C와 유사한 소스 코드와 eLisp 소스 코드 및 README와 같은 일반 텍스트 파일을 생성해야합니다.

  • 사용자가 시작한 작업에서 템플릿을 일괄 처리해야합니다 (사용자가 프로젝트를 만들고 싶어하므로 사용자 지정 디렉터리에 여러 파일을 만들어야합니다). 창조를 감독하는 능력을 갖는 것이 유익 할 수도 있지만, 이것은 전적으로 프로세스를 자동으로 실행하는 능력보다는 덜 중요합니다.

보너스 기능 :

  • 템플릿 언어는 이미 (기존 템플릿의 재사용의 가능성이있는) 사용자 기반을 가지고있다.

  • 템플릿은 코드 조각 (사용자가 파일을 편집하는 동안 사용자가 코드 생성 루틴을 호출하면 대화식으로 채워지는 공백을 포함)에 사용할 수 있습니다.

  • 그래픽 인터페이스와 명령 줄을 통한 플랫폼 간 차이, 사용 편의성과 같은 확실한 기능.

나는 연구를했지만 결과를 공유하지 않을 것이며 (아직) 나는 대답을 편향하지 않을 것입니다. 이 질문에 대답하는 문제는 대답을 찾기가 어렵지 않다는 것이 아니라 많은 것을 하나씩 선택하기가 어렵다는 것입니다.

답변

1

저는 몇 년 전에 비슷한 문제를 해결하기 위해 Emacs를 사용하여 UML 다이어그램 (cogre)에서 코드를 생성하고 프로젝트 사양에서 Makefiles를 생성하려고했습니다. 우선 템포를 사용하려고 시도했지만 템플릿을 둥지에 넣으려고하면 문제가 발생했습니다. 나는 또한 골격을 들여다 보았다. 그러나 그것은 계획에도 들어 맞지 않았다.

Google 템플릿을 조금 사용하여 구문이 마음에 들었고 대신 SRecode를 개발하여 Google 템플릿에서 좋은 비트를 빌 렸습니다. SRecode는 기계 생성 코드 용으로 특별히 작성되었습니다. 템플리트 삽입을위한 상호 작용 (일명 템포가 작성된)은 SRecode의 첫 번째 클래스가 아닙니다. 그러나 데이터 구조에서 코드를 생성하는 데에는 매우 강력하며 많은 기능과 자동으로 채워진 변수가 있습니다. 주요 모드와 긴밀하게 작동하며 중첩 된 사전 값을 제어 할 수있는 많은 중첩 템플릿을 허용합니다. Semantic 태그를 사용하고 몇 가지 언어에 대한 코드를 생성하는 하위 시스템이 있습니다. 즉, Semantic을 사용하여 한 언어로 코드를 구문 분석하고 이러한 태그를 사용하여 SReocde를 사용하여 다른 언어로 코드를 생성 할 수 있습니다. 맵시 있는! CEDET Reference Manual의 많은 부분이 그런 식으로 구축되었습니다.

템플릿 자체는 반복문, if 문 및 include 문을 허용합니다. SRecode에는 주석 작성자와 같은 '응용 프로그램'을 만들기위한 몇 가지 예가 있습니다. EDE는이 파일을 사용하여 거의 정확하게 수행하려는 Makefile을 만듭니다.

2

정확하게 설명한 사용 사례를 위해 뮈스ache (Mustache) 기반 시스템을 개발 중입니다. 템플릿 언어 자체는 Groome이라는 Mustache의 매우 간단한 확장입니다.

Groome 템플릿을 렌더링하는 Molt이라는 명령 줄 도구도 출시했습니다. 나는 그것이 당신이 필요로하는 모든 것을하는지 궁금 할 것입니다. 도구에 기능을 추가하고 아직 발표하지 않았습니다. 감사.

+0

Groome은 꽤 깔끔합니다. 고맙습니다. –

0

또 다른 옵션은 Generator으로 "단순성에 중점을두고 언어에 구애받지 않는 프로젝트 부트 스트랩"을 제공합니다. 설치에는 Node.js and npm이 필요합니다.

단순성에 대한 생성자의 강조는 템플릿을 만드는 방법을 배우는 것이 매우 쉽다는 것을 의미합니다. Generator는 또한 파일 경로를 기준으로 템플릿을 참조하지 않아도되므로 템플릿을 찾습니다 (~/.generator).

그러나 생성 된 프로젝트에 파일을 복사하지 않고 템플릿 자체에 README 또는 LICENSE 개의 파일을 쓸 방법이 없습니다. 또한 Makefile으로 작성된 사후 생성 명령은 더 이상 사용되지 않더라도 생성 된 Makefile으로 복사됩니다. 마지막으로 ad-hoc 템플릿 언어는 그 제한이 문제가되는 언어를 생각할 수는 없지만 __lowercasevariables__을 탈출 할 수있는 방법을 제공하지 않습니다.

관련 문제