Capcode 0.8.9 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/README.rdoc +13 -1
  2. data/doc/rdoc/classes/Capcode.html +410 -545
  3. data/doc/rdoc/classes/Capcode/Configuration.html +263 -0
  4. data/doc/rdoc/classes/Capcode/Helpers.html +154 -345
  5. data/doc/rdoc/classes/Capcode/Helpers/Authorization.html +6 -6
  6. data/doc/rdoc/created.rid +1 -1
  7. data/doc/rdoc/files/README_rdoc.html +42 -2
  8. data/doc/rdoc/files/lib/capcode/configuration_rb.html +1 -1
  9. data/doc/rdoc/files/lib/capcode/render/text_rb.html +1 -1
  10. data/doc/rdoc/files/lib/capcode_rb.html +14 -1
  11. data/doc/rdoc/fr_class_index.html +1 -1
  12. data/doc/rdoc/fr_file_index.html +0 -13
  13. data/doc/rdoc/fr_method_index.html +12 -14
  14. data/examples/render-image.rb +1 -1
  15. data/examples/render-text.rb +4 -1
  16. data/examples/rest.rb +1 -0
  17. data/examples/sample.rb +5 -3
  18. data/examples/upload.rb +1 -0
  19. data/lib/capcode.rb +45 -61
  20. data/lib/capcode/configuration.rb +69 -34
  21. data/lib/capcode/render/text.rb +1 -1
  22. data/lib/capcode/version.rb +1 -1
  23. metadata +31 -106
  24. data/doc/rdoc/classes/Capcode/Mab.html +0 -118
  25. data/doc/rdoc/files/lib/capcode/render/binary_rb.html +0 -101
  26. data/doc/rdoc/files/lib/capcode/render/email_rb.html +0 -108
  27. data/doc/rdoc/files/lib/capcode/render/erb_rb.html +0 -108
  28. data/doc/rdoc/files/lib/capcode/render/haml_rb.html +0 -108
  29. data/doc/rdoc/files/lib/capcode/render/json_rb.html +0 -108
  30. data/doc/rdoc/files/lib/capcode/render/markaby_rb.html +0 -108
  31. data/doc/rdoc/files/lib/capcode/render/mustache_rb.html +0 -108
  32. data/doc/rdoc/files/lib/capcode/render/none_rb.html +0 -101
  33. data/doc/rdoc/files/lib/capcode/render/redirect_rb.html +0 -101
  34. data/doc/rdoc/files/lib/capcode/render/sass_rb.html +0 -108
  35. data/doc/rdoc/files/lib/capcode/render/static_rb.html +0 -101
  36. data/doc/rdoc/files/lib/capcode/render/webdav_rb.html +0 -124
  37. data/doc/rdoc/files/lib/capcode/render/xml_rb.html +0 -101
  38. data/examples/auth-webdav.rb +0 -29
  39. data/examples/blog-ar.rb +0 -81
  40. data/examples/blog-ar.yml +0 -3
  41. data/examples/blog-couchdb-run.rb +0 -10
  42. data/examples/blog-couchdb.rb +0 -314
  43. data/examples/blog-couchdb.ru +0 -12
  44. data/examples/blog-couchdb.yml +0 -2
  45. data/examples/blog-dm.rb +0 -63
  46. data/examples/blog-dm.yml +0 -2
  47. data/examples/blog-mongodb-run.rb +0 -10
  48. data/examples/blog-mongodb.rb +0 -304
  49. data/examples/blog-mongodb.yml +0 -3
  50. data/examples/blog-sq.rb +0 -82
  51. data/examples/blog-sq.yml +0 -3
  52. data/examples/mail/mail_html.rhtml +0 -1
  53. data/examples/mail/mail_text.rhtml +0 -1
  54. data/examples/mail/ok.rhtml +0 -1
  55. data/examples/mail/rubyfr.png +0 -0
  56. data/examples/mustache/with_class.mustache +0 -8
  57. data/examples/mustache/without_class.mustache +0 -1
  58. data/examples/render-binary.rb +0 -46
  59. data/examples/render-email.rb +0 -68
  60. data/examples/render-erb.rb +0 -19
  61. data/examples/render-haml_sass.rb +0 -26
  62. data/examples/render-json.rb +0 -13
  63. data/examples/render-markaby.rb +0 -29
  64. data/examples/render-mustache.rb +0 -30
  65. data/examples/render-redirect.rb +0 -19
  66. data/examples/render-static.rb +0 -21
  67. data/examples/render-static.ru +0 -19
  68. data/examples/render-use.rb +0 -32
  69. data/examples/render-webdav.rb +0 -26
  70. data/examples/render-xml.rb +0 -24
  71. data/examples/rss.rb +0 -48
  72. data/examples/static/coderay.css +0 -131
  73. data/examples/static/index.html +0 -24
  74. data/examples/test/index.html +0 -1
  75. data/lib/capcode/base/ar.rb +0 -54
  76. data/lib/capcode/base/couchdb.rb +0 -23
  77. data/lib/capcode/base/dm.rb +0 -33
  78. data/lib/capcode/base/mongodb.rb +0 -27
  79. data/lib/capcode/base/sq.rb +0 -58
  80. data/lib/capcode/render/binary.rb +0 -8
  81. data/lib/capcode/render/email.rb +0 -73
  82. data/lib/capcode/render/erb.rb +0 -59
  83. data/lib/capcode/render/haml.rb +0 -60
  84. data/lib/capcode/render/json.rb +0 -14
  85. data/lib/capcode/render/markaby.rb +0 -38
  86. data/lib/capcode/render/mustache.rb +0 -37
  87. data/lib/capcode/render/none.rb +0 -7
  88. data/lib/capcode/render/redirect.rb +0 -7
  89. data/lib/capcode/render/sass.rb +0 -48
  90. data/lib/capcode/render/static.rb +0 -14
  91. data/lib/capcode/render/webdav.rb +0 -49
  92. data/lib/capcode/render/xml.rb +0 -119
@@ -1,39 +1,74 @@
1
1
  module Capcode
2
2
  class << self
3
- # Set global configuration options
4
- #
5
- # Options :
6
- # * <tt>:port</tt> = Listen port (default: 3000)
7
- # * <tt>:host</tt> = Listen host (default: 0.0.0.0)
8
- # * <tt>:server</tt> = Server type (webrick, mongrel or thin)
9
- # * <tt>:log</tt> = Output logfile (default: STDOUT)
10
- # * <tt>:session</tt> = Session parameters. See Rack::Session for more informations
11
- # * <tt>:pid</tt> = PID file (default: $0.pid)
12
- # * <tt>:daemonize</tt> = Daemonize application (default: false)
13
- # * <tt>:db_config</tt> = database configuration file (default: database.yml)
14
- # * <tt>:static</tt> = Static directory (default: the working directory)
15
- # * <tt>:root</tt> = Root directory (default: directory of the main.rb) -- This is also the working directory !
16
- # * <tt>:verbose</tt> = run in verbose mode
17
- # * <tt>:auth</tt> = HTTP Basic Authentication options
18
- #
19
- # It can exist specifics options depending on a renderer, a helper, ...
20
- #
21
- # Example :
22
- #
23
- # module Capcode
24
- # set :erb, "/path/to/erb/files"
25
- # ...
26
- # end
27
- def set( key, value )
28
- config[key] = value
29
- end
30
-
31
- def get( key ) #:nodoc:
32
- config[key] || nil
33
- end
34
-
35
- def config
36
- @configuration ||= {}
3
+ def set(key, value, opts = {}); Configuration.set(key, value, opts); end
4
+ end
5
+
6
+ class Configuration
7
+ class << self
8
+ def configuration( args = {} ) #:nodoc:
9
+ @configuration = config.merge({
10
+ :port => args[:port]||Capcode::Configuration.get(:port)||3000,
11
+ :host => args[:host]||Capcode::Configuration.get(:host)||"0.0.0.0",
12
+ :server => args[:server]||Capcode::Configuration.get(:server)||nil,
13
+ :log => args[:log]||Capcode::Configuration.get(:log)||$stdout,
14
+ :session => args[:session]||Capcode::Configuration.get(:session)||{},
15
+ :pid => args[:pid]||Capcode::Configuration.get(:pid)||"#{$0}.pid",
16
+ :daemonize => args[:daemonize]||Capcode::Configuration.get(:daemonize)||false,
17
+ :db_config => File.expand_path(args[:db_config]||Capcode::Configuration.get(:db_config)||"database.yml"),
18
+ :root => args[:root]||Capcode::Configuration.get(:root)||File.expand_path(File.dirname($0)),
19
+ :static => args[:static]||Capcode::Configuration.get(:static)||args[:root]||File.expand_path(File.dirname($0)),
20
+ :verbose => args[:verbose]||Capcode::Configuration.get(:verbose)||false,
21
+ :console => false
22
+ })
23
+ end
24
+ def config #:nodoc:
25
+ @configuration ||= {}
26
+ end
27
+
28
+ # Set global configuration options
29
+ #
30
+ # Options :
31
+ # * <tt>:port</tt> = Listen port (default: 3000)
32
+ # * <tt>:host</tt> = Listen host (default: 0.0.0.0)
33
+ # * <tt>:server</tt> = Server type (webrick, mongrel or thin)
34
+ # * <tt>:log</tt> = Output logfile (default: STDOUT)
35
+ # * <tt>:session</tt> = Session parameters. See Rack::Session for more informations
36
+ # * <tt>:pid</tt> = PID file (default: $0.pid)
37
+ # * <tt>:daemonize</tt> = Daemonize application (default: false)
38
+ # * <tt>:db_config</tt> = database configuration file (default: database.yml)
39
+ # * <tt>:static</tt> = Static directory (default: the working directory)
40
+ # * <tt>:root</tt> = Root directory (default: directory of the main.rb) -- This is also the working directory !
41
+ # * <tt>:verbose</tt> = run in verbose mode
42
+ # * <tt>:auth</tt> = HTTP Basic Authentication options
43
+ #
44
+ # It can exist specifics options depending on a renderer, a helper, ...
45
+ #
46
+ # Example :
47
+ #
48
+ # module Capcode
49
+ # set :erb, "/path/to/erb/files"
50
+ # ...
51
+ # end
52
+ def set( key, value, opts = {} )
53
+ if Hash === value
54
+ opts = value
55
+ value = nil
56
+ end
57
+ config[key] = value
58
+ options[key] = opts
59
+ end
60
+
61
+ def get( key = nil )
62
+ if key.nil?
63
+ config
64
+ else
65
+ config[key] || nil
66
+ end
67
+ end
68
+
69
+ def options
70
+ @options ||= {}
71
+ end
37
72
  end
38
73
  end
39
74
  end
@@ -1,6 +1,6 @@
1
1
  module Capcode
2
2
  module Helpers
3
- def render_text( f, opts ) #:nodoc:
3
+ def render_text( f, _ ) #:nodoc:
4
4
  f
5
5
  end
6
6
  end
@@ -1,3 +1,3 @@
1
1
  module Capcode
2
- CAPCOD_VERION="0.8.9"
2
+ CAPCOD_VERION="0.9.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Capcode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Gr\xC3\xA9goire Lejeune"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-21 00:00:00 +01:00
12
+ date: 2010-01-07 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -45,30 +45,17 @@ extra_rdoc_files:
45
45
  - lib/capcode.rb
46
46
  - lib/capcode/configuration.rb
47
47
  - lib/capcode/base/db.rb
48
- - lib/capcode/render/binary.rb
49
- - lib/capcode/render/email.rb
50
- - lib/capcode/render/erb.rb
51
- - lib/capcode/render/haml.rb
52
- - lib/capcode/render/json.rb
53
- - lib/capcode/render/markaby.rb
54
- - lib/capcode/render/mustache.rb
55
- - lib/capcode/render/none.rb
56
- - lib/capcode/render/redirect.rb
57
- - lib/capcode/render/sass.rb
58
- - lib/capcode/render/static.rb
59
48
  - lib/capcode/render/text.rb
60
- - lib/capcode/render/webdav.rb
61
- - lib/capcode/render/xml.rb
62
49
  files:
63
50
  - COPYING
64
51
  - README.rdoc
65
52
  - AUTHORS
66
53
  - setup.rb
67
54
  - doc/rdoc/classes/Capcode/Base.html
55
+ - doc/rdoc/classes/Capcode/Configuration.html
68
56
  - doc/rdoc/classes/Capcode/Helpers/Authorization.html
69
57
  - doc/rdoc/classes/Capcode/Helpers.html
70
58
  - doc/rdoc/classes/Capcode/HTTPError.html
71
- - doc/rdoc/classes/Capcode/Mab.html
72
59
  - doc/rdoc/classes/Capcode/Resource.html
73
60
  - doc/rdoc/classes/Capcode/Views.html
74
61
  - doc/rdoc/classes/Capcode.html
@@ -78,20 +65,7 @@ files:
78
65
  - doc/rdoc/files/lib/capcode/base/db_rb.html
79
66
  - doc/rdoc/files/lib/capcode/configuration_rb.html
80
67
  - doc/rdoc/files/lib/capcode/helpers/auth_rb.html
81
- - doc/rdoc/files/lib/capcode/render/binary_rb.html
82
- - doc/rdoc/files/lib/capcode/render/email_rb.html
83
- - doc/rdoc/files/lib/capcode/render/erb_rb.html
84
- - doc/rdoc/files/lib/capcode/render/haml_rb.html
85
- - doc/rdoc/files/lib/capcode/render/json_rb.html
86
- - doc/rdoc/files/lib/capcode/render/markaby_rb.html
87
- - doc/rdoc/files/lib/capcode/render/mustache_rb.html
88
- - doc/rdoc/files/lib/capcode/render/none_rb.html
89
- - doc/rdoc/files/lib/capcode/render/redirect_rb.html
90
- - doc/rdoc/files/lib/capcode/render/sass_rb.html
91
- - doc/rdoc/files/lib/capcode/render/static_rb.html
92
68
  - doc/rdoc/files/lib/capcode/render/text_rb.html
93
- - doc/rdoc/files/lib/capcode/render/webdav_rb.html
94
- - doc/rdoc/files/lib/capcode/render/xml_rb.html
95
69
  - doc/rdoc/files/lib/capcode_rb.html
96
70
  - doc/rdoc/files/README_rdoc.html
97
71
  - doc/rdoc/fr_class_index.html
@@ -99,47 +73,15 @@ files:
99
73
  - doc/rdoc/fr_method_index.html
100
74
  - doc/rdoc/index.html
101
75
  - doc/rdoc/rdoc-style.css
102
- - lib/capcode/base/ar.rb
103
- - lib/capcode/base/couchdb.rb
104
76
  - lib/capcode/base/db.rb
105
- - lib/capcode/base/dm.rb
106
- - lib/capcode/base/mongodb.rb
107
- - lib/capcode/base/sq.rb
108
77
  - lib/capcode/configuration.rb
109
78
  - lib/capcode/core_ext.rb
110
79
  - lib/capcode/helpers/auth.rb
111
- - lib/capcode/render/binary.rb
112
- - lib/capcode/render/email.rb
113
- - lib/capcode/render/erb.rb
114
- - lib/capcode/render/haml.rb
115
- - lib/capcode/render/json.rb
116
- - lib/capcode/render/markaby.rb
117
- - lib/capcode/render/mustache.rb
118
- - lib/capcode/render/none.rb
119
- - lib/capcode/render/redirect.rb
120
- - lib/capcode/render/sass.rb
121
- - lib/capcode/render/static.rb
122
80
  - lib/capcode/render/text.rb
123
- - lib/capcode/render/webdav.rb
124
- - lib/capcode/render/xml.rb
125
81
  - lib/capcode/version.rb
126
82
  - lib/capcode.rb
127
83
  - examples/auth-basic.rb
128
84
  - examples/auth-digest.rb
129
- - examples/auth-webdav.rb
130
- - examples/blog-ar.rb
131
- - examples/blog-ar.yml
132
- - examples/blog-couchdb-run.rb
133
- - examples/blog-couchdb.rb
134
- - examples/blog-couchdb.ru
135
- - examples/blog-couchdb.yml
136
- - examples/blog-dm.rb
137
- - examples/blog-dm.yml
138
- - examples/blog-mongodb-run.rb
139
- - examples/blog-mongodb.rb
140
- - examples/blog-mongodb.yml
141
- - examples/blog-sq.rb
142
- - examples/blog-sq.yml
143
85
  - examples/erb/cf.rhtml
144
86
  - examples/erb/cf_layout.rhtml
145
87
  - examples/erb/layout.rhtml
@@ -149,31 +91,11 @@ files:
149
91
  - examples/haml/layout.haml
150
92
  - examples/haml/m_hello.haml
151
93
  - examples/haml/style.sass
152
- - examples/mail/mail_html.rhtml
153
- - examples/mail/mail_text.rhtml
154
- - examples/mail/ok.rhtml
155
- - examples/mail/rubyfr.png
156
- - examples/mustache/with_class.mustache
157
- - examples/mustache/without_class.mustache
158
- - examples/render-binary.rb
159
- - examples/render-email.rb
160
- - examples/render-erb.rb
161
- - examples/render-haml_sass.rb
162
94
  - examples/render-image.rb
163
- - examples/render-json.rb
164
- - examples/render-markaby.rb
165
- - examples/render-mustache.rb
166
- - examples/render-redirect.rb
167
- - examples/render-static.rb
168
- - examples/render-static.ru
169
95
  - examples/render-text.rb
170
- - examples/render-use.rb
171
- - examples/render-webdav.rb
172
- - examples/render-xml.rb
173
96
  - examples/rest-run.rb
174
97
  - examples/rest.rb
175
98
  - examples/rest.ru
176
- - examples/rss.rb
177
99
  - examples/sample.rb
178
100
  - examples/session.rb
179
101
  - examples/soapbox/public/jquery.js
@@ -183,36 +105,39 @@ files:
183
105
  - examples/soapbox/soapbox-client.rb
184
106
  - examples/soapbox/soapbox.rb
185
107
  - examples/soapbox/views/index.rhtml
186
- - examples/static/coderay.css
187
- - examples/static/index.html
188
- - examples/test/index.html
189
108
  - examples/upload.rb
190
109
  has_rdoc: true
191
110
  homepage: http://algorithmique.net
192
111
  licenses: []
193
112
 
194
- post_install_message: |+
195
-
196
- If you want to use Markaby renderer, you must install Markaby.
197
- If you want to use HAML renderer, you must install haml.
198
- If you want to use SASS renderer, you must install sass.
199
- If you want to use Mustache renderer, you must install mustache.
200
- If you want to use JSON renderer, you must install json.
201
- If you want to use WebDAV renderer, you must install rack_dav.
202
- If you want to use Mail renderer, you must install mail.
203
-
204
- If you want to use ActiveRecord, you must install active_record.
205
- If you want to use DataMapper, you must install dm-core.
206
- If you want to use Sequel, you must install sequel.
207
- If you want to use CouchDB, you must install couch_foo.
208
- If you want to use MongoDB, you must install mongoid.
209
-
210
- For more information about Capcode, see
211
- http://capcode.rubyforge.org
212
-
213
- You can also read the Capcode book (fr) at
214
- http://algorithmique.net/capcode.html
215
-
113
+ post_install_message: "\n\
114
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\
115
+ !! !!\n\
116
+ !! THIS VERSION IS A MAJOR ENHANCEMENT !!\n\
117
+ !! ----------------------------------- !!\n\
118
+ !! !!\n\
119
+ !! YOU MUST UNINSTALL ALL PREVIOUS !!\n\
120
+ !! VERSIONS !!! !!\n\
121
+ !! !!\n\
122
+ !! gem uninstall Capode --version '< 0.9.0' !!\n\
123
+ !! !!\n\
124
+ !! IF YOU DON'T DO IT, THIS ONE WILL NOT !!\n\
125
+ !! WORK !!! !!\n\
126
+ !! !!\n\
127
+ !! Moreover : !!\n\
128
+ !! !!\n\
129
+ !! Renderers and database accessors have !!\n\
130
+ !! been extracted and are now in the !!\n\
131
+ !! plugins repository : !!\n\
132
+ !! !!\n\
133
+ !! http://github.com/glejeune/Capcode.more !!\n\
134
+ !! !!\n\
135
+ !! Each plugin is a gem that\xE2\x80\x99s can be !!\n\
136
+ !! installed separately. !!\n\
137
+ !! !!\n\
138
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\
139
+ For more information about Capcode, see \n http://capcode.rubyforge.org\n\n\
140
+ You can also read the Capcode book (fr) at\n http://algorithmique.net/capcode.html\n\n"
216
141
  rdoc_options:
217
142
  - --quiet
218
143
  - --title
@@ -1,118 +0,0 @@
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: Capcode::Mab</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">Capcode::Mab</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../../files/lib/capcode/render/markaby_rb.html">
59
- lib/capcode/render/markaby.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
- Markaby::Builder
69
- </td>
70
- </tr>
71
- </table>
72
- </div>
73
- <!-- banner header -->
74
-
75
- <div id="bodyContent">
76
-
77
-
78
-
79
- <div id="contextContent">
80
-
81
-
82
-
83
- </div>
84
-
85
-
86
- </div>
87
-
88
-
89
- <!-- if includes -->
90
- <div id="includes">
91
- <h3 class="section-bar">Included Modules</h3>
92
-
93
- <div id="includes-list">
94
- <span class="include-name"><a href="Views.html">Views</a></span>
95
- </div>
96
- </div>
97
-
98
- <div id="section">
99
-
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
- <!-- if method_list -->
108
-
109
-
110
- </div>
111
-
112
-
113
- <div id="validator-badges">
114
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
115
- </div>
116
-
117
- </body>
118
- </html>