Class: RBT::Action::SedWrapper

Inherits:
RBT::Action show all
Defined in:
lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb

Overview

RBT::Action::SedWrapper

Constant Summary collapse

DEFAULT_SED_COMMAND =
#

DEFAULT_SED_COMMAND

#
"sed -i 's/unsigned short/char16_t/' Source/JavaScriptCore/API/JSStringRef.h Source/WebKit2/Shared/API/c/WKString.h"
SED_COMMAND2 =
#

SED_COMMAND2

#
"sed -i 's/png_\(sizeof\)/\1/g' examples/png2theora.c"
SED_COMMAND3 =
#

SED_COMMAND3

#
"sed -i '/-fforce-mem/d' configure"
REPORT_INPUT_COMMAND =
#

REPORT_INPUT_COMMAND

#
true

Constants inherited from LeanPrototype

LeanPrototype::ALL_COLOUR_METHODS, LeanPrototype::ARRAY_KDE_KONSOLE_COLOURS_IN_USE, LeanPrototype::DAY_NAMES, LeanPrototype::NAMESPACE, LeanPrototype::SILENT_REDIRECTION

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from LeanPrototype

#a_or_an?, #abbreviations?, #absolute_path, #action, #add_to_the_commandline_arguments, #all_binaries?, #all_files_from, #all_libraries?, #allowed_cookbook_entries?, #appdir_location_of?, #append_onto_the_internal_hash, #append_what_into, #archive_type_of?, #available_programs?, #be_quiet?, #be_verbose?, #begins_with_a_comment?, #capitalize_first_alphabetical_character, #cd_to_the_log_directory, #cd_to_the_temp_directory, #change_directory, #change_permission, #cheering_person?, #chmod, #chop_off_archive, #clear_commandline_options, #cliner, #coloured_and_padded_e, #coloured_and_padded_esystem, #coloured_esystem, #colourize_directory_for_system_results, #colourize_this_error, #colourize_this_file_path, #colourize_this_warning, #commandline_arguments?, #commandline_arguments_without_hyphens?, #comment, #convert_dd_mm_yyyy_to_its_long_variant, #convert_env_variable, #copy_directory, #copy_files, #cpr, #create_directory, #current_hour?, #dd_mmm_yyy, #debug, #debug?, #directory_expanded_cookbooks?, #disable_colours, #display_md5sum?, #do_not_debug, #does_the_cookbook_include_this_program?, #does_this_expanded_cookbook_file_exist_for_this_program?, #does_this_file_exist?, #does_this_file_exist_and_is_it_a_file?, #e, #eblue, #ecomment, #ecrimson, #edir, #editor?, #efancy, #eimp, #enable_colours, #enable_debug, #ensure_main_encoding_for, #eparse, #esystem, #esystem_gold, #etomato, #ewarn, #exit_program, #expanded_cookbooks_directory_exists?, #extract_this_archive, #extract_to?, #file_compiled_programs?, #file_dirname_retaining_trailing_slash, #file_predefined_installation_instructions?, #file_specification_of_registered_cookbook_entries, #find_cookbook_alias_for, #find_this_yaml_file, #first_argument?, #first_non_hyphen_argument?, #get_all_directories_from, #get_all_files_from, #get_all_programs, #get_date, #get_extended_date, #get_files_and_directories_from, #go_to_base_dir, #home_dir?, #host_system?, #infer_the_namespace, #internal_hash?, #internal_hash_set_commandline_arguments, #is_an_archive?, #is_directory?, #is_file?, #is_github_url?, #is_make_available?, #is_on_gobolinux?, #is_on_windows?, #is_roebe?, #is_superuser?, #is_symlink?, #is_this_a_header?, #is_this_a_library?, #is_this_program_included?, #iso_encoding?, #load_dataset_from_this_expanded_cookbook, #load_yaml, #load_yaml_file_from_the_cookbook_directory_for_this_program, #log_directory?, #main_encoding?, #meson_build_file_exists?, #months?, #move_file, #n_programs_are_available?, #n_programs_available?, #namespace?, #no_directory_exists_at, #no_opn, #no_such_file_exists, #open_in_browser, #open_in_editor, #opncomment, #opne, #opnef, #opnerev, #opnerror, #opnesystem, #opnewarn, #opnfancy, #opnn, #packages_directory?, #path_to_this_expanded_cookbooks_dataset, #pkgconfig_directory?, #populate_the_internal_hash_with_default_values, #predefined_installation_instructions?, #prepend_this_commandline_argument, #program_version_of?, #project_base_directory?, #project_yaml_directory?, #query_path?, #rarrow?, #read_file, #read_file_in_default_encoding, #read_file_with_default_encoding, #readlines, #readlines_with_proper_encoding, #register_sigint, #registered_cookbook_entries?, #remove, #remove_archive_from_the_end, #remove_comments_from_each_line, #remove_directory, #remove_double_slashes, #remove_file, #remove_newlines, #remove_parens, #remove_symlink, #remove_this_commandline_argument, #remove_this_entry_from_the_commandline_arguments, #remove_trailing_ANSII_escape_code, #remove_unnecessary_data_from_url, #rename, #report_pwd, #require_the_rbt_aliases, #reset_the_internal_hash, #return_all_archives_from_this_directory, #return_appdir_prefix, #return_commandline_arguments_with_leading_hyphens, #return_current_hour_minutes_second, #return_date, #return_day_of_the_month_based_on_utc, #return_full_time, #return_hours_minutes_seconds_based_on_utc, #return_location_to_this_programs_yaml_file, #return_month_based_on_this_number, #return_month_based_on_utc, #return_opnn, #return_program_information, #return_program_name_for_gobolinux_systems, #return_pwd, #return_unicode_warning_symbol_or_empty_string, #return_utc, #return_utc_time_in_a_format_similar_to_slackware, #return_weekday_based_on_utc, #return_year_based_on_utc, #rev, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #set_use_opn, #set_xorg_buffer, #sfancy, #sfile, #silent_redirection?, #silently_create_this_directory_if_it_does_not_yet_exist, #simp, #source_base_directory?, #ssym, #stderr, #store_into_this_directory?, #string_right_arrow?, #swarn, #symlink, #sysbin_directory?, #sysetc_directory?, #sysinclude_directory?, #syslib_directory?, #sysshare_directory?, #system_directory?, #temp_directory?, #to_bool, #to_camelcase, #to_iso_encoding, #to_unicode, #today?, #touch, #try_to_require_beautiful_url, #try_to_require_the_environment_information_gem, #try_to_require_the_extracter_gem, #try_to_require_the_open_gem, #try_to_require_the_xorg_buffer, #try_to_require_wget, #try_to_return_a_special_compile_component, #unicode_cliner, #unicode_middle_cliner, #use_colours=, #use_colours?, #use_opn=, #use_opn?, #utf_encoding?, #verbose_truth, #word_wrap, #write_what_into, #write_what_into_via_unicode, #yes_or_no

Constructor Details

#initialize(i = DEFAULT_SED_COMMAND, run_already = true) ⇒ SedWrapper

#

initialize

#


56
57
58
59
60
61
62
63
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 56

def initialize(
    i           = DEFAULT_SED_COMMAND,
    run_already = true
  )
  reset
  set_input(i)
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::Action::SedWrapper[]

#


224
225
226
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 224

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

Instance Method Details

#batch_modify_the_filesObject

#

batch_modify_the_files

#


173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 173

def batch_modify_the_files
  what = ''.dup # String to store.
  @input.delete!("'")
  if @input.start_with?('s/')
    @input[0,1] = ''
  end
  splitted     = @input.split('/').reject(&:empty?) # @input must obviously have a '/' character.
  replace_this = splitted.first
  with_that    = splitted[1]
  case with_that
  when 'd'
    # ===================================================================== #
    # This will be assumed to mean 'delete' but only in certain cases.
    # ===================================================================== #
    if @input.count('/') < 3
      with_that = '' # Chop it off in this case.
    end
  end
  work_on_these_files.each {|this_file|
    opne "#{rev}Working on the file `#{sfile(this_file)}`."
    try_to_read_in_this_file(this_file) # <- This sets @dataset again.
    if @dataset
      @dataset.each {|line|
        if line.include? replace_this
          line.gsub!(/#{replace_this}/, with_that)
        end
        # ================================================================= #
        # Do the substitute-action here.
        # ================================================================= #
        what << line
      }
      opne 'Storing into the file `'+sfile(this_file)+'` now. '\
           '(Substitution on: '+sfancy(replace_this)+'; '\
           'Replacement on: '+sfancy(with_that)+')'
      save_what_into(what, this_file)
      what = '' # Reset again.
    end
  }
end

#determine_on_which_files_to_workObject

#

determine_on_which_files_to_work

#


125
126
127
128
129
130
131
132
133
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 125

def determine_on_which_files_to_work
  _ = @input # Grab a copy of the remaining input first.
  if _.include? "'"
    rindex = _.rindex "'"
    string_for_files = _[(rindex+1)..-1]
    set_work_on_these_files string_for_files.strip.split(' ').map(&:chomp)
    @input = _[0..rindex]
  end
end

#input?Boolean

#

input?

#

Returns:

  • (Boolean)


118
119
120
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 118

def input?
  @input
end

#resetObject

#

reset (reset tag)

#


68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 68

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === :work_on_these_files
  # ======================================================================= #
  @internal_hash[:work_on_these_files] = []
  # ======================================================================= #
  # === @dataset
  # ======================================================================= #
  @dataset = nil
end

#runObject

#

run (run tag)

#


216
217
218
219
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 216

def run
  determine_on_which_files_to_work
  batch_modify_the_files
end

#sanitize_inputObject

#

sanitize_input

#


109
110
111
112
113
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 109

def sanitize_input
  if @input.start_with? 'sed -i'
    @input.sub!(/^sed -i /,'')
  end
end

#set_input(i = DEFAULT_SED_COMMAND) ⇒ Object

#

set_input

#


84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 84

def set_input(
    i = DEFAULT_SED_COMMAND
  )
  i = i.first if i.is_a? Array
  i = DEFAULT_SED_COMMAND if i.nil?
  i = i.to_s.dup
  case i # case tag
  when 'sed2','s2','2'
    i = SED_COMMAND2
  when 'sed3','s3','3'
    i = SED_COMMAND3
  end
  @input = i
  if REPORT_INPUT_COMMAND
    opne "#{rev}The sed command used will be:"
    e
    e "  #{sfancy(i)}"
    e
  end
  sanitize_input
end

#set_work_on_these_files(i) ⇒ Object

#

set_work_on_these_files

It is better to store the absolute path towards the file at hand.

#


140
141
142
143
144
145
146
147
148
149
150
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 140

def set_work_on_these_files(i)
  unless i.is_a? Array
    i = [i]
  end
  if i.is_a? Array
    i.map! {|entry|
      File.absolute_path(entry)
    }
  end
  @internal_hash[:work_on_these_files] = i
end

#try_to_read_in_this_file(i = target_file?) ) ⇒ Object

#

try_to_read_in_this_file

#


164
165
166
167
168
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 164

def try_to_read_in_this_file(i = target_file?)
  if File.exist? i
    @dataset = File.readlines(i)
  end
end

#work_on_these_files?Boolean Also known as: target_file?, work_on_these_files, these_files?

#

work_on_these_files?

#

Returns:

  • (Boolean)


155
156
157
# File 'lib/rbt/actions/individual_actions/sed_wrapper/sed_wrapper.rb', line 155

def work_on_these_files?
  @internal_hash[:work_on_these_files]
end