narf 0.6.1 → 0.6.2

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.
data/ChangeLog CHANGED
@@ -1,4 +1,12 @@
1
1
  ------------------------------------------------------------------------
2
+ rev 65: patsplat | 2004-11-03 01:15:05 -0500 (Wed, 03 Nov 2004) | 1 line
3
+
4
+ Updated ChangeLog for 0.6.1
5
+ ------------------------------------------------------------------------
6
+ rev 64: patsplat | 2004-11-03 01:03:41 -0500 (Wed, 03 Nov 2004) | 1 line
7
+
8
+ testing code made it too far
9
+ ------------------------------------------------------------------------
2
10
  rev 62: patsplat | 2004-11-03 00:39:47 -0500 (Wed, 03 Nov 2004) | 1 line
3
11
 
4
12
  Updated ChangeLog for 0.6.0
@@ -77,7 +77,7 @@ module Web
77
77
  # executing ruby for every single image. Make these files
78
78
  # accessible online and tell NARF where to find them, and
79
79
  # things should run more quickly.
80
- #
80
+ #
81
81
  # == Credits
82
82
  # Web::Wiki must extend its thanks to these very, very useful projects:
83
83
  #
@@ -229,15 +229,18 @@ module Web
229
229
  rc = more_news
230
230
  rc = rc.unshift(rcpage) unless rcpage.comment.empty?
231
231
  rc.pop if rc.size > Page::max_revisions
232
+
233
+ yaml = rc.to_yaml
232
234
  File.open( store_dir + "/more_news.yaml", "w" ) { |f|
233
- YAML.dump( rc, f )
235
+ f.write(yaml)
234
236
  }
235
237
 
236
238
  comment = page.comment
237
239
  # clear out comment now that we've saved more news
238
240
  page.comment = ""
241
+ yaml = page.to_yaml
239
242
  File.open( store( page.name ), "w" ) { |f|
240
- YAML.dump( page, f )
243
+ f.write(yaml)
241
244
  }
242
245
  end
243
246
 
@@ -4,6 +4,7 @@ require 'web/wiki/page'
4
4
  require 'yaml'
5
5
  require 'ftools'
6
6
  require 'strscan'
7
+ require 'ipaddr'
7
8
 
8
9
  module Web
9
10
  # == Purpose
@@ -76,7 +77,7 @@ module Web
76
77
  # executing ruby for every single image. Make these files
77
78
  # accessible online and tell NARF where to find them, and
78
79
  # things should run more quickly.
79
- #
80
+ #
80
81
  # == Credits
81
82
  # Web::Wiki must extend its thanks to these very, very useful projects:
82
83
  #
@@ -107,9 +108,7 @@ module Web
107
108
  @@wiki ||= Wiki.new
108
109
  end
109
110
 
110
- # This is a deadly method, only use on a test wiki.
111
111
  def Wiki.wipe #:nodoc:
112
- wiki.wipe
113
112
  @@wiki = nil
114
113
  end
115
114
 
@@ -242,8 +241,9 @@ module Web
242
241
  }
243
242
  end
244
243
 
244
+
245
245
  def store_basedir
246
- if ( vandals.include?(ENV["REMOTE_ADDR"]) )
246
+ if ( vandal? )
247
247
  Wiki.pref( "tarpit_dir" )
248
248
  else
249
249
  Wiki.pref( "store_dir" )
@@ -268,17 +268,28 @@ module Web
268
268
  store_basedir
269
269
  end
270
270
  end
271
+
272
+ def vandal?
273
+ vandal = false
274
+ vandals.each do |pattern|
275
+ if pattern =~ ENV["REMOTE_ADDR"]
276
+ vandal = true
277
+ break
278
+ end
279
+ end
280
+ vandal
281
+ end
271
282
 
272
283
  def vandals
273
- if File.exists?( Wiki.pref("vandals") || "" )
274
- File.open( Wiki.pref("vandals") ) { |f|
275
- f.to_a
276
- }.collect{ |line|
277
- line.chomp
278
- }
279
- else
280
- [ ]
281
- end
284
+ @vandals ||= if File.exists?( Wiki.pref("vandals") || "" )
285
+ File.open( Wiki.pref("vandals") ) { |f|
286
+ f.to_a
287
+ }.collect{ |line|
288
+ /^#{line.chomp.strip.gsub(/"/, '')}/
289
+ }
290
+ else
291
+ [ ]
292
+ end
282
293
  end
283
294
 
284
295
  def exit_handler
@@ -3,7 +3,7 @@ require 'rubygems'
3
3
  spec = Gem::Specification.new do |s|
4
4
  #### Basic information.
5
5
  s.name = 'narf'
6
- s.version = "0.6.1"
6
+ s.version = "0.6.2"
7
7
  s.summary = <<-EOF
8
8
  NARF is a replacement for and derivative of the Ruby CGI library. It exists to trivialize web development .
9
9
  EOF
@@ -3,7 +3,7 @@ require 'rubygems'
3
3
  spec = Gem::Specification.new do |s|
4
4
  #### Basic information.
5
5
  s.name = 'narf'
6
- s.version = "0.5.1"
6
+ s.version = "0.6.1"
7
7
  s.summary = <<-EOF
8
8
  NARF is a replacement for and derivative of the Ruby CGI library. It exists to trivialize web development .
9
9
  EOF
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/ruby
2
+
3
+ NARF_SVN_SERVER = "http://svn.narf-lib.org/svn/narf"
4
+
5
+ require 'ftools'
6
+
7
+ if ARGV.size != 3
8
+ puts "Usage: ruby scripts/makedist.rb username password 1.2.3"
9
+ puts ""
10
+ puts " * username and password are your narf svn credentials"
11
+ puts " * 1.2.3 is the narf release number"
12
+ exit
13
+ end
14
+
15
+ username = ARGV[0]
16
+ password = ARGV[1]
17
+ version = ARGV[2]
18
+
19
+ versiontag = "VERSION_#{version.gsub(/\./,'_')}"
20
+
21
+ svn = "svn --username #{username} --password #{ password }"
22
+
23
+ system( "#{svn} log > ChangeLog")
24
+ system( "#{svn} commit -m \"Updated ChangeLog for #{version}\"" )
25
+ system( "#{svn} delete #{NARF_SVN_SERVER}/releases/#{versiontag} -m \"Deleted any existing release branch for #{version}\"" )
26
+ system( "#{svn} copy #{NARF_SVN_SERVER}/trunk/ #{NARF_SVN_SERVER}/releases/#{versiontag} -m \"Created release branch for #{version}\"" )
27
+
28
+ Dir.mkdir( "../dist" ) unless( File.exists? "../dist" )
29
+ system("rm -Rf ../dist/narf-#{version}")
30
+ Dir.chdir("../dist")
31
+
32
+ system("#{svn} export #{NARF_SVN_SERVER}/releases/#{versiontag} narf-#{version}" )
33
+
34
+ system("cd narf-#{version}; ruby build.rb rdoc");
35
+ system("tar cvzf narf-#{version}.tgz narf-#{version}")
36
+ system("ncftpput upload.sourceforge.net incoming narf-#{version}.tgz")
37
+
38
+ # old stuff
39
+ #system("cvs2cl.pl -T --hide-filenames")
40
+ #system("cvs commit -m \"Updated ChangeLog\"")
41
+ #system("cvs -d :ext:pinetops@cvs.narf-lib.sourceforge.net:/cvsroot/narf-lib rtag -FD now #{versiontag} cgi-install.rb")
42
+ #Dir.chdir("../dist")
43
+ #system("cvs -d :ext:pinetops@cvs.narf-lib.sourceforge.net:/cvsroot/narf-lib export -r #{versiontag} -d narf-#{version} cgi-install.rb ")
44
+ # end old stuff
45
+
46
+
47
+
48
+
49
+
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.1
3
3
  specification_version: 1
4
4
  name: narf
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.6.1
7
- date: 2004-11-03
6
+ version: 0.6.2
7
+ date: 2004-11-11
8
8
  summary: NARF is a replacement for and derivative of the Ruby CGI library. It exists to trivialize web development .
9
9
  require_paths:
10
10
  - lib
@@ -27,9 +27,7 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
27
27
  platform: ruby
28
28
  files:
29
29
  - bin
30
- - bug.rb
31
30
  - build.rb
32
- - build.rb~
33
31
  - ChangeLog
34
32
  - config.save
35
33
  - doc
@@ -37,12 +35,10 @@ files:
37
35
  - install.rb
38
36
  - InstalledFiles
39
37
  - lib
40
- - narf-0.5.1.gem
41
38
  - narf.gemspec
42
39
  - narf.gemspec~
43
40
  - pre-setup.rb
44
41
  - README
45
- - README~
46
42
  - sapi
47
43
  - scripts
48
44
  - test
@@ -624,6 +620,7 @@ files:
624
620
  - sapi/webrick/run_webrick.rb~
625
621
  - scripts/dump.rb
626
622
  - scripts/makedist.rb
623
+ - scripts/makedist.rb~
627
624
  - scripts/upload.html
628
625
  - scripts/uri
629
626
  - scripts/uri.rb
data/README~ DELETED
@@ -1,124 +0,0 @@
1
- === Purpose
2
-
3
- NARF is a replacement for, and derivative of, the Ruby CGI
4
- library. It exists one reason:
5
-
6
- * To trivialize web development
7
-
8
- We hope that these 3 lines of development will accomplish our task:
9
-
10
- * To provide a clean API for writing Web applications.
11
-
12
- * To make it very easy to write testable Web applications (using
13
- Web::Testing), and provide a template system (Web::Narflates).
14
-
15
- * To test the above goals by developing integrated, high quality,
16
- configurable versions of common web apps in a simple and easy
17
- to use manner. The heart of http://www.narf-lib.org, Web::Wiki
18
- is an easy to use wiki. Not the only one, but it does make
19
- us eat our own dogfood :-)
20
-
21
- NARF does all of this as a regular CGI application. It also runs in-process under fastcgi, mod_ruby, and webrick. View these files for details:
22
-
23
- * sapi/fastcgi/INSTALL.txt
24
- * sapi/mod_ruby/INSTALL.txt
25
- * sapi/webrick/INSTALL.txt
26
-
27
- === Installation
28
-
29
- Run the installer for NARF:
30
-
31
- ruby build.rb test (optional)
32
-
33
- ruby install.rb config
34
- ruby install.rb setup
35
- ruby install.rb install
36
-
37
- === Dependencies
38
-
39
- NARF requires the following packages on ruby 1.6. These packages are included in ruby 1.8:
40
-
41
- testunit (unit testing framework):
42
- http://testunit.talbott.ws/packages/testunit-0.1.6.tar.gz
43
-
44
- strscan (string scanner library):
45
- http://www.loveruby.net/archive/strscan/strscan-0.6.5.tar.gz
46
-
47
- You can use raa-install (http://www.ruby-lang.org/raa/list.rhtml?id=729) for
48
- this:
49
- raa-install -i testunit
50
- raa-install -i strscan
51
-
52
- === Hello World
53
-
54
- require 'web'
55
- Web << 'Hello World'
56
-
57
- === Testing an App
58
-
59
- If you haven't noticed, NARF has a cgi style api. It's also has a testing api. Given these files:
60
-
61
- script.rb
62
- test.rb
63
-
64
- where script.rb is:
65
-
66
- #!/usr/bin/ruby
67
- require 'web'
68
-
69
- Web << "param is #{Web["param"]}"
70
-
71
- and test.rb is:
72
-
73
- require 'web'
74
- require 'test/unit'
75
-
76
- class MyAppTest < Test::Unit::TestCase
77
- include Web::Testing
78
-
79
- def test_prints_content
80
- do_request "script.rb", "param" => "THIS!"
81
- assert_content "param is THIS!"
82
- end
83
- end
84
-
85
- Do this to run tests:
86
-
87
- ruby test.rb
88
-
89
- See Web::Testing for more examples.
90
-
91
- === Websites
92
-
93
- Home page:
94
- http://www.narf-lib.org
95
-
96
- Project info page, including downloads and CVS instructions:
97
- http://www.sourceforge.net/projects/narf-lib
98
-
99
- === Credits
100
-
101
- Narf was written by Tom Clarke and Patrick May, partly based on cgi.rb
102
- written by Wakou Aoyama. It makes significant use of ruby-htmltools,
103
- written by Ned Konz. Also, Keunwoo Lee patched Request.read_multipart
104
- to be cleaner.
105
-
106
- NARF contains code from the following projects, and we are in their debt:
107
-
108
- ruby-htmltools::
109
- This is a Ruby library for building trees representing HTML structure.
110
- http://bike-nomad.com/ruby
111
- sgml-parser::
112
- The html-parser package is a variant language implementation of the
113
- Python's SGML parser (sgmllib.py), HTML parser (htmllib.py) and
114
- Formatter (formatter.py).
115
- http://www.jin.gr.jp/%7Enahi/Ruby/html-parser/README.html
116
- webunit::
117
- WebUnit is Ruby API for testing html/cgi without browser, and is
118
- idealy suited for automated unit testing of web sites when combined
119
- with a Ruby unit test framework such as RubyUnit. It was designed
120
- and implemented by Masaki Suketa.
121
- http://www.xpenguin.biz/download/webunit/index-en.html
122
-
123
- Thanks also go to http://www.sourceforge.net for hosting the
124
- project's CVS and website
data/bug.rb DELETED
@@ -1,9 +0,0 @@
1
- continuation = []
2
- at_exit{
3
- puts 'at_exit'
4
- continuation[0].call unless continuation[0].nil?
5
- }
6
- callcc{ |c|
7
- continuation[0] = c
8
- }
9
- puts 'running'
data/build.rb~ DELETED
@@ -1,314 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # require 'stringio'
4
-
5
- # GC.disable
6
- require 'ftools'
7
- require 'find'
8
-
9
- def temp_dir
10
- (ENV["TEMP"] || "/tmp").gsub(/\\+/, "/")
11
- end
12
-
13
- def make_temp( path )
14
- File.join( temp_dir, path)
15
- end
16
-
17
-
18
-
19
- def File.rm_rf( path )
20
- if File.exists? path
21
- doomed = []
22
- Find.find( path ) { |filename|
23
- doomed.push filename
24
- }
25
- doomed.reverse.each{ |filename|
26
- if File.directory? filename
27
- Dir.rmdir( filename )
28
- else
29
- File.delete( filename )
30
- end
31
- }
32
- end
33
- end
34
-
35
- module Test
36
- module Unit
37
- class TestCase
38
- @@subclasses = []
39
-
40
- def TestCase.inherited(sub)
41
- @@subclasses.push sub
42
- end
43
-
44
- def TestCase.all_suite
45
- suite = Test::Unit::TestSuite.new
46
- @@subclasses.each{ |sub|
47
- suite << sub.suite # te
48
- }
49
- suite
50
- end
51
- end
52
- end
53
- end
54
-
55
- class Target
56
- @@targets = {}
57
- def Target.run(name="")
58
- if (keys.include? name)
59
- @@targets[name].run
60
- else
61
- help_text
62
- end
63
- end
64
-
65
- def Target.keys
66
- @@targets.keys.sort
67
- end
68
-
69
- def Target.first
70
- keys.first
71
- end
72
-
73
- def Target.justify
74
- justify = 0
75
-
76
- keys.each { |key|
77
- justify = key.length if (key.length > justify)
78
- }
79
-
80
- justify + 1
81
- end
82
-
83
- def Target.help_text
84
- text = "Usage: ruby build.rb [ #{ keys.join( " | ") } ]" + $/
85
- text += @@targets[keys.first].help_text( "Options: ", justify )
86
- keys.slice(1...keys.length).each{ |key|
87
- text += @@targets[key].help_text( " ", justify )
88
- }
89
- puts text
90
- end
91
-
92
- attr_reader :name, :description
93
- def initialize( name, description, &run )
94
- @name = name
95
- @description = description
96
- @run = run || Target.method(:help_text)
97
- @@targets[name] = self
98
- end
99
-
100
- def run
101
- $stderr.puts "Target: " + name + " | " + description
102
- @run.call
103
- end
104
-
105
- def help_text( prefix, justify )
106
- prefix + name.ljust(justify) + " -- " + description + $/
107
- end
108
- end
109
-
110
- Target.new( "upload_doc", "upload doc" ) {
111
- Target.run( "rdoc" )
112
- `scp -r doc/rdoc/* patsplat@ssh.narf-lib.org:~/narf-lib.org/doc`
113
- }
114
-
115
- Target.new( "rdoc", "build rdoc" ) {
116
- begin
117
- require 'rdoc/rdoc'
118
-
119
- rdoc = RDoc::RDoc.new
120
- rdoc.document( [
121
- # set the output directory
122
- "-o",
123
- "doc/rdoc/",
124
-
125
- # set the main page
126
- "--main",
127
- "README",
128
-
129
- # list the files to be excluded
130
- "--exclude",
131
- /htmltools|htmlparser|unit|writableio|tagparser|strscanparser|web\/action|assertinclude|buffer|formreader|forms|runner|simpledispatcher|traceoutput|linker|page|lib\/web\/sapi/,
132
-
133
- # list the files / dirs to be parsed for documentation
134
- "README",
135
- "examples/examples.rdoc",
136
- "lib/web.rb",
137
- "lib/web",
138
- "doc/apache_cgi.txt",
139
- "doc/fastcgi.txt",
140
- "doc/mod_ruby.txt",
141
- "doc/webrick.txt"
142
-
143
- ] )
144
- rescue LoadError => error
145
- puts "Building the rdocs will require 'rdoc/rdoc'"
146
- puts "visit http://rdoc.sourceforge.net/ to obtain this library"
147
- end
148
- }
149
-
150
- Target.new( "test", "run narf unit tests" ) {
151
- require 'test/unit'
152
- require 'test/unit/ui/console/testrunner'
153
-
154
- $:.replace(['lib'].concat($:))
155
-
156
- require 'web'
157
-
158
- Dir["test/*.rb"].each { |test|
159
- require test
160
- }
161
-
162
- # buffered test runner is a custom made test runner
163
- # that lives in the test dir
164
- Test::Unit::UI::Console::TestRunner.new(Test::Unit::TestCase.all_suite
165
- ).start
166
- }
167
-
168
- Target.new( "testwiki", "test narf wiki" ) {
169
- require 'test/unit'
170
- require 'test/unit/ui/console/testrunner'
171
-
172
- $:.replace(['./lib/'].concat($:))
173
-
174
- require 'web'
175
- require 'web/wiki'
176
-
177
- def setup_wiki
178
- File.rm_rf( Web::Wiki::store_dir )
179
- end
180
-
181
- alias :teardown_wiki :setup_wiki
182
-
183
- Web::Wiki::set_pref(:store_dir => make_temp("test.pages/"),
184
- :store_url => "../test.pages/",
185
- :tarpit_dir => make_temp("tarpit/"),
186
- :vandals => "vandals.test.txt",
187
- :baseurl => "wiki.rb" )
188
- Web.set_docroot( File.join(Dir.pwd,"examples") )
189
-
190
- # a bunch of the illustration_page functions don't work on windows
191
- #require 'test/wiki/test.illustration_page.rb'
192
- Dir["test/wiki/*.rb"].each { |test|
193
- require test
194
- }
195
- #require 'test/wiki/test.wiki.rb'
196
-
197
- # buffered test runner is a custom made test runner
198
- # that lives in the test dir
199
- Test::Unit::UI::Console::TestRunner.new(Test::Unit::TestCase.all_suite).start
200
-
201
- }
202
-
203
- Target.new( "testwebunit", "test web unit" ) {
204
- $: << "lib"
205
- ENV['URLBASE'] = ARGV[1] || "http://www.hexane.org/webtest/"
206
-
207
- require 'web/unit/runtest'
208
-
209
- Web::Unit.runtest(Dir["test/webunit/test*.rb"])
210
- }
211
-
212
- Target.new( "testexamples", "test narf examples" ) {
213
- require 'test/unit'
214
- require 'test/unit/ui/console/testrunner'
215
-
216
- $:.replace(['./lib/'].concat($:))
217
-
218
- require 'web'
219
- require 'web/wiki'
220
-
221
- Web.set_docroot File.join(Dir.pwd,"examples")
222
-
223
- Dir["examples/test/*.rb"].each { |test|
224
- require test
225
- }
226
-
227
- # buffered test runner is a custom made test runner
228
- # that lives in the test dir
229
- Test::Unit::UI::Console::TestRunner.new(Test::Unit::TestCase.all_suite ).start
230
- }
231
-
232
-
233
- def install_dir
234
- $:.find { |dir|
235
- /site_ruby\/\d.\d\z/ =~ dir
236
- } + "/"
237
- end
238
-
239
- FILES = [ "web",
240
- "web.rb",
241
- "web/action.rb",
242
- "web/assertinclude.rb",
243
- "web/buffer.rb",
244
- "web/request.rb",
245
- "web/session.rb",
246
- "web/template.rb",
247
- "web/writableio.rb",
248
- "web/rhp.rb" ]
249
-
250
- OLD_FILES = [ "web",
251
- "narf.rb",
252
- "narf/app.rb",
253
- "narf/assertinclude.rb",
254
- "narf/buffer.rb",
255
- "narf/request.rb",
256
- "narf/session.rb",
257
- "narf/template.rb",
258
- "narf/writableio.rb" ]
259
-
260
- Target.new( "uninstall", "delete narf files from site_ruby" ){
261
-
262
- file_list = (FILES.reverse | OLD_FILES.reverse ).collect{|file|
263
- install_dir + file
264
- }
265
-
266
- file_list.push( "/usr/bin/rhp")
267
-
268
- file_list.each{ |file|
269
- if File.exists? file
270
- if File.stat(file).directory?
271
- Dir.delete file
272
- else
273
- File.delete file
274
- end
275
- end
276
- }
277
- }
278
-
279
- Target.new( "compile_narf_runner", "" ) {
280
- Dir.mkdir "bin" unless File.exists? "bin"
281
- narf_c = File.open( 'sapi/apache_cgi/src/narf.c', 'r' ) { |f|
282
- f.read
283
- }
284
- require 'rbconfig'
285
- narf_c.gsub!( /(ruby)/, Config::CONFIG["bindir"] + "/ruby" )
286
- File.open( 'sapi/apache_cgi/src/narf-path_adjusted.c', 'wb') { |f|
287
- f.write(narf_c)
288
- }
289
- `gcc sapi/apache_cgi/src/narf-path_adjusted.c -o sapi/apache_cgi/bin/narf`
290
- }
291
-
292
- Target.new( "install", "install narf in site ruby" ){
293
-
294
- Target.run( "uninstall" )
295
- Target.run( "compile_rhp" )
296
-
297
- FILES.each{ |file|
298
- from, to = "lib/" + file, install_dir + file
299
-
300
- if (File.stat(from).directory?)
301
- unless File.exists? to
302
- puts "Creating #{to}"
303
- Dir.mkdir to
304
- end
305
- else
306
- puts "#{ from } => #{ to }...\n"
307
- File.copy( from, to )
308
- end
309
- }
310
-
311
- File.copy( "rhp", "/usr/bin/rhp" )
312
- }
313
-
314
- Target.run( ARGV[0] ) if ($0 == __FILE__)
Binary file