Part of the way towards Version 1 documentation, a=chris

Chris Pollett [2014-06-25 06:Jun:th]
Part of the way towards Version 1 documentation, a=chris
Filename
en-US/pages/documentation.thtml
diff --git a/en-US/pages/documentation.thtml b/en-US/pages/documentation.thtml
index abb5564..534f7f9 100755
--- a/en-US/pages/documentation.thtml
+++ b/en-US/pages/documentation.thtml
@@ -19,15 +19,21 @@
         <li><a href="#files">Summary of Files and Folders</a></li>
     </ul>
     </li>
-    <li><a href="#interface"><b>Search and User Interface</b></a>
+    <li><a href="#search-interface"><b>Search Interface</b></a>
     <ul>
         <li><a href="#search-basic">Search Basics</a></li>
         <li><a href="#operators">Search Operators</a></li>
         <li><a href="#result-formats">Result Formats</a></li>
-        <li><a href="#settings-signin">Settings and Signin</a></li>
+        <li><a href="#settings">Settings</a></li>
         <li><a href="#mobile">Mobile Interface</a></li>
+    </ul>
+    <li><a href="#social"><b>User Accounts and Social Features</b></a>
+    <ul>
+        <li><a href="#registration">Registration and Signin</a></li>
         <li><a href="#passwords">Managing Accounts</a></li>
         <li><a href="#userrolegroups">Managing Users, Roles, and Groups</a></li>
+        <li><a href="#group-feeds">Group Feeds</a></li>
+        <li><a href="#group-wikis">Group Wikis</a></li>
     </ul>
     </li>
     <li><a href="#crawl-results"><b>Crawling and Customizing Results</b></a>
@@ -1097,7 +1103,7 @@ also see folders 0-temp, 1-temp, etc.</dd>
     <p><a href="#toc">Return to table of contents</a>.</p>


-    <h2 id='interface'>Search and User Interface</h2>
+    <h2 id='search-interface'>Search and User Interface</h2>
 <p>At this point one hopefully has installed Yioop.
 If you used one of the <a href="?c=main&p=install">install guides</a>,
 you may also have performed a simple crawl. We are now going to
@@ -1112,7 +1118,7 @@ href="http://www.yioop.com/">Yioop Demo Site</a>.</p>
 <p>
 The main search form for Yioop looks like:
 </p>
-<img src='resources/SearchScreen.png' alt='The Search form'/>
+<img src='resources/SearchScreen.png' alt='The Search form' style="width:70%"/>
 <p>The HTML for this form is in views/search_views.php and the icon is stored
 in resources/yioop.png. You may want to modify these to incorporate Yioop
 search into your site. For more general ways to modify the look of this pages,
@@ -1124,7 +1130,7 @@ clicking the Search button. As one is typing, Yioop suggests possible queries,
 you can click, or use the up down arrows to select one of these suggestion
 to also perform a search</p>
 <img src='resources/Autosuggest.png' alt='Example suggestions as you type'
-width="70%"/>
+style="width:70%"/>
 <p>For some non-roman alphabet scripts such as Telugu you can enter
 words using how they sound using roman letters and get suggestions
 in the script in question:</p>
@@ -1438,7 +1444,7 @@ query to Yioop such as:
 http://my-yioop-instance-host/?f=json&amp;q=query+terms
 </pre>
     <p><a href="#toc">Return to table of contents</a>.</p>
-<h3 id='settings-signin'>Settings and Signin</h3>
+<h3 id='settings'>Settings</h3>
 <p>In
 the corner of the page with the main search form is a Settings-Signin element:
 </p>
@@ -1465,25 +1471,6 @@ stuff to the URL. For instance, adding &l=fr-FR to the URL query string
 tell Yioop to use the French from France for outputting
 text. You can also add &its= the Unix
 timestamp of the search index you want.
-</p>
-<p>Clicking on the Sign In link on the corner of the Yioop web site will
-bring up the following form:
-</p>
-<img src='resources/SigninScreen.png' alt='Admin Panel Login'/>
-<p>
-Correctly, entering a username and password will then bring the user to the
-Admin portion of the Yioop website. Each Admin page has on it an Activity
-element as well as a main panel where the current activity is displayed.
-The Activity element allows the user to choose what is the current activity
-for this Admin session. The choices available on the Activity element
-depend on the privileges the user has.
-Currently, for the root account, the Activity element looks like:
-</p>
-<img src='resources/ActivityElement.png' alt='The Activity Element'/>
-<p>
-Over the next several sections we will discuss each of the Yioop admin
-activities in turn. Before we do that we make a couple remarks about using
-Yioop from a mobile device.
 </p>
     <p><a href="#toc">Return to table of contents</a>.</p>

@@ -1509,6 +1496,29 @@ Yioop from a mobile device.
     except for the above minor changes, these instructions will also apply to
     the mobile setting.
     </p>
+    <h2 id='social'>User Accounts and Social Features</h2>
+    <h3 id='registration'>Registration and Signin</h3>
+<p>Clicking on the Sign In link on the corner of the Yioop web site will
+bring up the following form:
+</p>
+<img src='resources/SigninScreen.png' alt='Admin Panel Login'/>
+<p>
+Correctly, entering a username and password will then bring the user to the
+Admin portion of the Yioop website. Each Admin page has on it an Activity
+element as well as a main panel where the current activity is displayed.
+The Activity element allows the user to choose what is the current activity
+for this Admin session. The choices available on the Activity element
+depend on the privileges the user has.
+Currently, for the root account, the Activity element looks like:
+</p>
+<img src='resources/ActivityElement.png' alt='The Activity Element'/>
+<p>
+Over the next several sections we will discuss each of the Yioop admin
+activities in turn. Before we do that we make a couple remarks about using
+Yioop from a mobile device.
+</p>
+    <p><a href="#toc">Return to table of contents</a>.</p>
+
     <h3 id='passwords'>Managing Accounts</h3>
     <p>By default, when a user first signs in to the Yioop admin
     panel the current activity is the Manage Account activity. For now,
@@ -1575,6 +1585,11 @@ Yioop from a mobile device.
     delete that role.</p>

     <p><a href="#toc">Return to table of contents</a>.</p>
+    <h3 id='group-feeds'>Group Feeds</h3>
+    <p><a href="#toc">Return to table of contents</a>.</p>
+
+    <h3 id='group-wikis'>Group Wikis</h3>
+    <p><a href="#toc">Return to table of contents</a>.</p>

 <h2 id='crawl-results'>Crawling and Customizing Results</h2>
     <h3 id='crawls'>Performing and Managing Crawls</h3>
@@ -2765,21 +2780,26 @@ terms or meta-word could be used to look up this document in a Yioop index.</p>
     the RSS feed; URL, the url of the RSS feed, and Language, what language
     the RSS feed is. This last element is used to control whether or
     not a news item will display given the current language settings of
-    Yioop. If under the Configure activity, the subsearch checkbox
-    is checked so that subsearches are displayed, then Yioop will
-    try to download its list of RSS feeds hourly. This does not need
-    a queue_server or a fetcher running, and is accomplished by making
-    a curl request from the web app to the sites in question on the
-    first search performed on Yioop after an hour has elapsed between
-    the last RSS download.</p>
-    <p>Beneath this top form is a table listing all the currently
-    added media sources, their urls, and a link that allows one to delete
-    the source.</p>
-    <p>The second form on the page is the Add a Subsearch form.
-    This form has three fields: Folder Name is a short familiar
+    Yioop. If under Manage Machines the News Updater on the Name Server
+    is turned on, then these RSS feeds will be downloaded hourly.
+    If under the Search Time screen of the Page Options activity, the
+    subsearch checkbox is checked, then there will be a link to News which
+    appears on the top of the search page. Clicking on this link will display
+    news items in order of recentness.</p>
+    <p>Beneath this media sources form is a table listing all the currently
+    added media sources, their urls, and a links that allows one to edit or
+    delete sources.</p>
+    <p>The second form on the page is the Add a Subsearch form. The form allows
+    you to add a new specialized search link which may appear at the
+    top the search page. If there are more that three of these subsearch are
+    added or if one is seeing the page on a mobile platform, one instead gets
+    a "More" link. This links to the tool.php page which then lists out
+    all possible specialized search, some account links, and other useful Yioop
+    tools.
+    The Add a Subsearch form has three fields: Folder Name is a short familiar
     name for the subsearch, it will appear as part of the query
     string when the given subsearch is being performed. For example,
-    if the folder names was news, then s=news will appear as aprt of
+    if the folder names was news, then s=news will appear as part of
     the query string when a news subsearch is being done. Folder Name
     is also used to make the localization identifier used in translating
     the subsearch's name into different languages. This identifer will
@@ -2791,7 +2811,7 @@ terms or meta-word could be used to look up this document in a Yioop index.</p>
     this kind of subsearch.</p>
     <p>Beneath this form is a table listing all the currently added
     subsearches and their properties. The actions column at the end of this
-    table let's one either localize or delete a given subsearch. Clicking
+    table let's one either edit, localize or delete a given subsearch. Clicking
     localize takes one to the Manage Locale's page for the default locale
     and that particular subsearch localization identifier, so that you can
     fill in a value for it. Remembering the name of this identifier,
@@ -2819,35 +2839,43 @@ terms or meta-word could be used to look up this document in a Yioop index.</p>
     the given Yioop installation will be running a queue server or not.
     Finally, the  Number of Fetchers dropdown allows you to say how many
     fetcher instances you want to be able to manage for that machine.
-    The Delete Machine form allows you to remove a machine that you either
-    misconfigured  or that you no longer want to manage through this Yioop
-    instance. To modify a machine that you have already added, you should
-    delete it and re-add it using the setting you want. The Machine Information
-    section begins with a dropdown to control how you would like the news
-    updating to operate on the name server. This allows you to control whether
-    or not Yioop attempts to update its RSS (or Atom) search sources on
-    an hourly basis. The three possible values for this dropdown are:
-    Updates Off, in which case, no updating will occur; Web Update, which
-    means if someone come to the Yioop site and it has been longer than a hour
-    since the last update, as part of returning the page to the user, Yioop
-    will perform a news update; and News Update, which tells Yioop to start
-    the bin/news_update.php program as a process to handle news updating.
+    Beneath the Add machine form is the Machine Information listings.
+    This shows the currently known about machines. This list always
+    begins with the Name Server itself and a toggle to control whether or
+    not the News Updater process is running on the Name Server. This allows
+    you to control whether or not Yioop attempts to update its RSS (or Atom)
+    search sources on  an hourly basis.There is
+    also a link to the log file of the News Updater process.
+    Under the Name Server information is a dropdown that can be used to control
+    the number of current machine statuses that are displayed for all other
+    machines that have been added. It also might have next and previous arrow
+    links  to go through the currently available machines.
+    To modify a machine that you have already added,
     </p>
     <p>
-    Beneath the News Updater dropbox is a set of boxes for each machine you
-    have added to Yioop. Each box lists the queue server,
-    if any, and each of the fetchers you requested to be able to manage.
+    Beneath this dropdwon is a set of boxes for each machine you
+    have added to Yioop. In the far corner of this box is a link to Delete
+    that machine from the list of known machines, if desired. Besides this,
+    each box lists the queue server, if any, and each of the fetchers you
+    requested to be able to manage on that machine.
     Next to these there is a link to the log file for that server/fetcher
     and below this there is an On/Off switch for starting and stopping
     the server/fetcher. This switch is green if the server/fetcher is running
     and red otherwise. A similar On/Off switch is present to turn on
-    and off mirroring on a machine that is acting as a mirror.</p>
+    and off mirroring on a machine that is acting as a mirror. It is
+    possible for a switch to be yellow if the machine is crashed but where it
+    is possible that the machine
+    might be automatically restarted by Yioop without your intervention.</p>
     <h2 id='yioop-sites'>Building Sites with Yioop</h2>

     <h3 id='framework'>Building a Site using Yioop as Framework</h3>
     <p>The Yioop code base can serve as the code base for new custom search
-    web sites. The web-app portion of Yioop uses a model-view-controller (MVC)
-    framework. In this set-up, sub-classes of the Model class should handle
+    web sites. The web-app portion of Yioop uses a
+    <a href="https://en.wikipedia.org/wiki/Model-view-adapter"
+    >model-view-adapter (MVA)</a>
+    framework. This is a common, web-suitable variant on the more well-known
+    Model View Controller design pattern.  In this set-up,
+    sub-classes of the Model class should handle
     file I/O and database function, sub-classes of Views should be responsible
     for rendering outputs, and sub-classes of the Controller class
     do calculations on data received from the web and from the models to give
@@ -2871,52 +2899,28 @@ terms or meta-word could be used to look up this document in a Yioop index.</p>
     have names of the form somename_controller.php and the class inside them
     should be named SomenameController. Notice it is Somename rather than
     SomeName. These general naming conventions are used for models, views, etc.
-    Any Controller subclass has the fields $models, $views, and
-    $indexing_plugins. For the base class these are empty,
-    but for a subclass you create you can set them to be arrays listing the
-    names of the models, views, and indexing_plugins your class uses. Yioop
-    tries to load each of the classes listed in these arrays. For example
-    if MyController defined:</p>
-    <pre>
-    var $view = array("search");
-    </pre>
+    Any Controller subclass has methods component($name), model($name),
+    view($name), and indexing_plugin($name). These methods load,
+    instantiate, and return a class with the given name. For example,
+    $my_controller->model("crawl"); checks to see if a CrawlModel has already
+    been instantiated, if so, it returns it; if not, it does a r
+    equire_once on model/crawl_model.php and then instantiates a CrawlModel
+    saves a reference to it, and returns it.
+    </p>
     <p>
-    Then Yioop would first look for a file: APP_DIR/views/search_view.php
+    If a require once is needed. Yioop first looks in APP_DIR. For
+    example, $my_controller->view("search") would first look for a
+    file: APP_DIR/views/search_view.php
     to include, if it cannot find such a file then it tries to include
     BASE_DIR/views/search_view.php. So to change the behavior of an existing
     BASE_DIR file one just has a modified copy of the file in the appropriate
     place in your APP_DIR. This holds in general for other program files
-    such as views and plugins. It doesn't hold for resources such as images --
+    such as components, models, and plugins. It doesn't hold for resources
+    such as images --
     we'll discuss those in a moment. Notice because it looks in APP_DIR
     first, you can go ahead and create new controllers, models, views, etc
-    which don't exists in BASE_DIR and by setting the variables up right get
-    Yioop to load them. When an instance of the controller
-    class Yioop is using for a request is created, Yioop also creates
-    an instance of each View, Model and IndexingPlugin associated with that
-    controller and sets them as field variables. To refer to the instance o
-    SearchView in an instance $mycontroller of MyController we could use the
-    variable $mycontroller-&gt;searchView. For models, we would write
-    expressions like</p>
-<pre>
-    $mycontroller-&gt;mymodelnameModel
-</pre>
-    <p>and for plugins,</p>
-<pre>
-    $mycontroller-&gt;mypluginnamePlugin
-</pre>
-    <p>Notice in each expression the name of the
-    particular model or plugin is lowercase. Given this way of referring
-    to models, a controller can invoke a models methods to get data out
-    of the file system or from a database with expressions like:</p>
-<pre>
-    $mycontroller-&gt;mymodelnameModel-&gt;someMethod();
-</pre>
-    <p>
-    In the above, if the code was within a method in the controller class
-    itself, we would typically write things like:</p>
-<pre>
-    $this-&gt;mymodelnameModel-&gt;someMethod();
-</pre>
+    which don't exists in BASE_DIR and get
+    Yioop to load them.
     </p>
     A Controller must implement the abstract method
     processRequest. The index.php script after finishing its bootstrap process
@@ -2924,26 +2928,35 @@ terms or meta-word could be used to look up this document in a Yioop index.</p>
     load. If this was your controller, the code in your controller
     should make use of data gotten out of
     the loaded models as well as data from the web request to do some
-    calculations. The results of these calculations you would typically
-    put into an associative array $data and then call the base Controller method
-    displayView($view, $data). Here $view is the whichever loaded view object
-    you would like to display.
+    calculations. Typically, to determine the calculation performed, the
+    controller cleans and looks at $_REQUEST['a'], the request activity,
+    and uses the method call($activity) to call a method that can handle
+    the activity. When a controller is constructed it makes use
+    of the global variable $COMPONENT_ACTIVITIES defined in configs/config.php
+    to know which components have what activities. The call method checks
+    if there is a Component repsonsible for the requested activity, if there
+    is it calls that Component's $activity method, otherwise, the method
+    that handles $activity is assumed to come from the controller itself.
+    The results of the calculations done in $activity would typically be
+    put into an associative array $data. After the call method complete,
+    processRequest would typically take $data and call the base Controller
+    method displayView($view, $data). Here $view is the whichever loaded view
+    object you would like to display.
     </p>
     <p>
     To complete the picture of how Yioop eventually produces a web page or
     other output, we now describe how subclasses of the View class work.
-    Subclasses of View have four fields
-    $pages, $layout, $helpers, and $elements. In the base class, $pages,
-    $helpers, and $elements are empty arrays and the $layout is an empty
-    string. A subclass of View has at most one Layout and it is used
+    Subclasses of View have a field
+    $layout and two methods helper($name), and element($name).
+    A subclass of View has at most one Layout and it is used
     for rendering the header and footer of the page. It is included and
     instantiated by setting $layout to be the name of the layout one wants to
     load. For example, $layout="web"; would load either the
     file APP_DIR/views/layouts/web_layout.php or
     BASE_DIR/views/layouts/web_layout.php. This file is expected to have in it
     a class WebLayout extending Layout. The contructor of a Layout
-    take as argument a view which it sets to an instance variabe.
-    The way layouts get drawn is
+    take as argument a view which it sets to an instance variable.
+    The way Layout's get drawn is
     as follows: When the controller calls displayView($view, $data), this method
     does some initialization and then calls the render($data) of the base
     View class. This in turn calls the render($data) method of whatever
@@ -2952,24 +2965,9 @@ terms or meta-word could be used to look up this document in a Yioop index.</p>
     draws the footer.
     </p>
     <p>
-    The files loaded by the constructor of View for
-    each of $pages, $helpers, and $elements follows the same kind of pattern
-    as described above for Controller. The files loaded in the case of
-    $helpers as expected to be sub-classes of Helper and those of $elements
-    are expected to be sub-classes of Element. For helpers the given a view,
-    $view, with had $helpers = array("somehelper"); would get an instance
-    variable $view-&gt;somehelperHelper and similarly, for elements. Each
-    file loaded in because of the $pages array on the other is expected
-    to be a static portion of a web page in
-    WORK_DIRECTORY/locale/current-IANA-tag/pages.
-    For example, $pages=array("about"); would look for an about.thtml file
-    in this folder, load it and assign the string contents
-    to $page_objects["about"]. So using Yioop's shorthand for echo. A view
-    could render this page with the command:</p>
-    <pre>
-    e($this->page_objects["about"]);
-    </pre>
-    <p>
+    The methods helper($name) and element($name) of View load and intantiate,
+    if necessary, and return the Helper or Element $name in a similar
+    fashion to the model($name) method of Controller.
     Element's have render($data) methods and can be used to draw out portions
     of pages which may be common across Views. Helper's on the other hand
     are used typically to render UI elements. For example, OptionsHelper
@@ -3153,33 +3151,39 @@ xmlns:atom="http://www.w3.org/2005/Atom"
     top the page to the bottom as in Hebrew and Arabic, tb-rl from the top
     of the page to the bottom from right-to-left as in Classical Chinese, and
     finally, tb-lr from the top of the page to the bottom from left-to-right
-    as in non-cyrillic Mongolian. lr-tb and rl-tb support work better
-    than the vertical language support. As of this writing, only
-    Internet Explorer has some vertical language support and the Yioop
-    stylesheets for vertical languages still need some tweaking.
+    as in non-cyrillic Mongolian or
+    American Sign Language. lr-tb and rl-tb support work better
+    than the vertical language support. As of this writing,
+    Internet Explorer and WebKit based browsers (Chrome/Safari) have some
+    vertical language support and the Yioop
+    stylesheets for vertical languages still need some tweaking. For
+    information on the status in Firefox check out this
+    <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=writing-mode"
+    >writing mode bug</a>.
+    </p>
+    <p> Beneath the Add Locale form is an alphabetical in the local-tah
+    table listing some of the current locales. The Show Dropdown let's you
+    control let's you control how many of these locales are displayed in one
+    go. The Search link lets you bring up an advance search form to search for
+    particular locales and also allows you to control the direction of the
+    listing. The Locale List table first colume has a link with the name of the
+    locale. Clicking on this link brings up a page where one can edit
+    the strings for that locale. The next two columns of the Locale List table
+    give the locale tag and writing direction of the locale, this is followed
+    by the percent of strings translated. Clicking the Edit link in the column
+    let's one edit the locale tag, and text direction of a locale. Finally,
+    clicking the Delete link let's one delete a locale and all its strings.
     </p>
-    <p>The second form for this activity allows one to delete an existing
-    locale. Beneath this form is a table with the currently available
-    locales. Each row consists of four items: a link with the name of
-    a locale which can be used to edit the translations for the locale,
-    the IETF language tag for the locale, its writing mode, and finally
-    the percentage of strings ids that have already been translated
-    for the locale. To translate string ids for a locale click on its
-    link. This should display the following form:</p>
+    <p>To translate string ids for a locale click on its name
+    link. This should display the following forms and table of string
+    id and their transated values:</p>
 <img src='resources/EditLocaleStrings.png' alt='The Edit Locales form'/>
     <p>In the above case, the link for English was clicked. The Back link
-    in the corner can be used to written to the previous form.
-    The Static Pages download has a list of all the static pages (.thtml files)
-    which are in either the folder WORK_DIRECTORY/locale/current-tag/pages
-    (in this case, current-tag is en-US) or the folder
-    WORK_DIRECTORY/locale/default-tag/pages where default-tag is the IANA tag
-    for the default language of the Yioop installation. Selecting a page
-    allows one to edit it within Yioop. The idea is that one might have
-    a couple of static pages you have created in the default locale pages folder
-    and a localizer can use this interface to see what is written in these
-    files. Yioop automatically creates these files in the directory the
-    localizer is localizing for, and the localizer can translate their contents
-    into the appropriate language. Beneath this dropdown, the
+    in the corner can be used to written to the previous form. The drop down
+    controls whether to display all localizable strings or just those missing
+    translations. The Filter field can be used to restrict the list of
+    string id's presented to just those matching what is this field.
+    Beneath this dropdown, the
     Edit Locale page mainly consists of a two column table: the right column
     being string ids, the left column containing what should be their
     translation into the given locale. If no translation exists yet,
@@ -3344,6 +3348,7 @@ var alpha = "aåàbcçdeéêfghiîïjklmnoôpqrstuûvwxyz";
     if it exists. This function should return a string with the result
     of the transliteration. An example of doing this is given for the
     Telugu locale in Yioop.</p>
+    <h4>Thesaurus Results and Part of Speech Tagging</h4>
     <p><a href="#toc">Return to table of contents</a>.</p>
     <h2 id="advanced-topics">Advanced Topics</h2>
     <h3 id='customizing-code'>Modifying Yioop Code</h3>
@@ -3380,20 +3385,28 @@ var alpha = "aåàbcçdeéêfghiîïjklmnoôpqrstuûvwxyz";
     <p>
     A good reference implementation of a TextProcessor subclass can be found in
     html_processor.php. If you are trying to support a new file type, then
-    to get Yioop to use your processor you need to edit the configs/config.php
-    file. In config.php, you should add the extension of the file type
-    you are going to process to the array $INDEXED_FILE_TYPES. You will
-    also need to add an entry to the $PAGE_PROCESSORS array of the
-    form "new_mime_type_handle" =&gt; "NewProcessor" .
+    to get Yioop to use your processor you need to add lines to some global
+    variables at the top of the file. You should add the extension of the file
+    type you are going to process to the array $INDEXED_FILE_TYPES. You will
+    also need to add an entry
+    $PAGE_PROCESSORS["new_mime_type_handle"] = "NewProcessor". As an example,
+    these are the relevant lines at the top of ppt_processor.php:
     </p>
+    <pre>
+    $INDEXED_FILE_TYPES[] = "ppt";
+    $PAGE_PROCESSORS["application/vnd.ms-powerpoint"] = "PptProcessor";
+    </pre>
     <p>If your processor is cool, only relies on code you wrote, and you
     want to contribute it back to the Yioop, please feel free to
     e-mail it to chris@pollett.org .</p>
     <h4>Writing an Indexing Plugin</h4>
     <p>An indexing plugin provides a way that an advanced end-user
     can extend the indexing capabilities of Yioop. Bundled with
-    Yioop are two example indexing plugins. These are found in the
-    lib/indexing_plugins folder. If you decide to write your own plugin or
+    Yioop are three example indexing plugins. These are found in the
+    lib/indexing_plugins folder. We will discuss the code for the
+    recipe and word filter plugin here. The code for the address plugin, used to
+    extract snail mail address from web pages follows the same kind of
+    structure. If you decide to write your own plugin or
     want to install a third-party plugin you can put it in the folder:
     WORK_DIRECTORY/app/lib/indexing_plugins. The recipe indexing plugin
     can serve as a guide for writing your own plugin if you don't need
@@ -3421,10 +3434,7 @@ var alpha = "aåàbcçdeéêfghiîïjklmnoôpqrstuûvwxyz";
     pageProcessing($page, $url), postProcessing($index_name),
     getProcessors(), getAdditionalMetaWords() so they don't have their
     return NULL  default behavior. We explain what each of these
-    is for in a moment. If your plugin needs
-    to use any page processor or model classes, you should modify the
-    $processors and $model instance array variables of your plugin to
-    list the ones you need. During a web crawl, after a fetcher has downloaded
+    is for in a moment.  During a web crawl, after a fetcher has downloaded
     a batch of web pages, it uses a page's mimetype to determine a page
     processor class to extract summary data from that page. The page processors
     that Yioop implements can be found in the folder lib/processors. They
@@ -3638,6 +3648,8 @@ Please choose an option:
    the current directory, or it can be just the bundle directory's file
    name in which case WORK_DIRECTORY/cache will be assumed to be the
    bundle's location. The following are some examples of using arc tool.
+   Recall a backslash in Unix/OSX terminal is the line continuation character,
+   so we can image lines where it is indicated below as being all on one line.
    They are not all from the same session:</p>
    <pre>
 |chris-polletts-macbook-pro:bin:108&gt;php arc_tool.php list
@@ -3655,8 +3667,8 @@ chris-polletts-macbook-pro:bin:109&gt;

 ...

-|chris-polletts-macbook-pro:bin:158&gt;php arc_tool.php info <?php
-?>/Applications/XAMPP/xamppfiles/htdocs/crawls/cache/IndexData1293767731
+|chris-polletts-macbook-pro:bin:158&gt;php arc_tool.php info \
+   /Applications/XAMPP/xamppfiles/htdocs/crawls/cache/IndexData1293767731

 Bundle Name: IndexData1293767731
 Bundle Type: IndexArchiveBundle
@@ -3679,8 +3691,8 @@ Meta Words:
    http://www.ucanbuyart.com/(.+)/(.+)/(.+)/(.+)/

 |chris-polletts-macbook-pro:bin:159&gt;
-|chris-polletts-macbook-pro:bin:202&gt;php arc_tool.php show <?php
-?>/Applications/XAMPP/xamppfiles/htdocs/crawls/cache/Archive1293767731 0 3
+|chris-polletts-macbook-pro:bin:202&gt;php arc_tool.php show \
+    /Applications/XAMPP/xamppfiles/htdocs/crawls/cache/Archive1293767731 0 3

 BEGIN ITEM, LENGTH:21098
 [URL]
ViewGit