Class: Roebe::AlphabeticalSorter

Inherits:
Base show all
Defined in:
lib/roebe/classes/alphabetical_sorter.rb

Overview

Roebe::AlphabeticalSorter

Constant Summary collapse

ALPHABET =
#

ALPHABET

#
('a' .. 'z').to_a

Constants inherited from Base

Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE

Class Method Summary collapse

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, #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, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #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, #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

Methods included from Base::CommandlineArguments

#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

#initialize(commandline_arguments = ARGV, run_already = true) ⇒ AlphabeticalSorter

#

initialize

#


32
33
34
35
36
37
38
39
40
41
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 32

def initialize(
    commandline_arguments = ARGV,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

Roebe::AlphabeticalSorter[]

#


205
206
207
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 205

def self.[](i = ARGV)
  new(i)
end

Instance Method Details

#append(i) ⇒ Object

#

append

#


102
103
104
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 102

def append(i)
  append_onto_the_dataset("#{i}\n")
end

#append_onto_the_dataset(i) ⇒ Object

#

append_onto_the_dataset

#


95
96
97
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 95

def append_onto_the_dataset(i)
  @result << i
end

#append_this_subset(current_character) ⇒ Object

#

append_this_subset

#


137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 137

def append_this_subset(
    current_character
  )
  current_character.downcase!
  if @hash_containing_all_arrays_that_have_to_be_sorted[current_character]
    @hash_containing_all_arrays_that_have_to_be_sorted[current_character].each_pair {|key, value|
      append(
        key.ljust(30)+": #{value}"
      )
    }
  end
end

#obtain_the_dataset(i = first? ) ⇒ Object

#

obtain_the_dataset

#


86
87
88
89
90
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 86

def obtain_the_dataset(
    i = first?
  )
  @dataset = default_readlines(i) if i
end

#process_the_datasetObject

#

process_the_dataset

#


153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 153

def process_the_dataset
  # ======================================================================= #
  # First we have to populate
  # @hash_containing_all_arrays_that_have_to_be_sorted
  # ======================================================================= #
  @dataset.each {|line|
    next if line.start_with?('#') or line.strip.empty?
    first_char = line[0,1]
    splitted = line.split(':').map {|inner_entry| inner_entry.strip }
    first = splitted.first
    last  = splitted.last
    unless @hash_containing_all_arrays_that_have_to_be_sorted[first_char]
      @hash_containing_all_arrays_that_have_to_be_sorted[first_char] = {}
    end
    @hash_containing_all_arrays_that_have_to_be_sorted[first_char][first] = last
  }
  # ======================================================================= #
  # Now the above main Hash is properly sorted.
  # ======================================================================= #
  sort_based_on_the_alphabet
  use_this_regex = /# === ([a-z]{1}) tig/i
  @dataset.each {|line|
    if line.start_with?('#') or line.to_s.strip.empty?
      # Check for entries such as 's tig' next:
      if line.include?('tig')
        line =~ use_this_regex
        @current_character = $1.to_s.dup
        append_onto_the_dataset(line)
        append('# '+('='*75)+' #')
        append_this_subset(@current_character)
        append('')
      else
        append_onto_the_dataset(line)
      end
    else
    end
  }
end

#resetObject

#

reset (reset tag)

#


46
47
48
49
50
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 46

def reset
  super()
  infer_the_namespace
  reset_the_class
end

#reset_the_classObject

#

reset_the_class

#


55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 55

def reset_the_class
  # ======================================================================= #
  # === @dataset
  # ======================================================================= #
  @dataset = nil
  # ======================================================================= #
  # === @result
  # ======================================================================= #
  reset_the_result
  # ======================================================================= #
  # === @current_character
  #
  # This variable keeps track as to which is the current start letter.
  # ======================================================================= #
  @current_character = nil
  # ======================================================================= #
  # === @hash_containing_all_arrays_that_have_to_be_sorted
  # ======================================================================= #
  @hash_containing_all_arrays_that_have_to_be_sorted = {}
end

#reset_the_resultObject

#

reset_the_result

#


79
80
81
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 79

def reset_the_result
  @result = ''.dup
end

#runObject

#

run (run tag)

#


195
196
197
198
199
200
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 195

def run
  reset_the_result
  obtain_the_dataset # (1) We obtain the data from the target file.
  process_the_dataset
  store_the_result
end

#sort_based_on_the_alphabetObject

#

sort_based_on_the_alphabet

#


109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 109

def sort_based_on_the_alphabet
  ALPHABET.each {|this_character|
    _ = @hash_containing_all_arrays_that_have_to_be_sorted[this_character]
    if _ # To handle non-existing keys.
      sorted_keys = _.keys.sort
      new_hash = {}
      sorted_keys.each {|this_key|
        new_hash[this_key] = @hash_containing_all_arrays_that_have_to_be_sorted[this_character][this_key]
      }
      @hash_containing_all_arrays_that_have_to_be_sorted[this_character] = new_hash
    end
  }
end

#store_the_result(what = @result, into = 'sorted_result.md') ⇒ Object

#

store_the_result

#


126
127
128
129
130
131
132
# File 'lib/roebe/classes/alphabetical_sorter.rb', line 126

def store_the_result(
    what = @result,
    into = 'sorted_result.md'
  )
  e "Storing into #{sfile(into)}."
  write_what_into(what, into)
end