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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/lib/{muwu_loader.rb → loader.rb} +2 -2
  3. data/lib/muwu.rb +3 -3
  4. data/lib/muwu/cli/cli.rb +33 -22
  5. data/lib/muwu/cli/help/compile +4 -4
  6. data/lib/muwu/cli/help/publish +19 -6
  7. data/lib/muwu/cli/help/reset +5 -2
  8. data/lib/muwu/cli/help/summary +4 -4
  9. data/lib/muwu/cli/help/sync +23 -15
  10. data/lib/muwu/cli/help/view +3 -0
  11. data/lib/muwu/controller/controller.rb +65 -30
  12. data/lib/muwu/controller/controller_interaction.rb +66 -44
  13. data/lib/muwu/default/default.rb +12 -9
  14. data/lib/muwu/destination/destination.rb +61 -57
  15. data/lib/muwu/destination_builder/destination_builder.rb +31 -33
  16. data/lib/muwu/manifest_task_builder/text_item_builder.rb +1 -8
  17. data/lib/muwu/project/project.rb +146 -127
  18. data/lib/muwu/project_builder/assets/config/css/base/html_elements.scss +19 -15
  19. data/lib/muwu/project_builder/assets/config/css/base/mixin_text_section_heading.scss +12 -11
  20. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_contents.scss +5 -5
  21. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_metadata.scss +2 -4
  22. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_navigator.scss +3 -4
  23. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_subcontents.scss +5 -5
  24. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_text.scss +16 -15
  25. data/lib/muwu/project_builder/assets/config/css/base/section_muwu_title.scss +9 -6
  26. data/lib/muwu/project_builder/project_reader.rb +1 -0
  27. data/lib/muwu/project_builder/project_reset_compiled.rb +31 -0
  28. data/lib/muwu/project_builder/project_reset_css.rb +30 -30
  29. data/lib/muwu/project_builder/project_starter.rb +7 -7
  30. data/lib/muwu/project_builder/project_validator.rb +14 -4
  31. data/lib/muwu/project_builder/project_writer.rb +12 -11
  32. data/lib/muwu/project_exception/compiled_folder_not_found.rb +23 -0
  33. data/lib/muwu/project_exception/lynx_not_available.rb +23 -0
  34. data/lib/muwu/project_exception_handler/fatal.rb +10 -9
  35. data/lib/muwu/project_options/project_options.rb +9 -8
  36. data/lib/muwu/project_options_builder/project_option_validator.rb +12 -12
  37. data/lib/muwu/project_options_builder/project_option_validator_value.rb +78 -82
  38. data/lib/muwu/publish/publish.rb +42 -34
  39. data/lib/muwu/render_concat/render_concat.rb +26 -27
  40. data/lib/muwu/render_html/render_html.rb +27 -24
  41. data/lib/muwu/render_html_partial/render_document_html.rb +64 -64
  42. data/lib/muwu/render_html_partial/render_text_item.rb +16 -16
  43. data/lib/muwu/sync/sync.rb +40 -36
  44. data/lib/muwu/var/deflistdiv.rb +0 -0
  45. data/lib/muwu/viewer/viewer.rb +25 -0
  46. data/test/what_no_tests.md +1 -3
  47. 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
@@ -0,0 +1,23 @@
1
+ module Muwu
2
+ module ProjectException
3
+ class LynxNotAvailable
4
+
5
+
6
+ def initialize
7
+ $stderr.puts "#{self.class}"
8
+ end
9
+
10
+
11
+ def report
12
+ "lynx is not available"
13
+ end
14
+
15
+
16
+ def type
17
+ :view
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