Class: Roebe::PrependThisStringToEveryLineOfThisFile

Inherits:
Base
  • Object
show all
Defined in:
lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb

Overview

Roebe::PrependThisStringToEveryLineOfThisFile

Constant Summary

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, #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_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?

Constructor Details

#initialize(commandline_arguments = nil, run_already = true) ⇒ PrependThisStringToEveryLineOfThisFile

#

initialize

#


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

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

Class Method Details

.[](i = '') ⇒ Object

#

[]

#


189
190
191
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 189

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

Instance Method Details

#commandline_arguments?Boolean

#

commandline_arguments?

#

Returns:

  • (Boolean)


98
99
100
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 98

def commandline_arguments?
  @commandline_arguments
end

#create_a_backup_of_this_file(i) ⇒ Object

#

create_a_backup_of_this_file

#


176
177
178
179
180
181
182
183
184
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 176

def create_a_backup_of_this_file(i)
  if File.exist? i
    store_at_this_directory = "#{log_dir?}backup_of_files/"
    new_target = store_at_this_directory+File.basename(i)
    mkdir(store_at_this_directory) unless File.directory? store_at_this_directory
    opne "Storing a backup of `#{sfile(i)}` towards"
    opne "`#{sfile(new_target)}`."
  end
end

#do_modify_the_filesObject

#

do_modify_the_files

#


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
163
164
165
166
167
168
169
170
171
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 122

def do_modify_the_files
  if @files.empty?
    opne 'No files to modify given as input.'
  else
    # ===================================================================== #
    # Get a handle over the String that we wish to prepend.
    # ===================================================================== #
    prepend_this_string = string?
    @files.each {|this_file|
      if @create_a_backup_file
        create_a_backup_of_this_file(this_file)
      end
      original_dataset = readlines_with_proper_encoding(this_file)
      modified_dataset = original_dataset.map {|line|
        # ================================================================= #
        # We will prepend the line next, but only if it does NOT yet start
        # with the same string. This behaviour is determined via an
        # instance variable.
        # ================================================================= #
        if @do_not_modify_if_the_substring_is_already_prepended and
          line.start_with?(prepend_this_string)
          # =============================================================== #
          # In this case do not modify the string, since the substring
          # is already there.
          # =============================================================== #
        else
          # =============================================================== #
          # else do modify it - but we will also respect other settings
          # of the behaviour.
          # =============================================================== #
          if @ignore_empty_lines and line.strip.empty?
          else
            if @ignore_lines_with_a_leading_comment and line.start_with?('#')
            else
              line.prepend(prepend_this_string)
            end
          end
        end 
        line
      }
      # =================================================================== #
      # Finally we have to modify the file.
      # =================================================================== #
      opne "Modifying the file `#{sfile(this_file)}` next."
      what = modified_dataset.join
      into = this_file
      write_what_into(what, into)
    }
  end
end

#prepend_this_string?Boolean Also known as: string?

#

prepend_this_string?

#

Returns:

  • (Boolean)


83
84
85
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 83

def prepend_this_string?
  @prepend_this_string
end

#resetObject

#

reset (reset tag)

#


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 48

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # If the next variable is set to true then a backup file will be
  # created before we will modify the file at hand.
  # ======================================================================= #
  @create_a_backup_file = true
  @do_not_modify_if_the_substring_is_already_prepended = true
  # ======================================================================= #
  # The next variable will ignore empty lines, e. g. lines that
  # are only a "\n" or only have ' ' tokens.
  # ======================================================================= #
  @ignore_empty_lines = true
  # ======================================================================= #
  # The next variable will ignore lines that start with a '#' character.
  # ======================================================================= #
  @ignore_lines_with_a_leading_comment = true
  # ======================================================================= #
  # The following variable keeps track as to which String will be
  # prepended to every line of a given file.
  # ======================================================================= #
  set_prepend_this_string('- ')
end

#runObject

#

run (run tag)

#


114
115
116
117
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 114

def run
  select_files_from_the_commandline_arguments
  do_modify_the_files
end

#select_files_from_the_commandline_argumentsObject

#

select_files_from_the_commandline_arguments

#


105
106
107
108
109
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 105

def select_files_from_the_commandline_arguments
  @files = @commandline_arguments.select {|entry|
    File.file? entry # This also implies a File.exist? check.
  }
end

#set_commandline_arguments(i = '') ⇒ Object

#

set_input

#


90
91
92
93
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 90

def set_commandline_arguments(i = '')
  i = [i].flatten.compact
  @commandline_arguments = i
end

#set_prepend_this_string(i = '- ') ⇒ Object

#

set_prepend_this_string

#


76
77
78
# File 'lib/roebe/classes/prepend_this_string_to_every_line_of_this_file.rb', line 76

def set_prepend_this_string(i = '- ')
  @prepend_this_string = i.dup
end