Class: Roebe::FindDuplicateEntriesInAliasFile
- Inherits:
-
Base
- Object
- Base
- Roebe::FindDuplicateEntriesInAliasFile
show all
- Defined in:
- lib/roebe/classes/find_duplicate_entries_in_alias_file.rb
Overview
Roebe::FindDuplicateEntriesInAliasFile
Constant Summary
collapse
- BASE_DIR =
File.absolute_path(
Roebe.project_base_directory?+'../rcfiles/yaml/'
)+'/'
- ARRAY =
%w(
cd_aliases.yml
aliases.yml
programs_aliases.yml
)
Constants inherited
from Base
Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE
Class Method Summary
collapse
-
.[](i = ARGV) ⇒ Object
# === Roebe::FindDuplicateEntriesInAliasFile ========================================================================= #.
Instance Method Summary
collapse
Methods inherited from Base
#actions, #append_this_onto_that_file, #append_what_into, #be_silent, #be_verbose?, #beautiful_url, #burlywood, #call_next, #chdir, #cheerful_guy, #cliner, #complex_esystem, #convert_global_env, #copy_directory, #copy_file, #cornflowerblue, #create_directory, #crimson, #current_month?, #current_time?, #current_year?, #cyan, #darkcyan, #darkgreen, #darkkhaki, #darkslateblue, #deeppink, #delete_symlink, #do_not_use_the_base_colours, #do_use_the_base_colours, #e, #ecomment, #editor_to_use?, #efancy, #eimp, #emphasis, #ensure_main_encoding, #ensure_utf_encoding, #eparse, #erev, #esteelblue, #etomato, #ewarn, #exit_program, #firebrick, #get_current_day, #get_current_month, #get_files_and_directories, #get_files_from, #get_german_name_for_this_weekday, #gold, #green, #grey, #hh_mm_ss, #hh_mm_ss_day_month_year, #home_dir?, #home_directory_of_user_x?, #infer_the_namespace, #internal_hash?, #is_a_directory?, #is_a_file?, #is_a_jpg_file?, #is_an_image_file?, #is_archive?, #is_audio_file?, #is_in_studium_dir?, #is_multimedia_file?, #is_on_roebe?, #is_on_windows?, #is_studium_available?, #is_symlink?, #is_this_a_ruby_file?, #is_video_file?, #iso_encoding?, #le, #left_colour, #lightblue, #lightgreen, #lightseagreen, #lightsteelblue, #lime, #limegreen, #localhost_to_data, #log_directory?, #main_encoding?, #mediumorchid, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mkdir_p, #mv, #n_days_in_this_month, #n_pages_in_this_pdf_file?, #namespace?, #no_file_exists_at, #ogrey, #olive, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #orev, #palegoldenrod, #palevioletred, #pink, #powderblue, #programs_dir?, #project_base_dir?, #random_html_colour, #rds, #read_file_in_iso_encoding, #read_file_via_the_default_encoding, #read_lines_via_iso_encoding, #readlines_with_main_encoding, #red, #register_sigint, #remove, #remove_directory, #remove_file, #rename_kde_konsole_tab, #replace_localhost_with_data, #report_pwd, #require_rescue, #reset_the_internal_hash, #return_all_directories_from_this_directory, #return_all_files_from_this_directory, #return_current_directory, #return_dd_mm_yyyy, #return_file_or_directory_of, #return_files_from_pwd, #return_last_part_of_the_current_directory, #return_utc, #rev, #right_arrow?, #right_colour, #roebe_log_directory?, #rosybrown, #royalblue, #ruby_base_directory?, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #show_help, #silent_redirection?, #simp, #simple_esystem, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #string_italic, #swarn, #symlink, #teal, #temp_dir?, #to_camelcase, #to_counted_hash, #tomato, #touch, #try_to_require_the_beautiful_url_gem, #try_to_require_the_html_template, #try_to_require_the_open_gem, #try_to_require_the_program_information_gem, #try_to_require_the_xorg_buffer, #use_colours?, #verbose_truth, #weekday?, #word_wrap, #write_what_into, #yellow
#append_onto_the_commandline_arguments, #clear_commandline_arguments, #commandline_arguments?, #commandline_arguments_as_string?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_argument_without_leading_hyphens?, #has_an_argument_been_passed?, #remove_hyphened_arguments_from_the_commandline_arguments, #return_commandline_arguments_with_leading_hyphens, #second_argument?, #set_commandline_arguments
Constructor Details
41
42
43
44
45
46
47
48
|
# File 'lib/roebe/classes/find_duplicate_entries_in_alias_file.rb', line 41
def initialize(
i = ARGV,
run_already = true
)
reset
set_commandline_arguments(i)
run if run_already
end
|
Class Method Details
.[](i = ARGV) ⇒ Object
#
Roebe::FindDuplicateEntriesInAliasFile
#
174
175
176
|
# File 'lib/roebe/classes/find_duplicate_entries_in_alias_file.rb', line 174
def self.[](i = ARGV)
new(i, :be_silent)
end
|
Instance Method Details
#add_to_duplicates(i, use_this_symbol_key = :cd_aliases) ⇒ Object
Also known as:
add
#
add_to_duplicates (add tag)
#
88
89
90
91
92
93
94
|
# File 'lib/roebe/classes/find_duplicate_entries_in_alias_file.rb', line 88
def add_to_duplicates(
i,
use_this_symbol_key = :cd_aliases
)
@duplicates[use_this_symbol_key] << i
@duplicates[use_this_symbol_key].flatten!
end
|
#base_dir? ⇒ Boolean
70
71
72
73
74
75
76
|
# File 'lib/roebe/classes/find_duplicate_entries_in_alias_file.rb', line 70
def base_dir?
if is_on_roebe?
BASE_DIR
else
"#{ruby_base_directory?}rcfiles/yaml/"
end
end
|
#duplicates? ⇒ Boolean
81
82
83
|
# File 'lib/roebe/classes/find_duplicate_entries_in_alias_file.rb', line 81
def duplicates?
@duplicates
end
|
#process_main_arrays ⇒ Object
#
process_main_arrays
We iterate over our main Arrays here.
Note that we can not use YAML.load_file() as it would overload existing keys.
#
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
# File 'lib/roebe/classes/find_duplicate_entries_in_alias_file.rb', line 104
def process_main_arrays
ARRAY.each {|entry|
symbol_key = entry.to_s.delete_suffix('.yml').to_sym
entry = base_dir?+entry
opne "Now checking the file at `#{sfile(entry)}`."
dataset = default_readlines(entry).
reject {|line| line.start_with? '#' }.
reject {|line| !line.include? ':' }.
reject {|line| line == N }
keys = dataset
opne "It has #{simp(keys.size.to_s)} entries."
original_size = keys.size
uniq_size = keys.uniq.size
unless (original_size == uniq_size)
opne 'This file '+tomato(
'contains '+(original_size - uniq_size).to_s+' duplicates')+'. '\
'Proceeding to determine which duplicates exist ...'
selection = dataset.select { |inner_entry|
dataset.count(inner_entry) > 1
}.uniq
add_to_duplicates(
selection,
symbol_key
)
report_duplicates
else
opne mediumslateblue('Excellent! This file has no duplicate entries. \o/')
end
}
end
|
#report_duplicates ⇒ Object
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
# File 'lib/roebe/classes/find_duplicate_entries_in_alias_file.rb', line 154
def report_duplicates
_ = duplicates?
unless _.empty?
opne 'We found the following '+tomato(_.keys.size.to_s)+' duplicates:'
unless _.empty?
_.each_pair {|key, value|
unless value.empty?
opne 'For the key '+steelblue(key.to_s)+':'
value.each {|entry|
e " #{steelblue(entry.strip)}"
}
end
}
end
end
end
|
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/roebe/classes/find_duplicate_entries_in_alias_file.rb', line 53
def reset
super()
infer_the_namespace
@duplicates = {}
@duplicates[:cd_aliases] = []
@duplicates[:aliases] = []
@duplicates[:programs_aliases] = []
end
|
147
148
149
|
# File 'lib/roebe/classes/find_duplicate_entries_in_alias_file.rb', line 147
def run
process_main_arrays
end
|