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} </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