muwu 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +7 -0
  2. data/bin/muwu +5 -0
  3. data/lib/muwu.rb +38 -0
  4. data/lib/muwu/cli/cli.rb +143 -0
  5. data/lib/muwu/cli/cli_help.rb +28 -0
  6. data/lib/muwu/cli/help/compile +22 -0
  7. data/lib/muwu/cli/help/concat +8 -0
  8. data/lib/muwu/cli/help/heading +2 -0
  9. data/lib/muwu/cli/help/inspect +7 -0
  10. data/lib/muwu/cli/help/new +8 -0
  11. data/lib/muwu/cli/help/reset +14 -0
  12. data/lib/muwu/cli/help/summary +14 -0
  13. data/lib/muwu/controller/controller.rb +120 -0
  14. data/lib/muwu/controller/controller_interaction.rb +146 -0
  15. data/lib/muwu/default/default.rb +51 -0
  16. data/lib/muwu/destination/destination.rb +212 -0
  17. data/lib/muwu/destination_builder/destination_builder.rb +127 -0
  18. data/lib/muwu/helper/hash_helper.rb +37 -0
  19. data/lib/muwu/helper/html_href_helper.rb +101 -0
  20. data/lib/muwu/helper/outline_helper.rb +160 -0
  21. data/lib/muwu/helper/regexp_lib.rb +101 -0
  22. data/lib/muwu/helper/sanitizer_helper.rb +50 -0
  23. data/lib/muwu/manifest/manifest.rb +158 -0
  24. data/lib/muwu/manifest_builder/manifest_builder.rb +102 -0
  25. data/lib/muwu/manifest_task/contents.rb +42 -0
  26. data/lib/muwu/manifest_task/document_css.rb +25 -0
  27. data/lib/muwu/manifest_task/document_html.rb +69 -0
  28. data/lib/muwu/manifest_task/document_js.rb +25 -0
  29. data/lib/muwu/manifest_task/metadata.rb +35 -0
  30. data/lib/muwu/manifest_task/navigator.rb +29 -0
  31. data/lib/muwu/manifest_task/subcontents.rb +48 -0
  32. data/lib/muwu/manifest_task/text.rb +51 -0
  33. data/lib/muwu/manifest_task/text_item.rb +124 -0
  34. data/lib/muwu/manifest_task/title.rb +34 -0
  35. data/lib/muwu/manifest_task_builder/contents_builder.rb +88 -0
  36. data/lib/muwu/manifest_task_builder/document_css_builder.rb +63 -0
  37. data/lib/muwu/manifest_task_builder/document_html_builder.rb +210 -0
  38. data/lib/muwu/manifest_task_builder/document_js_builder.rb +69 -0
  39. data/lib/muwu/manifest_task_builder/metadata_builder.rb +118 -0
  40. data/lib/muwu/manifest_task_builder/navigator_builder.rb +78 -0
  41. data/lib/muwu/manifest_task_builder/subcontents_builder.rb +90 -0
  42. data/lib/muwu/manifest_task_builder/text_builder.rb +125 -0
  43. data/lib/muwu/manifest_task_builder/text_item_builder.rb +314 -0
  44. data/lib/muwu/manifest_task_builder/title_builder.rb +122 -0
  45. data/lib/muwu/project/project.rb +430 -0
  46. data/lib/muwu/project_builder/assets/config/css/base/html_elements.scss +138 -0
  47. data/lib/muwu/project_builder/assets/config/css/base/index.scss +11 -0
  48. data/lib/muwu/project_builder/assets/config/css/base/mixin_text_section_heading.scss +23 -0
  49. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_contents.scss +58 -0
  50. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_metadata.scss +17 -0
  51. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_navigator.scss +13 -0
  52. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_subcontents.scss +58 -0
  53. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_text.scss +48 -0
  54. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_title.scss +22 -0
  55. data/lib/muwu/project_builder/assets/config/css/colors/dark.scss +32 -0
  56. data/lib/muwu/project_builder/assets/config/css/colors/index.scss +1 -0
  57. data/lib/muwu/project_builder/assets/config/css/colors/light.scss +34 -0
  58. data/lib/muwu/project_builder/assets/config/css/extensions/index.scss +1 -0
  59. data/lib/muwu/project_builder/assets/config/css/index.scss +19 -0
  60. data/lib/muwu/project_builder/assets/config/css_debugger/debug_section_text.scss +27 -0
  61. data/lib/muwu/project_builder/project_reader.rb +144 -0
  62. data/lib/muwu/project_builder/project_reset_css.rb +95 -0
  63. data/lib/muwu/project_builder/project_starter.rb +27 -0
  64. data/lib/muwu/project_builder/project_validator.rb +157 -0
  65. data/lib/muwu/project_builder/project_writer.rb +127 -0
  66. data/lib/muwu/project_exception/css_manifest_file_not_found.rb +23 -0
  67. data/lib/muwu/project_exception/dry_output_recommended_with_multiple_documents.rb +19 -0
  68. data/lib/muwu/project_exception/metadata_file_not_found.rb +24 -0
  69. data/lib/muwu/project_exception/metadata_value_not_given.rb +42 -0
  70. data/lib/muwu/project_exception/multiple_documents_outlined_with_stdout.rb +18 -0
  71. data/lib/muwu/project_exception/multiple_formats_requested_with_stdout.rb +18 -0
  72. data/lib/muwu/project_exception/navigator_not_recommended_with_stdout.rb +23 -0
  73. data/lib/muwu/project_exception/navigators_will_be_generated_automatically.rb +23 -0
  74. data/lib/muwu/project_exception/option_key_not_understood.rb +23 -0
  75. data/lib/muwu/project_exception/option_not_validatable.rb +23 -0
  76. data/lib/muwu/project_exception/option_value_not_understood.rb +24 -0
  77. data/lib/muwu/project_exception/options_file_not_found.rb +24 -0
  78. data/lib/muwu/project_exception/outline_file_not_found.rb +24 -0
  79. data/lib/muwu/project_exception/outline_step_not_understood.rb +23 -0
  80. data/lib/muwu/project_exception/output_already_open.rb +18 -0
  81. data/lib/muwu/project_exception/output_not_open.rb +18 -0
  82. data/lib/muwu/project_exception/subcontents_will_be_generated_automatically copy.rb +23 -0
  83. data/lib/muwu/project_exception/target_project_folder_already_exists.rb +24 -0
  84. data/lib/muwu/project_exception/text_source_file_not_found.rb +26 -0
  85. data/lib/muwu/project_exception_handler/fatal.rb +39 -0
  86. data/lib/muwu/project_options/project_options.rb +54 -0
  87. data/lib/muwu/project_options_builder/project_option_validator.rb +37 -0
  88. data/lib/muwu/project_options_builder/project_option_validator_key.rb +56 -0
  89. data/lib/muwu/project_options_builder/project_option_validator_value.rb +300 -0
  90. data/lib/muwu/project_options_builder/project_options_reader.rb +80 -0
  91. data/lib/muwu/render_concat/render_concat.rb +80 -0
  92. data/lib/muwu/render_html/render_html.rb +101 -0
  93. data/lib/muwu/render_html/render_markup_to_html.rb +87 -0
  94. data/lib/muwu/render_html_builder/render_css_builder.rb +34 -0
  95. data/lib/muwu/render_html_builder/render_html_builder.rb +34 -0
  96. data/lib/muwu/render_html_builder/render_js_builder.rb +34 -0
  97. data/lib/muwu/render_html_partial/js_library/_init_bare.js +7 -0
  98. data/lib/muwu/render_html_partial/js_library/_zepto.min.js +2 -0
  99. data/lib/muwu/render_html_partial/js_library/init.js +10 -0
  100. data/lib/muwu/render_html_partial/js_library/navigation.js +140 -0
  101. data/lib/muwu/render_html_partial/render_contents.rb +369 -0
  102. data/lib/muwu/render_html_partial/render_document_css.rb +45 -0
  103. data/lib/muwu/render_html_partial/render_document_html.rb +397 -0
  104. data/lib/muwu/render_html_partial/render_document_js.rb +37 -0
  105. data/lib/muwu/render_html_partial/render_js_library.rb +54 -0
  106. data/lib/muwu/render_html_partial/render_metadata.rb +120 -0
  107. data/lib/muwu/render_html_partial/render_navigator.rb +136 -0
  108. data/lib/muwu/render_html_partial/render_subcontents.rb +374 -0
  109. data/lib/muwu/render_html_partial/render_text.rb +74 -0
  110. data/lib/muwu/render_html_partial/render_text_item.rb +230 -0
  111. data/lib/muwu/render_html_partial/render_title.rb +71 -0
  112. data/lib/muwu/render_html_partial_builder/render_contents_builder.rb +100 -0
  113. data/lib/muwu/render_html_partial_builder/render_document_css_builder.rb +46 -0
  114. data/lib/muwu/render_html_partial_builder/render_document_html_builder.rb +211 -0
  115. data/lib/muwu/render_html_partial_builder/render_document_js_builder.rb +52 -0
  116. data/lib/muwu/render_html_partial_builder/render_metadata_builder.rb +47 -0
  117. data/lib/muwu/render_html_partial_builder/render_navigator_builder.rb +74 -0
  118. data/lib/muwu/render_html_partial_builder/render_subcontents_builder.rb +85 -0
  119. data/lib/muwu/render_html_partial_builder/render_text_builder.rb +86 -0
  120. data/lib/muwu/render_html_partial_builder/render_text_item_builder.rb +274 -0
  121. data/lib/muwu/render_html_partial_builder/render_title_builder.rb +47 -0
  122. data/lib/muwu/render_inspector/render_inspector.rb +224 -0
  123. data/lib/muwu/var/deflistdiv.rb +239 -0
  124. data/lib/muwu_loader.rb +35 -0
  125. data/test/what_no_tests.md +5 -0
  126. metadata +251 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: dafa3354f3a57677adacf16fe9372167ce2572b68e445fb0f95192142c116633
4
+ data.tar.gz: 83130270c6bcfbbb7c3fd46a3cc8825441999eae801dd1ba15368acffc315464
5
+ SHA512:
6
+ metadata.gz: 8a036a78dd8a1ef10f0776a7d014c4e953ababeb0ca154e0718499a8252b06b3b4a708fa9c4542803a986e70f0fdad4bef8e9997b541eabb9f01858f82118722
7
+ data.tar.gz: 819c5595a937ff67464e3829b0243d86a2cf3b429bcadf232dfc13eea7995d9c6fe583c48f39555479597a66ebc4cff2dc95eb199693ffd10dcb3d9850a281df
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/muwu.rb'
4
+
5
+ Muwu::Cli.new(ARGV).evaluate_arguments
@@ -0,0 +1,38 @@
1
+ module Muwu
2
+
3
+
4
+ VERSION = '2.5.1'
5
+
6
+ GEM_HOME_LIB = File.absolute_path(File.join(File.dirname(__FILE__)))
7
+ GEM_HOME_LIB_MUWU = File.absolute_path(File.join(GEM_HOME_LIB, 'muwu'))
8
+
9
+
10
+ require 'commonmarker'
11
+ require 'fileutils'
12
+ require 'haml'
13
+ require 'iso-639'
14
+ require 'logger'
15
+ require 'motion-markdown-it'
16
+ require 'motion-markdown-it-plugins'
17
+ require 'sassc'
18
+ require 'yaml'
19
+
20
+
21
+ require_relative 'muwu_loader'
22
+
23
+
24
+
25
+ module_function
26
+
27
+
28
+ def debug(file, line, info)
29
+ logger.new(STDERR).debug("#{file} #{line} #{info}")
30
+ end
31
+
32
+
33
+ def read(path)
34
+ ProjectReader.build { |b| b.load_path(path) }
35
+ end
36
+
37
+
38
+ end
@@ -0,0 +1,143 @@
1
+ module Muwu
2
+ class Cli
3
+
4
+
5
+ include Muwu
6
+
7
+
8
+ def initialize(args)
9
+ @args = args.map do |a|
10
+ case a
11
+ when nil
12
+ nil
13
+ else
14
+ a.downcase.strip
15
+ end
16
+ end
17
+
18
+ @current_working_directory = Dir.pwd
19
+ end
20
+
21
+
22
+
23
+ public
24
+
25
+
26
+ def evaluate_arguments
27
+ if @args == []
28
+ puts CliHelp.new(:summary).message
29
+ elsif @args != []
30
+ case @args[0]
31
+ when 'compile'
32
+ evaluate_command_compile
33
+ when 'concat'
34
+ evaluate_command_concat
35
+ when 'help'
36
+ evaluate_command_help
37
+ when 'inspect'
38
+ evaluate_command_inspect
39
+ when 'new'
40
+ evaluate_command_new
41
+ when 'reset'
42
+ evaluate_command_reset
43
+ when '--version'
44
+ puts VERSION
45
+ else
46
+ puts CliHelp.new(:summary).message
47
+ end
48
+ end
49
+ end
50
+
51
+
52
+
53
+ private
54
+
55
+
56
+ def evaluate_command_compile
57
+ if @args[1] == nil
58
+ Controller.new(@current_working_directory).compile
59
+
60
+ elsif @args[1] == 'css'
61
+ Controller.new(@current_working_directory).compile_css
62
+
63
+ elsif @args[1] == 'html'
64
+ evaluate_command_compile_html
65
+
66
+ elsif @args[1] == 'js'
67
+ Controller.new(@current_working_directory).compile_js
68
+
69
+ else
70
+ puts CliHelp.new(:compile).message
71
+ end
72
+ end
73
+
74
+
75
+ def evaluate_command_compile_html
76
+ if @args[2] == nil
77
+ Controller.new(@current_working_directory).compile_html
78
+
79
+ elsif @args[2] =~ /\A[0-9]+\z/
80
+ Controller.new(@current_working_directory).compile_html_by_index(@args[2].to_i)
81
+
82
+ else
83
+ puts CliHelp.new(:compile).message
84
+ end
85
+ end
86
+
87
+
88
+ def evaluate_command_concat
89
+ Controller.new(@current_working_directory).concat
90
+ end
91
+
92
+
93
+
94
+ def evaluate_command_help
95
+ if @args[1] == nil
96
+ puts CliHelp.new(:summary).message
97
+
98
+ else
99
+ case @args[1]
100
+ when 'compile'
101
+ puts CliHelp.new(:compile).message
102
+ when 'concat'
103
+ puts CliHelp.new(:concat).message
104
+ when 'inspect'
105
+ puts CliHelp.new(:inspect).message
106
+ when 'new'
107
+ puts CliHelp.new(:new).message
108
+ when 'reset'
109
+ puts CliHelp.new(:reset).message
110
+ else
111
+ puts CliHelp.new(:summary).message
112
+ end
113
+ end
114
+ end
115
+
116
+
117
+ def evaluate_command_inspect
118
+ Controller.new(@current_working_directory).inspect
119
+ end
120
+
121
+
122
+ def evaluate_command_new
123
+ Controller.new(@current_working_directory).new_project
124
+ end
125
+
126
+
127
+ def evaluate_command_reset
128
+ if @args[1] == nil
129
+ puts CliHelp.new(:reset).message
130
+
131
+ else
132
+ case @args[1]
133
+ when 'css'
134
+ Controller.new(@current_working_directory).reset_css
135
+ else
136
+ puts CliHelp.new(:reset).message
137
+ end
138
+ end
139
+ end
140
+
141
+
142
+ end
143
+ end
@@ -0,0 +1,28 @@
1
+ module Muwu
2
+ class CliHelp
3
+
4
+
5
+ def initialize(message)
6
+ @heading = File.open(File.join(GEM_HOME_LIB_MUWU,'cli/help/heading')).read.strip
7
+ @version = "#{version_statement}\n"
8
+ @message = File.open(File.join(GEM_HOME_LIB_MUWU,'cli/help',message.to_s.downcase)).read.strip
9
+ end
10
+
11
+
12
+ def message
13
+ [@heading, @version, @message].join("\n")
14
+ end
15
+
16
+
17
+
18
+ private
19
+
20
+
21
+ def version_statement
22
+ "\# version #{VERSION}"
23
+ end
24
+
25
+
26
+ end
27
+ end
28
+
@@ -0,0 +1,22 @@
1
+ - muwu compile
2
+ - Compile all parts of the the project located in the current working
3
+ directory.
4
+
5
+ - muwu compile css
6
+ - Compile only the stylesheet for the project.
7
+
8
+ - muwu compile html
9
+ - Compile only the html file(s) for the project.
10
+
11
+ - muwu compile html [index]
12
+ - Compile only a single outlined content document, indicated by
13
+ [index]. Use the command `muwu inspect` to determine the index
14
+ number of a document.
15
+
16
+ - muwu compile js
17
+ - Compile only the javascript library (if applicable) for the project.
18
+
19
+ * Compiling a project will overwrite any previous output files without
20
+ any warning.
21
+
22
+ * You can specify output filenames in `options.yml`.
@@ -0,0 +1,8 @@
1
+ - muwu concat
2
+ - Combine all source files from the outline into a single markdown
3
+ document.
4
+
5
+ * Compiling a project will overwrite any previous output files without
6
+ any warning.
7
+
8
+ * This feature is still experimental.
@@ -0,0 +1,2 @@
1
+ # muwu - Markup Writeup
2
+ # Compiles markup files (Markdown and YAML) into an HTML document
@@ -0,0 +1,7 @@
1
+ - muwu inspect
2
+ - Inspect the project in the current working directory, and show details
3
+ about the project, the project outline, and the project manifest (the list
4
+ of documents that would be produced by the command `muwu compile`.)
5
+
6
+ * Inspecting a project does not create or overwrite any files.
7
+
@@ -0,0 +1,8 @@
1
+ - muwu new
2
+ - Create a new project as a subdirectory from the current working directory.
3
+ Muwu will ask for a directory name. If the directory does not exist, Muwu
4
+ will create it and fill it with a blank new project.
5
+
6
+ * Only alphanumeric (a-z, A-Z, 0-9) and underscore (_) characters are allowed
7
+ in the directory name.
8
+
@@ -0,0 +1,14 @@
1
+ - reset css
2
+ - Reset the `config/css` folder. The following files and folders will
3
+ revert to their original state:
4
+
5
+ - config/css/base/
6
+ - config/css/colors/dark.scss
7
+ - config/css/colors/index.scss
8
+ - config/css/colors/light.scss
9
+ - config/css/index.scss
10
+
11
+ * If `config/css/extensions` does exist, it and its contents will remain
12
+ unchanged.
13
+
14
+ * If `config/css/extensions` does not exist, Muwu will create it.
@@ -0,0 +1,14 @@
1
+ "muwu – Because sometimes WYSIWYG is not WYW."
2
+
3
+ Command line:
4
+ muwu compile compile a project into an HTML document suite
5
+ muwu concat combine all source text into a single .md file
6
+ muwu help show this message
7
+ muwu inspect inspect a project
8
+ muwu new create a new project directory
9
+ muwu reset css reset the default CSS files
10
+
11
+ All comands operate within the current working directory.
12
+
13
+ For more detailed instructions:
14
+ muwu help [command]
@@ -0,0 +1,120 @@
1
+ module Muwu
2
+ class Controller
3
+
4
+
5
+ include Muwu
6
+
7
+
8
+ def initialize(current_working_directory)
9
+ @current_working_directory = File.absolute_path(current_working_directory)
10
+ @project = nil
11
+ end
12
+
13
+
14
+
15
+ public
16
+
17
+
18
+ def compile
19
+ @project = read_project_from_current_working_directory
20
+ if @project.does_not_have_crucial_files
21
+ reply_folder_does_not_have_valid_project
22
+ else
23
+ RenderHtml.new(@project).render
24
+ end
25
+ end
26
+
27
+
28
+ def compile_css
29
+ @project = read_project_from_current_working_directory
30
+ if @project.does_not_have_crucial_files
31
+ reply_folder_does_not_have_valid_project
32
+ else
33
+ RenderHtml.new(@project).render_css_only
34
+ end
35
+ end
36
+
37
+
38
+ def compile_html_by_index(index)
39
+ @project = read_project_from_current_working_directory
40
+ if @project.does_not_have_crucial_files
41
+ reply_folder_does_not_have_valid_project
42
+ else
43
+ RenderHtml.new(@project).render_html_by_index(index)
44
+ end
45
+ end
46
+
47
+
48
+ def compile_html
49
+ @project = read_project_from_current_working_directory
50
+ if @project.does_not_have_crucial_files
51
+ reply_folder_does_not_have_valid_project
52
+ else
53
+ RenderHtml.new(@project).render_html_only
54
+ end
55
+ end
56
+
57
+
58
+ def compile_js
59
+ @project = read_project_from_current_working_directory
60
+ if @project.does_not_have_crucial_files
61
+ reply_folder_does_not_have_valid_project
62
+ else
63
+ RenderHtml.new(@project).render_js_only
64
+ end
65
+ end
66
+
67
+
68
+ def concat
69
+ @project = read_project_from_current_working_directory
70
+ if @project.does_not_have_crucial_files
71
+ reply_folder_does_not_have_valid_project
72
+ else
73
+ RenderConcat.new(@project).render
74
+ end
75
+ end
76
+
77
+
78
+ def inspect
79
+ @project = read_project_from_current_working_directory
80
+ if @project.does_not_have_crucial_files
81
+ reply_folder_does_not_have_valid_project
82
+ else
83
+ RenderInspector.new(@project).render_inspector
84
+ end
85
+ end
86
+
87
+
88
+ def new_project
89
+ metadata = ControllerInteraction.new.request_metadata
90
+ @project = ProjectStarter.new(@current_working_directory, metadata).new_project
91
+ ProjectWriter.new(@project).write
92
+ end
93
+
94
+
95
+ def reset_css
96
+ @project = read_project_from_current_working_directory
97
+ if @project.does_not_have_crucial_files
98
+ reply_folder_does_not_have_valid_project
99
+ elsif ControllerInteraction.new.confirm_reset_css(@project)
100
+ ProjectResetCss.new(@project).reset_css
101
+ end
102
+ end
103
+
104
+
105
+
106
+ private
107
+
108
+
109
+ def read_project_from_current_working_directory
110
+ ProjectReader.build { |b| b.load_path(@current_working_directory) }
111
+ end
112
+
113
+
114
+ def reply_folder_does_not_have_valid_project
115
+ puts @project.exceptions
116
+ puts "Is this a Muwu project folder?"
117
+ end
118
+
119
+ end
120
+ end
@@ -0,0 +1,146 @@
1
+ module Muwu
2
+ class ControllerInteraction
3
+
4
+
5
+ attr_accessor :slug
6
+
7
+
8
+ def initialize
9
+ @slug = ''
10
+ end
11
+
12
+
13
+
14
+ public
15
+
16
+
17
+ def confirm_reset_css(project)
18
+ render_reset_css_heading(project)
19
+ render_reset_css_prompt
20
+ @answer = $stdin.gets.chomp.strip.downcase
21
+ if @answer == 'y'
22
+ return true
23
+ else
24
+ return false
25
+ end
26
+ end
27
+
28
+
29
+ def request_metadata
30
+ request_metadata_phase_1_render_heading
31
+ request_metadata_phase_2_request_and_set_slug
32
+ { slug: @slug }
33
+ end
34
+
35
+
36
+ def request_metadata_phase_1_render_heading
37
+ render_new_project_heading
38
+ render_lf
39
+ end
40
+
41
+
42
+ def request_metadata_phase_2_request_and_set_slug
43
+ render_slug_heading
44
+ while @slug == ''
45
+ render_slug_can_not_be_blank
46
+ render_slug_prompt
47
+ @slug = $stdin.gets.chomp.strip
48
+ if @slug.match(/\W/)
49
+ @slug.gsub!(/\W/,'')
50
+ render_slug_was_sanitized(result: @slug)
51
+ end
52
+ end
53
+ render_lf
54
+ end
55
+
56
+
57
+
58
+ private
59
+
60
+
61
+
62
+ def determine_reset_css_files(project)
63
+ [
64
+ File.join(project.path_css_base),
65
+ File.join(project.path_css_colors, 'dark.scss'),
66
+ File.join(project.path_css_colors, 'index.scss'),
67
+ File.join(project.path_css_colors, 'light.scss'),
68
+ File.join(project.path_css, 'index.scss'),
69
+ ]
70
+ end
71
+
72
+
73
+ def render_lf
74
+ puts "\n"
75
+ end
76
+
77
+
78
+ def render_new_project_heading
79
+ puts '# Muwu'
80
+ puts '# New Project'
81
+ end
82
+
83
+
84
+ def render_reset_css_heading(project)
85
+ puts '# Muwu'
86
+ puts '# Reset CSS'
87
+ puts
88
+ puts '- This will reset the following files and folders to their original state:'
89
+ puts
90
+ determine_reset_css_files(project).each do |file|
91
+ puts " - #{file}"
92
+ end
93
+ puts
94
+ puts "* If #{project.path_css_extensions} does not exist, it will be created."
95
+ puts ' Otherwise, its existing contents will remain unchanged.'
96
+ puts
97
+ end
98
+
99
+
100
+ def render_reset_css_prompt
101
+ print '> Continue with CSS reset? (y/N) '
102
+ end
103
+
104
+
105
+ def render_slug_heading
106
+ puts '# Project Directory Name'
107
+ puts '- Word characters `[a-zA-Z0-9_]` only; non-word characters will be removed.'
108
+ end
109
+
110
+
111
+ def render_slug_prompt
112
+ print '> Directory Name for project: '
113
+ end
114
+
115
+
116
+ def render_slug_can_not_be_blank
117
+ puts '- Directory Name can not be blank.'
118
+ end
119
+
120
+
121
+ def render_slug_was_sanitized(result: nil)
122
+ puts '- Directory Name contained non-word characters that were removed.'
123
+ if result
124
+ puts " - Modified Directory Name: `#{result}`"
125
+ end
126
+ end
127
+
128
+
129
+ def render_title_heading
130
+ puts "\n"
131
+ puts '# Project Title'
132
+ end
133
+
134
+
135
+ def render_title_prompt
136
+ print '> Title of project: '
137
+ end
138
+
139
+
140
+ def render_title_can_not_be_blank
141
+ puts '- Title can not be blank.'
142
+ end
143
+
144
+
145
+ end
146
+ end