Class: Roebe::GenerateOverviewOfTheLocallyAvailableBooks

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

Overview

Roebe::GenerateOverviewOfTheLocallyAvailableBooks

Constant Summary collapse

BOOK_EMOJI =
#

BOOK_EMOJI

#
EmojiParadise.book_emoji?
BASE_DIRECTORY =
#

BASE_DIRECTORY

Denote the directory for where the local .pdf files are kept, e. g. the books.

#
"#{HOME_OF_THE_USER_CALLED_X}books/"
USE_THIS_TITLE_FOR_THE_WEBPAGE =
#

USE_THIS_TITLE_FOR_THE_WEBPAGE

#
'Available local books (.pdf files)'

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?, #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(commandline_arguments = nil, run_already = true) ⇒ GenerateOverviewOfTheLocallyAvailableBooks

#

initialize

#


65
66
67
68
69
70
71
72
73
74
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 65

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

Class Method Details

.[](i = ARGV) ⇒ Object

#

Roebe::GenerateOverviewOfTheLocallyAvailableBooks[]

#


267
268
269
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 267

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

Instance Method Details

#add(i, append_newline = true) ⇒ Object

#

add (add tag)

#


122
123
124
125
126
127
128
129
130
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 122

def add(
    i,
    append_newline = true
  )
  if append_newline
    i = "#{i}\n"
  end
  @_ << i
end

#addbrObject

#

addbr

#


247
248
249
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 247

def addbr
  add "<br>\n"
end

#gather_all_local_pdf_filesObject

#

gather_all_local_pdf_files

#


165
166
167
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 165

def gather_all_local_pdf_files
  @all_pdf_files = Dir["#{BASE_DIRECTORY}**/**.pdf"]
end

#generate_the_html_file(what = @_, into = "#{@into}locally_available_books.html") ⇒ Object

#

generate_the_html_file

#


142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 142

def generate_the_html_file(
    what = @_,
    into = "#{@into}locally_available_books.html"
  )
  opne "#{rev}Storing into the file `#{sfile(into)}#{rev}`."
  # ======================================================================= #
  # Delegate onto Cyberweb.html_template next:
  # ======================================================================= #
  dataset = Cyberweb.html_template({
    title:                 USE_THIS_TITLE_FOR_THE_WEBPAGE, # Designate the title.
    css_style:             return_CSS_rules_to_use,
    use_these_css_classes: 'midnightblue', 
    body:                  @_.to_s
  })
  write_what_into(dataset, into) # Store it into a local .html page next.
  if is_on_roebe?
    open_in_browser(into)
  end
end

#iterate_over_the_pdf_files(regexp_quote = Regexp.quote(BASE_DIRECTORY)) ⇒ Object

#

iterate_over_the_pdf_files

#


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
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
234
235
236
237
238
239
240
241
242
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 172

def iterate_over_the_pdf_files(
    regexp_quote = Regexp.quote(BASE_DIRECTORY) # Quote all / properly here.
  )
  # ======================================================================= #
  # Iterate over all .pdf file found next:
  # ======================================================================= #
  @all_pdf_files.each_with_index {|this_pdf_file, index| index += 1
    subdir = File.dirname(
      this_pdf_file.sub(regexp_quote, '')
    )
    if @last_subdirectory == subdir
      # =================================================================== #
      # In this case there is no change, so we do not do
      # anything.
      # =================================================================== #
    else
      # =================================================================== #
      # Else we will add that as the main topic.
      # =================================================================== #
      register_last_subdirectory(subdir)
      # =================================================================== #
      # Use a <h2> tag next:
      # =================================================================== #
      subdir_as_html_string = '<h2 style="color: royalblue">'+
                              '('+index.to_s+') '+
                              subdir.tr('_',' ')+
                              '</h2>'
      add(subdir_as_html_string)
      e "#{tomato(BOOK_EMOJI)} #{slateblue(subdir)}" # Display this information onto the commandline.
    end
    e royalblue("   #{this_pdf_file}")
    # ===================================================================== #
    # The next code-chunk will also show how many individual pages can
    # be # found in that .pdf file:
    # ===================================================================== #
    n_pdf_pages_in_this_pdf_file = PdfParadise.n_pdf_pages_in_this_pdf_file(this_pdf_file) 
    add(
      '<span style="font-weight: bold">'+
      File.basename(this_pdf_file)+
      '</span> (<b class="midnightblue">'+
      n_pdf_pages_in_this_pdf_file.to_s+' pages</b>)'
    )
    addbr
    title = PdfParadise.return_pdf_title_of(this_pdf_file).to_s
    # ===================================================================== #
    # === Add Title: next
    # ===================================================================== #
    unless title.empty?
      addbr
      add(
        '<span style="margin-left: 1.2em">Title: <b style="color:darkblue">'+
        title+'</b></span>'
      )
      addbr
    end
    # ===================================================================== #
    # Add a <a> HTML tag next.                                      (a tag)
    # ===================================================================== #
    addbr
    add(
      HtmlTags.a(
        href_target:  this_pdf_file,
        description:  "#{BOOK_EMOJI} #{this_pdf_file}",
        css_style:    'margin-left: 2.2em; font-weight: bold; ',
        linebreak:    true,
        open_new_tab: true
      )
    )
    addbr
  }
end

#register_last_subdirectory(i) ⇒ Object

#

register_last_subdirectory

#


135
136
137
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 135

def register_last_subdirectory(i)
  @last_subdirectory = i
end

#resetObject

#

reset (reset tag)

#


79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 79

def reset
  super()
  infer_the_namespace
  try_to_require_the_html_template
  @_ = ''.dup
  # ======================================================================= #
  # === @into
  # ======================================================================= #
  @into = BASE_DIRECTORY.dup
  # ======================================================================= #
  # === @last_subdirectory
  # ======================================================================= #
  @last_subdirectory = nil
end

#return_CSS_rules_to_useObject

#

return_CSS_rules_to_use (CSS tag, css tag)

This method will return the content for the CSS <style> tag.

#


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

def return_CSS_rules_to_use
  return <<-EOF
a,
a:visited {
color: steelblue;
text-decoration: none;
}
a:hover {
color: royalblue;
text-decoration: underline;
}
body {
font-size: 1.7em; /* Specify the font-size for the generated webpage. */
padding: 12px;
margin-left:  4px;
margin-right: 4px;
}
EOF
end

#runObject

#

run (run tag)

#


254
255
256
257
258
259
260
261
262
# File 'lib/roebe/classes/generate_overview_of_the_locally_available_books.rb', line 254

def run
  require 'pdf_paradise/toplevel_methods/query_pdf_title.rb'
  gather_all_local_pdf_files
  iterate_over_the_pdf_files
  # ======================================================================= #
  # Last but not least, save the generated .html file:
  # ======================================================================= #
  generate_the_html_file
end