directory_paradise 1.4.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,228 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === DirectoryParadise::Base
6
+ #
7
+ # Usage example:
8
+ #
9
+ # DirectoryParadise::Base.new(ARGV)
10
+ #
11
+ # =========================================================================== #
12
+ # require 'directory_paradise/base/base.rb'
13
+ # =========================================================================== #
14
+ require 'directory_paradise/constants/newline.rb'
15
+
16
+ module DirectoryParadise
17
+
18
+ class Base
19
+
20
+ alias e puts
21
+ alias ee print
22
+
23
+ require 'directory_paradise/base/colours.rb'
24
+ require 'directory_paradise/project/project.rb'
25
+ require 'directory_paradise/to_human_readable/to_human_readable.rb'
26
+
27
+ # ========================================================================= #
28
+ # === is_on_windows?
29
+ # ========================================================================= #
30
+ def is_on_windows?
31
+ if RUBY_PLATFORM.include?('win') or # if on windows.
32
+ RUBY_PLATFORM.include?('mingw')
33
+ return true
34
+ end
35
+ return false # ← Otherwise we are evidently NOT on windows, if we reach this point here.
36
+ end
37
+
38
+ # ========================================================================= #
39
+ # === rds
40
+ # ========================================================================= #
41
+ def rds(i)
42
+ i.squeeze '/'
43
+ end
44
+
45
+ # ========================================================================= #
46
+ # === register_sigint
47
+ # ========================================================================= #
48
+ def register_sigint
49
+ Signal.trap('SIGINT') { exit }
50
+ end
51
+
52
+ # ========================================================================= #
53
+ # === return_chmod_value_of_this_file
54
+ # ========================================================================= #
55
+ def return_chmod_value_of_this_file(i)
56
+ if File.exist? i
57
+ File.stat(i).mode.to_s(8).split('')[-4..-1].join # => "0755"
58
+ else
59
+ '0000'
60
+ end
61
+ end
62
+
63
+ # ========================================================================= #
64
+ # === set_commandline_arguments
65
+ # ========================================================================= #
66
+ def set_commandline_arguments(i = '')
67
+ i = [i].flatten.compact
68
+ @commandline_arguments = i
69
+ end
70
+
71
+ # ========================================================================= #
72
+ # === commandline_arguments?
73
+ # ========================================================================= #
74
+ def commandline_arguments?
75
+ @commandline_arguments
76
+ end
77
+
78
+ # ========================================================================= #
79
+ # === commandline_arguments_starting_with_two_hyphens?
80
+ # ========================================================================= #
81
+ def commandline_arguments_starting_with_two_hyphens?
82
+ @commandline_arguments.select {|entry| entry.start_with? '--' }
83
+ end
84
+
85
+ # ========================================================================= #
86
+ # === return_non_hyphen_entries_from
87
+ # ========================================================================= #
88
+ def return_non_hyphen_entries_from(i)
89
+ if i.is_a? Array
90
+ i.select {|entry| !entry.start_with?('--') }
91
+ else
92
+ nil
93
+ end
94
+ end
95
+
96
+ # ========================================================================= #
97
+ # === first_argument?
98
+ # ========================================================================= #
99
+ def first_argument?
100
+ @commandline_arguments.first
101
+ end; alias first? first_argument? # === first?
102
+
103
+ # ========================================================================= #
104
+ # === return_pwd
105
+ # ========================================================================= #
106
+ def return_pwd
107
+ "#{Dir.pwd}/".squeeze('/')
108
+ end
109
+
110
+ # ========================================================================= #
111
+ # === eliner
112
+ # ========================================================================= #
113
+ def eliner
114
+ e '―' * 80
115
+ end
116
+
117
+ # ========================================================================= #
118
+ # === liner
119
+ # ========================================================================= #
120
+ def liner # adds a line.
121
+ if block_given?
122
+ liner
123
+ yield
124
+ end
125
+ return ('*' * 80)+N
126
+ end
127
+
128
+ # ========================================================================= #
129
+ # === return_owner
130
+ #
131
+ # This method determines the owner of a file or directory.
132
+ # ========================================================================= #
133
+ def return_owner(
134
+ of_this_uid
135
+ )
136
+ _ = ''.dup # The _ is the return value.
137
+ # ======================================================================= #
138
+ # The next block of code can fail on windows, hence why this is
139
+ # wrapped carefully.
140
+ # ======================================================================= #
141
+ begin
142
+ if of_this_uid.is_a? String
143
+ of_this_uid = of_this_uid.to_i
144
+ end
145
+ # ===================================================================== #
146
+ # The next line must be rescued because the filesystem may be faulty.
147
+ # ===================================================================== #
148
+ begin
149
+ result_from_getpwuid = Etc.getpwuid(of_this_uid)
150
+ rescue TypeError
151
+ result_from_getpwuid = false
152
+ end
153
+ if result_from_getpwuid
154
+ _ << result_from_getpwuid.name
155
+ else
156
+ _ << '(unknown)'
157
+ end
158
+ rescue ArgumentError
159
+ _ << '(unknown)'
160
+ rescue Errno::ENOENT
161
+ _ << '(missing)'
162
+ end
163
+ _ # Return it here.
164
+ end; alias owner? return_owner # === owner?
165
+
166
+ # ========================================================================= #
167
+ # === return_assumed_modification_time
168
+ # ========================================================================= #
169
+ def return_assumed_modification_time(i)
170
+ month = Date::MONTHNAMES[i.month][0,3] # => "Jun"
171
+ "#{month} #{i.day.to_s.rjust(2)}"
172
+ end
173
+
174
+ # ========================================================================= #
175
+ # === clear_the_internal_hash
176
+ # ========================================================================= #
177
+ def clear_the_internal_hash
178
+ @internal_hash.clear
179
+ end; alias clear clear_the_internal_hash # === clear
180
+
181
+ # ========================================================================= #
182
+ # === to_human_readable
183
+ #
184
+ # The strange thing is, in bash, we seem to round up.
185
+ #
186
+ # How many MB (megabyte) are in 1 GB (gigabyte)? 1024.
187
+ # ========================================================================= #
188
+ def to_human_readable(i)
189
+ return DirectoryParadise.to_human_readable(i)
190
+ end
191
+
192
+ # ========================================================================= #
193
+ # === infer_the_namespace
194
+ #
195
+ # This will assume the true namespace from the inspectable name.
196
+ # ========================================================================= #
197
+ def infer_the_namespace
198
+ _ = inspect.to_s.delete('<')
199
+ if _.include? ' '
200
+ _ = _.split(' ').first.delete('#')
201
+ if _.include? ':'
202
+ _ = _.split(':')[0 .. -2].reject {|entry| entry.empty? }.join('::')
203
+ end
204
+ elsif _.include? ':0x'
205
+ _ = _.split(':0x').first
206
+ end
207
+ @namespace = _.delete('#') # And assign it here.
208
+ end
209
+
210
+ # ========================================================================= #
211
+ # === namespace?
212
+ # ========================================================================= #
213
+ def namespace?
214
+ @namespace
215
+ end
216
+
217
+ # ========================================================================= #
218
+ # === print_the_namespace
219
+ # ========================================================================= #
220
+ def print_the_namespace
221
+ print namespace?
222
+ end
223
+
224
+ end; end
225
+
226
+ if __FILE__ == $PROGRAM_NAME
227
+ DirectoryParadise::Base.new(ARGV)
228
+ end # base.rb
@@ -0,0 +1,196 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'directory_paradise/base/colours.rb'
6
+ # =========================================================================== #
7
+ module DirectoryParadise
8
+
9
+ class Base
10
+
11
+ # ========================================================================= #
12
+ # === do_use_colours
13
+ # ========================================================================= #
14
+ def do_use_colours(optional_args = '')
15
+ @internal_hash[:use_colours] = true # Whether we will use colours or whether we will not.
16
+ end; alias enable_colours do_use_colours # === enable_colours
17
+
18
+ # ========================================================================= #
19
+ # === use_colours?
20
+ #
21
+ # Whether we use colours or whether we don't.
22
+ # ========================================================================= #
23
+ def use_colours?(
24
+ i = @internal_hash[:use_colours]
25
+ )
26
+ return i
27
+ end
28
+
29
+ # ========================================================================= #
30
+ # === disable_colours
31
+ #
32
+ # Disable colours through this method.
33
+ # ========================================================================= #
34
+ def disable_colours
35
+ @internal_hash[:use_colours] = false
36
+ end
37
+
38
+ # ========================================================================= #
39
+ # === slink
40
+ # ========================================================================= #
41
+ def slink(i)
42
+ return Colours.slink(i) if use_colours?
43
+ return i
44
+ end
45
+
46
+ # ========================================================================= #
47
+ # === simp
48
+ # ========================================================================= #
49
+ def simp(i)
50
+ return Colours.simp(i) if use_colours?
51
+ return i
52
+ end
53
+
54
+ # ========================================================================= #
55
+ # === sfancy
56
+ # ========================================================================= #
57
+ def sfancy(i)
58
+ return Colours.sfancy(i) if use_colours?
59
+ return i
60
+ end
61
+
62
+ # ========================================================================= #
63
+ # === bold_yellow
64
+ # ========================================================================= #
65
+ def bold_yellow(i)
66
+ if use_colours?
67
+ Colours::BOLD_YELLOW+i+rev
68
+ else
69
+ i
70
+ end
71
+ end
72
+
73
+ # ========================================================================= #
74
+ # === steelblue
75
+ # ========================================================================= #
76
+ def steelblue(i)
77
+ return Colours.steelblue(i) if use_colours?
78
+ i
79
+ end
80
+
81
+ # ========================================================================= #
82
+ # === springgreen
83
+ # ========================================================================= #
84
+ def springgreen(i)
85
+ return ::Colours.springgreen(i) if use_colours?
86
+ i
87
+ end
88
+
89
+ # ========================================================================= #
90
+ # === royalblue
91
+ # ========================================================================= #
92
+ def royalblue(i)
93
+ return ::Colours.royalblue(i) if use_colours?
94
+ i
95
+ end
96
+
97
+ # ========================================================================= #
98
+ # === lightblue
99
+ # ========================================================================= #
100
+ def lightblue(i)
101
+ return ::Colours.lightblue(i) if use_colours?
102
+ i
103
+ end
104
+
105
+ # ========================================================================= #
106
+ # === lightgreen
107
+ # ========================================================================= #
108
+ def lightgreen(i)
109
+ return ::Colours.lightgreen(i) if use_colours?
110
+ i
111
+ end
112
+
113
+ # ========================================================================= #
114
+ # === yellow
115
+ # ========================================================================= #
116
+ def yellow(i)
117
+ return ::Colours.yellow(i) if use_colours?
118
+ i
119
+ end
120
+
121
+ # ========================================================================= #
122
+ # === tomato
123
+ # ========================================================================= #
124
+ def tomato(i)
125
+ return ::Colours.tomato(i) if use_colours?
126
+ end
127
+
128
+ # ========================================================================= #
129
+ # === skyblue
130
+ # ========================================================================= #
131
+ def skyblue(i)
132
+ return ::Colours.skyblue(i) if use_colours?
133
+ end
134
+
135
+ # ========================================================================= #
136
+ # === olive
137
+ # ========================================================================= #
138
+ def olive(i)
139
+ return ::Colours.olive(i) if use_colours?
140
+ i
141
+ end
142
+
143
+ # ========================================================================= #
144
+ # === ssymlink
145
+ # ========================================================================= #
146
+ def ssymlink(i)
147
+ return ::Colours.ssymlink(i) if use_colours?
148
+ i
149
+ end
150
+
151
+ # ========================================================================= #
152
+ # === sdir
153
+ # ========================================================================= #
154
+ def sdir(i)
155
+ i = i.to_s.dup
156
+ # i << '/' unless i.end_with? '/'
157
+ # ^^^ Nope, that is bad.
158
+ i = rds(i) if i.include? '//'
159
+ i = Colours.sdir(i) if use_colours?
160
+ return i
161
+ end; alias colourize_directory sdir # === colourize_directory tag
162
+
163
+ # ========================================================================= #
164
+ # === sfile
165
+ #
166
+ # We will invoke this only when we have a file.
167
+ # ========================================================================= #
168
+ def sfile(i)
169
+ if use_colours?
170
+ splitted = i.split('/')
171
+ filename = Colours.sfile(splitted.pop) # Must come before dirname, due to .pop().
172
+ dirname = Colours.sdir( rds(splitted.join('/')+'/') )
173
+ unless show_leading_slash?
174
+ dirname = '' # Reset it in this case.
175
+ end
176
+ i = "#{dirname}#{filename}"
177
+ end
178
+ return i
179
+ end; alias colourize_file sfile # === colourize_file()
180
+
181
+ # ========================================================================= #
182
+ # === mediumpurple
183
+ # ========================================================================= #
184
+ def mediumpurple(i)
185
+ return ::Colours.mediumpurple(i) if use_colours?
186
+ return i
187
+ end
188
+
189
+ # ========================================================================= #
190
+ # === rev
191
+ # ========================================================================= #
192
+ def rev
193
+ return "\e[0;37m"
194
+ end
195
+
196
+ end; end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'directory_content/constants/newline.rb'
6
+ # =========================================================================== #
7
+ class DirectoryContent
8
+
9
+ # ========================================================================= #
10
+ # === N
11
+ # ========================================================================= #
12
+ N = "\n"
13
+
14
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'directory_paradise/content/constants.rb'
6
+ # =========================================================================== #
7
+ require 'directory_paradise/base/base.rb'
8
+
9
+ module DirectoryParadise
10
+
11
+ class Content < Base
12
+
13
+ # ========================================================================= #
14
+ # === NAMESPACE
15
+ # ========================================================================= #
16
+ NAMESPACE = inspect
17
+
18
+ # ========================================================================= #
19
+ # === UNKNOWN
20
+ # ========================================================================= #
21
+ UNKNOWN = '(unknown)'
22
+
23
+ end; end