From dfbc8c62ee2ee6e188609fc44e1a5ac4df40acf4 Mon Sep 17 00:00:00 2001 From: Chris Jaekl Date: Sun, 11 Jun 2017 15:34:52 +0900 Subject: [PATCH] Refactors navigation page generation. Adds navigation by Series. --- main.rb | 85 +++----------------------------------------------------- page.rb | 3 +- store.rb | 5 ++-- 3 files changed, 9 insertions(+), 84 deletions(-) diff --git a/main.rb b/main.rb index f3371b7..e1a5205 100644 --- a/main.rb +++ b/main.rb @@ -1,3 +1,4 @@ +require 'navigator' require 'page' require 'store' require 'walkdir' @@ -35,87 +36,9 @@ end puts 'Creating output...' -atoz_counts = {} +navigator = Navigator.new(@store) +navigator.write_atoz_pages() +navigator.write_series_listing() -('A'..'Z').each do |letter| - book_ids = @store.query_books_by_author(letter + '%') - puts 'Authors starting with "' + letter + '": ' + book_ids.length.to_s() + ' books.' - atoz_counts[letter] = book_ids.length - - page = Page.new(@store) - if 'A' != letter - page.back = ['../atoz/output_' + (letter.ord - 1).chr + '.html', 'Prev'] - end - if 'Z' != letter - page.forward = ['../atoz/output_' + (letter.ord + 1).chr + '.html', 'Next'] - end - page.output_dir = 'atoz' - page.index_file = 'output_' + letter + '.html' - page.title = "Authors starting with '" + letter + "'" - page.up = ['../atoz/index.html', 'Index'] - - page.write_html(book_ids) -end - - -ages = ['beginner', 'junior', 'ya', 'adult'] - -series_infos = [] - -ages.each do |age| - puts 'Series for "' + age + '" readers...' - - series_ids = @store.query_series_by_age(age) - - series_ids.each do |id| - series = @store.load_series(id) - book_ids = @store.query_books_by_series_id(id) - if nil != book_ids and book_ids.length > 0 - series_infos.push( [series, book_ids] ) - end - end - - for idx in 0 .. (series_infos.length - 1) do - #puts series.descr + ': ' + book_ids.length.to_s + ' books.' - - back = nil - fwd = nil - - if idx > 0 - back = series_infos[idx-1] - end - if idx < (series_infos.length - 1) - fwd = series_infos[idx+1] - end - - cur = series_infos[idx] - series = cur[0] - book_ids = cur[1] - - page = Page.new(@store) - if nil != back - page.back = [back[0].key + '.html', 'Back'] - end - if nil != fwd - page.forward = [fwd[0].key + '.html', 'Forward'] - end - page.output_dir = 'series' - page.index_file = series.key + '.html' - page.title = 'Series “' + series.descr + '” (' + book_ids.length.to_s + ' books)' - page.up = ['../atoz/index.html', 'Index'] - - page.write_html(book_ids) - end -end - -content = '' -('A'..'Z').each do |letter| - content += ' ' -end -page = Page.new(@store) -page.output_dir = 'atoz' -page.special = content -page.write_html( [] ) - @store.disconnect() diff --git a/page.rb b/page.rb index 1d83add..ac1c907 100644 --- a/page.rb +++ b/page.rb @@ -1,3 +1,4 @@ +require 'fileutils' require 'store' @@ -91,7 +92,7 @@ class Page @imageCount = 0 if ! Dir.exist?(@output_dir) - Dir.mkdir(@output_dir) + FileUtils.mkdir_p(@output_dir) end open(@output_dir + '/' + @index_file, 'w') do |fd| diff --git a/store.rb b/store.rb index 0ba3447..05f4413 100644 --- a/store.rb +++ b/store.rb @@ -393,9 +393,10 @@ EOS def query_series_by_age(pattern) sql = <
AuthorBooks
Starting with ' + letter + '' + atoz_counts[letter].to_s + '