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.
- checksums.yaml +7 -0
- data/bin/muwu +5 -0
- data/lib/muwu.rb +38 -0
- data/lib/muwu/cli/cli.rb +143 -0
- data/lib/muwu/cli/cli_help.rb +28 -0
- data/lib/muwu/cli/help/compile +22 -0
- data/lib/muwu/cli/help/concat +8 -0
- data/lib/muwu/cli/help/heading +2 -0
- data/lib/muwu/cli/help/inspect +7 -0
- data/lib/muwu/cli/help/new +8 -0
- data/lib/muwu/cli/help/reset +14 -0
- data/lib/muwu/cli/help/summary +14 -0
- data/lib/muwu/controller/controller.rb +120 -0
- data/lib/muwu/controller/controller_interaction.rb +146 -0
- data/lib/muwu/default/default.rb +51 -0
- data/lib/muwu/destination/destination.rb +212 -0
- data/lib/muwu/destination_builder/destination_builder.rb +127 -0
- data/lib/muwu/helper/hash_helper.rb +37 -0
- data/lib/muwu/helper/html_href_helper.rb +101 -0
- data/lib/muwu/helper/outline_helper.rb +160 -0
- data/lib/muwu/helper/regexp_lib.rb +101 -0
- data/lib/muwu/helper/sanitizer_helper.rb +50 -0
- data/lib/muwu/manifest/manifest.rb +158 -0
- data/lib/muwu/manifest_builder/manifest_builder.rb +102 -0
- data/lib/muwu/manifest_task/contents.rb +42 -0
- data/lib/muwu/manifest_task/document_css.rb +25 -0
- data/lib/muwu/manifest_task/document_html.rb +69 -0
- data/lib/muwu/manifest_task/document_js.rb +25 -0
- data/lib/muwu/manifest_task/metadata.rb +35 -0
- data/lib/muwu/manifest_task/navigator.rb +29 -0
- data/lib/muwu/manifest_task/subcontents.rb +48 -0
- data/lib/muwu/manifest_task/text.rb +51 -0
- data/lib/muwu/manifest_task/text_item.rb +124 -0
- data/lib/muwu/manifest_task/title.rb +34 -0
- data/lib/muwu/manifest_task_builder/contents_builder.rb +88 -0
- data/lib/muwu/manifest_task_builder/document_css_builder.rb +63 -0
- data/lib/muwu/manifest_task_builder/document_html_builder.rb +210 -0
- data/lib/muwu/manifest_task_builder/document_js_builder.rb +69 -0
- data/lib/muwu/manifest_task_builder/metadata_builder.rb +118 -0
- data/lib/muwu/manifest_task_builder/navigator_builder.rb +78 -0
- data/lib/muwu/manifest_task_builder/subcontents_builder.rb +90 -0
- data/lib/muwu/manifest_task_builder/text_builder.rb +125 -0
- data/lib/muwu/manifest_task_builder/text_item_builder.rb +314 -0
- data/lib/muwu/manifest_task_builder/title_builder.rb +122 -0
- data/lib/muwu/project/project.rb +430 -0
- data/lib/muwu/project_builder/assets/config/css/base/html_elements.scss +138 -0
- data/lib/muwu/project_builder/assets/config/css/base/index.scss +11 -0
- data/lib/muwu/project_builder/assets/config/css/base/mixin_text_section_heading.scss +23 -0
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_contents.scss +58 -0
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_metadata.scss +17 -0
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_navigator.scss +13 -0
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_subcontents.scss +58 -0
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_text.scss +48 -0
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_title.scss +22 -0
- data/lib/muwu/project_builder/assets/config/css/colors/dark.scss +32 -0
- data/lib/muwu/project_builder/assets/config/css/colors/index.scss +1 -0
- data/lib/muwu/project_builder/assets/config/css/colors/light.scss +34 -0
- data/lib/muwu/project_builder/assets/config/css/extensions/index.scss +1 -0
- data/lib/muwu/project_builder/assets/config/css/index.scss +19 -0
- data/lib/muwu/project_builder/assets/config/css_debugger/debug_section_text.scss +27 -0
- data/lib/muwu/project_builder/project_reader.rb +144 -0
- data/lib/muwu/project_builder/project_reset_css.rb +95 -0
- data/lib/muwu/project_builder/project_starter.rb +27 -0
- data/lib/muwu/project_builder/project_validator.rb +157 -0
- data/lib/muwu/project_builder/project_writer.rb +127 -0
- data/lib/muwu/project_exception/css_manifest_file_not_found.rb +23 -0
- data/lib/muwu/project_exception/dry_output_recommended_with_multiple_documents.rb +19 -0
- data/lib/muwu/project_exception/metadata_file_not_found.rb +24 -0
- data/lib/muwu/project_exception/metadata_value_not_given.rb +42 -0
- data/lib/muwu/project_exception/multiple_documents_outlined_with_stdout.rb +18 -0
- data/lib/muwu/project_exception/multiple_formats_requested_with_stdout.rb +18 -0
- data/lib/muwu/project_exception/navigator_not_recommended_with_stdout.rb +23 -0
- data/lib/muwu/project_exception/navigators_will_be_generated_automatically.rb +23 -0
- data/lib/muwu/project_exception/option_key_not_understood.rb +23 -0
- data/lib/muwu/project_exception/option_not_validatable.rb +23 -0
- data/lib/muwu/project_exception/option_value_not_understood.rb +24 -0
- data/lib/muwu/project_exception/options_file_not_found.rb +24 -0
- data/lib/muwu/project_exception/outline_file_not_found.rb +24 -0
- data/lib/muwu/project_exception/outline_step_not_understood.rb +23 -0
- data/lib/muwu/project_exception/output_already_open.rb +18 -0
- data/lib/muwu/project_exception/output_not_open.rb +18 -0
- data/lib/muwu/project_exception/subcontents_will_be_generated_automatically copy.rb +23 -0
- data/lib/muwu/project_exception/target_project_folder_already_exists.rb +24 -0
- data/lib/muwu/project_exception/text_source_file_not_found.rb +26 -0
- data/lib/muwu/project_exception_handler/fatal.rb +39 -0
- data/lib/muwu/project_options/project_options.rb +54 -0
- data/lib/muwu/project_options_builder/project_option_validator.rb +37 -0
- data/lib/muwu/project_options_builder/project_option_validator_key.rb +56 -0
- data/lib/muwu/project_options_builder/project_option_validator_value.rb +300 -0
- data/lib/muwu/project_options_builder/project_options_reader.rb +80 -0
- data/lib/muwu/render_concat/render_concat.rb +80 -0
- data/lib/muwu/render_html/render_html.rb +101 -0
- data/lib/muwu/render_html/render_markup_to_html.rb +87 -0
- data/lib/muwu/render_html_builder/render_css_builder.rb +34 -0
- data/lib/muwu/render_html_builder/render_html_builder.rb +34 -0
- data/lib/muwu/render_html_builder/render_js_builder.rb +34 -0
- data/lib/muwu/render_html_partial/js_library/_init_bare.js +7 -0
- data/lib/muwu/render_html_partial/js_library/_zepto.min.js +2 -0
- data/lib/muwu/render_html_partial/js_library/init.js +10 -0
- data/lib/muwu/render_html_partial/js_library/navigation.js +140 -0
- data/lib/muwu/render_html_partial/render_contents.rb +369 -0
- data/lib/muwu/render_html_partial/render_document_css.rb +45 -0
- data/lib/muwu/render_html_partial/render_document_html.rb +397 -0
- data/lib/muwu/render_html_partial/render_document_js.rb +37 -0
- data/lib/muwu/render_html_partial/render_js_library.rb +54 -0
- data/lib/muwu/render_html_partial/render_metadata.rb +120 -0
- data/lib/muwu/render_html_partial/render_navigator.rb +136 -0
- data/lib/muwu/render_html_partial/render_subcontents.rb +374 -0
- data/lib/muwu/render_html_partial/render_text.rb +74 -0
- data/lib/muwu/render_html_partial/render_text_item.rb +230 -0
- data/lib/muwu/render_html_partial/render_title.rb +71 -0
- data/lib/muwu/render_html_partial_builder/render_contents_builder.rb +100 -0
- data/lib/muwu/render_html_partial_builder/render_document_css_builder.rb +46 -0
- data/lib/muwu/render_html_partial_builder/render_document_html_builder.rb +211 -0
- data/lib/muwu/render_html_partial_builder/render_document_js_builder.rb +52 -0
- data/lib/muwu/render_html_partial_builder/render_metadata_builder.rb +47 -0
- data/lib/muwu/render_html_partial_builder/render_navigator_builder.rb +74 -0
- data/lib/muwu/render_html_partial_builder/render_subcontents_builder.rb +85 -0
- data/lib/muwu/render_html_partial_builder/render_text_builder.rb +86 -0
- data/lib/muwu/render_html_partial_builder/render_text_item_builder.rb +274 -0
- data/lib/muwu/render_html_partial_builder/render_title_builder.rb +47 -0
- data/lib/muwu/render_inspector/render_inspector.rb +224 -0
- data/lib/muwu/var/deflistdiv.rb +239 -0
- data/lib/muwu_loader.rb +35 -0
- data/test/what_no_tests.md +5 -0
- metadata +251 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
module Muwu
|
|
2
|
+
module RenderHtmlPartialBuilder
|
|
3
|
+
class TextBuilder
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
include Muwu
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
attr_accessor(
|
|
10
|
+
:manifest_text,
|
|
11
|
+
:project,
|
|
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::Text.new
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def build_from_manifest_text(text)
|
|
29
|
+
@manifest_text = text
|
|
30
|
+
@project = text.project
|
|
31
|
+
set_destination
|
|
32
|
+
set_project
|
|
33
|
+
set_text_root_name
|
|
34
|
+
set_sections
|
|
35
|
+
finally_set_html_attr_id
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def finally_set_html_attr_id
|
|
40
|
+
@renderer.html_attr_id = ['text', @renderer.text_root_name].join('_')
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def set_destination
|
|
45
|
+
@renderer.destination = @manifest_text.destination
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def set_project
|
|
50
|
+
@renderer.project = @project
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def set_text_root_name
|
|
55
|
+
@renderer.text_root_name = @manifest_text.text_root_name
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def set_sections
|
|
60
|
+
@renderer.sections = determine_sections
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
private
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def determine_sections
|
|
69
|
+
sections = []
|
|
70
|
+
@manifest_text.sections.each do |section|
|
|
71
|
+
sections << build_text_item(section)
|
|
72
|
+
end
|
|
73
|
+
sections
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def build_text_item(text_item)
|
|
78
|
+
RenderHtmlPartialBuilder::TextItemBuilder.build do |b|
|
|
79
|
+
b.build_from_manifest_text_item(text_item)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
module Muwu
|
|
2
|
+
module RenderHtmlPartialBuilder
|
|
3
|
+
class TextItemBuilder
|
|
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::TextItem.new
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def build_from_manifest_text_item(manifest_text_item)
|
|
27
|
+
@manifest_text_item = manifest_text_item
|
|
28
|
+
@project = manifest_text_item.project
|
|
29
|
+
@href_helper = Helper::HtmlHrefHelper.new(manifest_text_item)
|
|
30
|
+
phase_1_set_destination
|
|
31
|
+
phase_1_set_heading
|
|
32
|
+
phase_1_set_heading_origin
|
|
33
|
+
phase_1_set_numbering
|
|
34
|
+
phase_1_set_section_depth
|
|
35
|
+
phase_1_set_section_number_as_attr
|
|
36
|
+
phase_1_set_section_number_as_text
|
|
37
|
+
phase_1_set_does_have_source_text
|
|
38
|
+
phase_1_set_is_parent_heading
|
|
39
|
+
phase_1_set_text_root_name
|
|
40
|
+
phase_1_set_markdown_renderer
|
|
41
|
+
phase_2_set_source_filename_absolute
|
|
42
|
+
phase_2_set_source_filename_relative
|
|
43
|
+
phase_3_set_sections
|
|
44
|
+
phase_4_set_end_links
|
|
45
|
+
phase_4_set_html_attr_id
|
|
46
|
+
phase_4_set_will_render_section_number
|
|
47
|
+
phase_4_set_subsections_are_distinct
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def phase_1_set_destination
|
|
53
|
+
@renderer.destination = @manifest_text_item.destination
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def phase_1_set_does_have_source_text
|
|
58
|
+
if @manifest_text_item.source_file_does_exist
|
|
59
|
+
@renderer.does_have_source_text = true
|
|
60
|
+
elsif @manifest_text_item.source_file_does_not_exist
|
|
61
|
+
@renderer.does_have_source_text = false
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def phase_1_set_heading
|
|
67
|
+
@renderer.heading = @manifest_text_item.heading
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def phase_1_set_heading_origin
|
|
72
|
+
@renderer.heading_origin = @manifest_text_item.heading_origin
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def phase_1_set_is_parent_heading
|
|
77
|
+
@renderer.is_parent_heading = @manifest_text_item.is_parent_heading
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def phase_1_set_markdown_renderer
|
|
82
|
+
@renderer.markup_renderer = Muwu::RenderMarkupToHtml.new(@project)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def phase_1_set_numbering
|
|
87
|
+
@renderer.numbering = @manifest_text_item.numbering
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def phase_1_set_options_commonmarker
|
|
92
|
+
@renderer.options_commonmarker = []
|
|
93
|
+
if @project.options.render_punctuation_smart
|
|
94
|
+
@renderer.options_commonmarker.append(:SMART)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def phase_1_set_section_depth
|
|
100
|
+
@renderer.section_depth = @manifest_text_item.section_depth
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def phase_1_set_section_number_as_attr
|
|
105
|
+
@renderer.section_number_as_attr = @manifest_text_item.numbering.join('_')
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def phase_1_set_section_number_as_text
|
|
110
|
+
@renderer.section_number_as_text = @manifest_text_item.numbering.join('.')
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def phase_1_set_text_root_name
|
|
115
|
+
@renderer.text_root_name = @manifest_text_item.text_root_name
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def phase_2_set_source_filename_absolute
|
|
120
|
+
if @manifest_text_item.source_file_does_exist
|
|
121
|
+
@renderer.source_filename_absolute = @manifest_text_item.source_filename_absolute
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def phase_2_set_source_filename_relative
|
|
127
|
+
if @manifest_text_item.source_file_does_exist
|
|
128
|
+
@renderer.source_filename_relative = @manifest_text_item.source_filename_relative
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def phase_3_set_sections
|
|
134
|
+
if @manifest_text_item.does_have_child_sections
|
|
135
|
+
@renderer.sections = determine_sections
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def phase_4_set_end_links
|
|
141
|
+
if text_item_should_have_end_links
|
|
142
|
+
@renderer.end_links = determine_end_links
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def phase_4_set_html_attr_id
|
|
148
|
+
@renderer.html_attr_id = ['text', @renderer.text_root_name, @renderer.section_number_as_attr].join('_')
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def phase_4_set_will_render_section_number
|
|
153
|
+
@renderer.will_render_section_number = determine_whether_text_item_will_render_section_number
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def phase_4_set_subsections_are_distinct
|
|
158
|
+
@renderer.subsections_are_distinct = determine_whether_subsections_are_distinct
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
private
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def build_renderer_text_item(text_item)
|
|
167
|
+
RenderHtmlPartialBuilder::TextItemBuilder.build do |b|
|
|
168
|
+
b.build_from_manifest_text_item(text_item)
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def determine_end_links
|
|
174
|
+
end_links = {}
|
|
175
|
+
if @project.options.render_section_end_links
|
|
176
|
+
@project.options.render_section_end_links.each do |link|
|
|
177
|
+
end_links[link] = determine_end_links_href(link)
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end_links
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def determine_end_links_href(link)
|
|
185
|
+
case link
|
|
186
|
+
when 'contents'
|
|
187
|
+
@href_helper.to_contents_heading(@manifest_text_item)
|
|
188
|
+
when 'home'
|
|
189
|
+
@href_helper.to_project_home
|
|
190
|
+
when 'top'
|
|
191
|
+
@href_helper.to_document_top
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def determine_sections
|
|
197
|
+
sections = []
|
|
198
|
+
@manifest_text_item.sections.each do |section|
|
|
199
|
+
sections << build_renderer_text_item(section)
|
|
200
|
+
end
|
|
201
|
+
sections
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def determine_whether_subsections_are_distinct
|
|
206
|
+
if @manifest_text_item.does_have_child_sections
|
|
207
|
+
if @project.options.render_sections_distinctly_depth_max == nil
|
|
208
|
+
return true
|
|
209
|
+
elsif @renderer.section_depth < @project.options.render_sections_distinctly_depth_max
|
|
210
|
+
return true
|
|
211
|
+
elsif @renderer.section_depth >= @project.options.render_sections_distinctly_depth_max
|
|
212
|
+
return false
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def determine_whether_text_item_will_render_section_number
|
|
219
|
+
if @project.will_render_section_numbers && text_item_should_be_distinct
|
|
220
|
+
true
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
def text_item_should_be_distinct
|
|
226
|
+
if @project.options.render_sections_distinctly_depth_max == nil
|
|
227
|
+
return true
|
|
228
|
+
elsif @renderer.section_depth <= @project.options.render_sections_distinctly_depth_max
|
|
229
|
+
return true
|
|
230
|
+
elsif @renderer.section_depth > @project.options.render_sections_distinctly_depth_max
|
|
231
|
+
return false
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def text_item_should_have_end_links
|
|
237
|
+
if text_item_should_be_distinct
|
|
238
|
+
return text_item_distinct_should_have_end_links
|
|
239
|
+
else
|
|
240
|
+
return false
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
def text_item_distinct_should_have_end_links
|
|
246
|
+
if @renderer.is_parent_heading
|
|
247
|
+
return text_item_distinct_parent_should_have_end_links
|
|
248
|
+
elsif @renderer.does_have_source_text
|
|
249
|
+
return true
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
def text_item_distinct_parent_should_have_end_links
|
|
255
|
+
if @renderer.does_have_source_text == true
|
|
256
|
+
return true
|
|
257
|
+
elsif @renderer.does_have_source_text == false
|
|
258
|
+
return text_item_distinct_parent_without_source_should_have_end_links
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
def text_item_distinct_parent_without_source_should_have_end_links
|
|
264
|
+
if determine_whether_subsections_are_distinct == true
|
|
265
|
+
return false
|
|
266
|
+
elsif determine_whether_subsections_are_distinct == false
|
|
267
|
+
return true
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Muwu
|
|
2
|
+
module RenderHtmlPartialBuilder
|
|
3
|
+
class TitleBuilder
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
include Muwu
|
|
7
|
+
include Helper
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
attr_accessor(
|
|
11
|
+
:manifest_title,
|
|
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::Title.new
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def build_from_manifest_title(manifest_title)
|
|
29
|
+
@manifest_title = manifest_title
|
|
30
|
+
set_destination
|
|
31
|
+
set_metadata
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def set_destination
|
|
36
|
+
@renderer.destination = @manifest_title.destination
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def set_metadata
|
|
41
|
+
@renderer.metadata = SanitizerHelper::sanitize_metadata(@manifest_title.metadata)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
module Muwu
|
|
2
|
+
class RenderInspector
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
include Muwu
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
COLUMN_LEFT = 12
|
|
9
|
+
SEPARATOR = ' '
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def initialize(project)
|
|
13
|
+
@project = project
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
public
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def render_inspector
|
|
22
|
+
render_inspector_project
|
|
23
|
+
render_inspector_options
|
|
24
|
+
render_inspector_manifest
|
|
25
|
+
render_inspector_errors
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def render_inspector_errors
|
|
30
|
+
if @project.exceptions.any?
|
|
31
|
+
@project.exceptions.each do |error|
|
|
32
|
+
render_inspector_error_report(error)
|
|
33
|
+
end
|
|
34
|
+
puts
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def render_inspector_manifest
|
|
40
|
+
@project.manifest.documents.each do |document|
|
|
41
|
+
case document
|
|
42
|
+
when ManifestTask::DocumentCss
|
|
43
|
+
render_inspector_document_css(document)
|
|
44
|
+
when ManifestTask::DocumentHtml
|
|
45
|
+
render_inspector_document_html(document)
|
|
46
|
+
when ManifestTask::DocumentJs
|
|
47
|
+
render_inspector_document_js(document)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def render_inspector_options
|
|
54
|
+
puts @project.options
|
|
55
|
+
@project.options.instance_variables.each do |option|
|
|
56
|
+
key = option.to_s.gsub(/\A@/,'')
|
|
57
|
+
value = @project.options.instance_variable_get(option)
|
|
58
|
+
puts indent("#{key}: #{value}")
|
|
59
|
+
end
|
|
60
|
+
puts
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def render_inspector_project
|
|
65
|
+
puts @project
|
|
66
|
+
puts indent("slug: #{@project.slug}")
|
|
67
|
+
puts indent("working_directory: #{@project.working_directory}")
|
|
68
|
+
puts indent("js_libraries: #{@project.javascript_libraries_requested}")
|
|
69
|
+
puts
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
private
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def column_left(text)
|
|
78
|
+
text.ljust(COLUMN_LEFT)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def indent(text)
|
|
83
|
+
column_left(text).prepend(' ')
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def puts_line(output=nil)
|
|
88
|
+
if Array === output
|
|
89
|
+
puts output.compact.join(SEPARATOR)
|
|
90
|
+
elsif NilClass === output
|
|
91
|
+
puts "\n"
|
|
92
|
+
else
|
|
93
|
+
puts output
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def render_inspector_document_css(document)
|
|
99
|
+
puts_line [document.to_s]
|
|
100
|
+
puts_line [document.destination.to_s, document.destination.output_class, document.destination.output_filename]
|
|
101
|
+
puts_line
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def render_inspector_document_html(document)
|
|
106
|
+
puts_line [document.to_s, "index: #{document.index}"]
|
|
107
|
+
puts_line [document.destination.to_s, document.destination.output_class, document.destination.output_filename]
|
|
108
|
+
document.tasks.each do |task|
|
|
109
|
+
render_inspector_manifest_task(task)
|
|
110
|
+
end
|
|
111
|
+
puts_line
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def render_inspector_document_js(document)
|
|
116
|
+
puts_line [document.to_s]
|
|
117
|
+
puts_line [
|
|
118
|
+
document.destination.to_s,
|
|
119
|
+
document.destination.output_class,
|
|
120
|
+
document.destination.output_filename
|
|
121
|
+
]
|
|
122
|
+
puts_line
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def render_inspector_error_report(error)
|
|
127
|
+
puts_line [
|
|
128
|
+
column_left(error.type.to_s),
|
|
129
|
+
error.report
|
|
130
|
+
]
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def render_inspector_manifest_task(task)
|
|
135
|
+
case task
|
|
136
|
+
when ManifestTask::Contents
|
|
137
|
+
render_inspector_manifest_task_contents(task)
|
|
138
|
+
when ManifestTask::Metadata
|
|
139
|
+
render_inspector_manifest_task_metadata(task)
|
|
140
|
+
when ManifestTask::Navigator
|
|
141
|
+
render_inspector_manifest_task_navigator(task)
|
|
142
|
+
when ManifestTask::Subcontents
|
|
143
|
+
render_inspector_manifest_task_subcontents(task)
|
|
144
|
+
when ManifestTask::Title
|
|
145
|
+
render_inspector_manifest_task_title(task)
|
|
146
|
+
when ManifestTask::Text
|
|
147
|
+
render_inspector_manifest_task_text(task)
|
|
148
|
+
when ManifestTask::TextItem
|
|
149
|
+
render_inspector_manifest_task_text_item(task)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def render_inspector_manifest_task_contents(contents)
|
|
155
|
+
puts_line [
|
|
156
|
+
indent('Contents'),
|
|
157
|
+
contents.naming.inspect
|
|
158
|
+
]
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def render_inspector_manifest_task_metadata(metadata)
|
|
163
|
+
puts_line [
|
|
164
|
+
indent('Metadata'),
|
|
165
|
+
metadata.metadata.to_s
|
|
166
|
+
]
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def render_inspector_manifest_task_navigator(navigator)
|
|
171
|
+
puts_line [
|
|
172
|
+
indent('Navigator'),
|
|
173
|
+
"prev: #{navigator.document_prev_index}",
|
|
174
|
+
"home: #{navigator.document_home_index}",
|
|
175
|
+
"next: #{navigator.document_next_index}"
|
|
176
|
+
]
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def render_inspector_manifest_task_subcontents(contents)
|
|
181
|
+
puts_line [
|
|
182
|
+
indent('Subcontents'),
|
|
183
|
+
contents.naming.inspect
|
|
184
|
+
]
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def render_inspector_manifest_task_text(text)
|
|
189
|
+
puts_line [
|
|
190
|
+
indent('Text'),
|
|
191
|
+
text.naming.inspect
|
|
192
|
+
]
|
|
193
|
+
text.sections.each do |section|
|
|
194
|
+
render_inspector_manifest_task(section)
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def render_inspector_manifest_task_text_item(text_item)
|
|
200
|
+
puts_line [
|
|
201
|
+
indent('| TextItem'),
|
|
202
|
+
text_item.numbering.inspect,
|
|
203
|
+
text_item.heading.inspect,
|
|
204
|
+
text_item.source_filename,
|
|
205
|
+
('!!' if text_item.source_file_does_not_exist)
|
|
206
|
+
]
|
|
207
|
+
if text_item.does_have_child_sections
|
|
208
|
+
text_item.sections.each do |section|
|
|
209
|
+
render_inspector_manifest_task(section)
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def render_inspector_manifest_task_title(title)
|
|
216
|
+
puts_line [
|
|
217
|
+
indent('Title'),
|
|
218
|
+
title.metadata.to_s
|
|
219
|
+
]
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
end
|
|
224
|
+
end
|