lib/softcover/commands/server.rb in softcover-0.6.6 vs lib/softcover/commands/server.rb in softcover-0.6.7

- old
+ new

@@ -8,19 +8,30 @@ # Listens for changes to the book's source files. def listen_for_changes return if defined?(@no_listener) && @no_listener server_pid = Process.pid - directories = ['.', 'chapters'] - @listener = Listen.to(*directories) - file_pattern = markdown? ? '\.md|\.txt' : '\.tex' - @listener.filter(/(#{file_pattern}|custom\.sty)$/) + filter_regex = /(\.md|\.tex|custom\.sty|Book\.txt)$/ + @listener = Listen.to('.') + @listener.filter(filter_regex) @listener.change do |modified| - rebuild modified.try(:first) - Process.kill("HUP", server_pid) + first_modified = modified.try(:first) + unless first_modified =~ ignore_regex + rebuild first_modified + Process.kill("HUP", server_pid) + end end @listener.start + end + + # Returns a regex for files to be ignored by the listener. + def ignore_regex + ignores = ['generated_polytex', '\.tmp\.tex'] + # Ignore <book>.tex, which gets overwritten each time PolyTeXnic runs, + # unless there's no Book.txt, which means the author is using raw LaTeX. + ignores << Regexp.escape(Dir.glob('*.tex').first) if File.exist?('Book.txt') + /(#{ignores.join('|')})/ end def markdown? !Dir.glob(path('chapters/*.md')).empty? end