muwu 3.0.0.alpha → 3.0.0
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 +4 -4
- data/lib/{muwu_loader.rb → loader.rb} +2 -2
- data/lib/muwu.rb +3 -3
- data/lib/muwu/cli/cli.rb +33 -22
- data/lib/muwu/cli/help/compile +4 -4
- data/lib/muwu/cli/help/publish +19 -6
- data/lib/muwu/cli/help/reset +5 -2
- data/lib/muwu/cli/help/summary +4 -4
- data/lib/muwu/cli/help/sync +23 -15
- data/lib/muwu/cli/help/view +3 -0
- data/lib/muwu/controller/controller.rb +65 -30
- data/lib/muwu/controller/controller_interaction.rb +66 -44
- data/lib/muwu/default/default.rb +12 -9
- data/lib/muwu/destination/destination.rb +61 -57
- data/lib/muwu/destination_builder/destination_builder.rb +31 -33
- data/lib/muwu/manifest_task_builder/text_item_builder.rb +1 -8
- data/lib/muwu/project/project.rb +146 -127
- data/lib/muwu/project_builder/assets/config/css/base/html_elements.scss +19 -15
- data/lib/muwu/project_builder/assets/config/css/base/mixin_text_section_heading.scss +12 -11
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_contents.scss +5 -5
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_metadata.scss +2 -4
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_navigator.scss +3 -4
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_subcontents.scss +5 -5
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_text.scss +16 -15
- data/lib/muwu/project_builder/assets/config/css/base/section_muwu_title.scss +9 -6
- data/lib/muwu/project_builder/project_reader.rb +1 -0
- data/lib/muwu/project_builder/project_reset_compiled.rb +31 -0
- data/lib/muwu/project_builder/project_reset_css.rb +30 -30
- data/lib/muwu/project_builder/project_starter.rb +7 -7
- data/lib/muwu/project_builder/project_validator.rb +14 -4
- data/lib/muwu/project_builder/project_writer.rb +12 -11
- data/lib/muwu/project_exception/compiled_folder_not_found.rb +23 -0
- data/lib/muwu/project_exception/lynx_not_available.rb +23 -0
- data/lib/muwu/project_exception_handler/fatal.rb +10 -9
- data/lib/muwu/project_options/project_options.rb +9 -8
- data/lib/muwu/project_options_builder/project_option_validator.rb +12 -12
- data/lib/muwu/project_options_builder/project_option_validator_value.rb +78 -82
- data/lib/muwu/publish/publish.rb +42 -34
- data/lib/muwu/render_concat/render_concat.rb +26 -27
- data/lib/muwu/render_html/render_html.rb +27 -24
- data/lib/muwu/render_html_partial/render_document_html.rb +64 -64
- data/lib/muwu/render_html_partial/render_text_item.rb +16 -16
- data/lib/muwu/sync/sync.rb +40 -36
- data/lib/muwu/var/deflistdiv.rb +0 -0
- data/lib/muwu/viewer/viewer.rb +25 -0
- data/test/what_no_tests.md +1 -3
- metadata +16 -11
@@ -1,10 +1,10 @@
|
|
1
1
|
module Muwu
|
2
2
|
class ProjectStarter
|
3
|
-
|
4
|
-
|
3
|
+
|
4
|
+
|
5
5
|
include Muwu
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
|
8
8
|
def initialize(current_working_directory, metadata)
|
9
9
|
@current_working_directory = File.absolute_path(current_working_directory)
|
10
10
|
@metadata = metadata
|
@@ -21,7 +21,7 @@ module Muwu
|
|
21
21
|
project.working_directory = File.absolute_path(File.join(@current_working_directory, @metadata[:slug]))
|
22
22
|
project
|
23
23
|
end
|
24
|
-
|
25
|
-
|
24
|
+
|
25
|
+
|
26
26
|
end
|
27
|
-
end
|
27
|
+
end
|
@@ -14,6 +14,16 @@ module Muwu
|
|
14
14
|
public
|
15
15
|
|
16
16
|
|
17
|
+
def validate_dir_compiled
|
18
|
+
if @project.path_compiled_does_exist
|
19
|
+
return true
|
20
|
+
else
|
21
|
+
@project.exceptions_add ProjectException::CompiledFolderNotFound.new(@project)
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
17
27
|
def validate_file_css
|
18
28
|
if @project.css_manifest_file_does_exist
|
19
29
|
return true
|
@@ -52,8 +62,8 @@ module Muwu
|
|
52
62
|
return false
|
53
63
|
end
|
54
64
|
end
|
55
|
-
|
56
|
-
|
65
|
+
|
66
|
+
|
57
67
|
def validate_option_remote_publish
|
58
68
|
if @project.options.remote_publish.to_s == ''
|
59
69
|
@project.exceptions_add ProjectException::OptionRemotePublishValueNil.new
|
@@ -106,8 +116,8 @@ module Muwu
|
|
106
116
|
@project.exceptions_add ProjectException::MultipleFormatsRequestedWithStdout.new
|
107
117
|
end
|
108
118
|
end
|
109
|
-
|
110
|
-
|
119
|
+
|
120
|
+
|
111
121
|
def validate_scenario_if_more_than_one_document
|
112
122
|
if @project.outline_has_more_than_one_document && @project.output_destination_requests_stdout
|
113
123
|
@project.exceptions_add ProjectException::MultipleDocumentsOutlinedWithStdout.new
|
@@ -8,8 +8,8 @@ module Muwu
|
|
8
8
|
|
9
9
|
require 'fileutils'
|
10
10
|
require 'yaml'
|
11
|
-
|
12
|
-
|
11
|
+
|
12
|
+
|
13
13
|
attr_accessor(
|
14
14
|
:project
|
15
15
|
)
|
@@ -40,19 +40,20 @@ module Muwu
|
|
40
40
|
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
44
|
-
|
43
|
+
|
44
|
+
|
45
45
|
def phase_1_make_project_folder
|
46
46
|
announce_and_execute_dir_mkdir(@project.working_directory)
|
47
47
|
end
|
48
|
-
|
49
|
-
|
48
|
+
|
49
|
+
|
50
50
|
def phase_2_make_project_subfolders
|
51
|
+
announce_and_execute_dir_mkdir(@project.path_compiled)
|
51
52
|
announce_and_execute_dir_mkdir(@project.path_config)
|
52
|
-
announce_and_execute_dir_mkdir(@project.path_images)
|
53
|
+
# announce_and_execute_dir_mkdir(@project.path_images) # DEPRECATED
|
53
54
|
announce_and_execute_dir_mkdir(@project.path_text)
|
54
55
|
end
|
55
|
-
|
56
|
+
|
56
57
|
|
57
58
|
def phase_2_make_folder_css_and_copy_files
|
58
59
|
folder_source_gem = File.absolute_path(File.join(Muwu::GEM_HOME_LIB, 'muwu','project_builder','assets','config','css'))
|
@@ -79,8 +80,8 @@ module Muwu
|
|
79
80
|
phase_3_write_file_outline_yml_blank
|
80
81
|
end
|
81
82
|
end
|
82
|
-
|
83
|
-
|
83
|
+
|
84
|
+
|
84
85
|
def phase_3_write_file_outline_yml_dump
|
85
86
|
announce_and_execute_yaml_dump(@project.outline, @project.outline_filename)
|
86
87
|
end
|
@@ -124,4 +125,4 @@ module Muwu
|
|
124
125
|
|
125
126
|
|
126
127
|
end
|
127
|
-
end
|
128
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Muwu
|
2
|
+
module ProjectException
|
3
|
+
class CompiledFolderNotFound
|
4
|
+
|
5
|
+
|
6
|
+
def initialize(project)
|
7
|
+
@compiled_folder = project.path_compiled
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
def report
|
12
|
+
"The folder for compiled documents `#{@compiled_folder}` could not be found."
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def type
|
17
|
+
:fatal
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -6,15 +6,16 @@ module Muwu
|
|
6
6
|
def initialize(exceptions)
|
7
7
|
@exceptions = [exceptions].flatten
|
8
8
|
render_exceptions
|
9
|
+
exit
|
9
10
|
end
|
10
|
-
|
11
|
-
|
11
|
+
|
12
|
+
|
12
13
|
def render_exception(exception)
|
13
14
|
$stderr.puts "- #{exception.class}"
|
14
15
|
$stderr.puts " #{exception.report}"
|
15
16
|
end
|
16
|
-
|
17
|
-
|
17
|
+
|
18
|
+
|
18
19
|
def render_exceptions
|
19
20
|
render_header
|
20
21
|
@exceptions.each do |exception|
|
@@ -22,17 +23,17 @@ module Muwu
|
|
22
23
|
end
|
23
24
|
render_lf
|
24
25
|
end
|
25
|
-
|
26
|
-
|
26
|
+
|
27
|
+
|
27
28
|
def render_header
|
28
29
|
$stderr.puts "#{self.inspect}"
|
29
30
|
end
|
30
|
-
|
31
|
-
|
31
|
+
|
32
|
+
|
32
33
|
def render_lf
|
33
34
|
$stderr.puts "\n"
|
34
35
|
end
|
35
|
-
|
36
|
+
|
36
37
|
|
37
38
|
end
|
38
39
|
end
|
@@ -23,17 +23,18 @@ module Muwu
|
|
23
23
|
:render_section_numbers,
|
24
24
|
:render_sections_distinctly_depth_max,
|
25
25
|
:render_title_section_metadata,
|
26
|
+
:rsync_options,
|
26
27
|
:warning_if_parent_heading_lacks_source
|
27
28
|
)
|
28
|
-
|
29
|
-
|
29
|
+
|
30
|
+
|
30
31
|
def initialize
|
31
32
|
Default::PROJECT_OPTIONS.each_pair do |key, value|
|
32
33
|
set_option(key, value)
|
33
34
|
end
|
34
35
|
end
|
35
|
-
|
36
|
-
|
36
|
+
|
37
|
+
|
37
38
|
def inspect
|
38
39
|
["#{self.to_s}", "{", inspect_instance_variables, "}"].join(' ')
|
39
40
|
end
|
@@ -42,15 +43,15 @@ module Muwu
|
|
42
43
|
def inspect_instance_variables
|
43
44
|
instance_variables.map { |v| "#{v}=#{instance_variable_get(v).inspect}" }.join(", ")
|
44
45
|
end
|
45
|
-
|
46
|
-
|
46
|
+
|
47
|
+
|
47
48
|
def set_option(key, value)
|
48
49
|
if Default::PROJECT_OPTIONS.has_key?(key)
|
49
50
|
key_ivsym = "@#{key.to_s}"
|
50
51
|
instance_variable_set(key_ivsym, value)
|
51
52
|
end
|
52
53
|
end
|
53
|
-
|
54
|
-
|
54
|
+
|
55
|
+
|
55
56
|
end
|
56
57
|
end
|
@@ -1,26 +1,26 @@
|
|
1
1
|
module Muwu
|
2
2
|
class ProjectOptionValidator
|
3
|
-
|
4
|
-
|
3
|
+
|
4
|
+
|
5
5
|
include Muwu
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
|
8
8
|
attr_reader(
|
9
9
|
:key,
|
10
10
|
:value
|
11
11
|
)
|
12
|
-
|
13
|
-
|
12
|
+
|
13
|
+
|
14
14
|
def initialize(key, value, project)
|
15
15
|
key_validator = ProjectOptionValidatorKey.new(key, value, project)
|
16
16
|
@key = key_validator.validated_key
|
17
17
|
@value = key_validator.validated_value
|
18
18
|
end
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
|
20
|
+
|
21
|
+
|
22
22
|
protected
|
23
|
-
|
23
|
+
|
24
24
|
|
25
25
|
def self.new_if_valid_key(key, value, project)
|
26
26
|
option_validator = new(key, value, project)
|
@@ -32,6 +32,6 @@ module Muwu
|
|
32
32
|
end
|
33
33
|
|
34
34
|
|
35
|
-
|
35
|
+
|
36
36
|
end
|
37
|
-
end
|
37
|
+
end
|
@@ -3,32 +3,32 @@ module Muwu
|
|
3
3
|
|
4
4
|
|
5
5
|
require 'iso-639'
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
|
8
8
|
include Muwu
|
9
9
|
include Helper
|
10
10
|
|
11
|
-
|
11
|
+
|
12
12
|
attr_accessor(
|
13
13
|
:key_validated,
|
14
14
|
:project,
|
15
15
|
:validation_method_name,
|
16
16
|
:value_provided
|
17
17
|
)
|
18
|
-
|
19
|
-
|
18
|
+
|
19
|
+
|
20
20
|
def initialize(key_validated, value_provided, project)
|
21
21
|
@key_validated = key_validated.to_s.gsub(/\W/,'_')
|
22
22
|
@project = project
|
23
23
|
@validation_method_name = "validate_option_#{@key_validated}"
|
24
24
|
@value_provided = value_provided
|
25
25
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
|
27
|
+
|
28
|
+
|
29
29
|
public
|
30
|
-
|
31
|
-
|
30
|
+
|
31
|
+
|
32
32
|
def validated_value
|
33
33
|
if private_methods.include?(@validation_method_name.to_sym)
|
34
34
|
return method(@validation_method_name).call
|
@@ -37,20 +37,6 @@ module Muwu
|
|
37
37
|
return nil
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
41
|
-
|
42
|
-
# def value_as_array(value)
|
43
|
-
# result = []
|
44
|
-
# if String === value
|
45
|
-
# result = value.split(/,\s*/).map{ |v| value_as_string(v) }.sort
|
46
|
-
# elsif Array === value
|
47
|
-
# result = value.map{ |v| value_as_string(v) }.sort
|
48
|
-
# elsif Boolean === @value_provided
|
49
|
-
# result << value
|
50
|
-
# end
|
51
|
-
# result.reject!{ |r| r == '' }
|
52
|
-
# result
|
53
|
-
# end
|
54
40
|
|
55
41
|
|
56
42
|
def value_as_array(value)
|
@@ -66,13 +52,13 @@ module Muwu
|
|
66
52
|
result.reject!{ |r| r == '' }
|
67
53
|
result
|
68
54
|
end
|
69
|
-
|
70
|
-
|
55
|
+
|
56
|
+
|
71
57
|
def value_as_integer(value)
|
72
58
|
value.to_i
|
73
59
|
end
|
74
|
-
|
75
|
-
|
60
|
+
|
61
|
+
|
76
62
|
def value_as_string(value)
|
77
63
|
value.to_s.strip.downcase
|
78
64
|
end
|
@@ -81,8 +67,8 @@ module Muwu
|
|
81
67
|
def value_as_string_preserving_case(value)
|
82
68
|
value.to_s.strip
|
83
69
|
end
|
84
|
-
|
85
|
-
|
70
|
+
|
71
|
+
|
86
72
|
def value_provided_as_array
|
87
73
|
value_as_array(@value_provided)
|
88
74
|
end
|
@@ -91,22 +77,22 @@ module Muwu
|
|
91
77
|
def value_provided_as_integer
|
92
78
|
value_as_integer(@value_provided)
|
93
79
|
end
|
94
|
-
|
95
|
-
|
80
|
+
|
81
|
+
|
96
82
|
def value_provided_as_string
|
97
83
|
value_as_string(@value_provided)
|
98
84
|
end
|
99
|
-
|
100
|
-
|
85
|
+
|
86
|
+
|
101
87
|
def value_provided_as_string_preserving_case
|
102
88
|
value_as_string_preserving_case(@value_provided)
|
103
89
|
end
|
104
|
-
|
90
|
+
|
105
91
|
|
106
92
|
|
107
93
|
private
|
108
|
-
|
109
|
-
|
94
|
+
|
95
|
+
|
110
96
|
def validate_option_boolean
|
111
97
|
case @value_provided
|
112
98
|
when false, true
|
@@ -118,23 +104,28 @@ module Muwu
|
|
118
104
|
return nil
|
119
105
|
end
|
120
106
|
end
|
121
|
-
|
122
|
-
|
107
|
+
|
108
|
+
|
109
|
+
def validate_option_contents_section_numbers_receive_link
|
110
|
+
return validate_option_boolean
|
111
|
+
end
|
112
|
+
|
113
|
+
|
123
114
|
def validate_option_generate_navigators_automatically
|
124
115
|
return validate_option_boolean
|
125
116
|
end
|
126
|
-
|
127
|
-
|
117
|
+
|
118
|
+
|
128
119
|
def validate_option_generate_subcontents_automatically
|
129
120
|
return validate_option_boolean
|
130
121
|
end
|
131
|
-
|
132
|
-
|
122
|
+
|
123
|
+
|
133
124
|
def validate_option_html_head_includes_metadata_tags
|
134
125
|
return validate_option_boolean
|
135
126
|
end
|
136
|
-
|
137
|
-
|
127
|
+
|
128
|
+
|
138
129
|
def validate_option_html_lang
|
139
130
|
case @value_provided
|
140
131
|
when nil, 'nil'
|
@@ -149,18 +140,18 @@ module Muwu
|
|
149
140
|
end
|
150
141
|
end
|
151
142
|
end
|
152
|
-
|
153
|
-
|
143
|
+
|
144
|
+
|
154
145
|
def validate_option_html_uses_javascript_navigation
|
155
146
|
return validate_option_boolean
|
156
147
|
end
|
157
|
-
|
158
|
-
|
148
|
+
|
149
|
+
|
159
150
|
def validate_option_markdown_allows_raw_html
|
160
151
|
return validate_option_boolean
|
161
152
|
end
|
162
|
-
|
163
|
-
|
153
|
+
|
154
|
+
|
164
155
|
def validate_option_markdown_renderer
|
165
156
|
value = value_provided_as_string
|
166
157
|
case value
|
@@ -173,8 +164,8 @@ module Muwu
|
|
173
164
|
return nil
|
174
165
|
end
|
175
166
|
end
|
176
|
-
|
177
|
-
|
167
|
+
|
168
|
+
|
178
169
|
def validate_option_outline_text_pathnames
|
179
170
|
value = value_provided_as_string
|
180
171
|
case value
|
@@ -185,8 +176,8 @@ module Muwu
|
|
185
176
|
return nil
|
186
177
|
end
|
187
178
|
end
|
188
|
-
|
189
|
-
|
179
|
+
|
180
|
+
|
190
181
|
def validate_option_output_destination
|
191
182
|
value = value_provided_as_string
|
192
183
|
case value
|
@@ -210,22 +201,22 @@ module Muwu
|
|
210
201
|
return nil
|
211
202
|
end
|
212
203
|
end
|
213
|
-
|
214
|
-
|
204
|
+
|
205
|
+
|
215
206
|
def validate_option_output_file_css_basename
|
216
207
|
return validate_option_output_file_basename
|
217
208
|
end
|
218
|
-
|
219
|
-
|
209
|
+
|
210
|
+
|
220
211
|
def validate_option_output_file_html_basename
|
221
212
|
return validate_option_output_file_basename
|
222
213
|
end
|
223
|
-
|
224
|
-
|
214
|
+
|
215
|
+
|
225
216
|
def validate_option_output_file_js_basename
|
226
217
|
return validate_option_output_file_basename
|
227
218
|
end
|
228
|
-
|
219
|
+
|
229
220
|
|
230
221
|
def validate_option_output_formats
|
231
222
|
result = []
|
@@ -239,23 +230,23 @@ module Muwu
|
|
239
230
|
end
|
240
231
|
return result
|
241
232
|
end
|
242
|
-
|
243
|
-
|
233
|
+
|
234
|
+
|
244
235
|
def validate_option_remote_publish
|
245
236
|
return value_provided_as_string_preserving_case
|
246
237
|
end
|
247
|
-
|
248
|
-
|
238
|
+
|
239
|
+
|
249
240
|
def validate_option_remote_sync
|
250
241
|
return value_provided_as_string_preserving_case
|
251
242
|
end
|
252
|
-
|
253
|
-
|
243
|
+
|
244
|
+
|
254
245
|
def validate_option_render_punctuation_smart
|
255
246
|
return validate_option_boolean
|
256
247
|
end
|
257
|
-
|
258
|
-
|
248
|
+
|
249
|
+
|
259
250
|
def validate_option_render_section_end_links
|
260
251
|
result = []
|
261
252
|
value_provided_as_array.each do |value|
|
@@ -272,12 +263,12 @@ module Muwu
|
|
272
263
|
end
|
273
264
|
return result
|
274
265
|
end
|
275
|
-
|
276
|
-
|
266
|
+
|
267
|
+
|
277
268
|
def validate_option_render_section_numbers
|
278
269
|
return validate_option_boolean
|
279
270
|
end
|
280
|
-
|
271
|
+
|
281
272
|
|
282
273
|
def validate_option_render_sections_distinctly_depth_max
|
283
274
|
case @value_provided
|
@@ -290,8 +281,8 @@ module Muwu
|
|
290
281
|
return nil
|
291
282
|
end
|
292
283
|
end
|
293
|
-
|
294
|
-
|
284
|
+
|
285
|
+
|
295
286
|
def validate_option_render_title_section_metadata
|
296
287
|
case @value_provided
|
297
288
|
when nil, '', 'nil'
|
@@ -304,17 +295,22 @@ module Muwu
|
|
304
295
|
return [@value_provided.to_s].flatten
|
305
296
|
end
|
306
297
|
end
|
307
|
-
|
308
|
-
|
298
|
+
|
299
|
+
|
309
300
|
def validate_option_render_punctuation_smart
|
310
301
|
return validate_option_boolean
|
311
302
|
end
|
312
|
-
|
313
|
-
|
303
|
+
|
304
|
+
|
305
|
+
def validate_option_rsync_options
|
306
|
+
return value_provided_as_array
|
307
|
+
end
|
308
|
+
|
309
|
+
|
314
310
|
def validate_option_warning_if_parent_heading_lacks_source
|
315
311
|
return validate_option_boolean
|
316
312
|
end
|
317
|
-
|
318
|
-
|
313
|
+
|
314
|
+
|
319
315
|
end
|
320
|
-
end
|
316
|
+
end
|