Class: Scriptorium::Widget::ListWidget

Inherits:
Scriptorium::Widget show all
Includes:
Contract
Defined in:
lib/scriptorium/widgets/widget.rb

Direct Known Subclasses

FeaturedPosts, Links, Pages

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 Scriptorium::Widget

#generate, #html_body, #html_card, #html_container, #load_config

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) ⇒ ListWidget

Returns a new instance of ListWidget.



108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/scriptorium/widgets/widget.rb', line 108

def initialize(repo, view)
  assume { repo.is_a?(Scriptorium::Repo) }
  assume { view.is_a?(Scriptorium::View) }
  
  super(repo, view)
  @list = "#{@path}/list.txt"
  @data = load_data
  
  define_invariants
  verify { @list.include?("list.txt") }
  verify { @data.is_a?(Array) }
  check_invariants
end

Instance Method Details

#define_invariantsObject

Invariants



103
104
105
106
# File 'lib/scriptorium/widgets/widget.rb', line 103

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

#load_dataObject

Method to load the list data from the list.txt file



123
124
125
126
127
128
129
130
131
132
# File 'lib/scriptorium/widgets/widget.rb', line 123

def load_data
  check_invariants
  assume { @list.is_a?(String) && !@list.empty? }
  
  result = read_file(@list, lines: true, chomp: true).map(&:strip)
  
  verify { result.is_a?(Array) }
  check_invariants
  result
end