Class: Roebe::AvailableClasses

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

Overview

Roebe::AvailableClasses

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

Constructor Details

#initialize(i = nil, run_already = true) ⇒ AvailableClasses

#

initialize

#


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

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

Class Method Details

.[](i = '') ⇒ Object

#

Roebe::AvailableClasses[]

#


202
203
204
# File 'lib/roebe/classes/available_classes.rb', line 202

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

Instance Method Details

#be_succinctObject

#

be_succinct

#


57
58
59
# File 'lib/roebe/classes/available_classes.rb', line 57

def be_succinct
  @report_style = :succinct
end
#

menu (menu tag)

#


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
# File 'lib/roebe/classes/available_classes.rb', line 122

def menu(
    i = @commandline_arguments
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i # case tag
    # ===================================================================== #
    # === help
    # ===================================================================== #
    when /help/
      show_help
    else
      if File.directory? i
        set_use_this_directory i
      elsif File.directory?(RUBY_SRC+i)
        # ================================================================= #
        # On my home system then.
        # ================================================================= #
        be_succinct
        set_use_this_directory RUBY_SRC+i
      end
    end
  end
end

#report_these_results(i) ⇒ Object Also known as: report

#

report_these_results (report tag)

#


99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/roebe/classes/available_classes.rb', line 99

def report_these_results(i)
  if succinct?
    # ===================================================================== #
    # In this case we will only display a single line.
    # ===================================================================== #
    e 'This project appears to have '+slateblue(i.size.to_s)+
      ' unique classes.'
  else
    if i.is_a? Array
      e
      e 'The following '+sfancy(i.size.to_s)+' classes were found:'
      e
      i.each {|entry|
        e "  #{slategray(entry)}"
      }
      e
    end
  end
end

#resetObject

#

reset (reset tag)

#


44
45
46
47
48
49
50
51
52
# File 'lib/roebe/classes/available_classes.rb', line 44

def reset
  super()
  set_scan_from_this_directory # Set to a default value.
  # ======================================================================= #
  # The @report_style can be either :verbose or :succinct. If :succinct
  # we will only display a single line.
  # ======================================================================= #
  @report_style = :verbose
end

#runObject

#

run (run tag)

#


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
191
192
193
194
195
196
197
# File 'lib/roebe/classes/available_classes.rb', line 160

def run
  menu
  all_ruby_files = Dir[@scan_from_this_directory+'**/**.rb']
  huge_array = []
  all_ruby_files.each {|full_path|
    huge_array << File.readlines(full_path)
    huge_array.flatten!
  }
  selection = huge_array.select {|line|
    line =~ /class/ and !line.strip.start_with?('#') # Exclude comments.
  }
  selection.map! {|line|
    regex_to_use = /(class [A-Z].+)/ # We use this regex here, see:
    line =~ regex_to_use
    result = $1.to_s.dup.strip
    if result.include? '<'
      result = result[0 .. (result.index('<')-2)]
    end
    if result.include? '#'
      result = result[0 .. (result.index('#')-2)]
    end
    if result.count(' ') > 1
      splitted = result.split(/\s/)
      result = splitted[0..1].join(' ')
    end
    result.delete!('.') if result.include? '.'
    result.delete!(',') if result.include? ','
    result.chop! if result.end_with? ';'
    result # Return the result here.
  }
  selection.reject! {|line|
    line.empty?
  }
  selection.uniq!
  selection.sort!
  @selection = selection
  report_these_results(@selection)
end

#set_commandline_arguments(i = '') ⇒ Object

#

set_commandline_arguments

#


71
72
73
74
75
# File 'lib/roebe/classes/available_classes.rb', line 71

def set_commandline_arguments(i = '')
  i = i.first if i.is_a? Array
  i = i.to_s.dup
  @commandline_arguments = i
end

#set_scan_from_this_directory(i = return_pwd) ⇒ Object Also known as: set_use_this_directory

#

set_scan_from_this_directory

This method must always ensure that the last character is a trailing ‘/’ token.

#


83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/roebe/classes/available_classes.rb', line 83

def set_scan_from_this_directory(
    i = return_pwd
  )
  # ======================================================================= #
  # Determine from which directory to scan.
  # ======================================================================= #
  unless i.end_with? '/'
    i = i.dup if i.frozen?
    i << '/'
  end
  @scan_from_this_directory = i
end

#show_helpObject

#

show_help (help tag)

#


151
152
153
154
155
# File 'lib/roebe/classes/available_classes.rb', line 151

def show_help
  e
  e 'Currently no option is documented.'
  e
end

#succinct?Boolean

#

succinct?

#

Returns:

  • (Boolean)


64
65
66
# File 'lib/roebe/classes/available_classes.rb', line 64

def succinct?
  @report_style == :succinct
end