2

Google의 Prettify에 대한 자체 규칙을 만드는 최첨단 방법은 무엇입니까?Google의 예순 화를위한 자체 규칙을 만드는 최첨단 방법은 무엇입니까?

내가 또한, 기존 규칙의 색상을 변경에 대해 이야기하고 있지 않다

, 나는 새로운 규칙을 만들려면 :시에 대한 EXTREM의 경우

  • 어쩌면 쉘/bash에 대한

    • 예를하는

       
          ├── src 
          │   ├── app 
          │   │   ├── app-routing.module.ts 
          │   │   ├── app.component.css 
          │   │   ├── app.component.css.map 
          │   │   ├── app.component.html 
          │   │   ├── app.component.scss 
          │   │   ├── app.component.spec.ts 
          │   │   ├── app.component.ts 
          │   │   ├── app.module.ts 
          │   │   └── lesson 
          │   │    ├── lesson.component.css 
          │   │    ├── lesson.component.css.map 
          │   │    ├── lesson.component.html 
          │   │    ├── lesson.component.scss 
          │   │    ├── lesson.component.spec.ts 
          │   │    └── lesson.component.ts 
      
      : 나는

    대담한 단어 "사랑"의 모든 모습을 보여 원하는 아니면 내가이 나무를 표시하고 모든 spec.ts을 표시 할처럼, 대담한 파일

  • +1

    내장 쉘 모드가 있습니다. –

    답변

    0

    가장 쉬운 방법은 existing example에서 일하는 것입니다.

    해당 파일을 보면, 당신이 튜플의 두 목록 둘러싼 몇 가지 상투적 인 것을 볼 수 있습니다 : 파일 확장자 목록 "ext"을 포함하여 코드 블록을 싸게 치장하도록 요청 싸게 치장 경우

    PR['registerLangHandler'](
        PR['createSimpleLexer'](
         [ 
          // Some tuples 
         ], 
         [ 
          // Some more tuples 
         ], 
         [/* Some file extensions without dot */])); 
    

    을 이면이 처리기가 사용됩니다.

    두 세트의 튜플은 유사한 구조를 가지고 있습니다. 다음은 첫 세트

    ['opn',    /^\(+/, null, '('], 
    ['clo',    /^\)+/, null, ')'], 
    

    에서 일부이고 여기에 두 번째 세트에서 하나입니다.

    [PR['PR_KEYWORD'],  /^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|...)\b/, null], 
    

    PR['PR_KEYWORD']predefined token type하고 predefined stylesheet에서 스타일와 일치합니다

    ['opn',    /^\(+/, null, '('], 
    

    코드의 시작이 시작하면, 꾸미는데 때이다 무슨 말을

    .kwd { color: #008 } /* a keyword */ 
    

    /^\(+/으로 입력하면 <span class="opn">...</span>으로 입력됩니다. opn (LISP 열기 괄호)은 미리 정의 된 상수가 없기 때문에 문자열 리터럴입니다. 고유 한 토큰 유형 클래스를 정의하는 경우, 어떤 페이지 로딩을 선호 하든지 스타일 규칙을 정의해야 할 것입니다.

    오른쪽의 문자열 '('은 입력 된 텍스트가 해당 문자 중 하나로 시작될 때 적용되는 유일한 규칙 인 것과 같은 문자 목록으로 처리됩니다. 이것은 지난 몇 년 동안 IE 6의 중요한 최적화였습니다.

    튜플의 두 그룹 간의 유일한 차이점은 첫 번째 목록에있는 것들이이 특별한 독점적 인 문자 요소를 가지고 있다는 것입니다.

    IIRC의 경우 null은 거의 필요한 경우가 거의 없으며 더 이상 지원되지 않는 기능을 지원했습니다. 그 위치에 넣은 값은 무시됩니다.

    CSS 처리기에는 모든 문서가 있으며 다른 기능 하나를 보여줍니다.

    ['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i], 
    

    토큰 형 대신 <span class="lang-css-kw">...</span>를 생성하는, lang-로 시작하는 경우는, 파일 확장자 css-kw의 언어 처리기에 대한보고이 기능은 과잉 여기 아마 그룹 1에 콘텐츠를 반복적으로 그 적용됩니다 싸게 치장 현대의 JS 엔진은 지속적으로 lookahead를 지원하지만, HTML 모드가 JS 및 CSS 모드를 <script><style> 블록의 내용에 재귀 적으로 적용 할 수 있어야합니다.


    Prettify는 왼쪽에서 오른쪽으로 토큰을 통과하는 모든 변환을 처리 할 수 ​​있습니다. 그것은 명확성을 위해 옆 테이블에있는 문자를 수집하는 방법을 가지고 있지 않기 때문에,이 두 가지 C 조각 구별 할 수있는 방법은 없습니다 :이 제한적인 접근 방식에서보다 강력한 것 같다

    int t = 1; // t is declared as a variable, not a type 
    t* x; // multiplication. "t" should not have class="typ" 
    

    에서

    typedef int t // t is declared as a type 
    t* x; // declare x as a pointer to a t. "t" should have class="typ" 
    

    은 stackoverflow와 같은 사이트에서 종종 볼 수있는 코드 조각 및 잘못된 코드의 얼굴.

    그것은

    • 유형 이름과 같은 공통의 언어 규칙을 인코딩하는 합리적인는 _t로 끝나는
    • 식별자 규칙에

    유형 있습니다 수도로 시작합니다.