2008-10-25 13 views
13

La característica más favorita de StackOverflow para mí es que puede detectar automáticamente el código en la publicación y establecer el color apropiado para el código.¿Cómo se establece el código de color en StackOverflow?

Me pregunto cómo se establece el color. Cuando hago un Ctrl + F5 en una página, el código parece primero ser texto negro, luego cambia para ser colorido. ¿Está hecho por jQuery?

Respuesta

11

En respuesta a ..

Spolsky: ¿Cómo saben, ¿cómo saben siquiera qué idioma está escribiendo ¿en?

No lo es. El resaltador es muy tonto, pero se las arregla para salirse con la suya porque la mayoría de los lenguajes de programación son muy similares. Casi todo usa sintaxis lo suficientemente cerca de ...

AFunction("a string") 
1 + 4 # <- numbers 
     #  /\ a comment 
     // also a comment.. 

..que la mayoría de las cosas se resaltan correctamente. Lo anterior no es un lenguaje de programación real, sino que se destaca perfectamente.

Existen excepciones, por ejemplo, a veces se puede tratar un / como el comienzo de una expresión regular (como en Perl/Ruby). cuando no lo es:

this [^\s>/] # is highlighted as a regex, not a comment 

..pero estos son bastante raros, y lo hace un buen trabajo de elaboración de la mayoría de cosas, como ..

/* 
this is a multi-line comment 
"with a string" =~ /and a regex/ 
*/ 
but =~ /this is a regex with a [/*] multiline comment 
markers in it! */ 
20

De Stack Overflow Podcast #11:

Atwood: Es. De acuerdo, eso viene de, ese es un proyecto que un ingeniero de Google, creo, lo escribió: se llama "Pretificar". Y es un poco interesante porque de hecho infiere todo el resaltado de sintaxis, lo que suena como que posiblemente no podría funcionar; en realidad, parece una locura, si lo piensas bien. Pero en realidad funciona. Ahora, él solo lo admite, hay ciertos dialectos que simplemente no funcionan bien con él, pero para todos los dialectos que se encuentran en Google. Creo que proviene del Google Code de Google. Es el código real, es el JavaScript real que está en el Código de Google que destaca que el código que vuelve cuando estás alojando proyectos en Google Code. Y usted y usted, um, porque creo que usan Subversion para que pueda hacer clic en ...

Spolsky: ¿Cómo saben, ni siquiera saben en qué idioma está escribiendo? Y por lo tanto, qué comentario es y ...

Atwood: No lo sé. Es una locura. Es prettify.js, así que si alguien está interesado en ver esto, simplemente haga una búsqueda web de "prettify.js", y lo encontrará.

Y aquí es donde se puede encontrar prettify.js: http://code.google.com/p/google-code-prettify/

+0

Esta herramienta "Prettify" es muy buena! –

3

Como se ha dicho por DBR, hace un resaltado ficticio de las construcciones más comunes de idiomas. Lo cual no funciona bien con algunas sintaxis exóticas. Me pregunto si podemos hacer secciones de código sin resaltar, por cierto.

For id = 1 To 10 Do 
    CallSomething() // It likes CamelCase identifiers... 
End 

for id = 1 to 10 do # Also highlight some common keywords... 
    if id % 2 then call_something(); x++; end 
end 

'str' "str" 12 + 15.6 * -7e+9 /* Some common constant forms */ 
=/regex/ ~/regex/ +/RE/ !/regexpr/ but not /[^regex]/ (no operator before it) 

(* Some comment conventions are overlooked... *) 
-- Lua's (and some other languages') 
; So are these comments... 
' And these (Basic) 

Funciona suficientemente bien para que el código común pueda hacer ilusión, y mejor que cargar docenas de sintaxis en el navegador.

+0

¿Secciones de código sin resaltar? Por supuesto. Simplemente envuelva bloques de texto normales y sin fallar en las etiquetas PRE, al igual que HTML sin formato. –

Cuestiones relacionadas