From 53cd102b39eb62567298430cbd94e40dd78d46a0 Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Tue, 24 Feb 2009 12:29:25 +0000 Subject: Merge with docrails --- railties/guides/rails_guides/generator.rb | 60 +++++++++++----------- railties/guides/rails_guides/indexer.rb | 8 ++- railties/guides/rails_guides/textile_extensions.rb | 3 ++ 3 files changed, 40 insertions(+), 31 deletions(-) (limited to 'railties/guides/rails_guides') diff --git a/railties/guides/rails_guides/generator.rb b/railties/guides/rails_guides/generator.rb index 3cbc2eb1f4..41d22e37fd 100644 --- a/railties/guides/rails_guides/generator.rb +++ b/railties/guides/rails_guides/generator.rb @@ -25,29 +25,7 @@ module RailsGuides end guides.each do |guide| - guide =~ /(.*?)(\.erb)?\.textile/ - name = $1 - - puts "Generating #{name}" - - file = File.join(output, "#{name}.html") - File.open(file, 'w') do |f| - @view = ActionView::Base.new(view_path) - @view.extend(Helpers) - - if guide =~ /\.erb\.textile/ - # Generate the erb pages with textile formatting - e.g. index/authors - result = view.render(:layout => 'layout', :file => guide) - f.write textile(result) - else - body = File.read(File.join(view_path, guide)) - body = set_header_section(body, @view) - body = set_index(body, @view) - - result = view.render(:layout => 'layout', :text => textile(body)) - f.write result - end - end + generate_guide(guide) end # Copy images and css files to html directory @@ -55,6 +33,32 @@ module RailsGuides FileUtils.cp_r File.join(guides_dir, 'files'), File.join(output, 'files') end + def generate_guide(guide) + guide =~ /(.*?)(\.erb)?\.textile/ + name = $1 + + puts "Generating #{name}" + + file = File.join(output, "#{name}.html") + File.open(file, 'w') do |f| + @view = ActionView::Base.new(view_path) + @view.extend(Helpers) + + if guide =~ /\.erb\.textile/ + # Generate the erb pages with textile formatting - e.g. index/authors + result = view.render(:layout => 'layout', :file => name) + f.write textile(result) + else + body = File.read(File.join(view_path, guide)) + body = set_header_section(body, @view) + body = set_index(body, @view) + + result = view.render(:layout => 'layout', :text => textile(body)) + f.write result + end + end + end + def set_header_section(body, view) new_body = body.gsub(/(.*?)endprologue\./m, '').strip header = $1 @@ -72,21 +76,19 @@ module RailsGuides def set_index(body, view) index = <<-INDEX
-

Chapters

+

Chapters

    - INDEX + INDEX i = Indexer.new(body) i.index # Set index for 2 levels i.level_hash.each do |key, value| - bookmark = '#' + key.gsub(/[^a-z0-9\-_\+]+/i, '').underscore.dasherize - link = view.content_tag(:a, :href => bookmark) { key } + link = view.content_tag(:a, :href => key[:id]) { textile(key[:title]) } children = value.keys.map do |k| - bm = '#' + k.gsub(/[^a-z0-9\-_\+]+/i, '').underscore.dasherize - l = view.content_tag(:a, :href => bm) { k } + l = view.content_tag(:a, :href => k[:id]) { textile(k[:title]) } view.content_tag(:li, l) end diff --git a/railties/guides/rails_guides/indexer.rb b/railties/guides/rails_guides/indexer.rb index 52809829e2..7cb254d0b0 100644 --- a/railties/guides/rails_guides/indexer.rb +++ b/railties/guides/rails_guides/indexer.rb @@ -29,13 +29,17 @@ module RailsGuides return level_hash elsif level == current_level index = counters.join(".") - bookmark = '#' + title.gsub(/[^a-z0-9\-_\+]+/i, '').underscore.dasherize + bookmark = '#' + title.gsub(/[^a-z0-9\-_]+/i, '').underscore.dasherize raise "Parsing Fail" unless @result.sub!(matched, "h#{level}(#{bookmark}). #{index}#{title}") + key = { + :title => title, + :id => bookmark + } # Recurse counters << 1 - level_hash[title.strip] = process(s.post_match, current_level + 1, counters) + level_hash[key] = process(s.post_match, current_level + 1, counters) counters.pop # Increment the current level diff --git a/railties/guides/rails_guides/textile_extensions.rb b/railties/guides/rails_guides/textile_extensions.rb index a7fc5ba49c..7ebbf0090e 100644 --- a/railties/guides/rails_guides/textile_extensions.rb +++ b/railties/guides/rails_guides/textile_extensions.rb @@ -25,6 +25,9 @@ module RailsGuides body.gsub!(/\+(.*?)\+/) do |m| "#{$1}" end + + # The real plus sign + body.gsub!('', '+') end def code(body) -- cgit v1.2.3