Sha256: 9681c35f49c70d6cff0c7569938b25b2212af566972323d023c00d85a2b0fdf7
Contents?: true
Size: 1.92 KB
Versions: 4
Compression:
Stored size: 1.92 KB
Contents
module Rwiki::Models class Folder < Node def initialize(path) full_path = File.join(@@working_path, path) raise Rwiki::NodeNotFoundError.new("cannot find #{path}") if !File.exist?(full_path) || ! File.directory?(full_path) super(path) end def nodes Dir.chdir(working_path) do self.class.make_tree(@path) end end def create_sub_folder(name) new_folder_path = File.join(@path, name) new_folder_full_path = self.class.full_path_for(new_folder_path) raise Rwiki::NodeError.new("#{new_folder_path} already exists") if File.exists?(new_folder_full_path) FileUtils.mkdir(new_folder_full_path) return Folder.new(new_folder_path) end def create_sub_page(name) name = name + '.txt' unless name.end_with?('.txt') new_page_path = File.join(@path, name) new_page_full_path = self.class.full_path_for(new_page_path) raise Rwiki::NodeError.new("#{new_page_path} already exists") if File.exists?(new_page_full_path) File.open(new_page_full_path, 'w') { |f| f.write("h1. #{name.gsub(/\.txt$/, '')}\n\n") } return Page.new(new_page_path) end private def self.make_tree(root_path) tree_nodes = [] nodes = Dir.entries(root_path).sort nodes.each do |base_name| next if base_name.match(/^\./) # skip hidden files path = File.join(root_path, base_name) tree_node = { :baseName => base_name } if File.directory?(path) children = make_tree(path) tree_nodes << tree_node.merge(:text => base_name, :cls => 'folder', :children => children) else next unless base_name.match(/#{PAGE_FILE_EXTENSION}$/) # skip non *.txt files page_name = base_name.gsub(/#{PAGE_FILE_EXTENSION}$/, '') tree_nodes << tree_node.merge(:text => page_name, :cls => 'page', :leaf => true) end end return tree_nodes end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
rwiki-0.2.4 | lib/rwiki/models/folder.rb |
rwiki-0.2.3 | lib/rwiki/models/folder.rb |
rwiki-0.2.2 | lib/rwiki/models/folder.rb |
rwiki-0.2.1 | lib/rwiki/models/folder.rb |