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



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

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



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

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



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

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



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

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

#code_beginObject



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

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

#code_end(lang = '') ⇒ Object



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

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

#code_string(str) ⇒ Object



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

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

#codebadgeObject



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

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

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



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

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

#deliverable_po(string) ⇒ Object



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

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

#deliverable_popdf(string) ⇒ Object



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

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

#discussion(string) ⇒ Object



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

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

#discussion_box(string) ⇒ Object



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

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

#homework_hdr(show_legend: :on) ⇒ Object



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

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



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

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



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

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

#iconbadge2(icon, tooltip) ⇒ Object



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

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



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

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



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

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

#important(string = ':') ⇒ Object



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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

#partbadgeObject



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

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

#pdfbadgeObject



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

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

#postit_begin(title) ⇒ Object



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

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

#postit_endObject



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

def postit_end
  '</div>'
end

#python_beginObject



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

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

#python_endObject



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

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

#python_string(str) ⇒ Object



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

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

#ruby_beginObject



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

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

#ruby_endObject



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

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

#ruby_string(str) ⇒ Object



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

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

#slideObject



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

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

#source_begin(language) ⇒ Object



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

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

#source_endObject



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

def source_end
  '</pre>'
end

#tbd(string = '') ⇒ Object



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

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

#team_deliverable(string) ⇒ Object



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

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

#teambadgeObject



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

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

#textbadge(text, tooltip) ⇒ Object



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

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

#timebadgeObject



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

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

#toasty(header, *items) ⇒ Object



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

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



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

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

#ul_beginObject



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

def ul_begin
  '<ul>'
end

#ul_endObject



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

def ul_end
  '</ul>'
end

#zipbadgeObject



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

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