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,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