2013-07-06 16 views
7

Dodaję komentarze do mojego kodu Delphi do dokumentacji. Jedną z rzeczy, którą próbuję udokumentować, jest struktura JSON, więc próbuję umieścić przykładowe dane JSON skomentowane w kodzie. Jednak JSON szeroko stosuje squiggly nawiasy { }, które przypadkowo jest również używany do komentarzy w Delphi.Czy istnieje sposób na uniknięcie nawiasu zamykającego do komentarzy?

Z tego powodu nie mogę znaleźć sposobu na dodanie tych komentarzy. Zwykle za komentarz bloków dokumentacji używam { }, na przykład:

{ 
    This unit does this and that. 

    Use TSomeComponent to do bla bla 
} 

Kiedy staram się dokumentować danych JSON, wspornik zamykający } kończy komentarz - nawet jeśli linia jest poprzedzona komentarzem jednowierszowym //, więc nawet to nie działa:

{ 
    This is how the JSON structure looks: 

// { 
//  "some_string": "value", 
//  "some_object": { 
//  "something": 123 
//  }, //<-- Compiler detects this comma 
//  "something_else": "some other string" 
// } 
} 

jak tylko tam wspornik zamykający }, komentowane linia staje się komentarzem, nawet jeśli jest poprzedzona dwóch ukośników. Więc Delphi podnosi przecinek po tym nawiasie. W końcu nie mogę wymyślić żadnego sposobu, w jaki będę mógł dokumentować próbki JSON wewnątrz mojego kodu.

Próbowałem nawet używać (* *) wokół bloku JSON, ale wciąż nie ma szczęścia.

Czy jest jakiś sposób obejścia tego problemu lub czy jestem z tym związany?

+3

Miło jest zobaczyć ["zakreślacz jachguate'a"] (http://meta.stackexchange.com/a/172057/179541) w akcji :-) – TLama

+0

@ TLama Właśnie pomyślałem prawie dokładnie to, patrząc na przecinek w pytanie również zostało wykluczone z komentarza, a w odpowiedzi jest częścią komentarza, podobnie jak w Delphi: D –

Odpowiedz

12

odkryłem rozwiązanie gdy byłem wpisując na to pytanie, więc teraz ja odpowiadając mu Q/stylu ...

Gdy blok komentarz jako pierwszy rozpoczyna się w kodzie w pytaniu powyżej, rozpoczyna ze wspornikiem otwierającym {. Tak więc kompilator desperacko szukał nawiasu zamykającego, nawet jeśli ten nawias zamykający znajduje się w innym skomentowanym wierszu kodu. Ale jeśli każda linia w tym bloku komentarza zaczyna się od dwóch ukośników // zamiast nawiasu otwierającego {, wówczas kompilator nie będzie szukał nawiasu zamykającego }. Tak więc, zamiast kodu w pytaniu powyżej, to w jaki sposób powinny być napisane:

// This is how the JSON structure looks: 
// 
// { 
//  "some_string": "value", 
//  "some_object": { 
//  "something": 123 
//  }, 
//  "something_else": "some other string" 
// } 

Tak długo, jak nie zaczniesz blok komentarz ze wspornika otwarcia, następnie kompilator nie będzie próbował aby zakończyć blok komentarza, gdy znajdzie nawias zamykający.

Ponadto, używanie (* *) powinno działać dobrze, o ile nie używasz go po użyciu już {. Ująć cały blok (* i *) i kompilator ignoruje wszelkie { lub } wnętrze, tak jak poniżej:

(* 
    This is how the JSON structure looks: 

    { 
     "some_string": "value", 
     "some_object": { 
     "something": 123 
     }, 
     "something_else": "some other string" 
    } 
*) 

Zasadniczo, od momentu, kiedy zaczynają jeden komentarz, czy to //, { lub (*, to zignoruje jakiekolwiek dalsze otwarcie jakiegokolwiek innego typu komentarza - będzie szukał tylko końca własnego typu komentarza. Tak więc // będzie szukał końca linii, { będzie szukać }, a (* będzie szukać *).

Powiązane problemy