3

私のサイトでは非常に迷惑なので、次の問題を修正しようとしています。 https://code.google.com/p/google-code-prettify/issues/detail?id=341&thanks=341&ts=1398085413

prettify コードの次のファイルを参照します: https://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-sql.js?r=179

問題は、

  1. SQL で "\" で終わる文字列を作成すると、ハイライターはそれがエスケープされていると認識しますが、これは T-SQL 構文ではありません。
  2. 再現するには、このコードをソース コードとして使用します: (Google Code Prettify がインストールされている場合)

    <pre class="prettyprint lang-sql">
     SELECT @BUPath = 'c:\backups\' + @DBName + '-B4 CHANGE.bak'
     SELECT @BUName = @DBName + '-B4 CHANGE'
    </pre>
    

「c:\backups\」の部分の引用符の前のスラッシュがエスケープ文字ではないことをコードが理解することを期待しています...

この行を変更する必要があると予想していますが、方法がわかりません:

[PR['PR_STRING'],      /^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/, null,
      '"\'']

問題を示すフィドル: http://jsfiddle.net/JH5uj/5/

4

1 に答える 1

3

https://github.com/google/code-prettify/blob/master/src/lang-sql.jsの PR_STRING 定義は、バックスラッシュがエスケープ文字である他の言語からコピーされたに違いないと思います。

/^(?:"[^"]*"|'[^']*')/

私が知る限りそれを行いますが、単なるデータベース担当者であるため、何かが欠けている可能性があります.

(これでパーティーに遅れて申し訳ありませんが、同じ問題にぶつかり、このスレッドを見つけました。)

于 2015-08-26T18:43:40.773 に答える