Antwrap 0.5.4-java → 0.6.0-java

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -6,7 +6,10 @@
6
6
 
7
7
  https://rubyforge.org/projects/antwrap/
8
8
 
9
+ Please see the docs/index.html file for usage instructions.
10
+
9
11
  Questions?
10
12
  Contact: caleb.powell@gmail.com
11
13
 
12
- More documentation to come.
14
+
15
+
@@ -1,110 +1,148 @@
1
- <html><head><title>Antwrap - Invoke Ant tasks from your Ruby/JRuby scripts!</title></head><body><ul>
2
- <h1>Antwrap</h1>
3
- <h3>Invoke Ant tasks from your Ruby/JRuby scripts!</h3><br/>
4
- <pre><li>Sample code of the Antwrap library looks like this;
5
-
6
- <code lang="ruby">
7
- #All options are optional. The defaults are as follows;
8
- #{:name=&gt'', :basedir=&gt'.', :declarative=&gt true, :logger=&gt Logger.new(STDOUT), :loglevel=&gt Logger::DEBUG}
9
- #so you can call AntProject.new() if you like. If you specify an :ant_home property, Antwrap will load the jar files
10
- for you dynamically. If not, it is assumed that they are in your Classpath.
11
-
12
- @ant = AntProject.new({:ant_home=&gt"/Users/fooman/tools/apache-ant-1.7.0",
13
- :name=&gt"FooProject",
14
- :basedir=&gt current_dir,
15
- :declarative=&gt true,
16
- :logger=&gt Logger.new(STDOUT),
17
- :loglevel=&gt Logger::DEBUG})
18
-
19
- @ant.path(:id =&gt; "other.class.path"){
20
- pathelement(:location =&gt; "classes")
21
- pathelement(:location =&gt; "config")
22
- }
23
-
24
-
25
- @ant.path(:id =&gt; "common.class.path"){
26
- fileset(:dir =&gt; "${common.dir}/lib"){
27
- include(:name =&gt; "**/*.jar")
28
- }
29
- pathelement(:location =&gt; "${common.classes}")
30
- }
31
-
32
- @ant.javac(:srcdir =&gt; "test", :destdir =&gt; "classes"){
33
- classpath(:refid =&gt; "common.class.path")
34
- classpath(:refid =&gt; "foo.class.path")
35
- }
36
- </code>
37
- </li>
38
- </pre>
39
-
40
- <pre><li>Alternatively, you can declare your Ant project to run in non-declarative mode, so that it only executes tasks
41
- upon the invocation of the execute() method (this is a more Object Oriented approach, and may be useful in some
42
- circumstances):
43
-
44
- <code lang="ruby">
45
- @ant = AntProject.new({:name=&gt"FooProject", :declarative=&gt false})
46
-
47
- javac_task = @ant.javac(:srcdir =&gt; "test", :destdir =&gt; "classes"){
48
- classpath(:refid =&gt; "common.class.path")
49
- classpath(:refid =&gt; "foo.class.path")
50
- }
51
-
52
- javac_task.execute
53
- </code>
54
- </li>
55
- </pre>
56
-
57
- <pre><li>There are some reserved words that we have to work around. For example, Ant-Contrib tasks such as 'if' and 'else'
58
- conflict with the Ruby reserved words. Under most circumstances, you won't need to use these tasks (indeed, the
59
- awkwardness of conditional operations in Ant scripts is likely one of the reasons why you want to move to a build system
60
- such as Rake). Nevertheless, there are that occasions demands it. Reserved words like this can be worked around by simply prepending an
61
- underscore character ('_') to the task:
62
-
63
- <code lang="ruby">
64
- #This is an example of the Ant-Contrib tasks.
65
- #note: I added an underscore to 'equals' even though it isn't a reserved word.
66
- #This makes the code block more symmetrical (it's not required though). It also
67
- #illustrates that you can apply an underscore to any task and it will be stripped by Antwrap.
68
- @ant._if(){
69
- _equals(:arg1 => "${bar}", :arg2 => "bar")
70
- _then(){
71
- echo(:message => "if 1 is equal")
72
- }
73
- _else(){
74
- echo(:message => "if 1 is not equal")
75
- }
76
- }
77
- </code>
78
- </li>
79
- </pre>
80
-
81
- <pre><li>Content data is added via a 'pcdata' attribute:
82
-
83
- <code lang="ruby">
84
- @ant.echo(:pcdata =&gt; "&lt;foo&amp;bar&gt;")
85
- </code>
86
- </li>
87
-
88
- <li>Antwrap includes a conversion script to take an existing Ant build file and convert it to a rake file. It will
89
- convert each Ant Target into a JRake task. It will also convert each and every Any Task into an Antwrap method call.
90
- Ant tasks that conflict with Ruby keywords are prepended with an
91
- underscore (see above).
92
-
93
- </li>
94
- <li>Antwrap is a Beta release. I'd love any feedback you can provide on your experence with it.
95
- There are no 3rd party jars required other than the Ant jar files in your Classpath. Antwrap will run
96
- on both the Ruby and the JRuby platforms. The Ruby gem requires the Ruby Java Bridge (RJG) gem
97
- in order to instantiate Java objects.
98
- </li></pre>
99
-
100
- </ul>
101
- <a href='http://rubyforge.org/projects/antwrap/'>Project Info</a><br/>
102
- <a href='http://buildr.rubyforge.org/'>Buildr</a><br/>
103
- <a href='http://rubyforge.org/projects/raven/'>Raven</a><br/>
104
- Comments or Questions? <br/>
105
-
106
- Caleb Powell <br>
107
- caleb.powell@gmail.com <br>
108
-
109
- </body>
1
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
2
+ <head>
3
+
4
+ <style>
5
+ BODY, P, DIV, H1, H2, H3, H4, H5, H6, ADDRESS, OL, UL, TITLE, TD, OPTION, SELECT {
6
+ font-family: Verdana;
7
+
8
+ }
9
+
10
+ BODY, P, DIV, ADDRESS, OL, UL, LI, TITLE, TD, OPTION, SELECT {
11
+ font-size: 10.0pt;
12
+ margin-top:0pt;
13
+ margin-bottom:0pt;
14
+ }
15
+
16
+ BODY, P {
17
+ margin-left:0pt;
18
+ margin-right:0pt;
19
+ }
20
+
21
+ BODY {
22
+ line-height: ;
23
+ background: #ffffff;
24
+ margin: 6px;
25
+ padding: 0px;
26
+ }
27
+
28
+ h6 { font-size: 10pt }
29
+ h5 { font-size: 11pt }
30
+ h4 { font-size: 12pt }
31
+ h3 { font-size: 13pt }
32
+ h2 { font-size: 14pt }
33
+ h1 { font-size: 16pt }
34
+
35
+ blockquote {padding: 10px; border: 1px #DDDDDD dashed }
36
+
37
+ a img {border: 0}
38
+
39
+ </style>
40
+
41
+
42
+
43
+
44
+ </head>
45
+
46
+
47
+ <body revision="dfd4dds3_4d59vj6:67">
48
+
49
+ <div style="PADDING:8px; BACKGROUND-COLOR:white">
50
+ <h3>
51
+ <b> Antwrap Introduction</b>
52
+ </h3>
53
+ <br>
54
+ Antwrap is a Ruby library that can be used to invoke Ant tasks. It is being
55
+ used in the <a href=http://buildr.rubyforge.org/ title=Buildr>Buildr</a>
56
+ project to execute Ant tasks in a Java project.<br>
57
+ If you are tired of fighting with Ant or Maven XML files in your Java project,
58
+ take some time to check out Buildr!<br>
59
+ Antwrap runs on both the native Ruby and the JRuby interpreters. Antwrap is
60
+ compatible with Ant versions 1.5.4, 1.6.5 and 1.7.0. For more information,<br>
61
+ see the
62
+ <a href=http://rubyforge.org/projects/antwrap/ title="Project Info">Project
63
+ Info</a> page.<br>
64
+ <h3>
65
+ <b>Installing Antwrap</b>
66
+ </h3>
67
+ Installing Antwrap is done via the RubyGem gem command. In your OS shell type;<br>
68
+ <br>
69
+ <div style=MARGIN-LEFT:40px>
70
+ <span style=BACKGROUND-COLOR:#ffffff>$ gem install antwrap </span><br>
71
+ </div>
72
+ <br>
73
+ You will be prompted with the following options:<br>
74
+ <br style=BACKGROUND-COLOR:#ffffff>
75
+ <div style=MARGIN-LEFT:40px>
76
+ <span style=BACKGROUND-COLOR:#ffffff>$Select which gem to install for your
77
+ platform (powerpc-darwin8.0) </span><br style=BACKGROUND-COLOR:#ffffff>
78
+ <span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; 1. Antwrap 0.6.0
79
+ (java) </span><br style=BACKGROUND-COLOR:#ffffff>
80
+ <span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; 2. Antwrap 0.6.0
81
+ (ruby)</span><br style=BACKGROUND-COLOR:#ffffff>
82
+ <span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; 3. Antwrap 0.5.4
83
+ (java) </span><br style=BACKGROUND-COLOR:#ffffff>
84
+ <span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; 4. Antwrap 0.5.4
85
+ (ruby) </span><span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp;
86
+ </span><span style=BACKGROUND-COLOR:#ffffff><br>
87
+ <br>
88
+ </span>
89
+ </div>
90
+ If you are using the native Ruby interpreter or running the Buildr project,
91
+ then you want to select the <i>ruby</i> option (in this case, #2).<br>
92
+ If you are using Antwrap on the JRuby interpreter, select the <i>java</i>
93
+ option. The native Ruby version of Antwrap depends on another<br>
94
+ gem called <a href=http://rjb.rubyforge.org/ title="RJB (RubyJavaBridge)">RJB
95
+ (RubyJavaBridge)</a> and you will be prompted to install this as part of the
96
+ Antwrap installation. Do so. The RJB gem makes it possible<br>
97
+ for a Ruby script to instantiate Java classes via the Java Native Interface.
98
+ If you chose the java gem, there are no further dependencies. Check the<br>
99
+ RJB site for how to get RJB running (usually, it's just a matter of setting
100
+ the $JAVA_HOME and the $LD_LIBRARY_PATH environment variables).<br>
101
+ <h3>
102
+ Using Antwrap
103
+ </h3>
104
+ The Antwrap library is pretty simple to use, and should look very familiar to
105
+ anyone who has written Ant tasks using XML.<br>
106
+ You begin by instantiating an AntProject;<br>
107
+ <br>
108
+ <div style=MARGIN-LEFT:40px>
109
+ <span style=BACKGROUND-COLOR:#ffffff> @ant = AntProject.new()</span><br>
110
+ </div>
111
+ <br>
112
+ You can pass in a Hash of project options like so;<br>
113
+ <code>
114
+ </code>
115
+ <div style=MARGIN-LEFT:40px>
116
+ <span style=BACKGROUND-COLOR:#cccccc><br>
117
+ <span style=BACKGROUND-COLOR:#ffffff>options = {</span></span><code lang=ruby style=BACKGROUND-COLOR:#ffffff>:ant_home=&gt;"/Users/fooman/tools/apache-ant-1.7.0", :name=&gt;"FooProject", :basedir=&gt; some_dir, </code><br style=BACKGROUND-COLOR:#ffffff>
118
+ <code lang=ruby style=BACKGROUND-COLOR:#ffffff> :declarative=&gt; true, :logger=&gt; Logger.new(STDOUT), :loglevel=&gt; Logger::DEBUG</code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>}</code><br style=BACKGROUND-COLOR:#ffffff>
119
+ <code lang=ruby style=BACKGROUND-COLOR:#ffffff></code><span style=BACKGROUND-COLOR:#ffffff><br>@ant = AntProject.new(options)</span><br></div><pre><code lang=ruby>The default options for an AntProject are as follow</code><code lang=ruby><br></code></pre>
120
+ <ol>
121
+ <li>
122
+ <font face="Arial Black"><code lang=ruby><span style=FONT-STYLE:italic>:name</span> = The name of your AntProject. The default is <i>''</i>.</code></font><code></code></li><li><code></code><span style=FONT-STYLE:italic>:basedir</span> = The location of your project base directory. The default is <i>File.pwd</i>.</li><li><span style=FONT-STYLE:italic>:declarative</span>
123
+ = If true, the AntProject will execute the task when you invoke it. If false, it
124
+ will return an instance of the task. Default value is <i>true</i>.</li><li><span style=FONT-STYLE:italic>:logger</span> = The Logger to use. The default id <i>Logger.new(STDOUT)</i></li><li><span style=FONT-STYLE:italic>:loglevel</span> = The log level. Default is <i>Logger::Erro</i>r</li><li><span style=FONT-STYLE:italic>:ant_home</span>
125
+ = The location of you Ant installation. If provided, Antwrap will
126
+ locate and load the Ant Jar files into the CLASSPATH. It will only do
127
+ this once per Ruby process, so even if you create multiple AntProject instances,
128
+ it only loads the required files once. If :ant_home is not provided, it is assumed
129
+ that you have added the Ant jar files to your CLASSPATH manually.<code lang=ruby> </code><br></li></ol><pre><code lang=ruby>Once you have an AntProject instance, you can begin invoking tasks. To do so, you simply invoke the desired task on the AntProject. You pass in <br>task attributes via a Hash, and you pass in child tasks inside a block. For example;<br></code></pre><div style=MARGIN-LEFT:40px><code lang=ruby style=BACKGROUND-COLOR:#ffffff>@ant.path(:id =&gt; "other.class.path"){ |ant|&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; ant.pathelement(:location =&gt; "classes")&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; ant.pathelement(:location =&gt; "config")&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff>}&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <br></code><code lang=ruby style=BACKGROUND-COLOR:#ffffff></code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>@ant.path(:id =&gt; "common.class.path"){|ant|&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;</code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; ant.fileset(:dir =&gt; "${common.dir}/lib"){&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ant.include(:name =&gt; "**/*.jar")&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; ant.pathelement(:location =&gt; "${common.classes}")&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br></code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>}&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><code lang=ruby style=BACKGROUND-COLOR:#ffffff></code><span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </span><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff>@ant.javac(:srcdir =&gt; "test", :destdir =&gt; "classes"){</code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>|ant|</code><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; ant.classpath(:refid =&gt; "common.class.path")&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; ant.classpath(:refid =&gt; "foo.class.path")&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff>}&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><br></div><h3><b>Declarative Mode</b></h3>
130
+ <pre>By default, Antwrap runs in <i>declarative</i> mode. This means that the AntProject will execute the tasks as you declare them. Alternatively, you can declare your<br>Ant project to run in non-declarative mode, so that it only executes tasks upon the invocation of the execute() method (this is a more Object Oriented <br>approach, and may be useful in some circumstances). For example;<br></pre><div style=MARGIN-LEFT:40px><code lang=ruby style=BACKGROUND-COLOR:#ffffff>@ant = AntProject.new({:name=&gt;"FooProject", :declarative=&gt; false})&nbsp;&nbsp; &nbsp;&nbsp; <br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff></code> <code lang=ruby style=BACKGROUND-COLOR:#ffffff>javac_task = @ant.javac(:srcdir =&gt; "test", :destdir =&gt; "classes"){</code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>|ant|</code><code lang=ruby style=BACKGROUND-COLOR:#ffffff> </code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; ant.classpath(:refid =&gt; "common.class.path")&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; ant.classpath(:refid =&gt; "foo.class.path")&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff>}&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br></code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br>javac_task.execute&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><br></div><h3>Reserved Words</h3><pre>If your Ant task conflicts with a Ruby reserved word, you can prep-end an underscore. For example, Ant-Contrib <br>tasks such as 'if' and 'else' conflict with the Ruby reserved words;<br><br></pre><div style=MARGIN-LEFT:40px><code lang=ruby style=BACKGROUND-COLOR:#ffffff>@ant._if(){|ant|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; ant._equals(:arg1 =&gt; "${bar}", :arg2 =&gt; "bar")&nbsp;&nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; ant._then(){&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ant.echo(:message =&gt; "if 1 is equal")&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</code><code lang=ruby style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; ant._else(){&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ant.echo(:message =&gt; "if 1 is not equal")&nbsp;&nbsp;&nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff> &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </code><br><br></div><pre>Under most circumstances, you won't need to use these tasks because the Ruby language (OK... any language) can handle <br>conditionals better than Ant. Indeed, the awkwardness of conditional operations in Ant scripts is likely one of the <br>reasons why you want to move to a build system such as Buildr.<br></pre><h3>Content Data</h3><pre>Content data is added via a 'pcdata' attribute:<br></pre><div style="MARGIN-LEFT:40px; BACKGROUND-COLOR:#ffffff"><code lang=ruby>@ant.echo(:pcdata =&gt; "&lt;foo&amp;bar&gt;")</code></div><h3 style=FONT-STYLE:italic>Changes</h3><ul style=MARGIN-LEFT:40px><li><font size=1 style="FONT-STYLE:italic; FONT-WEIGHT:bold; TEXT-DECORATION:underline"><font size=2>Version 0.6.0</font></font><font size=1><font size=2>: The Antwrap syntax has changed. Prior to version 0.6.0, any blocks passed in with a task were evaluated within the context of the task itself (using :instance_eval), so there was no AntProject instance passed to the block. For example, when the <span style=FONT-STYLE:italic>path</span> task block was evaluated, it was evaluated within the context of the <span style=FONT-STYLE:italic>path</span> task, so the <span style=FONT-STYLE:italic>pathelement</span> children were assumed to be child tasks;</font></font><span style=BACKGROUND-COLOR:#cccccc></span></li></ul><div style="TEXT-ALIGN:left; MARGIN-LEFT:120px"><span style=BACKGROUND-COLOR:#ffffff><br><span style=BACKGROUND-COLOR:#ffffff>@ant.path(:id =&gt; "other.class.path"){&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><code style=BACKGROUND-COLOR:#ffffff></code></span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff><code></code> &nbsp;&nbsp;&nbsp; pathelement(:location =&gt; "classes")&nbsp;&nbsp;&nbsp;&nbsp; </span><code style=BACKGROUND-COLOR:#ffffff></code><br style=BACKGROUND-COLOR:#ffffff><code style=BACKGROUND-COLOR:#ffffff></code><span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; pathelement(:location =&gt; "config"<code>)&nbsp;&nbsp;&nbsp; </code></span><code lang=ruby style=BACKGROUND-COLOR:#cccccc><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>}<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</span></code><br></div><div style=MARGIN-LEFT:80px>This approach is pleasing syntactically because it looks like the XML syntax we are accustomed to. Unfortunately, it means that you can't execute arbitrary code in the block. For example, this would fail because the AntTask class does not contain a foobar() method; <br><div style=MARGIN-LEFT:40px><span style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#cccccc><br><span style=BACKGROUND-COLOR:#ffffff>def foobar &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; return "classes"&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>end&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; </span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>@ant.path(:id =&gt; "other.class.path"){&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </span></span><code style=BACKGROUND-COLOR:#ffffff></code></span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff><code></code> &nbsp;&nbsp;&nbsp; foo = foobar() &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; pathelement(:location =&gt; foo)&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br></span><code style=BACKGROUND-COLOR:#ffffff></code><span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; pathelement(:location =&gt; "config"<code>)&nbsp;&nbsp; &nbsp; <br>}&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </code></span><code lang=ruby style=BACKGROUND-COLOR:#ffffff></code><br style=BACKGROUND-COLOR:#ffffff><code lang=ruby style=BACKGROUND-COLOR:#ffffff></code></div>
131
+
132
+ <code lang=ruby style=BACKGROUND-COLOR:#ffffff>
133
+ </code><br>To rectify this, the AntProject now yields to the block and passes itself as a parameter. So calling your foobar() method will work;<br><br style=BACKGROUND-COLOR:#ffffff><div style=MARGIN-LEFT:40px><span style=BACKGROUND-COLOR:#ffffff>def foobar </span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>
134
+ &nbsp;&nbsp;&nbsp; return "classes"</span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>
135
+ end</span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>
136
+ </span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>
137
+ @ant.path(:id =&gt; "other.class.path"){ |ant|<code></code></span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff><code></code> &nbsp;&nbsp;&nbsp; foo = foobar() &nbsp; </span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>
138
+ &nbsp;&nbsp;&nbsp; ant.pathelement(:location =&gt; foo)</span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff>
139
+ </span><code style=BACKGROUND-COLOR:#ffffff></code><span style=BACKGROUND-COLOR:#ffffff>&nbsp;&nbsp;&nbsp; ant.pathelement(:location =&gt; "config"<code>)</code></span><br style=BACKGROUND-COLOR:#ffffff><span style=BACKGROUND-COLOR:#ffffff><code>
140
+ }</code></span><code lang=ruby style=BACKGROUND-COLOR:#cccccc></code><br></div>
141
+
142
+ <code lang=ruby style=BACKGROUND-COLOR:#cccccc></code>
143
+
144
+
145
+ <code lang=ruby style=BACKGROUND-COLOR:#cccccc>
146
+ </code><br>While slightly more verbose, this changes make life easier when invoking Ant tasks, and is more typical of a Ruby library.<br></div><pre><span style=FONT-STYLE:italic><br>Comments or Questions? Contact caleb.powell@gmail.com </span><br></pre>
147
+ </div></body>
110
148
  </html>
@@ -0,0 +1,669 @@
1
+ /* Page basics */
2
+ BODY {
3
+ PADDING-TOP: 0px; MARGIN-TOP: 0px;
4
+ background-color: white
5
+ }
6
+ body.app, table.app, td.app, p.app, body.app, ul.app, ol.app, input.app, select.app, a.app, option.app {
7
+ font-family: Arial,sans-serif; font-size: 13px;
8
+ direction: ltr;
9
+ }
10
+ table.ff, td.ff, p.ff, body.ff, ul.ff, ol.ff, input.ff, select.ff, a.ff, option.ff {
11
+ font-family: Arial,sans-serif
12
+ }
13
+ table.fs, td.fs, p.fs, body.fs, ul.fs, ol.fs, input.fs, select.fs, a.fs, option.fs {
14
+ font-size: 13px
15
+ }
16
+
17
+
18
+ /* Links */
19
+ A.app:link, A.app:visited {
20
+ COLOR: #112ABB; font-family: Arial,Sans-serif; font-size: 13px
21
+ }
22
+ A.smalllink:link, A.smalllink:visited {
23
+ COLOR: #112ABB; font-family: Arial,Sans-serif; font-size: 11px !important
24
+ }
25
+ .smalltext {
26
+ font-family: Arial,Sans-serif; font-size: 11px !important
27
+ }
28
+ A.tinylink:link, A.tinylink:visited {
29
+ COLOR: #112ABB; font-family: Arial,Sans-serif; font-size: 9px !important
30
+ }
31
+ A.titleLink {
32
+ text-decoration: none; color: black
33
+ }
34
+ A.titleLink:hover {
35
+ background-color: #FFFFD6
36
+ }
37
+ A.nounderline {
38
+ COLOR: #112ABB; font-family: Arial,Sans-serif; font-size: 13px; text-decoration: none
39
+ }
40
+ A.nounderline:hover {
41
+ text-decoration: underline
42
+ }
43
+ A.nolink {
44
+ COLOR: black; font-family: Arial,Sans-serif; font-size: 13px; text-decoration: none
45
+ }
46
+ A.newfeatures:link, A.newfeatures:visited {
47
+ COLOR: #C00000; font-family: Arial,Sans-serif; font-size: 13px
48
+ }
49
+ A.IEmenu_cell { font-family: Arial, Sans-Serif; font-size: 13px; color: #112ABB; text-decoration: none; padding-top:3px; width: 100%; height: 100%
50
+ }
51
+
52
+ /* Printing */
53
+ @media print {
54
+ body { background-color: white }
55
+ a { text-decoration : underline; color : #0000ff; }
56
+ #navigation, #advertising, #other { display : none; }
57
+ #tab_contents { border: 0px }
58
+ #encloser { width: 100% }
59
+ }
60
+
61
+ /* Document List */
62
+ .listButtonBar { background-color: #C3D9FF; padding: 0px
63
+ }
64
+ .listButtonBarAlt { background-color: #74dd82; padding: 0px
65
+ }
66
+ .listButtonBarTrash { background-color: #CCCCCC; padding: 0px
67
+ }
68
+ .listLine { border-bottom: 1px solid #EBE8D7; font-family: Arial,Sans-serif; font-size: 13px; overflow: hidden
69
+ }
70
+
71
+ .listLineMore { padding-top: 6px; padding-bottom: 6px; }
72
+ .listLineFront { padding-top: 3px; padding-bottom: 3px; }
73
+
74
+
75
+ .listHdrFtr { font-weight: bold; background-color:#E8EEF7; font-family: Arial,Sans-serif; padding: 4px
76
+ }
77
+ .listHdrFtrAlt { font-weight: bold; background-color:#B5EDBC; font-family: Arial,Sans-serif; padding: 4px
78
+ }
79
+ .listHdrFtrTrash { font-weight: bold; background-color:#EEEEEE; font-family: Arial,Sans-serif; padding: 4px
80
+ }
81
+ .altFilterList { font-weight: bold; background-color:#B5EDBC; font-family: Arial,Sans-serif; padding: 4px
82
+ }
83
+ .listHdrFtrTxt { font-family: Arial,Sans-serif; font-weight: bold; font-size:13px
84
+ }
85
+ A.listHdrFtrLink { font-family: Arial,Sans-serif; font-weight: bold; font-size:13px; COLOR: #112ABB; TEXT-DECORATION: none
86
+ }
87
+ A.listHdrFtrLink:hover { TEXT-DECORATION: underline
88
+ }
89
+ .tagLink { color: #008000; font-family: Arial,Sans-serif; font-size: 10px
90
+ }
91
+ .aclLink { color: #7777CC; font-family: Arial,Sans-serif; font-size: 11px
92
+ }
93
+ .filterLink { color: #008000; font-family: Arial,Sans-serif; font-size: 13px
94
+ }
95
+ .st1 { height:15px; width:15px; background-image: url('/images/fav1.gif'); padding-bottom:0; font-size:12px; margin-right:3px; margin-left:2px
96
+ }
97
+ .st2 { height:15px; width:15px; background-image: url('/images/fav2.gif'); padding-bottom:0; font-size:12px; margin-right:3px; margin-left:2px
98
+ }
99
+ .graytext {color: #676767
100
+ }
101
+ table.fc { width: 100%; table-layout: fixed;
102
+ }
103
+ table.fc td.fc { overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
104
+ }
105
+ .blueBg { background-color: #C3D9FF
106
+ }
107
+ table.fc
108
+ {
109
+ width: 100%;
110
+ table-layout: fixed;
111
+ }
112
+
113
+ table.fc td.fc
114
+ {
115
+ overflow: hidden;
116
+ white-space: nowrap;
117
+ text-overflow: ellipsis;
118
+ }
119
+
120
+ /* Page top */
121
+ A.cornerBookmarks { font-family: Arial,Sans-serif; font-size: 11px !important; COLOR: #112ABB
122
+ }
123
+ td.cornerBookmarks { font-family: Arial,Sans-serif; font-size: 11px !important; background-color: #DFECF5
124
+ }
125
+ .miscTopTitle { font-family: Arial,Sans-serif; font-size: 12pt !important; font-weight: bold; border-bottom: 1px solid rgb(204, 204, 204); color: #676767
126
+ }
127
+ .miscBottomFtr { font-family: Arial,Sans-serif; font-size: 12px !important; border-top: 1px solid rgb(204, 204, 204); color: #676767; padding-top:4px
128
+ }
129
+ .miscBottomFtrNoLine { font-family: Arial,Sans-serif; font-size: 12px !important; color: #676767
130
+ }
131
+ .pageFtrText { font-family: Arial,Sans-serif; font-size: 12px !important
132
+ }
133
+ A.pageFtrText { COLOR: #112ABB;
134
+ }
135
+
136
+ /* Notices */
137
+ .tabNotice TD {background-color: #fad163}
138
+ TD.tabNoticeText {background-color: #fad163; font-size: 12px; font-weight: bold; padding: 3 10 3 10}
139
+ .BoxContainer { background-color: #B5EDBC; padding: 4px; padding-top: 2px;
140
+ }
141
+ .BoxTitle { background-color: #B5EDBC; padding: 4px; font-family: Arial,Sans-serif; font-size: 12pt; font-weight: bold;
142
+ }
143
+ .BoxBody { background-color: #E8EEF7; padding: 4px; font-family: Arial,Sans-serif; font-size: 13px;
144
+ }
145
+ .BoxBodyAttn { padding: 8px; border:2px solid #B5EDBC; font-size: 14px; background-color: white; font-family: Arial,Sans-serif;
146
+ }
147
+ .BigCaption { font-family: Arial,Sans-serif; font-size: 12pt; font-weight: bold
148
+ }
149
+ .HugeCaption { font-family: Arial,Sans-serif; font-size: 14pt; font-weight: bold; color: #112ABB
150
+ }
151
+
152
+
153
+ /* Tabs */
154
+ .tl {background:url('/images/corner_tl.gif') top left no-repeat
155
+ }
156
+ .tr {background:url('/images/corner_tr.gif') top right no-repeat
157
+ }
158
+ .bl {background:url('/images/corner_bl.gif') bottom left no-repeat
159
+ }
160
+ .br {background:url('/images/corner_br.gif') bottom right no-repeat
161
+ }
162
+ .bubble { background-color:#C3D9FF
163
+ }
164
+ .bubbleAlt { background-color:#B5EDBC
165
+ }
166
+ .bubbleLight { background-color: #E8EEF7
167
+ }
168
+ .sl {background:url('/images/side_alt_left.gif') top left no-repeat
169
+ }
170
+ .sr {background:url('/images/side_alt_right.gif') top right no-repeat
171
+ }
172
+ .sm {background:url('/images/side_alt_middle.gif') top repeat-x
173
+ }
174
+
175
+
176
+ /* Darren's tabs */
177
+ table.tab { height: 24px
178
+ }
179
+ table.light td { background-color: #e0edfe;
180
+ }
181
+ td.main { font-size: 13px
182
+ }
183
+ table.light td.main { border-right: 1px solid #c3d9ff
184
+ }
185
+ a.tabmain { color: #112ABB;
186
+ }
187
+ table.atab td { background-color: #c3d9ff;
188
+ }
189
+ table.dark td { background-color: #79b;
190
+ }
191
+ td.dark { background-color: #79b;
192
+ }
193
+ table.dark td.main { border-right: 1px solid #486c91;
194
+ }
195
+ table.tab td.ul { width: 2px; vertical-align: top; font-family: Arial,Sans-serif; font-size: 13px
196
+ }
197
+ table.tab td.ur { background-image: url(/images/corner_tr.gif); background-position: top right; background-repeat: no-repeat; font-family: Arial,Sans-serif; font-size: 13px
198
+ }
199
+ table.tab td.main { vertical-align: middle; font-family: Arial,Sans-serif; font-size: 13px
200
+ }
201
+ table.tab td.main a { text-decoration: none;
202
+ }
203
+ table.dark td.main a { color: #fff;
204
+ }
205
+ table.tab td.main div{ padding: 3px 10px 5px 8px; font-family: Arial,Sans-serif; font-size: 13px
206
+ }
207
+ table.atab td.main div { padding-top: 3px; padding-bottom: 5px; font-family: Arial,Sans-serif
208
+ }
209
+
210
+ /* Tab commands */
211
+ table.bar { height: 34px;
212
+ }
213
+ td.tabdesc { color: white; font-family: Arial,Sans-serif; font-size: 16px; padding-left: 10px !important
214
+ }
215
+ td.closebox { padding-right: 10px
216
+ }
217
+ div.tabcontent { background-color: #F2F4F7; padding: 16px !important;
218
+ }
219
+
220
+ div.revisiontabcontent {
221
+ background-color: #FFFFFF;
222
+ /*
223
+ * We have to apply !important to be consistent with all other tabs and to
224
+ * override any padding given using the style declaration.
225
+ */
226
+ padding: 16px !important;
227
+ }
228
+
229
+ td.tabbackground { background-color: #F2F4F7; padding: 16px !important;
230
+ }
231
+ td.tabcontent { font-family: Arial,Sans serif; font-size: 12px !important;
232
+ }
233
+ td.tabcontentBig { font-family: Arial,Sans serif; font-size: 15px !important;
234
+ }
235
+ A.tabcontent:link, A.tabcontent:visited { COLOR: #112ABB; font-family: Arial,Sans-serif; font-size: 12px !important
236
+ }
237
+ div.tabborder { background-color: #79b; padding: 0px 4px 4px 4px
238
+ }
239
+
240
+ div.revisiontabborder {
241
+ background-color: #fff;
242
+ padding: 0px 4px 4px 4px;
243
+ }
244
+
245
+ table.tabborder { border: 4px solid #79b; border-top: 0;
246
+ }
247
+ span.pubWhen { font-family: Arial,Sans serif; font-size: 12px; color: #666
248
+ }
249
+ td.hint { font-family: Arial,Sans serif; font-size: 11px; color: #666; padding-top: 2px;
250
+ }
251
+ div.hint { font-family: Arial,Sans serif; font-size: 11px; color: #666; padding-top: 2px;
252
+ }
253
+ a.hint { font-family: Arial,Sans serif; font-size: 11px; color: #112ABB; padding-top: 2px;
254
+ }
255
+ TEXTAREA.add { width: 280px; border: 1px solid #809EBA; font-family: Arial,Sans serif; font-size: 12px !important;
256
+ }
257
+ SELECT.add { width: 280px; border: 1px solid #809EBA; font-family: Arial,Sans serif; font-size: 12px !important; margin-top: 1px;
258
+ }
259
+
260
+ A.insertMenuDropdown { background:url("/images/icon-dropdn.gif") no-repeat 100% 50%; padding-right:15px; margin-right:10px;
261
+ COLOR: #112ABB; font-family: Arial,Sans-serif; font-size: 13px; text-decoration: none;
262
+ }
263
+ A.paddedInsertMenu { padding-right:15px; margin-right:10px;
264
+ COLOR: #112ABB; font-family: Arial,Sans-serif; font-size: 13px; text-decoration: none;
265
+ }
266
+
267
+ A.insertMenuDropdown:hover { text-decoration: underline
268
+ }
269
+ A.paddedInsertMenu:hover { text-decoration: underline
270
+ }
271
+
272
+ td.tabbar { background-color: #c3d9ff;
273
+ }
274
+ .tabsubbar { background-color: #EFEFEF;
275
+ }
276
+
277
+ /* Upload */
278
+ td.uploadhdr { font-family: Arial,Sans-serif; font-size: 16px; background-color: #C3D9FF; padding: 5px
279
+ }
280
+ td.uploadbg { background-color: #C3D9FF
281
+ }
282
+ div.uploadcontent { background-color: white; padding: 12px;
283
+ }
284
+ td.uploadcontent { font-family: Arial,Sans serif; font-size: 12px;
285
+ }
286
+ td.uploadcontentBig { font-family: Arial,Sans serif; font-size: 14px;
287
+ }
288
+ div.uploadborder { background-color: #C3D9FF; padding: 0px 4px 4px 4px
289
+ }
290
+
291
+ /* Settings */
292
+ td.settingshdr { font-family: Arial,Sans-serif; font-size: 16px; background-color: #FAD162; padding: 5px
293
+ }
294
+ td.settingsbg { background-color: #FAD162
295
+ }
296
+ td.settingstabactive { background-color: #FFF7D7
297
+ }
298
+ td.settingstab { padding: 4 8 4 8; font-weight: bold; font-family: Arial,Sans serif; font-size: 13px
299
+ }
300
+ div.settingscontent { background-color: #FFF7D7;
301
+ }
302
+ td.settingscontent { font-family: Arial,Sans serif; font-size: 12px;
303
+ }
304
+ td.settingscontentBig { font-family: Arial,Sans serif; font-size: 14px;
305
+ }
306
+ div.settingsborder { background-color: #FAD162; padding: 0 3px 3px 3px
307
+ }
308
+ td.settingsspacer { background-color: #FAD162; height: 2px
309
+ }
310
+
311
+ /* Menus */
312
+ .menu_div { border: 1px solid black; background-color: white;
313
+ }
314
+ table.menu_table { background-color: #ffffff; border-left: 1px solid #ccc; border-top: 1px solid #ccc;
315
+ border-right: 1px solid #676767; border-bottom: 1px solid #676767; border-collapse: collapse; padding: 0; margin: 0;
316
+ }
317
+ .menu_label { font-family: Arial, Sans-Serif; font-size: 13px; color: black; padding: 6 2 2 2;
318
+ }
319
+ .menu_row_unsel { background-color: white;
320
+ }
321
+ .menu_row_sel { background-color: #E8EEF7;
322
+ }
323
+ .menu_cell { font-family: Arial, Sans-Serif; font-size: 13px; color: #112ABB; padding: 0; cursor: pointer;
324
+ }
325
+ .menu_link { padding: 4 8 4 8; white-space: nowrap;
326
+ }
327
+ .menu_accel { font-family: Arial, Sans-Serif; font-size: 11px !important; padding: 4 8 4 8; color: #676767; text-align: right; cursor: pointer;
328
+ }
329
+ .menu_sep_cell { padding: 0; background-color: white;
330
+ }
331
+ .menu_sep_div { height: 1px; background-color: #ddd;
332
+ }
333
+ .menu_cb { padding-right: 0px; width: 7px; height: 7px;
334
+ }
335
+
336
+ /* Misc editor */
337
+ .hiddenStatus { display: none;
338
+ }
339
+ .visibleStatus { display: block; left: 1px; top: 1px; line-height: 1.2em; position: absolute; z-Index: 10000; background-color: #cc4444; padding:2px; color: white; font-family: Arial,Sans-serif; font-size: 13px
340
+ }
341
+ .editBorder { border-left: 1px solid #c3d9ff; border-right: 1px solid #c3d9ff; width: 100%; height: 100%;
342
+ }
343
+ .editWarning
344
+ {
345
+ background:#ff8a00;
346
+ font-family: Arial,Sans serif; font-size: 12px !important;
347
+ font-weight: bold;
348
+ text-decoration: none;
349
+ color:white;
350
+ padding: 4px;
351
+ }
352
+ .spellCheck { background-color: yellow; COLOR: #112ABB; font-family: Arial,Sans-serif; font-size: 13px
353
+ }
354
+ .spellCheckNone { COLOR: #008048; font-family: Arial,Sans-serif; font-size: 13px
355
+ }
356
+
357
+ .editNoWarning
358
+ {
359
+ font-family: Arial,Sans serif; font-size: 12px; color:#ACA899;
360
+ background: #EFEFEF;
361
+ padding: 4px;
362
+ }
363
+
364
+ /* Dialogs */
365
+ #appDlgBgSep { position: absolute; z-index: 200; top: 0px; left: 0px;
366
+ opacity: .3; background-color:#999; width: 100%; height: 100%;
367
+ filter: alpha(opacity=30);
368
+ }
369
+ #appDlgDiv { background-color: rgb(193, 217, 255); padding: 8px;
370
+ z-index: 1000; position: absolute; left: 0px; top: 0px; border: 1px solid rgb(58, 87, 116);
371
+ }
372
+ #appDlgDivContainer { background-color: white
373
+ }
374
+ #appDlgTitle { height: 36px; background-color: #e0edfe; font-family: Arial,Sans-serif
375
+ }
376
+ .appDlgTitleText { font-size: 12pt !important; font-weight: bold; color: #000;
377
+ background-color: #e0edfe; padding: 8px
378
+ }
379
+ #appDlgFrame { width: 0; height: 0; background-color: #ffffff;
380
+
381
+ }
382
+ /* general dialog shadow styles */
383
+
384
+ table.shadow {
385
+ border-collapse: collapse;
386
+ padding: 0;
387
+ margin: 0;
388
+ }
389
+
390
+ table.shadow td {
391
+ padding: 0;
392
+ margin: 0;
393
+ }
394
+
395
+
396
+
397
+ /* side shadows */
398
+
399
+ table.shadow td.left {
400
+ width: 4px;
401
+ filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/leftSide.png', sizingMethod='crop');
402
+ }
403
+
404
+ html>body table.shadow td.left {
405
+ background: url(leftSide.png) 0px 0px no-repeat;
406
+ }
407
+
408
+ table.shadow td.right {
409
+ width: 4px;
410
+ filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/rightSide.png', sizingMethod='crop');
411
+ }
412
+
413
+ html>body table.shadow td.right {
414
+ background: url(rightSide.png) 0px 0px no-repeat;
415
+ }
416
+
417
+
418
+
419
+ /* bottom shadows */
420
+
421
+ table.shadow td.bottomLeft {
422
+ height: 7px;
423
+ font-size: 1px;
424
+ filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/bottomLeft.png', sizingMethod='crop');
425
+ }
426
+
427
+ html>body table.shadow td.bottomLeft {
428
+ background: url(bottomLeft.png) 0px 0px no-repeat;
429
+ }
430
+
431
+ table.shadow td.bottomRight {
432
+ height: 7px;
433
+ width: 4px;
434
+ filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/bottomRight.png', sizingMethod='crop');
435
+ }
436
+
437
+ html>body table.shadow td.bottomRight {
438
+ background: url(bottomRight.png) 0px 0px no-repeat;
439
+ }
440
+
441
+ /* AutoComplete */
442
+ .ac-renderer {
443
+ font-family: Arial, Verdana, Helvetica, sans-serif;
444
+ border: 1px solid #666;
445
+ background: #E0ECFF;
446
+ color: #00C;
447
+ margin: 0;
448
+ padding: 0 0 1px 0;
449
+ z-index: 1000;
450
+ position: absolute;
451
+ }
452
+
453
+ .ac-renderer div {
454
+ margin: 2px;
455
+ cursor: pointer;
456
+ padding: 0 10px;
457
+ }
458
+
459
+ .ac-renderer div b {
460
+ color: #00F;
461
+ }
462
+
463
+ .ac-renderer div.active {
464
+ background: #C3D9FF;
465
+ }
466
+
467
+ /* Closure dialog styles */
468
+ .modal-dialog-bg {
469
+ position: absolute;
470
+ top: 0px;
471
+ left: 0px;
472
+ background-color: #999999;
473
+ opacity: 0.3;
474
+ }
475
+
476
+ .modal-dialog {
477
+ position: absolute;
478
+ top: 0px;
479
+ left: 0px;
480
+ background-color: #C1D9FF;
481
+ border: 1px solid #3A5774;
482
+ padding: 8px;
483
+ }
484
+
485
+ .modal-dialog-title {
486
+ position:relative;
487
+ background-color: #E0EDFE;
488
+ padding: 8px;
489
+ font: bold 12pt Arial,Sans-serif;
490
+ cursor: default;
491
+ }
492
+
493
+ .modal-dialog-content {
494
+ background-color: #FFF;
495
+ padding: 4px;
496
+ padding: 0px 1px 0px 1px;
497
+ }
498
+
499
+ .modal-dialog-content,
500
+ .modal-dialog-content td,
501
+ .modal-dialog-content p,
502
+ .modal-dialog-content body,
503
+ .modal-dialog-content ul,
504
+ .modal-dialog-content ol,
505
+ .modal-dialog-content input,
506
+ .modal-dialog-content select,
507
+ .modal-dialog-content a,
508
+ .modal-dialog-content option,
509
+ .modal-dialog-content legend,
510
+ .modal-dialog-content fieldset,
511
+ .modal-dialog-content textarea {
512
+ font: normal 12px Arial,Sans-serif;
513
+ }
514
+
515
+ .modal-dialog-buttons {
516
+ background-color: #FFF;
517
+ padding: 4px;
518
+ font: normal 12px Arial,Sans-serif;
519
+ text-align: right;
520
+ }
521
+
522
+ .modal-dialog-buttons button {
523
+ margin: 5px;
524
+ font: normal 12px Arial,Sans-serif;
525
+ overflow:visible;
526
+ padding:0 0.4em;
527
+ }
528
+
529
+ .modal-dialog-title-close {
530
+ position: absolute;
531
+ right: 0px;
532
+ }
533
+
534
+ .modal-dialog-content form {
535
+ margin: 0px;
536
+ }
537
+
538
+ .goog-popupcolorpicker {
539
+ position: absolute;
540
+ -moz-outline: 0;
541
+ outline: 0;
542
+ visibility: hidden;
543
+ }
544
+
545
+ .goog-color-picker-coloritem {
546
+ color: white;
547
+ font-size: 1px;
548
+ text-align: center;
549
+ width: 15px;
550
+ height: 13px;
551
+ border: 1px solid gray;
552
+ }
553
+
554
+ .goog-color-picker-coloritem.selected {
555
+ border: solid black;
556
+ border-width: 1px 1px 1px 1px;
557
+ }
558
+
559
+ .highlighted, .highlighted div {
560
+ border: 1px solid white;
561
+ }
562
+
563
+ .goog-color-picker-colorbox {
564
+ padding: 0;
565
+ border-width: 0;
566
+ }
567
+
568
+ .highlighted.goog-color-picker-colorbox {
569
+ border: 0;
570
+ }
571
+
572
+ .goog-color-picker {
573
+ padding: 0;
574
+ border: 1px solid gray;
575
+ background-color: white;
576
+ font-family: "Arial Unicode MS", menu;
577
+ }
578
+
579
+ .goog-color-picker-footcell {
580
+ border: solid gray;
581
+ border-width: 1px 0 0 0;
582
+ padding: 0;
583
+ text-align: center;
584
+ clear: both;
585
+ }
586
+ .swatch {
587
+ border-style: outset;
588
+ border-width: 1px;
589
+ cursor: default;
590
+ height: 18px;
591
+ padding-left: 1px;
592
+ width: 52px;
593
+ }
594
+
595
+ .dialog-input {
596
+ overflow: auto;
597
+ position: relative;
598
+ }
599
+
600
+ .insertchar-grid {
601
+ vertical-align: middle;
602
+ text-align: center;
603
+ border: 1px solid #ACA899;
604
+ }
605
+
606
+ .insertchar-sc {
607
+ Cursor: pointer;
608
+ font-size: 14px !important;
609
+ vertical-align: middle;
610
+ text-align: center;
611
+ border: 1px solid #EBE8D7;
612
+ width: 28px
613
+ }
614
+
615
+ .insertchar-ac {
616
+ Cursor: pointer; font-size: 14px !important;
617
+ vertical-align: middle;
618
+ text-align: center;
619
+ border: 1px solid #EBE8D7;
620
+ width: 28px
621
+ }
622
+
623
+ .insertchar-adp {
624
+ font-size: 14px !important;
625
+ vertical-align: middle;
626
+ text-align: center;
627
+ border: 1px solid #EBE8D7;
628
+ width: 28px
629
+ }
630
+
631
+ .insertchar-wd {
632
+ Cursor: pointer;
633
+ font-size: 12px;
634
+ vertical-align: middle;
635
+ text-align: center;
636
+ border: 1px solid #EBE8D7;
637
+ width: 28px;
638
+ font-family: Wingdings !important;
639
+ }
640
+
641
+ .insertchar-nd {
642
+ font-family: Arial,Sans-serif;
643
+ font-size: 12px;
644
+ }
645
+
646
+ .insertchar-bb {
647
+ overflow:visible;
648
+ padding:0 0.01em;
649
+ }
650
+
651
+ .modal-dialog-content .example {
652
+ font-size: 11px;
653
+ }
654
+
655
+ .modal-dialog-content legend {
656
+ font-weight: bold;
657
+ color: black;
658
+ }
659
+
660
+ .modal-dialog-content .subtitle {
661
+ background-color: #EFEFEF;
662
+ padding: 8px;
663
+ }
664
+
665
+ .modal-dialog-content fieldset {
666
+ border: 1px solid white;
667
+ padding-bottom: 10px;
668
+ }
669
+