<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>book-content/en/12-recipes/1-simple-blog.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/12-recipes/2-blog-slice.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/12-recipes/toc.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/14-deployment/1-passenger.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/14-deployment/2-nginx.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/14-deployment/3-jruby.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/14-deployment/4-bundle.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/14-deployment/toc.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/15-migration-to-rails3/1-merb-and-rails-merge.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/16-appendix/1-hints-tips.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/16-appendix/2-slices.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/16-appendix/3-gems.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/16-appendix/toc.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/4-interacting-with-the-database-active_record/1-setting-up.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/4-interacting-with-the-database-active_record/2-queries.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/5-interacting-with-the-database-sequel/1-setting-up.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/5-interacting-with-the-database-sequel/2-database-migrations.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/5-interacting-with-the-database-sequel/3-data-retrieval-and-manipulation.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/5-interacting-with-the-database-sequel/4-model-associations.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/5-interacting-with-the-database-sequel/5-model-validation.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/5-interacting-with-the-database-sequel/6-sequel-plugins.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/5-interacting-with-the-database-sequel/toc.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/8-testing-your-application/1-why.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/8-testing-your-application/2-models.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/8-testing-your-application/3-requests.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/8-testing-your-application/4-cucumber.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/8-testing-your-application/toc.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/9-merb-more/1-authentication.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/9-merb-more/2-mailer.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/9-merb-more/3-caching.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/9-merb-more/4-exceptions.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/9-merb-more/5-slices.markdown</filename>
    </added>
    <added>
      <filename>book-content/en/9-merb-more/toc.markdown</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,9 @@
 .DS_Store
 log/*
 nbproject
+!bin/thor
+!bin/common.rb
+bin/*
 gems/gems/*
 gems/specifications/*
 src/*</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -1,21 +1,70 @@
 # Voorwoord
 
-Terug in de tijd, toen er nog geen Merb stack was, geen locked API, geen georganizeerde documentation en de code base regelmatig wijzigde besloot [Matthew Ford](http://github.com/deimos1986) te werken aan een open source book met een eenvoudig doel: moedige Rubyists te helpen die wilden leven &quot;on the edge&quot; en die besloten om Merb, DataMapper en RSpec een kans te geven.
+Vroeger toen er nog geen Merb stack was, geen locked API, 
+geen georganizeerde documentatie en de code base regelmatig wijzigde, 
+besloot [Matthew Ford][] aan een [open source][] boek te werken 
+met een eenvoudig doel: 
+moedige Rubyists te helpen die &quot;on the edge&quot;  wilden leven 
+en die besloten om Merb, [DataMapper][] en [RSpec][] een kans te geven.
 
-Sindsdien, is Merb heel wat volwassener geworden.  Starten met Merb is heel wat makkelijker geworden en Merb besloot om een **opinionated** versie te brengen van de stack Merb, DataMapper en RSpec! 
+Sindsdien, is Merb heel wat volwassener.  Starten met Merb is veel eenvoudiger geworden 
+en Merb besloot om een zogenaamde **opinionated** versie te brengen van de stack 
+gebruik makend van Merb, DataMapper en RSpec! 
 
-Als een vroege Merb developer, genoot ik er van gebruik te kunnen maken van Matt's boek en heb ik zelfs bijgedragen tot de vroege versie van dit boek. Sindsdien maakte ik deel uit van het Merb team en samen met de rest van het team, concentreerde ik me op de grote 1.0 release die we succesvol brachten in twee stappen, de eerste Release Candidate gedurende [MerbCamp 2008](http://merbcamp.com) en de finale 1.0 gedurende [RubyConf 2008](http://rubyconf.org).
+Als een vroege Merb developer, 
+genoot ik er echt van gebruik te kunnen maken van Matt's boek 
+en heb ik zelfs bijgedragen tot de vroege versie van dit boek. 
+Sindsdien maakte ik deel uit van het Merb team en 
+samen met de rest van het team, concentreerde ik me op de grote 1.0 release.
+Die brachten we succesvol uit in twee stappen :  
+de eerste Release Candidate gedurende [MerbCamp 2008][] 
+en de finale 1.0 gedurende [RubyConf 2008][]
 
-Een knap framework hebben is fantastisch, maar zoals Jason Seifer van [RailsEnvy.com](http://railsenvy.com) me vertelde nadat  1.0 was uitgebracht:
+Een goed framework hebben is fantastisch, 
+maar zoals Jason Seifer van [RailsEnvy.com][] me vertelde nadat 1.0 was uitgebracht:
 
-&gt; Merb heeft ongelofelijke code documentatie, de code is zo makkelijk te lezen, maar de gebruiksdocumentatie ontbreekt nog steeds.
+&gt; Merb heeft een ongelofelijke code documentatie, de code is zo makkelijk te lezen, 
+&gt; maar de gebruiksdocumentatie ontbreekt nog steeds.
 
-Jason had gelijk, onze gebruiksdocumentatie was niet zo fantastisch. Natuurlijk hebben we de [wiki](http://wiki.merbivore.com) en een aantal boeken beschikbaar, maar ik moet zeggen dat - lettend op andere frameworks zoals [Django](http://www.djangobook.com/) - het hele team wist dat er iets moest gebeuren.
+Jason had gelijk, onze gebruiksdocumentatie was niet zo fantastisch. 
+Natuurlijk hebben we de [Merb wiki][] en een aantal boeken beschikbaar, 
+maar ik moet zeggen - gelet op andere frameworks zoals [Django][] - 
+dat het hele team wist dat er iets moest gebeuren.
 
-Ford's pogingen werden vroeg opgemerkt en hij werd gevraagd een boek te schrijven [Merb book for Apress](http://www.apress.com/book/view/9781430218234). Je kan je allicht wel voorstellen, dat het moeilijk werd voor Matt een boek te schrijven voor een uitgever in combinatie met, een voltijdse job, bijdragen aan verschillende Open Source projecten, bij te blijven met Merb en er uiteindelijk voor te zorgen dat het open source book dat hij een tijd terug maakte up to date bleef. Bovendien, wijzigden een aantal dingen voor 1.0 en een groot deel van de bestaande inhoud vereiste een volledig herschrijven.
+Ford's inspanningen werden vroeg opgemerkt 
+en hij werd gevraagd een boek te schrijven [Beginning Merb][] voor [Apress][].
+Je kan je allicht wel voorstellen, 
+dat het moeilijk werd voor Matt een boek te schrijven voor een uitgever, 
+in combinatie met een voltijdse job, bijdragen aan verschillende Open Source projecten, 
+bij te blijven met Merb 
+en er uiteindelijk voor te zorgen dat het open source book dat hij een tijd terug maakte 
+up to date bleef. 
+Bovendien, wijzigden een aantal dingen voor 1.0 
+en een groot deel van de bestaande inhoud vereiste een volledig herschrijven.
 
-Daarom besloot het Merb team dat het tijd was om mee te werken en om de gemeenschap te betrekken bij een gecentralizeerd, gebruikers georienteerd boek.
+Daarom besloot het Merb team dat het tijd was om er bij betrokken te worden 
+en zich samen met de Merb gemeenschap te concentreren op een gecentralizeerd, gebruikers-geori&#235;nteerd boek.
 
-Ik ben echt blij dat het Merb team besloot verantwoordelijkheid op te nemen voor dit boek en dat we er zullen voor zorgen dat het goed georganizeerd blijft, up to date en relevant. Nochthans kan dit boek, net zoals Merb, niet groeien en evolueren zonder de hulp van de gemeenschap. Dus, a.u.b., stuur ons correcties, nieuwe voorbeelden, nieuwe hoofdstukken zodat dit boek de gemeenschap kan helpen als geheel.
+Ik ben echt blij dat het Merb team besloot 
+verantwoordelijkheid op te nemen voor dit boek 
+en dat we er zullen voor zorgen dat het goed georganizeerd blijft, up to date en relevant. 
+Nochthans kan dit boek, net zoals Merb, 
+niet groeien en evolueren zonder de hulp van de gemeenschap. 
+Dus, a.u.b., stuur ons correcties, nieuwe voorbeelden, nieuwe hoofdstukken, 
+zodat dit boek de gemeenschap kan helpen in zijn geheel.
 
 [Matt Aimonetti](http://merbist.com), Merb Core team member
+
+&lt;!-- Links --&gt;
+[Apress]:           http://www.apress.com/
+[Beginning Merb]:   http://www.apress.com/book/view/9781430218234
+[DataMapper]:       http://datamapper.org/doku.php
+[Django]:           http://www.djangobook.com/
+[Matt Aimonetti]:   http://merbist.com
+[Matthew Ford]:     http://github.com/deimos1986
+[MerbCamp 2008]:    http://merbcamp.com
+[Open Source]:      http://en.wikipedia.org/wiki/Open_Source
+[RailsEnvy.com]:    http://railsenvy.com
+[RSpec]:            http://rspec.info
+[RubyConf 2008]:    http://rubyconf.org
+[Merb wiki]:        http://wiki.merbivore.com
\ No newline at end of file</diff>
      <filename>book-content/nl/0-front-matter/1-preface.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,15 +1,20 @@
 # Mensen die hebben bijgedragen
 
-Zonder de hulp van volgende mensen zou dit boek niet mogelijk geweest zijn. Dank jullie allemaal!
+Zonder de hulp van volgende mensen zou dit boek niet mogelijk geweest zijn. 
+Dank jullie allemaal!
 
 **In alphabetische volgorde:**
 
-* [Matt Aimonetti](http://merbist.com)
-* [Fabio Akita](http://akitaonrails.com)
-* [Dale Campbell](http://corrupt.save-state.net/)
-* [Matthew Ford](http://github.com/deimos1986)
-* [Mathieu Fosse](http://blog.kawooa.org)
-* [Markus Prinz](http://blog.nuclearsquid.com/)
-* [Yehuda Katz](http://yehudakatz.com)
-* [Makoto Kuwata](http://www.kuwata-lab.com/)
-* [Foy Savas](http://foysavas.com/)
\ No newline at end of file
+* [Matt     Aimonetti   ](http://merbist.com)
+* [Fabio    Akita       ](http://akitaonrails.com)
+* [Dale     Campbell    ](http://corrupt.save-state.net/)
+* [Matthew  Ford        ](http://github.com/deimos1986)
+* [Mathieu  Fosse       ](http://blog.kawooa.org)
+* [Yehuda   Katz        ](http://yehudakatz.com)
+* [Makoto   Kuwata      ](http://www.kuwata-lab.com/)
+* [Rich     Morin       ](http://cfcl.com/rdm)
+* [Carlo		Pecchia			](http://carlopecchia.eu)
+* [Markus   Prinz       ](http://blog.nuclearsquid.com/)
+* [Foy      Savas       ](http://foysavas.com/)
+* [Kurt     Schrader    ](http://kurt.karmalab.org/)
+* [Arthur   Zapparoli   ](http://arthurgeek.net/)
\ No newline at end of file</diff>
      <filename>book-content/nl/0-front-matter/2-contributors.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 # front-matter
 
- &lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/front-matter/preface'&gt;Voorwoord&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/en/front-matter/foreword'&gt;Voorwoord (Foreword)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/front-matter/preface'&gt;Voorwoord (Preface)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 
 &lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/front-matter/contributors'&gt;Mensen die hebben bijgedragen&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; 
\ No newline at end of file</diff>
      <filename>book-content/nl/0-front-matter/toc.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,34 +1,56 @@
 # Ruby
 
-* This will become a table of contents (this text will be scraped).
-{:toc}
-
 ![Ruby](/images/ruby-header.gif){: .no-border}
 
-**Reference website:** [http://ruby-lang.org](http://ruby-lang.org){: .reference}
+**Reference website:** 
+[http://ruby-lang.org](http://ruby-lang.org){: .reference}
 
-&gt; Coderen in Ruby maakt me gelukkig omdat het een van de kortste paden is tussen mijn hersenen en een computer. Als ik aan iets denk, kan ik het bondig uitdrukken en meestal ook op een vrij elegante wijze in Ruby zonder de vreemde kronkels die nodig zijn in de meeste andere talen.
-&gt; - [Dave Thomas, auteur van &quot;Programming Ruby&quot;](http://pragdave.pragprog.com/){: .quote-author}
+* This will become a table of contents (this text will be scraped).
+{:toc}
+
+&gt; Coderen in Ruby maakt me gelukkig omdat het een van de kortste paden is 
+&gt; tussen mijn hersenen en een computer. 
+&gt; Als ik aan iets denk, kan ik het bondig uitdrukken 
+&gt; en meestal ook op een vrij elegante wijze in Ruby 
+&gt; zonder de vreemde kronkels 
+&gt; die nodig zijn in de meeste andere talen.
+&gt; - [Dave Thomas][]{: .quote-author}, auteur van [Programming Ruby][]
 {: cite=http://www.infoq.com/interviews/ruby-rails-dave-thomas .lead-quote}
 
-Het zou misdadig zijn te over over het Merb framework te beginnen spreken zonder het eerst te hebben over de echte reden waarom Merb zo flexibel, krachtig, en snel is: **Ruby**.
+Het zou misdadig zijn te over over het Merb framework te beginnen spreken 
+zonder het eerst te hebben over de echte reden waarom Merb 
+zo flexibel, krachtig, en snel is: **Ruby**.
 
 ## Oorsprong ##{: #origin}
 ![Yukihiro Matsumoto](/images/Yukihiro_Matsumoto.jpg){: .left}
-Ruby is een [Open Source](http://en.wikipedia.org/wiki/Open_Source), [dynamische](http://en.wikipedia.org/wiki/Dynamic), [reflectieve](http://en.wikipedia.org/wiki/Reflection_%28computer_science%29), algemeen-doel, [object-georienteerde](http://en.wikipedia.org/wiki/Object-oriented_programming) [programmeertaal](http://en.wikipedia.org/wiki/Programming_language) geschreven midden de jaren 90 door de japanse [software architect](http://en.wikipedia.org/wiki/Software_architect) [Yukihiro &quot;Matz&quot; Matsumoto-san ( &#12414;&#12388;&#12418;&#12392;&#12422;&#12365;&#12402;&#12429;)](http://en.wikipedia.org/wiki/Yukihiro_Matsumoto).
+Ruby is een [Open Source][], [dynamische][],[reflectieve][], algemeen-doel, 
+[object-ge&#246;rienteerde][] [programmeertaal][] 
+geschreven midden de jaren 90 door de japanse [software architect][] [Yukihiro &quot;Matz&quot; Matsumoto-san ( &#12414;&#12388;&#12418;&#12392;&#12422;&#12365;&#12402;&#12429;)][].
 
-Ruby focust op eenvoud en productiviteit. Ruby heeft een elegante syntax die natuurlijk leest en eenvoudig is om te schrijven.
+Ruby focust op eenvoud en productiviteit. 
+Ruby heeft een elegante syntax die natuurlijk leest en eenvoudig is om te schrijven.
 
-Matz ontleende idee&#235;n en uitdrukkingen van enkele van zijn favoriete programmeertalen ([Perl](http://en.wikipedia.org/wiki/Perl), [Smalltalk](http://en.wikipedia.org/wiki/Smalltalk), [Eiffel](http://en.wikipedia.org/wiki/Eiffel_%28programming_language%29), [Ada](http://en.wikipedia.org/wiki/Ada_%28programming_language%29), en [Lisp](http://en.wikipedia.org/wiki/Lisp_%28programming_language%29)) tot een nieuwe taal die [functionele programmatie](http://en.wikipedia.org/wiki/Functional_programming) balanceert met [imperatieve programmatie](http://en.wikipedia.org/wiki/Imperative_programming).
+Matz ontleende idee&#235;n en uitdrukkingen van enkele van zijn favoriete programmeertalen ([Perl][], [Smalltalk][], [Eiffel](http://en.wikipedia.org/wiki/Eiffel_%28programming_language%29), [Ada][], en [Lisp][]) 
+om een nieuwe taal te vormen 
+die [functionele programmatie][] balanceert met [imperatieve programmatie][].
 
-Het resultaat is een aantrekkelijke taal die heel natuurlijk aanvoelt. In de Ruby gemeenschap verwijzen we vaak naar de term POLS (Principle of Least Surprise). Het concept achter dit principe is heel eenvoudig: als je een minimum van Ruby kent, ben je niet verrast door de manier waarop de taal zich gedraagt.
+Het resultaat is een aantrekkelijke taal die heel natuurlijk aanvoelt. 
+In de Ruby gemeenschap 
+verwijzen we vaak naar de term POLS (Principle of Least Surprise). 
+Het concept achter dit principe is heel eenvoudig: 
+als je een minimum van Ruby kent, 
+ben je niet verrast door de manier waarop de taal zich gedraagt.
 
 ## Adoptie ##{: #adoption}
-Volgens de [TIOBE index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html), zit Ruby in de top 10 van programmeertalen die wereldwijd wordt gebruikt. Een groot deel van de groei is toe te schrijven aan de populariteit van de software die is geschreven in Ruby, in het bijzonder het [Ruby on Rails web framework](http://rubyonrails.org).
+Volgens de [TIOBE index][], 
+zit Ruby in de top 10 van programmeertalen die wereldwijd wordt gebruikt. 
+Een groot deel van de groei is toe te schrijven aan de populariteit van software 
+die is geschreven in Ruby, in het bijzonder het [Ruby on Rails web framework][].
 
 ## Sleutelelementen van de taal ##{: #key-elements}
 
-&gt; Ik wou een scripting-taal die krachtiger was dan Perl, en meer dan de object-geori&#235;nteerde Python.
+&gt; Ik wou een scripting-taal die krachtiger was dan Perl, 
+&gt; en meer object-geori&#235;nteerd dan Python.
 &gt; - Matz
 {: cite=http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html}
 
@@ -36,17 +58,17 @@ Volgens de [TIOBE index](http://www.tiobe.com/index.php/content/paperinfo/tpci/i
 * Alles is uitbreidbaar en kan gewijzigd worden
 * Hoge code leesbaarheid
 
-Voor meer informatie over de taal Ruby, bekijk de [Officiele Ruby programmeertaal website](http://www.ruby-lang.org/en/about).
+Voor meer informatie over de taal Ruby, 
+bekijk de [Offici&#235;le Ruby programmeertaal website][].
 
 ## Code voorbeelden ##{: #code-examples}
 
-**Print de string &quot;Hello world&quot; 10 keer:**
+**Print de string &quot;Hello world&quot; 5 keer:**
 
-    10.times do
+    5.times do
       print &quot;Hello world!&quot;
     end
-    # =&gt; &quot;Hello world!Hello world!Hello world!Hello world!Hello world!Hello, world!
-    Hello world!Hello world!Hello world!Hello world!&quot;
+    # =&gt; &quot;Hello world!Hello world!Hello world!Hello world!Hello world!&quot;
 {:lang=ruby html_use_syntax=true}
 
 **Conditioneel statement:**
@@ -56,9 +78,9 @@ Voor meer informatie over de taal Ruby, bekijk de [Officiele Ruby programmeertaa
 
 overeenkomstig met:
 
-		if DateTime.now &gt; DateTime.parse(&quot;2008-12-01&quot;)
-		  access_allowed = true 
-		end
+    if DateTime.now &gt; DateTime.parse(&quot;2008-12-01&quot;)
+      access_allowed = true
+    end
 {:lang=ruby html_use_syntax=true}
 
 **Ternary operator:**
@@ -114,10 +136,38 @@ overeenkomstig met:
 
 ## Merb en Ruby ##{: #merb-and-ruby}
 
-Merb probeert om zo dicht mogelijk bij de Ruby taal zelf te blijven. Daarom is het belangrijk te begrijpen wat wordt verstaan al de &quot;Ruby Way&quot;.
+Merb probeert om zo dicht mogelijk bij de Ruby taal zelf te blijven. 
+Daarom is het belangrijk te begrijpen wat wordt verstaan als de &quot;Ruby Way&quot;.
 
 Gedurende RubyConf 2008, maakte Matz volgende opmerking over Merb:
 
-&gt; Merb heeft een mooie toekomst voor de mensen die niet tevreden zijn met de vaste manieren van Rails.  Ik denk dat Merb gebruikers meer vrijheid zal geven in een Ruby-ish manier van programmeren
-&gt; - [Matz, auteur van de Ruby programming language](http://ruby-lang.org/){: .quote-author}
+&gt; Merb heeft een mooie toekomst voor de mensen die niet tevreden zijn 
+&gt; met de vaste wegen in Rails.  
+&gt; Ik denk dat Merb gebruikers meer vrijheid zal geven 
+&gt; in een Ruby-achige manier van programmeren
+&gt; - [Matz,][]{: .quote-author} auteur van de [Ruby programming language][]
 {: cite=http://merbist.com/2008/11/09/merb-1-0-released/}
+
+
+&lt;!-- Links --&gt;
+[Ada]:                  http://en.wikipedia.org/wiki/Ada_%28programming_language%29)
+[Dave Thomas]:          http://pragdave.pragprog.com/
+[dynamische]:           http://en.wikipedia.org/wiki/Dynamic
+[Eiffel]:               http://en.wikipedia.org/wiki/Eiffel_%28programming_language%29
+[functionele programmatie]: http://en.wikipedia.org/wiki/Functional_programming
+[imperatieve programmatie]: http://en.wikipedia.org/wiki/Imperative_programming
+[Lisp]:                 http://en.wikipedia.org/wiki/Lisp_%28programming_language%29
+[Matz]:                 http://en.wikipedia.org/wiki/Yukihiro_Matsumoto
+[object-ge&#246;rienteerde]: http://en.wikipedia.org/wiki/Object-oriented_programming
+[Offici&#235;le Ruby programmeertaal website]: http://www.ruby-lang.org/en/about
+[Open Source]:          http://en.wikipedia.org/wiki/Open_Source
+[Perl]:                 http://en.wikipedia.org/wiki/Perl)
+[programmeertaal]:      http://en.wikipedia.org/wiki/Programming_language
+[Programming Ruby]:     http://pragprog.com/titles/ruby/programming-ruby
+[reflectieve]:          http://en.wikipedia.org/wiki/Reflection_%28computer_science%29
+[Ruby programming language]: http://ruby-lang.org/
+[Ruby on Rails web framework]: http://rubyonrails.org
+[Smalltalk]:            http://en.wikipedia.org/wiki/Smalltalk
+[software architect]:   http://en.wikipedia.org/wiki/Software_architect
+[TIOBE index]:          http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
+[Yukihiro &quot;Matz&quot; Matsumoto-san ( &#12414;&#12388;&#12418;&#12392;&#12422;&#12365;&#12402;&#12429;)]:  http://en.wikipedia.org/wiki/Yukihiro_Matsumoto</diff>
      <filename>book-content/nl/1-introduction/1-ruby.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,29 @@
 ## Merb
 
-Merb is het geesteskind van [Ezra Zygmuntowicz](http://brainspl.at/).
-De allereerste 'publieke' versie van Merb verscheen als een pastie op 21 september 2006.
-Je kan deze pastie [hier](http://pastie.org/14416) of [hier](http://gist.github.com/33252)
-(mirror) teruggvinden. Tegenwoordig is de lead developer van het Merb project [Yehuda Katz](http://yehudakatz.com/).
+Merb is het geesteskind van [Ezra Zygmuntowicz][].
+De allereerste 'publieke' versie van Merb verscheen als een pastie 
+op 21 september 2006[^first-pastie].
+Je kan deze pastie [hier](http://pastie.org/14416) 
+of [hier](http://gist.github.com/33252)(mirror) teruggvinden. 
+Momenteel is de lead developer van het Merb project [Yehuda Katz][].
 
-Vanaf versie 0.9 van het framework, werd alle essenti&#235;le functionaliteit in
-'merb-core' gestopt, waarbij de overblijvende extra functionaliteit verhuist werd naar andere 
-componenten (zoals merb-haml en merb-helpers). Versie 1.0 werd aangekondigd op
-[RubyConf](http://rubyconf.org/) op 7 november 2008.
+Vanaf versie 0.9 van het framework, 
+werd alle essenti&#235;le functionaliteit in 'merb-core' gestopt, 
+waarbij de overblijvende extra functionaliteit verhuist werd naar andere componenten 
+(zoals merb-haml en merb-helpers). 
+Versie 1.0 werd aangekondigd op [RubyConf](http://rubyconf.org/) op 7 november 2008.
 
-De hoofd source code repository staat op [Github](http://github.com/wycats/merb/).
\ No newline at end of file
+Merb wordt onderhouden gebruik makend van [Git][], a gedistribueerd versie controle system.
+De hoofd source code [repository][] staat op [Github][].
+
+
+&lt;!-- Links --&gt;
+[Ezra Zygmuntowicz]:  http://brainspl.at/
+[Git]:                http://git.or.cz/
+[Github]:             http://github.com/
+[repository]:         http://github.com/wycats/merb/
+[RubyConf]:           http://rubyconf.org/
+[Yehuda Katz]:        http://yehudakatz.com/
+
+&lt;!-- References --&gt;
+[^first-pastie]:      http://pastie.org/14416
\ No newline at end of file</diff>
      <filename>book-content/nl/1-introduction/2-merb.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -8,23 +8,28 @@
 
 ## Introductie
 
-[RSpec][] is een Behavior Driven Development framework voor Ruby.
-It voorziet twee frameworks voor het schrijven en uitvoeren van voorbeelden van hoe je Ruby 
+[RSpec][] is een Behavior Driven Development[^BDD] (BDD) framework voor Ruby.
+Het voorziet twee frameworks voor het schrijven en uitvoeren van voorbeelden van hoe je Ruby 
 applicatie zich zou moeten gedragen[^rspec]:
 
- * een scenario framework[^cucumber] voor het beschrijven van behavior op  applicatie niveau
- * a code voorbeeld framework voor het beschrijven van behavior op object niveau
+ * een scenario framework[^cucumber] voor het beschrijven van gedrag (behavior) 
+   op  applicatieniveau
+ * a code voorbeeld framework voor het beschrijven van gedrag op object niveau
  
-[RSpec][] werd be&#239;nvloed door [Dan North][] en zijn Java-based BDD test framework [JBehave][].
+[RSpec][] werd be&#239;nvloed door [Dan North][] 
+en zijn Java-based BDD test framework [JBehave][].
 
 ## Historiek
 
-Aanvankelijk was BDD gewoon een discussie tussen [Aslak Helles&#248;y][] and [Dan North][]
-in het ThoughtWorks kantoor in Londen . 
-[Dave Astels][] voegde zich bij in het gesprek met een blogpost waarin hij stelde dat hij dacht 
-dat deze idee&#235;n gemakkelijk konden worden ge&#239;mplementeerd in [Smalltalk][] of [Ruby][]. 
-[Steven Baker][] sprong bij met een eerste uitvoering, en bracht 
-RSpec 0.1 uit. Later in 2006, werd het onderhoud doorgegeven aan [David Chelimsky][].[^rspec-history]
+Aanvankelijk was BDD gewoon een discussie tussen [Aslak Helles&#248;y][] 
+en [Dan North][] in het [ThoughtWorks][] kantoor in Londen . 
+[Dave Astels][] voegde zich bij het gesprek met een blogpost 
+waarin hij voorstelde dat deze idee&#235;n eenvoudig konden worden ge&#239;mplementeerd 
+in [Smalltalk][] of [Ruby][]. 
+[Steven Baker][] sprong bij met een eerste implementatie, 
+uitgebracht als RSpec 0.1. 
+Later in 2006, 
+werd het onderhoud doorgegeven aan [David Chelimsky][].[^rspec-history]
 
 
 ## Behavior Driven Development 
@@ -34,18 +39,22 @@ aspecten van de [Acceptance Test Driven Planning][], [Domain Driven Design][] en
 [Test Driven Development][].
 
 &gt; Behaviour-driven development is een &#8220;van-buiten-naar-binnen&#8221; methodologie.
-&gt; Het start van buiten door identificatie van business resultaten, en verdiept zich vervolgens in de functie set die worden bereikt door deze resultaten.
-&gt; Elke functie wordt vastgelegd als een &quot;verhaal&quot;, waarin zowel de reikwijdte (scope) van de functie als acceptatie criteria worden beschreven.
+&gt; Het start van buiten door identificatie van business resultaten, 
+&gt; en verdiept zich vervolgens in de aspecten die worden bereikt door deze resultaten.
+&gt; Elk aspect wordt vastgelegd als een &quot;verhaal&quot;, 
+&gt; waarin zowel de reikwijdte (scope)  worden beschreven samen met de acceptatie criteria.
 &gt; - [Dan North][]{: .quote-author}
 {: cite=http://dannorth.net/whats-in-a-story}
 
 Door zich te concentreren op het te verwachten gedrag in plaats van de technische details, 
-krijgen developers een betere communicatie met de project eigenaar en andere belanghebbenden.
+verkrijgen developers een betere communicatie 
+met de project eigenaar en andere belanghebbenden.
 
 ## Implementatie
 
-RSpec is een Domain Specific Language voor de beschrijving van het te verwachten gedrag 
-van een systeem met uitvoerbare voorbeelden.
+RSpec is een [Domain-Specific Language][] (DSL) 
+voor de beschrijving van het verwachte gedrag van een systeem 
+aan de hand van uitvoerbare voorbeelden.
 
 Hier is een heel eenvoudig RSpec voorbeeld.
 
@@ -58,25 +67,30 @@ Hier is een heel eenvoudig RSpec voorbeeld.
 {:lang=ruby html_use_syntax=true}
 
 
+[&lt;!-- References --&gt;
 [^rspec]:       [RSpec website](http://rspec.info)
 [^cucumber]:    [Cucumber wiki](http://github.com/aslakhellesoy/cucumber/wikis)
 [^BDD]:         [BDD door Dan North](http://dannorth.net/tags/agile/bdd)
-[^rspec-history]:  [Nick Sieger: BDD met RSpec](http://blog.nicksieger.com/articles/2007/11/04/rubyconf-day-3-behaviour-driven-development-with-rspec)
+[^rspec-history]:  [Nick Sieger: BDD with RSpec](http://blog.nicksieger.com/articles/2007/11/04/rubyconf-day-3-behaviour-driven-development-with-rspec)
 
+&lt;!-- Links --&gt;
 [Acceptance Test Driven Planning]: http://testing.thoughtworks.com/node/89
-[Agile]: http://en.wikipedia.org/wiki/Agile_software_development
-[Aslak Helles&#248;y]: http://blog.aslakhellesoy.com/
-[Dan North]: http://dannorth.net
-[Dave Astels]: http://blog.daveastels.com/
-[David Chelimsky]: http://blog.davidchelimsky.net
+[Agile]:                http://en.wikipedia.org/wiki/Agile_software_development
+[Aslak Helles&#248;y]:       http://blog.aslakhellesoy.com/
+[Dan North]:            http://dannorth.net
+[Dave Astels]:          http://blog.daveastels.com/
+[David Chelimsky]:      http://blog.davidchelimsky.net
 [Domain Driven Design]: http://domaindrivendesign.org/
-[JBehave]: http://jbehave.org/
-[RSpec]: http://rspec.info
-[Ruby]: http://ruby-lang.org
-[Smalltalk]: http://www.smalltalk.org
-[Steven Baker]: http://blog.lavalamp.ca
+[Domain-Specific Language]: http://en.wikipedia.org/wiki/Domain_Specific_Language
+[JBehave]:              http://jbehave.org/
+[RSpec]:                http://rspec.info
+[Ruby]:                 http://ruby-lang.org
+[Smalltalk]:            http://www.smalltalk.org
+[Steven Baker]:         http://blog.lavalamp.ca
 [Test Driven Development]: http://en.wikipedia.org/wiki/Test-driven_development
-[ThoughtWorks]: http://www.thoughtworks.com/
+[ThoughtWorks]:         http://www.thoughtworks.com/
 
+&lt;!-- Abbreviations --&gt;
+*[BDD]: Behavior Driven Development
+*[DSL]: Domain Specific Language
 *[TDD]: Test Driven Development
-*[BDD]: Behavior Driven Development
\ No newline at end of file</diff>
      <filename>book-content/nl/1-introduction/4-rspec.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,10 @@
-# introduction
+# introductie
+
+ &lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/en/introduction/ruby'&gt;Ruby&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/en/introduction/ruby#origin'&gt;Oorsprong&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/en/introduction/ruby#adoption'&gt;Adoptie&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/en/introduction/ruby#key-elements'&gt;Sleutelelementen van de taal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/en/introduction/ruby#code-examples'&gt;Code voorbeelden&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/en/introduction/ruby#merb-and-ruby'&gt;Merb en Ruby&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
+
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/en/introduction/merb'&gt;Merb&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
+
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/en/introduction/datamapper'&gt;DataMapper&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
+
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/en/introduction/rspec'&gt;RSpec test framework&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/en/introduction/rspec#introduction'&gt;Introductie&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/en/introduction/rspec#history'&gt;Historiek&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/en/introduction/rspec#behavior_driven_development'&gt;Behavior Driven Development&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/en/introduction/rspec#implementation'&gt;Implementatie&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;# introduction
 
- &lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/introduction/ruby'&gt;Ruby&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/introduction/ruby#origin'&gt;Oorsprong&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/introduction/ruby#adoption'&gt;Adoptie&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/introduction/ruby#key-elements'&gt;Sleutelelementen van de taal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/introduction/ruby#code-examples'&gt;Code voorbeelden&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/introduction/ruby#merb-and-ruby'&gt;Merb en Ruby&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; 
\ No newline at end of file</diff>
      <filename>book-content/nl/1-introduction/toc.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,19 +1,32 @@
-# Aan de slag
-Om het framework te gebruiken moeten we eerst Merb installeren. Maar, voor je Merb kan installeren moet je een C compiler, Ruby en [RubyGems](http://www.rubygems.org/) installeren en een database (indien je je modellen wil persisteren).
+# Installatie instructies
+
+* This will become a table of contents (this text will be scraped).
+{:toc}
+
+Om het framework te gebruiken moeten we eerst Merb installeren. 
+Maar, voor je Merb kan installeren 
+moet je een C compiler, Ruby en [RubyGems][] installeren 
+en een database (indien je jouw modellen wil persisteren).
 
 ## OS X
 
 ### Vereisten
-Je zal XCode (aka Developer Tools) moeten installeren van de Mac OS X DVD of downloaden van de [Apple developer website](http://developer.apple.com/technology/xcode.html).
+Je zal XCode (aka Developer Tools) moeten installeren van de Mac OS X DVD 
+of downloaden van de [Apple developer website][].
 
 ### Ruby &amp; RubyGems
-Heb je OS X 10.5 (Leopard), dan heb je hoogstwaarschijnlijk ook reeds een installatie van Ruby.
+Heb je OS X 10.5 (Leopard), 
+dan heb je hoogstwaarschijnlijk ook reeds een installatie van Ruby.
 
 ### Merb
     $ sudo gem install merb
 
 
 ## Linux
+Volgende instructies zijn voor Debian-gebaseerde distributies ([Ubuntu][], bijvoorbeeld),
+die de &lt;tt&gt;apt-get&lt;/tt&gt; package manager gebruikt.
+Indien je een andere distributie gebruikt, gebruik dan de package manager van die distributie
+(bvb. [RedHat][] systemen gebruiken &lt;tt&gt;yum&lt;/tt&gt; als package manager)
 
 ### Vereisten
 
@@ -38,3 +51,41 @@ Heb je OS X 10.5 (Leopard), dan heb je hoogstwaarschijnlijk ook reeds een instal
 ### Merb
 
     $ sudo gem install merb
+
+## Windows
+Windows gebruikers hebben een antal opties om Ruby en RubyGems te installeren.
+een mogelijkheid is de Ruby binaries te downloden, ze te installeren, en daarna RubyGems te installeren.
+
+Een alternatief is de [One-Click Ruby Installer][] te gebruiken
+die (samen met een aantal andere zaken) wordt gepackaged met RubyGems.
+Indien je de One-Click Installer gebruikt,
+vink dan zeker de &quot;Enable RubyGems&quot; checkbox aan in de installatie wizard.
+
+Standaard, zal het Ruby in de &lt;tt&gt;C:\Ruby&lt;/tt&gt; directory installeren.
+Eend geinstalleerd, doe je het volgende:
+
+Start --&amp;gt; Programs --&amp;gt; Ruby-&amp;lt;version&amp;gt;
+--&amp;gt; RubyGems --&amp;gt; RubyGems Package Manager
+
+Dit opent een commando prompt in de &lt;tt&gt;C:\Ruby&lt;/tt&gt; directory
+en toont wat gebruiksinformatie.
+Hierna is het enkel een kwestie om Merb te installeren:
+
+    C:\Ruby&gt; gem install merb
+
+Dit commando loopt gedurende een aantal minuten,
+omdat het de gem cache moet updaten, alle Merb-gerelateerde gems moet ophalen,
+en deze dan installeren.
+
+_Nota_: Indien je de SQLite database wenst te gebruiken (dit is de standaard instelling),
+mote je deze apart downloaden en installeren.
+Meer informatie kan worden gvonden op de [SQLite][] site.
+
+
+&lt;!-- Links --&gt;
+[Apple developer website]:  http://developer.apple.com/technology/xcode.html
+[One-Click Ruby Installer]: http://rubyinstaller.rubyforge.org/wiki/wiki.pl
+[RedHat]:                   http://www.redhat.com/
+[RubyGems]:                 http://www.rubygems.org/
+[SQLite]:                   http://www.sqlite.org/
+[Ubuntu]:                   http://www.ubuntu.com/</diff>
      <filename>book-content/nl/2-getting-started/1-install-instructions.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,61 +1,95 @@
 # Genereer een applicatie
-Merb komt met een generator (&lt;tt&gt;merb-gen&lt;/tt&gt;) voor het aanmaken van Merb applicaties.
-De generator kan verschillende types van Merb applicaties genereren; om de beschikbare generator opties te zien, typ je
 
-    $ merb-gen -h
+* This will become a table of contents (this text will be scraped).
+{:toc}
 
-Laat ons het nu even houden op de verschillende types van Merb applicaties die kunnen gegenereerd worden.
+Merb komt met een generator (``merb-gen``) 
+voor het aanmaken van Merb applicaties.
+De generator kan verschillende types van Merb applicaties genereren; 
+om de beschikbare generator opties te zien, typ je
 
-## Types
-Merb kan gebruikt worden voor alles varierend van zeer kleine, snelle, enkel-bestand applicaties tot grote, complexe web-diensten. 
-Verschillende applicatie-structuren kunnen worden gegenereerd, afhankelijk van de noden van de developer.
+    $ merb-gen -H
+{:lang=shell html_use_syntax=true}
+
+Laat ons het nu even houden bij de verschillende types van Merb applicaties 
+die kunnen gegenereerd worden.
 
-De verschillende applicatie-structuren die je kan genereren zijn &lt;tt&gt;app&lt;/tt&gt;, &lt;tt&gt;core&lt;/tt&gt;, &lt;tt&gt;flat&lt;/tt&gt;, en &lt;tt&gt;very_flat&lt;/tt&gt;.
+## Types
+Merb kan gebruikt worden voor alles van zeer kleine, snelle, enkel-bestand applicaties 
+tot grote, complexe web-diensten. 
+Verschillende applicatie-structuren kunnen worden gegenereerd, 
+afhankelijk van de noden van de developer.
+De verschillende applicatie-structuren die je kan genereren 
+zijn ``app``, ``core``, ``flat``, and ``very_flat``.
 
 ### App
 Dit is de opinionated Merb stack.
-Dit genereert een volledige applicatie directory structuur met een volledige set van de configuratiebestanden.
-Dit voegt ook een &lt;tt&gt;config/dependancies.rb&lt;/tt&gt; bestand die alles bevat van &lt;tt&gt;merb-more&lt;/tt&gt; en &lt;tt&gt;DataMapper&lt;/tt&gt;.
+Dit genereert een volledige applicatie directory structuur 
+met een volledige set van de configuratiebestanden.
+Dit voegt ook een ``config/dependencies.rb`` bestand 
+die alles bevat van ``merb-more`` en ``DataMapper``.
 
     $ merb-gen app my-application
+{:lang=shell html_use_syntax=true}
 
-Deze applicatie heeft alles wat nodig is om te starten met het bouwen van een eerste klas web-applicatie, dit is het meest vergelijkbaar met de standaard structuur van Rails. 
-Een groot deel van dit boek zal verder gaan in de veronderstelling dat u bent gestart op deze manier.
+Deze applicatie heeft alles wat nodig is 
+om te starten met het bouwen van een eerste klas web-applicatie, 
+dit is het meest vergelijkbaar met de standaard structuur van Rails. 
+Een groot deel van dit boek zal verder gaan in de veronderstelling 
+dat je op deze manier bent gestart .
 
-De applicatie kan worden opgestart door &lt;tt&gt;merb&lt;/tt&gt; te runnen in de root directory van de applicatie.
-Dit commando start Merb op de default poort 4000.
-Om je applicatie in actie te zien, open je [http://localhost:4000/](http://localhost:4000/).
+De applicatie kan worden opgestart door ``merb`` 
+te runnen in de root directory van de applicatie.
+Dit zal Merb starten op de standaard poort 4000.
+Om je applicatie in actie te zien, bezoek je &lt;http://localhost:4000/&gt;.
 
 ### Core
-Core zal de volledige applicatie directory structuur genereren met een volledige set van de configuratiebestanden.
-In tegenstelling met &lt;tt&gt;app&lt;/tt&gt; -- de opinionated full stack -- worden geen dependencies toegevoegd.
+Core zal de volledige applicatie directory structuur genereren 
+met een volledige set van de configuratiebestanden.
+In tegenstelling met de ``app`` -- de opinionated full stack -- 
+worden geen dependencies toegevoegd.
 
     $ merb-gen core my-application
+{:lang=shell html_use_syntax=true}
 
-Start de applicatie door &lt;tt&gt;merb&lt;/tt&gt; te starten de root directory van de applicatie.
-Merk op dat, in tegenstelling met de andere drie  gegenereerde apps, er geen default inhoud is in core.
-Het bezoeken van  [http://localhost:4000/](http://localhost:4000/) zal een fout tonen tot de inhoud en routing zijn toegevoegd.
+Start de applicatie door ``merb`` 
+te starten de root directory van de applicatie.
+Merk op dat, in tegenstelling met de andere drie gegenereerde apps, 
+er geen default inhoud is in core.
+Bezoeken van &lt;http://localhost:4000/&gt; zal een fout genereren 
+tot de inhoud en routing zijn toegevoegd.
 
 ### Flat
-Een flat applicatie bevat alle logica in een enkele file, maar heeft verschillende bestanden voor configuratie en een eigen view directory.
+Een flat applicatie bevat al zijn logica in een enkele file, 
+maar heeft verschillende bestanden voor configuratie en zijn eigen view directory.
 
     $ merb-gen flat my-application
+{:lang=shell html_use_syntax=true}
 
-Flat applicatiess worden opgestart, net als de andere gegenereerde merb applicaties, door &lt;tt&gt;merb&lt;/tt&gt; te starten in root directory van de applicatie.
-Per default, worden alle methodes in de &lt;tt&gt;my-application&lt;/tt&gt; class behandeld als acties met &lt;tt&gt;my-application&lt;/tt&gt; als de controller. bvb : [http://localhost:4000/my-application/foo](http://localhost:4000/my-application/foo)
+Flat applicaties worden opgestart, net als elke andere gegenereerde merb applicatie, 
+door ``merb`` te starten in root directory van de applicatie.
+Standard worden alle methodes in de ``my-application`` class 
+behandeld als acties met ``my-application`` als de controller. 
+bvb : &lt;http://localhost:4000/my-application/foo&gt;
 
-Deze zal &lt;tt&gt;MyApplication#foo&lt;/tt&gt; oproepen en rendert de output van de &lt;tt&gt;foo.html.*&lt;/tt&gt; template.
+Deze zal ``MyApplication#foo`` oproepen 
+en rendert de output van de ``foo.html.*`` template.
 
 ### Very Flat
-Een Very Flat applicatie is vergelijkbaar met andere Ruby micro frameworks, waarbij de volledige applicatie zich in een enkel bestand bevindt.
+Een Very Flat applicatie is vergelijkbaar met andere Ruby micro frameworks, 
+waarbij de volledige applicatie zich in een enkel bestand bevindt.
 
     $ merb-gen very_flat my-applcation
+{:lang=shell html_use_syntax=true}
 
-Om de very flat applicatie te starten, start je Merb met het volgende commando (in je applicatie directory):
+Om de very flat applicatie te starten, start je Merb met het volgende commando 
+(in je applicatie directory):
 
     $ merb -I my-applcation.rb
+{:lang=shell html_use_syntax=true}
 
-Dit start Merb op de default port (4000). Om je applicatie in actie zien, bezoek je [http://localhost:4000/](http://localhost:4000/).
+Dit start Merb op de default port (4000). 
+Om je applicatie in actie zien, bezoek je &lt;http://localhost:4000/&gt;.
 
 
 </diff>
      <filename>book-content/nl/2-getting-started/2-generate-an-application.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,10 @@
 # Project structuur
-De typische structuur van een nieuwe Merb app (gegenereerd met &lt;tt&gt;merb-gen app&lt;/tt&gt;) ziet er ongeveer uit als volgt:
+
+* This will become a table of contents (this text will be scraped).
+{:toc}
+
+De typische structuur van een nieuwe Merb app (gegenereerd met ``merb-gen app``) 
+ziet er ongeveer uit als volgt:
 
     Application directory (Merb.root)
       - app
@@ -25,68 +30,116 @@ De typische structuur van een nieuwe Merb app (gegenereerd met &lt;tt&gt;merb-gen app&lt;
 Hier volgt een kort beschrijving van elke directory en zijn doel.
 
 ## app
-In deze directory zal je het grootste deel van je tijd doorbrengen, omdat het de &quot;kern&quot; van je Merb applicatie bevat.
+In deze directory zal je het grootste deel van je tijd doorbrengen, 
+omdat het de &quot;kern&quot; van je Merb applicatie bevat.
 
 ### controllers
 Al uw applicatie controllers zijn hier opgeslagen (geen verrassing aldaar).
 Controllers zijn typisch genoemd in meervoudsvorm.
-Bijvoorbeeld, indien de een &quot;&lt;tt&gt;Page&lt;/tt&gt;&quot; model hebt, zal de controller file hoogstwaarschijnlijk &lt;tt&gt;pages.rb&lt;/tt&gt; worden genoemd.
-Dit is eenvoudig een conventie, maar je bent vrij je controllers te noemen zoals je zelf wil.
-Zie de  [controllers](/getting-started/controllers) sectie voor meer informatie.
+Bijvoorbeeld, indien de een &quot;``Page``&quot; model hebt, 
+zal de controller file hoogstwaarschijnlijk ``pages.rb`` worden genoemd.
+Dit is eenvoudig een conventie, maar 
+je bent vrij je controllers te noemen zoals je zelf wil.
+Zie de [controllers][] sectie voor meer informatie.
 
 ### models
 Deze directory bevat je model klassen.
-Deze klassen dienen gewoonlijk voor je [ORM](http://en.wikipedia.org/wiki/Object-relational_mapping)s en geven object-georienteerde toegang tot je database tabellen.
-Zie de [modellen](/getting-started/models) sectie voor meer info.
+Deze klassen dienen gewoonlijk voor je [ORM][]s, 
+deze geven object-georienteerde toegang tot je database tabellen.
+Zie de [modellen][] sectie voor meer info.
 
 ### views
 Alle templates worden hier geplaatst.
-Standaard bevat deze directory &lt;tt&gt;exceptions&lt;/tt&gt; en &lt;tt&gt;layout&lt;/tt&gt; subdirectories.
-De &lt;tt&gt;exceptions&lt;/tt&gt; directory bevat templates die over het algemeen te maken hebben met HTTP errors.
-Bijvoorbeeld, een nieuwe Merb app bevat een &lt;tt&gt;not_found.html.{erb,haml}&lt;/tt&gt; bestand, die overeenkomt met de 404 HTTP status code.
-De &lt;tt&gt;layout&lt;/tt&gt; directory bevat de algemene applicatie templates, waarin actie templates kunnen worden gerenderd.
-De standaard application layout file noemt &lt;tt&gt;application.html.{erb,haml}&lt;/tt&gt;.
-Zie de [views](/getting-started/views) sectie voor meer informatie.
+Standaard bevat deze directory ``exceptions`` 
+en ``layout`` subdirectories.
+De ``exceptions`` directory bevat templates 
+die over het algemeen te maken hebben met HTTP errors.
+Bijvoorbeeld, een nieuwe Merb app 
+bevat een ``not_found.html.{erb,haml}`` bestand, 
+die overeenkomt met de 404 HTTP status code.
+De ``layout`` directory bevat de algemene applicatie templates, 
+waarin actie templates kunnen worden gerenderd.
+De standaard application layout file 
+noemt ``application.html.{erb,haml}``.
+Zie de [views][] sectie voor meer informatie.
 
 ## config
 Yep, je raadt het al. 
 De Merb configuratie-bestanden bevinden zich hier.
-De &lt;tt&gt;router.rb&lt;/tt&gt; file bevat je applicatie URL [routes](/getting-started/router), die de structuur, volgorde en verschijning van je URLs defineert.
-Een andere belangrijke file, &lt;tt&gt;init.rb&lt;/tt&gt;, behandeld de basis Merb configuratie.
-Hier configureerd je de ORM, de template engine, en het test framework.
-Je kan ook custom configuraties toevoegen aan de &lt;tt&gt;Merb::BootLoader&lt;/tt&gt; in zijn &lt;tt&gt;before_app_loads&lt;/tt&gt; en &lt;tt&gt;after_app_loads&lt;/tt&gt; blocken.
-Een ander belangrijk bestand, &lt;tt&gt;dependencies.rb&lt;/tt&gt;, is waar je de applicatie afhankelijkheden kan defini&#235;ren: andere libraries of gems die je application vereist.
+De ``router.rb`` file bevat je applicatie URL [routes][], 
+die de structuur, volgorde en uitzicht van je URLs defineert.
+Een andere belangrijke file, ``init.rb``, behandeld de basis Merb configuratie.
+Hier configureerd je de ORM, de template engine, 
+en het test framework.
+Je kan ook custom configuraties toevoegen aan de ``Merb::BootLoader`` 
+in zijn ``before_app_loads`` en ``after_app_loads`` blocken.
+Een ander belangrijk bestand, ``dependencies.rb``, 
+is waar je de applicatie afhankelijkheden kan defini&#235;ren: 
+andere libraries of gems die je application vereist.
 Elke dependency in deze file zal worden geladen bij het opstarten van je Merb app.
 
 ### environments
 Hier bevinden zich alle omgevings specifieke configuratie bestanden.
-Hier bevinden zich een aantal standaard (pure Ruby) configuratie bestanden; elk een komt overeen met een specifieke Merb omgeving (development, production, etc.).
+Hier bevinden zich een aantal standaard (pure Ruby) configuratie bestanden; 
+elk een komt overeen met een specifieke Merb omgeving 
+(development, production, etc.).
 
 ## gems
-Wanneer je klaar bent om je applicatie te  [deployen](/deployment), is het aanbevolen dat je al je afhankelijkheden [bundelt](/deployment/bundle) binnen de applicatie directory.
-De &lt;tt&gt;gems&lt;/tt&gt; directory is waar deze verpakte afhankelijkheden worden geplaatst.
-Tijdens het opstarten van de Merb applicatie, zal elke gem in deze directory, voorrang hebben op de system-wide gem.
+Wanneer je klaar bent om je applicatie te  [deployen][], 
+is het aanbevolen dat je al je afhankelijkheden [bundelt][] 
+binnen de applicatie directory.
+De ``gems`` directory is waar deze verpakte afhankelijkheden 
+worden geplaatst.
+Tijdens het opstarten van de Merb applicatie, 
+zal elke gem in deze directory, voorrang hebben op de system-wide gems.
 
 ## public
-Hier bevinden zich de &quot;statische&quot; bestanden, zoals de &lt;tt&gt;favicon.ico&lt;/tt&gt; en &lt;tt&gt;robots.txt&lt;/tt&gt; files.
+Hier bevinden zich de &quot;statische&quot; bestanden, 
+zoals de ``favicon.ico`` en ``robots.txt`` files.
 
 ### images
-Alle afbeeldingen die je templates nodig hebben, bevinden zich hier.
+Alle afbeeldingen die je templates nodig hebben, gaan hierheen.
 
 ### javascripts
-In een standaard &quot;Merb stack&quot;, bevat deze directory twee bestanden: &lt;tt&gt;application.js&lt;/tt&gt; en &lt;tt&gt;jquery.js&lt;/tt&gt;.
-Standaard bevat de Merb stack het mooie [jQuery](http://jquery.com/) JavaScript framework.
+In een standaard &quot;Merb stack&quot;, bevat deze directory twee bestanden: 
+``application.js`` en ``jquery.js``.
+Standaard bevat de Merb stack 
+het mooie [jQuery][] JavaScript framework.
 
-Indien je relatief kleine hoeveelheden applicatie-speciefieke JavaScript code hebt, zou je deze in de &lt;tt&gt;application.js&lt;/tt&gt; file moeten zetten.
+Indien je relatief kleine hoeveelheden applicatie-speciefieke JavaScript code hebt, 
+zou je deze in de ``application.js`` file moeten zetten.
 Als dit onwerkbaar blijkt, kan je hulp bestanden toevoegen waar nodig.
 
 ### stylesheets
-In overeenstemming met het principe van de &quot;separation of concerns&quot;, moeten visuele stijlen in stylesheet worden geplaatst.
-Wanneer je een Merb app genereert, wordt een stylesheet bestand aangemaakt (met de naam &lt;tt&gt;master.css&lt;/tt&gt;), dat kan worden aangepast zoals je wenst.
+In overeenstemming met het principe van de &quot;separation of concerns&quot;,
+moeten visuele stijlen in stylesheet worden geplaatst.
+Wanneer je een Merb app genereert, 
+maakt dit een stylesheet bestand aan (met de naam ``master.css``), 
+dat kan worden aangepast zoals je wenst.
 
 ## spec
-Gebruik je [rspec](http://rspec.info/) als je [test](/testing-your-application) framework, dan bevat deze directory je testen.
-Standaard, bevat deze directory twee bestanden: een lege &lt;tt&gt;spec.opts&lt;/tt&gt; file, die je kan gebruiken om command-line argumenten door te geven naar rspec (toevoegen van kleur output, enz.) en &lt;tt&gt;spec_helper.rb&lt;/tt&gt;, waar je onder meer de actuele spec runner kan aanpassen .
+Gebruik je [rspec][] als je [test][] framework, 
+dan bevat deze directory je testen.
+Standaard, bevat deze directory twee bestanden: 
+een lege ``spec.opts`` file, 
+die je kan gebruiken om command-line argumenten door te geven naar rspec 
+(toevoegen van kleur output, enz.) en ``spec_helper.rb``, 
+waar je onder meer de actuele spec runner kan aanpassen .
 
 ## tasks
-Deze directory bevat Merb [thor](http://wiki.merbivore.com/faqs/thor) taken.
\ No newline at end of file
+Deze directory bevat Merb [thor][] taken.
+
+
+
+&lt;!-- Links --&gt;
+[bundelt]:          /nl/deployment/bundle
+[controllers]:      /nl/getting-started/controllers
+[deployen]:         /nl/deployment
+[jQuery]:           http://jquery.com/
+[modellen]:         /nl/getting-started/models
+[ORM]:              http://en.wikipedia.org/wiki/Object-relational_mapping
+[routes]:           /nl/getting-started/router
+[RSpec]:            http://rspec.info/
+[test]:             /nl/testing-your-application
+[thor]:             http://wiki.merbivore.com/faqs/thor
+[views]:            /nl/getting-started/views</diff>
      <filename>book-content/nl/2-getting-started/3-project-structure.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,31 +1,73 @@
 #MVC
 
+* This will become a table of contents (this text will be scraped).
+{:toc}
+
 MVC is een acronym dat staat voor Model, View, Controller.
-Het beschrijft een soort web-applicatie structuur die makkelikj te testen en te onderhouden is door de business logica, server logica, en content generatie te onderscheiden.
-Dit is de structuur van de standaard Merb app die is gegenereerd door het '&lt;tt&gt;merb-gen app&lt;/tt&gt;' commando.
-Dit is tevens de structuur gebruikt door Rails, CakePHP, Django, en vele ander populaire web-development frameworks.
-
-Om doeltreffend te ontwikkelen in Merb, is het belangrijk dat men begrijpt hoe de MVC structuur werkt, en wat de meest doeltreffende weg is om hiermee om te gaan.
-Dit hoofdstuk bespreekt het algemene kader.  In de volgende drie hoofdstukken zal worden ingegaan op elk stuk in detail.
-
-[Modellen](/getting-started/models) vormen de kern van het framework.  
-Zij zijn verantwoordelijk voor de business logica van uw applicatie, en in Merb, zijn ze meestal geassocieerd met database-toegang via een ORM zoals DataMapper of Active Record.
-Soms worden modellen gebruikt in een ORM puur als wrapper voor een database tabel. 
-Meestal wordt een 'fat' model  beschouwd als een van de beste praktijken. 
-Dat betekent dat de model-klassen de plaats zijn waar zaken zoals data relaties worden bijgehouden en de methodes om elk niet-triviaal stukje informatie terug te vinden of te manipuleren. 
+Het beschrijft een soort web-applicatie structuur 
+die makkelijk te testen en te onderhouden is 
+door onderscheid te maken tussen de business logica, server logica, en content generatie.
+Dit is de structuur van de standaard Merb app 
+die is gegenereerd door het '``merb-gen app``' commando.
+Dit is tevens de structuur gebruikt door [Rails][], [CakePHP][], [Django][], 
+en vele ander populaire web-development frameworks.
+
+Om doeltreffend te ontwikkelen in Merb, 
+is het belangrijk dat men begrijpt hoe de MVC structuur werkt, 
+en wat de meest doeltreffende weg is om hiermee te werken.
+Dit hoofdstuk bespreekt het algemeen framerk.  
+In de volgende drie hoofdstukken zal worden ingegaan op elk onderdeel in detail.
+
+[Modellen][] vormen de kern van het framework.  
+Zij zijn verantwoordelijk voor de business logica van uw applicatie, 
+en in Merb, zijn ze meestal geassocieerd met database-toegang 
+via een ORM zoals DataMapper of Active Record.
+Soms worden modellen gebruikt in een ORM, 
+puur als wrapper voor een database tabel. 
+Maar meestal wordt een 'fat' model  beschouwd als een van de beste praktijken. 
+Dat betekent dat de model-klassen de plaats zijn waar zaken 
+zoals data relaties worden bijgehouden en de methodes 
+om elk niet-triviaal stukje informatie terug te vinden of te manipuleren. 
 De modellen vormen de kern van het framework. 
 Zij zijn verantwoordelijk voor de business logica van uw applicatie. 
-In Merb, zijn ze meestal geassocieerd met database-toegang via een ORM zoals ActiveRecord of DataMapper.
+In Merb, zijn ze meestal geassocieerd met database-toegang 
+via een ORM zoals ActiveRecord of DataMapper.
 
-[Views](/getting-started/views) vormen de attractieve buitenste schil van de applicatie.
-Views zijn verantwoordelijk voor het genereren van de eigenlijke inhoud (HTML, XML, JSON) terug te keren als antwoord (response) op een vraag (request).
-Meestal zijn views geschreven in een template formaat zoals [Erb](http://en.wikipedia.org/wiki/ERuby) (embedded Ruby) of [Haml](http://haml.hamptoncatlin.com/).
-Slimme developers proberen om zo weinig mogelijk code in hun views te zetten.
+[Views][] vormen de attractieve buitenste schil van de applicatie.
+Views zijn verantwoordelijk voor het genereren van de eigenlijke inhoud (HTML, XML, JSON) 
+terug te keren als antwoord (response) op een vraag (request).
+Meestal zijn views geschreven in een template formaat 
+zoals [Erb][] (embedded Ruby) of [Haml][].
+Slimme developers proberen om zo weinig mogelijk code 
+in hun views te zetten.
 
-[Controllers](/getting-started/controllers) zijn er om een binnenkomende request aan te nemen en een response hiervoor terug te keren.
-Zij zijn verantwoordelijk voor de interpretatie van de binnenkomende request, het verkrijgen van instances van de nodigde modellen, en het terug passeren van deze informatie  naar de View. 
-Beginnende gebruikers zijn vaak geneigd te veel code toe te voegen in de controller laag, maar dit leidt tot broze en moeilijk te testen code. 
-In plaats daarvan worden developers geadviseerd om hun controllers zo 'mager' mogelijk te maken door code die niet rechtstreeks betrekking hebben op de vraag / antwoord-cyclus (of het verzamelen van gegevens) naar het model te verhuizen.
+[Controllers][] zijn er om een binnenkomende request aan te nemen 
+en een response hiervoor terug te keren.
+Zij zijn verantwoordelijk voor de interpretatie van de binnenkomende request, 
+het verkrijgen van instances van de nodige modellen, 
+en het terug passeren van deze informatie  naar de View. 
 
-In de standaard Merb application, is de code voor alle drie deze delen terug te vinden in folders met dezelfde naam onder de '&lt;tt&gt;app&lt;/tt&gt;' directory.
+In de standaard Merb application, 
+is de code voor alle drie deze delen terug te vinden 
+in folders met dezelfde naam onder de '``app``' directory.
 In de volgende hoofdstukken, zien we hoe Merb elk van deze delen implementeert.  
+
+Beginnende gebruikers zijn vaak geneigd te veel code toe te voegen in de controller laag, 
+maar dit leidt tot broze en moeilijk te testen code. 
+In plaats daarvan worden developers geadviseerd 
+om hun controllers zo 'mager' mogelijk te maken 
+door code die niet rechtstreeks betrekking hebben op de vraag/antwoord-cyclus 
+(of het verzamelen van gegevens) naar het model te verhuizen.
+
+
+&lt;!-- Links --&gt;
+[CakePHP]:              http://www.cakephp.org/
+[Controllers]:          /nl/getting-started/controllers
+[Django]:               http://www.djangoproject.com/
+[Erb]:                  http://en.wikipedia.org/wiki/ERuby
+[Haml]:                 http://haml.hamptoncatlin.com/
+[Modellen]:             /nl/getting-started/models
+[Rails]:                http://rubyonrails.org
+[Views]:                /nl/getting-started/views
+
+</diff>
      <filename>book-content/nl/2-getting-started/4-mvc.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,686 @@
-#Controllers
\ No newline at end of file
+# Controllers
+
+* This will become a table of contents (this text will be scraped).
+{:toc}
+
+&gt; Een controller vormt de link tussen de gebruiker en het systeem. 
+&gt; Het voorziet de gebruiker van input door de relevante views zichzelf te laten schikken
+&gt; op de gepaste plaatsen op het scherm.&lt;!-- break --&gt;  
+&gt; Het voorziet de middelen voor gebruikersoutput door de gebruiker menus en andere
+&gt; middelen te geven om commando's en data in te geven.&lt;!-- break --&gt;  
+&gt; De controller ontvangt dergelijke gebruikersoutput, vertaalt dit in de gepaste
+&gt; messages en geeft deze messages door naar &#233;&#233;n of meerdere views. &lt;!-- break --&gt;  
+&gt; - [Trygve Reenskaug][]{: .quote-author}, auteur van de model-view-controller
+&gt; pattern design[^mvc-essay]
+{: cite=http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf .lead-quote}
+
+
+In het [MVC][] paradigma vormen de controllers de lijm tussen
+de business logica (Model) en de View.
+
+Concreet is de controller verantwoordelijk voor de mapping tussen een eind-gebruiker actie
+en het antwoord van de applicatie.
+
+In Merb zijn controllers, technisch gesproken,
+de classes die erven van ``Merb::Controller``.
+In een Merb-stack app, wordt een controller class gecre&#235;erd met de naam ``Application``.
+Alle gegenereerde controllers erven van ``Application``;
+daarom delen zij allen dezelfde eigenschappen als ``Application``.
+
+Merb's [Router][] logica onderzoekt de details van de binnenkomende request,
+vergelijkt deze met de regels gedefinieerd in de ``router.rb`` file.
+In de veronderstelling dat een match wordt gevonden,
+stuurt het de request naar de juiste controller en actie.
+
+In dit hoofdstuk kijken we hoe de controllers te genereren en organizeren.
+We hebben het ook over het schrijven van **acties**,
+controller methodes die worden aangeroepen om binnenkomende requests te behandelen.
+Uiteindelijk bekijken we hoe de functionaliteit van een controller kan worden uitgebreid.
+
+## Genereren van controllers
+
+Je kan twee types van controllers genereren:
+een standaard controlleren een [RESTful][] controller.
+
+### Een standaard controller
+
+    $ merb-gen controller birds
+      [ADDED]  app/controllers/birds.rb
+      [ADDED]  app/views/birds/index.html.erb
+      [ADDED]  spec/requests/birds_spec.rb
+      [ADDED]  app/helpers/birds_helper.rb
+{:lang=shell html_use_syntax=true}
+
+Het commando hierboven genereert verschillende bestanden.  
+De controller file (``birds.rb``) zal methodes bevatten voor elke actie,
+maar ook andere methodes nodig door de controller.
+De view template file (``index.html.erb``) kan worden gebruikt om HTML te genereren,
+gebruik makend van een ``erb`` (embedded Ruby) processor.
+De overige files (``birds_spec.rb``, ``birds_helper.rb``)
+moeten worden gebruikt om de test specificaties te stockeren en de helper methodes.
+
+Laat ons even kijken naar de gegenereerde controller:
+
+    class Birds &lt; Application
+
+      def index
+        render
+      end
+
+    end
+{:lang=ruby html_use_syntax=true}
+
+De generator heeft een nieuwe class toegevoegd ``Birds`` genaamd,
+deze erft van ``Application``.
+De nieuwe class heeft een methode ``index``.
+In de context van de controller,
+zullen we dikwijls verwijzen naar deze methodes als **controller acties** of eenvoudig **acties**.
+
+
+``Application`` (een subclass van ``Merb::Controller``)
+is de class waarvan de controllers gewoonlijk erven.
+Zo is het ook een geschikte plaats om gemeenschappelijke code te delen tussen controllers.&lt;!-- break --&gt;  
+(_use with care_)
+
+
++-- {: .notes}
+Indien je besteft dat je een fout maakte tijdens de generatie van de controller,
+kan je de gegenereerde controller verwijderen door ``-d`` toe te voegen aan het einde 
+van het commando dat je net hebt uitgevoerd:
+
+      $ merb-gen controller birds -d
+        [DELETED]  app/controllers/birds.rb
+        [DELETED]  app/views/birds/index.html.erb
+        [DELETED]  spec/requests/birds_spec.rb
+        [DELETED]  app/helpers/birds_helper.rb
+  {:lang=shell html_use_syntax=true}
+=--
+
+### Een REStful controller
+
+    $ merb-gen resource_controller cats
+      [ADDED]  spec/requests/cats_spec.rb
+      [ADDED]  app/controllers/cats.rb
+      [ADDED]  app/views/cats/index.html.erb
+      [ADDED]  app/views/cats/show.html.erb
+      [ADDED]  app/views/cats/edit.html.erb
+      [ADDED]  app/views/cats/new.html.erb
+      [ADDED]  app/helpers/cats_helper.rb
+{:lang=shell html_use_syntax=true}
+
+Indien je het nieuw gegenereerde controller bestand (``app/controllers/cats.rb``) opent,
+merk je dat de generator een nieuwe class cre&#235;erde genaamd ``Cats``.
+Zoals verwacht erft de class van ``Application``.
+Maar deze keer, vinden we i.p.v. een lege ``index`` actie,
+zeven volledig gedefinieerde acties.
+
+Laat ons even kijken naar de gegenereerde file:
+
+    class Cats &lt; Application
+      # provides :xml, :yaml, :js
+
+      def index
+        @cats = Cat.all
+        display @cats
+      end
+
+      def show(id)
+        @cat = Cat.get(id)
+        raise NotFound unless @cat
+        display @cat
+      end
+
+      def new
+        only_provides :html
+        @cat = Cat.new
+        display @cat
+      end
+
+      def edit(id)
+        only_provides :html
+        @cat = Cat.get(id)
+        raise NotFound unless @cat
+        display @cat
+      end
+
+      def create(cat)
+        @cat = Cat.new(cat)
+        if @cat.save
+          redirect resource(@cat), :message =&gt; {:notice =&gt; &quot;Cat was successfully created&quot;}
+        else
+          message[:error] = &quot;Cat failed to be created&quot;
+          render :new
+        end
+      end
+
+      def update(id, cat)
+        @cat = Cat.get(id)
+        raise NotFound unless @cat
+        if @cat.update_attributes(cat)
+           redirect resource(@cat)
+        else
+          display @cat, :edit
+        end
+      end
+
+      def destroy(id)
+        @cat = Cat.get(id)
+        raise NotFound unless @cat
+        if @cat.destroy
+          redirect resource(:cats)
+        else
+          raise InternalServerError
+        end
+      end
+
+    end # Cats
+{:lang=ruby html_use_syntax=true}
+
+
+Wow, dat is heel wat code.
+Als vuistregel
+moet je geen gegenereerde code gebruiken die je niet begrijpt.
+Gelukkig is de code hierboven vrij eenvoudig te begrijpen
+en we gaan hier vrij gedetailleerd doorheen.
+
+Maar vooraleer we de code uitspitten, hebben we het over [REST][].
+
+## REST
+
+[REST][] is een acroniem voor [Representational State Transfer][].
+Het werd eerst gentroduceerd in 2000 door [Roy Fielding][][^rest\_intro].
+REST verwijst naar een software architecturele stijl doe omschrijft hoe [resources][]
+worden gedefinieerd defined en geadresseerd.
+Dus, [resources][] zijn de sleutel componenten van REST.
+
+**Wat is een resource, in de context van REST?**
+
+Een resource is een bren van specfieke informatie,
+waarnaar wordt verwezen door een URI (global identifier).
+In voorzichtige bewoordingen, is het informatie waarnaar je toegang krijgt via een een bepaald adres.
+REST gebruikt het HTTP protocol om data te communiceren tussen verchillende actors.
+Het wordt dikwijls gebruikt voor web services,
+omdat zijn principes heel goed pgaan voor web resources.
+
+**Hier is hoe mensen gewoonlijk REST web resources gaan mappen:**
+
+**URI:**      http://site.com/cats of http://site.com/cats/1-felix
+(global identifier/address)&lt;!-- break --&gt;  
+**Format:**  MIME Type of extensie (HTML, JSON, XML, YAML, CSV, PDF, ...)&lt;!-- break --&gt;  
+**action:**   map de HTTP methodes (POST, GET, PUT, and DELETE) naar de resource methodes
+
+Indien een resource is gedefinieerd, gebruikt Merb de ``URI`` en de HTTP methode
+om een controller en een action te kiezen.
+
+----
+
+**TECHNICAL REVIEW IN PROGRESS, PLEASE DO NOT TRANSLATE**
+
+
+### The Default Routing Style
+
+When a new application is generated, the router contains a single default route
+which maps URL Paths &lt;!-- is this the right name --&gt; to Controllers like this:
+
+    /:controller/:action/:id(.:format)
+
+This means that a request for ``http://example.com/posts/display/17``
+would cause an instance of the ``Posts`` controller to be created.
+The method ``display`` would be called on that instance with an ``:id`` of 17.
+It might look something like this:
+
+    Posts &lt; Application
+      def display
+        #Post is a Model class
+        @post = Post.get(params[:id])
+        display @post
+      end
+    end.
+{:lang=ruby html_use_syntax=true}
+
+In this style, methods are created to handle different actions.
+Each Controller has a method for every action that it can respond to.
+There are no limits on the number of actions that can be in a controller.
+Particularly in small applications where there are only a couple of controllers,
+this style allows the developer to easily add a new feature
+by simply adding a method to a controller.
+
+###The RESTful Style
+
+The REST philosophy is to view every web request
+as a request to retrieve (GET),
+create (POST), change (PUT), or remove (DELETE) some resource
+over which the server is keeping track.
+There are a number of benefits to this model.
+&lt;!-- we need a chapter on resources --&gt;
+Among them are clean URI name spaces,
+well organized interaction between Models and Controllers,
+and performance.
+Generally, it is considered to be good practice
+to have one resource controller for each Model.
+
+To route to a resource controller, use this line when setting up routes:
+
+    resources :posts
+
+Resources can also be singleton and/or nested.
+Please read the [Router][] chapter for more information.
+
+By default, a resource Controller has seven methods.
+The routing for these methods is based on the HTTP method
+(GET, POST, PUT, and DELETE), as well as the URL.
+
+####Index
+
+routed to by:
+
+    GET /posts
+        /posts.index(.:format)
+
+The expectation here is that the user will be presented with a list
+of every resource of this type that the server knows about.
+In the current example, this might be all of the posts in a blog.
+
+####New
+
+routed to by:
+
+    GET /posts/new
+
+This is the first of three User Interface methods that don't map nicely
+onto the HTTP verbs.
+It is used to show the use of a form to create a new resource.
+The form's content will be sent back to the server
+and handled by the ``create`` method.
+In the example above,
+the page might present the use with a form to write a new blog post.
+
+####Create
+
+routed to by:
+
+    POST /posts
+
+This method receives data from the client
+that is used to construct a new resource.
+Generally, the system responds by redirecting the client
+to the newly created resource, but this is only a convention.
+
+####Show
+
+routed to by:
+
+    GET /posts/:id
+
+This request displays an individual resource identified by ``:id``.
+For example, the above might show an single blog posting with all of its
+comments.
+
+####Edit
+
+routed to by:
+
+    GET /posts/:id/edit
+
+This is another User Interface method.
+It is intended to help a user edit a resource
+by displaying a form with that resource's information in it.
+In the example above, the user might be presented
+with a form to edit an already existing post.
+When the form is sent to the server it, it will be handled by the update method.
+
+####Update
+
+routed to by:
+
+    PUT /posts/:id
+
+This method is a request to change an already existing resource.
+The method needs to update the model and the return a response to the user.
+A common convention is to redirect the user to the modified resource.
+
+Of special interest in this function is the use of the HTTP verb &quot;PUT&quot;.
+Very few clients can use this verb.
+To get around this restriction,
+any POST with a method field containing &quot;PUT&quot;
+is silently converted to a PUT method by Merb
+before the request is routed.
+
+####Delete
+
+routed to by:
+
+    GET /posts/:id/delete
+
+This is the last of the User Interface methods.
+It is used to remove a resource from the server.
+It presents the user with the information they need
+to construct a proper destroy request.
+It may also be used to confirm a user's desire to remove the resource.
+Requests from this page are routed to the ``destroy`` method.
+
+####Destroy
+
+routed to by:
+
+    DELETE  /posts/:id
+
+This is a request for the server to remove a resource identified by ``:id``.
+For example, the user might wish to remove an unwanted blog post.
+
+Like update, this method relies upon an HTTP verb - DELETE -
+that is not widely supported.
+A POST whose method field contains &quot;DELETE&quot;
+is silently converted to a DELETE Request.
+This can present issues, as a link tag cannot generate a POST request
+without the use of JavaScript.
+One way around this is to use the delete page above
+with a form or button to confirm the request.
+Another way is to use JavaScript to form a proper request.
+
+###Adding and Removing Methods
+
+Although the methods listed above are standard in Merb,
+provisions have been made to add others.
+It is best if such actions deal with a single resource
+and only perform the four basic operations to it.
+Examples of good uses for adding functions might be
+having multiple ways to view a resource
+or needing more than one form to create or edit a resource.
+These methods must be passed as options
+to the 'resources' declaration in the router.
+(Please see the API documentation)
+
+There are also circumstances where it is not necessary
+to use all of these methods.
+Perhaps no user is allowed to delete a resource,
+or the show page already contains a form to edit the resource.
+In these cases,
+simply not providing the method will prevent it from being called.
+
+##Using merb-gen With Controllers
+
+TODO -- need to mention both normal controllers and resources
+
+##Controller Action Methods
+
+This section will deal with what actually goes on in your controller methods.
+Keep in mind that controller methods should be as light as possible.
+
+###Render and Display
+
+In general, the last thing a controller method does is return a value
+that is passed on as its portion of the response.
+This is different from Rails,
+where the framework will always call a view for you.
+In Merb, it is perfectly fine to return a string directly from the controller.
+
+For example:
+
+    class Hello &lt; Merb::Controller
+      def hello_world
+        &quot;Hello World!&quot;
+      end
+    end
+{:lang=ruby html_use_syntax=true}
+
+This would send the text &quot;Hello World!&quot; directly back as the response.
+
+Usually, we do not want to generate output text in the controller.
+This is what the [View][] layer is for.
+Views are invoked from controllers
+using either the ``render`` or ``display`` method.
+
+The ``render`` method does a number of things behind the scenes.
+It determines the Layout to use, determines which View file to render,
+renders it, and returns the resulting text.
+``render`` ensures that all instance variables
+(ie, variables that begin with an '@')
+which were set in the controller are available to the view and layout.
+
+For example:
+
+    class Posts &lt; Application
+      def show(id)
+        @post = Post.get(id)
+        render
+      end
+    end
+{:lang=ruby html_use_syntax=true}
+
+This might render the ``show.html.erb`` template,
+using the ``posts.html.erb`` layout.
+Both of these files would have the ``@post`` variable available to them.
+Also note that ``render`` was the last item in the method.
+Ruby automatically returns the last value in a method
+as the return value for that method.
+&lt;!-- can anyone be clearer here? --&gt;
+
+The ``display`` method does everything the ``render`` method does,
+but goes a step further.
+If ``display`` cannot find a valid template to render,
+it instead calls a method on the object it was passed based on the format.
+If that method returns a value, it is passed to the response.
+
+For example:
+
+    class Posts &lt; Application
+      def show(id)
+        @post = Post.get(id)
+        display @post
+      end
+    end
+{:lang=ruby html_use_syntax=true}
+
+Here, we might render the same templates as before,
+in response to a request for HTML.
+But, if this method was marked as providing XML
+(see format below for details)
+and there was no XML template,
+then the ``display`` method would instead call ``@post.to_xml``
+and return the result.
+
+There are many other options for both of these methods.
+Developers should consult the API Documentation for both of them.
+
+###Interaction with Models
+
+Most action methods will want to interact with one or more Models.
+How this is done will depend on the ORM used.
+Records returned from the model should be stored in instance variables
+(these begin with an '@') so they can be used by the Views.
+
+While we cannot anticipate all circumstances,
+the need to use more then two or three Model methods is often a sign
+that more functionality needs to be added to the Model layer.
+If the same Model class is being called repeatedly,
+moving that login &lt;!-- (???) --&gt; into a new method for that class
+is a good way to refactor.
+When more then two or three Model classes are needed by a controller,
+ether rework the controller to match your models more closely,
+or create a presenter model that encapsulates these relationships.
+
+Using 404 pages,
+Merb can handle many of the exceptions thrown by the ORM.
+It is a good practice, however, to catch exceptions from the Model layer,
+and give the user a better description of the problem.
+
+###Information From the Request: The ``params`` and ``request`` Hashes
+
+The controller has access to two hashes that are formed out of the request.
+
+The ``params`` hash contains:
+
+* The controller and action the router decided on.
+* A hash of any Post or Query data sent by the client.
+  (this is where the data from forms ends up)
+* Other elements from the URI parsing, such as ``:id``
+  (please see the [Router][] chapter for more information
+
+The ``request`` hash contains information from the HTML request
+and the environment.
+Normally, Merb will translate the information here into an easier to use form
+for you, but that is not always sufficient.
+
+###Persistant Information About the Client: Sessions and Cookies
+
+HTTP is a stateless protocol.
+That means that each request stands on its own,
+and there is no way to keep information between calls.
+For web applications it is convenient to simulate a persistent state.
+Cookies are used to identify clients.
+They can be used through the cookies hash in the controller.
+
+However, there is an easier and more flexible way to give an app the illusion
+that there is a persistent state that follows a client around.
+The ``session`` hash persists between different requests from the same client.
+There are a number of different ways to maintain sessions,
+but we will not go into these here.
+The result is the same, however.
+Any object that is stored into the session will still be there the next time
+the user makes a request.
+
+Sessions can be use to store user credentials.
+Indeed, it is the session that Merb-Auth is authenticating.
+Sessions can be used to store error messages after a redirect.
+They can also store information about the steps that have been completed
+in a multi-step process.
+
+For example:
+
+    class Users &lt; Application
+      def login
+        if login_was_successful
+          # Make sure that when the user reaches the home page,
+          # we can remember who they were.
+          session[:user] = User.current_user
+          redirect url(:home)
+        else
+          # Provide a message telling the user why they are back
+          # at the login screen.
+          session[:error_message] = &quot;Could not log you in; please try again.&quot;
+          redirect url(:login)
+        end
+      end
+    end
+{:lang=ruby html_use_syntax=true}
+
+Developers coming from Rails will note
+that there is no ``flash` hash in Merb.
+Instead, Sessions can be used directly to send messages between pages.
+
+###Redirecting
+
+Instead of sending a page back to the browser,
+a server can ask the browser to go to a different page for information.
+In Merb, this is often done in response to a request to modify a resource
+through a POST, PUT, or DELETE request.
+
+To accomplish this, the server sends the client a specially formatted response,
+usually without any body.
+Merb will create these responses for you
+using the [redirect][] method.
+
+For example:
+
+    class Posts &lt; Application
+      def update(id)
+        post = Post.get(id)
+        if post.update_attributes(params[:post])
+          redirect resource(post) # Show the client the updated post.
+        else
+          session[:errors] = post.errors
+
+          # Send the client back to the edit page so they can fix the errors.
+          redirect resource(:edit, post)
+        end
+      end
+    end
+    #
+    # NOTE: The resource method in the example above returns a URI.
+    #       It is similar to the url method.
+{:lang=ruby html_use_syntax=true}
+
+###Exceptions and Status Codes
+
+TODO -- How does merb deal with exceptions?
+
+In addition to raising exceptions,
+Merb can set the status code directly using the 'status=' method.
+
+For example:
+
+    class Posts &lt; Application
+      def update(id)
+        unless params[:post]
+          status = 401 # Tell the client we could not understand the request.
+          return render(&quot;We could not seem to find the content of modified post&quot;,
+              :layout=&gt;'error')
+        end
+        post = Post.get(id)
+        post.update_attributes(params[:post])
+        redirect resource(post) # Show the client the updated post.
+      end
+    end
+{:lang=ruby html_use_syntax=true}
+
+##Extending Controllers
+
+In this section, we will look at the Controller classes
+and how to use them to fine tune the behavior of an application.
+
+###Formats
+
+TODO - What formats are, How do we determine the format of a
+request(.format || accept-format header), using provides, generating different
+formats, examples.  Mention the value of RESTful controllers and web services.
+
+###Before and After Filters
+
+TODO -- about filter, creating filters, order of execution, breaking out of
+the filter chain, returning or modifying the response in a filter, examples.
+
+###Use of ``Application``
+
+Both the default stack for the merb app and the controller generators
+make all of their controllers inherit from ``Application``.
+Developers can take advantage of this by putting methods
+in the ``Application`` class.
+These methods will then be available to all controllers.
+
+The ``Application`` class can also set &quot;before&quot; and &quot;after&quot; filters
+that will be run for all controllers.
+
+The ``Application`` class is defined
+in the file  ``app/controllers/application.rb``.
+
+###Private Methods
+
+It is best to refactor as much logic out of the controller as possible.
+When the controller does need to contain complex logic,
+this should be placed in private methods.
+This keeps action methods cleaner and easier to test and debug.
+It is important to make these methods private,
+because public methods can be invoked by the router by default.
+This can be a security hole.
+
+
+&lt;!-- Links --&gt;
+[MVC]:              /getting-started/mvc
+[redirect]: http://merbivore.com/documentation/1.0/doc/rdoc/merb-core-1.0/index.html?a=M000529&amp;name=redirect
+[Representational State Transfer]:         http://en.wikipedia.org/wiki/Representational_State_Transfer
+[resources]:  http://en.wikipedia.org/wiki/Representational_State_Transfer#REST.27s_central_principle:_resources
+[REST]:             http://en.wikipedia.org/wiki/Representational_State_Transfer
+[RESTful]:          http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_Web_services
+[Router]:           /getting-started/router
+[Roy Fielding]:     http://en.wikipedia.org/wiki/Roy_Fielding]
+[Trygve Reenskaug]: http://en.wikipedia.org/wiki/Trygve_Reenskaug
+[View]:             /getting-started/view
+
+&lt;!-- References --&gt;
+[^rest\_intro]: Chapter 5 of Fielding&#8217;s dissertation is [&quot;Representational State Transfer (REST)&quot;](http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm)
+[^mvc-essay]:   http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf
+
+&lt;!-- Abbreviations --&gt;
+*[HTTP]:    Hypertext Transfer Protocol
+*[REST]:    Representational state transfer</diff>
      <filename>book-content/nl/2-getting-started/5-controllers.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,7 @@
 #Views
 
-
+* This will become a table of contents (this text will be scraped).
+{:toc}
 
 ##Form helpers
 </diff>
      <filename>book-content/nl/2-getting-started/6-views.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,8 @@
 #Modellen
 
+* This will become a table of contents (this text will be scraped).
+{:toc}
+
 In grote lijnen zijn modellen zijn de programmatorische vertegenwoordiging 
 van de begrippen en gegevens die een applicatie gebruikt. 
 In een blog applicatie, zijn dit zaken 
@@ -13,24 +16,188 @@ Modellen kunnen alles zijn wat een ontwikkelaar kan voorstellen d.m.v Ruby klass
 Dit gezegd zijnde zullen de meerderheid van de applicaties
 een vorm van [ORM][] (Object Relational Mapper) gebruiken
 om data op disk te bewaren tussen de requests.
-De meeste apps stockeren hun data onder de vorm van een database.
-De standaard Merb Stack gebruikt DataMapper om te communiceren het een SQLite database.
+De meeste apps stockeren hun data onder een vorm van een database.
+De standaard Merb Stack gebruikt [DataMapper][] om te communiceren 
+met een SQLite database.
 Dit is een uitstekende keuze voor een eenvoudige ontwikkeling van nieuwe projecten.
 
 Eens in productie echter,
-is het doorgaans aanbevolen dat developers gebruik maken 
-van een van de krachtiger database-engines zoals Postgres of MySQL.
+is het doorgaans aanbevolen dat developers de overgang maken  
+naar een van de krachtiger database-engines 
+zoals [PostgreSQL][] of [MySQL][].
 Projecten die overkomen uit de Rails wereld
-kunnen nog steeds van ActiveRecord modellen gebruik maken; Merb supporteert ook deze.
+kunnen nog steeds van [ActiveRecord][] modellen gebruik maken; 
+Merb supporteert ook deze.
 
 De rest van dit hoofdstuk is gericht op het gebruik van DataMapper
 om Model klassen aan te maken.
 
 ## Attributen
 
+In een DataMapper model, worden attributen gedefinieerd met de ``property`` methode.
+Deze methode neemt de naam van het attribuut, een data type,
+en een hash van opties.
+In tegenstelling met ActiveRecord, vereist een DataMapper model geen veschillende migratie files
+(hoewel migraties wel zijn gesupporteerd).
+Hier s een nogal standaard DataMapper model:
+
+    class Article
+      include DataMapper::Resource
+      property :id,           Serial
+      property :title,        String
+      property :content,      Text
+      property :published_at, DateTime
+    end
+{:lang=ruby html_use_syntax=true}
+
+Zie de [properties][] sectie van de DataMapper site voor meer details.
+
+## Validaties
+
+Je kan model validaties doen op twee verschillende manieren.
+Ofwel definieer je hem op hetzelfde ogenblik als de attribuut definitie
+ofwel gebruik je een expliciete ``validates_*`` methode.
+De volgende twee voorbeelden zijn equivalent:
+
+    # Using &quot;auto-validations&quot;, defined with the property.
+    class Person
+      include DataMapper::Resource
+      property :id,   Serial
+      property :name, String,  :nullable =&gt; false
+      property :age,  Integer, :length   =&gt; 1..150
+    end
+
+    # Using the &quot;validates_*&quot; methods.
+    class Person
+      include DataMapper::Resource
+      property :id,   Serial
+      property :name, String
+      property :age,  Integer
+
+      validates_present :name
+      validates_length  :age, :within =&gt; 1..150
+    end
+{:lang=ruby html_use_syntax=true}
+Voor meer informatie, zie de DataMapper's [validaties][] pagina.
+
 ## Associaties
 
+DataMapper heeft een heel flexibele manier om associaties te definieren tussen je modellen.
+Alle associatie types worden ondersteund, waaronder One-To-Many, Many-To-Many, enz.
+Associaties worden geconfigureerd d.m.v. de ``has`` en de  ``belongs_to`` methodes.
+
+Laat ons zeggen dat je een blog applicatie schrijft.
+Deze applicatie heeft Article en Comment modellen.
+Hier is hoe we deze associatie zouden kunnen opzetten:
+
+    class Article
+      include DataMapper::Resource
+      # Set up properties.
+      has n, :comments
+    end
+
+    class Comment
+      include DataMapper::Resource
+      # Set up properties.
+      belongs_to :article
+    end
+{:lang=ruby html_use_syntax=true}
+
+Dit geeft je methodes om met de associaties te werken.
+
+    article = Article.first
+    article.comments  # Returns all associated comments.
+    comment = Comment.first
+    comment.article   # Returns the parent Article.
+{:lang=ruby html_use_syntax=true}
+
+Indien je het Article model bekijkt,
+merk je de &quot;mythiche, magische ``n``&quot;.
+Deze methode is een shortcut voor ``oneindigheid``
+en wordt gebruikt om de &quot;has many&quot; associatie te voorzien.
+
+Het opzetten van een &quot;has one&quot; associatie is zo eenvoudig als het doorgeven van de integer ``1``
+(een) aan de  ``has`` methode.
+
+Bij voorbeeld:
+
+    class Person
+      include DataMapper::Resource
+      # setup properties
+      has 1, :coffee_cup
+    end
+
+    class CoffeeCup
+      include DataMapper::Resource
+      # setup properties
+      belongs_to :person
+    end
+{:lang=ruby html_use_syntax=true}
+
+Zoals de ``has many`` associatie in Rails,
+voorzien deze associaties een aantal helper methodes:
+
+    person = Person.first
+    person.coffee_cup  # Returns the person's cup.
+    cup = CoffeeCup.first
+    cup.person  # Returns the cup's owner.
+{:lang=ruby html_use_syntax=true}
+
+Voor complexere voorbeelden, zoals de ``has many through``,
+verwijzen we naar de DataMapper's [associaties][] pagina.
+
 ## Callbacks
 
+Callbacks laten je toe om verschillende methodes te &quot;hooken&quot;,
+om zo bijkomende functionaliteit te voorzien
+of (bij voorbeeld) te verzekeren dat een property werd geformatteerd op een bepaalde manier.
+DataMapper ondersteunt callbacks gebruik makend van een [aspect-ge&#246;rienteerde][] benadering
+en omvat (o.a.) de ``before`` en ``after`` methodes.
+
+Laat ons zeggen dat je een Comment model hebt.
+En je wil ervoor zorgen dat de ``homepage`` property begint met &quot;http://&quot;,
+zonder van de persoon te eisen dat hij dit expliciet voorziet.
+Hier is &#233;&#233;n manier om dit te bereiken:
+
+    class Comment
+      include DataMapper::Resource
+      property :homepage, String
+
+      before :save, :sanitize_homepage
+
+      private
+
+      def sanitize_homepage
+        # If the homepage already begins with &quot;http://&quot;, just return.
+        return if homepage =~ /^http[s]?:\/\/\w/
+        self.homepage = 'http://' + homepage
+      end
+    end
+{:lang=ruby html_use_syntax=true}
+
+Zoals je ziet, neemt de ``before`` methode (als symbolen)
+de naam van de methode die je zou willen &quot;aanroepen&quot; (hooken) 
+en de naam van de methode die het werk zal doen.
+Je kan ook een block doorgeven:
+
+    before :save do
+      # ... the monkey dance.
+    end
+{:lang=ruby html_use_syntax=true}
+
+Je kan callbacks definieren voor zo ongeveer elke methode, waaronder class methodes.
+Voor meer details, verwijzen we naar de DataMapper's [hooks][] pagina.
+
 
-[ORM]: http://en.wikipedia.org/wiki/Object-relational_mapping
\ No newline at end of file
+&lt;!-- Links --&gt;
+[ActiveRecord]:    http://en.wikipedia.org/wiki/ActiveRecord_%28Rails%29
+[aspect-ge&#246;rienteerde]: http://en.wikipedia.org/wiki/Aspect_oriented
+[associaties]:     http://datamapper.org/doku.php?id=docs:associations
+[DataMapper]:      http://datamapper.org/doku.php
+[hooks]:           http://datamapper.org/doku.php?id=docs:hooks
+[MySQL]:           http://en.wikipedia.org/wiki/MySQL
+[ORM]:             http://en.wikipedia.org/wiki/Object-relational_mapping
+[PostgreSQL]:      http://en.wikipedia.org/wiki/PostgreSQL
+[properties]:      http://datamapper.org/doku.php?id=docs:properties
+[SQLite]:          http://www.sqlite.org/
+[validaties]:      http://datamapper.org/doku.php?id=docs:validations</diff>
      <filename>book-content/nl/2-getting-started/7-models.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,133 @@
-#Request path
\ No newline at end of file
+# Request Path
+
+* This will become a table of contents (this text will be scraped).
+{:toc}
+
+Alle web applicaties reageren als antwoord (response) op een HTTP request door een client.
+Elke actie eindigt met een antwoord van een HTTP server.
+In dit hoofdstuk, volgen we de programma flow 
+van client request tot aan de response.
+
+## Van de client tot onze dorpel
+
+De interne werking van het internet valt buiten de scope van dit boek.
+Het is helpt echter wel te weten 
+dat daar ergens een client is (bvb web browser) 
+en dat de request die deze genereert passeert door een aantal
+entiteiten (bvb proxies,cachen, firewalls) om onze servers te bereiken.
+Elk van deze entiteiten kunnen naar de request kijken, deze wijzigen
+en mogelijk stockeren wat we terugsturen.
+Als alles goed gaat, is dit tranparant voor de gebruiker
+en van geen belang voor de server.
+
+Er zijn echter situaties (in het bijzonder met dynamische sites),
+waar deze activiteiten toch moeten worden bekeken.
+Er zijn ook mogelijkheden om voordeel te nemen van de infrastructuur van het internet
+om de belasting vn de server te reduceren.
+Dit kan zowel besparen op brandbreedte als op uitrustingskosten.
+
+## Reverse Proxy (optioneel)
+
+De eerste stop van een request in een live applicatie
+is gewoonljk een reverse proxy zoals [NginX][] of [Apache][]'s [mod\_proxy][].
+Afhankeljk van de setup, kunnen deze proxies statische files behandelen
+(bvb. abeeldingen, CSS style sheets, JavaScript code, videos).
+Dikwijls laten we een proxy ook gecachte pagina's terugsturen
+zonder zelfs met onze applicatie te interageren.
+
+[Phusion Passenger][] is  _in zichzelf_ geen reverse proxy.
+Laten we nu echter even doen alsof dit wel zo is.
+(Meer specifiek, dat het de request via Apache zal ontvangen
+en een [Rack][] request zal doorsturen naar de server applicatie.)
+
+## Web server
+
+Indien de request nog niet door de reverse proxy werd teruggekeerd, 
+of geen reverse proxy wordt gebruikt,
+wordt de request doorgestuurd naar een **web server**.
+[Mongrel][], [Thin][], [Ebb][], en een aantal minder gekende programma's 
+vervullen deze rol.
+
+Indien de response wordt ontvangen door de webserver,
+wordt deze geparsed en verzonden naar [Rack][] via een handler.
+
+
+## Rack en Merb
+
+Merb ontvangt de request als een [Rack][] omgeving.
+Een Rack omgeving omvat alle CGI-stijl headers voor de request.
+Omdat Merb Rack gebruikt als abstractie laag,
+is het wijzigen van web servers echt eenvoudig.
+Mogelijk hoor je mensen refereren naar deze web servers als adapters.
+
+Vooraleer Merb de request doorheen de stack dispatched, 
+kan iemand &quot;Rack middlewares&quot; toevoegen.
+Rack middlewares kan de request processen voordat deze doorheen Merb wordt gestuurd.
+Als alternatief kan de request ook worden &quot;gewrapped&quot;,
+om zo de uitvoering van custom code toe te laten en dit zowel voor- als nadat de request 
+door de stack gaat.
+Rack middlewares kan een heel krachtige toolset zijn, die je toelaat om
+custom logging te doen, caching, profiling, enz.
+
+We gaan het gebruik van Rack hier niet uitgebreid behandelen,
+maar je kan de Merb Rack setup vinden in de ``config/rack.rb`` file
+(in de full stack app).
+
+## Router
+
+Op het ogenblik dat de request wordt doorgegeven naar de stack,
+vraagt de request aan de router naar waar te gaan.
+De request stuurt zichzelf daarna naar de controller.
+
+Het is de taak van de router om parameters te maken uit de request informatie
+en de request te vertellen waarheen te gaan.
+In de meeste gevallen mapt de router een een request op een controller methode (actie)
+en extraheet ook de parameters van de request.
+
+Achter de schermen heeft het Merb framework reeds een deel van het werk gedaan voor jou.
+Op het ogenblik dat een request de controller bereikt, heeft Merb :
+
+* het request URI path ge&#235;xtract.
+* elke post geparsed of data gequeried die door de client werd verzonden,
+  en deze in de ``params`` hash gestopt.
+* de toegang opgezet om cookies te vragen en de huidige sessie.
+
+De developer kan al deze informatie gebruiken om de request te routen.
+Bekijk hiervoorhet hoofdstuk over routing &lt;!-- (???) --&gt; voor meer informatie.
+
+## Controller actie
+
+De request wordt nu gedispatched naar een controller methode.
+Bijvoorbeeld: de ``show`` methode/actie van de ``Articles`` controller.
+De actie kan een view renderen of eenvoudig een string terugkeren.
+De teruggekeerde waarde van de methode zal gebruikt worden om een Rack response te maken.
+Een Rack response is gewoon een eenvoudige tuple die \[status, headers, body\] bevat.
+
+## Buiten de deur
+
+Uiteindelijk stuurt Merb een well-formed Rack response terug naar de web server.
+De web server, op zijn beurt, formatteert een HTTP response
+die wordt teruggestuurd over de draad.
+De client ontvangt de response en interpreteert deze, bijvoorbeeld door
+een web pagina te renderen.
+
+
+## Caching
+
+Indien de caching nu wordt enabled,
+gaat de request mogelijk niet doorheen het hele process zoals hierboven beschreven.
+Caching kan gebeuren binnen Merb, een Rack Middleware, een Proxy server,
+of de client web browser.
+
+
+&lt;!-- Links --&gt;
+[Apache]:             http://httpd.apache.org/
+[GlassFish]:          /nl/deployment/jruby
+[mod\_proxy]:         http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
+[Mongrel]:            http://mongrel.rubyforge.org/
+[MVC]:                /nl/getting-started/mvc
+[NginX]:              /nl/deployment/nginx
+[Phusion Passenger]:  /nl/deployment/passenger
+[Rack]:               http://rack.rubyforge.org/
+[Thin]:               http://code.macournoyer.com/thin/
+[Ebb]:                http://ebb.rubyforge.org/
\ No newline at end of file</diff>
      <filename>book-content/nl/2-getting-started/8-request-path.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,4 @@
-#Routering
\ No newline at end of file
+#Routering
+
+* This will become a table of contents (this text will be scraped).
+{:toc}
\ No newline at end of file</diff>
      <filename>book-content/nl/2-getting-started/9-router.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,19 @@
-# getting-started
+# aan de slag
 
- &lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions'&gt;Aan de slag&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#os_x'&gt;OS X&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#vereisten'&gt;Vereisten&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#ruby__rubygems'&gt;Ruby &amp;amp; RubyGems&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#merb'&gt;Merb&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#linux'&gt;Linux&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#vereisten'&gt;Vereisten&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#ruby__rubygems'&gt;Ruby &amp;amp; RubyGems&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#merb'&gt;Merb&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
+ &lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions'&gt;Installatie instructies&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#os_x'&gt;OS X&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#prerequisites'&gt;Vereisten&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#ruby__rubygems'&gt;Ruby &amp;amp; RubyGems&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#merb'&gt;Merb&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#linux'&gt;Linux&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#prerequisites'&gt;Vereisten&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#ruby__rubygems'&gt;Ruby &amp;amp; RubyGems&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#merb'&gt;Merb&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/instructions#windows'&gt;Windows&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
 
 &lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/application'&gt;Genereer een applicatie&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/application#types'&gt;Types&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/application#app'&gt;App&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/application#core'&gt;Core&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/application#flat'&gt;Flat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/application#very_flat'&gt;Very Flat&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
 
 &lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure'&gt;Project structuur&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#app'&gt;app&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#controllers'&gt;controllers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#models'&gt;models&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#views'&gt;views&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#config'&gt;config&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#environments'&gt;environments&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#gems'&gt;gems&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#public'&gt;public&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#images'&gt;images&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#javascripts'&gt;javascripts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#stylesheets'&gt;stylesheets&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#spec'&gt;spec&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/structure#tasks'&gt;tasks&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
 
-&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/mvc'&gt;MVC&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; 
\ No newline at end of file
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/mvc'&gt;MVC&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
+
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers'&gt;Controllers&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#generating_controllers'&gt;Generatie van controllers&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#a_standard_controller'&gt;Een standaard controller&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#a_restful_controller'&gt;Een REStful controller&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#rest'&gt;&lt;abbr title='Representational state transfer'&gt;REST&lt;/abbr&gt;&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#the_default_routing_style'&gt;De standaard routing style&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#the_restful_style'&gt;De &lt;abbr title='Representational state transfer'&gt;REST&lt;/abbr&gt;ful Style&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#index'&gt;Index&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#new'&gt;New&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#create'&gt;Create&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#show'&gt;Show&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#edit'&gt;Edit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#update'&gt;Update&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#delete'&gt;Delete&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#destroy'&gt;Destroy&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#adding_and_removing_methods'&gt;Toevoegen en verwijderen van methodes&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#using_merbgen_with_controllers'&gt; merb-gen gebruiken met controllers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#controller_action_methods'&gt;Controller actie methodes&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#render_and_display'&gt;Render en display&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#interaction_with_model'&gt;Interactie met Model&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#information_from_the_request_the_params_and_request_hashes'&gt;Informatie van de request: de &amp;#8216;params&amp;#8217; en &amp;#8216;request&amp;#8217; Hashes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#persistant_information_about_the_client_sessions_and_cookies'&gt;Gepersisteerde informatie over de client: Sessions en Cookies&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#redirecting'&gt;Redirectie&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#exceptions_and_status_codes'&gt;Exceptions en status codes&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#extending_controllers'&gt;Controllers extenden&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#formats'&gt;Formaten&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#before_and_after_filters'&gt;Before en After Filters&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#use_of_application'&gt;Gebruik van de &amp;#8216;Applicatie&amp;#8217;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/controllers#private_methods'&gt;Private methodes&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
+
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/views'&gt;Views&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/views#form_helpers'&gt;Form helpers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/views#date_and_time_helpers'&gt;Date en time helpers&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
+
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/models'&gt;Modellen&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/models#attributes'&gt;Attributen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/models#validations'&gt;Validaties&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/models#associations'&gt;Associaties&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/models#callbacks'&gt;Callbacks&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
+
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/path'&gt;Request Path&lt;/a&gt;&lt;ul style='list-style: none;'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/path#from_the_client_to_our_doorstep'&gt;Van de client tot onze dorpel&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/path#reverse_proxy_optional'&gt;Reverse proxy (optioneel)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/path#web_server'&gt;Web server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/path#rack_and_merb'&gt;Rack en Merb&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/path#router'&gt;Router&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/path#controller_action'&gt;Controller actie&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/path#out_the_door'&gt;De deur uit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='/nl/getting-started/path#caching'&gt;Caching&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
+
+&lt;ul class='toc'&gt;&lt;li&gt;&lt;a href='/nl/getting-started/router'&gt;Router&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
\ No newline at end of file</diff>
      <filename>book-content/nl/2-getting-started/toc.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -17,6 +17,7 @@ Een meta-gem is een Ruby gem zonder enige code.
 Het enige doel is om afhankelijkheden te declareren en de installatie makkelijker te maken.
 
 Vanaf Merb 1.0.x gebruikt merb-auth 3 gems:
+
 * [merb-auth-core][]
 * [merb-auth-more][]
 * [merb-auth-slice-password][]
@@ -25,9 +26,9 @@ Vanaf Merb 1.0.x gebruikt merb-auth 3 gems:
 
 [merb-auth-core][] legt niet op wat je moet gebruiken als user model,
 of hoe je authenticatie moet doen.
-In plaats daarvan focust het op de logica nodig om na te gaan of een object
-zich kan authenticeren, en slaat het de sleutels van de geauthenticeerde objecten op 
-in de sessie.
+In plaats daarvan focust het op de logica nodig 
+om na te gaan of een object zich kan authenticeren, 
+en slaat het de sleutels van de geauthenticeerde objecten op in de sessie.
 
 Dit is in feite het hoofdprincipe van MerbAuth. 
 De sessie wordt gebruikt als plaats voor authenticatie, 
@@ -39,21 +40,23 @@ Dit is de reden waarom je mensen hoort spreken van een geauthenticeerde sessie.
 MerbAuth maakt gebruik van Merb's exception handling faciliteiten die 
 correcte HTTP status codes terugkeren.
 Om een login te laten falen, of een login te forceren op om het even welk punt in je controller code, 
-moet je gewoon een Unauthenticated exception gooien, met een optioneel bericht 
+moet je gewoon een ``Unauthenticated`` exception gooien, met een optioneel bericht 
 en de gebruiker krijgt onmiddellijk de login-pagina te zien. 
-De login pagina is in feite de html-weergave voor Extensions#unauthenticated
+De login pagina is in feite 
+de view template voor ``Extensions#unauthenticated``
 
 Het is mogelijk om gebruik te maken van MerbAuth met om het even welk object als een gebruiker object, 
-op voorwaarde dat dit object niet als &quot;false&quot; ge&#235;valueerd wordt en 
-dat het kan worden geserializeerd &quot;van&quot; en &quot;naar&quot; de sessie.
-
+op voorwaarde dat dit object niet als &quot;false&quot; ge&#235;valueerd wordt 
+en dat het kan worden geserializeerd &quot;van&quot; en &quot;naar&quot; de sessie.
 
 Ten slotte is merb-auth zeer krachtig vooral vanwege zijn &quot;geketende&quot; strategie&#235;n capaciteit. 
-Je kan zoveel strategie&#235;n toevoegen als je wil en ze zullen worden een na een worden geprobeerd  
-totdat er een wordt gevonden die werkt (login), of er geen enkele  de test heeft doorstaan (mislukte poging).
+Je kan zoveel strategie&#235;n toevoegen als je wil en 
+ze zullen &#233;&#233;n na &#233;&#233;n worden geprobeerd totdat er &#233;&#233;n wordt gevonden die werkt (login), 
+of er geen enkele  de test heeft doorstaan (mislukte poging).
 
 Een authenticatie strategie is gewoon een manier om een request te authenticeren. 
 Voorbeelden van strategie&#235;n kunnen zijn: 
+
 * salted user (gebruiker login met een paswoord gebruik ,makend van &quot;salted&quot; encryptie)
 * openid
 * api key/token
@@ -63,22 +66,23 @@ Voorbeelden van strategie&#235;n kunnen zijn:
 ### merb-auth-more
 
 [merb-auth-more][] voegt extra functies toe aan merb-auth-core.
-De gem viedt een aantal generische strategie&#235;n en &quot;Gebruiker&quot; object mixins.
+De gem biedt een aantal generische strategie&#235;n en &quot;Gebruiker&quot; object mixins.
 
 Strategie&#235;n:
-* login of email paswoord form (ook gekend als password\_form)
-* basic http authenticatie (ook gekend als basic\_auth)
-* openid
 
+* login of email paswoord form (ook gekend als password\_form)
+* basic HTTP authenticatie (ook gekend als basic\_auth)
+* OpenId
 
 Mixins:
+
 * ActiveRecord salted gebruiker
 * DataMapper salted gebruiker
 * relaxdb salted gebruiker
 * sequel salted gebruiker
 
 De salted gebruiker mixin biedt basic salted SHA1 password authenticatie.
-Dit implementeert de vereiste User authenticate methode te gebruiken met 
+Dit implementeert de vereiste ``User.authenticate methode`` te gebruiken met 
 de standaard paswoord strategie&#235;n.
 
 ### merb-auth-slice-password
@@ -87,10 +91,11 @@ de standaard paswoord strategie&#235;n.
 De slice voorziet developers van een basic login en logout functie.
 Standaard bevat het ook de form based paswoord logins en basic authenticatie.
 
-Standaard laadt de slice de password\_form en de basic\_auth strategie&#235;n.
+Standaard laadt de slice de ``password\_form`` 
+en de ``basic\_auth`` strategie&#235;n.
 
-Views en strategie&#235;n kunnen worden aangepast zoals wordt uigelegd in het 
-Authenticated Hello World voorbeeld.
+Views en strategie&#235;n kunnen worden aangepast 
+zoals wordt uitgelegd in het &quot;Authenticated Hello World&quot; voorbeeld.
 
 
 ## Authenticatie in Merb Stack
@@ -98,8 +103,9 @@ Authenticated Hello World voorbeeld.
 Wanneer je een applicatie genereert met de standaard merb stack [^ merb-stack-app], 
 is merb-auth reeds ingesteld voor normaal gebruik. 
 
-Als je hiervan geen gebruik wilt maken, zet dan de merb-auth dependency  
-in config / dependencies.rb gewoon in commentaar.
+Als je hiervan geen gebruik wilt maken, 
+zet dan de ``merb-auth`` dependency  
+in ``config/dependencies.rb`` gewoon in commentaar.
 
 
 ## Authenticated Hello World
@@ -107,7 +113,7 @@ in config / dependencies.rb gewoon in commentaar.
 
 ### Genereer een application
 
-De eerste stap is je applicatie te genereren met de Merb stack.
+De eerste stap is je applicatie te genereren m.b.v. de Merb stack.
 
     $ merb-gen app hello_world
     $ cd hello_world
@@ -122,8 +128,8 @@ De elementen aan de basis zijn:
     merb/merb-auth/strategies.rb
 {:lang=ruby html_use_syntax=true}
 
-De setup voor user authenticatie werd standaard gedaan met een paswoord
-en login.
+De standaard setup voor user authenticatie wordt gedaan 
+met een paswoord en login.
 Uiteraard moeten we eerst ook een database opzetten en een gebruiker toevoegen.
 
 
@@ -156,11 +162,12 @@ zie je de &quot;Hello World&quot; resultaten.
 
 ### Bescherm de route
 
-Dit is nog niet afgeschermd, dus laat ons dit even in orde brengen.
-We kunnen dit zowel in de routes in config/router.rb als in de controller actie zelf.
+Dit is nog niet beschermd, dus laat ons dit even in orde brengen.
+We kunnen dit zowel in de routes in ``config/router.rb`` 
+als in de controller actie zelf.
 We proberen eerst de router optie.
 
-Open het bestand config/router.rb 
+Open het bestand ``config/router.rb`` 
 
     Merb::Router.prepare do
       authenticate do
@@ -170,18 +177,20 @@ Open het bestand config/router.rb
 {:lang=ruby html_use_syntax=true}
 
 Dit zorgt ervoor dat de gebruiker moet aanloggen.
-Dit wordt ontdekt tijdens de routering and wanneer aanloggen niet lukt, dan stopt de routering. 
+Dit wordt ontdekt tijdens de routering and wanneer aanloggen niet lukt, dan stopt de routering. (???)
 Probeer nu even  &lt;http://localhost:4000/hello_world&gt; uit.
 Je zal zien dat je deze keer moet aanloggen om dezelfde pagina te krijgen.
 
-Ok.  Logout, &lt;http://localhost:4000/logout&gt;
+Ok.  
+Logout, &lt;http://localhost:4000/logout&gt;
 
 
 ### Bescherm de controller
 
-Laat ons nu de code van de router terug verwijderen, en de bescherming op 
-controller niveau plaatsen.
-Dit laat een fijnere controle over toe over de resources. 
+Laat ons nu de code van de router terug verwijderen, 
+en de bescherming op controller niveau plaatsen.
+Dit laat bivoorbeeld een fijnere controle over toe over de resources. 
+
 
     Merb::Router.prepare do
      match(&quot;/hello_world&quot;).to(:controller =&gt; &quot;hello_world&quot;)
@@ -201,12 +210,14 @@ Laat het ons nu in de controller zetten:
     end
 {:lang=ruby html_use_syntax=true}
 
-Om toegang te krijgen tot de momenteel aangelogde gebruiker binnen de controller gebruikt je: 
+
+Om toegang te krijgen tot de momenteel aangelogde gebruiker binnen de controller gebruik je: 
 
     session.user
 {:lang=ruby html_use_syntax=true}
 
-Echt ... Voor een basis Hello World authenticatie is dit het.  
+Echt ... 
+Voor een basis Hello World authenticatie is dit alles.  
 
 
 ### Overschrijf de standaard views
@@ -217,13 +228,11 @@ Indien je meer aanpassingen wenst, kan je ook:
     rake slices:merb-auth-slice-password:freeze:views
 {:lang=ruby html_use_syntax=true}
 
-Dit zal de views van de slice copi&#235;ren naar de /slices/ directory
-in je applicatie.
-
-Nadien moet je ze verplaatsen/copi&#235;ren naar je /views/.
-Je kan nu overwegen om de gecopi&#235;erde views in /app/views/ te editeren.
-
+Dit zal de views van de slice copi&#235;ren 
+naar de ``slices`` directory in je applicatie.
 
+Nadien moet je ze verplaatsen/copi&#235;ren naar je ``app/views``
+en deze views te editeren. (???)
 
 
 [^merb-stack-app]: merb-gen app hello\_world
@@ -231,9 +240,9 @@ Je kan nu overwegen om de gecopi&#235;erde views in /app/views/ te editeren.
 ## Testen van een authenticated request
 
 Om een request te testen die moet geauthenticeerd worden, moet je eerst aanloggen.
-De eenvoudigste weg om aan te loggen wanneer je een request spect runt is om een helper te gebruiken.
+De eenvoudigste wijze om aan te loggen wanneer je een request spec runt, is om een helper te gebruiken.
 
-Hier is een voorbeeld van twee helpers toegevoegd aan /spec/spec\_helper.rb
+Hier is een voorbeeld van twee helpers toegevoegd aan ``spec/spec\_helper.rb``.
 
     Merb::Test.add_helpers do
  
@@ -260,8 +269,8 @@ Hier is een voorbeeld van twee helpers toegevoegd aan /spec/spec\_helper.rb
 {:lang=ruby html_use_syntax=true}
 
 De eerste helper cre&#235;ert een standaard gebruiker tenzij deze reeds bestaat.
-De tweede helper stuurt een login request gebruik makend van de attributen van de standaard gebruiker.
-Merk op dat de login acties gebruik maken van het PUT HTTP werkwoord.
+De tweede helper stuurt een login request, gebruik makend van de attributen van de standaard gebruiker.
+Merk op dat de login actie gebruik maakt van het PUT HTTP werkwoord.
 
 Nu je deze helpers hebt toegevoegd, moet je enkel je voorbeelden lichtjes wijzigen:
 
@@ -273,8 +282,11 @@ Nu je deze helpers hebt toegevoegd, moet je enkel je voorbeelden lichtjes wijzig
 
 In het bovenstaand voorbeeld, zal de request naar de articles URI worden geauthenticeerd.
 
-[Adam French]:      &lt;http://adam.speaksoutofturn.com&gt;
-[merb-auth]:        &lt;http://github.com/wycats/merb/tree/master/merb-auth&gt;
-[merb-auth-core]:   &lt;http://github.com/wycats/merb/tree/master/merb-auth/merb-auth-core&gt;
-[merb-auth-more]:   &lt;http://github.com/wycats/merb/tree/master/merb-auth/merb-auth-more
-[merb-auth-slice-password]: &lt;http://github.com/wycats/merb/tree/master/merb-auth/merb-auth-slice-password&gt;
\ No newline at end of file
+&lt;!-- Links --&gt;
+[Adam French]:      http://adam.speaksoutofturn.com
+[merb-auth]:        http://github.com/wycats/merb/tree/master/merb-auth
+[merb-auth-core]:   http://github.com/wycats/merb/tree/master/merb-auth/merb-auth-core
+[merb-auth-more]:   http://github.com/wycats/merb/tree/master/merb-auth/merb-auth-more
+[merb-auth-slice-password]: http://github.com/wycats/merb/tree/master/merb-auth/merb-auth-slice-password
+
+*[API]: Application Programming Interface</diff>
      <filename>book-content/nl/5-merb-more/1-authentication.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,7 @@
 # dependencies are generated using a strict version, don't forget to edit the dependency versions when upgrading.
 merb_gems_version = &quot;1.0.7.1&quot;
-
 dependency &quot;maruku&quot;, &quot;&gt;= 0.5.9&quot;
-dependency &quot;merb_babel&quot;, &quot;&gt;= 0.1.0&quot;
+dependency &quot;merb_babel&quot;, &quot;&gt;= 0.1&quot;
 
 # dependency &quot;merb-action-args&quot;, merb_gems_version
 dependency &quot;merb-assets&quot;, merb_gems_version  </diff>
      <filename>config/dependencies.rb</filename>
    </modified>
    <modified>
      <diff>@@ -23,7 +23,8 @@ Merb::BootLoader.before_app_loads do
      :default_language    =&gt; 'en',
      :available_languages =&gt; [
             {:name =&gt; &quot;English&quot;,    :code =&gt; 'en'}, 
-            {:name =&gt; &quot;Fran&#231;ais&quot;,   :code =&gt; 'fr'}, 
+            {:name =&gt; &quot;Fran&#231;ais&quot;,   :code =&gt; 'fr'},
+            {:name =&gt; &quot;&#54620;&#44397;&#50612;&quot;,        :code =&gt; 'kr'},              
             {:name =&gt; &quot;&#26085;&#26412;&#35486;&quot;,        :code =&gt; 'jp'}, 
             {:name =&gt; &quot;Portugu&#234;s&quot;,  :code =&gt; 'pt'},
             {:name =&gt; &quot;Deutsch&quot;,    :code =&gt; 'de'},</diff>
      <filename>config/init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/autospec</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/edit_json.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/erubis</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/gpgen</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/maruku</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/marutex</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/merb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/mongrel_rails</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/rackup</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/rake</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/rake2thor</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/spec</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#!/opt/ruby-enterprise-1.8.6-20080810/bin/ruby
+#!/usr/bin/ruby1.8
 #
 # This file was generated by RubyGems.
 #</diff>
      <filename>gems/bin/thor</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>bin/log/merb.main.pid</filename>
    </removed>
    <removed>
      <filename>book-content/en/3-interacting-with-the-database-active_record/1-setting-up.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/3-interacting-with-the-database-active_record/2-queries.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/4-interacting-with-the-database-sequel/1-setting-up.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/4-interacting-with-the-database-sequel/2-database-migrations.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/4-interacting-with-the-database-sequel/3-data-retrieval-and-manipulation.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/4-interacting-with-the-database-sequel/4-model-associations.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/4-interacting-with-the-database-sequel/5-model-validation.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/4-interacting-with-the-database-sequel/6-sequel-plugins.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/4-interacting-with-the-database-sequel/toc.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/5-testing-your-application/1-why.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/5-testing-your-application/2-models.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/5-testing-your-application/3-requests.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/5-testing-your-application/4-cucumber.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/5-testing-your-application/toc.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/6-merb-more/1-authentication.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/6-merb-more/2-mailer.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/6-merb-more/3-caching.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/6-merb-more/4-exceptions.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/6-merb-more/5-slices.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/6-merb-more/toc.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/7-recipes/1-simple-blog.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/7-recipes/2-blog-slice.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/7-recipes/toc.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/8-deployment/1-passenger.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/8-deployment/2-nginx.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/8-deployment/3-jruby.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/8-deployment/4-bundle.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/8-deployment/toc.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/9-appendix/1-hints-tips.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/9-appendix/2-slices.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/9-appendix/3-gems.markdown</filename>
    </removed>
    <removed>
      <filename>book-content/en/9-appendix/toc.markdown</filename>
    </removed>
    <removed>
      <filename>gems/cache/abstract-1.0.0.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/erubis-2.6.2.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/extlib-0.9.8.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/json_pure-1.1.3.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/maruku-0.5.9.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/merb-assets-1.0.7.1.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/merb-core-1.0.7.1.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/merb-helpers-1.0.7.1.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/merb_babel-0.1.0.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/mime-types-1.15.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/rack-0.4.0.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/rake-0.8.3.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/rspec-1.1.11.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/syntax-1.0.0.gem</filename>
    </removed>
    <removed>
      <filename>gems/cache/thor-0.9.9.gem</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>426edf14d44d9daaf1fce19597aca6732538afc7</id>
    </parent>
  </parents>
  <author>
    <name>Matt Aimonetti</name>
    <email>mattaimonetti@gmail.com</email>
  </author>
  <url>http://github.com/akitaonrails/merb-book/commit/ca6f35f0e4ec3fc6e5928210298452106c4ca36c</url>
  <id>ca6f35f0e4ec3fc6e5928210298452106c4ca36c</id>
  <committed-date>2009-01-16T14:30:49-08:00</committed-date>
  <authored-date>2009-01-16T14:30:49-08:00</authored-date>
  <message>renaming and merb update</message>
  <tree>d8bb4e975c3fdadc88261ec0758368b5c3146327</tree>
  <committer>
    <name>Matt Aimonetti</name>
    <email>mattaimonetti@gmail.com</email>
  </committer>
</commit>
