yax 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. data/yax-0.1/docs/classes/IO.html +251 -0
  2. data/yax-0.1/docs/classes/IO.src/M000003.html +46 -0
  3. data/yax-0.1/docs/classes/IO.src/M000004.html +27 -0
  4. data/yax-0.1/docs/classes/Module.html +156 -0
  5. data/yax-0.1/docs/classes/Module.src/M000002.html +23 -0
  6. data/yax-0.1/docs/classes/MultiIO.html +217 -0
  7. data/yax-0.1/docs/classes/MultiIO.src/M000006.html +18 -0
  8. data/yax-0.1/docs/classes/MultiIO.src/M000007.html +19 -0
  9. data/yax-0.1/docs/classes/MultiIO.src/M000008.html +20 -0
  10. data/yax-0.1/docs/classes/Numeric.html +155 -0
  11. data/yax-0.1/docs/classes/Numeric.src/M000005.html +16 -0
  12. data/yax-0.1/docs/classes/Regexp.html +153 -0
  13. data/yax-0.1/docs/classes/Regexp.src/M000001.html +16 -0
  14. data/yax-0.1/docs/classes/String.html +270 -0
  15. data/yax-0.1/docs/classes/String.src/M000009.html +18 -0
  16. data/yax-0.1/docs/classes/String.src/M000010.html +16 -0
  17. data/yax-0.1/docs/classes/String.src/M000011.html +22 -0
  18. data/yax-0.1/docs/classes/String.src/M000012.html +27 -0
  19. data/yax-0.1/docs/classes/String.src/M000013.html +21 -0
  20. data/yax-0.1/docs/classes/String.src/M000014.html +20 -0
  21. data/yax-0.1/docs/classes/Yax.html +256 -0
  22. data/yax-0.1/docs/classes/Yax.src/M000015.html +20 -0
  23. data/yax-0.1/docs/classes/Yax/Session.html +1661 -0
  24. data/yax-0.1/docs/classes/Yax/Session.src/M000016.html +20 -0
  25. data/yax-0.1/docs/classes/Yax/Session.src/M000017.html +18 -0
  26. data/yax-0.1/docs/classes/Yax/Session.src/M000018.html +19 -0
  27. data/yax-0.1/docs/classes/Yax/Session.src/M000019.html +19 -0
  28. data/yax-0.1/docs/classes/Yax/Session.src/M000020.html +19 -0
  29. data/yax-0.1/docs/classes/Yax/Session.src/M000021.html +46 -0
  30. data/yax-0.1/docs/classes/Yax/Session.src/M000022.html +19 -0
  31. data/yax-0.1/docs/classes/Yax/Session.src/M000023.html +18 -0
  32. data/yax-0.1/docs/classes/Yax/Session.src/M000024.html +20 -0
  33. data/yax-0.1/docs/classes/Yax/Session.src/M000025.html +18 -0
  34. data/yax-0.1/docs/classes/Yax/Session.src/M000026.html +19 -0
  35. data/yax-0.1/docs/classes/Yax/Session.src/M000027.html +20 -0
  36. data/yax-0.1/docs/classes/Yax/Session.src/M000028.html +18 -0
  37. data/yax-0.1/docs/classes/Yax/Session.src/M000029.html +18 -0
  38. data/yax-0.1/docs/classes/Yax/Session.src/M000030.html +19 -0
  39. data/yax-0.1/docs/classes/Yax/Session.src/M000031.html +25 -0
  40. data/yax-0.1/docs/classes/Yax/Session.src/M000032.html +18 -0
  41. data/yax-0.1/docs/classes/Yax/Session.src/M000033.html +36 -0
  42. data/yax-0.1/docs/classes/Yax/Session.src/M000034.html +34 -0
  43. data/yax-0.1/docs/classes/Yax/Session.src/M000035.html +23 -0
  44. data/yax-0.1/docs/classes/Yax/Session.src/M000036.html +20 -0
  45. data/yax-0.1/docs/classes/Yax/Session.src/M000037.html +32 -0
  46. data/yax-0.1/docs/classes/Yax/Session.src/M000038.html +20 -0
  47. data/yax-0.1/docs/classes/Yax/Session.src/M000042.html +18 -0
  48. data/yax-0.1/docs/classes/Yax/Session.src/M000043.html +18 -0
  49. data/yax-0.1/docs/classes/Yax/Session.src/M000044.html +20 -0
  50. data/yax-0.1/docs/classes/Yax/Session.src/M000046.html +37 -0
  51. data/yax-0.1/docs/classes/Yax/Session.src/M000047.html +29 -0
  52. data/yax-0.1/docs/classes/Yax/Session.src/M000048.html +29 -0
  53. data/yax-0.1/docs/classes/Yax/Session.src/M000049.html +30 -0
  54. data/yax-0.1/docs/classes/Yax/Session.src/M000050.html +22 -0
  55. data/yax-0.1/docs/classes/Yax/Session.src/M000051.html +20 -0
  56. data/yax-0.1/docs/classes/Yax/Session.src/M000052.html +20 -0
  57. data/yax-0.1/docs/classes/Yax/Session.src/M000053.html +19 -0
  58. data/yax-0.1/docs/classes/Yax/Session.src/M000054.html +28 -0
  59. data/yax-0.1/docs/classes/Yax/Session.src/M000055.html +21 -0
  60. data/yax-0.1/docs/classes/Yax/Session.src/M000056.html +27 -0
  61. data/yax-0.1/docs/classes/Yax/Session.src/M000057.html +20 -0
  62. data/yax-0.1/docs/classes/Yax/Session.src/M000058.html +22 -0
  63. data/yax-0.1/docs/classes/Yax/Session.src/M000059.html +21 -0
  64. data/yax-0.1/docs/classes/Yax/Session.src/M000060.html +21 -0
  65. data/yax-0.1/docs/classes/Yax/Session.src/M000061.html +20 -0
  66. data/yax-0.1/docs/classes/Yax/Session.src/M000062.html +21 -0
  67. data/yax-0.1/docs/classes/Yax/Session.src/M000063.html +20 -0
  68. data/yax-0.1/docs/classes/Yax/Session.src/M000064.html +21 -0
  69. data/yax-0.1/docs/classes/Yax/Session.src/M000065.html +26 -0
  70. data/yax-0.1/docs/classes/Yax/Session.src/M000066.html +25 -0
  71. data/yax-0.1/docs/classes/Yax/Session.src/M000067.html +29 -0
  72. data/yax-0.1/docs/classes/Yax/Session.src/M000068.html +26 -0
  73. data/yax-0.1/docs/classes/Yax/Session.src/M000069.html +19 -0
  74. data/yax-0.1/docs/classes/Yax/Session.src/M000070.html +31 -0
  75. data/yax-0.1/docs/classes/Yax/Session.src/M000071.html +25 -0
  76. data/yax-0.1/docs/created.rid +1 -0
  77. data/yax-0.1/docs/dot/f_0.dot +14 -0
  78. data/yax-0.1/docs/dot/f_0.png +0 -0
  79. data/yax-0.1/docs/dot/f_1.dot +14 -0
  80. data/yax-0.1/docs/dot/f_1.png +0 -0
  81. data/yax-0.1/docs/dot/f_2.dot +14 -0
  82. data/yax-0.1/docs/dot/f_2.png +0 -0
  83. data/yax-0.1/docs/dot/f_3.dot +93 -0
  84. data/yax-0.1/docs/dot/f_3.png +0 -0
  85. data/yax-0.1/docs/dot/m_3_0.dot +39 -0
  86. data/yax-0.1/docs/dot/m_3_0.png +0 -0
  87. data/yax-0.1/docs/files/License_txt.html +124 -0
  88. data/yax-0.1/docs/files/ReadMe_Amber_txt.html +489 -0
  89. data/yax-0.1/docs/files/ReadMe_txt.html +444 -0
  90. data/yax-0.1/docs/files/nist/yax_rb.html +138 -0
  91. data/yax-0.1/docs/fr_class_index.html +34 -0
  92. data/yax-0.1/docs/fr_file_index.html +30 -0
  93. data/yax-0.1/docs/fr_method_index.html +97 -0
  94. data/yax-0.1/docs/index.html +24 -0
  95. data/yax-0.1/docs/rdoc-style.css +208 -0
  96. data/yax-0.1/lib/nist/yax.rb +1367 -0
  97. data/yax-0.1/tests/test_yax.rb +190 -0
  98. metadata +195 -0
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>url? (String)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File nist/yax.rb, line 22</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">url?</span>
15
+ <span class="ruby-constant">URL_PAT</span>.<span class="ruby-identifier">match</span>(<span class="ruby-keyword kw">self</span>)
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>to_regexp (String)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File nist/yax.rb, line 26</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_regexp</span>; <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">quote</span>(<span class="ruby-keyword kw">self</span>)); <span class="ruby-keyword kw">end</span></pre>
15
+ </body>
16
+ </html>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>match_pattern_hash (String)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File nist/yax.rb, line 32</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">match_pattern_hash</span>(<span class="ruby-identifier">hash</span>)
15
+ <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">pattern</span><span class="ruby-operator">|</span>
16
+ <span class="ruby-identifier">match</span> = <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">match</span>(<span class="ruby-keyword kw">self</span>)
17
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">key</span>, <span class="ruby-identifier">match</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>
18
+ }
19
+ <span class="ruby-keyword kw">nil</span>
20
+ <span class="ruby-keyword kw">end</span></pre>
21
+ </body>
22
+ </html>
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>to_seconds (String)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File nist/yax.rb, line 45</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_seconds</span>
15
+ <span class="ruby-identifier">parts</span> = <span class="ruby-identifier">split</span>(<span class="ruby-value str">':'</span>)
16
+ <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;To convert a String to seconds, it needs to be expressed as dd:hh:mm:ss&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parts</span>.<span class="ruby-identifier">size!</span>=<span class="ruby-value">4</span>
17
+ <span class="ruby-identifier">answer</span> = <span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_i</span>
18
+ <span class="ruby-identifier">answer</span> <span class="ruby-operator">*=</span> <span class="ruby-value">24</span>
19
+ <span class="ruby-identifier">answer</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_i</span>
20
+ <span class="ruby-identifier">answer</span> <span class="ruby-operator">*=</span> <span class="ruby-value">60</span>
21
+ <span class="ruby-identifier">answer</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">parts</span>[<span class="ruby-value">2</span>].<span class="ruby-identifier">to_i</span>
22
+ <span class="ruby-identifier">answer</span> <span class="ruby-operator">*=</span> <span class="ruby-value">60</span>
23
+ <span class="ruby-identifier">answer</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">parts</span>[<span class="ruby-value">3</span>].<span class="ruby-identifier">to_i</span>
24
+ <span class="ruby-identifier">answer</span>
25
+ <span class="ruby-keyword kw">end</span></pre>
26
+ </body>
27
+ </html>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>from_seconds (String)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File nist/yax.rb, line 58</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">from_seconds</span>(<span class="ruby-identifier">seconds</span>)
15
+ <span class="ruby-identifier">mm</span>, <span class="ruby-identifier">ss</span> = <span class="ruby-identifier">seconds</span>.<span class="ruby-identifier">ceil</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>)
16
+ <span class="ruby-identifier">hh</span>, <span class="ruby-identifier">mm</span> = <span class="ruby-identifier">mm</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>)
17
+ <span class="ruby-identifier">dd</span>, <span class="ruby-identifier">hh</span> = <span class="ruby-identifier">hh</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">24</span>)
18
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">dd</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">':'</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">hh</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">':'</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">mm</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">':'</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">ss</span>.<span class="ruby-identifier">to_s</span>
19
+ <span class="ruby-keyword kw">end</span></pre>
20
+ </body>
21
+ </html>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>last_line (String)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File nist/yax.rb, line 66</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">last_line</span>
15
+ <span class="ruby-identifier">i</span>=<span class="ruby-identifier">rindex</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
16
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">size</span><span class="ruby-operator">&gt;</span>(<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)
17
+ <span class="ruby-keyword kw">self</span>[(<span class="ruby-identifier">i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">..</span><span class="ruby-value">-1</span>]
18
+ <span class="ruby-keyword kw">end</span></pre>
19
+ </body>
20
+ </html>
@@ -0,0 +1,256 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: Yax</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">Yax</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/nist/yax_rb.html">
59
+ nist/yax.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+ <div id="diagram">
75
+ <map id="map" name="map">
76
+ <area shape="RECT" coords="29,52,101,100" href="Yax/Session.html" alt="Session">
77
+ <area shape="RECT" coords="18,18,138,110" href="Yax.html" alt="Yax">
78
+ </map>
79
+ <img src="../dot/m_3_0.png" usemap="#map" border=0 alt="Module: Yax">
80
+ </div>
81
+
82
+ <div id="description">
83
+ <h1>Overview</h1>
84
+ <p>
85
+ In addition to providing a namespace for <a
86
+ href="Yax/Session.html">Yax::Session</a>, the <a href="Yax.html">Yax</a> <a
87
+ href="Module.html">Module</a> offers singleton-like reflections of <a
88
+ href="Yax/Session.html">Session</a> instance methods, implemented by <a
89
+ href="Module.html#M000002">Module#yaxify</a>. If these methods don&#8217;t
90
+ conflict with others, you can &quot;include <a
91
+ href="Yax.html">Yax</a>&quot; to access them.
92
+ </p>
93
+ <p>
94
+ These methods are not shown below under &quot;Public Instance methods&quot;
95
+ because they are constructed by meta-programming. They are not visible to
96
+ rdoc. If you need some extra <a href="Yax/Session.html">Session</a>
97
+ behaviors, you can easily add them using <a
98
+ href="Module.html#M000002">Module#yaxify</a>.
99
+ </p>
100
+ <h2>Reflected Methods</h2>
101
+ <h3>Reflected Interactions</h3>
102
+ <ul>
103
+ <li><a href="Yax/Session.html#M000044">Session#command</a>, <a
104
+ href="Yax/Session.html#M000045">Session#cmd</a>
105
+
106
+ </li>
107
+ <li><a href="Yax/Session.html#M000043">Session#expect</a>
108
+
109
+ </li>
110
+ <li><a href="Yax/Session.html#M000038">Session#respond</a>, <a
111
+ href="Yax/Session.html#M000039">Session#answer</a>, <a
112
+ href="Yax/Session.html#M000040">Session#snd</a>, <a
113
+ href="Yax/Session.html#M000041">Session#reply</a>
114
+
115
+ </li>
116
+ <li><a href="Yax/Session.html#M000046">Session#finish</a>
117
+
118
+ </li>
119
+ <li><a href="Yax/Session.html#M000035">Session#die</a>
120
+
121
+ </li>
122
+ </ul>
123
+ <h3>Reflected Name Resolution &amp; Management</h3>
124
+ <ul>
125
+ <li><a href="Yax/Session.html#M000047">Session#resolve_url</a>, <a
126
+ href="Yax/Session.html#M000048">Session#resolve_dir</a>, <a
127
+ href="Yax/Session.html#M000049">Session#resolve_file</a>
128
+
129
+ </li>
130
+ <li><a href="Yax/Session.html#M000050">Session#dirName</a>, <a
131
+ href="Yax/Session.html#M000051">Session#fileName</a>
132
+
133
+ </li>
134
+ <li><a href="Yax/Session.html#M000052">Session#d</a>, <a
135
+ href="Yax/Session.html#M000053">Session#f</a>
136
+
137
+ </li>
138
+ <li><a href="Yax/Session.html#M000056">Session#cd</a>!
139
+
140
+ </li>
141
+ </ul>
142
+ <h3>Reflected File Operations</h3>
143
+ <ul>
144
+ <li><a href="Yax/Session.html#M000061">Session#mkdir</a>, <a
145
+ href="Yax/Session.html#M000057">Session#chmod</a>
146
+
147
+ </li>
148
+ <li><a href="Yax/Session.html#M000056">Session#cd</a>
149
+
150
+ </li>
151
+ <li><a href="Yax/Session.html#M000062">Session#mv</a>, <a
152
+ href="Yax/Session.html#M000063">Session#rm_rf</a>, <a
153
+ href="Yax/Session.html#M000058">Session#cp</a>
154
+
155
+ </li>
156
+ <li><a href="Yax/Session.html#M000059">Session#ln</a>, <a
157
+ href="Yax/Session.html#M000060">Session#ln_sf</a>
158
+
159
+ </li>
160
+ <li><a href="Yax/Session.html#M000064">Session#cmp</a>
161
+
162
+ </li>
163
+ </ul>
164
+ <h3>Reflected Other Helpers</h3>
165
+ <ul>
166
+ <li><a href="Yax/Session.html#M000065">Session#mangle</a>
167
+
168
+ </li>
169
+ <li><a href="Yax/Session.html#M000069">Session#curl</a>
170
+
171
+ </li>
172
+ <li><a href="Yax/Session.html#M000067">Session#untgz</a>, <a
173
+ href="Yax/Session.html#M000068">Session#tgz</a>
174
+
175
+ </li>
176
+ <li><a href="Yax/Session.html#M000070">Session#env</a>, <a
177
+ href="Yax/Session.html#M000071">Session#env_path</a>
178
+
179
+ </li>
180
+ </ul>
181
+ <h3>Reflected Output Methods</h3>
182
+ <ul>
183
+ <li><a href="Yax/Session.html#M000032">Session#note</a>, <a
184
+ href="Yax/Session.html#M000066">Session#banner</a>
185
+
186
+ </li>
187
+ </ul>
188
+
189
+ </div>
190
+
191
+
192
+ </div>
193
+
194
+ <div id="method-list">
195
+ <h3 class="section-bar">Methods</h3>
196
+
197
+ <div class="name-list">
198
+ <a href="#M000015">yax</a>&nbsp;&nbsp;
199
+ </div>
200
+ </div>
201
+
202
+ </div>
203
+
204
+
205
+ <!-- if includes -->
206
+
207
+ <div id="section">
208
+
209
+ <div id="class-list">
210
+ <h3 class="section-bar">Classes and Modules</h3>
211
+
212
+ Class <a href="Yax/Session.html" class="link">Yax::Session</a><br />
213
+
214
+ </div>
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+ <!-- if method_list -->
223
+ <div id="methods">
224
+ <h3 class="section-bar">Public Instance methods</h3>
225
+
226
+ <div id="method-M000015" class="method-detail">
227
+ <a name="M000015"></a>
228
+
229
+ <div class="method-heading">
230
+ <a href="Yax.src/M000015.html" target="Code" class="method-signature"
231
+ onclick="popupCode('Yax.src/M000015.html');return false;">
232
+ <span class="method-name">yax</span><span class="method-args">(program='bash', klass=Yax::Session)</span>
233
+ </a>
234
+ </div>
235
+
236
+ <div class="method-description">
237
+ <p>
238
+ Returns a default instance, which is created on the first invocation. This
239
+ instance is stored in $YAX.
240
+ </p>
241
+ </div>
242
+ </div>
243
+
244
+
245
+ </div>
246
+
247
+
248
+ </div>
249
+
250
+
251
+ <div id="validator-badges">
252
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
253
+ </div>
254
+
255
+ </body>
256
+ </html>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>yax (Yax)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File nist/yax.rb, line 1337</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yax</span>(<span class="ruby-identifier">program</span>=<span class="ruby-value str">'bash'</span>, <span class="ruby-identifier">klass</span>=<span class="ruby-constant">Yax</span><span class="ruby-operator">::</span><span class="ruby-constant">Session</span>)
15
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">$YAX</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$YAX</span>
16
+ <span class="ruby-identifier">$YAX</span> = <span class="ruby-identifier">program</span> <span class="ruby-value">? </span><span class="ruby-identifier">klass</span>.<span class="ruby-identifier">spawn</span>(<span class="ruby-identifier">program</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">klass</span>.<span class="ruby-identifier">new</span>
17
+ <span class="ruby-identifier">$YAX</span>
18
+ <span class="ruby-keyword kw">end</span></pre>
19
+ </body>
20
+ </html>
@@ -0,0 +1,1661 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Yax::Session</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Yax::Session</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/nist/yax_rb.html">
59
+ nist/yax.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+ <div id="diagram">
81
+ <map id="map" name="map">
82
+ <area shape="RECT" coords="29,52,101,100" href="Session.html" alt="Session">
83
+ <area shape="RECT" coords="18,18,138,110" href="../Yax.html" alt="Yax">
84
+ </map>
85
+ <img src="../../dot/m_3_0.png" usemap="#map" border=0 alt="Module: Yax">
86
+ </div>
87
+
88
+ <div id="description">
89
+ <p>
90
+ Represents an environment in which one can script an interaction with a
91
+ process (others should be possible, but only bash has been tested).
92
+ </p>
93
+ <p>
94
+ For an overview of use, features, and an example, see <a
95
+ href="../../files/ReadMe_txt.html">ReadMe.txt</a>.
96
+ </p>
97
+
98
+ </div>
99
+
100
+
101
+ </div>
102
+
103
+ <div id="method-list">
104
+ <h3 class="section-bar">Methods</h3>
105
+
106
+ <div class="name-list">
107
+ <a href="#M000039">answer</a>&nbsp;&nbsp;
108
+ <a href="#M000054">archive_type</a>&nbsp;&nbsp;
109
+ <a href="#M000066">banner</a>&nbsp;&nbsp;
110
+ <a href="#M000025">build_default_dir_hash</a>&nbsp;&nbsp;
111
+ <a href="#M000056">cd</a>&nbsp;&nbsp;
112
+ <a href="#M000055">cd!</a>&nbsp;&nbsp;
113
+ <a href="#M000057">chmod</a>&nbsp;&nbsp;
114
+ <a href="#M000045">cmd</a>&nbsp;&nbsp;
115
+ <a href="#M000064">cmp</a>&nbsp;&nbsp;
116
+ <a href="#M000044">command</a>&nbsp;&nbsp;
117
+ <a href="#M000058">cp</a>&nbsp;&nbsp;
118
+ <a href="#M000069">curl</a>&nbsp;&nbsp;
119
+ <a href="#M000052">d</a>&nbsp;&nbsp;
120
+ <a href="#M000019">default_error_log_path</a>&nbsp;&nbsp;
121
+ <a href="#M000020">default_exit_status_path</a>&nbsp;&nbsp;
122
+ <a href="#M000022">default_prompt</a>&nbsp;&nbsp;
123
+ <a href="#M000023">default_prompt</a>&nbsp;&nbsp;
124
+ <a href="#M000018">default_time_log_path</a>&nbsp;&nbsp;
125
+ <a href="#M000035">die</a>&nbsp;&nbsp;
126
+ <a href="#M000050">dirName</a>&nbsp;&nbsp;
127
+ <a href="#M000070">env</a>&nbsp;&nbsp;
128
+ <a href="#M000071">env_path</a>&nbsp;&nbsp;
129
+ <a href="#M000043">expect</a>&nbsp;&nbsp;
130
+ <a href="#M000053">f</a>&nbsp;&nbsp;
131
+ <a href="#M000051">fileName</a>&nbsp;&nbsp;
132
+ <a href="#M000046">finish</a>&nbsp;&nbsp;
133
+ <a href="#M000027">get_password</a>&nbsp;&nbsp;
134
+ <a href="#M000029">inverse_scaled_seconds</a>&nbsp;&nbsp;
135
+ <a href="#M000036">kill</a>&nbsp;&nbsp;
136
+ <a href="#M000030">limit</a>&nbsp;&nbsp;
137
+ <a href="#M000059">ln</a>&nbsp;&nbsp;
138
+ <a href="#M000060">ln_sf</a>&nbsp;&nbsp;
139
+ <a href="#M000033">log</a>&nbsp;&nbsp;
140
+ <a href="#M000042">log_output</a>&nbsp;&nbsp;
141
+ <a href="#M000031">log_time</a>&nbsp;&nbsp;
142
+ <a href="#M000065">mangle</a>&nbsp;&nbsp;
143
+ <a href="#M000061">mkdir</a>&nbsp;&nbsp;
144
+ <a href="#M000062">mv</a>&nbsp;&nbsp;
145
+ <a href="#M000021">new</a>&nbsp;&nbsp;
146
+ <a href="#M000024">normalize_paths</a>&nbsp;&nbsp;
147
+ <a href="#M000032">note</a>&nbsp;&nbsp;
148
+ <a href="#M000017">phb_available</a>&nbsp;&nbsp;
149
+ <a href="#M000041">reply</a>&nbsp;&nbsp;
150
+ <a href="#M000048">resolve_dir</a>&nbsp;&nbsp;
151
+ <a href="#M000049">resolve_file</a>&nbsp;&nbsp;
152
+ <a href="#M000047">resolve_url</a>&nbsp;&nbsp;
153
+ <a href="#M000038">respond</a>&nbsp;&nbsp;
154
+ <a href="#M000063">rm_rf</a>&nbsp;&nbsp;
155
+ <a href="#M000028">scaled_seconds</a>&nbsp;&nbsp;
156
+ <a href="#M000040">snd</a>&nbsp;&nbsp;
157
+ <a href="#M000034">spawn</a>&nbsp;&nbsp;
158
+ <a href="#M000016">spawn</a>&nbsp;&nbsp;
159
+ <a href="#M000068">tgz</a>&nbsp;&nbsp;
160
+ <a href="#M000026">truncate_time_log</a>&nbsp;&nbsp;
161
+ <a href="#M000067">untgz</a>&nbsp;&nbsp;
162
+ <a href="#M000037">wait</a>&nbsp;&nbsp;
163
+ </div>
164
+ </div>
165
+
166
+ </div>
167
+
168
+
169
+ <!-- if includes -->
170
+
171
+ <div id="section">
172
+
173
+
174
+
175
+ <div id="aliases-list">
176
+ <h3 class="section-bar">External Aliases</h3>
177
+
178
+ <div class="name-list">
179
+ <table summary="aliases">
180
+ <tr class="top-aligned-row context-row">
181
+ <td class="context-item-name">default_maxSeconds</td>
182
+ <td>-></td>
183
+ <td class="context-item-value">time_out</td>
184
+ </tr>
185
+ <tr class="top-aligned-row context-row">
186
+ <td class="context-item-name">default_maxSeconds=</td>
187
+ <td>-></td>
188
+ <td class="context-item-value">time_out=</td>
189
+ </tr>
190
+ </table>
191
+ </div>
192
+ </div>
193
+
194
+
195
+ <div id="attribute-list">
196
+ <h3 class="section-bar">Attributes</h3>
197
+
198
+ <div class="name-list">
199
+ <table>
200
+ <tr class="top-aligned-row context-row">
201
+ <td class="context-item-name">cd_max_seconds</td>
202
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
203
+ <td class="context-item-desc">
204
+ <a href="Session.html">Session</a>&#8217;s file operations other than cd
205
+ are thin wrappers on FileUtil, that make logging consistent, but which do
206
+ not have time limits. <a href="Session.html#M000056">cd</a> is different
207
+ because it needs to invoke both &quot;cd&quot; using <a
208
+ href="Session.html#M000044">command</a>, and the FileUtil version (so that
209
+ tests like File.exist? and File.directory? work). If we don&#8217;t assign
210
+ a time limit to &quot;command cd&quot;, the subsequent operation will apply
211
+ one of it&#8217;s own. So we need to define a limit for <a
212
+ href="Session.html#M000056">cd</a>.
213
+
214
+ </td>
215
+ </tr>
216
+ <tr class="top-aligned-row context-row">
217
+ <td class="context-item-name">default_maxSeconds</td>
218
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
219
+ <td class="context-item-desc">
220
+ Specifies the maximum time that expect and finish will wait, if the script
221
+ does not supply a time.
222
+
223
+ </td>
224
+ </tr>
225
+ <tr class="top-aligned-row context-row">
226
+ <td class="context-item-name">dir_hash</td>
227
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
228
+ <td class="context-item-desc">
229
+ @dir_hash lets you assign symbolic names to directories @dir_hash has:
230
+
231
+ <ul>
232
+ <li>key is a Symbol
233
+
234
+ </li>
235
+ <li>value is an absolute path to a directory
236
+
237
+ </li>
238
+ </ul>
239
+ </td>
240
+ </tr>
241
+ <tr class="top-aligned-row context-row">
242
+ <td class="context-item-name">dir_overide</td>
243
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
244
+ <td class="context-item-desc">
245
+ @dir_overide lets you override the name of directory resulting from
246
+ decompression of an archive. @dir_overide is a Hash with:
247
+
248
+ <ul>
249
+ <li>key is a string URL basename without extension
250
+
251
+ </li>
252
+ <li>value is a directory name.
253
+
254
+ </li>
255
+ </ul>
256
+ </td>
257
+ </tr>
258
+ <tr class="top-aligned-row context-row">
259
+ <td class="context-item-name">error_log_path</td>
260
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
261
+ <td class="context-item-desc">
262
+ @error_log_path contains a required absolute path to the error log file.
263
+ Each command replaces this file: if you want the errors for the entire <a
264
+ href="Session.html">Session</a>, consult the transcript.
265
+
266
+ </td>
267
+ </tr>
268
+ <tr class="top-aligned-row context-row">
269
+ <td class="context-item-name">exit_status</td>
270
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
271
+ <td class="context-item-desc">
272
+ The exit_status is an integer returned by most recently finished command: 0
273
+ is success.
274
+
275
+ </td>
276
+ </tr>
277
+ <tr class="top-aligned-row context-row">
278
+ <td class="context-item-name">exit_status_path</td>
279
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
280
+ <td class="context-item-desc">
281
+ @exit_status_path contains a required absolute path to a file that&#8217;s
282
+ used to record <a href="Session.html#M000044">command</a> exit statuses.
283
+
284
+ </td>
285
+ </tr>
286
+ <tr class="top-aligned-row context-row">
287
+ <td class="context-item-name">give_finishing_notice</td>
288
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
289
+ <td class="context-item-desc">
290
+ If true, provides extra debug information at the price of excessive
291
+ transcript verbosity.
292
+
293
+ </td>
294
+ </tr>
295
+ <tr class="top-aligned-row context-row">
296
+ <td class="context-item-name">log_prompt</td>
297
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
298
+ <td class="context-item-desc">
299
+ If true, prompts are logged like other output
300
+
301
+ </td>
302
+ </tr>
303
+ <tr class="top-aligned-row context-row">
304
+ <td class="context-item-name">password</td>
305
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
306
+ <td class="context-item-desc">
307
+ The automatic response to @password_prompt
308
+
309
+ </td>
310
+ </tr>
311
+ <tr class="top-aligned-row context-row">
312
+ <td class="context-item-name">password_prompt</td>
313
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
314
+ <td class="context-item-desc">
315
+ A <a href="../String.html">String</a> or Regex used to decide when an
316
+ administrative password is required (such as when a script or a command
317
+ uses sudo). If this is nil, <a href="Session.html">Session</a> will not
318
+ attempt to detect and answer administative passwords. If a password is
319
+ actually demanded, your script will hang until the operation times out.
320
+
321
+ </td>
322
+ </tr>
323
+ <tr class="top-aligned-row context-row">
324
+ <td class="context-item-name">pattern_hash_class</td>
325
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
326
+ <td class="context-item-desc">
327
+ To accomodate multiple possible outcomes, <a
328
+ href="Session.html#M000043">expect</a> can take a Hash argument. In many
329
+ cases, however, a <a href="../String.html">String</a> or Regex good enough
330
+ to specify the next response from the spawned process. In that case,
331
+ @pattern_hash_class is instantiated, containing the expected <a
332
+ href="../String.html">String</a> or Regex.
333
+
334
+ </td>
335
+ </tr>
336
+ <tr class="top-aligned-row context-row">
337
+ <td class="context-item-name">pid</td>
338
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
339
+ <td class="context-item-desc">
340
+ The process ID of the spawned process
341
+
342
+ </td>
343
+ </tr>
344
+ <tr class="top-aligned-row context-row">
345
+ <td class="context-item-name">prefixes</td>
346
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
347
+ <td class="context-item-desc">
348
+ A Hash used to specify the prefixes that identify lines in the transcript.
349
+
350
+ </td>
351
+ </tr>
352
+ <tr class="top-aligned-row context-row">
353
+ <td class="context-item-name">prompt</td>
354
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
355
+ <td class="context-item-desc">
356
+ A <a href="../String.html">String</a> or <a
357
+ href="../Regexp.html">Regexp</a> describing the prompt issued by the
358
+ spawned process. You may need to change this if you:
359
+
360
+ <ul>
361
+ <li>spawn a process other than bash
362
+
363
+ </li>
364
+ <li>don&#8217;t use OS X
365
+
366
+ </li>
367
+ <li>customize your shell
368
+
369
+ </li>
370
+ </ul>
371
+ <p>
372
+ Do not confuse this attribute with @password_prompt.
373
+ </p>
374
+ </td>
375
+ </tr>
376
+ <tr class="top-aligned-row context-row">
377
+ <td class="context-item-name">pty_workaround</td>
378
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
379
+ <td class="context-item-desc">
380
+ When set to true, <a href="Session.html">Session</a> attempts to work
381
+ around some PTY idiosyncrasies
382
+
383
+ </td>
384
+ </tr>
385
+ <tr class="top-aligned-row context-row">
386
+ <td class="context-item-name">stdin</td>
387
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
388
+ <td class="context-item-desc">
389
+ <a href="../IO.html">IO</a> that the spawned process takes input from.
390
+
391
+ </td>
392
+ </tr>
393
+ <tr class="top-aligned-row context-row">
394
+ <td class="context-item-name">stdout</td>
395
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
396
+ <td class="context-item-desc">
397
+ <a href="../IO.html">IO</a> that the spawned process writes to.
398
+
399
+ </td>
400
+ </tr>
401
+ <tr class="top-aligned-row context-row">
402
+ <td class="context-item-name">time_log_path</td>
403
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
404
+ <td class="context-item-desc">
405
+ @time_log_path is optional. If present, a log of execution times will be
406
+ kept.
407
+
408
+ </td>
409
+ </tr>
410
+ <tr class="top-aligned-row context-row">
411
+ <td class="context-item-name">time_log_reset</td>
412
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
413
+ <td class="context-item-desc">
414
+ If @time_log_reset is true, the previous time log (if any) will be removed
415
+ when each session is spawned. Otherwise a single log will be used across
416
+ sessions.
417
+
418
+ </td>
419
+ </tr>
420
+ <tr class="top-aligned-row context-row">
421
+ <td class="context-item-name">time_stamp_banners</td>
422
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
423
+ <td class="context-item-desc">
424
+ Turning off timestamps is nice to keep regression test results date
425
+ independent.
426
+
427
+ </td>
428
+ </tr>
429
+ <tr class="top-aligned-row context-row">
430
+ <td class="context-item-name">timeout_multiplier</td>
431
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
432
+ <td class="context-item-desc">
433
+ Scripts should express time limits as measurements made under a particular
434
+ set of conditions. You can then set the @timeout_multiplier to increase or
435
+ decrease time limits according to the new hardware. The @timeout_offset is
436
+ a minimal time added to every time limit (after multiplication by
437
+ @timeout_multiplier)
438
+
439
+ </td>
440
+ </tr>
441
+ <tr class="top-aligned-row context-row">
442
+ <td class="context-item-name">timeout_offset</td>
443
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
444
+ <td class="context-item-desc">
445
+ Used to scale timeouts: see @timeout_multiplier
446
+
447
+ </td>
448
+ </tr>
449
+ <tr class="top-aligned-row context-row">
450
+ <td class="context-item-name">transcript</td>
451
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
452
+ <td class="context-item-desc">
453
+ The @trascript records the session for debug purposes. When @transcript is
454
+ not nil, it must respond to &lt;&lt;. If it also responds to flush, each
455
+ log entry will be flushed.
456
+
457
+ </td>
458
+ </tr>
459
+ <tr class="top-aligned-row context-row">
460
+ <td class="context-item-name">url_hash</td>
461
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
462
+ <td class="context-item-desc">
463
+ @url_hash lets you assign symbolic names to URLs @url_hash has:
464
+
465
+ <ul>
466
+ <li>key is a Symbol
467
+
468
+ </li>
469
+ <li>value is a URL
470
+
471
+ </li>
472
+ </ul>
473
+ </td>
474
+ </tr>
475
+ </table>
476
+ </div>
477
+ </div>
478
+
479
+
480
+
481
+ <!-- if method_list -->
482
+ <div id="methods">
483
+ <h3 class="section-bar">Public Class methods</h3>
484
+
485
+ <div id="method-M000022" class="method-detail">
486
+ <a name="M000022"></a>
487
+
488
+ <div class="method-heading">
489
+ <a href="Session.src/M000022.html" target="Code" class="method-signature"
490
+ onclick="popupCode('Session.src/M000022.html');return false;">
491
+ <span class="method-name">default_prompt</span><span class="method-args">()</span>
492
+ </a>
493
+ </div>
494
+
495
+ <div class="method-description">
496
+ <p>
497
+ Specifies the default value of the prompt attribute. This returns the
498
+ default pattern that cmd will wait for. This is user dependent. Possible
499
+ improvements:
500
+ </p>
501
+ <ul>
502
+ <li>include the host name
503
+
504
+ </li>
505
+ <li>include the current working directory.
506
+
507
+ </li>
508
+ </ul>
509
+ <p>
510
+ Tested only under OS X, where the prompt for root ends with # instead of $
511
+ The root prompt is used if the script is invoked with sudo TBD: there is
512
+ probably a better way to get this from the OS, rather than guessing it.
513
+ </p>
514
+ </div>
515
+ </div>
516
+
517
+ <div id="method-M000021" class="method-detail">
518
+ <a name="M000021"></a>
519
+
520
+ <div class="method-heading">
521
+ <a href="Session.src/M000021.html" target="Code" class="method-signature"
522
+ onclick="popupCode('Session.src/M000021.html');return false;">
523
+ <span class="method-name">new</span><span class="method-args">()</span>
524
+ </a>
525
+ </div>
526
+
527
+ <div class="method-description">
528
+ <p>
529
+ <a href="Session.html#M000021">new</a> does not make the instance usable:
530
+ it needs to <a href="Session.html#M000016">spawn</a> first. After you
531
+ create an instance you can tweak its attributes before spawning.
532
+ </p>
533
+ </div>
534
+ </div>
535
+
536
+ <div id="method-M000016" class="method-detail">
537
+ <a name="M000016"></a>
538
+
539
+ <div class="method-heading">
540
+ <a href="Session.src/M000016.html" target="Code" class="method-signature"
541
+ onclick="popupCode('Session.src/M000016.html');return false;">
542
+ <span class="method-name">spawn</span><span class="method-args">(program)</span>
543
+ </a>
544
+ </div>
545
+
546
+ <div class="method-description">
547
+ <p>
548
+ Spawn a new process, executing the indicated program, and create a new
549
+ instance that communicates with the process. Use <a
550
+ href="Session.html#M000021">new</a> instead if you want to adjust the
551
+ attributes.
552
+ </p>
553
+ </div>
554
+ </div>
555
+
556
+ <h3 class="section-bar">Public Instance methods</h3>
557
+
558
+ <div id="method-M000039" class="method-detail">
559
+ <a name="M000039"></a>
560
+
561
+ <div class="method-heading">
562
+ <span class="method-name">answer</span><span class="method-args">(response)</span>
563
+ </div>
564
+
565
+ <div class="method-description">
566
+ <p>
567
+ Alias for <a href="Session.html#M000038">respond</a>
568
+ </p>
569
+ </div>
570
+ </div>
571
+
572
+ <div id="method-M000054" class="method-detail">
573
+ <a name="M000054"></a>
574
+
575
+ <div class="method-heading">
576
+ <a href="Session.src/M000054.html" target="Code" class="method-signature"
577
+ onclick="popupCode('Session.src/M000054.html');return false;">
578
+ <span class="method-name">archive_type</span><span class="method-args">(fName)</span>
579
+ </a>
580
+ </div>
581
+
582
+ <div class="method-description">
583
+ <p>
584
+ Examines the extension of a file name or URL to determine the type of
585
+ archive. Returns a two element array containing:
586
+ </p>
587
+ <pre>
588
+ result[0] = the extension
589
+ result[1] = gnutar decompression option
590
+ </pre>
591
+ </div>
592
+ </div>
593
+
594
+ <div id="method-M000066" class="method-detail">
595
+ <a name="M000066"></a>
596
+
597
+ <div class="method-heading">
598
+ <a href="Session.src/M000066.html" target="Code" class="method-signature"
599
+ onclick="popupCode('Session.src/M000066.html');return false;">
600
+ <span class="method-name">banner</span><span class="method-args">(what)</span>
601
+ </a>
602
+ </div>
603
+
604
+ <div class="method-description">
605
+ <p>
606
+ Display a banner on both the console and the transcript. The banner
607
+ contains the specified text. It may also have a timestamp (if
608
+ @time_stamp_banners is true).
609
+ </p>
610
+ </div>
611
+ </div>
612
+
613
+ <div id="method-M000025" class="method-detail">
614
+ <a name="M000025"></a>
615
+
616
+ <div class="method-heading">
617
+ <a href="Session.src/M000025.html" target="Code" class="method-signature"
618
+ onclick="popupCode('Session.src/M000025.html');return false;">
619
+ <span class="method-name">build_default_dir_hash</span><span class="method-args">()</span>
620
+ </a>
621
+ </div>
622
+
623
+ <div class="method-description">
624
+ <p>
625
+ Constructs @dir_hash from @url_hash
626
+ </p>
627
+ </div>
628
+ </div>
629
+
630
+ <div id="method-M000056" class="method-detail">
631
+ <a name="M000056"></a>
632
+
633
+ <div class="method-heading">
634
+ <a href="Session.src/M000056.html" target="Code" class="method-signature"
635
+ onclick="popupCode('Session.src/M000056.html');return false;">
636
+ <span class="method-name">cd</span><span class="method-args">(nameSymbol, *more) {|| ...}</span>
637
+ </a>
638
+ </div>
639
+
640
+ <div class="method-description">
641
+ <p>
642
+ Set the working directory (both the shell&#8217;s via :command, and Ruby
643
+ via FileUtils::cd) to a specified value. Several types of argument are
644
+ acceptable:
645
+ </p>
646
+ <ul>
647
+ <li>&#8217;-&#8217; which returns to the previous directory
648
+
649
+ </li>
650
+ <li>A <a href="../String.html">String</a> path (relative or absolute)
651
+
652
+ </li>
653
+ <li>A Symbol previously associated with a path in dir_hash
654
+
655
+ </li>
656
+ </ul>
657
+ <p>
658
+ dir_hash is setup by
659
+ </p>
660
+ <ul>
661
+ <li>cd! which you invoke at your discretion
662
+
663
+ </li>
664
+ <li><a href="Session.html#M000025">build_default_dir_hash</a>, which is called
665
+ by :prepare during :spawn. This method adds to dir_hash keys that are
666
+ present in url_hash, but missing from dir_hash. The values are derived by
667
+ dirName.
668
+
669
+ </li>
670
+ </ul>
671
+ <p>
672
+ This method can be fed an optional block. The new directory is set before
673
+ the block executes, and the original directory is restored after the block
674
+ has finished. The previous_directory is also restored, so that a subsequent
675
+ &quot;cd &#8217;-&#8217;&quot; takes you to the directory before this
676
+ method executed (instead of the one specified here).
677
+ </p>
678
+ <p>
679
+ Unlike the bash command, this takes any number of arguments which it
680
+ assembles with the appropriate separator into a single path. Also unlike
681
+ bash, it raises an exception if the argument does not correspond to a
682
+ reachable directory.
683
+ </p>
684
+ </div>
685
+ </div>
686
+
687
+ <div id="method-M000055" class="method-detail">
688
+ <a name="M000055"></a>
689
+
690
+ <div class="method-heading">
691
+ <a href="Session.src/M000055.html" target="Code" class="method-signature"
692
+ onclick="popupCode('Session.src/M000055.html');return false;">
693
+ <span class="method-name">cd!</span><span class="method-args">(nameSymbol, directory=FileUtils::pwd)</span>
694
+ </a>
695
+ </div>
696
+
697
+ <div class="method-description">
698
+ <p>
699
+ Associate a directory with nameSymbol, so that you can go there using
700
+ &#8216;cd nameSymbol&#8217;. Does not change the current directory.
701
+ directory can be absolute or relative. If it is relative, it is made
702
+ absolute based on the current working directory.
703
+ </p>
704
+ </div>
705
+ </div>
706
+
707
+ <div id="method-M000057" class="method-detail">
708
+ <a name="M000057"></a>
709
+
710
+ <div class="method-heading">
711
+ <a href="Session.src/M000057.html" target="Code" class="method-signature"
712
+ onclick="popupCode('Session.src/M000057.html');return false;">
713
+ <span class="method-name">chmod</span><span class="method-args">(mode, list, *args)</span>
714
+ </a>
715
+ </div>
716
+
717
+ <div class="method-description">
718
+ <p>
719
+ Change permissions
720
+ </p>
721
+ </div>
722
+ </div>
723
+
724
+ <div id="method-M000045" class="method-detail">
725
+ <a name="M000045"></a>
726
+
727
+ <div class="method-heading">
728
+ <span class="method-name">cmd</span><span class="method-args">(command, maxSeconds=nil, silentlyIgnoreNonzeroExitStatus=false)</span>
729
+ </div>
730
+
731
+ <div class="method-description">
732
+ <p>
733
+ Alias for <a href="Session.html#M000044">command</a>
734
+ </p>
735
+ </div>
736
+ </div>
737
+
738
+ <div id="method-M000064" class="method-detail">
739
+ <a name="M000064"></a>
740
+
741
+ <div class="method-heading">
742
+ <a href="Session.src/M000064.html" target="Code" class="method-signature"
743
+ onclick="popupCode('Session.src/M000064.html');return false;">
744
+ <span class="method-name">cmp</span><span class="method-args">(a, b, silent=true)</span>
745
+ </a>
746
+ </div>
747
+
748
+ <div class="method-description">
749
+ <p>
750
+ Return a Boolean, true if files have identical contents.
751
+ </p>
752
+ </div>
753
+ </div>
754
+
755
+ <div id="method-M000044" class="method-detail">
756
+ <a name="M000044"></a>
757
+
758
+ <div class="method-heading">
759
+ <a href="Session.src/M000044.html" target="Code" class="method-signature"
760
+ onclick="popupCode('Session.src/M000044.html');return false;">
761
+ <span class="method-name">command</span><span class="method-args">(command, maxSeconds=nil, silentlyIgnoreNonzeroExitStatus=false)</span>
762
+ </a>
763
+ </div>
764
+
765
+ <div class="method-description">
766
+ <p>
767
+ Send a string to the spawned process. If maxSeconds is specified, the
768
+ command will block until finished. If maxSedonds is not specified, or nil,
769
+ you can :expect and :reply. Each invocation rewrites the error log (which
770
+ is copied to transcript).
771
+ </p>
772
+ </div>
773
+ </div>
774
+
775
+ <div id="method-M000058" class="method-detail">
776
+ <a name="M000058"></a>
777
+
778
+ <div class="method-heading">
779
+ <a href="Session.src/M000058.html" target="Code" class="method-signature"
780
+ onclick="popupCode('Session.src/M000058.html');return false;">
781
+ <span class="method-name">cp</span><span class="method-args">(src, dest, *args)</span>
782
+ </a>
783
+ </div>
784
+
785
+ <div class="method-description">
786
+ <p>
787
+ Copies a file(s) src to dest. If dest is a directory, copies src to
788
+ dest/src. src can be a list or a directory: unlike bash, you don&#8217;t
789
+ need a -r for directories. Also unlike bash (but like FileUtils::cp_r) you
790
+ use &#8217;.&#8217; as a wildcard instead of &#8217;*&#8217; when you want
791
+ to copy all files in directory.
792
+ </p>
793
+ </div>
794
+ </div>
795
+
796
+ <div id="method-M000069" class="method-detail">
797
+ <a name="M000069"></a>
798
+
799
+ <div class="method-heading">
800
+ <a href="Session.src/M000069.html" target="Code" class="method-signature"
801
+ onclick="popupCode('Session.src/M000069.html');return false;">
802
+ <span class="method-name">curl</span><span class="method-args">(url, maxSeconds=60*10)</span>
803
+ </a>
804
+ </div>
805
+
806
+ <div class="method-description">
807
+ <p>
808
+ Download the file specified by the given URL or symbolic name (if it has
809
+ not already been downloaded). You need to have curl installed.
810
+ </p>
811
+ </div>
812
+ </div>
813
+
814
+ <div id="method-M000052" class="method-detail">
815
+ <a name="M000052"></a>
816
+
817
+ <div class="method-heading">
818
+ <a href="Session.src/M000052.html" target="Code" class="method-signature"
819
+ onclick="popupCode('Session.src/M000052.html');return false;">
820
+ <span class="method-name">d</span><span class="method-args">(input, silent=false)</span>
821
+ </a>
822
+ </div>
823
+
824
+ <div class="method-description">
825
+ <p>
826
+ Similar to <a href="Session.html#M000048">resolve_dir</a>, but further
827
+ processes <a href="../String.html">String</a> inputs to remove the
828
+ extension and the leading path. Similar to dirName, but accepts Array
829
+ inputs, and attempts to look up dir in dir_hash. Returns a local directory.
830
+ </p>
831
+ </div>
832
+ </div>
833
+
834
+ <div id="method-M000019" class="method-detail">
835
+ <a name="M000019"></a>
836
+
837
+ <div class="method-heading">
838
+ <a href="Session.src/M000019.html" target="Code" class="method-signature"
839
+ onclick="popupCode('Session.src/M000019.html');return false;">
840
+ <span class="method-name">default_error_log_path</span><span class="method-args">()</span>
841
+ </a>
842
+ </div>
843
+
844
+ <div class="method-description">
845
+ <p>
846
+ Guesses where to put the error log
847
+ </p>
848
+ </div>
849
+ </div>
850
+
851
+ <div id="method-M000020" class="method-detail">
852
+ <a name="M000020"></a>
853
+
854
+ <div class="method-heading">
855
+ <a href="Session.src/M000020.html" target="Code" class="method-signature"
856
+ onclick="popupCode('Session.src/M000020.html');return false;">
857
+ <span class="method-name">default_exit_status_path</span><span class="method-args">()</span>
858
+ </a>
859
+ </div>
860
+
861
+ <div class="method-description">
862
+ <p>
863
+ Guesses where to put the error status collection file.
864
+ </p>
865
+ </div>
866
+ </div>
867
+
868
+ <div id="method-M000023" class="method-detail">
869
+ <a name="M000023"></a>
870
+
871
+ <div class="method-heading">
872
+ <a href="Session.src/M000023.html" target="Code" class="method-signature"
873
+ onclick="popupCode('Session.src/M000023.html');return false;">
874
+ <span class="method-name">default_prompt</span><span class="method-args">()</span>
875
+ </a>
876
+ </div>
877
+
878
+ <div class="method-description">
879
+ <p>
880
+ Instance side behavior of class method with same name.
881
+ </p>
882
+ </div>
883
+ </div>
884
+
885
+ <div id="method-M000018" class="method-detail">
886
+ <a name="M000018"></a>
887
+
888
+ <div class="method-heading">
889
+ <a href="Session.src/M000018.html" target="Code" class="method-signature"
890
+ onclick="popupCode('Session.src/M000018.html');return false;">
891
+ <span class="method-name">default_time_log_path</span><span class="method-args">()</span>
892
+ </a>
893
+ </div>
894
+
895
+ <div class="method-description">
896
+ <p>
897
+ Guesses where to put the time log.
898
+ </p>
899
+ </div>
900
+ </div>
901
+
902
+ <div id="method-M000035" class="method-detail">
903
+ <a name="M000035"></a>
904
+
905
+ <div class="method-heading">
906
+ <a href="Session.src/M000035.html" target="Code" class="method-signature"
907
+ onclick="popupCode('Session.src/M000035.html');return false;">
908
+ <span class="method-name">die</span><span class="method-args">(maxSeconds=1)</span>
909
+ </a>
910
+ </div>
911
+
912
+ <div class="method-description">
913
+ <p>
914
+ Attempts to kill the pocess with SIGTERM. If the process has not terminated
915
+ by maxSeconds, follows up with SIGKILL.
916
+ </p>
917
+ </div>
918
+ </div>
919
+
920
+ <div id="method-M000050" class="method-detail">
921
+ <a name="M000050"></a>
922
+
923
+ <div class="method-heading">
924
+ <a href="Session.src/M000050.html" target="Code" class="method-signature"
925
+ onclick="popupCode('Session.src/M000050.html');return false;">
926
+ <span class="method-name">dirName</span><span class="method-args">(url, silent=false)</span>
927
+ </a>
928
+ </div>
929
+
930
+ <div class="method-description">
931
+ <p>
932
+ Given a symoblic name of an entry in url_hash, or an URL that points to a
933
+ .tgz or .tar.gz file, return the relative directory expected to result from
934
+ untgz, by removing the extension and the path leading up to the file name.
935
+ Return this result, unless it is a key into dir_override, in which case the
936
+ corresponding value is returned. If an overide is specified in dir_overide,
937
+ that is used instead.
938
+ </p>
939
+ </div>
940
+ </div>
941
+
942
+ <div id="method-M000070" class="method-detail">
943
+ <a name="M000070"></a>
944
+
945
+ <div class="method-heading">
946
+ <a href="Session.src/M000070.html" target="Code" class="method-signature"
947
+ onclick="popupCode('Session.src/M000070.html');return false;">
948
+ <span class="method-name">env</span><span class="method-args">(name, value, forceValue=false, warning=true)</span>
949
+ </a>
950
+ </div>
951
+
952
+ <div class="method-description">
953
+ <p>
954
+ Sets the named environmental variable for use during the session,
955
+ optionally warning the user to make a more permanent setting. If warn is
956
+ false, the user is not asked to make any changes. This is useful for
957
+ settings that are necessary only for compilation.
958
+ </p>
959
+ <p>
960
+ If forceValue is false, any previously value is acceptable, so an existing
961
+ value is not changed. In this case the user is not asked to do anything
962
+ unless the value is undefined.
963
+ </p>
964
+ <p>
965
+ If forceValue is true, only the provided value is acceptable. The
966
+ environmental variable will be changed if necessary. If it is changed, and
967
+ warning==true, the user is advised change the value.
968
+ </p>
969
+ <p>
970
+ If value is nil, the environmental variable is unset. In this case
971
+ forceValue and warning have no effect.
972
+ </p>
973
+ <p>
974
+ Returns the final value of the named environmental variable. (an empty <a
975
+ href="../String.html">String</a> if the value is unset).
976
+ </p>
977
+ <p>
978
+ Note that OS X is smart enough to give you access to these when you sudo.
979
+ You can readily prove this by executing in a bash shell &#8216;export
980
+ AnswerToEverything=42&#8217; and then executing &#8216;sudo echo
981
+ $AnswerToEverything&#8216;
982
+ </p>
983
+ </div>
984
+ </div>
985
+
986
+ <div id="method-M000071" class="method-detail">
987
+ <a name="M000071"></a>
988
+
989
+ <div class="method-heading">
990
+ <a href="Session.src/M000071.html" target="Code" class="method-signature"
991
+ onclick="popupCode('Session.src/M000071.html');return false;">
992
+ <span class="method-name">env_path</span><span class="method-args">(name, value, warning=true, sep=':')</span>
993
+ </a>
994
+ </div>
995
+
996
+ <div class="method-description">
997
+ <p>
998
+ Sets the named environmental path variable to include value (for use during
999
+ the session), optionally warning the user to make a more permanent setting.
1000
+ </p>
1001
+ <p>
1002
+ If the path is not defined at all, this will define it. If the path is
1003
+ defined, and contains value, nothing happens. If the path is defined but
1004
+ does not contain value,this prefixes value onto the path.
1005
+ </p>
1006
+ </div>
1007
+ </div>
1008
+
1009
+ <div id="method-M000043" class="method-detail">
1010
+ <a name="M000043"></a>
1011
+
1012
+ <div class="method-heading">
1013
+ <a href="Session.src/M000043.html" target="Code" class="method-signature"
1014
+ onclick="popupCode('Session.src/M000043.html');return false;">
1015
+ <span class="method-name">expect</span><span class="method-args">(pat, maxSeconds=60, silentlyContinueAfterTimeout=false)</span>
1016
+ </a>
1017
+ </div>
1018
+
1019
+ <div class="method-description">
1020
+ <p>
1021
+ Expect the spawned process to produce some output. pat can be a <a
1022
+ href="../String.html">String</a>, a <a href="../Regexp.html">Regexp</a>, or
1023
+ a Hash (keys identify patterns, values are Strings or <a
1024
+ href="../Regexp.html">Regexp</a>). Raises an exception if no match occurs,
1025
+ unless silentlyContinueAfterTimeout is true. If a match does occur, returns
1026
+ an Array:
1027
+ </p>
1028
+ <pre>
1029
+ result[0]=key for pattern that matched (:expected if pat is a String or Regexp)
1030
+ result[1]=match result
1031
+ </pre>
1032
+ </div>
1033
+ </div>
1034
+
1035
+ <div id="method-M000053" class="method-detail">
1036
+ <a name="M000053"></a>
1037
+
1038
+ <div class="method-heading">
1039
+ <a href="Session.src/M000053.html" target="Code" class="method-signature"
1040
+ onclick="popupCode('Session.src/M000053.html');return false;">
1041
+ <span class="method-name">f</span><span class="method-args">(input, silent=false)</span>
1042
+ </a>
1043
+ </div>
1044
+
1045
+ <div class="method-description">
1046
+ <p>
1047
+ Similar to <a href="Session.html#M000049">resolve_file</a>, but further
1048
+ processes <a href="../String.html">String</a> inputs to remove the leading
1049
+ path. Similar to fileName, but accepts Array inputs. Returns a local
1050
+ directory.
1051
+ </p>
1052
+ </div>
1053
+ </div>
1054
+
1055
+ <div id="method-M000051" class="method-detail">
1056
+ <a name="M000051"></a>
1057
+
1058
+ <div class="method-heading">
1059
+ <a href="Session.src/M000051.html" target="Code" class="method-signature"
1060
+ onclick="popupCode('Session.src/M000051.html');return false;">
1061
+ <span class="method-name">fileName</span><span class="method-args">(url, silent=false)</span>
1062
+ </a>
1063
+ </div>
1064
+
1065
+ <div class="method-description">
1066
+ <p>
1067
+ Given a symbolic name of an entry in url_hash, or an URL that refers to a
1068
+ file, return the relative name of the file, by removing the path leading up
1069
+ to the file name, but keeping the extension.
1070
+ </p>
1071
+ </div>
1072
+ </div>
1073
+
1074
+ <div id="method-M000046" class="method-detail">
1075
+ <a name="M000046"></a>
1076
+
1077
+ <div class="method-heading">
1078
+ <a href="Session.src/M000046.html" target="Code" class="method-signature"
1079
+ onclick="popupCode('Session.src/M000046.html');return false;">
1080
+ <span class="method-name">finish</span><span class="method-args">(maxSeconds=60, hasErrLog=true, doTimeLog=true)</span>
1081
+ </a>
1082
+ </div>
1083
+
1084
+ <div class="method-description">
1085
+ <p>
1086
+ Finish executing the most recent <a
1087
+ href="Session.html#M000044">command</a>. If this has already been called
1088
+ since the most recent <a href="Session.html#M000044">command</a> started,
1089
+ does nothing. Otherwise it blocks until the shell issues a prompt. You
1090
+ usually don&#8217;t need to explicitly call this, because it&#8217;s done
1091
+ automatically. When a <a href="Session.html#M000044">command</a> has
1092
+ maxSeconds, this is called automatically. When a <a
1093
+ href="Session.html#M000044">command</a> does not have maxSeconds (so that
1094
+ <a href="Session.html#M000043">expect</a> can be called), the subsequent <a
1095
+ href="Session.html#M000044">command</a> will call this before issuing
1096
+ itself to the shell. If you ask the shell to die, it will also call this
1097
+ (in case the previous <a href="Session.html#M000044">command</a> was called
1098
+ without maxSeconds).
1099
+ </p>
1100
+ </div>
1101
+ </div>
1102
+
1103
+ <div id="method-M000027" class="method-detail">
1104
+ <a name="M000027"></a>
1105
+
1106
+ <div class="method-heading">
1107
+ <a href="Session.src/M000027.html" target="Code" class="method-signature"
1108
+ onclick="popupCode('Session.src/M000027.html');return false;">
1109
+ <span class="method-name">get_password</span><span class="method-args">()</span>
1110
+ </a>
1111
+ </div>
1112
+
1113
+ <div class="method-description">
1114
+ <p>
1115
+ Prompts the user for password and saves it in the @passsword attribute, in
1116
+ order to provide it to &#8216;sudo&#8217;.
1117
+ </p>
1118
+ </div>
1119
+ </div>
1120
+
1121
+ <div id="method-M000029" class="method-detail">
1122
+ <a name="M000029"></a>
1123
+
1124
+ <div class="method-heading">
1125
+ <a href="Session.src/M000029.html" target="Code" class="method-signature"
1126
+ onclick="popupCode('Session.src/M000029.html');return false;">
1127
+ <span class="method-name">inverse_scaled_seconds</span><span class="method-args">(limit)</span>
1128
+ </a>
1129
+ </div>
1130
+
1131
+ <div class="method-description">
1132
+ <p>
1133
+ Given a scaled time, return an unscaled time. This is the inverse of <a
1134
+ href="Session.html#M000028">scaled_seconds</a>
1135
+ </p>
1136
+ </div>
1137
+ </div>
1138
+
1139
+ <div id="method-M000036" class="method-detail">
1140
+ <a name="M000036"></a>
1141
+
1142
+ <div class="method-heading">
1143
+ <a href="Session.src/M000036.html" target="Code" class="method-signature"
1144
+ onclick="popupCode('Session.src/M000036.html');return false;">
1145
+ <span class="method-name">kill</span><span class="method-args">( signal='SIGTERM', maxSeconds=1)</span>
1146
+ </a>
1147
+ </div>
1148
+
1149
+ <div class="method-description">
1150
+ <p>
1151
+ Send a signal to the spawned process. &#8216;SIGTERM&#8217; is polite, but
1152
+ not guaranteed to stop the process. &#8216;SIGKILL&#8217; is guaranteed to
1153
+ stop the process
1154
+ </p>
1155
+ </div>
1156
+ </div>
1157
+
1158
+ <div id="method-M000030" class="method-detail">
1159
+ <a name="M000030"></a>
1160
+
1161
+ <div class="method-heading">
1162
+ <a href="Session.src/M000030.html" target="Code" class="method-signature"
1163
+ onclick="popupCode('Session.src/M000030.html');return false;">
1164
+ <span class="method-name">limit</span><span class="method-args">(measuredSeconds, &amp;block)</span>
1165
+ </a>
1166
+ </div>
1167
+
1168
+ <div class="method-description">
1169
+ <p>
1170
+ Execute block under a time limit (which gets scaled).
1171
+ </p>
1172
+ </div>
1173
+ </div>
1174
+
1175
+ <div id="method-M000059" class="method-detail">
1176
+ <a name="M000059"></a>
1177
+
1178
+ <div class="method-heading">
1179
+ <a href="Session.src/M000059.html" target="Code" class="method-signature"
1180
+ onclick="popupCode('Session.src/M000059.html');return false;">
1181
+ <span class="method-name">ln</span><span class="method-args">(old, new, *args)</span>
1182
+ </a>
1183
+ </div>
1184
+
1185
+ <div class="method-description">
1186
+ <p>
1187
+ Creates a hard link new which points to old. If new already exists and it
1188
+ is a directory, creates a symbolic link new/old
1189
+ </p>
1190
+ </div>
1191
+ </div>
1192
+
1193
+ <div id="method-M000060" class="method-detail">
1194
+ <a name="M000060"></a>
1195
+
1196
+ <div class="method-heading">
1197
+ <a href="Session.src/M000060.html" target="Code" class="method-signature"
1198
+ onclick="popupCode('Session.src/M000060.html');return false;">
1199
+ <span class="method-name">ln_sf</span><span class="method-args">(old, new, *args)</span>
1200
+ </a>
1201
+ </div>
1202
+
1203
+ <div class="method-description">
1204
+ <p>
1205
+ Creates a symbolic link new which points to old. If new already exists and
1206
+ it is a directory, creates a symbolic link new/old. If new already exists
1207
+ and is a link, replaces it.
1208
+ </p>
1209
+ </div>
1210
+ </div>
1211
+
1212
+ <div id="method-M000033" class="method-detail">
1213
+ <a name="M000033"></a>
1214
+
1215
+ <div class="method-heading">
1216
+ <a href="Session.src/M000033.html" target="Code" class="method-signature"
1217
+ onclick="popupCode('Session.src/M000033.html');return false;">
1218
+ <span class="method-name">log</span><span class="method-args">(type, string, *args)</span>
1219
+ </a>
1220
+ </div>
1221
+
1222
+ <div class="method-description">
1223
+ <p>
1224
+ Write a string onto the @transcript. The string can take optional arguments
1225
+ along the lines of printf. A prefix that describes the type of string is
1226
+ applied.
1227
+ </p>
1228
+ </div>
1229
+ </div>
1230
+
1231
+ <div id="method-M000042" class="method-detail">
1232
+ <a name="M000042"></a>
1233
+
1234
+ <div class="method-heading">
1235
+ <a href="Session.src/M000042.html" target="Code" class="method-signature"
1236
+ onclick="popupCode('Session.src/M000042.html');return false;">
1237
+ <span class="method-name">log_output</span><span class="method-args">(line)</span>
1238
+ </a>
1239
+ </div>
1240
+
1241
+ <div class="method-description">
1242
+ <p>
1243
+ Log some output from the spawned process.
1244
+ </p>
1245
+ </div>
1246
+ </div>
1247
+
1248
+ <div id="method-M000031" class="method-detail">
1249
+ <a name="M000031"></a>
1250
+
1251
+ <div class="method-heading">
1252
+ <a href="Session.src/M000031.html" target="Code" class="method-signature"
1253
+ onclick="popupCode('Session.src/M000031.html');return false;">
1254
+ <span class="method-name">log_time</span><span class="method-args">(description, doLog=true) {|unless time_log_path &amp;&amp; doLog| ...}</span>
1255
+ </a>
1256
+ </div>
1257
+
1258
+ <div class="method-description">
1259
+ <p>
1260
+ Logs execution time of block, if @time_log_path is specified. Without
1261
+ @time_log_path, executes block without timing it. In either case, returns
1262
+ the block result.
1263
+ </p>
1264
+ </div>
1265
+ </div>
1266
+
1267
+ <div id="method-M000065" class="method-detail">
1268
+ <a name="M000065"></a>
1269
+
1270
+ <div class="method-heading">
1271
+ <a href="Session.src/M000065.html" target="Code" class="method-signature"
1272
+ onclick="popupCode('Session.src/M000065.html');return false;">
1273
+ <span class="method-name">mangle</span><span class="method-args">(input, changes, output=nil, silent=false)</span>
1274
+ </a>
1275
+ </div>
1276
+
1277
+ <div class="method-description">
1278
+ <p>
1279
+ Load the input file into memory, make the specified changes, and write the
1280
+ modified file to output. If output is nil, replace the input file. Changes
1281
+ is a hash: keys are <a href="../String.html">String</a> or <a
1282
+ href="../Regexp.html">Regexp</a> patterns to be globally replaced, values
1283
+ are <a href="../String.html">String</a> replacement values.
1284
+ </p>
1285
+ </div>
1286
+ </div>
1287
+
1288
+ <div id="method-M000061" class="method-detail">
1289
+ <a name="M000061"></a>
1290
+
1291
+ <div class="method-heading">
1292
+ <a href="Session.src/M000061.html" target="Code" class="method-signature"
1293
+ onclick="popupCode('Session.src/M000061.html');return false;">
1294
+ <span class="method-name">mkdir</span><span class="method-args">(list, *args)</span>
1295
+ </a>
1296
+ </div>
1297
+
1298
+ <div class="method-description">
1299
+ <p>
1300
+ Creates one or more directories (including any necessary parent
1301
+ directories)
1302
+ </p>
1303
+ </div>
1304
+ </div>
1305
+
1306
+ <div id="method-M000062" class="method-detail">
1307
+ <a name="M000062"></a>
1308
+
1309
+ <div class="method-heading">
1310
+ <a href="Session.src/M000062.html" target="Code" class="method-signature"
1311
+ onclick="popupCode('Session.src/M000062.html');return false;">
1312
+ <span class="method-name">mv</span><span class="method-args">(src, dest, *args)</span>
1313
+ </a>
1314
+ </div>
1315
+
1316
+ <div class="method-description">
1317
+ <p>
1318
+ Moves file(s) src to dest. If file and dest exist on the different disk
1319
+ partition, the file is copied instead. Unlike cp, the src argument does not
1320
+ accept &#8217;.&#8217; wilcards (or &#8217;*&#8217; for that matter).
1321
+ </p>
1322
+ </div>
1323
+ </div>
1324
+
1325
+ <div id="method-M000024" class="method-detail">
1326
+ <a name="M000024"></a>
1327
+
1328
+ <div class="method-heading">
1329
+ <a href="Session.src/M000024.html" target="Code" class="method-signature"
1330
+ onclick="popupCode('Session.src/M000024.html');return false;">
1331
+ <span class="method-name">normalize_paths</span><span class="method-args">()</span>
1332
+ </a>
1333
+ </div>
1334
+
1335
+ <div class="method-description">
1336
+ <p>
1337
+ Ensure that file paths are absolute. This is necessary so that these files
1338
+ can be found after a <a href="Session.html#M000056">cd</a>.
1339
+ </p>
1340
+ </div>
1341
+ </div>
1342
+
1343
+ <div id="method-M000032" class="method-detail">
1344
+ <a name="M000032"></a>
1345
+
1346
+ <div class="method-heading">
1347
+ <a href="Session.src/M000032.html" target="Code" class="method-signature"
1348
+ onclick="popupCode('Session.src/M000032.html');return false;">
1349
+ <span class="method-name">note</span><span class="method-args">(string, *args)</span>
1350
+ </a>
1351
+ </div>
1352
+
1353
+ <div class="method-description">
1354
+ <p>
1355
+ Write a notice to @transcript. The string can take optional arguments along
1356
+ the lines of printf.
1357
+ </p>
1358
+ </div>
1359
+ </div>
1360
+
1361
+ <div id="method-M000017" class="method-detail">
1362
+ <a name="M000017"></a>
1363
+
1364
+ <div class="method-heading">
1365
+ <a href="Session.src/M000017.html" target="Code" class="method-signature"
1366
+ onclick="popupCode('Session.src/M000017.html');return false;">
1367
+ <span class="method-name">phb_available</span><span class="method-args">()</span>
1368
+ </a>
1369
+ </div>
1370
+
1371
+ <div class="method-description">
1372
+ <p>
1373
+ PHB knows the directory structure of Amber projects, so when PHB is
1374
+ available, various temp files can be placed in more appropriate
1375
+ directories.
1376
+ </p>
1377
+ </div>
1378
+ </div>
1379
+
1380
+ <div id="method-M000041" class="method-detail">
1381
+ <a name="M000041"></a>
1382
+
1383
+ <div class="method-heading">
1384
+ <span class="method-name">reply</span><span class="method-args">(response)</span>
1385
+ </div>
1386
+
1387
+ <div class="method-description">
1388
+ <p>
1389
+ Alias for <a href="Session.html#M000038">respond</a>
1390
+ </p>
1391
+ </div>
1392
+ </div>
1393
+
1394
+ <div id="method-M000048" class="method-detail">
1395
+ <a name="M000048"></a>
1396
+
1397
+ <div class="method-heading">
1398
+ <a href="Session.src/M000048.html" target="Code" class="method-signature"
1399
+ onclick="popupCode('Session.src/M000048.html');return false;">
1400
+ <span class="method-name">resolve_dir</span><span class="method-args">(input, silent=false)</span>
1401
+ </a>
1402
+ </div>
1403
+
1404
+ <div class="method-description">
1405
+ <p>
1406
+ If input is:
1407
+ </p>
1408
+ <ul>
1409
+ <li>A Symbol, a directory is looked up in dir_hash
1410
+
1411
+ </li>
1412
+ <li>A <a href="../String.html">String</a>, it is returned unchanged
1413
+
1414
+ </li>
1415
+ <li>An Array, each element is recursively resolved
1416
+
1417
+ </li>
1418
+ </ul>
1419
+ <p>
1420
+ Raises an exception if a symbolic name does not have a corresponding value,
1421
+ unless silent is true.
1422
+ </p>
1423
+ </div>
1424
+ </div>
1425
+
1426
+ <div id="method-M000049" class="method-detail">
1427
+ <a name="M000049"></a>
1428
+
1429
+ <div class="method-heading">
1430
+ <a href="Session.src/M000049.html" target="Code" class="method-signature"
1431
+ onclick="popupCode('Session.src/M000049.html');return false;">
1432
+ <span class="method-name">resolve_file</span><span class="method-args">(input, silent=false)</span>
1433
+ </a>
1434
+ </div>
1435
+
1436
+ <div class="method-description">
1437
+ <p>
1438
+ If input is:
1439
+ </p>
1440
+ <ul>
1441
+ <li>A Symbol, a file is computed from the corresponding value in url_hash
1442
+
1443
+ </li>
1444
+ <li>A <a href="../String.html">String</a>, it is returned unchanged
1445
+
1446
+ </li>
1447
+ <li>An Array, each element is recursively resolved
1448
+
1449
+ </li>
1450
+ </ul>
1451
+ <p>
1452
+ Raises an exception if a symbolic name does not have a corresponding value,
1453
+ unless silent is true.
1454
+ </p>
1455
+ </div>
1456
+ </div>
1457
+
1458
+ <div id="method-M000047" class="method-detail">
1459
+ <a name="M000047"></a>
1460
+
1461
+ <div class="method-heading">
1462
+ <a href="Session.src/M000047.html" target="Code" class="method-signature"
1463
+ onclick="popupCode('Session.src/M000047.html');return false;">
1464
+ <span class="method-name">resolve_url</span><span class="method-args">(input, silent=false)</span>
1465
+ </a>
1466
+ </div>
1467
+
1468
+ <div class="method-description">
1469
+ <p>
1470
+ If input is:
1471
+ </p>
1472
+ <ul>
1473
+ <li>A Symbol, return a URL by lookup in url_hash
1474
+
1475
+ </li>
1476
+ <li>A <a href="../String.html">String</a>, return the input
1477
+
1478
+ </li>
1479
+ <li>An Array, each element is recursively resolved
1480
+
1481
+ </li>
1482
+ </ul>
1483
+ <p>
1484
+ Raises an exception if a symbolic name does not have a corresponding value,
1485
+ unless silent is true.
1486
+ </p>
1487
+ </div>
1488
+ </div>
1489
+
1490
+ <div id="method-M000038" class="method-detail">
1491
+ <a name="M000038"></a>
1492
+
1493
+ <div class="method-heading">
1494
+ <a href="Session.src/M000038.html" target="Code" class="method-signature"
1495
+ onclick="popupCode('Session.src/M000038.html');return false;">
1496
+ <span class="method-name">respond</span><span class="method-args">(response)</span>
1497
+ </a>
1498
+ </div>
1499
+
1500
+ <div class="method-description">
1501
+ <p>
1502
+ Send a string to the spawned process
1503
+ </p>
1504
+ </div>
1505
+ </div>
1506
+
1507
+ <div id="method-M000063" class="method-detail">
1508
+ <a name="M000063"></a>
1509
+
1510
+ <div class="method-heading">
1511
+ <a href="Session.src/M000063.html" target="Code" class="method-signature"
1512
+ onclick="popupCode('Session.src/M000063.html');return false;">
1513
+ <span class="method-name">rm_rf</span><span class="method-args">(list, *args)</span>
1514
+ </a>
1515
+ </div>
1516
+
1517
+ <div class="method-description">
1518
+ <p>
1519
+ Remove files and directories named in list.
1520
+ </p>
1521
+ </div>
1522
+ </div>
1523
+
1524
+ <div id="method-M000028" class="method-detail">
1525
+ <a name="M000028"></a>
1526
+
1527
+ <div class="method-heading">
1528
+ <a href="Session.src/M000028.html" target="Code" class="method-signature"
1529
+ onclick="popupCode('Session.src/M000028.html');return false;">
1530
+ <span class="method-name">scaled_seconds</span><span class="method-args">(limit)</span>
1531
+ </a>
1532
+ </div>
1533
+
1534
+ <div class="method-description">
1535
+ <p>
1536
+ Given an unscaled time limit, scale it to make it appropriate for the
1537
+ current hardware.
1538
+ </p>
1539
+ </div>
1540
+ </div>
1541
+
1542
+ <div id="method-M000040" class="method-detail">
1543
+ <a name="M000040"></a>
1544
+
1545
+ <div class="method-heading">
1546
+ <span class="method-name">snd</span><span class="method-args">(response)</span>
1547
+ </div>
1548
+
1549
+ <div class="method-description">
1550
+ <p>
1551
+ Alias for <a href="Session.html#M000038">respond</a>
1552
+ </p>
1553
+ </div>
1554
+ </div>
1555
+
1556
+ <div id="method-M000034" class="method-detail">
1557
+ <a name="M000034"></a>
1558
+
1559
+ <div class="method-heading">
1560
+ <a href="Session.src/M000034.html" target="Code" class="method-signature"
1561
+ onclick="popupCode('Session.src/M000034.html');return false;">
1562
+ <span class="method-name">spawn</span><span class="method-args">(program='bash')</span>
1563
+ </a>
1564
+ </div>
1565
+
1566
+ <div class="method-description">
1567
+ <p>
1568
+ Spawn a new process, executing the indicated program. Once command has
1569
+ terminated, send, expect, and command will misbehave. You can, of course,
1570
+ spawn again. This has only been tested with bash!
1571
+ </p>
1572
+ </div>
1573
+ </div>
1574
+
1575
+ <div id="method-M000068" class="method-detail">
1576
+ <a name="M000068"></a>
1577
+
1578
+ <div class="method-heading">
1579
+ <a href="Session.src/M000068.html" target="Code" class="method-signature"
1580
+ onclick="popupCode('Session.src/M000068.html');return false;">
1581
+ <span class="method-name">tgz</span><span class="method-args">(dir, extension='.tgz', maxSeconds=60*5)</span>
1582
+ </a>
1583
+ </div>
1584
+
1585
+ <div class="method-description">
1586
+ <p>
1587
+ Compress the specified directory into an archive. The extension determines
1588
+ the compression type, and is used to derive the name of the resulting file.
1589
+ Instead of just specifying the extension, you can pass an entire sample
1590
+ filename to extension, and this method will extract the file name suffix
1591
+ and the compression type to use (throwing away the base name).
1592
+ </p>
1593
+ </div>
1594
+ </div>
1595
+
1596
+ <div id="method-M000026" class="method-detail">
1597
+ <a name="M000026"></a>
1598
+
1599
+ <div class="method-heading">
1600
+ <a href="Session.src/M000026.html" target="Code" class="method-signature"
1601
+ onclick="popupCode('Session.src/M000026.html');return false;">
1602
+ <span class="method-name">truncate_time_log</span><span class="method-args">()</span>
1603
+ </a>
1604
+ </div>
1605
+
1606
+ <div class="method-description">
1607
+ <p>
1608
+ Empties the time log (if any)
1609
+ </p>
1610
+ </div>
1611
+ </div>
1612
+
1613
+ <div id="method-M000067" class="method-detail">
1614
+ <a name="M000067"></a>
1615
+
1616
+ <div class="method-heading">
1617
+ <a href="Session.src/M000067.html" target="Code" class="method-signature"
1618
+ onclick="popupCode('Session.src/M000067.html');return false;">
1619
+ <span class="method-name">untgz</span><span class="method-args">(url, maxSeconds=60*5, silent=false)</span>
1620
+ </a>
1621
+ </div>
1622
+
1623
+ <div class="method-description">
1624
+ <p>
1625
+ Decompress the archive specifed by the given URL or symbolic name. Does not
1626
+ download the archive, just decompresses it. Can handle: .tgz, .tar.gz,
1627
+ .tar.bz2
1628
+ </p>
1629
+ </div>
1630
+ </div>
1631
+
1632
+ <div id="method-M000037" class="method-detail">
1633
+ <a name="M000037"></a>
1634
+
1635
+ <div class="method-heading">
1636
+ <a href="Session.src/M000037.html" target="Code" class="method-signature"
1637
+ onclick="popupCode('Session.src/M000037.html');return false;">
1638
+ <span class="method-name">wait</span><span class="method-args">(maxSeconds=1)</span>
1639
+ </a>
1640
+ </div>
1641
+
1642
+ <div class="method-description">
1643
+ <p>
1644
+ Wait for the spawned process to terminate on its own.
1645
+ </p>
1646
+ </div>
1647
+ </div>
1648
+
1649
+
1650
+ </div>
1651
+
1652
+
1653
+ </div>
1654
+
1655
+
1656
+ <div id="validator-badges">
1657
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1658
+ </div>
1659
+
1660
+ </body>
1661
+ </html>