Class: Studium::CreatePdfFileForThisExamTopic
- Inherits:
-
Base
- Object
- Base
- Studium::CreatePdfFileForThisExamTopic
show all
- Defined in:
- lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb
Overview
Studium::CreatePdfFileForThisExamTopic
Constant Summary
collapse
- NAMESPACE =
inspect
- USE_THIS_FONT =
#
USE_THIS_FONT
We have to pick an existing font.
The following Array may be of help if you wish to pick another font:
["Courier", "Courier-Bold", "Courier-BoldOblique", "Courier-Oblique",
"Helvetica", "Helvetica-Bold", "Helvetica-BoldOblique", "Helvetica-Oblique",
"Symbol", "Times-Bold", "Times-BoldItalic", "Times-Italic", "Times-Roman",
"ZapfDingbats", "Liberation"]
#
'Courier'
- USE_THIS_FONT_SIZE =
10
Constants inherited
from Base
Base::ARRAY_HTML_COLOURS_IN_USE, Base::CHECK_FOR_INCORRECT_ENTRIES_IN_THE_QUESTION_ANSWER_FILE_THAT_SHOULD_BE_COMMENTS, Base::COLOURS, Base::COMMON_YEAR_DAYS_IN_MONTH, Base::GRAY, Base::LEFT_PADDING, Base::N_CHARACTERS_PER_LINE, Base::UNICODE_RIGHT_ARROW
Constants included
from Colours
Studium::Colours::COLOURS
Class Method Summary
collapse
-
.[](i = '') ⇒ Object
# === Studium::CreatePdfFileForThisExamTopic[] ========================================================================= #.
-
.set_the_exam_topic(i) ⇒ Object
# === Studium::CreatePdfFileForThisExamTopic.set_the_exam_topic ========================================================================= #.
-
.the_exam_topic? ⇒ Boolean
# === Studium::CreatePdfFileForThisExamTopic.the_exam_topic? ========================================================================= #.
-
.to_windows_1252_encoding(i) ⇒ Object
# === to_windows_1252_encoding ========================================================================= #.
Instance Method Summary
collapse
Methods inherited from Base
#add_proper_year_entry_to_this_line, #already_solved_this_lva_number?, #append_what_into, #available_topics_as_short_name, #average_grade, #bachelor_master_or_diploma, #base_dir?, #be_silent, #be_verbose?, #beautiful_url, #change_directory, #cheering_person, #cliner, #colour_for_ects_points, #colourize_percentage, #commandline_arguments?, #commandline_arguments_joined, #commandline_arguments_with_hyphens?, #convert_this_array_of_lectures_into_the_full_dataset, #copy, #cpruby, #create_directory, #create_file, #csv_file?, #current_month?, #datum?, #day_month_year, #debug?, #delete_file, #directory_of_the_exam_topics?, #directory_to_my_exam_topics, #directory_to_the_exam_topics?, #disable_colours, #disable_colours_globally, #do_not_be_verbose, #do_not_use_opn, #do_these_curricula_include_both_a_bachelor_and_a_master_curriculum?, #does_this_line_include_a_german_weekday?, #does_this_line_include_a_html_colour?, #e, #ecomment, #editor?, #ee, #enable_colours, #enable_colours_globally, #enable_debug, #encoding?, #english_to_german_weekday, #ensure_main_encoding, #ensure_that_the_log_directory_exists, #eparse, #erev, #esystem, #etomato, #exit_program, #expand_topic, #extract_dd_mm_yyyy, #file_lecture_information?, #file_read_with_proper_encoding, #filter_away_invalid_questions, #find_corresponding_exam_topic, #first_argument?, #first_non_hyphen_argument?, #from_curriculum_id_to_university, #german_date_notation, #german_weekday?, #german_weekdays?, #has_a_bachelor_curriculum?, #has_a_master_curriculum?, #has_this_exam_topic_been_solved?, #has_year_entry?, #hh_mm_ss_dd_mm_yyyy, #horizontal_bar?, #html_log_directory?, #is_a_master_lecture?, #is_a_weekday?, #is_connected_to_the_www?, #is_on_roebe?, #is_prüfungsimmanent?, #is_this_a_valid_html_colour?, #is_this_day_today?, #konsole_support?, #last_file?, #lectures_from_indi1, #lectures_from_indi2, #lectures_from_indi3, #lectures_from_indi4, #lectures_from_the_bachelor_genetik_curriculum, #lectures_from_the_individual_vektor_curricula, #load_yaml_dataset, #move_file, #n_days_difference_from_today_to_this_day, #no_ext_name, #no_file_at, #number_to_month, #obtain, #obtain_lectures_from_this_curriculum, #open_in_editor, #opnn, #path_to_exam_topic?, #read_dataset_from_a_curriculum_file, #read_in_exam_dataset_from_this_file, #read_this_file_with_default_encoding, #readlines_from_this_input_file, #register_sigint, #remove_empty_strings, #remove_escape_sequences, #remove_internal_comments, #remove_leading_comments, #remove_leading_weekday_names_from, #remove_newlines, #remove_tags_from_this_input, #rename_kde_konsole_tab, #rename_konsole_tab?, #replace_all_html_colours_in_this, #replace_bold_token_with_default_colour, #replace_italic_token_with_default_colour, #replace_italic_token_with_this_colour, #replace_regular_numbers_with_unicode_numbers, #replace_underline_token_with_default_colour, #replace_underline_token_with_this_colour, #return_all_bachelor_lectures, #return_all_exams_on_this_day, #return_all_numbers_from, #return_all_registered_curricula, #return_all_steop_lectures, #return_current_year, #return_dataset_for_this_topic, #return_dataset_from_this_curriculum_file, #return_dd_mm_yy_and_time_from, #return_directory_for, #return_ects_points_from_these_lectures, #return_either_grey_or_the_custom_colour_for_answers, #return_either_grey_or_the_custom_colour_for_questions, #return_file_for_this_curriculum, #return_german_name_for_this_english_month, #return_german_weekday_of?, #return_hh_mm_ss_from, #return_hour_from_this, #return_lectures_from_bachelor_vektor_curriculum, #return_lectures_with_at_the_least_one_upcoming_exam, #return_local_path_of_this_pwdstud, #return_lva_number_of_this_lecture, #return_month_fitting_to_this_input, #return_n_days_until_monday, #return_n_days_until_sunday, #return_n_exam_questions_in, #return_n_questions_were_answered_for_this_topic, #return_name_of_the_weekday, #return_name_of_this_curriculum, #return_name_of_this_curriculum_based_on_its_id_number, #return_opnn, #return_passed_courses, #return_pwd, #return_random_curriculum, #return_sanitized_dataset_from_the_file_lecture_information, #return_solved_lectures, #return_steop_lectures, #return_the_remote_homepage_url, #return_this_line_has_n_characters_as_html_colour_tags, #return_title_from_this_curriculum_file, #rev, #right_arrow?, #rinstall2, #roebe_exam_directory?, #ruby_src_dir_at_home?, #runmode?, #sanitize_this_topic, #sanitize_url, #select_lectures_with_this_key, #set_be_quiet, #set_be_verbose, #set_commandline_arguments, #set_commandline_mode, #set_runmode, #set_this_cd_alias_to, #set_www_mode, #sfancy, #shall_we_make_use_of_unicode_symbols?, #show_todays_date, #simp, #sort_these_lecture_names_by_time, #spacer, #swarn, #this_month_has_n_days?, #total_ects_points_passed, #translate_dd_mm_yyyy_to_weekday, #try_to_require_the_rcfiles, #turn_this_array_into_the_full_dataset, #unicode_blocks_line, #use_colours?, #use_opn?, #vertical_bar?, #web_liner, #weekday?, #weekdays?, #word_wrap, #write_what_into, #www_connection_is_unavailable, #www_mode?, #yaml_dir?
Methods included from Colours
#bold_blue, #bold_red, #bold_yellow, #cadetblue, #chartreuse, crimson, #darkgray, darkgreen, darkseagreen, deepskyblue, #deepskyblue, default_colour, #dimgray, disable_colours, #dodgerblue, e, #efancy, enable_colours, #ewarn, #forestgreen, gold, #grey, lightblue, lightgreen, #lightslategray, #lightsteelblue, #mediumorchid, #mediumseagreen, #oldlace, #olivedrab, orange, orangered, #orchid, palevioletred, #papayawhip, rev, royalblue, sdir, #sdir, sfancy, #sfancy, sfile, #sfile, simp, #simp, slateblue, steelblue, #steelblue, #swarn, swarn, #teal, turquoise, use_colours?, use_this_colour_for_exam_answers, use_this_colour_for_exam_questions, #yellow
Constructor Details
#initialize(commandline_arguments = nil, run_already = true) ⇒ CreatePdfFileForThisExamTopic
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 73
def initialize(
commandline_arguments = nil,
run_already = true
)
reset
set_commandline_arguments(
commandline_arguments
)
if block_given?
yielded = yield
if yielded.is_a? Hash
if yielded.has_key? :may_we_exit_if_prawn_is_not_installed
set_may_we_exit_if_prawn_is_not_installed(
yielded[:may_we_exit_if_prawn_is_not_installed]
)
end
end
end
run if run_already
end
|
Class Method Details
.[](i = '') ⇒ Object
#
Studium::CreatePdfFileForThisExamTopic[]
#
286
287
288
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 286
def self.[](i = '')
new(i)
end
|
.set_the_exam_topic(i) ⇒ Object
#
Studium::CreatePdfFileForThisExamTopic.set_the_exam_topic
#
66
67
68
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 66
def self.set_the_exam_topic(i)
@the_exam_topic = i
end
|
.the_exam_topic? ⇒ Boolean
#
Studium::CreatePdfFileForThisExamTopic.the_exam_topic?
#
59
60
61
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 59
def self.the_exam_topic?
@the_exam_topic
end
|
.to_windows_1252_encoding(i) ⇒ Object
#
to_windows_1252_encoding
#
179
180
181
182
183
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 179
def self.to_windows_1252_encoding(i)
i.encode(
'Windows-1252', invalid: :replace, undef: :replace, replace: ''
)
end
|
Instance Method Details
#consider_uploading_the_pdf_file ⇒ Object
#
consider_uploading_the_pdf_file
#
151
152
153
154
155
156
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 151
def consider_uploading_the_pdf_file
_ = @store_the_pdf_file_here
if is_on_roebe? and File.exist?(_)
Studium.upload_pdf(_)
end
end
|
#do_require_prawn(may_we_exit_if_prawn_is_not_installed = @may_we_exit_if_prawn_is_not_installed) ⇒ Object
#
do_require_prawn (require prawn tag)
#
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 161
def do_require_prawn(
may_we_exit_if_prawn_is_not_installed = @may_we_exit_if_prawn_is_not_installed
)
begin
require 'prawn'
Prawn::Font::AFM.hide_m17n_warning = true
rescue LoadError
e 'prawn is not installed. Consider installing it via'
e
e ' gem install prawn'
e
exit if may_we_exit_if_prawn_is_not_installed
end
end
|
#exam_topic? ⇒ Boolean
#
exam_topic?
The first argument given will be the exam topic that is to be used.
#
124
125
126
127
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 124
def exam_topic?
_ = @commandline_arguments.first
return find_corresponding_exam_topic(_)
end
|
#open_the_pdf_file_after_it_has_been_created ⇒ Object
#
open_the_pdf_file_after_it_has_been_created
This will open the .pdf file that was generated, but only on systems that have is_on_roebe? enabled - aka my home system.
#
142
143
144
145
146
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 142
def open_the_pdf_file_after_it_has_been_created
if File.exist?(@store_the_pdf_file_here) and is_on_roebe?
open_this_pdf_file(@store_the_pdf_file_here)
end
end
|
#open_this_pdf_file(i) ⇒ Object
211
212
213
214
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 211
def open_this_pdf_file(i)
require 'roebe'
::Roebe.open(i)
end
|
#reset ⇒ Object
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 103
def reset
super()
@namespace = NAMESPACE
@shall_we_try_to_upload_the_pdf_file = false
@may_we_exit_if_prawn_is_not_installed = true
end
|
#run ⇒ Object
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 219
def run
Studium::CreatePdfFileForThisExamTopic.set_the_exam_topic(exam_topic?)
dataset = return_dataset_for_this_topic(the_exam_topic?)
do_require_prawn
opnn; e 'The exam topic was: '+sfancy(the_exam_topic?)
@store_the_pdf_file_here = log_dir?+the_exam_topic?.to_s+'.pdf'
opnn; e 'We will store at:'
e
e " #{sfile(@store_the_pdf_file_here)}"
e
Prawn::Document.generate(@store_the_pdf_file_here) {
font USE_THIS_FONT
font_size USE_THIS_FONT_SIZE
text(
Studium::CreatePdfFileForThisExamTopic.to_windows_1252_encoding(
'Exam topic: '+
::Studium::CreatePdfFileForThisExamTopic.the_exam_topic?.tr('_',' ').capitalize+
N+N
)
)
dataset.each {|this_exam_question_answer_line|
this_exam_question_answer_line = this_exam_question_answer_line.strip
if this_exam_question_answer_line.end_with? ' []'
this_exam_question_answer_line.sub!(/ \[\]$/,'')
end
if this_exam_question_answer_line.include?('<ud>') or
this_exam_question_answer_line.include?('<u>') or
this_exam_question_answer_line.include?('</')
this_exam_question_answer_line = ::Studium.remove_tags(this_exam_question_answer_line)
end
_ = this_exam_question_answer_line
if _.include? 'http'
_ =~ /URL: (http.+)/
match = $1.to_s.dup
text(
Studium::CreatePdfFileForThisExamTopic.to_windows_1252_encoding(
"<link href='#{match}'>#{match}</link>"
),
inline_format: true,
style: :bold,
)
else
indent(8) {
text(
Studium::CreatePdfFileForThisExamTopic.to_windows_1252_encoding(_)
)
}
end
}
}
open_the_pdf_file_after_it_has_been_created
consider_uploading_the_pdf_file if @shall_we_try_to_upload_the_pdf_file
end
|
#set_may_we_exit_if_prawn_is_not_installed(i = true) ⇒ Object
#
set_may_we_exit_if_prawn_is_not_installed
#
204
205
206
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 204
def set_may_we_exit_if_prawn_is_not_installed(i = true)
@may_we_exit_if_prawn_is_not_installed = i
end
|
#store_where? ⇒ Boolean
197
198
199
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 197
def store_where?
@store_the_pdf_file_here
end
|
#the_exam_topic? ⇒ Boolean
#to_windows_1252_encoding(i) ⇒ Object
#
to_windows_1252_encoding
#
188
189
190
191
192
|
# File 'lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb', line 188
def to_windows_1252_encoding(i)
i.encode(
'Windows-1252', invalid: :replace, undef: :replace, replace: ''
)
end
|