Register
XUPWUP.nl

Een nieuwe parser! (Ja alweer)

#0     Posted: 12 October 2011 15:50     Score: 10 Announcements
User avatar
Rick Hendricksen
Administrator
Posts: 1895

Deze parser is volledig recursief, in plaats van een loop met een stack. Deze implementatie is makkelijker secure te krijgen, en dus beter. Het ingewikkelde deel van de parser is ook veel kleiner, vanwege het gebruik van objecten. Het nadeel is wel dat er ongeveer 10 regels nodig zijn per tag, om de properties van elke tag te definieren. Maar, omdat dat in een andere file zit, en geen relatie met elkaar heeft zorgt dit voor goed leesbare code. Wel wat veel :(.


Meer info: http://forum.xupwup.nl/viewtopic/1086/RICK_HELP_HET_FORUM_was_heel_even_STUK

#1     Posted: 13 October 2011 11:57     Score: 10
User avatar
Rick Hendricksen
Administrator
Posts: 1895
Tag api:
  1. class ExampleTag extends Tag{
  2. public $isSelfClosing = false;
  3. //public $fulldata = ''; // this contains the content of the open tag, so for [x a b][/x], fulldata would be "x a b"
  4. public $name = 'x'; // the name of your tag, for bold this would be 'b' (so the tag is [$name])
  5. //public $children = array(); // inherited from Tag, no need to redefine (just like fulldata)
  6. public function toString(){
  7. $s = '<span class="xmple">';
  8. for($i = 0; $i < count($this->children); $i++){
  9. $s .= $this->children[$i]->toString();
  10. }
  11. // instead of this for loop using childrenData() would be possible as well.
  12. return $s."</span>";
  13. }
  14. /*
  15. available functions:
  16. childrenData() // returns the concatenation of the tostring of all children
  17. killIllegalChildren() // kills all children that do not meet the specifications of canContain() (in general tags that don't meet the spec are not opened, but textnodes ignore that. Or you can kill children yourself, by looping over the children array. You can even override killIllegalChildren.
  18. */
  19. /**
  20. * You probably want to make sure 'li' is not allowed
  21. */
  22. public function canContain($tag){
  23. return !$this->isSelfClosing && $tag->name != 'li';
  24. }
  25. }


Dus, als je heel graag zelf een tag wilt maken, zo moet het.

Edited on 13 October 2011 12:02 by Rick Hendricksen.

#2     Posted: 13 October 2011 14:16     Score: 10
User avatar
00T00
Global Mod.
Posts: 920
Rick
Je moet het zo maken dat je de regelnummers niet kunt selecteren of niet mee kunt kopiëren

#3     Posted: 13 October 2011 14:19     Score: 10
User avatar
Kebabbi
Moderator
Posts: 495
wat zorgt er nu voor dat dat ene met nieuwe regels gefixt is? (wat ik je gister zei)

#4     Posted: 13 October 2011 16:35     Score: 10
User avatar
Rick Hendricksen
Administrator
Posts: 1895
Quoting: @3
wat zorgt er nu voor dat dat ene met nieuwe regels gefixt is? (wat ik je gister zei)
Nieuwe css.


You must log in to post a reply
© Rick Hendricksen
Page generated in 0.011 seconds.