Regexp probleem zoek naar = binnen <>

Pagina: 1 2 Laatste
Acties:
  • 696 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een wysiwyg-dingetje. Nu wil ik de IE-wysiwyg-gegenereerde html-code een beetje verfraaien. Het lijkt mij dat regexps daar wel goed geschikt voor zijn:
JavaScript:
1
2
3
4
5
6
7
8
9
10
x=document.getElementById('test');
var reg=new RegExp("(\=[^> \"]*(?=[>| ]))","g");
x.value=x.value.replace(reg,function($1){return "\=\""+$1.substr(1,$1.length-1)+"\""});

var reg=new RegExp("(<[^\">]*>)","g");
x.value=x.value.replace(reg,function($1){return $1.toLowerCase()});
var reg=new RegExp("(<[^\"]*\")","g");
x.value=x.value.replace(reg,function($1){return $1.toLowerCase()});
var reg=new RegExp("(\"[^>\"]*>)","g");
x.value=x.value.replace(reg,function($1){return $1.toLowerCase()});


http://home.hccnet.nl/m.wargers/test/regexp2.htm

Nu die eerste regexp geeft me problemen. Hij is een beetje te algemeen gedefinieerd. Nu zet die "-s achter elk =teken. Dit moet die niet doen binnen script-tags.
Ik wil dus eigenlijk een regexp die checkt of het =teken wel binnen <> tekens zit. Ik kom er eigenlijk niet uit. Heeft iemand zoiets al eigenlijk ergens in de kast liggen?
Het hoeft eigenlijk alleen in IE6 te werken.

Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 14:45
Nog nooit met RegExp's in Javascript gewerkt, maar eens moet de eerste keer zijn :) Dit is wat ik ervan heb gebakken. Ik heb het ook zonder loopje geprobeerd, maar dat lukte niet zo. Hoop dat je hier wat aan hebt:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html>
<head></head>
<body>
<textarea id="test" style="width:100%;height:400px;">
</FONT></TR></TBODY></TABLE><BR>
<FONT class="PPPPP" size=-1 size=-1>©2003 Google</FONT>
</CENTER></body></html>
<script>var test=7;</script>
</textarea>
<button onclick="doe()">test</button>
<script>
function doe()
{   var text = document.getElementById('test').value;
    var replreg = /(<[^>]*?\=(?!"))([^\s]+)([^<]*?>)/;
    while(Res = replreg.exec(text))
    {   text = text.replace(Res[1]+Res[2]+Res[3], Res[1]+'"'+Res[2]+'"'+Res[3]);
    }
    alert(text);
}
</script>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

ik geloof niet dat regexps in javascript lookbehind kunnen; ik kreeg het in ieder geval niet voor elkaar. Ik ben ondertussen op het volgende uitgekomen:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function doe(){

  x=document.getElementById('test');

  var reg = new RegExp('(\<[^>]*\>)','g');
  x.value = x.value.replace(reg, function($1) { return clean($1); });

}

function clean(tag) {

  var reg = new RegExp("(\=[^> \"]*(?=[>| ]))","g");
  tag = tag.replace(reg, function($1) { return "\=\""+$1.substr(1,$1.length-1)+"\""});
  reg = new RegExp("(<[^\">]*>)","g");
  tag = tag.replace(reg,function($1){return $1.toLowerCase()});
  reg = new RegExp("(<[^\"]*\")","g");
  tag = tag.replace(reg,function($1){return $1.toLowerCase()});
  reg = new RegExp("(\"[^>\"]*>)","g");
  tag = tag.replace(reg,function($1){return $1.toLowerCase()});

  return tag;

}


Misschien is deze ook nog wel wat voor je (plemp de sourcecode van GoT er bijvoorbeeld eens in) :)

[ Voor 23% gewijzigd door crisp op 23-04-2003 09:25 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Volgens mij lijkt hij het te doen. Knap hoor!
Knap hoor, en dat om half vier 's nachts _/-\o_
En dan ook nog je eerste RegExp ooit 8)7 (hoewel in js, zei je toch?)
Nu begrijp ik ook wat beter wat je hebt aan de exec methode. Die is toch wel handig.

Bedankt Crisp. Dat was dus ook iets wat ik me afvroeg. Ze hebben het wel over lookaheads, maar in dit geval moet ik dus ook weten of er een < teken voor ligt.
Volgens mij werkt die van jou toch ook?
Ik vind hem iig erg goed bedacht. Met het resultaat van de eerste regulaire expressie een functie uitvoeren die het in de volgende regulaire expressie gooit.
Het is volgens mij een handige manier om de boel nog een beetje begrijpelijk te houden.

Met dat linkje ben ik ook erg blij. Als iemand nog meer linkjes weet vol met obscure voorbeelden van regulaire expressies, graag :9
Ondertussen zal ik eens kijken wat er nu eigenlijk staat bij die regexp's (nog niet echt goed naar gekeken)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Ik ben even aan het testen geweest of ik er ook indenting in kan krijgen; dat lijkt aardig te lukken :)
Ik zal eea proberen te combineren en het resultaat tzt hier weer laten zien. Ik ben echter wel bang dat het geheel aardig complex kan gaan worden...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 14:45
Tsja mijn dag/nacht ritme is enigszins verstoord sinds ik aan het afstuderen ben :) Maar dit was mijn eerste regexp in Javascript. Verder wel veel in Perl ermee gefrommeld.

Overigens heb ik deze page gebruikt voor info, misschien heb je er wat aan:
http://devedge.netscape.c...1.5/reference/regexp.html

Verder heb je inderdaad alleen lookaheads en geen lookbehinds

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Een beetje te vroeg gejuicht.
Ik zat me even te bedenken: in feite moet niets binnen script-tags met "-tekens worden behandeld.
Dit gaat niet goed in beide gevallen. In Crisp zijn voorbeeld gaat het iets makkelijker fout:
http://home.hccnet.nl/m.wargers/test/regexpcrisp.htm
http://home.hccnet.nl/m.wargers/test/regexpmorrar.htm
In het voorbeeld van Morrar gaat het ook fout als je ergens for (i=10;i>0;i--) achteraan gebruikt.
Het lijkt me het beste dat tekst binnen script-tags gewoon worden genegeerd.
Mijn vraag was dus eigenlijk niet volledig. Niet alleen moest mijn regexp worden uitgebreid met een check of het =teken wel binnen <>-tags zat, maar ook moet worden gechecked of het niet binnen script-tags zit.

Nu heb ik wel zoiets van, dit is relatief makkelijk op te lossen zonder regexp's met stringbewerkingsfuncties (moet nog even kijken wat de handigste manier daarvoor is). door alleen die delen van de string door doe() te halen die niet binnen script-tags liggen.
Ik denk dat het iig ook met regexp's kan, alleen ik kan het niet. Ik heb al wat miezerige pogingen gedaan, maar dat stelt niks voor.

Dit is overigens ook iets wat je tidycode ding niet goed doet Crisp (dat was trouwens dat dingetje waar ik nog op zoek naar was, die had ik al een tijd geleden al gezien en was er toen al erg van onder de indruk)

Die link kende ik al Morrar. Is inderdaad een goede hulp.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Ik was al bezig met mijn tidycode aanpassen :)
Dat van tussen <script> alles negeren was ik ook al achter; ga ik later ook nog inbouwen. Op het moment heb ik de indenting redelijk in orde (gaat alleen nog mis bij bijvoorbeeld <p> en <li> die in HTML niet afgesloten hoeven te worden).

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat van tussen <script> alles negeren was ik ook al achter; ga ik later ook nog inbouwen.
Met regexp's of met string functies?

Dus ik hoef alleen maar lui achterover te hangen en al mijn problemen worden opgelost? :P

[ Voor 41% gewijzigd door Verwijderd op 23-04-2003 14:15 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Verwijderd schreef op 23 April 2003 @ 14:14:
[...]
Met regexp's of met string functies?

Dus ik hoef alleen maar lui achterover te hangen en al mijn problemen worden opgelost? :P
Met regexps natuurlijk; het moet wel leuk blijven :P

En nee, er wordt niet lui gedaan; ik heb hier mijn laatste gecombineerde versie staan met indenting; vanavond heb ik pas weer tijd, dus tot die tijd mag jij nog leuke dingen verzinnen :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Crisp, nowrap moet nowrap="nowrap" worden :P

edit
Nog iets, dit is wel iets heel gaafs om te implementeren in mijn Online HTML Editor.
Is dat ook een leuk idee? Je naam komt er dan ook bij, en een link ofzo.
Zeg het maar :D
Zie V daar voor de link ;)

edit2
Ik zoek even naar een functie om van:
width="1"
het volgende te maken:
width="1px"
:)

`k Moet er alleen weer even helemaal inkomen :Z :P

[ Voor 105% gewijzigd door Guillome op 23-04-2003 15:58 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Even uitgevoerd via string functies:
http://home.hccnet.nl/m.wargers/test/tidycode.html
Voor zover ik het kan zien doet die het.
Het kan allemaal nog wat efficienter en beter, maar dat komt dan wel als de regexp versie ervan niet lukt.

He, da's gemeen je hebt je pagina aangepast. Had nog de oude code te pakken. Nou ja goed, maakt niks uit. Vroeg me al of ik het verkeerd had begrepen wat je met indenten bedoelde. Ziet er heel goed uit.

Misschien nog even voor de volledigheid:
http://webfx.eae.net/dhtml/richedit/richedit2.html
Hier wordt ook html gegenereerd door designmode html opgeschoond. Alleen hier wordt het via de dom gedaan. Ik kreeg het echter niet aan de praat in het probeersel waar ik het voor wou gebruiken. Ik weet niet waarom. (eigenlijk onaanvaardbaar, moet ik ook nog maar weer eens checken)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 23 April 2003 @ 15:34:
Crisp, nowrap moet nowrap="nowrap" worden :P
moet het een volledige brakke HTML naar XHTML strict converter gaan worden dan?
Dan weet ik er namelijk nog wel een paar :o
edit
Nog iets, dit is wel iets heel gaafs om te implementeren in mijn Online HTML Editor.
Is dat ook een leuk idee? Je naam komt er dan ook bij, en een link ofzo.
Zeg het maar :D
Zie V daar voor de link ;)
geen probleem mee hoor :)
edit2
Ik zoek even naar een functie om van:
width="1"
het volgende te maken:
width="1px"
:)
dat moet dan dus style="width: 1px;" worden ;)
`k Moet er alleen weer even helemaal inkomen :Z :P
hehe :)

Ik denk trouwens dat je best een eind kan komen op deze manier, maar hoe verder je gaat hoe moeilijker het wordt.
Je zou bijvoorbeeld kunnen overwegen om <font> ook te gaan vervangen door bijvoorbeeld <span>, maar de structuur maak je daarmee niet overzichtelijker.
Voor sommige dingen (zoals <p> tags zonder </p>) moet je eigenlijk al stacked-based gaan werken, die haal je er met regexps niet uit...
Verwijderd schreef op 23 april 2003 @ 16:23:
Even uitgevoerd via string functies:
http://home.hccnet.nl/m.wargers/test/tidycode.html
Voor zover ik het kan zien doet die het.
Het kan allemaal nog wat efficienter en beter, maar dat komt dan wel als de regexp versie ervan niet lukt.
Met wat smerige truuken lukt alles (en anders pak ik een hamer) :+
He, da's gemeen je hebt je pagina aangepast. Had nog de oude code te pakken. Nou ja goed, maakt niks uit. Vroeg me al of ik het verkeerd had begrepen wat je met indenten bedoelde. Ziet er heel goed uit.
maar nog steeds WIP :) (trouwens wel een aantal regexps eruit kunnen slopen).
Misschien nog even voor de volledigheid:
http://webfx.eae.net/dhtml/richedit/richedit2.html
Hier wordt ook html gegenereerd door designmode html opgeschoond. Alleen hier wordt het via de dom gedaan. Ik kreeg het echter niet aan de praat in het probeersel waar ik het voor wou gebruiken. Ik weet niet waarom. (eigenlijk onaanvaardbaar, moet ik ook nog maar weer eens checken)
Ga ik vanavond naar kijken. Zou dat stack-based zijn?

[ Voor 37% gewijzigd door crisp op 23-04-2003 16:32 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hmm ik heb nu dat ie van widt="1" er px achter zet, en als er al iets staat (cm, px of wat dan ook) dan doet ie het niet :)
Maarre cool, dan zet ik dit er strax mooi bij, dat wordt dan Realtime HTML editor v2.0 :P
mede mogelijk gemaakt door Crisp.
Maar de standaard dingen is wel cool om eruit te halen.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
      function makePxCompat(str)
      {
        if (str.match(/\d+[^\w+]/, "gi"))
        {
          str = str.replace(/(\d+\w+)/, "$1px");
        }
        return str;
      }
      function doe()
      {
        var vregexp = new RegExp("(=[\"|\'].*?[\"|\'])", "gi");
        var obj = document.getElementById("code");
        var str = obj.value;
        str = str.replace(vregexp, function($1) { return makePxCompat($1) });
        obj.value = str;
      }

[ Voor 46% gewijzigd door Guillome op 23-04-2003 16:52 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
maar nog steeds WIP
:?

Stack-based?

Ik begin een beetje in paniek te raken, geloof ik :o

Het voordeel van die webfx benadering is, dat je het vuile werk door de browser laat uitvoeren. Dus niet afgesloten p-tags worden gewoon door de browser afgesloten. Spaghetti-code wordt door de browser ontward. Die benadering heeft grote voordelen.

Net een simpel voorbeeldje gemaakt, en nu werkt die wel (die webfx versie). Probleem bij mij is dat ik dingen veel te snel inbouw, en dan geen simpele testversie maak als het niet meteen blijkt te werken.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 23 April 2003 @ 16:43:
Hmm ik heb nu dat ie van widt="1" er px achter zet, en als er al iets staat (cm, px of wat dan ook) dan doet ie het niet :)
[...]
of zoiets:

JavaScript:
1
2
3
4
5
var tag = '<table width="200">';

tag = tag.replace(/(width=['"](\d+)['"])/, 'style="width: $2px"');

alert(tag);

:)

[ Voor 13% gewijzigd door crisp op 23-04-2003 17:00 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

:'( ASO!!! :P
Ik was al blij met mijn troep. Mja, baas boven baas he

Maar styles moet je beter niet doen.
Want dan heb je zometeen dit:
<img style="width:100px" src="blaat" style="height:100px" onmouseover="" style=" etc etc


En oooh wacht eens even, die van jou werkt alleen met width :P :P :P
Haha gnah heb ik het niet helemaal voor nix gedaan :P

[ Voor 88% gewijzigd door Guillome op 23-04-2003 17:07 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Work In Progress :)
Stack-based?
leuk zoekwoord voor in P&W
stack-based wil zeggen dat je de hele structuur doorloopt op zoek naar tags. Vind je een tag, dan zet je die op de stack en ga je een level omhoog. Vind je de sluittag, dan parse je wat er tussen staat en gooi je 'm weer van de stack af.
Dit werkt dus ook bij geneste tags, en je kan nesting errors eruit halen.
Ik begin een beetje in paniek te raken, geloof ik :o

Het voordeel van die webfx benadering is, dat je het vuile werk door de browser laat uitvoeren. Dus niet afgesloten p-tags worden gewoon door de browser afgesloten. Spaghetti-code wordt door de browser ontward. Die benadering heeft grote voordelen.
maar je bent dan dus afhankelijk van de 'vriendelijkheid' van de gebruikte browser. Ik gok dat het dan ook IE-only is (moet nog steeds op de link klikken).
Net een simpel voorbeeldje gemaakt, en nu werkt die wel (die webfx versie). Probleem bij mij is dat ik dingen veel te snel inbouw, en dan geen simpele testversie maak als het niet meteen blijkt te werken.
ik maak juist eerst kleine testversies, zeker met dingen als regexps ga je anders snel de boot in...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

JavaScript:
1
str = str.replace(/(.*?)=[\'\"](\d+)[\'\"]/gi, "$1=\"$2px\"");

Dat ik effe eerst ben :P

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de uitleg.

In principe is het niet IE-only. Ook in Mozilla zou het moeten werken, omdat het via de dom werkt. Het moet een browser zijn die de dom goed ondersteunt.

Er zit volgens mij maar een klein dingetje in de getxhtml.js waardoor het niet werkt in Mozilla:
// if (node.scopeName == "HTML")
Dit escapen en volgens mij werkt het dan ook in Mozilla. (snelle test gedaan)
Hier heb ik even wat in elkaar geflanst (kan je misschien weer werk schelen):
http://home.hccnet.nl/m.wargers/test/stringbuilder/
Maar goed, in principe was het ook bedoeld om de wysiwyg-code van Internet Explorer wat op te schonen.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Waarom wil dit niet?
JavaScript:
1
str = str.replace(/(.*?)=([\'\"])(\d+)([\'\"])/gi, "$1=". function($2) { return getPix($1); }."\"$3px\"");

En dit wel?
JavaScript:
1
str = str.replace(/(.*?)=([\'\"])(\d+)([\'\"])/gi, function($2) { return getPix($1); });

M.a.w., hoe moet dat :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 23 April 2003 @ 17:21:
Waarom wil dit niet?
JavaScript:
1
str = str.replace(/(.*?)=([\'\"])(\d+)([\'\"])/gi, "$1=". function($2) { return getPix($1); }."\"$3px\"");

En dit wel?
JavaScript:
1
str = str.replace(/(.*?)=([\'\"])(\d+)([\'\"])/gi, function($2) { return getPix($1); });

M.a.w., hoe moet dat :)
wat doet getPix?

waarom niet gewoon zo:

JavaScript:
1
str = str.replace(/(\w+)=['"](\d+)['"]/gi, '$1="$2px"');

[ Voor 21% gewijzigd door crisp op 23-04-2003 17:47 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

omdat ik wil checken of er quootjes staan.
Zonee dan zet ie ze neer.
Dus die $1 (moet natuurlijk $2 zijn) is dan .... ehhh........ :X
hmmz... 8)7
Laat maar. :P

Effe opnieuw.
Hoe kan ik het volgende checken.

width=1
str.replace((.*?)=([\'\"])(\d+)([\'\"]) .....

Maar hoe kan ik bekijken of het OF een ' is, OF een ", OF nix?
Dus dat ie `m ook pakt als er geen quootje staat?

[ Voor 23% gewijzigd door Guillome op 23-04-2003 17:51 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

zoiets:

JavaScript:
1
str = str.replace(/(\w+)=['"]?(\d+)['"]?/gi, '$1="$2px"');

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hoe weet jij dat altijd nou zo snel en goed? :z
:)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 23 April 2003 @ 18:03:
Hoe weet jij dat altijd nou zo snel en goed? :z
:)
practice my son, practice.... ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hahahaha keeeej dan :o
Alleen voelt mijn bijdrage nu niet echt super nuttig meer.
Mja, de rest van de editor is mijn werk :P :P :P ;)

[ Voor 72% gewijzigd door Guillome op 23-04-2003 18:08 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

ok, ik ben redelijk ver gekomen; alles tussen <script> tags wordt niet meer geparsed. Hier en daar zitten er wat onvolkomenheden in, maar over het algemeen is het resultaat toch wel redelijk goed te noemen dacht ik zo :)

--> http://therealcrisp.xs4all.nl/upload/tidycode.html

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Kool man :)
Ik ben al ver met dat omzetten naar styles. Maar dat is een kolere werk man :z :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 23 april 2003 @ 22:25:
Kool man :)
Ik ben al ver met dat omzetten naar styles. Maar dat is een kolere werk man :z :)
Ik heb daar net een handige functie voor ingebouwd:

JavaScript:
1
2
3
4
5
6
7
8
9
function property(property, content) {

  property = property.toLowerCase();

  if (property == 'bgcolor') return 'style="background-color: '+content+'"';

  return property+'="'+content+'"';

}


Hier kan je de property uitvragen, en aan de hand daarvan het style-equivalent terugsturen (zoals ik hier met bijvoorbeeld bgcolor heb gedaan) :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ja maar...
Stel.
Je hebt [img]"gla.jpg"[/img]
Dan moet ie 1 style hebben met alles erin.
Dat is effe lastig.

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 23 April 2003 @ 22:39:
Ja maar...
Stel.
Je hebt [img]"gla.jpg"[/img]
Dan moet ie 1 style hebben met alles erin.
Dat is effe lastig.
Dat is met een regexp ook niet meer te doen nee; het gaat me nu alleen even om de ranzige IE-only properties, de rest is op zich niet verkeerd in HTML hoor :)
Ik moet het nog verder uitbreiden, misschien ga ik alle <font> tags ook nog wel replacen met <span>'s :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Wordt wel een kicke project dan 8-)

`t Is effe lastig als je harde enters gebruikt in tags.
Dus
code:
1
2
3
4
<img
  height=10
  width=20
/>


Dit omdat regExp.match nu alleen maar <img pakt, en de rest niet.

edit.
Heeeeej :D `t gaat lukken,

edit2
Cool :D
Hij maakt nu van dit
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<img
height="10"
width="12"
width="1"
height=10
onmousedown=asdasdas
width=12"
width="1
src="gla.jpg" /><img2222222
height="10"
width="12"
width="1"
height=10
width=12"
width="1
src="gla.jpg" />

Dit:
JavaScript:
1
2
3
4
5
6
7
8
<img
 style="height:10px; width:12px; width:1px; height:10px; width:12px; width:1px;"     
 onmousedown=asdasdas
   
 src="gla.jpg" />
<img2222222
 style="height:10px; width:12px; width:1px; height:10px; width:12px; width:1px;"       
 src="gla.jpg" />

:9 :o :Y) :9~ 8-)

[ Voor 164% gewijzigd door Guillome op 23-04-2003 23:15 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 23 april 2003 @ 22:47:
Wordt wel een kicke project dan 8-)

`t Is effe lastig als je harde enters gebruikt in tags.
Dus
code:
1
2
3
4
<img
  height=10
  width=20
/>


Dit omdat regExp.match nu alleen maar <img pakt, en de rest niet.

[...]
Wie gebruikt er dan ook enters binnen een tag? 8)7

Enfin, ik heb de mijne nu ook zover dat hij style-equivalenten in 1 style= kan pakken; verder vervang ik <font> tags door <spans> :)

[ Voor 5% gewijzigd door crisp op 24-04-2003 00:07 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hij is geweldig, hij is briljant. _/-\o_
Vooral die indenting werkt mooi zeg.

Toch wat opmerkingen:
Bij comment tags (<!-- -->) gaat die volgens mij nogal de mist in.
Tekst binnen style tags hoeft in principe ook niet geparsed te worden, hoewel dit normaal gesproken geen problemen zou hoeven op te leveren volgens mij.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Verwijderd schreef op 24 April 2003 @ 00:15:
Hij is geweldig, hij is briljant. _/-\o_
Vooral die indenting werkt mooi zeg.

Toch wat opmerkingen:
Bij comment tags (<!-- -->) gaat die volgens mij nogal de mist in.
Tekst binnen style tags hoeft in principe ook niet geparsed te worden, hoewel dit normaal gesproken geen problemen zou hoeven op te leveren volgens mij.
Klopt, met comment tags gaat het nogal eens mis; gewoon eruit strippen is ook niet de juiste optie in alle gevallen.... Ga ik nog wat op verzinnen :)
Style tags heb ik zojuist toegevoegd voor het niet-parsen :)

edit: comments hopelijk ook (op een ranzige manier) opgelost

[ Voor 6% gewijzigd door crisp op 24-04-2003 00:45 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
comments hopelijk ook (op een ranzige manier) opgelost
Ik zie het ja. Dat had ook een oplossing van mij kunnen zijn ;)
Verder gaat me dit nogal de pet te boven, ik acht me niet meer verantwoordelijk voor het verdere verloop van dit topic.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

zo, nog een zut properties toegevoegd die omgezet kunnen worden naar style-equivalenten; ik zit een beetje met properties als margintop enzo; ik vervang het nu door padding-top: 0px; omdat dat zo hoort volgens w3c, maar IE verwacht natuurlijk weer margin 8)7
cellpadding zou ik moeten vervangen door padding in elke cel, cellspacing is ook zo'n leuke...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

??
Heb jij het nu ook al voorelkaar om alle styles="" in 1 te zetten???

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 24 April 2003 @ 10:00:
??
Heb jij het nu ook al voorelkaar om alle styles="" in 1 te zetten???
yep :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Aso, daar heb ik heel lang over gedaan :(
Hoe heb jij het dan? :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 24 april 2003 @ 19:15:
Aso, daar heb ik heel lang over gedaan :(
Hoe heb jij het dan? :)
Heel simpel, bij het doorlopen van de properties in een tag:
JavaScript:
1
2
  tag = tag.replace(/(\w+)="([^"]*)"/g, function($1,$2,$3) { return property($2,$3); } );
  tag = tag.replace(/(\w+)='([^']*)'/g, function($1,$2,$3) { return property($2,$3); } );

(alles tussen enkele en dubbele quotes dus) hou ik een string bij met de style-equivalenten.
Alles wat ik omzet door een style-equivalent vervang ik door '|X|'.
Als ik alle properties gehad heb vervang ik de eerste '|X|' door mijn opgebouwde style= string, en de rest van de '|X|' verwijder ik :)
Optimaal resultaat door optimale ranzigheid ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Zeg nou eens eerlijk, want ik zie het niet.
Welke is beter. Die van jou of deze van mij:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
      function restyle(str)
      {
              str = str.replace(/____/gi, "\n");
        str = str.replace(/(.*?)=[\'\"]?(\d+)[\'\"]?/gi, "style=\"$1:$2px;\""); // HIERO PAKT IE DE px NIEt
        
        var tmpStyle = "";
        tmpStyle += str.match(/style=([\"\'].*?[\"\'])/gi)
        tmpStyle = tmpStyle.replace(/style=([\"\'].*?[\"\'])/gi, "$1");
        tmpStyle = tmpStyle.replace(/\"|,/gi, "");
        tmpStyle = tmpStyle.replace(/;/gi, ";");
        tmpStyle = " style=\"" + tmpStyle + "\"";
                tmpStyle = tmpStyle.replace(/([\"|\'])\s/gi, "$1");
        tmpIdx = str.indexOf(" ");
        str = str.replace(/style=[\"\'].*?[\"\'][\s+\n]?/gi, "");
        str = str.substr(0, tmpIdx) + tmpStyle + str.substr(tmpIdx);
                return str.replace(/\x0A|\x0D/gi, "____ ");
      }

      function doe() 
      {
        var obj = document.getElementById("code");
        var str = obj.value.replace(/\x0A|\x0D/gi, "____ ");
        var newStr = "";
        var idx = 0;
        var tmpStr = "";
        while ((tmpStr = String(str.substr(idx).match(/<.*?>/))) != "null")
        {
          idx += tmpStr.length;
          tmpStr = restyle(tmpStr);
                    newStr += tmpStr;
        }
                newStr = newStr.replace(/>(.*?)</gi, ">$1\n<");
                newStr = newStr.replace(/;(\w)/gi, "; $1");
        newStr = newStr.replace(/____ /gi, "\n");
                newStr = newStr.replace(/\n\s+\n/gi, "\n");
                obj.value = newStr;
      }


edit

Ik zit nu alleen met het probleem dat ie de tekst achter een waarde (dus px of %) niet meepakt.
Dat komt door regel 4.
Hij pakt die = niet. Dus is $1 dan height="10" ipv height.
En $2 is leeg ipv 10.
Whelp!!!!!!

edit2.
Fokkerdefok.
Jemig de pemig.
En weer heeft hij het veel beter hoor.
BAH :P
Het enige betere van mij is dat die van mij met meerdere regels werkt. In 1 tag



edit3
Even een vraagje
Ik heb dit
boeh=hai
Hoe kan ik boeh eruit filteren?
Dit wil niet.
JavaScript:
1
2
var str = "Blah=boeh";
str = str.replace(/([a-z]+)=/gi, function($1) { alert($1);});

[ Voor 79% gewijzigd door Guillome op 24-04-2003 20:10 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 24 april 2003 @ 19:23:
[...]
edit3
Even een vraagje
Ik heb dit
boeh=hai
Hoe kan ik boeh eruit filteren?
Dit wil niet.
JavaScript:
1
2
var str = "Blah=boeh";
str = str.replace(/([a-z]+)=/gi, function($1) { alert($1);});
JavaScript:
1
2
var str = '<tag Blah=boeh bliep=blah>';
str = str.replace(/(\w+)=([^> '"]*)(?= |>)/g, function($1,$2,$3) { alert($2);alert($3); } );

$1 bevat in deze constructies altijd de complete match, $2 de match van het 1e subpattern, en $3 de match van het 2e subpattern :)
Je moet $1 opgeven, want de regExp kent de matches op volgorde toe. Als je alleen $2 en $3 opgeeft, dan zal $2 de complete match bevatten, en $3 de match van het 1e subpattern.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Aarghhhhh kut dat meen je niet. Stom dat heb ik wel geweten :(
Damn dan werkt die van mij waarschijnlijk wel.
Superb tnx, maar `t wordt toch wel jouw code, maar ik wil het ook effe snappen ;)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 24 April 2003 @ 23:14:
Aarghhhhh kut dat meen je niet. Stom dat heb ik wel geweten :(
Damn dan werkt die van mij waarschijnlijk wel.
Superb tnx, maar `t wordt toch wel jouw code, maar ik wil het ook effe snappen ;)
ik wist het zelf nog niet, maar kwam daar zo spelenderwijs achter :)
en uiteindelijk gaat het erom dat we allemaal wat leren :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Dat is zekers zo :)
Maar die van mij mag er ook wel wezen al zeg ik het zelf :P
http://members.home.nl/tegroen/regexp.html

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 24 April 2003 @ 23:56:
Dat is zekers zo :)
Maar die van mij mag er ook wel wezen al zeg ik het zelf :P
http://members.home.nl/tegroen/regexp.html
Heerlijk he zo'n zooitje regexps achter elkaar :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hahahahhahaha zeker! :o :P Maar hij werkt wel! :)

edit
`t Is idd wel erg ja :o dat zie ik eigelijk nu pas :)

[ Voor 52% gewijzigd door Guillome op 25-04-2003 00:04 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:03:
Hahahahhahaha zeker! :o :P Maar hij werkt wel! :)

edit
`t Is idd wel erg ja :o dat zie ik eigelijk nu pas :)
Je hoeft je code niet meer te obfuscaten, dat is 'ie al :P

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

? Wat is dat dan?
Maarre dit komt zekerdeweten wel in mijn HTML editor hoor.
Koele optie man 8-)
edit
Ik heb nu wel alles gecommenteerd.
edit2
En oh ja, bij jou gaat src nog niet goed

[ Voor 44% gewijzigd door Guillome op 25-04-2003 00:13 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

obfuscaten is onleesbaar maken; wordt vaak gedaan om het rippen van code te voorkomen. Voorbeeldje (stukje copy-paste van mijn smiley shoot-um-up):

JavaScript:
1
2
3
4
function mS(i){with(SA[i]){if(!p){l+=x;t+=y;if(l<0||l>w){x*=-1;l+=2*x;
if(l>w)l=w}if(t<0||t>h){y*=-1;t+=2*y;if(t>h)t=h}
with(style){left=l;top=t}cS(i);if(m){if(n<0)iS('b',0);else n--}
sT('mS('+i+')',20)}}}

[ Voor 10% gewijzigd door crisp op 25-04-2003 00:13 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Oooh ja datte hahahaha nee dat hoeft niet meer nee :P Haha

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Wat gaat er niet goed bij src? heb je een voorbeeldje?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Zekah!
Vul dit maar eens in.
[img]"gla.jpg"[/img]

Dit binne de leuke dingen he :P
Ik zit nu met het probleem dat het wel op meerdere regels wil
<img
height
blaa

Maar niet meer op 1 regel :+

Maar die indent van jou is zwaaar cool!

ps. ik denk dat de TS wel blij mag zijn met zulk intensieve hulp :P

[ Voor 87% gewijzigd door Guillome op 25-04-2003 00:24 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:18:
Zekah!
Vul dit maar eens in.
[img]"gla.jpg"[/img]

Dit binne de leuke dingen he :P
Ik zit nu met het probleem dat het wel op meerdere regels wil
<img
height
blaa

Maar niet meer op 1 regel :+

Maar die indent van jou is zwaaar cool!
maar dat is gewoon al foute HTML die je erin stopt, als je width zonder quotes, of gewoon width="12" doet, dan gaat het goed. GIGO (Garbage In Garbage Out) noem ik dat; mijn script is niet bedoeld om fouten te verbeteren, maar om de HTML op te schonen.

Ik ben nog wat aan het nadenken over die indent, of dat ik 'm wel overal moet toepassen. Ik zou bijvoorbeeld <td>eenstukjetext</td> op 1 regel kunnen laten staan, is wel zo handig als er in plaats van eenstukjetext een <img> staat (als je dan newlines gaat gebruiken sluit de image vaak niet meer goed aan op de rand van je tablecell). Vraag is alleen wat voor criteria ik daarvoor moet gebruiken...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Dat is zeker een punt! Ik gebruik vrij vaak td`s op 1 regel.
Ik denk dat dat wel de beste manier is. Voor plaatjes een must.

Maar effe om te laten zien dat ik ook wel iets kan, bij mij pakt ie dat wel goed :P

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:28:
Dat is zeker een punt! Ik gebruik vrij vaak td`s op 1 regel.
Ik denk dat dat wel de beste manier is. Voor plaatjes een must.

Maar effe om te laten zien dat ik ook wel iets kan, bij mij pakt ie dat wel goed :P
Bij mij nu ook ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Neeeeeej ik weet zonet nog niet of ik jou wel mag :P

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 25 april 2003 @ 00:33:
Neeeeeej ik weet zonet nog niet of ik jou wel mag :P
Ik weet zo net nog niet of ik wel wil dat jij me mag :+
Ik zal de volgende keer eerst 10 minuten wachten goed?

[ Voor 12% gewijzigd door crisp op 25-04-2003 00:37 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Zolang ik je code erin mag pleuren vind ik het niet zo erg wat je van me vind van wat ik van jou vind.
Als je je code maar goed maakt :P


edit
Hahahahahaha ja dan lijkt het alsof je er nog moeite voor doet.
Dit is irritant gewoon :P

[ Voor 28% gewijzigd door Guillome op 25-04-2003 00:38 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:38:
[...]
Dit is irritant gewoon :P
Ik ben ook irritant ;) Doel bereikt zal ik maar zeggen.
Maar genoeg offtopic geleuter, we willen geen slapende modjes wakker maken wel?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Goeie!
Ik upload effe m`n nieuwe versie. Die werkt volgens mij prima nu. :)
http://members.home.nl/tegroen/regexp.html

[ Voor 23% gewijzigd door Guillome op 25-04-2003 00:45 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:45:
Goeie!
Ik upload effe m`n nieuwe versie. Die werkt volgens mij prima nu. :)
http://members.home.nl/tegroen/regexp.html
Niet helemaal, alles verschuift een spatie waardoor er ongeldige HTML ontstaat...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ja ik weet het. Ik weet alleen nog niet hoe ik dubbele spaties eruit filter.
str.replace(/\s\s/gi, " ") noch str.replace(/ /gi, " ") noch str.replace(" ", " ") werkt goed

Ten minste, wel 1 keer.
Maar als je er dan nog eens op drukt, niet meer.

[ Voor 29% gewijzigd door Guillome op 25-04-2003 00:51 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:50:
Ja ik weet het. Ik weet alleen nog niet hoe ik dubbele spaties eruit filter.
str.replace(/\s\s/gi, " ") noch str.replace(/ /gi, " ") noch str.replace(" ", " ") werkt goed

Ten minste, wel 1 keer.
Maar als je er dan nog eens op drukt, niet meer.
ik zou zoiets doen:

JavaScript:
1
str = str.replace(/ +/gi, ' ');

(dus gewoon 2 of meer spaties vervangen door 1)
Maar in feite hoeft dat toch ook maar 1x?

[ Voor 7% gewijzigd door crisp op 25-04-2003 01:02 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Maar als ie na de 1e keer het fout doet, betekend het dat ie het ook fout doet als iemand een regel er al goed in heeft staan.
Jaaah goeie he ;)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 01:03:
Maar als ie na de 1e keer het fout doet, betekend het dat ie het ook fout doet als iemand een regel er al goed in heeft staan.
Jaaah goeie he ;)
ik zie toch wat dingetjes in je regexps die mogelijk dit fenomeen veroorzaken; ik ben nu echter te moe om er nog wat mee te doen. Ik kom er morgen echter graag op terug :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Oh cool. Pdima, dan hoor ik het morgen graag aan :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ps. ik denk dat de TS wel blij mag zijn met zulk intensieve hulp
Ik ben nog steeds in de zevende hemel :P

Als je nog meer complimenten wil, roep je maar ;)

Ik zat even te kijken welke methode sneller was. Die van Crisp of die van webfx. Die van Crisp is veel sneller. De methode van webfx is zeker voor grotere documenten onwerkzaam traag. Het heeft wel weer als voordeel dat het automatisch verkeerd geneste tags corrigeert, maar goed. Daar heb ik niet zoveel aan als het zo traag werkt.
Maar ik heb ook nog steeds een beetje het gevoel dat regexp's wat bedrijfsonzekerder zijn doordat ze gewoon met de botte bijl je tekst aanpakken. Maar dat zal wel aan mij liggen. In ieder geval zie ik geen fouten meer in de tidycode.

Wat ik nog mis is dat tags afgesloten worden. Ik heb nl net gemerkt dat Internet Explorer na het bezoeken van het document in designmode bepaalde sluit-tags (zoals </li>) worden gewist (behalve de laatste li-tags)
Het is niet dat ik erom vraag of zo hoor, echt niet. Ik wil het je gewoon laten weten.
Maar als je het maakt dan ben ik je nogmaals eeeeeeeuwig dankbaar. :*)
Natuurlijk alleen maar doen als je er zelf in geinteresseerd bent.

Ga zelf ook maar onderzoeken, moet eerst maar eens gaan slapen :z

Acties:
  • 0 Henk 'm!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:29

Pelle

🚴‍♂️

Wellicht wat mosterd na de maaltijd, maar beperk de slowchat voortaan even ;)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Verwijderd schreef op 25 april 2003 @ 01:18:
[...]

Ik ben nog steeds in de zevende hemel :P

Als je nog meer complimenten wil, roep je maar ;)

Ik zat even te kijken welke methode sneller was. Die van Crisp of die van webfx. Die van Crisp is veel sneller. De methode van webfx is zeker voor grotere documenten onwerkzaam traag. Het heeft wel weer als voordeel dat het automatisch verkeerd geneste tags corrigeert, maar goed. Daar heb ik niet zoveel aan als het zo traag werkt.
Maar ik heb ook nog steeds een beetje het gevoel dat regexp's wat bedrijfsonzekerder zijn doordat ze gewoon met de botte bijl je tekst aanpakken. Maar dat zal wel aan mij liggen. In ieder geval zie ik geen fouten meer in de tidycode.
Regexps doen precies wat je vraagt hoor, dus wat dat betreft zijn ze absoluut bedrijfszeker. Het probleem is echter dat het eigenlijk een soort programmeertaal op zich is, en daar sluipen natuurlijk makkelijk bugs in, zeker gezien de nogal fuzzy syntax.
Daarbij zijn regexps buitengewoon snel :)
Wat ik nog mis is dat tags afgesloten worden. Ik heb nl net gemerkt dat Internet Explorer na het bezoeken van het document in designmode bepaalde sluit-tags (zoals </li>) worden gewist (behalve de laatste li-tags)
Het is niet dat ik erom vraag of zo hoor, echt niet. Ik wil het je gewoon laten weten.
Maar als je het maakt dan ben ik je nogmaals eeeeeeeuwig dankbaar. :*)
Natuurlijk alleen maar doen als je er zelf in geinteresseerd bent.

Ga zelf ook maar onderzoeken, moet eerst maar eens gaan slapen :z
Het probleem met <li>'s en <p>'s en nog wat tags is dat ze in HTML4 niet afgesloten hoeven te worden. In mijn 'parser' gaat dan de indenting fout omdat ik er van uitga dat ze wel afgesloten worden. De enige manier om dat te ondervangen is stack-based te gaan parsen en de meeste regexps weer overboord gooien.
Je moet dan per tag zeg maar rules gaan opgeven, en aan de hand daarvan door je document heenlopen. Zulke parsers bestaan wel denk ik, maar of ze ook in javascript bestaan betwijfel ik...

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet dat ze niet afgesloten hoeven te worden, maar persoonlijk wil ik ze toch afgesloten hebben.
Ik heb een soort regexp rule ervoor gemaakt. Bij een simpele test deed die het. Zal er morgen eens wat beter naar kijken.
strString = strString.replace(/<li>(.*)(?!<\/li>)(?=<li>)/gi, '<li>$1</li>');

Ik weet dat ze niet afgesloten hoeven te worden, maar persoonlijk wil ik ze toch afgesloten hebben.
Ik heb een soort regexp rule ervoor gemaakt. Bij een simpele test deed die het. Zal er morgen eens wat beter naar kijken.
strString = strString.replace(/<li>(.*)(?!<\/li>)(?=<li>)/gi, '<li>$1</li>');

strString = strString.replace(/<(.*)>(.*)(?!<\/\1>)(?=<\1>)/gi, '<$1>$2</$1>');
Dit lijkt ook te werken, met backreferences.
Hier een stukje over gevonden:
http://www.webreference.com/js/column5/values.html
Maar misschien dat het nu wat te algemeen wordt: alle tags worden dan met die regel aangepakt. Kan nu niet beoordelen of dat fout zou zijn, of dat het een regel is waaraan html sowieso aan moet voldoen.
Met tags zonder inhoud erin gaat het iig niet goed heb ik al gemerkt.

Nu toch echt maar gaan slapen.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Verwijderd schreef op 25 April 2003 @ 02:18:
Ik weet dat ze niet afgesloten hoeven te worden, maar persoonlijk wil ik ze toch afgesloten hebben.
Ik heb een soort regexp rule ervoor gemaakt. Bij een simpele test deed die het. Zal er morgen eens wat beter naar kijken.
strString = strString.replace(/<li>(.*)(?!<\/li>)(?=<li>)/gi, '<li>$1</li>');
Maar de laatste <li> dan? wat als die niet afgesloten word?
strString = strString.replace(/<(.*)>(.*)(?!<\/\1>)(?=<\1>)/gi, '<$1>$2</$1>');
Dit lijkt ook te werken, met backreferences.
Hier een stukje over gevonden:
http://www.webreference.com/js/column5/values.html
Maar misschien dat het nu wat te algemeen wordt: alle tags worden dan met die regel aangepakt. Kan nu niet beoordelen of dat fout zou zijn, of dat het een regel is waaraan html sowieso aan moet voldoen.
Met tags zonder inhoud erin gaat het iig niet goed heb ik al gemerkt.
Dat zijn geen backreferences, maar nog steeds look-aheads. Ik vraag me af of je bijvoorbeeld $+ in je regexp zelf kan gebruiken, of $& (recursie). Ga ik morgen eens mee testen
mmz, wel backreferences dus (de \1); ik wist niet eens dat dat kon, de Netscape js reference (javascript 1.3) maakt daar geen melding van :)
Nu toch echt maar gaan slapen.
* crisp 2

[ Voor 12% gewijzigd door crisp op 25-04-2003 10:06 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar de laatste <li> dan? wat als die niet afgesloten word?
Ik weet het, dat gaat niet goed. Dan moet je weer checken op ul of ol-tags wanneer die beeindigd worden.
Voor p-tags geldt dat ze geen blok-elementen mogen bevatten, dus dan zou er gecheckt moeten worden wanneer het eerstvolgende blokelement wordt geopend.
Ik weet niet precies welke elementen in html niet beeindigd hoeven te worden. td is er iig nog een. In principe zouden daar ook allemaal regeltjes voor zijn te vinden.
Die regexp van mij gaat ook de mist in als er attributen in li-tag staan.

Hier ben ik mee bezig geweest:
http://home.hccnet.nl/m.wargers/bookmarklets/edit.htm
Een soort bookmarklet die het huidige document kan editten.
Nu gebruik ik jouw tidycode-code.
Ik heb google er doorheen gehaald, maar na de tidy-code vertaalslag komt de tekst er te groot uit.
Gekeken waar het aan kon liggen --> je gebruikt font-size-adjust bij die functie om alles in het style-attribuut te zetten. Is dat wel de goede css-property? Moet je niet gewoon font-size, en dan een percentage teruggeven?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Verwijderd schreef op 25 April 2003 @ 11:50:
[...]
Hier ben ik mee bezig geweest:
http://home.hccnet.nl/m.wargers/bookmarklets/edit.htm
Een soort bookmarklet die het huidige document kan editten.
Nu gebruik ik jouw tidycode-code.
Ik heb google er doorheen gehaald, maar na de tidy-code vertaalslag komt de tekst er te groot uit.
Gekeken waar het aan kon liggen --> je gebruikt font-size-adjust bij die functie om alles in het style-attribuut te zetten. Is dat wel de goede css-property? Moet je niet gewoon font-size, en dan een percentage teruggeven?
De vertaalslag van <font size=x> naar een <span> met een css font-size is nog niet helemaal perfect. Ik weet ook niet 100% zeker of het 1 op 1 kan.
Wat ik nu doe:

als er + of - voorstaat (relatieve size dus):

size = (+|-)(\d+) --> font-size-adjust: $1$2;

anders (absolute fontsize):

size = \d+ --> {

als $1 = 0 --> font-size: 0px;
als $1 = 1 --> font-size: xx-small;
als $1 = 2 --> font-size: x-small;
als $1 = 3 --> font-size: small;
als $1 = 4 --> font-size: medium;
als $1 = 5 --> font-size: large;
als $1 = 6 --> font-size: x-large;
als $1 = 7 --> font-size: xx-large;
als $1 > 7 --> font-size: medium; (je moet toch wat)

}

Hier moet ik dus nog verder naar kijken.
Op het moment ben ik bezig een stukje stack-based parsing in te bouwen om niet afgesloten tags te kunnen ondervangen, maar daar ben ik nog wel even zoet mee vrees ik...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

? font-size:40px is het toch??

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja sorry, ik kende die css-property niet. Het blijkt wel te doen wat je wil dat het doet. Alleen doet die dat niet helemaal goed. Ik las wat uitleg over font-size-adjust en daar kreeg ik de indruk dat het helemaal ergens anders over ging.
IE5 kent geen font-size-adjust. Hmm, stomme browser, negeren die hap. :+

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Verwijderd schreef op 25 April 2003 @ 12:34:
Ja sorry, ik kende die css-property niet. Het blijkt wel te doen wat je wil dat het doet. Alleen doet die dat niet helemaal goed. Ik las wat uitleg over font-size-adjust en daar kreeg ik de indruk dat het helemaal ergens anders over ging.
IE5 kent geen font-size-adjust. Hmm, stomme browser, negeren die hap. :+
Ik heb de font-size-adjust inmiddels gewijzigd in een procentuele font-size. Ik ga nu uit van een verschil van 25% tussen de opeenvolgende sizes, wat aardig overheen lijkt te komen als ik google.com er doorheen haal.
Verder heb ik het zo aangepast dat alleen een size= in een font-tag wordt omgezet naar een style="font-size: xxx%"; anders wordt het inputveld zo raar :+

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Geweldig, dat werkt heel goed.
Nog een klein foutje gemerkt. Als je dezelfde tekst er een paar keer doorheen haalt, dan krijg je steeds new-lines erbij bij zo'n soort combinatie <tag>tekst</tag>.

Hmm, gebeurt alleen in Mozilla. Wie doet het nou goed en wie fout?
edit: ze doen het toch beide, ik begin een beetje te malen, geloof ik


Ik heb het nu met verschillende sites getest en ik zie eigenlijk geen problemen.

Dat was ik ook nog vergeten, bepaalde tags mogen wel genest worden: In een list mag je nog een list nesten. En binnen een tabel mag je nog een tabel nesten. Dus die methode van mij zal daarvoor ook niet werken.
Benieuwd naar dat stukje stack-based parsing van jou...

[ Voor 29% gewijzigd door Verwijderd op 25-04-2003 21:16 ]


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

:( Ik geef het op hoor. Ik krijg `m niet zo goed als jouwes. :)
Dan werkt dit niet, dan dat niet.
Nu zet ie onmouseovers ook in de style :(

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Ik vorder al redelijk met mijn stack-based opzet; ik krijg nu veel meer mogelijkheden ook om te bepalen of ik al dan niet indent. Zelfs constructies zoals:
HTML:
1
<a href="#" onclick="document.write('\"');if (a<b&&b>c) doe();">woei</a>

gaan goed in deze nieuwe versie.
Helaas is het nog te prematuur om online te zetten, dus jullie zullen nog even geduld moeten hebben :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Damndamndamn. Ik kan echt beter stoppen maar het is zow verslavend.
Maarre wat doet ie dan goed bij die regel? Of beter gezegd, wat deed ie eerst fout?

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 26 April 2003 @ 00:16:
Damndamndamn. Ik kan echt beter stoppen maar het is zow verslavend.
Maarre wat doet ie dan goed bij die regel? Of beter gezegd, wat deed ie eerst fout?
Voer maar in in mijn huidige script, en je ziet wat er fout gaat :)
Ik gebruik nu de volgende regexp om tags eruit te halen:
JavaScript:
1
/<\/?\w+([^<>"']|"([^"]|\\\")*"|'([^']|\\\')*')*>/g


uitleg:
code:
1
2
3
4
5
6
7
8
<\/?      begint met < eventueel gevolgt door een /
\w+       gevolgt door 1 of meerdere woord karakters
(
[^<>'"]          gevolgt door karakters die geen < > ' of " zijn
|"([^"]|\\\")*"  of gevolgt door een reeks karakters tussen " " die zelf geen " bevatten tenzij daar een escape teken voor staat
|'([^']|\\\')*'  of gevolgt door een reeks karakters tussen ' ' die zelf geen ' bevatten tenzij daar een escape teken voor staat
)*               en dat eventueel meerdere malen
>                gevolgt door een > teken


note dat ik hierdoor ook niet meer in staat ben om eventuele missende quotes aan te vullen; browsers zijn dat echter ook niet, dus ook hier geldt: GIGO :)

[ Voor 133% gewijzigd door crisp op 26-04-2003 00:45 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Shitterdeshit, daar zeg je wat.
Dat gaat bij mij ook niet goed :(
Ging eindelijk alles perfect, komt ie hier weer mee :P

edit
GIGO ruled! Maar dit is echt undone voor mij hoor.
Tjeemig klasse hoor! :)

Maar over GIGO, doet ie het bij jou wel goed als je helemaal geen quootje gebruikt?
Dus width=1?

[ Voor 46% gewijzigd door Guillome op 26-04-2003 00:51 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 26 april 2003 @ 00:40:
Shitterdeshit, daar zeg je wat.
Dat gaat bij mij ook niet goed :(
Ging eindelijk alles perfect, komt ie hier weer mee :P

edit
GIGO ruled! Maar dit is echt undone voor mij hoor.
Tjeemig klasse hoor! :)

Maar over GIGO, doet ie het bij jou wel goed als je helemaal geen quootje gebruikt?
Dus width=1?
yep:

boe=bah word: boe="bah"

(boe=bah is gewoon valid HTML, echter is het netter (en in XHTML verplicht) om attribuut waarden tussen quotes te zetten)

tenzij er een style-equivalent bestaat:

width=1 wordt: style="width: 1px;"

[ Voor 13% gewijzigd door crisp op 26-04-2003 01:11 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Maar hoe moet dat dan met een
onclick="if (a==b) c();"
??
Dan zoek je dus op een tekstreeks (in dit geval onclick), daarna op een =je, en dan eventueel een quootje (in dit geval de ")dan een tekstreeks tot en met OF een quootej, of een spatie (in dit geval na de if.)
En dan pakt ie dat als bewerk stukje, en zet ie quootjes omheen.
Hmm echt vaag, ik zou het knap vinden als je dit (lees: deze uitleg van mij) snapte.
Ik igg niet meer :)


edit
Even als extra uitleg.
Ik doe dit om er voor te zorgen dat alle values worden gequote
str = str.replace(/(\w+)=[\"\']?(.*?)[\"\']?\s/gi, function($1, $2, $3) { return fixQuotes($1, $2, $3); });

[ Voor 70% gewijzigd door Guillome op 26-04-2003 01:21 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 26 april 2003 @ 01:15:
Maar hoe moet dat dan met een
onclick="if (a==b) c();"
??
Dan zoek je dus op een tekstreeks (in dit geval onclick), daarna op een =je, en dan eventueel een quootje (in dit geval de ")dan een tekstreeks tot en met OF een quootej, of een spatie (in dit geval na de if.)
En dan pakt ie dat als bewerk stukje, en zet ie quootjes omheen.
Hmm echt vaag, ik zou het knap vinden als je dit (lees: deze uitleg van mij) snapte.
Ik igg niet meer :)


edit
Even als extra uitleg.
Ik doe dit om er voor te zorgen dat alle values worden gequote
str = str.replace(/(\w+)=[\"\']?(.*?)[\"\']?\s/gi, function($1, $2, $3) { return fixQuotes($1, $2, $3); });

Dit werkt prima, op het onclick verhaal na.
Haal ik die \s weg, dan is het precies andersom
dit is sowieso al geen geldig html (en gaat ook fout in je browser):

HTML:
1
<a href=# onclick=if (a==b) c();>woei</a>


net als:

HTML:
1
<input type=text value=blaat bliep>


2e is iets makkelijker uitleggen :)
wat moet dat gaan worden?

mogelijkheid 1:
HTML:
1
<input type="text" value="blaat" bliep />


syntactisch correct, maar bliep is geen geldige property voor een input-tag, dus HTML incorrect.

mogelijkheid 2:
HTML:
1
<input type="text" value="blaat bliep" />

zowel syntactisch correct, als ook HTML correct

Dit soort dingen kan je dus alleen maar doen als je voor elke tag weet wat wel en wat geen geldige property waarde is. Regexpen kan je dan al weggooien, want daarin kan je moeilijk voor elke HTML tag gaan aangeven wat wel en niet een geldige property value is (kan wel, maar dan krijg je 4 kantjes met 1 regexp)

Ik ga er dus van uit dat zodra een waarde met spaties wordt opgegeven, er al quotes omheen staan (geldig HTML), en daar match ik op.
De beginquote moet ook gelijk zijn aan de eindequote (single of double); daarbinnen mogen ook wel quotes staan gelijk aan de begin en eindquote, zolang ze maar escaped zijn.
Uiteindelijk match ik op \w+= en als de waarde daarna nog niet tussen quotes staat, zet ik er alsnog quotes omheen :)

[ Voor 7% gewijzigd door crisp op 26-04-2003 01:32 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

toch nog even snel een link naar mijn nieuwste versie: http://therealcrisp.xs4all.nl/upload/tidycode_stack.html
Deze doet nog geen indenting of wat dan ook, maar het verschil met de vorige versie is dat deze eerst alle tags en alle non-tags in een array zet.
Deze array lees ik vervolgens uit, en kan zo per tag bepalen wat ermee te doen. Als het daadwerkelijk een HTML tag is kan ik 'm dus op een stack pushen (zit er nog niet in), om later te kunnen bepalen of 'ie ook daadwerkelijk afgesloten wordt. Ik kan nu dus een soort boomstructuur gaan bouwen van tags, en uiteindelijk de boomstructuur weer gaan herschrijven naar HTML :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Crisp heeeelp!!!! :)
Ik kom echt absoluut niet uit het volgende.
Ik wil dat alle values die niet gequote zijn, quoten. ( hier zijn de () voor $1 enzo in de regexps even weggelaten)
Dan zoek je op een text tot een = teken. ' \w+='
Daarna een textreeks die geen quootjes en spaties bevat '.*[^\'^\"^ ]'
Maar dat doet ie niet.
Hoe moe`k da doen?

edit.
Fukkiedukkie, hoe ken da nou? Hij doet ut :D :o :+

[ Voor 19% gewijzigd door Guillome op 26-04-2003 18:16 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Wier ik wer :P
Effe een kickje, en effe een vraagje.
Hij werkt nu bijna perfect al :)
Maar nu even over dat indenten. Hoe doe je dat?
Want bij
<img>
<img>
moet ie niet indenten.
Maar bij
<tr>
<td>
wel.
Hoe hou je dat bij? Ik zie nergens een array of iets staan bij jou met tags die wel al dan niet ge-indent zou moeten worden (vage zin)

edit
Ik zit er ook nog mee dat ik neit weet hoe ik <script> tot </script> niet behandel.

[ Voor 17% gewijzigd door Guillome op 27-04-2003 17:45 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 27 april 2003 @ 17:29:
Wier ik wer :P
Effe een kickje, en effe een vraagje.
Hij werkt nu bijna perfect al :)
Maar nu even over dat indenten. Hoe doe je dat?
Want bij
<img>
<img>
moet ie niet indenten.
Maar bij
<tr>
<td>
wel.
Hoe hou je dat bij? Ik zie nergens een array of iets staan bij jou met tags die wel al dan niet ge-indent zou moeten worden (vage zin)

edit
Ik zit er ook nog mee dat ik neit weet hoe ik <script> tot </script> niet behandel.
<img> wordt bij mij <img /> oftewel een tag die meteen afgesloten wordt. Als dat zo is verhoog ik de indent dus niet. Bij gewone tags verhoog ik de indent, en met afsluit tags verlaag ik de indent.
Verder hou ik een global bij die ik van waarde verander op het moment dat ik bijvoorbeeld <script> tegenkom. Aan de hand van deze waarde kan ik bepalen of ik wel of niet de inhoud moet parsen.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Heej cool.
Dat script had ik net opgelost maar dat indent .. bedankt :D
Over dat scripts gedoe, ik vervang eerst alle <scripts>.*</scripts> door een (ik hoop) unieke textreeks. En wat ie vind slaat ie op in een array.
En op het laatst zet ie dat weer terug, en voor zover het lijkt, wil dat prima :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Okeeeeeeeej dan.
Wat vind je van deze?
http://members.home.nl/tegroen/regexp.html
Ben giga tevreden man :D :D :o WOEIII :)
Cool.
Ookal heb ik deze dan 'zelf' gemaakt, jou creditz komen er zeerzeker wel bij omdat ik het zonder jou waarschijnlijk niet zo netjes en snel en goed gemaakt had kunnen hebben.
Mega bedankt voor je hulp enzo!

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 00:09:
Okeeeeeeeej dan.
Wat vind je van deze?
http://members.home.nl/tegroen/regexp.html
Ben giga tevreden man :D :D :o WOEIII :)
Cool.
Ookal heb ik deze dan 'zelf' gemaakt, jou creditz komen er zeerzeker wel bij omdat ik het zonder jou waarschijnlijk niet zo netjes en snel en goed gemaakt had kunnen hebben.
Mega bedankt voor je hulp enzo!
Ziet er goed uit ja! :)
Je zal echter wel merken dat als je er eenmaal real-life voorbeelden in gaat proppen, dat het resultaat niet altijd precies is wat je voor ogen had (is in mijn versie trouwens ook zo), maar in grote lijnen zal het resultaat denk ik wel altijd beter zijn.

Ik ben dit weekend helaas niet verder gekomen met mijn stack-based versie waarbij ik dus ook onafgesloten tags zoals <p> mee kan afsluiten, maar zal daar van de week zeker nog wel mee verder gaan :)

keep you posted!

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Oh cool ik ben zeer benieuwd!!!
Maar ik ga zorgen dat je ook alleen je selectie kan opschonen :)
Dan heeft de gebruiker het meer onder controle. En kiezen voor indenting of XHTML maken of beide :)
En ik moet de font nog effe vervangen door span.
Maar 100% is het waarschijnlijk nooit.
Keep posting 2 u :) :D

Oh ja, wat moet ik erbij zetten?
Crisp? Email? Website?

[ Voor 9% gewijzigd door Guillome op 28-04-2003 00:20 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 00:17:
Oh cool ik ben zeer benieuwd!!!
Maar ik ga zorgen dat je ook alleen je selectie kan opschonen :)
Dan heeft de gebruiker het meer onder controle. En kiezen voor indenting of XHTML maken of beide :)
En ik moet de font nog effe vervangen door span.
Maar 100% is het waarschijnlijk nooit.
Keep posting 2 u :) :D

Oh ja, wat moet ik erbij zetten?
Crisp? Email? Website?
doe maar crisp - freesoftware[at]xs4all.nl
mijn site is een project waar ik nog nooit echt aan begonnen ben :o

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Oh ok, een echte (X)HTML JS goeroe die nieteens een website heeft? SCHANDE :P
Maar ik merk ineens dat mijnes niet op IE 5 werkt :( :(
Bij deze regel
var beginTag = String(str.match(/(\s*<[a-z|0-9]+)/gi)).toLowerCase();
"Onverwachte bepaler"

Oh ja, IE 5 kent de ? niet :(

[ Voor 39% gewijzigd door Guillome op 28-04-2003 00:33 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 00:23:
Oh ok, een echte (X)HTML JS goeroe die nieteens een website heeft? SCHANDE :P
Maar ik merk ineens dat mijnes niet op IE 5 werkt :( :(
Bij deze regel
var beginTag = String(str.match(/(\s*<[a-z|0-9]+)/gi)).toLowerCase();
"Onverwachte bepaler"
och, ik ben meestal te druk met anderen helpen; het komt er gewoon nooit van :P

wb je fout: ik vind het ook wel een beetje vreemde constructie die je daar gebruikt; je doet een str.match die een boolean teruggeeft (true/false). Vervolgens wil je die naar type String omzetten, en dan lowercase maken.
Waarom wil je dat, kan je niet gewoon met de boolean waarde verder werken?

var beginTag = str.match(/(\s*<[a-z|0-9]+)/gi); // beginTag is true of false

of als je toch perse een string wilt, kan je ook nog zoiets doen:

var beginTag = str.match(/(\s*<[a-z|0-9]+)/gi)? 'true':'false';

[ Voor 4% gewijzigd door crisp op 28-04-2003 00:36 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Neenee dat zie je verkeerd.
Die match geeft de match tussen de haakjes terug hoor :)
Dus '<img ' of iets dergelijk. Niet false of true.
Maar het ligt aan de ? ( aan het vraagteken )

[ Voor 12% gewijzigd door Guillome op 28-04-2003 00:43 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router

Pagina: 1 2 Laatste