lib/runeblog.rb in runeblog-0.0.85 vs lib/runeblog.rb in runeblog-0.0.86

- old
+ new

@@ -25,11 +25,14 @@ attr_accessor :view # overridden include Helpers def self.create_new_blog(dir) - new_dotfile(root: Dir.pwd + "/" + dir) + raise ArgumentError unless dir.is_a?(String) && ! dir.empty? + root_dir = Dir.pwd + "/" + dir + raise "Already exists" if Dir.exist?(root_dir) + new_dotfile(root: root_dir) create_dir(dir) Dir.chdir(dir) do create_dir("views") create_dir("assets") create_dir("src") @@ -50,18 +53,21 @@ @view = str2view(@view_name) @sequence = get_sequence end def view?(name) + raise ArgumentError unless name.is_a?(String) && ! name.empty? views.any? {|x| x.name == name } end def view(name = nil) + raise ArgumentError unless name.nil? || (name.is_a?(String) && ! name.empty?) name.nil? ? @view : str2view(name) end def str2view(str) + raise ArgumentError unless str.is_a?(String) && ! str.empty? @views.find {|x| x.name == str } end def view=(arg) case arg @@ -86,23 +92,26 @@ dump(@sequence += 1, "#@root/sequence") @sequence end def viewdir(v = nil) + raise ArgumentError unless v.nil? || v.is_a?(RuneBlog::View) v ||= @view @root + "/views/#{v}/" end def self.exist? Dir.exist?(DotDir) && File.exist?(ConfigFile) end def create_view(arg) + raise ArgumentError unless arg.is_a?(String) && ! arg.empty? names = self.views.map(&:to_s) raise "view #{arg} already exists" if names.include?(arg) dir = "#@root/views/#{arg}/" + raise "Can't happen: #{fir} exists already" if Dir.exist?(dir) create_dir(dir) up = Dir.pwd Dir.chdir(dir) x = RuneBlog::Default create_dir('custom') @@ -116,10 +125,11 @@ Dir.chdir(up) @views << RuneBlog::View.new(arg) end def delete_view(name, force = false) + raise ArgumentError unless name.is_a?(String) && ! name.empty? if force system("rm -rf #@root/views/#{name}") @views -= [str2view(name)] end end @@ -131,10 +141,11 @@ # Huh? files.reject! {|f| File.mtime(f) < File.mtime("#{vdir}/last_deployed") } end def files_by_id(id) + raise ArgumentError unless id.is_a?(Integer) files = Find.find(self.view.dir).to_a tag = "#{'%04d' % id}" result = files.grep(/#{tag}-/) result end @@ -169,18 +180,21 @@ dir = "#@root/src" drafts = Dir.entries(dir).grep(/^\d{4}.*/) end def change_view(view) + raise ArgumentError unless view.is_a?(String) || view.is_a?(RuneBlog::View) x = OpenStruct.new - x.root, x.current_view, x.editor = @root, view, @editor # dumb - FIXME later - write_config(x, DotDir + "/config") + x.root, x.current_view, x.editor = @root, view.to_s, @editor # dumb - FIXME later + write_config(x, ConfigFile) self.view = view # error checking? end def process_post(file) + raise ArgumentError unless file.is_a?(String) path = @root + "/src/#{file}" + raise "File not found: #{path}" unless File.exist?(path) livetext = Livetext.new(STDOUT) # (nil) @meta = livetext.process_file(path, binding) raise "process_file returned nil" if @meta.nil? num, slug = self.make_slug(@meta.title, self.sequence) @@ -198,10 +212,11 @@ rescue => err error(err) end def link_post_view(view) + raise ArgumentError unless view.is_a?(String) || view.is_a?(RuneBlog::View) # Create dir using slug (index.html, metadata?) vdir = self.viewdir(view) dir = vdir + @meta.slug + "/" create_dir(dir + "assets") Dir.chdir(dir) do @@ -215,10 +230,11 @@ rescue => err error(err) end def generate_index(view) + raise ArgumentError unless view.is_a?(String) || view.is_a?(RuneBlog::View) # Gather all posts, create list vdir = "#@root/views/#{view}" posts = Dir.entries(vdir).grep /^\d{4}/ posts = posts.sort.reverse @@ -245,10 +261,11 @@ def relink self.views.each {|view| generate_index(view) } end def index_entry(view, meta) + raise ArgumentError unless view.is_a?(String) || view.is_a?(RuneBlog::View) # FIXME clean up and generalize ref = "#{view}/#{meta.slug}/index.html" <<-HTML <br> <font size=+1>#{meta.pubdate}&nbsp;&nbsp;</font> @@ -260,17 +277,19 @@ <hr> HTML end def rebuild_post(file) + raise ArgumentError unless file.is_a?(String) @meta = process_post(file) publish_post(@meta) # FIXME ?? rescue => err error(err) end def remove_post(num) + raise ArgumentError unless num.is_a?(Integer) list = files_by_id(num) return nil if list.empty? dest = list.map {|f| f.sub(/(?<num>\d{4}-)/, "_\\k<num>") } list.each.with_index do |src, i| cmd = "mv #{src} #{dest[i]} 2>/dev/null" @@ -279,25 +298,26 @@ # FIXME - update index/etc true end def delete_draft(num) + raise ArgumentError unless num.is_a?(Integer) tag = "#{'%04d' % num.to_i}" system("rm -rf #@root/src/#{tag}-*") end def post_exists?(num) + raise ArgumentError unless num.is_a?(Integer) list = files_by_id(num) list.empty? ? nil : list end def make_slug(title, postnum = nil) + raise ArgumentError unless title.is_a?(String) postnum ||= self.next_sequence num = '%04d' % postnum # FIXME can do better slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '') [postnum, "#{num}-#{slug}"] end - - private end