Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Feat] Gecombineerde highlighters voor [code]

Pagina: 1
Acties:
  • 52 views sinds 30-01-2008

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Nu had ik net een post gemaakt met een lapje JavaScript. Dus ik: [code=javascript] gebruiken, erg tof, prachtige highlighter d:)b

Maar, toen dacht ik, ik wil er alsnog een <script>-tag omheen, aangezien het in dat topic over HTML ging. Dus: [code=html]. Prachtig, de <script>-tag werd met z'n attribuut prachtig gehighlight. Maar! Zoals je ziet, de javascript niet meer!

Is er een mogelijkheid om in één code-tag meerdere highlighters te gebruiken? Ik zat op zich te denken aan een aparte highlight-tag ofzo, maar RML doet het niet meer binnen een [code]-tag geloof ik, dus dat werkt niet echt.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Technisch gezien zou dat wel moeten kunnen; je zou bijvoorbeeld binnen HTML javascript kunnen laten herkennen, en binnen bijvoorbeeld PHP weer HTML.
Of het in de huidige highlightercode eenvoudig te realiseren is durf ik echter niet te zeggen...

Intentionally left blank


  • Zerora
  • Registratie: September 2003
  • Laatst online: 22-11 00:29

Zerora

Ik Henk 'm!

[code=javascript,html,php]

Op die manier misschien een idee om meerdere talen in een [code]-blok te laten highlighten?

of

[code]
[html]
--lap HTML code--
[/html]
[javascript]
--lap javascript code--
[/javascript]
[/code]

[ Voor 36% gewijzigd door Zerora op 05-08-2006 15:48 ]

Trans-life! :::: "All things change, whether from inside out or the outside in. That is what magic is. And we are magic too."


  • momania
  • Registratie: Mei 2000
  • Laatst online: 14:37

momania

iPhone 30! Bam!

Zerora schreef op zaterdag 05 augustus 2006 @ 15:42:
[code=javascript,html,php]

Op die manier misschien een idee om meerdere talen in een [code]-blok te laten highlighten?
dat zal lastig gaan aangezien verschillende talen dezelfde keywords gebruiken.

idealiter zou de html highlighter de script tag moeten kunnen herkennen en vanaf daar dus javascript highlighten.

Neem je whisky mee, is het te weinig... *zucht*


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

crisp schreef op zaterdag 05 augustus 2006 @ 15:37:
Technisch gezien zou dat wel moeten kunnen; je zou bijvoorbeeld binnen HTML javascript kunnen laten herkennen, en binnen bijvoorbeeld PHP weer HTML.
Dan kun je wel bezig blijven. Een PHP-file bevat bijvoorbeeld HTML, Javascript, CSS, SQL en God weet wat voor andere technieken nog meer. Ik denk dat het aardig lastig gaat worden om dat allemaal te gaan implementeren, tenzij je een codegroup-tag wil maken waar verschillende code-tags in mogen, die elk hun eigen parser gebruiken maar wel binnen hetzelfde stuk code staan. Op zich zou dat wel mooi zijn, maar of het de moeite waard is moet je zelf maar bepalen. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Herkenning van de <script>-tag zat ik ook aan te denken, maar ik dácht dat ik dan te horen zou krijgen dat zoiets te moeilijk zou worden :+

Maar als users gewoon valid HTML gebruiken (dus met een type-attribute), dan is 't vást niet supermoeilijk te realiseren :)
-NMe- schreef op zaterdag 05 augustus 2006 @ 15:53:
[...]

Dan kun je wel bezig blijven. Een PHP-file bevat bijvoorbeeld HTML, Javascript, CSS, SQL en God weet wat voor andere technieken nog meer. Ik denk dat het aardig lastig gaat worden om dat allemaal te gaan implementeren, tenzij je een codegroup-tag wil maken waar verschillende code-tags in mogen, die elk hun eigen parser gebruiken maar wel binnen hetzelfde stuk code staan. Op zich zou dat wel mooi zijn, maar of het de moeite waard is moet je zelf maar bepalen. :P
Een PHP-file die HTML echo'd zou ik gewoon een plain PHP-string laten, maar zodra je in de PHP-code een ?> tegen komt en de user heeft in zijn code-tag "html" als "default" opgegeven (wat dus na een <?php genegeerd wordt en er vervolgens PHP gehighlight wordt), dan kun je wel HTML highlighten lijkt me.

Simpelweg HTML highlighten zonder duidelijke aanwijzingen zoals een DOCTYPE ofzo lijkt me niet echt verstandig, aangezien iedere knurft een XML-achtig iets op kan stellen wat op HTML lijkt, maar het stiekum niet is :P

[ Voor 67% gewijzigd door Osiris op 05-08-2006 15:56 ]


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

crisp schreef op zaterdag 05 augustus 2006 @ 15:37:
Technisch gezien zou dat wel moeten kunnen; je zou bijvoorbeeld binnen HTML javascript kunnen laten herkennen, en binnen bijvoorbeeld PHP weer HTML.
Of het in de huidige highlightercode eenvoudig te realiseren is durf ik echter niet te zeggen...
gewoon de highlighter zichzelf aan laten roepen, dat is niet al te moeilijk te doen, zolang je de stopconditie maar goed hebt vastgelegd :P
'Probleem' is eerder dat je precies moet weten wat html/javascript etc. is, en in (het voorbeeld) php is dat niet al te duidelijk lijkt me. Je kunt prima:
PHP:
1
2
3
echo "<b>Dit is html";
doeIets();
echo "</b>";
gebruiken, maar dan weet je eigenlijk nog steeds niet 100% zeker dat het wel html is, of javascript, etc.

edit:
Nouja, zoals iedereen boven me al zegt dus :P

[ Voor 3% gewijzigd door moto-moi op 05-08-2006 15:57 . Reden: traag ]

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Osiris schreef op zaterdag 05 augustus 2006 @ 15:53:
Herkenning van de <script>-tag zat ik ook aan te denken, maar ik dácht dat ik dan te horen zou krijgen dat zoiets te moeilijk zou worden :+

Maar als users gewoon valid HTML gebruiken (dus met een type-attribute), dan is 't vást niet supermoeilijk te realiseren :)
ik denk dat je er gewoon vanuit moet gaan dat alles wat tussen de <script>-tag staat gewoon javascript is, is het iets anders dan heb je gewoon pech :P

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

vbscript enzo slaan we maar over? :P
Al moet je tegenwoordig geloof ik wel de taal meegeven aan een scripttag, dus daar kun je dan op matchen.. :P

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Osiris schreef op zaterdag 05 augustus 2006 @ 15:53:
Herkenning van de <script>-tag zat ik ook aan te denken, maar ik dácht dat ik dan te horen zou krijgen dat zoiets te moeilijk zou worden :+

Maar als users gewoon valid HTML gebruiken (dus met een type-attribute), dan is 't vást niet supermoeilijk te realiseren :)
Ik heb net even in de highlightercode zitten kijken maar bepaald triviaal is het echt niet. Ja, de HTML highlighter kan scriptcontent en stylecontent herkennen - maar de HTML highlighter is ook een uitzonderlijke highlighter aangezien het ook half een parser is - maar om vervolgens die scriptcontent en/of stylecontent weer door de betreffende highlighter te halen en dat weer netjes binnen de eigen highlighted content te krijgen (denk ook aan het correct blijven van regelnummers, het weglaten van de markup die het begin en eind van de highlighted code markeren) is een aardig lastige klus.

En zoals gezegd; de HTML highlighter is wat dat betreft al een uitzondering, de rest van de highlighters zijn absoluut niet context-aware.

Intentionally left blank


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Osiris schreef op zaterdag 05 augustus 2006 @ 15:53:
Een PHP-file die HTML echo'd zou ik gewoon een plain PHP-string laten, maar zodra je in de PHP-code een ?> tegen komt en de user heeft in zijn code-tag "html" als "default" opgegeven (wat dus na een <?php genegeerd wordt en er vervolgens PHP gehighlight wordt), dan kun je wel HTML highlighten lijkt me.
Imagine this:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$query = <<<EOD
SELECT *
FROM tabel
WHERE 1=1
EOD;

connectDB();
$rs = doeQuery($query);

?>
<html>
  <head>
    <title><?=$title;?></title>
    <style type="text/css">body { color: red }</style>
    <script type="text/javascript">
      function telOp(a1, a2) { return a1 + a2; }
    </script>
  </head>
  <body>
    <?=getBody();?>
  </body>
</html>

Complete baggercode, maar het laat wel zien hoe je alles door elkaar kan gebruiken, waar het overal wel handig kan zijn om de goeie highlighter te gebruiken. Maar praktisch is anders. ;)
Simpelweg HTML highlighten zonder duidelijke aanwijzingen zoals een DOCTYPE ofzo lijkt me niet echt verstandig, aangezien iedere knurft een XML-achtig iets op kan stellen wat op HTML lijkt, maar het stiekum niet is :P
De highlighter zelf laten bepalen wat al dan niet HTML is lijkt me inderdaad niet slim. Het is een highlighter, geen parser. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Ik snap hoe je dingen door elkaar heen kunt gebruiken NMe, maar zoals je zelf misschien ook wel door hebt, de parser weet, ondanks de <html> niet of het nou wel of geen HTML is.. Voor het zelfde geld is het een XML-iets met HTML-alike tags of iets dergelijks :+

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Osiris schreef op zaterdag 05 augustus 2006 @ 16:07:
Ik snap hoe je dingen door elkaar heen kunt gebruiken NMe, maar zoals je zelf misschien ook wel door hebt, de parser weet, ondanks de <html> niet of het nou wel of geen HTML is.. Voor het zelfde geld is het een XML-iets met HTML-alike tags of iets dergelijks :+
Dat was precies mijn punt. :P Ik probeerde over te brengen dat het wel heel erg ingewikkeld zou gaan worden om al die highlighters door elkaar te kunnen gebruiken. Zelfs als het technisch kan, komt er wat betreft RML nogal wat bij kijken denk ik.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Osiris
  • Registratie: Januari 2000
  • Niet online
-NMe- schreef op zaterdag 05 augustus 2006 @ 16:14:
[...]

Dat was precies mijn punt. :P Ik probeerde over te brengen dat het wel heel erg ingewikkeld zou gaan worden om al die highlighters door elkaar te kunnen gebruiken. Zelfs als het technisch kan, komt er wat betreft RML nogal wat bij kijken denk ik.
Daarom moet je dus ook letten op dingen als <script type="text/javascript"> enzo ;) Of een "default markup-taal"-parameter geven die overridden wordt als de highlighter bijv een <?php tegenkomt :)

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

I'm on to something :)
Het lukt me nu om binnen [code=html] javascript en css te highlighten.
Enige waar ik nog mee worstel is wanneer je de <script> of <style> tag niet afsluit; ik gebruik yymore() in mijn lexer om een buffer op te bouwen, maar in de <<EOF>> rule blijkt de buffer al geflushed te zijn en dus is YYtext() leeg :/

Intentionally left blank


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Al met al is eigenlijk ook alleen de HTML-highlighter echt geschikt hiervoor; daarbinnen kan ik javascript en CSS herkennen (voor vbscript is geen highlighter, of is de vb highlighter daarvoor geschikt?).
Zoals gezegd kan je er bij PHP niet vanuit gaan dat alles buiten de process instructions HTML is, wel zou je nog binnen HTML PHP kunnen parsen door strict op '<?php' te checken.

Intentionally left blank


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:41

gorgi_19

Kruimeltjes zijn weer op :9

crisp schreef op zondag 06 augustus 2006 @ 02:49:
Al met al is eigenlijk ook alleen de HTML-highlighter echt geschikt hiervoor; daarbinnen kan ik javascript en CSS herkennen (voor vbscript is geen highlighter, of is de vb highlighter daarvoor geschikt?).
Zoals gezegd kan je er bij PHP niet vanuit gaan dat alles buiten de process instructions HTML is, wel zou je nog binnen HTML PHP kunnen parsen door strict op '<?php' te checken.
VBScript zal denk ik weinig nog gebruikt gaan worden i.c.m HTMl, en anders is een ASP highlighter een redelijke goede of een VB6 een redelijke benadering. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

gorgi_19 schreef op zondag 06 augustus 2006 @ 08:50:
[...]
...en anders is een ASP highlighter een redelijke goede of een VB6 een redelijke benadering. :)
Die hebben we niet :P

Nou ja, dan maar geen highlighting voor VBScript :P
Voor de rest werkt het lokaal en ben ik aan het testen :)

edit: toch maar even snel een vbs highlighter gemaakt :P

[ Voor 7% gewijzigd door crisp op 16-08-2006 22:43 ]

Intentionally left blank


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

done dus; @ next update

Intentionally left blank


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

HTML:
1
2
3
4
5
6
7
8
<html><head><title>Hoi!</title></head></body><script type="text/javascript">
  head = document.getElementsByTagName("head")[0];
  style = document.createElement("link");
  style.setAttribute("rel", 'stylesheet');
  style.setAttribute("type", 'text/css');
  style.setAttribute("href", 'theme.css');
  head.appendChild(style);
</script></body></html>


Note to self: nooit tegen crisp zeggen dat iets wel kan, want dan gaat 'ie het ook proberen te fix0ren. :+

God, root, what is difference? | Talga Vassternich | IBM zuigt

Pagina: 1

Dit topic is gesloten.