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



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

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

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



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

def callout(title, body, style=:big)
  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}"
  end
end

#callout1(title, body) ⇒ Object



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

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



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

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

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



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
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 251

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



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

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

#code_beginObject



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

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

#code_end(lang = '') ⇒ Object



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

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

#code_string(str) ⇒ Object



327
328
329
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 327

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

#codebadgeObject



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

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

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



175
176
177
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 175

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

#deliverable_po(string) ⇒ Object



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

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

#deliverable_popdf(string) ⇒ Object



183
184
185
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 183

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

#discussion(string) ⇒ Object



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

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

#discussion_box(string) ⇒ Object



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

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

#homework_hdr(show_legend: :on) ⇒ Object



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

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



93
94
95
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 93

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



85
86
87
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 85

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

#iconbadge2(icon, tooltip) ⇒ Object



101
102
103
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 101

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



89
90
91
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 89

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



151
152
153
154
155
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 151

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

#important(string = ':') ⇒ Object



157
158
159
160
161
162
163
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 157

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

#include_background(item_symbol) ⇒ Object



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

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



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

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



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

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



141
142
143
144
145
146
147
148
149
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 141

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



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

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



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

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



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

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



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

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



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

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



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

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



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

def ir(string)
  italic_red(string)
end

#italic_red(string) ⇒ Object



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

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

#lab_note(title) ⇒ Object



379
380
381
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 379

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


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

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

#list_items(*items) ⇒ Object



369
370
371
372
373
374
375
376
377
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 369

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



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

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

#nb(string = ':') ⇒ Object



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

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

#partbadgeObject



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

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

#pdfbadgeObject



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

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

#postit_begin(title) ⇒ Object



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

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

#postit_endObject



349
350
351
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 349

def postit_end
  '</div>'
end

#python_beginObject



289
290
291
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 289

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

#python_endObject



293
294
295
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 293

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

#python_string(str) ⇒ Object



301
302
303
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 301

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

#ruby_beginObject



281
282
283
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 281

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

#ruby_endObject



285
286
287
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 285

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

#ruby_string(str) ⇒ Object



297
298
299
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 297

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

#slideObject



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

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

#source_begin(language) ⇒ Object



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

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

#source_endObject



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

def source_end
  '</pre>'
end

#tbd(string = '') ⇒ Object



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

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

#team_deliverable(string) ⇒ Object



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

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

#teambadgeObject



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

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

#textbadge(text, tooltip) ⇒ Object



97
98
99
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 97

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

#timebadgeObject



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

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

#toasty(header, *items) ⇒ Object



383
384
385
386
387
388
389
390
391
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 383

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


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

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

#ul(body) ⇒ Object



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

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

#ul_beginObject



353
354
355
# File 'lib/coursegen/course/helpers/content_helpers.rb', line 353

def ul_begin
  '<ul>'
end

#ul_endObject



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

def ul_end
  '</ul>'
end

#zipbadgeObject



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

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