Class: Roebe::TodoSanitizer

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

Overview

Roebe::TodoSanitizer

Constant Summary collapse

HORIZONTAL_LINER =
#

HORIZONTAL_LINER

#
('-'*80)+"\n"
OVERWRITE_THE_ORIGINAL_FILE =
#

OVERWRITE_THE_ORIGINAL_FILE

#
true

Constants inherited from Base

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

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

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(i = ARGV, run_already = true) ⇒ TodoSanitizer

#

initialize

#


35
36
37
38
39
40
41
42
# File 'lib/roebe/classes/todo_sanitizer.rb', line 35

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

Instance Method Details

#obtain_the_dataset_from_the_selected_todo_filesObject

#

obtain_the_dataset_from_the_selected_todo_files

#


74
75
76
77
78
79
80
# File 'lib/roebe/classes/todo_sanitizer.rb', line 74

def obtain_the_dataset_from_the_selected_todo_files
  commandline_arguments?.each {|this_file|
    if this_file and File.exist?(this_file)
      @hash_dataset[this_file] = File.read(this_file)
    end
  }
end

#process_the_datasetObject

#

process_the_dataset

#


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/roebe/classes/todo_sanitizer.rb', line 85

def process_the_dataset
  @hash_dataset.each_pair {|name_of_the_file, content_of_the_file|
    if content_of_the_file.include?('->') and
       shall_we_replace_ASCII_arrows_with_unicode_arrows?
      content_of_the_file.gsub!(/->/,'')
    end
    splitted = content_of_the_file.split("\n")
    array = []
    splitted.each {|line|
      next if line.strip.empty?
      if line.strip.start_with?('---')
        @subsections << array
        array = []
      else
        array << line.strip
      end
    }
    unless array.empty?
      @subsections << array
    end
  }
end

#resetObject

#

reset (reset tag)

#


47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/roebe/classes/todo_sanitizer.rb', line 47

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @hash_dataset
  # ======================================================================= #
  @hash_dataset = {}
  # ======================================================================= #
  # === @subsections
  # ======================================================================= #
  @subsections = []
  # ======================================================================= #
  # === @shall_we_replace_ASCII_arrows_with_unicode_arrows
  # ======================================================================= #
  @shall_we_replace_ASCII_arrows_with_unicode_arrows = :yes
end

#runObject

#

run

#


111
112
113
114
115
# File 'lib/roebe/classes/todo_sanitizer.rb', line 111

def run
  obtain_the_dataset_from_the_selected_todo_files
  process_the_dataset
  store_the_subsections_into_a_new_file
end

#shall_we_replace_ASCII_arrows_with_unicode_arrows?Boolean

#

shall_we_replace_ASCII_arrows_with_unicode_arrows?

#

Returns:

  • (Boolean)


67
68
69
# File 'lib/roebe/classes/todo_sanitizer.rb', line 67

def shall_we_replace_ASCII_arrows_with_unicode_arrows?
  (@shall_we_replace_ASCII_arrows_with_unicode_arrows == :yes)
end

#store_the_subsections_into_a_new_fileObject

#

store_the_subsections_into_a_new_file

#


120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/roebe/classes/todo_sanitizer.rb', line 120

def store_the_subsections_into_a_new_file
  _ = ''.dup
  # ======================================================================= #
  # Check for comment-headers first:
  # ======================================================================= #
  first_entry = @subsections.first
  if first_entry and first_entry.first and first_entry.first.start_with?('#')
    _ << @subsections.shift.join("\n")+"\n\n"
  end
  @subsections.reject {|entry| entry.empty? }.each_with_index {|content, index| index += 1
    if content.is_a? Array
      content = content.map {|line|
        if line.strip.start_with? '#'
          # Do nothing.
        else
          line = "      #{line}"
        end
        line
      }.compact.join("\n")
      # Now it is a string.
      leader = "(#{index.to_s}) → "
      content.lstrip!
      if content.start_with?('- ')
        content[0, 2] = '' # Chop off leading '- ' characters.
      end
      content.sub!( # See: https://rubular.com/r/bbYitRNyn1bqAn
        /\(\d{1,3}\) (→|-)? ?/,''
      )
      content.prepend(leader)
      content.prepend(
        HORIZONTAL_LINER
      )
    end
    _ << "#{content}\n"
  }
  _ << HORIZONTAL_LINER
  into = '/Depot/j/test.md'
  if OVERWRITE_THE_ORIGINAL_FILE
    into = @hash_dataset.keys.first.to_s
  end
  opne "Storing into `#{sfile(into)}`."
  write_what_into(_, into)
end