<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to A34File</title><link>https://sourceforge.net/p/atomic34/wiki/A34File/</link><description>Recent changes to A34File</description><atom:link href="https://sourceforge.net/p/atomic34/wiki/A34File/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 23 Aug 2011 17:21:06 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/atomic34/wiki/A34File/feed" rel="self" type="application/rss+xml"/><item><title>WikiPage A34File modified by Mathieu Durand</title><link>https://sourceforge.net/p/atomic34/wiki/A34File/</link><description>&lt;pre&gt;--- v5 
+++ v6 
@@ -72,4 +72,4 @@
 		}
 	}
 
-Continue at [WritingJUnit]
+Continue at [Writing jUnit tests]
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mathieu Durand</dc:creator><pubDate>Tue, 23 Aug 2011 17:21:06 -0000</pubDate><guid>https://sourceforge.net7bf2c1ddef7e32be90679720c2e5398dcc005a7d</guid></item><item><title>WikiPage A34File modified by Mathieu Durand</title><link>https://sourceforge.net/p/atomic34/wiki/A34File/</link><description>&lt;pre&gt;--- v4 
+++ v5 
@@ -71,3 +71,5 @@
 				}
 		}
 	}
+
+Continue at [WritingJUnit]
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mathieu Durand</dc:creator><pubDate>Tue, 23 Aug 2011 17:20:33 -0000</pubDate><guid>https://sourceforge.netb6ddd7d5c3cf5a910e34e7339e9815c59cb79dee</guid></item><item><title>WikiPage A34File modified by Mathieu Durand</title><link>https://sourceforge.net/p/atomic34/wiki/A34File/</link><description>&lt;pre&gt;--- v3 
+++ v4 
@@ -1,4 +1,4 @@
-The a34 file is the heart of the generator. It's a DSL that allows you to define the elements composing the pages of your site.
+The a34 file is the heart of the generator. It's a DSL that allows you to define the elements composing the pages of your site. The Eclipse plugin gives you an editor for this type of file, with syntax coloring, auto-completion and some validation checking.
 
 The first line of the file is the site name and package, 
 `Site Google package net.sf.atomic34.example.google`
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mathieu Durand</dc:creator><pubDate>Mon, 22 Aug 2011 15:09:08 -0000</pubDate><guid>https://sourceforge.netea20cf361d1a36a42f27e147588b6b556e3cd802</guid></item><item><title>WikiPage A34File modified by Mathieu Durand</title><link>https://sourceforge.net/p/atomic34/wiki/A34File/</link><description>&lt;pre&gt;--- v2 
+++ v3 
@@ -17,5 +17,57 @@
 
 * The path of a page can either be relative or absolute. The base path of relative urls can be specified in your unit test, in case you have multiple site with the same elements to tests.
 * Parameters can either be pathparameter or querystringparameter. pathparameter are mandatory and querystringparameter can either be optional or mandatory. 
-** To define a pathparameter the syntax to use is `pathparameter &lt;name&gt;`. pathparameters should also be present in the actual url in the form of {name}. For example to define the pathparameter `language` the url could be /mysite/{language}/index.html. If the parameter is missing from the url it will have no effect.
-** To define a querystringparameter, the syntax is `querystringparameter &lt;name in code&gt; named &lt;name on the url&gt; {optional}`. querystringparameter don't have to be present in the url since that will be added at runtime (order of parameters in a query string should not matter)
+    * To define a pathparameter the syntax to use is `pathparameter &lt;name&gt;`. pathparameters should also be present in the actual url in the form of {name}. For example to define the pathparameter `language` the url could be /mysite/{language}/index.html. If the parameter is missing from the url it will have no effect.
+    * To define a querystringparameter, the syntax is `querystringparameter &lt;name in code&gt; named &lt;name on the url&gt; {optional}`. querystringparameter don't have to be present in the url since that will be added at runtime (order of parameters in a query string should not matter)
+* elements are defined using the syntax `element &lt;name&gt; &lt;type&gt; &lt;selector&gt;`
+    * basic element types are field, image and text. They all use the same syntax, for example `element nameField field selected by css "input#name"`. The selector syntax will be explained later.
+    * links elements are similar to the basic types but that use an additional element at the end, the transitions keyword. In Atomic34, a link is an abstraction. A button can be a link. The point of links is that they allow a transition to another page, what ever the underlaying html element is. `element searchButton link selected by css "button#search" transitions { Search }` define a searchButton element that lead to the Search page. The Search page must be defined somewhere in the a34 file as the editor enforce it.
+    * another type of element is the components. elements of type component refer to a component that has been defined in the file. For example, `element toolbar component Toolbar` would refer to a Toolbar component meaning that the page contains that component.
+    * finally, the last element type is `list of components`. This type is used for a component that repeat itself many time. This is useful for anything that use repetitions like table rows, html list, ... For example, if we have a search result where each result is a `LI` tag containing an image, a text and a link, we could define a component `SearchResultElement` containing a image, a text and a link, and then use this syntax to define a list of `SearchResultElement`, `element searchResults list of components SearchResultElement selected by ul#results li` . Since the SearchResultElement component is only used inside this page, we don't have to define it globally in the a34 file. We can define it inside the Search page inside the scope of `{ ... }`
+
+
+Here is a complete example defining elements of the google homepage.
+
+	Site Google package net.sf.atomic34.example.google {
+		page WebSearch {
+			path "/webhp?hl=en&amp;tab=iw" {
+				querystringparameter SearchQuery named q optional
+			}
+			element toolbar component Toolbar
+			element queryInputField field selected by css "input#lst-ib"
+			element searchButton link selected by css "input[name='btnG']"
+				transitions { WebSearchResults }
+			element searchButtonLucky link selected by css "input[name='btnI']"
+		}
+	
+		page WebSearchResults {
+			element toolbar component Toolbar
+			element results list of components SearchResultElement 
+				selected by css "ol.rso li"
+			component SearchResultElement {
+				element title link selected by css "h3.r"
+				element url text selected by css "cite"
+				element shortDescription text selected by css "span.st"
+			}
+		}
+	
+		page ImageSearch {
+			path "/imghp?hl=en&amp;tab=wi" {
+				querystringparameter SearchQuery named q
+			}
+			element toolbar component Toolbar
+			element queryInputField field selected by css "div#qbc input[name='q']"
+			element searchImagesButton link selected by css "input[name='btnG']"
+		}
+	
+		component Toolbar {
+			element webLink link selected by css "div#gbz ol li:nth-child(1)" 
+				transitions {
+					WebSearch
+				}
+			element imagesLink link selected by css "div#gbz ol li:nth-child(2)" 
+				transitions {
+					ImageSearch
+				}
+		}
+	}
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mathieu Durand</dc:creator><pubDate>Mon, 22 Aug 2011 15:07:41 -0000</pubDate><guid>https://sourceforge.nete94e9de7ce712f033db3e28fcb4fb03015f0b5b2</guid></item><item><title>WikiPage A34File modified by Mathieu Durand</title><link>https://sourceforge.net/p/atomic34/wiki/A34File/</link><description>&lt;pre&gt;--- v1 
+++ v2 
@@ -7,9 +7,15 @@
 Next comes the pages and component. A page represent a page on your site and a component is a part of a page that is usually reused in more than one page, for example, a site header or navigation menu. Components can be global (usable in every pages) or local to a page. You create local compoment for the safe of readability or as we will see later, to create a component list.
 
 Pages use that following syntax:
+
     page &lt;Name&gt; {
         path "relative or absolute path here" {
             &lt;parameters here&gt;
         }
         &lt;elements here&gt;
     }
+
+* The path of a page can either be relative or absolute. The base path of relative urls can be specified in your unit test, in case you have multiple site with the same elements to tests.
+* Parameters can either be pathparameter or querystringparameter. pathparameter are mandatory and querystringparameter can either be optional or mandatory. 
+** To define a pathparameter the syntax to use is `pathparameter &lt;name&gt;`. pathparameters should also be present in the actual url in the form of {name}. For example to define the pathparameter `language` the url could be /mysite/{language}/index.html. If the parameter is missing from the url it will have no effect.
+** To define a querystringparameter, the syntax is `querystringparameter &lt;name in code&gt; named &lt;name on the url&gt; {optional}`. querystringparameter don't have to be present in the url since that will be added at runtime (order of parameters in a query string should not matter)
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mathieu Durand</dc:creator><pubDate>Mon, 22 Aug 2011 14:50:06 -0000</pubDate><guid>https://sourceforge.net336a4f5a9f6a4f7d26ad1948cfa81d67fde45fa7</guid></item><item><title>WikiPage A34File modified by Mathieu Durand</title><link>https://sourceforge.net/p/atomic34/wiki/A34File/</link><description>The a34 file is the heart of the generator. It's a DSL that allows you to define the elements composing the pages of your site.

The first line of the file is the site name and package, 
`Site Google package net.sf.atomic34.example.google`
The package is used to as a java package for the generated code.

Next comes the pages and component. A page represent a page on your site and a component is a part of a page that is usually reused in more than one page, for example, a site header or navigation menu. Components can be global (usable in every pages) or local to a page. You create local compoment for the safe of readability or as we will see later, to create a component list.

Pages use that following syntax:
    page &lt;Name&gt; {
        path "relative or absolute path here" {
            &lt;parameters here&gt;
        }
        &lt;elements here&gt;
    }
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mathieu Durand</dc:creator><pubDate>Mon, 22 Aug 2011 14:33:13 -0000</pubDate><guid>https://sourceforge.netc2a538843a2ee007f1a7d6a82c1e335f14ccbbe5</guid></item></channel></rss>