Class: Scriptorium::Widget::Links

Inherits:
ListWidget show all
Includes:
Contract
Defined in:
lib/scriptorium/widgets/links.rb

Constant Summary collapse

Title =
"External links"

Instance Attribute Summary

Attributes inherited from Scriptorium::Widget

#config, #name, #path, #repo, #view

Instance Method Summary collapse

Methods included from Contract

#assume, #check_invariants, enabled?, #invariant, #verify

Methods inherited from ListWidget

#load_data

Methods inherited from Scriptorium::Widget

#html_body, #html_card, #html_container

Methods included from Helpers

#cf_time, #change_config, #clean_slugify, #copy_gem_asset_to_user, #copy_to_clipboard, #d4, #escape_html, #generate_missing_asset_svg, #get_asset_path, #get_from_clipboard, #getvars, #list_gem_assets, #make_dir, #make_tree, #need, #read_commented_file, #read_file, #see, #see_file, #slugify, #substitute, #system!, #view_dir, #write_file, #write_file!, #ymdhms

Methods included from Exceptions

#make_exception

Constructor Details

#initialize(repo, view) ⇒ Links

Returns a new instance of Links.



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/scriptorium/widgets/links.rb', line 12

def initialize(repo, view)
  assume { repo.is_a?(Scriptorium::Repo) }
  assume { view.is_a?(Scriptorium::View) }
  
  super(repo, view)
  @lines = @data
  
  define_invariants
  verify { @lines == @data }
  check_invariants
end

Instance Method Details

#cardObject



62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/scriptorium/widgets/links.rb', line 62

def card
  check_invariants
  assume { @view.is_a?(Scriptorium::View) }
  assume { @name.is_a?(String) && !@name.empty? }
  
  file = "#{@view.dir}/widgets/#@name/#@name-card.html"
  result = read_file(file)
  
  verify { result.is_a?(String) }
  check_invariants
  result
end

#define_invariantsObject

Invariants



7
8
9
10
# File 'lib/scriptorium/widgets/links.rb', line 7

def define_invariants
  invariant { @lines.is_a?(Array) }
  invariant { Title.is_a?(String) && !Title.empty? }
end

#generateObject



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/scriptorium/widgets/links.rb', line 41

def generate
  check_invariants
  assume { @view.is_a?(Scriptorium::View) }
  
  write_main
  write_card
  result = true
  
  verify { result == true }
  check_invariants
  result
end

#get_listObject



24
25
26
27
28
29
30
31
32
33
# File 'lib/scriptorium/widgets/links.rb', line 24

def get_list
  check_invariants
  assume { @lines.is_a?(Array) }
  
  result = @lines.map { |line| line.chomp.split(/, */, 2) }
  
  verify { result.is_a?(Array) }
  check_invariants
  result
end


81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/scriptorium/widgets/links.rb', line 81

def link_item(url, title)
  check_invariants
  assume { url.is_a?(String) && !url.empty? }
  assume { title.is_a?(String) && !title.empty? }
  
  anchor = %[<a href="#{url}" target="_blank" style="text-decoration: none;">#{title}</a>]
  result = %[<li class="list-group-item">#{anchor}</li>]
  
  verify { result.is_a?(String) && result.include?("list-group-item") }
  check_invariants
  result
end

#load_configObject



35
36
37
38
39
# File 'lib/scriptorium/widgets/links.rb', line 35

def load_config
  check_invariants
  # No configuration needed for this widget
  check_invariants
end

#widget_titleObject



54
55
56
57
58
59
60
# File 'lib/scriptorium/widgets/links.rb', line 54

def widget_title
  check_invariants
  result = Title
  verify { result.is_a?(String) && !result.empty? }
  check_invariants
  result
end

#write_cardObject



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/scriptorium/widgets/links.rb', line 94

def write_card
  check_invariants
  assume { @view.is_a?(Scriptorium::View) }
  assume { @name.is_a?(String) && !@name.empty? }
  assume { @data.is_a?(Array) }
  
  tag = @name
  cardout = "#{@view.dir}/widgets/#@name/#@name-card.html"
  # url = "../widgets/#@name/#@name-card.html"
  card_title = Title
  content = ""
  @data.each do |line|
    url2, title = line.chomp.split(",")
    content << link_item(url2, title)
  end
  write_file(cardout, html_card(card_title, tag, content))
  check_invariants
end

#write_mainObject



75
76
77
78
79
# File 'lib/scriptorium/widgets/links.rb', line 75

def write_main
  check_invariants
  # Nothing in this case
  check_invariants
end