Thanks for this!

If you could send the patch as an attachment or stick it in a ticket
on trac.turbogears.org it would help a lot because e-mail can add line
breaks that keep the patch from applying cleanly.

--Mark Ramm

On Tue, Feb 10, 2009 at 7:54 PM, anita kean <[email protected]> wrote:
>
> Hello
>
> I'm a turbogears newbie and I volunteered to fix some
> of the tg1 docs but I needed to learn a bit to get myself
> started.  So I've been staring at the tg2 docs a while.
>
> There are a few typos in them, and I'm attaching output of an
>    svn diff docs/main/*.rst
> of mostly spelling/repeated word corrections.
> (ispell and good old awk)
>
> Hope it's ok to attach the file here - it seemed a bit long to try
> and copy/paste into pastebin.
>
> Anita
>
> ps - the long lines are as I found the docs, but they make it
> hard spotting the changes.
>
> Index: SimpleWidgetForm.rst
> ===================================================================
> --- SimpleWidgetForm.rst        (revision 6277)
> +++ SimpleWidgetForm.rst        (working copy)
> @@ -60,7 +60,7 @@
>  Simple form field widgets generally correspond to the default browser inputs
>  but some, like the date picker, have extra smarts to make your user's lives
>  easier. You can get an overview of which widgets are available on your 
> install
> -by checking out paster tg-info, and you can find more detaills about 
> particular widgets by using the the toscawidgets widget browser:
> +by checking out paster tg-info, and you can find more details about 
> particular widgets by using the toscawidgets widget browser:
>
>  http://toscawidgets.org/documentation/WidgetBrowser/
>
> @@ -85,7 +85,7 @@
>         """The WidgetsList defines the fields of the form."""
>
>         name = forms.TextField(validator=validators.NotEmpty())
> -        email = fomss.TextField(validator=validators.Email(not_empty=True),
> +        email = forms.TextField(validator=validators.Email(not_empty=True),
>           attrs={'size':30})
>         comment = forms.TextArea(validator=validators.NotEmpty())
>         notify = forms.CheckBox(label="Notify me")
> @@ -224,7 +224,7 @@
>  Validation ensures that the values you're getting are the values your method
>  is expecting. Sometimes this is critically important, other times it's
>  convenient, but quite a bit of time in web programming is traditionally tied
> -up in displaying a form, processing the form, validating it's values, and --
> +up in displaying a form, processing the form, validating its values, and --
>  in the event of errors-- redisplaying the form with the errors marked.
>  TurboGears widgets were created explicitly to solve this problem.
>
> @@ -243,7 +243,7 @@
>         """The WidgetsList defines the fields of the form."""
>
>         name = forms.TextField(validator=validators.NotEmpty())
> -        email = fomss.TextField(validator=validators.Email(not_empty=True),
> +        email = forms.TextField(validator=validators.Email(not_empty=True),
>           attrs={'size':30})
>         comment = forms.TextArea(validator=validators.NotEmpty())
>         notify = forms.CheckBox(label="Notify me")
> Index: License.rst
> ===================================================================
> --- License.rst (revision 6277)
> +++ License.rst (working copy)
> @@ -5,7 +5,7 @@
>
>  :Status: Official
>
> -**Summary: There's no GPL incompatible provisos sneaked into any of these 
> licenses, and all of TG2 and it's underlying components are not copy_left 
> licensed, so you can include them in your projects -- even if they are 
> propritary**
> +**Summary: There's no GPL incompatible provisos sneaked into any of these 
> licenses, and all of TG2 and its underlying components are not copy_left 
> licensed, so you can include them in your projects -- even if they are 
> proprietary**
>
>  Note that the following paragraphs are **not legal advice**. They are one 
> person's interpretations of the software licenses involved. If you have any 
> questions or concerns about the licenses, you should consult a lawyer.
>
> Index: DevStatus.rst
> ===================================================================
> --- DevStatus.rst       (revision 6277)
> +++ DevStatus.rst       (working copy)
> @@ -3,7 +3,7 @@
>
>  TurboGears 2 arose out of some discussions about how similar the TurboGears 
> 1 and Pylons frameworks were to each other.   We shared similar philosophies, 
> and some similar implementation choices (we both used SQLObject and switched 
> to SQLAlchemy for example).
>
> -TurboGears is currently based on the as yet unreleased Pylons 0.9.7.  We 
> plan to do a preview release of TG2 (version 1.9.7a1) shortly after the 
> Pylons release.  We will will then track Pylons as they approach 1.0, with 
> the intention of releasing TurboGears 2 at essentially the same time as 
> Pylons 1.0.
> +TurboGears is currently based on the as yet unreleased Pylons 0.9.7.  We 
> plan to do a preview release of TG2 (version 1.9.7a1) shortly after the 
> Pylons release.  We will then track Pylons as they approach 1.0, with the 
> intention of releasing TurboGears 2 at essentially the same time as Pylons 
> 1.0.
>
>  Current plans are to have the first official release 1.9.7a1 sometime early 
> in April, and to have a full 2.0 release by the end of the year.   But open 
> source projects are notoriously difficult to schedule, and it's possible that 
> 2.0 will come out significantly before then, or that it will take longer.
>
> Index: FormBasics.rst
> ===================================================================
> --- FormBasics.rst      (revision 6277)
> +++ FormBasics.rst      (working copy)
> @@ -26,7 +26,7 @@
>  #. Make it easy to re-display form results with associated error messages.
>
>  Rather than re-invent the wheel for these three things TurboGears has brought
> -together and integrated a some tools that specialize these things.
> +together and integrated some tools that specialize these things.
>
>  Validation is handled by FormEncode, form generation by ToscaWidgets, and 
> model
>  introspection+automatic form and validator generation can be provided by 
> DBSprockets.
> @@ -42,7 +42,7 @@
>
>     login_form = make_form(User, identifier='myLoginForm', action='/login', 
> limitFields=['user_name', 'password'])
>
> -This form is actually a ToscaWidgets CompoundWidget object, with member 
> widgets for each of the form fields, and with some code to wrap them up in a 
> form and display them to the user.  DBSprockets takes the User object 
> introspects it's table information, and makes a form for you.   In this case, 
> we're limiting the fields that show up on the form to those needed for the 
> user_name and password columns.
> +This form is actually a ToscaWidgets CompoundWidget object, with member 
> widgets for each of the form fields, and with some code to wrap them up in a 
> form and display them to the user.  DBSprockets takes the User object 
> introspects its table information, and makes a form for you.   In this case, 
> we're limiting the fields that show up on the form to those needed for the 
> user_name and password columns.
>
>  We can then add that widget to the list of widgets available in the template 
> by adding it to tmpl_context in your controller::
>
> @@ -61,13 +61,13 @@
>     def login(self, user_name, password):
>         return dict()
>
> -If there are errors, they will be saved in ``tmpl_context.form_errors`` 
> which is automatically available in your template.   And the widget is 
> designed to look trough tmpl_context.form_errors for error messages and 
> display them along side the form when it's displayed.  That way you can use 
> the same template, and the same widget to redisplay the form along with the 
> errors whenever there are form validation errors.
> +If there are errors, they will be saved in ``tmpl_context.form_errors`` 
> which is automatically available in your template.   And the widget is 
> designed to look through tmpl_context.form_errors for error messages and 
> display them along side the form when it's displayed.  That way you can use 
> the same template, and the same widget to redisplay the form along with the 
> errors whenever there are form validation errors.
>
> -To take advantage of this we can assign our original ``display_login`` page 
> as the ``error_handler`` for this form. like this::
> +To take advantage of this we can assign our original ``display_login`` page 
> as the ``error_handler`` for this form, like this::
>
>     @validate(form=login_form, error_handler=display_login)
>     def login(self, user_name, password):
>         return dict()
>
> -If there's a validation error, control will be passed to display_login, but 
> this time there will be some data in tmpl_context so that when the form 
> widget is rendered, it will get those validation error messages and display 
> them for you:
> +If there's a validation error, control will be passed to display_login, but 
> this time there will be some data in tmpl_context so that when the form 
> widget is rendered, it will get those validation error messages and display 
> them for you.
>
> Index: Validation.rst
> ===================================================================
> --- Validation.rst      (revision 6277)
> +++ Validation.rst      (working copy)
> @@ -37,7 +37,7 @@
>     @expose('json')
>     @validate(validators={"a":validators.Int(), "b":validators.Email})
>     def two_validators(self, a=None, b=None, *args):
> -        errors = [{key, value} in pylons.c.form_errors.itteritems()]
> +        errors = [{key, value} in pylons.c.form_errors.iteritems()]
>         values =  pylons.c.form_values
>         return dict(a=a, b=b, errors=str(errors), values=str(values))
>
> @@ -152,7 +152,7 @@
>
>     @validate(forms.myform, error_handler=process_form_errors)
>
> -The method in question will be called, with the unvalidated data as it's 
> params.
> +The method in question will be called, with the unvalidated data as its 
> params.
>  And error validation messages will be stored in pylons.tmpl_context.
>
>  Here's a quick example of how this all works:
> @@ -208,9 +208,9 @@
>  fields.
>
>  Again, for information about ``Invalid`` exception objects, creating your own
> -validators, schema and FormEncode in general, a refer to the `FormEncode
> +validators, schema and FormEncode in general, refer to the `FormEncode
>  Validator`_ documentation and don't be afraid to check the
> -``Formencode.validators`` source. It's often more clear than the docs.
> +``Formencode.validators`` source. It's often clearer than the docs.
>
>  .. _`FormEncode Validator`: http://formencode.org/docs/Validator.html
>
> @@ -239,4 +239,4 @@
>  users. In the end, it's usually far simpler to use the
>  validation framework.
>
> -.. _FormEncode: http://formencode.org/
> \ No newline at end of file
> +.. _FormEncode: http://formencode.org/
> Index: QuickStart.rst
> ===================================================================
> --- QuickStart.rst      (revision 6277)
> +++ QuickStart.rst      (working copy)
> @@ -44,7 +44,7 @@
>
>         $ paster setup-app development.ini
>
> -As soon as that's done. Point your browser at http://localhost:8080/, and 
> you'll see a nice welcome page with the inform(flash) message and current 
> time.
> +As soon as that's done, point your browser at http://localhost:8080/, and 
> you'll see a nice welcome page with the inform(flash) message and current 
> time.
>
>  If you're exploring TurboGears 2 after using TurboGears 1, you may notice 
> that the old config file `dev.cfg` file is now `development.ini`.
>  And by default the 'paster serve' is not in auto-reload mode.
> @@ -61,7 +61,7 @@
>
>   * development.ini : The system configuration is laid on development.ini for 
> development configuration
>   * helloworld/controllers/root.py gets called to handle URL, and do whatever 
> needs doing to create the data for the welcome page.
> -  * helloworld/templates/index.html is the template turbogears uses to 
> render the the welcome page from the dictionary returned by the root 
> controller. It's an standard XHTML with some simple namespaced attributes.
> +  * helloworld/templates/index.html is the template turbogears uses to 
> render the welcome page from the dictionary returned by the root controller. 
> It's standard XHTML with some simple namespaced attributes.
>   * helloworld/public/ is the place to hold static files, such as pictures, 
> javascript, or css files.
>
>  You can easily edit development.ini to change the default server port used 
> by the built-in web server::
> Index: BasicMoves.rst
> ===================================================================
> --- BasicMoves.rst      (revision 6277)
> +++ BasicMoves.rst      (working copy)
> @@ -83,7 +83,7 @@
>
>  So far we're getting somewhere, we've been returning plain text for every 
> incoming request. But you might have noticed how the default welcome page 
> work.
>
> -We can edit index template, use controllers to define new url's. But let's 
> take it one step further and create yet another new URL, plug plug real 
> templates into the controllers, and this time rather than returning a string, 
> we'll return a dictionary:
> +We can edit index template, use controllers to define new urls. But let's 
> take it one step further and create yet another new URL, plug real templates 
> into the controllers, and this time rather than returning a string, we'll 
> return a dictionary:
>
>  .. code-block:: python
>
> @@ -112,7 +112,7 @@
>
>  Browse http://localhost:8080 to see the change.
>
> -TurboGears 2 uses the Genshi templating system by deault for controlling 
> dynamic content in your markup.
> +TurboGears 2 uses the Genshi templating system by default for controlling 
> dynamic content in your markup.
>  Template arguments are used to pass variables and other dynamic content to 
> the template.
>
>  To create more skeletons for your templates, just copy the default 
> index.html template that was generated when your project was created.
> Index: WhatsNew.rst
> ===================================================================
> --- WhatsNew.rst        (revision 6277)
> +++ WhatsNew.rst        (working copy)
> @@ -20,7 +20,7 @@
>
>  Well, Pylons is committed to being officially template engine agnostic, ORM 
> agnostic, etc.  On the other hand TurboGears is committed to providing a 
> "Full-Stack" for web development.  So, the two communities have different, 
> but compatible priorities.  If you think about it Pylons provides a great set 
> of tools for building a full stack framework, and people had been asking for 
> a full-stack Pylons implementation for a long time.   And TurboGears 2 will 
> provide that.
>
> -There are a lot of benefits to having a full-stack.  You can build form 
> helpers which do all sorts of interesting things (introspect model objects to 
> make web-based forms, automatically display form errors, etc) because you can 
> make some assumptions about what tools will be available and what will be 
> used.    In particular, you can start building plugable website components 
> much more easily, because you are building on a known set of tools.
> +There are a lot of benefits to having a full-stack.  You can build form 
> helpers which do all sorts of interesting things (introspect model objects to 
> make web-based forms, automatically display form errors, etc) because you can 
> make some assumptions about what tools will be available and what will be 
> used.    In particular, you can start building pluggable website components 
> much more easily, because you are building on a known set of tools.
>
>  Why not use CherryPy 3?
>  ~~~~~~~~~~~~~~~~~~~~~~~
> @@ -69,7 +69,7 @@
>   * All template engines now have search paths to find the templates.
>     The default template directory is on the search path so using dotted
>     notation in @expose decorators has been deprecated.
> -  * Object dispatch does not support dots in URL's the way TurboGears 1 did.
> +  * Object dispatch does not support dots in URLs the way TurboGears 1 did.
>   * CherryPy request and response objects replaces with WebOb request and 
> response objects.
>
>  Command changes
> Index: SQLAlchemy.rst
> ===================================================================
> --- SQLAlchemy.rst      (revision 6277)
> +++ SQLAlchemy.rst      (working copy)
> @@ -20,10 +20,10 @@
>
>  Your quickstarted project will have a subpackage called `model`, made up of 
> the following files:
>
> -* `__init__.py`: This is where the database access is setup. Your tables 
> should be imported into this module, and you're highly encouaged to define 
> them in a separate module - `entities`, for example.
> +* `__init__.py`: This is where the database access is set up. Your tables 
> should be imported into this module, and you're highly encouraged to define 
> them in a separate module - `entities`, for example.
>  * `auth.py`: This file will be created if you enabled authentication and 
> authorization in the quickstart. It defines the three tables 
> :mod:`repoze.what.quickstart` relies on: `User` (for the registered members 
> in your website), `Group` (for the teams a member may belong to, and to which 
> you can assign permissions) and `Permission` (a permission granted to one or 
> more groups); it also defines two intermediary tables: One for the 
> many-to-many relationship between the groups and the permissions, and another 
> one for the many-to-many relationship between the users and the groups.
>
> -Auto-reflection of tables has to happen after all the configuration is read, 
> and the app is setup, so we provide simple init_model method (defined in 
> `model/__init__.py`) that is not called until after everything is setup for 
> you.
> +Auto-reflection of tables has to happen after all the configuration is read, 
> and the app is set up, so we provide simple init_model method (defined in 
> `model/__init__.py`) that is not called until after everything is set up for 
> you.
>
>
>  Defining your own tables
> @@ -50,9 +50,9 @@
>  Choosing data Types
>  ---------------------
>
> -When you're setting up the column types for your tables, you don't have to 
> think about your target database and it's type system.   SQLAlchemy provides 
> a flexible underlying type system that, along with the table definition 
> syntax above, allows you to database independent table objects.
> +When you're setting up the column types for your tables, you don't have to 
> think about your target database and its type system.   SQLAlchemy provides a 
> flexible underlying type system that, along with the table definition syntax 
> above, allows you to define database-independent table objects.
>
> -SQLAlchemy provides a number of built-in types which it automatically maps 
> to underling database types.  If you want the latest and greatest listing 
> just type:
> +SQLAlchemy provides a number of built-in types which it automatically maps 
> to underlying database types.  If you want the latest and greatest listing 
> just type:
>
>  .. code-block:: python
>
> @@ -81,7 +81,7 @@
>  Properties
>  ~~~~~~~~~~~
>
> -While you define the Columns, you could specify several properties to 
> control the column's behaviors.
> +As you define a column, you can specify several properties to control the 
> column's behavior.
>
>  ============  ==========
>  property     value
> @@ -109,7 +109,7 @@
>  If you don't define the __init__ method. You will need to update the 
> properties of a movie object after it's been created. like this::
>
>   >>> entry = Movie()
> -  >>> entry.title = 'Dragula'
> +  >>> entry.title = 'Dracula'
>   >>> entry.year = '1931'
>   >>> entry.description = 'vampire movie'
>
> @@ -144,7 +144,7 @@
>
>  Pylons (the TurboGears 2 underground framework) defines a setup-app function 
> that paster will connect to the database and create all the tables we've 
> defined.
>
> -The default database setup configurations are defined in development.ini. So 
> if you just run the script without modification of development.ini, the 
> script will create a single-file database, which called 'devdata.db', in your 
> project directory. If you change your data model and want to apply the new 
> database, go delete 'devdata.db' and run the 'paster setup-app' command again.
> +The default database setup configurations are defined in development.ini. So 
> if you just run the script without modification of development.ini, the 
> script will create a single-file database called 'devdata.db' in your project 
> directory. If you change your data model and want to apply the new database, 
> delete 'devdata.db' and run the 'paster setup-app' command again.
>
>  TurboGears 2 does support database migrations. But that's another tutorial.
>
> Index: OfflineInstall.rst
> ===================================================================
> --- OfflineInstall.rst  (revision 6277)
> +++ OfflineInstall.rst  (working copy)
> @@ -14,7 +14,7 @@
>   $ cd eggs
>   $ easy_install tg.devtools
>
> -To get the latest versions from SVN and install offline you can do a a SVN
> +To get the latest versions from SVN and install offline you can do an SVN
>  checkout of the TG2 sources, and a mercurial checkout of Pylons, and install
>  those on top of the above eggs.
>
> Index: Genshi.rst
> ===================================================================
> --- Genshi.rst  (revision 6277)
> +++ Genshi.rst  (working copy)
> @@ -7,7 +7,7 @@
>  Simple genshi example
>  --------------------------
>
> -Genshi is an XML template language based on Kid, which in turn was inspired 
> by zope's TAL.  Genshi is the default template language of TurboGears2, and 
> it provides a very similar API to it's predecessor.
> +Genshi is an XML template language based on Kid, which in turn was inspired 
> by zope's TAL.  Genshi is the default template language of TurboGears2, and 
> it provides a very similar API to its predecessor.
>
>  Genshi Templates look like XHTML.  Here's a sample genshi template:
>
> @@ -34,7 +34,7 @@
>     </body>
>     </html>
>
> -This particular template does a couple of things, but it's main function is 
> to take each variable that's been made available in the template namespace 
> and display it's name and it's value.
> +This particular template does a couple of things, but its main function is 
> to take each variable that's been made available in the template namespace 
> and display its name and its value.
>
>  Every template language in the world needs to provide a variable 
> substitution syntax, and the standard way in python seems to be ``${item}``, 
> and that's exactly what you do in Genshi.  Take a variable wrap it in curly 
> braces and throw a $ in front, and the value of the variable will be 
> substituted in when the template is rendered.   Genshi is nice in that it 
> allows you to use full python expressions in the substitution.
>
> @@ -44,11 +44,11 @@
>
>  it evaluates the python expression ``repr(locals()['data'][item])`` and 
> provides the string representation of the proper item.
>
> -And if you look a line up, you'll see where item is defined as one of the 
> list of keys in the dictionary representing the local variables. The way this 
> works is that py:for acts just like a standard python for loop, repeating the 
> <div> that it's (and it's children if there were any) once for each item in 
> the dictionary.
> +And if you look a line up, you'll see where item is defined as one of the 
> list of keys in the dictionary representing the local variables. The way this 
> works is that py:for acts just like a standard python for loop, repeating the 
> <div> that it's in (and its children if there were any) once for each item in 
> the dictionary.
>
> -In TurboGears 2 the template namespace is going to be populated with the 
> items you return in your controller's return dictionary, along with a few 
> extras.   This particular template can be very helpful when debugging a 
> controller's return values, and is included in the default quickstarted 
> project for you.
> +In TurboGears 2 the template namespace is going to be populated with the 
> items you return in your controller's return dictionary, along with a few 
> extras.   This particular template can be very helpful when debugging a 
> controller's return values, and is included in default quickstarted projects 
> for you as `project_name/templates/debug.html`.
>
> -The general way that Genshi works it that it allows you to add special 
> attributes to your xml elements, called *Template Directives*.  Each of these 
> template directives should be given a value, which can be ANY python 
> expression.  So, learning Genshi is pretty much about leanring how those 
> directives work, since the rest is just python.    And like py:for, most of 
> the directives are very "python like".
> +The general way that Genshi works it that it allows you to add special 
> attributes to your xml elements, called *Template Directives*.  Each of these 
> template directives should be given a value, which can be ANY python 
> expression.  So, learning Genshi is pretty much about leaning how those 
> directives work, since the rest is just python.    And like py:for, most of 
> the directives are very "python like".
>
>  Available Processing Directives:
>  ------------------------------------------
> @@ -56,13 +56,13 @@
>  Here's a list of all the Template Directives in Genshi, along with a brief 
> description.
>
>  ======================= ======================
> -Gensh Directive         Definition
> +Genshi Directive         Definition
>  ======================= ======================
> -``py:if``               Displays the element and it's children if the 
> condition is true.
> +``py:if``               Displays the element and its children if the 
> condition is true.
>  ``py:choose``           Used with py:when and py:otherwise to select one of 
> several options to be rendered.
> -``py:when``             Used with py:choose -- displays an element and it's 
> children when the condition is true.
> +``py:when``             Used with py:choose -- displays an element and its 
> children when the condition is true.
>  ``py:otherwise``        Used with py:when and py:choose, displays if non of 
> the when clauses are true.
> -``py:for``              Repeats the element (and it's children) for each 
> item in some iterable
> +``py:for``              Repeats the element (and its children) for each item 
> in some iterable
>  ``py:with``             Lets you assign expressions to variables
>  ``py:replace``          Replaces the element with the contents of the 
> expression, stripping out the element itself.
>  ``py:def``              Creates a re-usable "template function" that can be 
> used to render template
> @@ -70,11 +70,11 @@
>  ``py:match``            given an XPath expression, it finds and replaces 
> every element in the
>                         template that matches the expression --  with the 
> content of the element
>                         containing the py:match.
> -``py:strip``            Removes just the containing element (not it's 
> children) if the condition is true.
> +``py:strip``            Removes just the containing element (not its 
> children) if the condition is true.
>  ======================= ======================
>
>
> -There are examples of how each of these template directives work on the 
> Genshi web site.
> +There are examples of how each of these template directives works on the 
> Genshi web site.
>
>  http://genshi.edgewall.org/wiki/Documentation/xml-templates.html
>
> Index: DatabaseMigration.rst
> ===================================================================
> --- DatabaseMigration.rst       (revision 6277)
> +++ DatabaseMigration.rst       (working copy)
> @@ -83,7 +83,7 @@
>
>  Our repository is ready.  Now we must create a table
>  for maintaining revision state in our managed database. The ``migrate``
> -script providesnd for this step as well:
> +script provides for this step as well:
>
>     $ migrate version_control sqlite:///devdata.db migration
>
> Index: Session.rst
> ===================================================================
> --- Session.rst (revision 6277)
> +++ Session.rst (working copy)
> @@ -36,7 +36,7 @@
>
>     from tg import session
>
> -What you get is a Session instance that is always request-local, in other 
> words, it's the session for this particular user.  The session can be 
> manipulated in much the same way as a standard python dictionnary.
> +What you get is a Session instance that is always request-local, in other 
> words, it's the session for this particular user.  The session can be 
> manipulated in much the same way as a standard python dictionary.
>
>  Here is how you search for a key in the session::
>
> Index: RoutesIntegration.rst
> ===================================================================
> --- RoutesIntegration.rst       (revision 6277)
> +++ RoutesIntegration.rst       (working copy)
> @@ -14,7 +14,7 @@
>  RootController, which sees that the action is route, and does object
>  dispatch in the same way that TurboGears 1 did.
>
> -But if you want to create special routes that overide Object Dispatch,
> +But if you want to create special routes that override Object Dispatch,
>  you can easily do that, just by providing your own function to setup the
>  routes map. You can update the routes defaults by overriding the setup_routes
>  method of the base_config object in app_cfg.py.
> @@ -24,7 +24,7 @@
>     def setup_routes(self):
>         """Setup the default TG2 routes
>
> -        Overide this and setup your own routes maps if you want to use 
> routes.
> +        Override this and setup your own routes maps if you want to use 
> routes.
>         """
>         map = Mapper(directory=config['pylons.paths']['controllers'],
>                     always_scan=config['debug'])
> Index: CommandLine.rst
> ===================================================================
> --- CommandLine.rst     (revision 6277)
> +++ CommandLine.rst     (working copy)
> @@ -1,6 +1,6 @@
>  .. _commandline-reference:
>
> -TurboGears2 delegates it's command line tasks to Paste, in TG1.x this was a 
> build in command which was drop in favor of the more robust Paste 
> infraestructure.
> +TurboGears2 delegates its command line tasks to Paste, in TG1.x this was a 
> build in command which was drop in favor of the more robust Paste 
> infrastructure.
>
>  What is PasteScript?
>  ====================
> Index: DownloadInstall.rst
> ===================================================================
> --- DownloadInstall.rst (revision 6277)
> +++ DownloadInstall.rst (working copy)
> @@ -28,8 +28,7 @@
>  * Python 2.4, 2.5, or 2.6
>  * Appropriate python development package (python*-devel python*-dev)
>
> -.. hint::
> -   Python 2.4 users will also need to install pysqlite themselves in
> +.. hint::   Python 2.4 users will also need to install pysqlite themselves in
>    order to use the sqlite database setup in the default development.ini
>    but you're also free to just install and use your database of choice.
>
> @@ -68,7 +67,7 @@
>
>  On Unix:
>
> -You will likely need root permissions to install virtualenv in you your 
> system's
> +You will likely need root permissions to install virtualenv in your system's
>  site-packages directory:
>
>  .. code-block:: bash
> @@ -147,11 +146,11 @@
>
>     $ easy_install -U -i 
> http://www.turbogears.org/2.0/downloads/current/index tg.devtools
>
> -All of turbogears, and all of its dependencies should download and install 
> themselves.
> +All of turbogears and all of its dependencies should download and install 
> themselves.
>  (This may take a several min.)
>
>  Validate the installation:
> -~~~~~~~~~~~~~~~
> +~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>  To check if you installed TurboGears 2 correctly, type
>
> @@ -195,7 +194,7 @@
>  to get a picture of what's changed in TurboGears2 so far.
>
>  Special Considerations:
> -~~~~~~~~~~~~~~
> +~~~~~~~~~~~~~~~~~~~~~~~
>
>  **Cygwin** does not include the necessary binary file **sqlite3.dll**;
>  if you want to run Cygwin you'll need to install a different database.
> @@ -205,7 +204,7 @@
>
>
>  Installing the development version of Turbogears 2 (from source)
> ---------------------------------------------------------------
> +----------------------------------------------------------------
>
>  See `Contributing to Turbogears 2`_
>
> Index: movie_tutorial.rst
> ===================================================================
> --- movie_tutorial.rst  (revision 6277)
> +++ movie_tutorial.rst  (working copy)
> @@ -135,18 +135,18 @@
>  of a movie object after it's been created like this::
>
>   >>> entry = Movie()
> -  >>> entry.title = 'Dragula'
> +  >>> entry.title = 'Dracula'
>   >>> entry.year = '1931'
>   >>> entry.description = 'vampire movie'
>
>  But if the __init__ method we defined allows you to initialize the properties
>  at the same time you create the object::
>
> -  >>> entry = Movie(title='Drakula', year='1931', description='vampire 
> movie')
> +  >>> entry = Movie(title='Dracula', year='1931', description='vampire 
> movie')
>
>  or ::
>
> -  >>> entry = Movie('Drakula', '1931', 'vampire movie')
> +  >>> entry = Movie('Dracula', '1931', 'vampire movie')
>
>  Bootstrapping the application with CRUD
>  ========================================
> Index: Internationalization.rst
> ===================================================================
> --- Internationalization.rst    (revision 6277)
> +++ Internationalization.rst    (working copy)
> @@ -45,7 +45,7 @@
>              ('public/**', 'ignore', None)]},
>
>  This is an extraction method mapping that indicates to distutils which files
> -should be search for strings to be translated.
> +should be searched for strings to be translated.
>  TurboGears2 uses Babel to extract messages to a .pot file in your project's
>  i18n directory.
>  Don't forget to add it to your revision control system if you use one.
> @@ -67,7 +67,7 @@
>  3. Edit your language in il8n/[country code]/LC_MESSAGES/[project-name].po
>
>  If you're not an expert in i18n or if you would like to give the files to
> -someone else so that he helps you we recommand that you use the really nice
> +someone else so that he helps you we recommend that you use the really nice
>  poedit program. This program works nicely on GNU/Linux and Windows
>  and provides a nice user-interface to edit po files.
>
> @@ -95,7 +95,7 @@
>  ---------
>
>
> -To fresh start a translation, you could use following command to handle your
> +To fresh start a translation, you could use the following command to handle 
> your
>  locales:
>
>  init_catalog
> Index: Config.rst
> ===================================================================
> --- Config.rst  (revision 6277)
> +++ Config.rst  (working copy)
> @@ -9,7 +9,7 @@
>  Like TurboGears 1, the application configuration is separated from the
>  deployment specific information.  In TG2 there is a config module, containing
>  several configuration specific python files -- these are done in python not
> -as INI files, because they actually setup the TG2 application and it's 
> associated WSGI middleware.  And these files are intended to be edited only 
> by application developers, not by those deploying the application.
> +as INI files, because they actually setup the TG2 application and its 
> associated WSGI middleware.  And these files are intended to be edited only 
> by application developers, not by those deploying the application.
>
>  At the same time the deployment level configuration is done in simple .ini 
> files.
>
> @@ -45,7 +45,7 @@
>  app_cfg.py exists primarily so that middleware.py and environment.py can 
> import and use the ``base_config`` object.
>
>  The ``base_config`` object is an ``AppConfig()`` instance which allows you to
> -access it's attributes like a normal object, or like a standard python 
> dictionary.  One of the reasons for this is that ``AppConfig()`` provides 
> some defaults in it's ``__init__``.  But equally important it provides us 
> with several methods that work on the config values to produce the two 
> functions that setup your TurboGears app.   Since this is all done in your 
> code, you can subclass or overide ``AppConfig`` to get exactly the setup you 
> want.
> +access its attributes like a normal object, or like a standard python 
> dictionary.  One of the reasons for this is that ``AppConfig()`` provides 
> some defaults in its ``__init__``.  But equally important it provides us with 
> several methods that work on the config values to produce the two functions 
> that set up your TurboGears app.   Since this is all done in your code, you 
> can subclass or override ``AppConfig`` to get exactly the setup you want.
>
>  The ``base_config`` object that is created in ``app_cfg.py`` should be used 
> to set whatever configuration values that belong to the application itself 
> and are required for all instances of this app, as distinct from the 
> configuration values that you set in the ``development.ini`` or 
> ``deployment.ini`` files that are intended to be editable by those who deploy 
> the app.
>
> Index: Controllers.rst
> ===================================================================
> --- Controllers.rst     (revision 6277)
> +++ Controllers.rst     (working copy)
> @@ -280,7 +280,7 @@
>  about the way WSGI works.   But it's also the right thing to do from the
>  perspective of URL joins.  Because you didn't have a trailing slash, there's 
> no
>  way to know you meant to be in the movie directory, so redirection to 
> relative
> -URL's will be based on the last / in the URL.  In this case the root of the 
> site.
> +URLs will be based on the last / in the URL.  In this case the root of the 
> site.
>
>  It's easy enough to get around this, all you have to do is write your 
> redirect
>  like this::
> @@ -377,7 +377,7 @@
>             del users[id]
>             redirect('./')
>
> -For the "edit" method the template might contatin something like this:
> +For the "edit" method the template might contain something like this:
>
>  .. code-block:: html
>
> @@ -394,7 +394,7 @@
>        <input type="text" name="name" value="$value"/>
>     </form>
>
> -And finally a "delete" template containting this:
> +And finally a "delete" template containing this:
>
>  .. code-block:: html
>
> @@ -405,7 +405,7 @@
>
>  Rest methods work just like any other controller method in TurboGears,
>  which means you can validate, or expose them in any method of your choosing.
> -It is very common to use content-type dispatch allong with get_all to return
> +It is very common to use content-type dispatch along with get_all to return
>  both a page containing a table and some JavaScript links along with
>  You may have noticed the "_method" hidden field within the forms.  This is 
> needed because
>  browsers do not yet support all of the HTTP verbs required to provide a
> @@ -432,7 +432,7 @@
>
>
>  So if you visit jsonexample/users you will get the results of a rendered 
> template, but if you visit
> -jsonexaple/users.json, you get a json stream containing the users data.  
> Notice that we don't return
> +jsonexample/users.json, you get a json stream containing the users data.  
> Notice that we don't return
>  the list of users.  Most of the time, json streams are comprised of 
> dictionaries for security reasons.
>  It is important to note that the mime-type associated with the request's 
> response type are stored at
>  pylons.request.response_type, and the extension used to generate that 
> mime-type is stored at
> Index: Contributing.rst
> ===================================================================
> --- Contributing.rst    (revision 6277)
> +++ Contributing.rst    (working copy)
> @@ -78,7 +78,7 @@
>
>  TurboGears 2 is composed of 2 packages. You also need 2 more package with 
> are the authorization framework
>
> -Check out the latest code from the subversion respositories:
> +Check out the latest code from the subversion repositories:
>
>  .. code-block:: bash
>
> @@ -253,8 +253,8 @@
>  `(tg2dev)` will be prefixed to your prompt to indicate that the
>  `tg2dev` virtualenv is activated.
>
> -Check out the latest version of the docs soruces from the subversion
> -respositories:
> +Check out the latest version of the docs sources from the subversion
> +repositories:
>
>  .. code-block:: bash
>
>
> >
>



-- 
Mark Ramm-Christensen
email: mark at compoundthinking dot com
blog: www.compoundthinking.com/blog

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears Docs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/turbogears-docs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to