muwu 3.0.0.alpha → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -8,12 +8,24 @@ module Muwu
|
|
8
8
|
def initialize
|
9
9
|
@slug = ''
|
10
10
|
end
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
|
12
|
+
|
13
|
+
|
14
14
|
public
|
15
|
-
|
16
|
-
|
15
|
+
|
16
|
+
|
17
|
+
def confirm_reset_compiled(project)
|
18
|
+
render_reset_compiled_heading
|
19
|
+
render_reset_compiled_prompt
|
20
|
+
@answer = $stdin.gets.chomp.strip.downcase
|
21
|
+
if @answer == 'y'
|
22
|
+
return true
|
23
|
+
else
|
24
|
+
return false
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
17
29
|
def confirm_reset_css(project)
|
18
30
|
render_reset_css_heading(project)
|
19
31
|
render_reset_css_prompt
|
@@ -24,21 +36,21 @@ module Muwu
|
|
24
36
|
return false
|
25
37
|
end
|
26
38
|
end
|
27
|
-
|
28
|
-
|
39
|
+
|
40
|
+
|
29
41
|
def request_metadata
|
30
42
|
request_metadata_phase_1_render_heading
|
31
43
|
request_metadata_phase_2_request_and_set_slug
|
32
44
|
{ slug: @slug }
|
33
45
|
end
|
34
|
-
|
35
|
-
|
46
|
+
|
47
|
+
|
36
48
|
def request_metadata_phase_1_render_heading
|
37
49
|
render_new_project_heading
|
38
50
|
render_lf
|
39
51
|
end
|
40
|
-
|
41
|
-
|
52
|
+
|
53
|
+
|
42
54
|
def request_metadata_phase_2_request_and_set_slug
|
43
55
|
render_slug_heading
|
44
56
|
while @slug == ''
|
@@ -52,13 +64,13 @@ module Muwu
|
|
52
64
|
end
|
53
65
|
render_lf
|
54
66
|
end
|
55
|
-
|
56
|
-
|
57
|
-
|
67
|
+
|
68
|
+
|
69
|
+
|
58
70
|
private
|
59
|
-
|
60
|
-
|
61
|
-
|
71
|
+
|
72
|
+
|
73
|
+
|
62
74
|
def determine_reset_css_files(project)
|
63
75
|
[
|
64
76
|
File.join(project.path_css_base),
|
@@ -68,75 +80,85 @@ module Muwu
|
|
68
80
|
File.join(project.path_css, 'index.scss'),
|
69
81
|
]
|
70
82
|
end
|
71
|
-
|
83
|
+
|
72
84
|
|
73
85
|
def render_lf
|
74
86
|
puts "\n"
|
75
87
|
end
|
76
|
-
|
77
|
-
|
88
|
+
|
89
|
+
|
78
90
|
def render_new_project_heading
|
79
91
|
puts '# Muwu'
|
80
92
|
puts '# New Project'
|
81
93
|
end
|
82
|
-
|
83
|
-
|
94
|
+
|
95
|
+
|
96
|
+
def render_reset_compiled_heading
|
97
|
+
puts '# Muwu'
|
98
|
+
puts '# Reset `compiled/`'
|
99
|
+
puts '- This will remove all contents of the `compiled/` folder.'
|
100
|
+
puts '- This action cannot be undone.'
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
def render_reset_compiled_prompt
|
105
|
+
print '> Continue resetting the `compiled/` folder? (y/N) '
|
106
|
+
end
|
107
|
+
|
108
|
+
|
84
109
|
def render_reset_css_heading(project)
|
85
110
|
puts '# Muwu'
|
86
111
|
puts '# Reset CSS'
|
87
|
-
puts
|
88
112
|
puts '- This will reset the following files and folders to their original state:'
|
89
|
-
puts
|
90
113
|
determine_reset_css_files(project).each do |file|
|
91
|
-
puts "
|
114
|
+
puts " * #{file}"
|
92
115
|
end
|
93
|
-
puts
|
94
|
-
puts "* If #{project.path_css_extensions} does not exist, it will be created."
|
116
|
+
puts "- If #{project.path_css_extensions} does not exist, it will be created."
|
95
117
|
puts ' Otherwise, its existing contents will remain unchanged.'
|
96
|
-
puts
|
118
|
+
puts '- This action cannot be undone'
|
97
119
|
end
|
98
|
-
|
99
|
-
|
120
|
+
|
121
|
+
|
100
122
|
def render_reset_css_prompt
|
101
123
|
print '> Continue with CSS reset? (y/N) '
|
102
124
|
end
|
103
|
-
|
104
|
-
|
125
|
+
|
126
|
+
|
105
127
|
def render_slug_heading
|
106
128
|
puts '# Project Directory Name'
|
107
129
|
puts '- Word characters `[a-zA-Z0-9_]` only; non-word characters will be removed.'
|
108
130
|
end
|
109
|
-
|
110
|
-
|
131
|
+
|
132
|
+
|
111
133
|
def render_slug_prompt
|
112
134
|
print '> Directory Name for project: '
|
113
135
|
end
|
114
|
-
|
115
|
-
|
136
|
+
|
137
|
+
|
116
138
|
def render_slug_can_not_be_blank
|
117
139
|
puts '- Directory Name can not be blank.'
|
118
140
|
end
|
119
|
-
|
120
|
-
|
141
|
+
|
142
|
+
|
121
143
|
def render_slug_was_sanitized(result: nil)
|
122
144
|
puts '- Directory Name contained non-word characters that were removed.'
|
123
145
|
if result
|
124
146
|
puts " - Modified Directory Name: `#{result}`"
|
125
147
|
end
|
126
148
|
end
|
127
|
-
|
128
|
-
|
149
|
+
|
150
|
+
|
129
151
|
def render_title_heading
|
130
152
|
puts "\n"
|
131
153
|
puts '# Project Title'
|
132
154
|
end
|
133
|
-
|
134
|
-
|
155
|
+
|
156
|
+
|
135
157
|
def render_title_prompt
|
136
158
|
print '> Title of project: '
|
137
159
|
end
|
138
|
-
|
139
|
-
|
160
|
+
|
161
|
+
|
140
162
|
def render_title_can_not_be_blank
|
141
163
|
puts '- Title can not be blank.'
|
142
164
|
end
|
data/lib/muwu/default/default.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Muwu
|
2
2
|
module Default
|
3
|
-
|
4
|
-
|
3
|
+
|
4
|
+
|
5
5
|
FILENAMES = {
|
6
6
|
css_manifest: 'index.scss',
|
7
7
|
metadata: 'metadata.yml',
|
@@ -9,8 +9,9 @@ module Muwu
|
|
9
9
|
outline: 'outline.yml'
|
10
10
|
}
|
11
11
|
|
12
|
-
|
12
|
+
|
13
13
|
FILEPATHS = {
|
14
|
+
compiled: './compiled',
|
14
15
|
css: './config/css',
|
15
16
|
metadata: '',
|
16
17
|
options: '',
|
@@ -18,8 +19,9 @@ module Muwu
|
|
18
19
|
text: './text'
|
19
20
|
}
|
20
21
|
|
21
|
-
|
22
|
+
|
22
23
|
PROJECT_OPTIONS = {
|
24
|
+
contents_section_numbers_receive_link: true,
|
23
25
|
generate_navigators_automatically: true,
|
24
26
|
generate_subcontents_automatically: false,
|
25
27
|
html_head_includes_metadata_tags: true,
|
@@ -40,14 +42,15 @@ module Muwu
|
|
40
42
|
render_section_numbers: true,
|
41
43
|
render_sections_distinctly_depth_max: nil,
|
42
44
|
render_title_section_metadata: ['title', 'subtitle', 'author'],
|
45
|
+
rsync_options: '--itemize-changes --recursive --verbose',
|
43
46
|
warning_if_parent_heading_lacks_source: true
|
44
47
|
}
|
45
|
-
|
46
|
-
|
48
|
+
|
49
|
+
|
47
50
|
PROJECT_OUTLINE = {
|
48
51
|
default_text_block_name: 'main'
|
49
52
|
}
|
50
|
-
|
51
|
-
|
53
|
+
|
54
|
+
|
52
55
|
end
|
53
|
-
end
|
56
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Muwu
|
2
2
|
class Destination
|
3
|
-
|
4
|
-
|
3
|
+
|
4
|
+
|
5
5
|
include Muwu
|
6
6
|
|
7
7
|
|
@@ -14,41 +14,46 @@ module Muwu
|
|
14
14
|
attr_writer(
|
15
15
|
:output
|
16
16
|
)
|
17
|
-
|
18
|
-
|
17
|
+
|
18
|
+
|
19
19
|
MARGIN = ' '
|
20
|
-
|
21
|
-
|
20
|
+
|
21
|
+
|
22
22
|
def initialize
|
23
23
|
@margin_depth = 0
|
24
24
|
@output = nil
|
25
25
|
end
|
26
|
-
|
27
|
-
|
26
|
+
|
27
|
+
|
28
28
|
def inspect
|
29
29
|
["#{self.to_s}", "{", inspect_instance_variables, "}"].join(' ')
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
|
33
33
|
def inspect_instance_variables
|
34
34
|
self.instance_variables.map { |v| "#{v}=#{instance_variable_get(v).inspect}" }.join(", ")
|
35
35
|
end
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
|
37
|
+
|
38
|
+
|
39
39
|
public
|
40
|
-
|
41
|
-
|
40
|
+
|
41
|
+
|
42
|
+
def filename
|
43
|
+
@output_filename
|
44
|
+
end
|
45
|
+
|
46
|
+
|
42
47
|
def margin_dec
|
43
48
|
@margin_depth = @margin_depth.to_i - 1
|
44
49
|
end
|
45
50
|
|
46
|
-
|
51
|
+
|
47
52
|
def margin_inc
|
48
53
|
@margin_depth = @margin_depth.to_i + 1
|
49
54
|
end
|
50
55
|
|
51
|
-
|
56
|
+
|
52
57
|
def margin_indent
|
53
58
|
margin_inc
|
54
59
|
yield
|
@@ -59,8 +64,8 @@ module Muwu
|
|
59
64
|
def margin_to_zero
|
60
65
|
@margin_depth = 0
|
61
66
|
end
|
62
|
-
|
63
|
-
|
67
|
+
|
68
|
+
|
64
69
|
def output
|
65
70
|
begin
|
66
71
|
if output_is_closed
|
@@ -70,55 +75,55 @@ module Muwu
|
|
70
75
|
end
|
71
76
|
end
|
72
77
|
end
|
73
|
-
|
74
|
-
|
78
|
+
|
79
|
+
|
75
80
|
def output_is_closed
|
76
81
|
@output == nil
|
77
82
|
end
|
78
|
-
|
79
|
-
|
83
|
+
|
84
|
+
|
80
85
|
def output_is_opened
|
81
86
|
@output != nil
|
82
87
|
end
|
83
|
-
|
84
|
-
|
88
|
+
|
89
|
+
|
85
90
|
def output_stream
|
86
91
|
announce_open
|
87
92
|
output_open
|
88
93
|
yield
|
89
94
|
output_close
|
90
95
|
end
|
91
|
-
|
92
|
-
|
96
|
+
|
97
|
+
|
93
98
|
def padding_vertical(n)
|
94
99
|
output.print ("\n" * n)
|
95
100
|
yield
|
96
101
|
output.print ("\n" * n)
|
97
|
-
end
|
98
|
-
|
99
|
-
|
102
|
+
end
|
103
|
+
|
104
|
+
|
100
105
|
def write_inline(value)
|
101
106
|
write_value(value)
|
102
107
|
end
|
103
108
|
|
104
|
-
|
109
|
+
|
105
110
|
def write_inline_end(value)
|
106
111
|
write_value(value)
|
107
112
|
write_lf
|
108
113
|
end
|
109
114
|
|
110
|
-
|
115
|
+
|
111
116
|
def write_inline_indented(value)
|
112
117
|
write_margin
|
113
118
|
write_value(value)
|
114
119
|
end
|
115
|
-
|
116
|
-
|
120
|
+
|
121
|
+
|
117
122
|
def write_lf
|
118
123
|
output.print "\n"
|
119
124
|
end
|
120
|
-
|
121
|
-
|
125
|
+
|
126
|
+
|
122
127
|
def write_line(value)
|
123
128
|
write_margin
|
124
129
|
write_value(value)
|
@@ -129,35 +134,35 @@ module Muwu
|
|
129
134
|
def write_margin
|
130
135
|
output.print render_current_margin
|
131
136
|
end
|
132
|
-
|
133
|
-
|
137
|
+
|
138
|
+
|
134
139
|
def write_value(value)
|
135
140
|
output.print value
|
136
141
|
end
|
137
|
-
|
138
|
-
|
142
|
+
|
143
|
+
|
139
144
|
|
140
145
|
private
|
141
|
-
|
142
|
-
|
146
|
+
|
147
|
+
|
143
148
|
def announce_open
|
144
149
|
if @output_class == 'file'
|
145
150
|
puts "- Writing `#{output_filename}`."
|
146
151
|
end
|
147
152
|
end
|
148
|
-
|
153
|
+
|
149
154
|
|
150
155
|
def destination_file_open
|
151
156
|
filename = File.join(@output_working_directory, @output_filename)
|
152
157
|
File.new(filename, 'w')
|
153
158
|
end
|
154
|
-
|
155
|
-
|
159
|
+
|
160
|
+
|
156
161
|
def destination_stdout
|
157
162
|
$stdout
|
158
163
|
end
|
159
|
-
|
160
|
-
|
164
|
+
|
165
|
+
|
161
166
|
def output_close
|
162
167
|
begin
|
163
168
|
if output_is_closed
|
@@ -168,8 +173,8 @@ module Muwu
|
|
168
173
|
end
|
169
174
|
margin_to_zero
|
170
175
|
end
|
171
|
-
|
172
|
-
|
176
|
+
|
177
|
+
|
173
178
|
def output_close_assignment
|
174
179
|
if File === @output
|
175
180
|
@output.close
|
@@ -178,8 +183,8 @@ module Muwu
|
|
178
183
|
@output = nil
|
179
184
|
end
|
180
185
|
end
|
181
|
-
|
182
|
-
|
186
|
+
|
187
|
+
|
183
188
|
def output_open
|
184
189
|
margin_to_zero
|
185
190
|
begin
|
@@ -199,14 +204,13 @@ module Muwu
|
|
199
204
|
when 'stdout'
|
200
205
|
@output = destination_stdout
|
201
206
|
end
|
202
|
-
end
|
203
|
-
|
204
|
-
|
207
|
+
end
|
208
|
+
|
209
|
+
|
205
210
|
def render_current_margin
|
206
211
|
(MARGIN * @margin_depth.to_i)
|
207
212
|
end
|
208
|
-
|
209
|
-
|
210
|
-
end
|
211
|
-
end
|
212
213
|
|
214
|
+
|
215
|
+
end
|
216
|
+
end
|