Module: ContentHelpers

Defined in:
lib/coursegen/course/helpers/content_helpers.rb

Overview

ContentHelpers is used to annotate content.

Instance Method Summary collapse

Instance Method Details

#bold_red(string) ⇒ Object



42
43
44
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 42

def bold_red(string)
  "<span style=\"color: red; font-style: italic;\">#{string}</span>"
end

#callout(title, body, style = "big") ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 87

def callout(title, body, style="big")
  style = style.to_s if style.class != String
  if (style == "big")
    %(<div class="callout callout-big">
      <h1 class="display-5">#{title}</h1>
      <p class="lead">#{body}</p></div>)
  elsif (style == "small")
    <<~HTMLSTRING
      <div class="callout callout-small">
        <span class="callout-badge">#{title}</span>#{body}
      </div>
    HTMLSTRING
  else
    "error in callout call: .#{style}. #{style.class}"
  end
end

#callout1(title, body) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 54

def callout1(title, body)
  <<~HTMLSTRING
    <div class="well well-sm callout">
    <span class="themebg label label-primary">#{title}</span>#{body}
    </div>
  HTMLSTRING
end

#callout2(title, body) ⇒ Object



62
63
64
65
66
67
68
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 62

def callout2(title, body)
  <<~HTMLSTRING
    <div class="callout border border-primary rounded p-2 m-3">
    <span class="badge badge-pill badge-primary">#{title}</span>#{body}
    </div>
  HTMLSTRING
end

#callout3(title, body, style = "big") ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 70

def callout3(title, body, style="big")
  style = style.to_s if style.class != String
  if (style == "big")
    %(<div class="jumbotron py-1 border border-primary border-rounded-lg">
      <h1 class="display-5">#{title}</h1>
      <p class="lead">#{body}</p></div>)
  elsif (style == "small")
    <<~HTMLSTRING
    <div class="callout border border-primary rounded p-2 m-3">
    <span class="badge badge-pill badge-primary">#{title}</span>#{body}
    </div>
    HTMLSTRING
  else
    "error in callout call: .#{style}. #{style.class}"
  end
end

def carousel_work(filenames)

body = %(<div id="myCarousel" class="carousel slide" data-ride="carousel" style="width: 500px; margin: 0 auto;">
        <div class="carousel-inner" role="listbox" style="margin: 20px; ">)
counter = 0
filenames.each do |nam|
  ci = counter == 0 ? %(<div class="item active">) : %(<div class="item">)
  body << ci
  body << %(<img src=")
  body << nam
  body << %("/>"></div>)
  counter += 1
end
body << %(</div> <a class="left carousel-control" role="button" href="#myCarousel" data-slide="prev">
  <span class="glyphicon glyphicon-chevron-left"></span>
  <span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" role="button" href="#myCarousel" data-slide="next">
  <span class="glyphicon glyphicon-chevron-right"></span>
  <span class="sr-only">Next</span>
</a>
</div>)
body

end



275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 275

def carousel_v4(filenames)
  body = <<~HEREDOC
    <div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
      <div class="carousel-inner">
  HEREDOC
  count = 0
  filenames.each do |fname|
    active = count == 0 ? 'active' : ''
    body << <<~HEREDOC
      <div class="carousel-item #{active}">
        <img class="d-block w-80" src="/content/topics/images/#{fname}">
      </div>
    HEREDOC
    count += 1
  end
  body << <<~HEREDOC
      </div>
      <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
      <span class="carousel-control-prev-icon" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
    <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
      <span class="carousel-control-next-icon" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
    </div>
  HEREDOC
  body
end

#cloudbadgeObject



133
134
135
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 133

def cloudbadge
  iconbadge('cloud-fill', 'Work on code in your portfolio', 'portfolio')
end

#code_beginObject



341
342
343
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 341

def code_begin
  "\n~~~~~~"
end

#code_end(lang = '') ⇒ Object



345
346
347
348
349
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 345

def code_end(lang = '')
  str = "~~~~~~\n"
  str += "{: .language-#{lang}}" if %w[ruby css java html].include? lang
  str
end

#code_string(str) ⇒ Object



351
352
353
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 351

def code_string(str)
  code_begin + "\n" + str + code_end
end

#codebadgeObject



129
130
131
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 129

def codebadge
  iconbadge('file-code-fill', 'Work on code in your portfolio', "portfolio")
end

#deliverable(string, append = '') ⇒ Object



195
196
197
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 195

def deliverable(string, append = '')
  "*Deliverable:*{: style=\"color: red\"} #{string + append} "
end

#deliverable_po(string) ⇒ Object



199
200
201
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 199

def deliverable_po(string)
  deliverable(string, ' *(graded for participation only)*')
end

#deliverable_popdf(string) ⇒ Object



203
204
205
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 203

def deliverable_popdf(string)
  deliverable(string, ' *(pdf with name and hw number, graded for participation only)*')
end

#discussion(string) ⇒ Object



211
212
213
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 211

def discussion(string)
  "*Discussion:*{: style=\"color: blue\"} *#{string}*"
end

#discussion_box(string) ⇒ Object



219
220
221
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 219

def discussion_box(string)
  %(<div class="discussionbox"><strong>Discussion:</strong> #{string}</div>)
end

#discussion_box1(string) ⇒ Object



215
216
217
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 215

def discussion_box1(string)
  %(<div class="alert alert-info"><strong>Discussion:</strong> #{string}</div>)
end

#homework_hdr(show_legend: :on) ⇒ Object



223
224
225
226
227
228
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 223

def homework_hdr(show_legend: :on)
  body = '## Homework due for today'
  legend = "\n**Legend**: #{partbadge}: Participation (pass/fail) | #{pdfbadge}: PDF | #{teambadge}: Team | #{zipbadge}:  Attachment"
  body += legend if show_legend == :on
  body
end

#iconbadge(icon, tooltip, shorttext = "") ⇒ Object



113
114
115
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 113

def iconbadge(icon, tooltip, shorttext="")
  %(<svg class="iconbadge bi" title="#{tooltip}" data-placement="top" data-title="#{tooltip}" data-toggle="tooltip" fill="blue"><use xlink:href="/bootstrap/bootstrap-icons-1.0.0/bootstrap-icons.svg##{icon}"/></svg><span class="icontext" >#{shorttext}</span>)
end

#iconbadge1(icon, tooltip) ⇒ Object



105
106
107
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 105

def iconbadge1(icon, tooltip)
  %(<img src="/bootstrap/bootstrap-icons-1.0.0/#{icon}.svg" title="#{tooltip}" class="iconbadge">)
end

#iconbadge2(icon, tooltip) ⇒ Object



121
122
123
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 121

def iconbadge2(icon, tooltip)
  %(<span class="fas fa-#{icon} themefg" data-toggle="tooltip" data-placement="top" title="#{tooltip}"></span>)
end

#iconbadge3(icon, tooltip, shorttext = "") ⇒ Object



109
110
111
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 109

def iconbadge3(icon, tooltip, shorttext="")
  %(<svg class="iconbadge bi" title="#{tooltip}" data-placement="top" data-title="#{tooltip}" data-toggle="tooltip" fill="blue"><use xlink:href="/bootstrap/bootstrap-icons-1.0.0/bootstrap-icons.svg##{icon}"/></svg>#{shorttext})
end

#image(filename_string, extra: '') ⇒ Object



171
172
173
174
175
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 171

def image(filename_string, extra: '')
  <<~HTMLSTRING
    <img src="/content/topics/images/#{filename_string}" class="img-responsive img-thumbnail" #{extra}/>
  HTMLSTRING
end

#important(string = ':') ⇒ Object



177
178
179
180
181
182
183
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 177

def important(string = ':')
  <<-HTMLSTRING
  <div class="cg-important">
      #{string}
  </div>
  HTMLSTRING
end

#include_background(item_symbol) ⇒ Object



14
15
16
17
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 14

def include_background(item_symbol)
  incorporated_topic = lookup_nitem('background', item_symbol.to_s)
  items[incorporated_topic.identifier.to_s].compiled_content
end

#include_code(name) ⇒ Object



355
356
357
358
359
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 355

def include_code(name)
  filename = Dir.pwd + '/content/content/topics/scripts/' + name
  filecontents = File.new(filename).read
  code_string filecontents
end

#include_from_section(sect_symbol, item_symbol) ⇒ Object



24
25
26
27
28
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 24

def include_from_section(sect_symbol, item_symbol)
  incorporated_item = lookup_nitem(sect_symbol.to_s, item_symbol.to_s)
  Toc.instance.record_inclusion @item, incorporated_item
  items[incorporated_item.identifier.to_s].compiled_content
end

#include_image(filename_string, extra: '') ⇒ Object



161
162
163
164
165
166
167
168
169
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 161

def include_image(filename_string, extra: '')
  <<~HTMLSTRING
    <div class="row">
      <div class="col-md-offset-2 col-md-8">
        <img src="#{filename_string}" class="img-responsive img-thumbnail" #{extra}/>
      </div>
    </div>
  HTMLSTRING
end

#include_image_old(filename_string, extra_class: nil) ⇒ Object



153
154
155
156
157
158
159
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 153

def include_image_old(filename_string, extra_class: nil)
  css_class = 'img-responsive'
  css_class += ' img-' + extra_class unless extra_class.nil?
  <<-HTMLSTRING
  <img src="#{filename_string}" class=\"%s\" />" % css_class
  HTMLSTRING
end

#include_intro(item_symbol) ⇒ Object



19
20
21
22
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 19

def include_intro(item_symbol)
  incorporated_topic = lookup_nitem('intro', item_symbol.to_s)
  items[incorporated_topic.identifier.to_s].compiled_content
end

#include_page(item_symbol) ⇒ Object



9
10
11
12
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 9

def include_page(item_symbol)
  incorporated_topic = lookup_nitem('pages', item_symbol.to_s)
  items[incorporated_topic.identifier.to_s].compiled_content
end

#include_python(name) ⇒ Object



335
336
337
338
339
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 335

def include_python(name)
  filename = Dir.pwd + '/content/content/topics/robotcode/' + name.to_s + '.py'
  filecontents = File.new(filename).read
  ruby_string filecontents
end

#include_ruby(name) ⇒ Object



329
330
331
332
333
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 329

def include_ruby(name)
  filename = Dir.pwd + '/content/content/topics/scripts/' + name.to_s + '.rb'
  filecontents = File.new(filename).read
  ruby_string filecontents
end

#include_topic(item_symbol) ⇒ Object



4
5
6
7
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 4

def include_topic(item_symbol)
  incorporated_topic = lookup_nitem('topics', item_symbol.to_s)
  items[incorporated_topic.identifier.to_s].compiled_content
end

#ir(string) ⇒ Object



50
51
52
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 50

def ir(string)
  italic_red(string)
end

#italic_red(string) ⇒ Object



46
47
48
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 46

def italic_red(string)
  " *#{string}*{: style=\"color: red\"} "
end

#lab_note(title) ⇒ Object



403
404
405
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 403

def lab_note(title)
  "<h3 style=\"font-family:'Permanent Marker'; font-szie:18px; color: red;\">#{title}</h3>"
end


34
35
36
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 34

def link_to_doc(label, file_name)
  "<a href=\"/docs/#{file_name}\">#{label}</a>"
end

#list_items(*items) ⇒ Object



393
394
395
396
397
398
399
400
401
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 393

def list_items(*items)
  items.reduce('') do |s, i|
    if i.start_with?('<ul>')
      s + i
    else
      s + '<li>' + i + '</li>'
    end
  end
end

#lookup_nitem(the_sect, short_name) ⇒ Object



30
31
32
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 30

def lookup_nitem(the_sect, short_name)
  Toc.instance.lookup_citem(the_sect, short_name).nitem
end

#nb(string = ':') ⇒ Object



185
186
187
188
189
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 185

def nb(string = ':')
  <<-HTMLSTRING
  <div class="label label-info">#{string}</div>
  HTMLSTRING
end

#partbadgeObject



141
142
143
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 141

def partbadge
  iconbadge('heart-half', 'Graded for participation only - pass/fail', 'participation')
end

#pdfbadgeObject



125
126
127
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 125

def pdfbadge
  iconbadge('file-earmark-richtext-fill', 'Submit a pdf file', "pdf")
end

#postit_begin(title) ⇒ Object



369
370
371
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 369

def postit_begin(title)
  '<div class="postit">' + '<h5>' + title + '</h5>'
end

#postit_endObject



373
374
375
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 373

def postit_end
  '</div>'
end

#python_beginObject



313
314
315
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 313

def python_begin
  "\n~~~~~~"
end

#python_endObject



317
318
319
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 317

def python_end
  "~~~~~~\n {: .language-python}"
end

#python_string(str) ⇒ Object



325
326
327
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 325

def python_string(str)
  python_begin + "\n" + str + "\n" + python_end
end

#ruby_beginObject



305
306
307
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 305

def ruby_begin
  "\n~~~~~~"
end

#ruby_endObject



309
310
311
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 309

def ruby_end
  "~~~~~~\n {: .language-ruby}"
end

#ruby_string(str) ⇒ Object



321
322
323
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 321

def ruby_string(str)
  ruby_begin + "\n" + str + "\n" + ruby_end
end

#slideObject



389
390
391
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 389

def slide
  '<slide_break></slide_break>'
end

#source_begin(language) ⇒ Object



361
362
363
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 361

def source_begin(language)
  "<pre class=\"#{language}\">"
end

#source_endObject



365
366
367
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 365

def source_end
  '</pre>'
end

#tbd(string = '') ⇒ Object



191
192
193
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 191

def tbd(string = '')
  "*[TO BE DETERMINED#{string}]*{: style=\"color: red\"}"
end

#team_deliverable(string) ⇒ Object



207
208
209
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 207

def team_deliverable(string)
  "*Team Deliverable:*{: style=\"color: red\"} *#{string}*"
end

#teambadgeObject



149
150
151
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 149

def teambadge
  iconbadge('people-fill', 'Team Deliverable', 'team deliverable')
end

#textbadge(text, tooltip) ⇒ Object



117
118
119
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 117

def textbadge(text, tooltip)
  %(<span class="label label-info" data-toggle="tooltip" data-placement="top" title="#{tooltip}">#{text}</span>)
end

#timebadgeObject



145
146
147
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 145

def timebadge
  iconbadge('alarm-fill', 'Must be submitted first thing on day of class', 'early submit')
end

#toasty(header, *items) ⇒ Object



407
408
409
410
411
412
413
414
415
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 407

def toasty(header, *items)
  str = %(<div class="border border-info rounded w-75 mx-auto p-2 m-3">
    <h5>#{header}</h5><ul>)
  items.each do |itm|
    str += '<li>' + itm + '</li>'
  end
  str += '</ul></div>'
  str
end


38
39
40
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 38

def toc_link_to(item)
  link_to_unless_current item[:title], item
end

#ul(body) ⇒ Object



385
386
387
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 385

def ul(body)
  "<ul>#{body}</ul>"
end

#ul_beginObject



377
378
379
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 377

def ul_begin
  '<ul>'
end

#ul_endObject



381
382
383
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 381

def ul_end
  '</ul>'
end

#zipbadgeObject



137
138
139
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 137

def zipbadge
  iconbadge('file-earmark-zip-fill', 'Submit work in a zipfile', 'zip')
end