Class: Muwu::Project

Inherits:
Object
  • Object
show all
Includes:
Muwu, Helper
Defined in:
lib/muwu/project/project.rb

Constant Summary

Constants included from Muwu

GEM_HOME_LIB, GEM_HOME_LIB_MUWU, VERSION

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Muwu

debug, read

Constructor Details

#initializeProject

Returns a new instance of Project.



22
23
24
25
26
27
# File 'lib/muwu/project/project.rb', line 22

def initialize
  @exceptions = []
  @instance_date = Time.now.strftime('%Y-%m-%d')
  @metadata = {}
  @outline = []
end

Instance Attribute Details

#exceptionsObject

Returns the value of attribute exceptions.



9
10
11
# File 'lib/muwu/project/project.rb', line 9

def exceptions
  @exceptions
end

#instance_dateObject

Returns the value of attribute instance_date.



9
10
11
# File 'lib/muwu/project/project.rb', line 9

def instance_date
  @instance_date
end

#javascript_libraries_requestedObject

Returns the value of attribute javascript_libraries_requested.



9
10
11
# File 'lib/muwu/project/project.rb', line 9

def javascript_libraries_requested
  @javascript_libraries_requested
end

#manifestObject

Returns the value of attribute manifest.



9
10
11
# File 'lib/muwu/project/project.rb', line 9

def manifest
  @manifest
end

#metadataObject

Returns the value of attribute metadata.



9
10
11
# File 'lib/muwu/project/project.rb', line 9

def 
  @metadata
end

#optionsObject

Returns the value of attribute options.



9
10
11
# File 'lib/muwu/project/project.rb', line 9

def options
  @options
end

#outlineObject

Returns the value of attribute outline.



9
10
11
# File 'lib/muwu/project/project.rb', line 9

def outline
  @outline
end

#slugObject

Returns the value of attribute slug.



9
10
11
# File 'lib/muwu/project/project.rb', line 9

def slug
  @slug
end

#working_directoryObject

Returns the value of attribute working_directory.



9
10
11
# File 'lib/muwu/project/project.rb', line 9

def working_directory
  @working_directory
end

Instance Method Details

#css_basenameObject



54
55
56
57
58
59
60
# File 'lib/muwu/project/project.rb', line 54

def css_basename
  if @options.output_file_css_basename.to_s == ''
    SanitizerHelper::sanitize_destination_file_basename(slug).downcase
  else
    SanitizerHelper::sanitize_destination_file_basename(@options.output_file_css_basename).downcase
  end
end

#css_manifest_file_does_existObject



44
45
46
# File 'lib/muwu/project/project.rb', line 44

def css_manifest_file_does_exist
  File.exists?(css_manifest_filename) == true
end

#css_manifest_filenameObject



49
50
51
# File 'lib/muwu/project/project.rb', line 49

def css_manifest_filename
  File.absolute_path(File.join(path_css, 'index.scss'))
end

#default_text_block_nameObject



63
64
65
# File 'lib/muwu/project/project.rb', line 63

def default_text_block_name
  Default::PROJECT_OUTLINE[:default_text_block_name]
end

#does_not_have_crucial_filesObject



68
69
70
71
72
# File 'lib/muwu/project/project.rb', line 68

def does_not_have_crucial_files
  exceptions_include?(ProjectException::MetadataFileNotFound) &&
  exceptions_include?(ProjectException::OptionsFileNotFound) &&
  exceptions_include?(ProjectException::OutlineFileNotFound)
end

#exceptions_add(exception) ⇒ Object



75
76
77
# File 'lib/muwu/project/project.rb', line 75

def exceptions_add(exception)
  @exceptions << exception
end

#exceptions_fatalObject



80
81
82
# File 'lib/muwu/project/project.rb', line 80

def exceptions_fatal
  @exceptions.select{ |e| e.type == :fatal }
end

#exceptions_include?(exception) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/muwu/project/project.rb', line 85

def exceptions_include?(exception)
  @exceptions.map{ |e| e.class }.include?(exception)
end

#has_multiple_html_documentsObject



90
91
92
# File 'lib/muwu/project/project.rb', line 90

def has_multiple_html_documents
  @manifest.documents_html_count > 1
end

#html_basenameObject



95
96
97
98
99
100
101
# File 'lib/muwu/project/project.rb', line 95

def html_basename
  if @options.output_file_html_basename.to_s == ''
    SanitizerHelper::sanitize_destination_file_basename('index').downcase
  else
    SanitizerHelper::sanitize_destination_file_basename(@options.output_file_html_basename).downcase
  end
end

#inspectObject



30
31
32
# File 'lib/muwu/project/project.rb', line 30

def inspect
  ["#{self.to_s}", "{", inspect_instance_variables, "}"].join(' ')
end

#inspect_instance_variablesObject



35
36
37
# File 'lib/muwu/project/project.rb', line 35

def inspect_instance_variables
  self.instance_variables.map { |v| "#{v}=#<#{instance_variable_get(v).class}>" }.join(", ")
end

#js_basenameObject



104
105
106
107
108
109
110
# File 'lib/muwu/project/project.rb', line 104

def js_basename
  if @options.output_file_js_basename.to_s == ''
    SanitizerHelper::sanitize_destination_file_basename(slug).downcase
  else
    SanitizerHelper::sanitize_destination_file_basename(@options.output_file_js_basename).downcase
  end
end

#metadata_file_does_existObject



113
114
115
# File 'lib/muwu/project/project.rb', line 113

def 
  File.exists?() == true
end

#metadata_file_does_not_existObject



118
119
120
# File 'lib/muwu/project/project.rb', line 118

def 
  File.exists?() == false
end

#metadata_filenameObject



123
124
125
# File 'lib/muwu/project/project.rb', line 123

def 
  determine_project_asset_filepath(:metadata)
end

#options_file_does_existObject



128
129
130
# File 'lib/muwu/project/project.rb', line 128

def options_file_does_exist
  File.exists?(options_filename) == true
end

#options_file_does_not_existObject



133
134
135
# File 'lib/muwu/project/project.rb', line 133

def options_file_does_not_exist
  File.exists?(options_filename) == false
end

#options_filenameObject



138
139
140
# File 'lib/muwu/project/project.rb', line 138

def options_filename
  determine_project_asset_filepath(:options)
end

#outline_file_does_existObject



143
144
145
# File 'lib/muwu/project/project.rb', line 143

def outline_file_does_exist
  File.exists?(outline_filename) == true
end

#outline_file_does_not_existObject



148
149
150
# File 'lib/muwu/project/project.rb', line 148

def outline_file_does_not_exist
  File.exists?(outline_filename) == false
end

#outline_filenameObject



153
154
155
# File 'lib/muwu/project/project.rb', line 153

def outline_filename
  determine_project_asset_filepath(:outline)
end

#outline_has_more_than_one_documentObject



158
159
160
# File 'lib/muwu/project/project.rb', line 158

def outline_has_more_than_one_document
  outline_length > 1
end

#outline_has_only_one_documentObject



163
164
165
# File 'lib/muwu/project/project.rb', line 163

def outline_has_only_one_document
  outline_length == 1
end

#outline_lengthObject



168
169
170
# File 'lib/muwu/project/project.rb', line 168

def outline_length
  outline.length
end

#outline_text_block_namesObject



173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/muwu/project/project.rb', line 173

def outline_text_block_names
  result = []
  outline_text_blocks.each do |text_block|
    text_block_name = determine_text_block_name(text_block)
    if text_block_name == ''
      result << 'main'
    else
      result << text_block_name
    end
  end
  result.uniq
end

#outline_text_blocksObject



187
188
189
# File 'lib/muwu/project/project.rb', line 187

def outline_text_blocks
  @outline.flatten.select { |outline_step| (Hash === outline_step) && (RegexpLib.outline_text =~ outline_step.flatten[0]) }
end

#outline_text_blocks_named(text_root_name) ⇒ Object



192
193
194
195
196
197
198
199
200
201
# File 'lib/muwu/project/project.rb', line 192

def outline_text_blocks_named(text_root_name)
  result = []
  outline_text_blocks.each do |text_block|
    text_block_name = determine_text_block_name(text_block)
    if text_block_name == text_root_name.downcase
      result.concat(text_block.flatten[1])
    end
  end
  result
end

#outline_text_pathnamesObject



204
205
206
# File 'lib/muwu/project/project.rb', line 204

def outline_text_pathnames
  @options.outline_text_pathnames
end

#outline_text_pathnames_are_explicitObject



209
210
211
# File 'lib/muwu/project/project.rb', line 209

def outline_text_pathnames_are_explicit
  @options.outline_text_pathnames == 'explicit'
end

#outline_text_pathnames_are_flexibleObject



214
215
216
# File 'lib/muwu/project/project.rb', line 214

def outline_text_pathnames_are_flexible
  @options.outline_text_pathnames == 'flexible'
end

#outline_text_pathnames_are_implicitObject



219
220
221
# File 'lib/muwu/project/project.rb', line 219

def outline_text_pathnames_are_implicit
  @options.outline_text_pathnames == 'implicit'
end

#outlined_documentsObject



224
225
226
# File 'lib/muwu/project/project.rb', line 224

def outlined_documents
  @outline
end

#outlined_documents_by_indexObject



229
230
231
232
233
234
235
# File 'lib/muwu/project/project.rb', line 229

def outlined_documents_by_index
  result = {}
  @outline.each_index do |index|
    result[index] = @outline[index]
  end      
  result
end

#output_destinationObject



238
239
240
# File 'lib/muwu/project/project.rb', line 238

def output_destination
  @options.output_destination
end

#output_destination_requests_stdoutObject



243
244
245
# File 'lib/muwu/project/project.rb', line 243

def output_destination_requests_stdout
  @options.output_destination == 'stdout'
end

#output_formats_severalObject



248
249
250
# File 'lib/muwu/project/project.rb', line 248

def output_formats_several
  @options.output_formats.length > 1
end

#path_configObject



253
254
255
# File 'lib/muwu/project/project.rb', line 253

def path_config
  File.absolute_path(File.join(@working_directory, 'config'))
end

#path_cssObject



258
259
260
# File 'lib/muwu/project/project.rb', line 258

def path_css
  File.absolute_path(File.join(path_config, 'css'))
end

#path_css_baseObject



263
264
265
# File 'lib/muwu/project/project.rb', line 263

def path_css_base
  File.absolute_path(File.join(path_css, 'base'))
end

#path_css_colorsObject



268
269
270
# File 'lib/muwu/project/project.rb', line 268

def path_css_colors
  File.absolute_path(File.join(path_css, 'colors'))
end

#path_css_extensionsObject



273
274
275
# File 'lib/muwu/project/project.rb', line 273

def path_css_extensions
  File.absolute_path(File.join(path_css, 'extensions'))
end

#path_imagesObject



278
279
280
# File 'lib/muwu/project/project.rb', line 278

def path_images
  File.absolute_path(File.join(@working_directory, 'images'))
end

#path_outlineObject



283
284
285
# File 'lib/muwu/project/project.rb', line 283

def path_outline
  @working_directory
end

#path_textObject



288
289
290
# File 'lib/muwu/project/project.rb', line 288

def path_text
  File.absolute_path(File.join(@working_directory, 'text'))
end

#sort_outline_text_blocksObject



302
303
304
305
306
307
308
309
310
311
312
313
314
315
# File 'lib/muwu/project/project.rb', line 302

def sort_outline_text_blocks
  result = []
  outline_text_blocks.each do |text_block|
    text_block_name = determine_text_block_name(text_block)
    text_block_contents = determine_text_block_contents(text_block)
    existing_block = result.select { |b| b.has_key?(text_block_name) }.flatten
    if existing_block.empty?
      result << { text_block_name => text_block_contents }          
    else
      existing_block[text_block_name].concat(text_block_contents)
    end
  end
  result
end

#text_block_naming_is_not_simpleObject



323
324
325
# File 'lib/muwu/project/project.rb', line 323

def text_block_naming_is_not_simple
  text_block_naming_is_simple == false
end

#text_block_naming_is_simpleObject



318
319
320
# File 'lib/muwu/project/project.rb', line 318

def text_block_naming_is_simple
  outline_text_block_names == [default_text_block_name]
end

#titleObject



328
329
330
331
332
333
334
# File 'lib/muwu/project/project.rb', line 328

def title
  if @metadata.has_key?('title')
    @metadata['title']
  else
    working_directory_name
  end
end

#will_create_css_fileObject



337
338
339
# File 'lib/muwu/project/project.rb', line 337

def will_create_css_file
  @options.output_formats.include?('css')
end

#will_create_html_file_onlyObject



342
343
344
# File 'lib/muwu/project/project.rb', line 342

def will_create_html_file_only
  @options.output_formats == ['html']
end

#will_create_javascript_fileObject



347
348
349
350
351
# File 'lib/muwu/project/project.rb', line 347

def will_create_javascript_file
  if will_require_javascript_libraries
    @options.output_formats.include?('js')
  end
end

#will_embed_at_least_one_assetObject



359
360
361
# File 'lib/muwu/project/project.rb', line 359

def will_embed_at_least_one_asset
  will_embed_css || will_embed_js
end

#will_embed_cssObject



364
365
366
# File 'lib/muwu/project/project.rb', line 364

def will_embed_css
  will_create_css_file == false
end

#will_embed_jsObject



369
370
371
# File 'lib/muwu/project/project.rb', line 369

def will_embed_js
  will_create_javascript_file == false
end

#will_generate_navigators_automaticallyObject



374
375
376
# File 'lib/muwu/project/project.rb', line 374

def will_generate_navigators_automatically
  (outline_has_more_than_one_document) && (@options.generate_navigators_automatically == true) && (@options.output_destination == 'file')
end

#will_generate_subcontents_automaticallyObject



379
380
381
# File 'lib/muwu/project/project.rb', line 379

def will_generate_subcontents_automatically
  (outline_has_more_than_one_document) && (@options.generate_subcontents_automatically == true)
end

#will_not_generate_navigators_automaticallyObject



389
390
391
# File 'lib/muwu/project/project.rb', line 389

def will_not_generate_navigators_automatically
  not will_generate_navigators_automatically
end

#will_not_generate_subcontents_automaticallyObject



394
395
396
# File 'lib/muwu/project/project.rb', line 394

def will_not_generate_subcontents_automatically
  not will_generate_subcontents_automatically
end

#will_render_section_numbersObject



384
385
386
# File 'lib/muwu/project/project.rb', line 384

def will_render_section_numbers
  @options.render_section_numbers == true
end

#will_require_javascript_librariesObject



354
355
356
# File 'lib/muwu/project/project.rb', line 354

def will_require_javascript_libraries
  @javascript_libraries_requested.count > 0
end

#working_directory_nameObject



399
400
401
# File 'lib/muwu/project/project.rb', line 399

def working_directory_name
  @working_directory.split(File::SEPARATOR)[-1]
end