2012-10-20 2 views
5

Java에서 HTML 편집기를 코딩하는 중입니다. 자동 들여 쓰기를 지원하고 싶습니다. 현재 편집중인 파일에서 HTML 태그 객체를 나타 내기 위해 구현 된 복합 패턴이 있습니다. 예를 들어,이 코드 :문자열 조작 또는 재귀 함수?

<table> <tr> <th>Col1</th> <th>Col2</th> </tr> <tr> <td>Data1</td> <td>Data2</td> </tr> </table>

가 복합이 구조적 표현 될 것이다 :

  • 테이블 -> TR (제 1), TR (초)
  • TR을 (제 1) -> 제 (COL1), 제 (Col2의)
  • TR (초) -> TD (데이터 1) TD (데이터 2)
X

-> y, z는 x가 y와 z의 부모임을 의미합니다.

  1. 는 들여 쓰기 문자열 포함을 반환하는 재귀 함수를 만듭니다

    여기 두 가지 옵션이 있습니다.

  2. 현재 HTML 코드의 형식화되지 않은 문자열을 반환하고 나중에 들여 쓰기를 추가하는 재귀 함수를 만듭니다.

첫 번째 작업은 쉽습니다. 그러나 패턴을 변경하면 사용자의 들여 쓰기 패턴에 따라 자동 들여 쓰기를 계속하는 것이 어렵다는 것을 알았습니다. 이 때문에 옵션 2가 바람직하다고 생각합니다. 나는 그것이 올바르게 작동하도록 할 수 있다면 이것 또한 역동적 일 수 있다고 생각합니다. 문제는 문자열을 조작하는 방법을 잘 모르겠습니다.

제 생각에는 어떻게 든 스택을 사용할 수 있다는 것입니다. 열려있는 태그를 푸시하고 닫으면 열 수 있습니다. 스택의 태그 수는 새 줄의 다음 태그 앞에 들여 쓰기해야하는 횟수를 결정합니다. 대신에 정수를 사용할 수도 있지만 같은 개념이 적용됩니다. 문제는 문자열의 태그를 반복 처리하여 조작 할 수있는 방법을 모르겠다는 것입니다.

그래서 내가 설명한대로 문자열 조작을 수행 할 수있는 방법이 있습니까? 또는 재귀 함수를 사용하는 것이 더 좋습니다.

답변

1

당신이 잘 분명한 질문을한다면, 나는 당신이 그 질문에 답하는 가장 좋은 사람이라고 생각하며, 더 많은 정보가 필요합니다.

그 정보를 마련하기 위해이 도움이 될 수 있습니다

  1. 텍스트의 전체 라이프 사이클을 고려하십시오. 키 입력 등으로 반응해야합니다. 그러면 패딩 된 문자열을 조작하는 것보다는 모델과 표현이 명확하게 구분되도록하는 것이 훨씬 낫습니다. 또 다른 이점은 당신이

  2. 는 예를 고려해 모델에서 상대적으로 독립적으로 기존의 텍스트 편집 구성 요소를 선택할 수 있습니다 : 등 XHTML에 대한

+0

아마도 최선의 선택은 아마도 재귀 함수를 사용하는 것이라고 생각합니다. 고맙습니다. – CouchCommando

0

jEdit과 같은 서식있는 텍스트 편집기, 오픈 소스, 작업을 수행 할 수 있습니다 매우 쉽게 XSLT 및 XSL 스타일 시트를 사용합니다.

+0

불행히도, 이것은 제 경우에는 적용되지 않습니다.나는 프로그램의 백 엔드 작성에 대해 이야기하고 있습니다. 다음은 간단한 UML 다이어그램입니다. http://imgur.com/Aivc6 BufferContext에는 문자열 (링크 된 복합 구조에서 작성된 편집중인 현재 HTML 파일)이 포함되어 있습니다. HTMLConstruct는 HTML 태그와 내부 정보를 나타내는 객체 인 모든 구체적인 구문을 정의하는 인터페이스입니다. BufferContext는 View의 일부가 아니라 Model의 일부입니다. – CouchCommando