OSDN Git Service

creating web-file-module.
[feedblog/feedgenerator.git] / filemodule.rb
1 #!/usr/bin/ruby
2 # -*- coding: utf-8 -*-
3
4 class WebFiler
5   
6   def initialize(basepath)
7     @basepath = basepath
8     @basepath << "/" unless @basepath[-1] == "/"
9     @relpath_list = []
10     
11     raise "Target dir not found." unless check_dir_exist(pwd)
12   end
13   
14   def entries
15     filelist = Dir::entries(pwd)
16     filelist.delete(".")
17     filelist.delete("..")
18     
19     filelist
20   end
21   
22   def cd(pathname)
23     if pathname == ".."
24       @relpath_list.delete_at(-1) unless @relpath_list.length == 0
25     elsif pathname.match(/([^\w]|\.\.)/) == nil
26       if check_dir_exist(pwd + "/" + pathname)
27         @relpath_list << pathname
28       else
29         raise "Target dir not found."
30       end
31     end
32   end
33   
34   def pwd
35     @basepath + relpath
36   end
37   
38   def relpath
39     if @relpath_list.length == 0
40       ""
41     else
42       @relpath_list.join("/") << "/"
43     end
44   end
45   
46   def upload(file, fname)
47     if File.exist?(pwd + fname)
48       raise "Target file exist."
49     else
50       open(pwd + File.basename(fname), "w") do |f|
51         f.binmode
52         f.write file
53       end
54     end
55   end
56   
57   def delete(fname)
58     if File.exist?(pwd + fname)
59       File.delete(pwd + fname)
60     else
61       raise "Target file is not exist."
62     end
63   end
64   
65   def mkdir(dirname)
66     unless (File.exist? dirname)
67       raise "Target directory is exist."
68     else
69       Dir.mkdir(dirname)
70     end
71   end
72   
73   def rmdir(dirname)
74     if (File.exist? dirname)
75       raise "Target directory is not exist."
76     else
77       Dir.rmdir(dirname)
78     end
79   end
80   
81   def check_dir_exist(target_dir)
82     unless (File.exist? target_dir || File.ftype(target_dir) != "directory")
83       false
84     else
85       true
86     end
87   end
88   
89 end
90
91 filer = WebFiler.new("C:/workspace/aptana")
92 p filer.entries
93 filer.cd("server")
94 p filer.entries
95 p filer.pwd
96 filer.cd("wwwroot")
97 p filer.entries
98 p filer.pwd
99 filer.cd("..")
100 p filer.entries
101 # Error
102 filer.cd("notfound")
103
104 ferror = WebFiler.new("C:/NotMatched")