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,46 @@
1
+ module Muwu
2
+ module RenderHtmlPartialBuilder
3
+ class DocumentCssBuilder
4
+
5
+
6
+ include Muwu
7
+
8
+
9
+ attr_accessor(
10
+ :renderer
11
+ )
12
+
13
+
14
+ def self.build
15
+ builder = new
16
+ yield(builder)
17
+ builder.renderer
18
+ end
19
+
20
+
21
+ def initialize
22
+ @renderer = RenderHtmlPartial::DocumentCss.new
23
+ end
24
+
25
+
26
+ def build_from_manifest_document(document)
27
+ @document = document
28
+ @project = document.project
29
+ set_destination
30
+ set_project
31
+ end
32
+
33
+
34
+ def set_destination
35
+ @renderer.destination = @document.destination
36
+ end
37
+
38
+
39
+ def set_project
40
+ @renderer.project = @project
41
+ end
42
+
43
+
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,211 @@
1
+ module Muwu
2
+ module RenderHtmlPartialBuilder
3
+ class DocumentHtmlBuilder
4
+
5
+
6
+ include Muwu
7
+ include Helper
8
+
9
+
10
+ attr_accessor(
11
+ :renderer
12
+ )
13
+
14
+
15
+ def self.build
16
+ builder = new
17
+ yield(builder)
18
+ builder.renderer
19
+ end
20
+
21
+
22
+ def initialize
23
+ @renderer = RenderHtmlPartial::DocumentHtml.new
24
+ end
25
+
26
+
27
+ def build_from_manifest_document(document)
28
+ @document = document
29
+ @project = document.project
30
+ set_destination
31
+ set_html_lang
32
+ set_html_title
33
+ set_head_css_method
34
+ set_head_js_libraries
35
+ set_head_js_method
36
+ set_head_includes_metadata_tags
37
+ set_head_metadata
38
+ set_project
39
+ set_tasks
40
+ finally_set_css_filename
41
+ finally_set_js_filename
42
+ end
43
+
44
+
45
+ def finally_set_css_filename
46
+ if @renderer.head_css_method == :link
47
+ @renderer.head_css_filename = @document.css_filename
48
+ end
49
+ end
50
+
51
+
52
+ def finally_set_js_filename
53
+ if @renderer.head_js_method == :link
54
+ @renderer.head_js_filename = @document.js_filename
55
+ end
56
+ end
57
+
58
+
59
+ def set_destination
60
+ @renderer.destination = @document.destination
61
+ end
62
+
63
+
64
+ def set_html_lang
65
+ @renderer.html_lang = @project.options.html_lang
66
+ end
67
+
68
+
69
+ def set_html_title
70
+ @renderer.html_title = determine_html_title
71
+ end
72
+
73
+
74
+ def set_head_includes_metadata_tags
75
+ @renderer.head_includes_metadata_tags = @project.options.html_head_includes_metadata_tags
76
+ end
77
+
78
+
79
+ def set_head_metadata
80
+ if @project.options.html_head_includes_metadata_tags
81
+ @renderer.head_metadata = SanitizerHelper::sanitize_metadata(@project.metadata)
82
+ end
83
+ end
84
+
85
+
86
+ def set_head_css_method
87
+ @renderer.head_css_method = @document.css_include_method
88
+ end
89
+
90
+
91
+ def set_head_js_libraries
92
+ @renderer.head_js_libraries = @document.js_head_libraries
93
+ end
94
+
95
+
96
+ def set_head_js_method
97
+ @renderer.head_js_method = @document.js_include_method
98
+ end
99
+
100
+
101
+ def set_project
102
+ @renderer.project = @project
103
+ end
104
+
105
+
106
+ def set_tasks
107
+ @renderer.tasks = determine_document_tasks
108
+ end
109
+
110
+
111
+
112
+ private
113
+
114
+
115
+ def build_contents(task)
116
+ RenderHtmlPartialBuilder::ContentsBuilder.build do |b|
117
+ b.build_from_manifest_task_contents(task)
118
+ end
119
+ end
120
+
121
+
122
+ def build_metadata(task)
123
+ RenderHtmlPartialBuilder::MetadataBuilder.build do |b|
124
+ b.build_from_manifest_metadata(task)
125
+ end
126
+ end
127
+
128
+
129
+ def build_navigator(task)
130
+ RenderHtmlPartialBuilder::NavigatorBuilder.build do |b|
131
+ b.build_from_manifest_task_navigator(task)
132
+ end
133
+ end
134
+
135
+
136
+ def build_subcontents(task)
137
+ RenderHtmlPartialBuilder::SubcontentsBuilder.build do |b|
138
+ b.build_from_manifest_task_subcontents(task)
139
+ end
140
+ end
141
+
142
+
143
+ def build_text(task)
144
+ RenderHtmlPartialBuilder::TextBuilder.build do |b|
145
+ b.build_from_manifest_text(task)
146
+ end
147
+ end
148
+
149
+
150
+ def build_title(task)
151
+ RenderHtmlPartialBuilder::TitleBuilder.build do |b|
152
+ b.build_from_manifest_title(task)
153
+ end
154
+ end
155
+
156
+
157
+ def determine_document_tasks
158
+ tasks = []
159
+ @document.tasks.each do |task|
160
+ case task
161
+ when ManifestTask::Contents
162
+ tasks << build_contents(task)
163
+
164
+ when ManifestTask::Metadata
165
+ tasks << build_metadata(task)
166
+
167
+ when ManifestTask::Navigator
168
+ tasks << build_navigator(task)
169
+
170
+ when ManifestTask::Subcontents
171
+ tasks << build_subcontents(task)
172
+
173
+ when ManifestTask::Text
174
+ tasks << build_text(task)
175
+
176
+ when ManifestTask::Title
177
+ tasks << build_title(task)
178
+ end
179
+ end
180
+ tasks
181
+ end
182
+
183
+
184
+ def determine_html_title
185
+ if @project.manifest.documents_html_count == 1
186
+ determine_html_title_single_document
187
+ elsif @project.manifest.documents_html_count > 1
188
+ determine_html_title_multiple_documents
189
+ end
190
+ end
191
+
192
+
193
+ def determine_html_title_multiple_documents
194
+ if @document.index == 0
195
+ return @project.title
196
+ elsif @document.index > 0
197
+ project_title = @project.title
198
+ page_current = @document.index + 1
199
+ page_last = @project.manifest.documents_html_count
200
+ return "#{project_title} - page #{page_current} of #{page_last}"
201
+ end
202
+ end
203
+
204
+ def determine_html_title_single_document
205
+ @project.title
206
+ end
207
+
208
+
209
+ end
210
+ end
211
+ end
@@ -0,0 +1,52 @@
1
+ module Muwu
2
+ module RenderHtmlPartialBuilder
3
+ class DocumentJsBuilder
4
+
5
+
6
+ include Muwu
7
+
8
+
9
+ attr_accessor(
10
+ :renderer
11
+ )
12
+
13
+
14
+ def self.build
15
+ builder = new
16
+ yield(builder)
17
+ builder.renderer
18
+ end
19
+
20
+
21
+ def initialize
22
+ @renderer = RenderHtmlPartial::DocumentJs.new
23
+ end
24
+
25
+
26
+ def build_from_manifest_document(document)
27
+ @document = document
28
+ @project = document.project
29
+ set_destination
30
+ set_libraries
31
+ set_project
32
+ end
33
+
34
+
35
+ def set_destination
36
+ @renderer.destination = @document.destination
37
+ end
38
+
39
+
40
+ def set_libraries
41
+ @renderer.libraries = @project.javascript_libraries_requested
42
+ end
43
+
44
+
45
+ def set_project
46
+ @renderer.project = @project
47
+ end
48
+
49
+
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,47 @@
1
+ module Muwu
2
+ module RenderHtmlPartialBuilder
3
+ class MetadataBuilder
4
+
5
+
6
+ include Muwu
7
+ include Helper
8
+
9
+
10
+ attr_accessor(
11
+ :manifest_metadata,
12
+ :renderer
13
+ )
14
+
15
+
16
+ def self.build
17
+ builder = new
18
+ yield(builder)
19
+ builder.renderer
20
+ end
21
+
22
+
23
+ def initialize
24
+ @renderer = RenderHtmlPartial::Metadata.new
25
+ end
26
+
27
+
28
+ def build_from_manifest_metadata(metadata)
29
+ @metadata = metadata
30
+ set_destination
31
+ set_metadata
32
+ end
33
+
34
+
35
+ def set_destination
36
+ @renderer.destination = @metadata.destination
37
+ end
38
+
39
+
40
+ def set_metadata
41
+ @renderer.metadata = SanitizerHelper.sanitize_metadata(@metadata.metadata)
42
+ end
43
+
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,74 @@
1
+ module Muwu
2
+ module RenderHtmlPartialBuilder
3
+ class NavigatorBuilder
4
+
5
+
6
+ include Muwu
7
+
8
+
9
+ attr_accessor(
10
+ :project,
11
+ :renderer
12
+ )
13
+
14
+
15
+ def self.build
16
+ builder = new
17
+ yield(builder)
18
+ builder.renderer
19
+ end
20
+
21
+
22
+ def initialize
23
+ @renderer = RenderHtmlPartial::Navigator.new
24
+ end
25
+
26
+
27
+ def build_from_manifest_task_navigator(navigator)
28
+ @navigator = navigator
29
+ @project = navigator.project
30
+ set_destination
31
+ set_heading
32
+ set_href_document_home
33
+ set_href_document_next
34
+ set_href_document_prev
35
+ end
36
+
37
+
38
+ def set_destination
39
+ @renderer.destination = @navigator.destination
40
+ end
41
+
42
+
43
+ def set_heading
44
+ @renderer.heading = @navigator.heading
45
+ end
46
+
47
+
48
+ def set_href_document_home
49
+ @renderer.href_document_home = determine_href_by_index(@navigator.document_home_index)
50
+ end
51
+
52
+
53
+ def set_href_document_next
54
+ @renderer.href_document_next = determine_href_by_index(@navigator.document_next_index)
55
+ end
56
+
57
+
58
+ def set_href_document_prev
59
+ @renderer.href_document_prev = determine_href_by_index(@navigator.document_prev_index)
60
+ end
61
+
62
+
63
+
64
+ private
65
+
66
+
67
+ def determine_href_by_index(index)
68
+ @project.manifest.find_document_html_by_index(index).destination.output_filename
69
+ end
70
+
71
+
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,85 @@
1
+ module Muwu
2
+ module RenderHtmlPartialBuilder
3
+ class SubcontentsBuilder
4
+
5
+
6
+ include Muwu
7
+
8
+
9
+ attr_accessor(
10
+ :project,
11
+ :renderer,
12
+ :task_subcontents,
13
+ :text_root_name
14
+ )
15
+
16
+
17
+ def self.build
18
+ builder = new
19
+ yield(builder)
20
+ builder.renderer
21
+ end
22
+
23
+
24
+ def initialize
25
+ @renderer = RenderHtmlPartial::Subcontents.new
26
+ end
27
+
28
+
29
+ def build_from_manifest_task_subcontents(task_subcontents)
30
+ @project = task_subcontents.project
31
+ @task_subcontents = task_subcontents
32
+ @text_root_name = task_subcontents.text_root_name
33
+ set_destination
34
+ set_href_helper
35
+ set_html_attr_id
36
+ set_item_depth_max
37
+ set_project
38
+ set_text_root_blocks
39
+ set_will_render_section_numbers
40
+ end
41
+
42
+
43
+ def set_destination
44
+ @renderer.destination = @task_subcontents.destination
45
+ end
46
+
47
+
48
+ def set_href_helper
49
+ @renderer.href_helper = Helper::HtmlHrefHelper.new(@task_subcontents)
50
+ end
51
+
52
+
53
+ def set_html_attr_id
54
+ @renderer.html_attr_id = ['subcontents'].join('_')
55
+ end
56
+
57
+
58
+ def set_item_depth_max
59
+ @renderer.item_depth_max = @project.options.render_sections_distinctly_depth_max
60
+ end
61
+
62
+
63
+ def set_project
64
+ @renderer.project = @project
65
+ end
66
+
67
+
68
+ def set_text_root_blocks
69
+ @renderer.text_root_blocks = @task_subcontents.text_root_blocks
70
+ end
71
+
72
+
73
+ def set_text_root_name
74
+ @renderer.text_root_name = @text_root_name
75
+ end
76
+
77
+
78
+ def set_will_render_section_numbers
79
+ @renderer.will_render_section_numbers = @project.options.render_section_numbers
80
+ end
81
+
82
+
83
+ end
84
+ end
85
+ end