muwu 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,45 @@
1
+ module Muwu
2
+ module RenderHtmlPartial
3
+ class DocumentCss
4
+
5
+
6
+ include Muwu
7
+
8
+
9
+ require 'sassc'
10
+
11
+
12
+ attr_accessor(
13
+ :destination,
14
+ :project,
15
+ )
16
+
17
+
18
+ def render
19
+ @destination.output_stream do
20
+ if @project.exceptions_include?(ProjectException::CssManifestFileNotFound)
21
+ write_css_missing_comment
22
+ else
23
+ write_css
24
+ end
25
+ end
26
+ end
27
+
28
+
29
+ def write_css_missing_comment
30
+ @destination.write_line "/*"
31
+ @destination.write_line "#{ProjectException::CssManifestFileNotFound}"
32
+ @destination.write_line " - CSS manifest file could not be found."
33
+ @destination.write_line " - Expecting `#{project.css_manifest_filename}`"
34
+ @destination.write_line "*/"
35
+ end
36
+
37
+
38
+ def write_css
39
+ @destination.write_inline SassC::Engine.new(File.read(@project.css_manifest_filename), syntax: :scss, load_paths: ['config/css']).render
40
+ end
41
+
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,397 @@
1
+ module Muwu
2
+ module RenderHtmlPartial
3
+ class DocumentHtml
4
+
5
+
6
+ include Muwu
7
+
8
+
9
+ require 'sassc'
10
+
11
+
12
+ attr_accessor(
13
+ :destination,
14
+ :head_css_filename,
15
+ :head_css_method,
16
+ :head_js_filename,
17
+ :head_js_libraries,
18
+ :head_js_method,
19
+ :head_includes_metadata_tags,
20
+ :head_metadata,
21
+ :html_lang,
22
+ :html_title,
23
+ :project,
24
+ :tasks
25
+ )
26
+
27
+
28
+ def initialize
29
+ @head_metadata = {}
30
+ @tasks = []
31
+ end
32
+
33
+
34
+
35
+ public
36
+
37
+
38
+
39
+ def render
40
+ @destination.output_stream do
41
+ render_tag_html_open
42
+ @destination.padding_vertical(1) do
43
+ render_head
44
+ render_body
45
+ end
46
+ write_tag_html_close
47
+ end
48
+ end
49
+
50
+
51
+ def options
52
+ @project.options
53
+ end
54
+
55
+
56
+ def render_body
57
+ @destination.padding_vertical(1) do
58
+ write_tag_body_open
59
+ render_body_manifest_tasks
60
+ write_tag_body_close
61
+ end
62
+ end
63
+
64
+
65
+ def render_body_manifest_tasks
66
+ @destination.padding_vertical(1) do
67
+ @tasks.each do |task|
68
+ task.render
69
+ end
70
+ end
71
+ end
72
+
73
+
74
+ def render_head
75
+ @destination.padding_vertical(1) do
76
+ write_tag_head_open
77
+ @destination.margin_indent do
78
+ write_tag_title
79
+ render_head_meta_tags
80
+ render_head_css
81
+ render_head_js
82
+ end
83
+ write_tag_head_close
84
+ end
85
+ end
86
+
87
+
88
+ def render_head_css
89
+ case @head_css_method
90
+ when :embed
91
+ render_head_css_embed
92
+ when :link
93
+ render_head_css_link
94
+ end
95
+ end
96
+
97
+
98
+ def render_head_css_embed
99
+ write_tag_style_open
100
+ write_css_if_manifest_exists
101
+ write_tag_style_close
102
+ end
103
+
104
+
105
+ def render_head_css_link
106
+ write_tag_link_stylesheet
107
+ end
108
+
109
+
110
+ def render_head_js
111
+ case @head_js_method
112
+ when :embed
113
+ render_head_js_embed
114
+ when :link
115
+ render_head_js_link
116
+ end
117
+ end
118
+
119
+
120
+ def render_head_js_embed
121
+ write_tag_script_open
122
+ @head_js_libraries.each do |library|
123
+ write_js_library(library)
124
+ end
125
+ write_tag_script_close
126
+ end
127
+
128
+
129
+ def render_head_js_lib_navigation
130
+ if @project.options.html_uses_javascript_navigation
131
+ write_js_lib_navigation
132
+ end
133
+ end
134
+
135
+
136
+ def render_head_js_link
137
+ write_tag_script_src
138
+ end
139
+
140
+
141
+ def render_head_meta_tags
142
+ write_tag_meta_charset_utf8
143
+ if @head_includes_metadata_tags
144
+ @head_metadata.each_pair do |key, value|
145
+ write_tag_meta(key, value)
146
+ end
147
+ end
148
+ write_tag_meta_generator
149
+ write_tag_meta_viewport
150
+ end
151
+
152
+
153
+ def render_tag_html_open
154
+ write_tag_doctype
155
+ if @html_lang
156
+ write_tag_html_open_lang
157
+ else
158
+ write_tag_html_open
159
+ end
160
+ end
161
+
162
+
163
+ def write_css_if_manifest_exists
164
+ if @project.exceptions_include?(ProjectException::CssManifestFileNotFound)
165
+ write_css_missing_comment
166
+ else
167
+ write_css
168
+ end
169
+ end
170
+
171
+
172
+ def write_css
173
+ @destination.write_inline sassc::Engine.new(File.read(@project.css_manifest_filename), syntax: :scss, load_paths: ['config/css']).render
174
+ end
175
+
176
+
177
+ def write_css_missing_comment
178
+ @destination.write_line "/*"
179
+ @destination.write_line "#{ProjectException::CssManifestFileNotFound}"
180
+ @destination.write_line " - CSS manifest file could not be found."
181
+ @destination.write_line " - Expecting `#{project.css_manifest_filename}`"
182
+ @destination.write_line "*/"
183
+ end
184
+
185
+
186
+ def write_js_library(library)
187
+ @destination.write_inline RenderHtmlPartial::JsLibrary.new.find(library)
188
+ end
189
+
190
+
191
+ def write_tag_body_close
192
+ @destination.write_line tag_body_close
193
+ end
194
+
195
+
196
+ def write_tag_body_open
197
+ @destination.write_line tag_body_open
198
+ end
199
+
200
+
201
+ def write_tag_doctype
202
+ @destination.write_line tag_doctype
203
+ end
204
+
205
+
206
+ def write_tag_head_close
207
+ @destination.write_line tag_head_close
208
+ end
209
+
210
+
211
+ def write_tag_head_open
212
+ @destination.write_line tag_head_open
213
+ end
214
+
215
+
216
+ def write_tag_html_close
217
+ @destination.write_line tag_html_close
218
+ end
219
+
220
+
221
+ def write_tag_html_open
222
+ @destination.write_line tag_html_open
223
+ end
224
+
225
+
226
+ def write_tag_html_open_lang
227
+ @destination.write_line tag_html_open_lang
228
+ end
229
+
230
+
231
+ def write_tag_link_stylesheet
232
+ @destination.write_line tag_link_stylesheet
233
+ end
234
+
235
+
236
+ def write_tag_meta(key, value)
237
+ @destination.write_line tag_meta(key, value)
238
+ end
239
+
240
+
241
+ def write_tag_meta_charset_utf8
242
+ @destination.write_line tag_meta_charset_utf8
243
+ end
244
+
245
+
246
+ def write_tag_meta_generator
247
+ @destination.write_line tag_meta_generator
248
+ end
249
+
250
+
251
+ def write_tag_meta_viewport
252
+ @destination.write_line tag_meta_viewport
253
+ end
254
+
255
+
256
+ def write_tag_meta_instance_date
257
+ @destination.write_line tag_meta_instance_date
258
+ end
259
+
260
+
261
+ def write_tag_script_close
262
+ @destination.write_line tag_script_close
263
+ end
264
+
265
+
266
+ def write_tag_script_open
267
+ @destination.write_line tag_script_open
268
+ end
269
+
270
+
271
+ def write_tag_script_src
272
+ @destination.write_line tag_script_src
273
+ end
274
+
275
+
276
+ def write_tag_style_close
277
+ @destination.write_line tag_style_close
278
+ end
279
+
280
+
281
+ def write_tag_style_open
282
+ @destination.write_line tag_style_open
283
+ end
284
+
285
+
286
+ def write_tag_title
287
+ @destination.write_line tag_title
288
+ end
289
+
290
+
291
+
292
+ private
293
+
294
+
295
+ def tag_body_close
296
+ "</body>"
297
+ end
298
+
299
+
300
+ def tag_body_open
301
+ "<body>"
302
+ end
303
+
304
+
305
+ def tag_doctype
306
+ "<!DOCTYPE html>"
307
+ end
308
+
309
+
310
+ def tag_head_close
311
+ "</head>"
312
+ end
313
+
314
+
315
+ def tag_head_open
316
+ "<head>"
317
+ end
318
+
319
+
320
+ def tag_html_close
321
+ "</html>"
322
+ end
323
+
324
+
325
+ def tag_html_open
326
+ "<html>"
327
+ end
328
+
329
+
330
+ def tag_html_open_lang
331
+ "<html lang='#{@html_lang}'>"
332
+ end
333
+
334
+
335
+ def tag_link_stylesheet
336
+ "<link rel='stylesheet' href='#{@head_css_filename}' type='text/css'>"
337
+ end
338
+
339
+
340
+ def tag_meta(key, value)
341
+ "<meta name='#{key}' value='#{value}'>"
342
+ end
343
+
344
+
345
+ def tag_meta_charset_utf8
346
+ "<meta charset='UTF-8'>"
347
+ end
348
+
349
+
350
+ def tag_meta_generator
351
+ "<meta name='generator' content='Muwu #{Muwu::VERSION}'>"
352
+ end
353
+
354
+
355
+ def tag_meta_instance_date
356
+ "<meta name='date_of_this_edition' value='#{@project.instance_date}'>\n"
357
+ end
358
+
359
+
360
+ def tag_meta_viewport
361
+ "<meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=yes'>"
362
+ end
363
+
364
+
365
+ def tag_script_close
366
+ "</script>"
367
+ end
368
+
369
+
370
+ def tag_script_open
371
+ "<script>"
372
+ end
373
+
374
+
375
+ def tag_script_src
376
+ "<script src='#{@head_js_filename}'></script>"
377
+ end
378
+
379
+
380
+ def tag_style_close
381
+ "</style>"
382
+ end
383
+
384
+
385
+ def tag_style_open
386
+ "<style>"
387
+ end
388
+
389
+
390
+ def tag_title
391
+ "<title>#{@html_title}</title>"
392
+ end
393
+
394
+
395
+ end
396
+ end
397
+ end
@@ -0,0 +1,37 @@
1
+ module Muwu
2
+ module RenderHtmlPartial
3
+ class DocumentJs
4
+
5
+
6
+ include Muwu
7
+
8
+
9
+ attr_accessor(
10
+ :destination,
11
+ :libraries,
12
+ :project
13
+ )
14
+
15
+
16
+ def render
17
+ @destination.output_stream do
18
+ libraries.each do |library|
19
+ write_library(library)
20
+ end
21
+ end
22
+ end
23
+
24
+
25
+ def options
26
+ @project.options
27
+ end
28
+
29
+
30
+ def write_library(library)
31
+ @destination.write_inline RenderHtmlPartial::JsLibrary.new.find(library)
32
+ end
33
+
34
+
35
+ end
36
+ end
37
+ end