webby 0.8.4 → 0.9.0

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 (165) hide show
  1. data/History.txt +19 -0
  2. data/Manifest.txt +104 -91
  3. data/README.txt +27 -45
  4. data/Rakefile +4 -5
  5. data/bin/webby +2 -1
  6. data/bin/webby-gen +8 -0
  7. data/{data/Rakefile → examples/blog/Sitefile} +0 -2
  8. data/examples/{webby → blog}/tasks/blog.rake +5 -4
  9. data/{data → examples/blog}/templates/atom_feed.erb +10 -11
  10. data/{data → examples/blog}/templates/blog/month.erb +1 -1
  11. data/{data → examples/blog}/templates/blog/post.erb +1 -0
  12. data/{data → examples/blog}/templates/blog/year.erb +1 -1
  13. data/examples/presentation/{Rakefile → Sitefile} +0 -4
  14. data/examples/presentation/content/{_sample_code.txt → presentation/_sample_code.txt} +0 -0
  15. data/examples/presentation/content/{index.txt → presentation/index.txt} +0 -0
  16. data/{data/content → examples/presentation/content/presentation}/s5/blank.gif +0 -0
  17. data/{data/content → examples/presentation/content/presentation}/s5/bodybg.gif +0 -0
  18. data/{data/content → examples/presentation/content/presentation}/s5/framing.css +0 -0
  19. data/{data/content → examples/presentation/content/presentation}/s5/iepngfix.htc +0 -0
  20. data/{data/content → examples/presentation/content/presentation}/s5/opera.css +0 -0
  21. data/{data/content → examples/presentation/content/presentation}/s5/outline.css +0 -0
  22. data/{data/content → examples/presentation/content/presentation}/s5/pretty.css +0 -0
  23. data/{data/content → examples/presentation/content/presentation}/s5/print.css +0 -0
  24. data/{data/content → examples/presentation/content/presentation}/s5/s5-core.css +0 -0
  25. data/{data/content → examples/presentation/content/presentation}/s5/slides.css +0 -0
  26. data/{data/content → examples/presentation/content/presentation}/s5/slides.js +0 -0
  27. data/examples/presentation/layouts/{presentation.rhtml → presentation.txt} +3 -3
  28. data/examples/presentation/templates/{_partial.erb → _code_partial.erb} +0 -0
  29. data/examples/tumblog/Sitefile +9 -0
  30. data/examples/tumblog/content/css/tumblog.css +308 -0
  31. data/examples/tumblog/content/images/tumblog/permalink.gif +0 -0
  32. data/examples/tumblog/content/images/tumblog/rss.gif +0 -0
  33. data/examples/tumblog/content/tumblog/200806/the-noble-chicken/index.txt +12 -0
  34. data/examples/tumblog/content/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke/index.txt +12 -0
  35. data/examples/tumblog/content/tumblog/200807/mad-city-chickens/index.txt +10 -0
  36. data/examples/tumblog/content/tumblog/200807/the-wisdom-of-the-dutch/index.txt +11 -0
  37. data/examples/tumblog/content/tumblog/200807/up-a-tree/index.txt +13 -0
  38. data/examples/tumblog/content/tumblog/index.txt +37 -0
  39. data/examples/tumblog/content/tumblog/rss.txt +37 -0
  40. data/examples/tumblog/layouts/tumblog/default.txt +44 -0
  41. data/examples/tumblog/layouts/tumblog/post.txt +15 -0
  42. data/examples/tumblog/lib/tumblog_helper.rb +32 -0
  43. data/examples/tumblog/tasks/tumblog.rake +30 -0
  44. data/examples/tumblog/templates/atom_feed.erb +40 -0
  45. data/examples/tumblog/templates/tumblog/conversation.erb +12 -0
  46. data/examples/tumblog/templates/tumblog/link.erb +10 -0
  47. data/examples/tumblog/templates/tumblog/photo.erb +13 -0
  48. data/examples/tumblog/templates/tumblog/post.erb +12 -0
  49. data/examples/tumblog/templates/tumblog/quote.erb +11 -0
  50. data/examples/webby/{Rakefile → Sitefile} +2 -2
  51. data/examples/webby/content/communicate/index.txt +28 -0
  52. data/examples/webby/content/css/background.gif +0 -0
  53. data/examples/webby/content/css/site.css +52 -20
  54. data/examples/webby/content/index.txt +7 -8
  55. data/examples/webby/content/learn/index.txt +28 -0
  56. data/examples/webby/content/reference/index.txt +3 -1
  57. data/examples/webby/content/release-notes/rel-0-9-0/index.txt +73 -0
  58. data/examples/webby/content/sitemap.txt +31 -0
  59. data/examples/webby/content/tips_and_tricks/index.txt +1 -1
  60. data/examples/webby/content/tutorial/index.txt +17 -17
  61. data/examples/webby/content/{manual → user-manual}/index.txt +53 -50
  62. data/examples/webby/layouts/{default.rhtml → default.txt} +8 -15
  63. data/examples/webby/templates/page.erb +1 -1
  64. data/examples/website/Sitefile +7 -0
  65. data/{data → examples/website}/content/css/blueprint/License.txt +0 -0
  66. data/{data → examples/website}/content/css/blueprint/Readme.txt +0 -0
  67. data/{data → examples/website}/content/css/blueprint/compressed/print.css +0 -0
  68. data/{data → examples/website}/content/css/blueprint/compressed/screen.css +0 -0
  69. data/{data → examples/website}/content/css/blueprint/lib/forms.css +0 -0
  70. data/{data → examples/website}/content/css/blueprint/lib/grid.css +0 -0
  71. data/{data → examples/website}/content/css/blueprint/lib/grid.png +0 -0
  72. data/{data → examples/website}/content/css/blueprint/lib/ie.css +0 -0
  73. data/{data → examples/website}/content/css/blueprint/lib/reset.css +0 -0
  74. data/{data → examples/website}/content/css/blueprint/lib/typography.css +0 -0
  75. data/{data → examples/website}/content/css/blueprint/plugins/buttons/Readme +0 -0
  76. data/{data → examples/website}/content/css/blueprint/plugins/buttons/buttons.css +0 -0
  77. data/{data → examples/website}/content/css/blueprint/plugins/buttons/icons/cross.png +0 -0
  78. data/{data → examples/website}/content/css/blueprint/plugins/buttons/icons/key.png +0 -0
  79. data/{data → examples/website}/content/css/blueprint/plugins/buttons/icons/tick.png +0 -0
  80. data/{data → examples/website}/content/css/blueprint/plugins/css-classes/Readme +0 -0
  81. data/{data → examples/website}/content/css/blueprint/plugins/css-classes/css-classes.css +0 -0
  82. data/{data → examples/website}/content/css/blueprint/plugins/fancy-type/Readme +0 -0
  83. data/{data → examples/website}/content/css/blueprint/plugins/fancy-type/fancy-type-compressed.css +0 -0
  84. data/{data → examples/website}/content/css/blueprint/plugins/fancy-type/fancy-type.css +0 -0
  85. data/{data → examples/website}/content/css/blueprint/print.css +0 -0
  86. data/{data → examples/website}/content/css/blueprint/screen.css +0 -0
  87. data/{data → examples/website}/content/css/coderay.css +0 -0
  88. data/{data → examples/website}/content/css/site.css +0 -0
  89. data/{data → examples/website}/content/index.txt +2 -1
  90. data/{data/layouts/default.rhtml → examples/website/layouts/default.txt} +1 -1
  91. data/{data → examples/website}/lib/breadcrumbs.rb +0 -0
  92. data/{data → examples/website}/templates/_partial.erb +0 -0
  93. data/{data → examples/website}/templates/page.erb +0 -0
  94. data/{data → examples/website}/templates/presentation.erb +0 -0
  95. data/lib/webby/apps/generator.rb +283 -0
  96. data/lib/webby/apps/main.rb +221 -0
  97. data/lib/webby/apps.rb +12 -0
  98. data/lib/webby/builder.rb +8 -10
  99. data/lib/webby/core_ext/enumerable.rb +11 -0
  100. data/lib/webby/{utils.rb → core_ext/hash.rb} +2 -26
  101. data/lib/webby/core_ext/kernel.rb +21 -0
  102. data/lib/webby/core_ext/string.rb +163 -0
  103. data/lib/webby/core_ext/time.rb +9 -0
  104. data/lib/webby/filters/haml.rb +13 -5
  105. data/lib/webby/filters/markdown.rb +12 -4
  106. data/lib/webby/filters/outline.rb +3 -2
  107. data/lib/webby/filters/sass.rb +12 -4
  108. data/lib/webby/filters/textile.rb +12 -4
  109. data/lib/webby/filters/tidy.rb +10 -8
  110. data/lib/webby/filters.rb +2 -0
  111. data/lib/webby/helpers/graphviz_helper.rb +1 -2
  112. data/lib/webby/helpers/tex_img_helper.rb +6 -10
  113. data/lib/webby/renderer.rb +5 -3
  114. data/lib/webby/resources/layout.rb +1 -1
  115. data/lib/webby/resources/page.rb +1 -1
  116. data/lib/webby/resources/resource.rb +13 -3
  117. data/lib/webby/resources.rb +16 -0
  118. data/{data → lib/webby}/tasks/build.rake +0 -0
  119. data/{examples/presentation → lib/webby}/tasks/create.rake +1 -1
  120. data/{data → lib/webby}/tasks/deploy.rake +0 -0
  121. data/{examples → lib}/webby/tasks/growl.rake +4 -1
  122. data/{data → lib/webby}/tasks/heel.rake +0 -0
  123. data/{data → lib/webby}/tasks/validate.rake +0 -0
  124. data/lib/webby.rb +11 -5
  125. data/spec/core_ext/hash_spec.rb +47 -0
  126. data/spec/core_ext/string_spec.rb +110 -0
  127. data/spec/core_ext/time_spec.rb +19 -0
  128. data/spec/webby/apps/generator_spec.rb +111 -0
  129. data/spec/webby/apps/main_spec.rb +75 -0
  130. data/spec/webby/helpers/capture_helper_spec.rb +1 -1
  131. data/spec/webby/resources_spec.rb +17 -0
  132. data/tasks/gem.rake +10 -2
  133. data/tasks/git.rake +41 -0
  134. data/tasks/rubyforge.rake +2 -2
  135. data/tasks/website.rake +38 -38
  136. metadata +125 -98
  137. data/data/tasks/blog.rake +0 -71
  138. data/data/tasks/create.rake +0 -22
  139. data/data/tasks/growl.rake +0 -12
  140. data/data/tasks/setup.rb +0 -17
  141. data/examples/presentation/content/s5/blank.gif +0 -0
  142. data/examples/presentation/content/s5/bodybg.gif +0 -0
  143. data/examples/presentation/content/s5/framing.css +0 -23
  144. data/examples/presentation/content/s5/iepngfix.htc +0 -42
  145. data/examples/presentation/content/s5/opera.css +0 -7
  146. data/examples/presentation/content/s5/outline.css +0 -15
  147. data/examples/presentation/content/s5/pretty.css +0 -86
  148. data/examples/presentation/content/s5/print.css +0 -1
  149. data/examples/presentation/content/s5/s5-core.css +0 -9
  150. data/examples/presentation/content/s5/slides.css +0 -3
  151. data/examples/presentation/content/s5/slides.js +0 -553
  152. data/examples/presentation/tasks/blog.rake +0 -71
  153. data/examples/presentation/tasks/build.rake +0 -27
  154. data/examples/presentation/tasks/deploy.rake +0 -22
  155. data/examples/presentation/tasks/growl.rake +0 -12
  156. data/examples/presentation/tasks/heel.rake +0 -28
  157. data/examples/presentation/tasks/setup.rb +0 -17
  158. data/examples/presentation/tasks/validate.rake +0 -19
  159. data/examples/webby/tasks/build.rake +0 -27
  160. data/examples/webby/tasks/create.rake +0 -22
  161. data/examples/webby/tasks/deploy.rake +0 -22
  162. data/examples/webby/tasks/heel.rake +0 -28
  163. data/examples/webby/tasks/setup.rb +0 -17
  164. data/examples/webby/tasks/validate.rake +0 -19
  165. data/lib/webby/main.rb +0 -227
@@ -1,28 +0,0 @@
1
-
2
- namespace :heel do
3
-
4
- desc 'Start the heel server to view website (not for Windows)'
5
- task :start do
6
- sh "heel --root #{SITE.output_dir} --port #{SITE.heel_port} --daemonize"
7
- end
8
-
9
- desc 'Stop the heel server'
10
- task :stop do
11
- sh "heel --kill"
12
- end
13
-
14
- task :autorun do
15
- heel_exe = File.join(Gem.bindir, 'heel')
16
- @heel_spawner = Spawner.new(Spawner.ruby, heel_exe, '--root', SITE.output_dir, '--port', SITE.heel_port.to_s, :pause => 86_400)
17
- @heel_spawner.start
18
- end
19
-
20
- task :autobuild => :autorun do
21
- at_exit {@heel_spawner.stop if defined? @heel_spawner and not @heel_spawner.nil?}
22
- end
23
-
24
- end
25
-
26
- task :autobuild => 'heel:autobuild'
27
-
28
- # EOF
@@ -1,17 +0,0 @@
1
-
2
- begin
3
- require 'webby'
4
- rescue LoadError
5
- require 'rubygems'
6
- require 'webby'
7
- end
8
-
9
- SITE = Webby.site
10
-
11
- # Load the other rake files in the tasks folder
12
- Dir.glob(::File.join(%w[tasks *.rake])).sort.each {|fn| import fn}
13
-
14
- # Load all the ruby files in the lib folder
15
- Dir.glob(::File.join(%w[lib ** *.rb])).sort.each {|fn| require fn}
16
-
17
- # EOF
@@ -1,19 +0,0 @@
1
-
2
- namespace :validate do
3
-
4
- desc 'Validate hyperlinks (exclude exteranl sites)'
5
- task :internal => :build do
6
- Webby::LinkValidator.validate(:external => false)
7
- end
8
-
9
- desc 'Validate hyperlinks (include external sites)'
10
- task :external => :build do
11
- Webby::LinkValidator.validate(:external => true)
12
- end
13
-
14
- end # validate
15
-
16
- desc 'Alias to validate:internal'
17
- task :validate => 'validate:internal'
18
-
19
- # EOF
@@ -1,27 +0,0 @@
1
-
2
- task :configure_basepath do
3
- Webby.site.base = ENV['BASE'] if ENV.has_key?('BASE')
4
- end
5
-
6
- desc "Build the website"
7
- task :build => :configure_basepath do |t|
8
- Webby::Builder.run
9
- end
10
-
11
- desc "Rebuild the website"
12
- task :rebuild => :configure_basepath do |t|
13
- Webby::Builder.run :rebuild => true
14
- end
15
-
16
- desc "Continuously build the website"
17
- task :autobuild => :configure_basepath do |t|
18
- Webby::AutoBuilder.run
19
- end
20
-
21
- desc "Delete the website"
22
- task :clobber do |t|
23
- rm_rf Webby.site.output_dir
24
- mkdir Webby.site.output_dir
25
- end
26
-
27
- # EOF
@@ -1,22 +0,0 @@
1
-
2
- namespace :create do
3
-
4
- FileList["#{Webby.site.template_dir}/*"].each do |template|
5
- next unless test(?f, template)
6
- name = template.pathmap '%n'
7
-
8
- # if the file is a partial template
9
- name = $1 if name =~ %r/^_(.*)/
10
-
11
- desc "Create a new #{name}"
12
- task name do |t|
13
- page, title, dir = Webby::Builder.new_page_info(t)
14
- page = Webby::Builder.create(page, :from => template,
15
- :locals => {:title => title, :directory => dir})
16
- exec(::Webby.editor, page) unless ::Webby.editor.nil?
17
- end
18
- end # each
19
-
20
- end # namespace :create
21
-
22
- # EOF
@@ -1,22 +0,0 @@
1
-
2
- require 'rake/contrib/sshpublisher'
3
-
4
- namespace :deploy do
5
-
6
- desc 'Deploy to the server using rsync'
7
- task :rsync do
8
- cmd = "rsync #{SITE.rsync_args.join(' ')} "
9
- cmd << "#{SITE.output_dir}/ #{SITE.user}@#{SITE.host}:#{SITE.remote_dir}"
10
- sh cmd
11
- end
12
-
13
- desc 'Deploy to the server using ssh'
14
- task :ssh do
15
- Rake::SshDirPublisher.new(
16
- "#{SITE.user}@#{SITE.host}", SITE.remote_dir, SITE.output_dir
17
- ).upload
18
- end
19
-
20
- end # deploy
21
-
22
- # EOF
@@ -1,28 +0,0 @@
1
-
2
- namespace :heel do
3
-
4
- desc 'Start the heel server to view website (not for Windows)'
5
- task :start do
6
- sh "heel --root #{SITE.output_dir} --port #{SITE.heel_port} --daemonize"
7
- end
8
-
9
- desc 'Stop the heel server'
10
- task :stop do
11
- sh "heel --kill"
12
- end
13
-
14
- task :autorun do
15
- heel_exe = File.join(Gem.bindir, 'heel')
16
- @heel_spawner = Spawner.new(Spawner.ruby, heel_exe, '--root', SITE.output_dir, '--port', SITE.heel_port.to_s, :pause => 86_400)
17
- @heel_spawner.start
18
- end
19
-
20
- task :autobuild => :autorun do
21
- at_exit {@heel_spawner.stop if defined? @heel_spawner and not @heel_spawner.nil?}
22
- end
23
-
24
- end
25
-
26
- task :autobuild => 'heel:autobuild'
27
-
28
- # EOF
@@ -1,17 +0,0 @@
1
-
2
- begin
3
- require 'webby'
4
- rescue LoadError
5
- require 'rubygems'
6
- require 'webby'
7
- end
8
-
9
- SITE = Webby.site
10
-
11
- # Load the other rake files in the tasks folder
12
- Dir.glob(::File.join(%w[tasks *.rake])).sort.each {|fn| import fn}
13
-
14
- # Load all the ruby files in the lib folder
15
- Dir.glob(::File.join(%w[lib ** *.rb])).sort.each {|fn| require fn}
16
-
17
- # EOF
@@ -1,19 +0,0 @@
1
-
2
- namespace :validate do
3
-
4
- desc 'Validate hyperlinks (exclude exteranl sites)'
5
- task :internal => :build do
6
- Webby::LinkValidator.validate(:external => false)
7
- end
8
-
9
- desc 'Validate hyperlinks (include external sites)'
10
- task :external => :build do
11
- Webby::LinkValidator.validate(:external => true)
12
- end
13
-
14
- end # validate
15
-
16
- desc 'Alias to validate:internal'
17
- task :validate => 'validate:internal'
18
-
19
- # EOF
data/lib/webby/main.rb DELETED
@@ -1,227 +0,0 @@
1
- require 'fileutils'
2
- require 'find'
3
- require 'optparse'
4
-
5
- module Webby
6
-
7
- # The Webby::Main class contains all the functionality needed by the +webby+
8
- # command line application.
9
- #
10
- class Main
11
-
12
- WINDOWS = %r/djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM # :nodoc:
13
-
14
- # Directory where the Webby website will be created
15
- attr_accessor :site
16
-
17
- # Directory where the prototype Webby website can be found
18
- attr_accessor :data
19
-
20
- # Flag used to update an existing website
21
- attr_accessor :update
22
-
23
- # call-seq:
24
- # Main.run( args ) => nil
25
- #
26
- # Create a new instance of Main, and run the +webby+ application given the
27
- # command line _args_.
28
- #
29
- def self.run( args )
30
- m = self.new
31
- m.parse args
32
-
33
- if m.update then m.update_site
34
- else m.create_site end
35
- end
36
-
37
- # call-seq:
38
- # Main.new
39
- #
40
- # Create a new Main webby object for building websites.
41
- #
42
- def initialize
43
- @log = Logging::Logger[self]
44
- end
45
-
46
- # call-seq:
47
- # parse( args ) => nil
48
- #
49
- # Parse the command line arguments and store the values for later use by
50
- # the create_site and update_site methods.
51
- #
52
- def parse( args )
53
- self.data = File.join(::Webby::PATH, 'data')
54
- self.update = false
55
-
56
- opts = OptionParser.new
57
- opts.banner << ' site'
58
-
59
- opts.separator ''
60
- opts.on('-u', '--update',
61
- 'update the rake tasks for the site') {self.update = true}
62
-
63
- opts.separator ''
64
- opts.separator 'common options:'
65
-
66
- opts.on_tail( '-h', '--help', 'show this message' ) {puts opts; exit}
67
- opts.on_tail( '--version', 'show version' ) do
68
- puts "Webby #{::Webby::VERSION}"
69
- exit
70
- end
71
-
72
- # parse the command line arguments
73
- opts.parse! args
74
- self.site = args.shift
75
-
76
- if site.nil?
77
- puts opts
78
- ::Kernel.abort
79
- end
80
- nil
81
- end
82
-
83
- # call-seq:
84
- # create_site => nil
85
- #
86
- # Create a new website.
87
- #
88
- def create_site
89
- # see if the site already exists
90
- abort "'#{site}' already exists" if test ?e, site
91
-
92
- # copy over files from the data directory
93
- files = site_files
94
-
95
- files.keys.sort.each do |dir|
96
- mkdir dir
97
- files[dir].sort.each {|file| cp file}
98
- end
99
- nil
100
- end
101
-
102
- # call-seq:
103
- # update_site => nil
104
- #
105
- # Update the rake tasks for an existing website.
106
- #
107
- def update_site
108
- # ensure the site already exists
109
- abort "'#{site}' does not exist" unless test ?d, site
110
-
111
- # copy over files from the data/tasks directory
112
- files = site_files
113
-
114
- mkdir 'tasks'
115
- files['tasks'].sort.each {|file| cp file}
116
-
117
- nil
118
- end
119
-
120
- # call-seq:
121
- # mkdir( dir ) => nil
122
- #
123
- # Make a directory in the user specified site location. A message will be
124
- # displayed to the screen indicating tha the directory is being created.
125
- #
126
- def mkdir( dir )
127
- dir = dir.empty? ? site : ::File.join(site, dir)
128
- unless test ?d, dir
129
- creating dir
130
- FileUtils.mkdir_p dir
131
- end
132
- end
133
-
134
- # call-seq:
135
- # cp( file ) => nil
136
- #
137
- # Copy a file from the Webby prototype website location to the user
138
- # specified site location. A message will be displayed to the screen
139
- # indicating tha the file is being created.
140
- #
141
- def cp( file )
142
- src = ::File.join(data, file)
143
- dst = ::File.join(site, file)
144
- test(?e, dst) ? updating(dst) : creating(dst)
145
- # FileUtils.cp(src, dst)
146
- if WINDOWS then win_line_endings(src, dst)
147
- else FileUtils.cp(src, dst) end
148
- end
149
-
150
- # call-seq:
151
- # win_line_endings( src, dst )
152
- #
153
- # Copy the file from the _src_ location to the _dst_ location and
154
- # transform the line endings to the windows "\r\n" format.
155
- #
156
- def win_line_endings( src, dst )
157
- case ::File.extname(src)
158
- when *%w[.png .gif .jpg .jpeg]
159
- FileUtils.cp src, dst
160
- else
161
- ::File.open(dst,'w') do |fd|
162
- ::File.foreach(src, "\n") do |line|
163
- line.tr!("\r\n",'')
164
- fd.puts line
165
- end
166
- end
167
- end
168
- end
169
-
170
- # call-seq:
171
- # creating( msg ) => nil
172
- #
173
- # Prints a "creating _msg_" to the screen.
174
- #
175
- def creating( msg )
176
- @log.info "creating #{msg}"
177
- end
178
-
179
- # call-seq:
180
- # updating( msg ) => nil
181
- #
182
- # Prints a "updating _msg_" to the screen.
183
- #
184
- def updating( msg )
185
- @log.info "updating #{msg}"
186
- end
187
-
188
- # call-seq:
189
- # abort( msg ) => nil
190
- #
191
- # Prints an abort _msg_ to the screen and then exits the Ruby interpreter.
192
- #
193
- def abort( msg )
194
- @log.fatal msg
195
- exit 1
196
- end
197
-
198
- # call-seq:
199
- # site_files => hash
200
- #
201
- # Iterates over all the files in the Webby prototype website directory and
202
- # stores them in a hash.
203
- #
204
- def site_files
205
- exclude = %r/tmp$|bak$|~$|CVS|\.svn/o
206
-
207
- rgxp = %r/\A#{data}\/?/o
208
- paths = Hash.new {|h,k| h[k] = []}
209
-
210
- Find.find(data) do |p|
211
- next if exclude =~ p
212
-
213
- if test(?d, p)
214
- paths[p.sub(rgxp, '')]
215
- next
216
- end
217
- dir = ::File.dirname(p).sub(rgxp, '')
218
- paths[dir] << p.sub(rgxp, '')
219
- end
220
-
221
- paths
222
- end
223
-
224
- end # class Main
225
- end # module Webby
226
-
227
- # EOF