Class: RBT::FeedbackInformation

Inherits:
Base show all
Defined in:
lib/rbt/utility_scripts/feedback_information.rb

Overview

RBT::FeedbackInformation

Constant Summary collapse

HTML_FILE =
#

HTML_FILE

#
"#{RBT.temp_dir?}Information/URLs.html"
DEFAULT_PROGRAM =
#

DEFAULT_PROGRAM

#
'php'
BR =
'<br>'

Constants inherited from LeanPrototype

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

Instance Method Summary collapse

Methods inherited from Base

#cat, #cd_back_to_the_current_working_directory, #consider_reporting_how_many_programs_are_registered, #cookbook_files?, #copy_recursively, #delete_code_of_conduct?, #determine_appdir_prefix_from_this_input, #directory_validation?, #do_not_show_names, #fast_return_file_size_of_this_program, #file_last_symlinked_program?, #file_programs_version_url, #gem_version, #is_a_64bit_system?, #is_ccache_available?, #is_porg_available?, #is_this_binary_registered?, #is_this_program_included?, #make_command?, #make_install_command?, #new_cookbook_instance_for, #program_exists?, #publish_list_of_all_programs_version, #rcp, registered_binaries?, #remove_symlink, #rename_kde_konsole_tab, #repackage, #report_n_programs, #report_working_directory, #return_compile_time_statistics, #return_n_random_characters, #return_version_of_this_program, #run_make_then_make_install, #sanitize_url1_entry, #set_source_directory, #show_overview_over_available_utility_scripts, #symlink_all_files_from_this_directory_to_that_directory, #system_tags?, #upload_list_of_all_programs_version, #use_yaml_database_for_tags?, #warn_and_exit, #wget

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_arguments, #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_meson_installed?, #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_directory_was_found_at, #no_opn, #no_such_file_exists, #open_in_browser, #open_in_editor, #opncomment, #opne, #opnef, #opnerev, #opnerror, #opnesystem, #opnewarn, #opnfancy, #opnn, #otomato, #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_the_first_commandline_argument, #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_name, #return_program_name_for_gobolinux_systems, #return_program_name_via_program_information, #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, #rpn, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #set_use_colours, #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 = nil, run_already = true) ⇒ FeedbackInformation

#

initialize

#


55
56
57
58
59
60
61
62
# File 'lib/rbt/utility_scripts/feedback_information.rb', line 55

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

Instance Method Details

#create_html_page(hash_result) ⇒ Object

#

create_html_page (html tag)

This method will create a new HTML info page.

It expects a hash as input.

Pass a hash with arrays to create a HTML Info page.

Valid input i.e. the hash_result would be something like this:

{
  "zebra"=>"http://www.zebra.org/",
  "zee"=>"http://sourceforge.net/projects/zee/"
}
#


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
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/rbt/utility_scripts/feedback_information.rb', line 175

def create_html_page(hash_result)
  require 'rbt/requires/require_the_cookbook_class.rb'
  # ======================================================================= #
  # Start to create the HTML page next.
  # ======================================================================= #
  result = ''.dup
  result << Cyberweb.return_strict_doctype
  result << Cyberweb.return_html_start
  result << Cyberweb.return_head_start
  hash_result.each_pair { |key, url| # key is i.e. php
    basename = File.basename(key).
               delete_suffix('.gz').
               delete_suffix('.tar').
               delete_suffix('.bz2')
    result << '<b style="font-size:2em;">'+basename+'</b>:<br>'
    result << '<p style="font-size:1.05em; padding-left:2.2em;text-indent:0.22em">'
    # Get description of the program in question next:
    # ===================================================================== #
    _ = action(:SanitizeCookbook, key) { :fast }
    description = _.desc?
    result << string_s(
      '<b style="color:darkgreen;text-decoration:underline">Description:</b><br><br>'
    )
    result << '</p>'
    begin
      result << '<p style="margin-top:5px; font-size:1.05em; padding-left:2.2em; text-indent:1.5em">'
      if description
        result << description.gsub(/\n/,'<br>').delete('"')
      else
        opnwarn "No description entry for `#{key}`."
      end
      result << '</p>'
    rescue ArgumentError
      opne 'ArgumentError happened for `'+key+'`: byte-error in wrong encoding'
    end
    # ===================================================================== #
    # Next, we will build-up the URLs.
    # ===================================================================== #
    result << BR+string_s( '<b style="color:darkblue"># URL(s) for '+basename+': </b>' )
    result << BR
    if url.is_a? Array
      url = url.join
    end
    result << string_s('wget <a href="'+url+'">'+url+'</a>',
                :css_style => 'margin-left:2em'
              )
    result << N << BR
    result << '</p>'
  }
  result << Cyberweb.return_html_fin
  ensure_that_target_directory_exists
  # ======================================================================= #
  # Last but not least, write this into a html page
  # ======================================================================= #
  remove_file(HTML_FILE)
  write_what_into(result, HTML_FILE)
  opne 'A HTML file was created at:'
  efile "  #{HTML_FILE}"
end

#ensure_that_target_directory_existsObject

#

ensure_that_target_directory_exists

#


153
154
155
156
# File 'lib/rbt/utility_scripts/feedback_information.rb', line 153

def ensure_that_target_directory_exists
  _ = File.dirname(HTML_FILE)
  mkdir(_) unless Dir.exist? _
end

#feedback_url(i) ⇒ Object

#

feedback_url

Only report a match if we include it.

#


137
138
139
# File 'lib/rbt/utility_scripts/feedback_information.rb', line 137

def feedback_url(i)
  RBT.find_url_for(i)
end

#resetObject

#

reset (reset tag)

#


67
68
69
70
# File 'lib/rbt/utility_scripts/feedback_information.rb', line 67

def reset
  super()
  infer_the_namespace
end

#runObject

#

run (run tag)

#


238
239
240
# File 'lib/rbt/utility_scripts/feedback_information.rb', line 238

def run
  run_on_every_program
end

#run_on_every_program(this_program = DEFAULT_PROGRAM) ⇒ Object

#

run_on_every_program

This will walk over each program given and report the URL.

Obviously, this may take a long time.

#


113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/rbt/utility_scripts/feedback_information.rb', line 113

def run_on_every_program(
    this_program = DEFAULT_PROGRAM
  )
  this_program = DEFAULT_PROGRAM if this_program.nil?
  opne 'Feedback information about these programs next: '
  e @input.join(',  ')
  hash_result = {}
  @input.each { |program|
    program = program.strip # remove whitespace first
    program.downcase!
    padded_program = ('`'+sfancy(program)+'`').ljust(38)
    opne 'Fetching URL(s) for '+padded_program+' and '\
         'adding it to the main hash.'
    _ = feedback_url(program)
    hash_result[program] = _
  }
  create_html_page(hash_result) # We pass our hash to it.
end

#set_input(i = 'all') ⇒ Object

#

set_input

#


75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/rbt/utility_scripts/feedback_information.rb', line 75

def set_input(
    i = 'all'
  )
  # ======================================================================= #
  # For now, if the input is an Array, we will just grab the first entry.
  # ======================================================================= #
  i = i.first if i.is_a? Array
  i = i.to_s.dup if i
  # ======================================================================= #
  # Convert to Array if first argument is of String type.
  # We assume they will be delineated by a ',' in this case though.
  # ======================================================================= #
  i = i.split(',') if i.is_a? String
  if i.is_a? Array
    i.map! {|entry|
      case entry
      when 'all','everything' # Shortcuts to assign ALL program names.
        entry = available_programs?
      end
      entry
    }
    i.flatten!
  end
  case i.to_s # And also for Strings.
  when 'all','everything' # Shortcuts to assign ALL program names.
    i = available_programs?
  end
  i = i.sort
  @input = i
end

#string_s(i = '', hash = {}) ⇒ Object

#

string_s

#


144
145
146
147
148
# File 'lib/rbt/utility_scripts/feedback_information.rb', line 144

def string_s(
    i = '', hash = {}
  )
  HtmlTags.span(i, hash)
end