gf-treevisitor 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.8
1
+ 0.0.10
data/bin/tree.rb CHANGED
@@ -1,9 +1,9 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Wrapper for the class CliTree
4
-
5
- $TREEVISITOR_HOME = File.expand_path( File.join( File.dirname( __FILE__), ".." ) )
6
- $:.unshift( File.join($TREEVISITOR_HOME, "lib" ) )
7
-
8
- require "treevisitor/cli/cli_tree"
9
- CliTree.run
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Wrapper for the class CliTree
4
+
5
+ $TREEVISITOR_HOME = File.expand_path( File.join( File.dirname( __FILE__), ".." ) )
6
+ $:.unshift( File.join($TREEVISITOR_HOME, "lib" ) )
7
+
8
+ require "treevisitor/cli/cli_tree"
9
+ exit CliTree.run
@@ -1,90 +1,90 @@
1
- # ruby gems
2
- #
3
- # Check dependecies
4
- require 'rubygems'
5
- begin
6
- require "kwartz"
7
- require "kwartz/main"
8
- rescue LoadError
9
- abort 'kwartz gem required!!'
10
- end
11
-
12
-
13
- # ruby 1.9
14
- # cambiare alla linea 73 kwartz/main.rb la linea seguente:
15
- # return @_option_table.find { |row| row[1] == key }
16
- # con
17
- # return @_option_table.find { |row| row[1][0] == key[0] }
18
-
19
-
20
- #
21
- # kwartz utility
22
- # template_dir: directory containing kwartz template
23
- # template_include_dir: nil or a directory contained kwarz template referenced by template
24
- # template_out_dir: where the output goes
25
- #
26
- def kwartz_compile( template_dir, template_include_dir, template_out_dir )
27
- if not File.directory?(template_dir)
28
- raise "template_dir: '#{template_dir}' is not a directory"
29
- end
30
-
31
- if not File.directory?(template_out_dir)
32
- raise "template_out_dir: '#{template_out_dir}' is not a directory"
33
- end
34
-
35
- re_templatefile = /^[^\.](.+).html$/
36
-
37
- maxtime_incs = Time.local( 1980 )
38
- incs = []
39
- if template_include_dir
40
- if not File.directory?( template_include_dir )
41
- raise "include_dir: '#{template_include_dir}' is not a directory"
42
- end
43
- incs = Dir.new( template_include_dir ).find_all { |f| f =~ re_templatefile }
44
- incs = incs.map{ |f| File.join(template_include_dir, f) }
45
- maxtime_incs = incs.inject(maxtime_incs) {|t,f|
46
- t1 = File.mtime( f )
47
- if t1 > t then t1 else t end
48
- }
49
- incs = incs.join(",")
50
- end
51
-
52
- Dir.foreach( template_dir ) { |f|
53
- next unless f =~ re_templatefile
54
-
55
- inpath = File.join(template_dir, f)
56
- inpath_time = File.mtime( inpath )
57
-
58
- plogicpath = template_dir + File::Separator + f.sub( /.html$/, ".plogic" )
59
- plogicpath_time = Time.local( 1980 )
60
- if File.exists?( plogicpath )
61
- plogicpath_time = File.mtime( plogicpath )
62
- end
63
-
64
- outpath = File.join( template_out_dir, f.sub( /.html$/, ".rb" ) )
65
- outpath_time = Time.local( 1980 )
66
- if File.exist?( outpath )
67
- outpath_time = File.mtime( outpath )
68
- end
69
-
70
- argv = %w[--delspan -a defun -l ruby]
71
- if incs.length > 0
72
- argv << "-i"
73
- argv.push( incs )
74
- end
75
-
76
- if File.exist?( plogicpath )
77
- argv.push( "-p", plogicpath )
78
- end
79
- argv.push( inpath )
80
-
81
- if outpath_time < maxtime_incs or
82
- outpath_time < inpath_time or
83
- outpath_time < plogicpath_time
84
- # puts "kwartz " + argv.join(" ")
85
- main = Kwartz::Main.new(argv)
86
- output = main.execute()
87
- File.open(outpath, 'w') { |f| f.write(output) }
88
- end
89
- }
90
- end
1
+ # ruby gems
2
+ #
3
+ # Check dependecies
4
+ require 'rubygems'
5
+ begin
6
+ require "kwartz"
7
+ require "kwartz/main"
8
+ rescue LoadError
9
+ abort 'kwartz gem required!!'
10
+ end
11
+
12
+
13
+ # ruby 1.9
14
+ # cambiare alla linea 73 kwartz/main.rb la linea seguente:
15
+ # return @_option_table.find { |row| row[1] == key }
16
+ # con
17
+ # return @_option_table.find { |row| row[1][0] == key[0] }
18
+
19
+
20
+ #
21
+ # kwartz utility
22
+ # template_dir: directory containing kwartz template
23
+ # template_include_dir: nil or a directory contained kwarz template referenced by template
24
+ # template_out_dir: where the output goes
25
+ #
26
+ def kwartz_compile( template_dir, template_include_dir, template_out_dir )
27
+ if not File.directory?(template_dir)
28
+ raise "template_dir: '#{template_dir}' is not a directory"
29
+ end
30
+
31
+ if not File.directory?(template_out_dir)
32
+ raise "template_out_dir: '#{template_out_dir}' is not a directory"
33
+ end
34
+
35
+ re_templatefile = /^[^\.](.+).html$/
36
+
37
+ maxtime_incs = Time.local( 1980 )
38
+ incs = []
39
+ if template_include_dir
40
+ if not File.directory?( template_include_dir )
41
+ raise "include_dir: '#{template_include_dir}' is not a directory"
42
+ end
43
+ incs = Dir.new( template_include_dir ).find_all { |f| f =~ re_templatefile }
44
+ incs = incs.map{ |f| File.join(template_include_dir, f) }
45
+ maxtime_incs = incs.inject(maxtime_incs) {|t,f|
46
+ t1 = File.mtime( f )
47
+ if t1 > t then t1 else t end
48
+ }
49
+ incs = incs.join(",")
50
+ end
51
+
52
+ Dir.foreach( template_dir ) { |f|
53
+ next unless f =~ re_templatefile
54
+
55
+ inpath = File.join(template_dir, f)
56
+ inpath_time = File.mtime( inpath )
57
+
58
+ plogicpath = template_dir + File::Separator + f.sub( /.html$/, ".plogic" )
59
+ plogicpath_time = Time.local( 1980 )
60
+ if File.exists?( plogicpath )
61
+ plogicpath_time = File.mtime( plogicpath )
62
+ end
63
+
64
+ outpath = File.join( template_out_dir, f.sub( /.html$/, ".rb" ) )
65
+ outpath_time = Time.local( 1980 )
66
+ if File.exist?( outpath )
67
+ outpath_time = File.mtime( outpath )
68
+ end
69
+
70
+ argv = %w[--delspan -a defun -l ruby]
71
+ if incs.length > 0
72
+ argv << "-i"
73
+ argv.push( incs )
74
+ end
75
+
76
+ if File.exist?( plogicpath )
77
+ argv.push( "-p", plogicpath )
78
+ end
79
+ argv.push( inpath )
80
+
81
+ if outpath_time < maxtime_incs or
82
+ outpath_time < inpath_time or
83
+ outpath_time < plogicpath_time
84
+ # puts "kwartz " + argv.join(" ")
85
+ main = Kwartz::Main.new(argv)
86
+ output = main.execute()
87
+ File.open(outpath, 'w') { |f| f.write(output) }
88
+ end
89
+ }
90
+ end
@@ -1,24 +1,24 @@
1
- #
2
- # calculate md5 of big files, found on usenet
3
- #
4
-
5
- if RUBY_VERSION =~ /1\.8/
6
- # stdlib
7
- require 'md5'
8
- else
9
- # stdlib
10
- require 'digest/md5'
11
- include Digest
12
- end
13
-
14
- class MD5
15
- def self.file(file)
16
- File.open(file, "rb") do |f|
17
- res = self.new
18
- while (data = f.read(4096))
19
- res << data
20
- end
21
- res
22
- end
23
- end
24
- end
1
+ #
2
+ # calculate md5 of big files, found on usenet
3
+ #
4
+
5
+ if RUBY_VERSION =~ /1\.8/
6
+ # stdlib
7
+ require 'md5'
8
+ else
9
+ # stdlib
10
+ require 'digest/md5'
11
+ include Digest
12
+ end
13
+
14
+ class MD5
15
+ def self.file(file)
16
+ File.open(file, "rb") do |f|
17
+ res = self.new
18
+ while (data = f.read(4096))
19
+ res << data
20
+ end
21
+ res
22
+ end
23
+ end
24
+ end
@@ -1,17 +1,17 @@
1
- class Numeric
2
- #
3
- # ritorna una stringa con le migliaia serparate da <separator>
4
- # es.: 100000 -> 1.000.000
5
- #
6
- #
7
- # copiata da http://wiki.rubygarden.org/Ruby/page/show/FixNumFormat
8
- #
9
- def with_separator( separator = ',', length = 3 )
10
- splitter = Regexp.compile "(\\d{#{length}})"
11
- before, after = self.to_s.split('.')
12
- before = before.reverse.gsub splitter, '\1' + separator
13
- str = "#{ before.chomp( separator ).reverse }"
14
- str += ".#{ after }" if after
15
- return str
16
- end
17
- end
1
+ class Numeric
2
+ #
3
+ # ritorna una stringa con le migliaia serparate da <separator>
4
+ # es.: 100000 -> 1.000.000
5
+ #
6
+ #
7
+ # copiata da http://wiki.rubygarden.org/Ruby/page/show/FixNumFormat
8
+ #
9
+ def with_separator( separator = ',', length = 3 )
10
+ splitter = Regexp.compile "(\\d{#{length}})"
11
+ before, after = self.to_s.split('.')
12
+ before = before.reverse.gsub splitter, '\1' + separator
13
+ str = "#{ before.chomp( separator ).reverse }"
14
+ str += ".#{ after }" if after
15
+ return str
16
+ end
17
+ end
@@ -1,116 +1,116 @@
1
- # rubygems
2
- require "rubygems"
3
- require "abstract"
4
-
5
- #
6
- # Nodo Astratto
7
- # Gerarchia delle classi
8
- #
9
- # AbsNode ha un nome, un parent
10
- # | definisce un path
11
- # |
12
- # |- LeafNode
13
- # |
14
- # |- TreeNode
15
- #
16
- #
17
- class AbsNode
18
-
19
- attr_reader :parent
20
- attr_reader :name
21
-
22
- # solo TreeNode puo' scrivere vedi funzione add_leaf
23
- attr_accessor :prev
24
- attr_accessor :next
25
-
26
-
27
- def initialize( name )
28
- @parent = nil
29
- @name = name
30
- @prefix_path = nil
31
- invalidate
32
- end
33
-
34
- #
35
- # invalidate cached info
36
- #
37
- def invalidate
38
- @path = nil
39
- @path_from_root = nil
40
- @depth = nil
41
- end
42
-
43
- def prefix_path
44
- if not @parent.nil?
45
- raise "Not root!!"
46
- end
47
- @prefix_path
48
- end
49
-
50
- def prefix_path=( prefix )
51
- if not @parent.nil?
52
- raise "Not root!!"
53
- end
54
- if prefix != @prefix_path
55
- @prefix_path = prefix
56
- invalidate
57
- end
58
- end
59
-
60
- def root
61
- if root?
62
- self
63
- else
64
- parent.root
65
- end
66
- end
67
-
68
- def path
69
- return @path unless @path.nil?
70
- if @parent.nil?
71
- if @prefix_path
72
- @path = @prefix_path + @name
73
- else
74
- @path = @name
75
- end
76
- else
77
- @path = File.join( @parent.path, @name )
78
- end
79
- @path
80
- end
81
-
82
- def path_from_root
83
- return @path_from_root unless @path_from_root.nil?
84
- if @parent.nil?
85
- if @prefix_path
86
- @path_from_root = @prefix_path
87
- else
88
- @path_from_root = ""
89
- end
90
- else
91
- @path_from_root = File.join( @parent.path_from_root, @name )
92
- end
93
- @path_from_root
94
- end
95
-
96
- def depth
97
- return @depth unless @depth.nil?
98
- if @parent.nil?
99
- @depth = 1
100
- else
101
- @depth = @parent.depth + 1
102
- end
103
- @depth
104
- end
105
-
106
- def accept( visitor )
107
- not_implemented
108
- end
109
-
110
- protected
111
-
112
- def parent=( parent )
113
- @parent = parent
114
- end
115
-
116
- end
1
+ # rubygems
2
+ require "rubygems"
3
+ require "abstract"
4
+
5
+ #
6
+ # Nodo Astratto
7
+ # Gerarchia delle classi
8
+ #
9
+ # AbsNode ha un nome, un parent
10
+ # | definisce un path
11
+ # |
12
+ # |- LeafNode
13
+ # |
14
+ # |- TreeNode
15
+ #
16
+ #
17
+ class AbsNode
18
+
19
+ attr_reader :parent
20
+ attr_reader :name
21
+
22
+ # solo TreeNode puo' scrivere vedi funzione add_leaf
23
+ attr_accessor :prev
24
+ attr_accessor :next
25
+
26
+
27
+ def initialize( name )
28
+ @parent = nil
29
+ @name = name
30
+ @prefix_path = nil
31
+ invalidate
32
+ end
33
+
34
+ #
35
+ # invalidate cached info
36
+ #
37
+ def invalidate
38
+ @path = nil
39
+ @path_from_root = nil
40
+ @depth = nil
41
+ end
42
+
43
+ def prefix_path
44
+ if not @parent.nil?
45
+ raise "Not root!!"
46
+ end
47
+ @prefix_path
48
+ end
49
+
50
+ def prefix_path=( prefix )
51
+ if not @parent.nil?
52
+ raise "Not root!!"
53
+ end
54
+ if prefix != @prefix_path
55
+ @prefix_path = prefix
56
+ invalidate
57
+ end
58
+ end
59
+
60
+ def root
61
+ if root?
62
+ self
63
+ else
64
+ parent.root
65
+ end
66
+ end
67
+
68
+ def path
69
+ return @path unless @path.nil?
70
+ if @parent.nil?
71
+ if @prefix_path
72
+ @path = @prefix_path + @name
73
+ else
74
+ @path = @name
75
+ end
76
+ else
77
+ @path = File.join( @parent.path, @name )
78
+ end
79
+ @path
80
+ end
81
+
82
+ def path_from_root
83
+ return @path_from_root unless @path_from_root.nil?
84
+ if @parent.nil?
85
+ if @prefix_path
86
+ @path_from_root = @prefix_path
87
+ else
88
+ @path_from_root = ""
89
+ end
90
+ else
91
+ @path_from_root = File.join( @parent.path_from_root, @name )
92
+ end
93
+ @path_from_root
94
+ end
95
+
96
+ def depth
97
+ return @depth unless @depth.nil?
98
+ if @parent.nil?
99
+ @depth = 1
100
+ else
101
+ @depth = @parent.depth + 1
102
+ end
103
+ @depth
104
+ end
105
+
106
+ def accept( visitor )
107
+ not_implemented
108
+ end
109
+
110
+ protected
111
+
112
+ def parent=( parent )
113
+ @parent = parent
114
+ end
115
+
116
+ end
@@ -81,6 +81,7 @@ class CliTree
81
81
 
82
82
  dtw = DirTreeWalker.new( dirname )
83
83
  unless options[:all_files]
84
+ # TODO: la regex e' corretta ed un file che inizia con ".."??
84
85
  dtw.add_ignore_pattern(/^\.[^.]+/) # ignore all file starting with "."
85
86
  end
86
87
 
@@ -97,7 +98,7 @@ class CliTree
97
98
  visitor = PrintDirTreeVisitor.new
98
99
  dtw.run( visitor )
99
100
  end
100
-
101
+ return 0
101
102
  end
102
103
 
103
104
  end
@@ -1,40 +1,40 @@
1
- require 'pathname'
2
-
3
- class DirProcessor
4
-
5
- def initialize( dirname, &action )
6
- @dirname = dirname
7
- @processors = {}
8
- @default_processor = action
9
- end
10
-
11
- def add_processor( re, &action )
12
- @processors[ re ] = action
13
- end
14
-
15
- def run()
16
- old_dirname = Dir.pwd
17
- Dir.chdir( @dirname )
18
- Dir["**/*"].each { |f|
19
- pn = Pathname.new( f ).expand_path
20
- # puts "#{self.class.name}#loadfromdir #{f}"
21
- next if pn.directory?
22
- process_file( pn )
23
- }
24
- Dir.chdir( old_dirname )
25
- self
26
- end
27
-
28
- private
29
-
30
- def process_file( pn )
31
- # puts "file: #{f}"
32
- pair = @processors.find { |re,action| re =~ pn.to_s }
33
- unless pair.nil?
34
- pair[1].call( pn )
35
- else
36
- @default_processor.call( pn ) if @default_processor
37
- end
38
- end
39
-
40
- end
1
+ require 'pathname'
2
+
3
+ class DirProcessor
4
+
5
+ def initialize( &action )
6
+ @processors = {}
7
+ @default_processor = action
8
+ end
9
+
10
+ def add_processor( re, &action )
11
+ @processors[ re ] = action
12
+ end
13
+
14
+ def process( dirname )
15
+ @dirname = dirname
16
+ old_dirname = Dir.pwd
17
+ Dir.chdir( @dirname )
18
+ Dir["**/*"].each { |f|
19
+ pn = Pathname.new( f ).expand_path
20
+ # puts "#{self.class.name}#loadfromdir #{f}"
21
+ next if pn.directory?
22
+ process_file( pn )
23
+ }
24
+ Dir.chdir( old_dirname )
25
+ self
26
+ end
27
+
28
+ private
29
+
30
+ def process_file( pn )
31
+ # puts "file: #{f}"
32
+ pair = @processors.find { |re,action| re =~ pn.to_s }
33
+ unless pair.nil?
34
+ pair[1].call( pn )
35
+ else
36
+ @default_processor.call( pn ) if @default_processor
37
+ end
38
+ end
39
+
40
+ end