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,23 @@
1
+ module Muwu
2
+ module ProjectException
3
+ class OutlineStepNotUnderstood
4
+
5
+
6
+ def initialize(step)
7
+ @step = step
8
+ end
9
+
10
+
11
+ def report
12
+ "Outline step `#{@step}` is not understood."
13
+ end
14
+
15
+
16
+ def type
17
+ :warning
18
+ end
19
+
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ module Muwu
2
+ module ProjectException
3
+ class OutputAlreadyOpen
4
+
5
+
6
+ def initialize
7
+ $stderr.puts "#{self.class}"
8
+ end
9
+
10
+
11
+ def type
12
+ :internal
13
+ end
14
+
15
+
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module Muwu
2
+ module ProjectException
3
+ class OutputNotOpen
4
+
5
+
6
+ def initialize
7
+ $stderr.puts "#{self.class}"
8
+ end
9
+
10
+
11
+ def type
12
+ :internal
13
+ end
14
+
15
+
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,23 @@
1
+ module Muwu
2
+ module ProjectException
3
+ class SubcontentsWillBeGeneratedAutomatically
4
+
5
+
6
+ def initialize(index)
7
+ @index = index
8
+ end
9
+
10
+
11
+ def report
12
+ "Subcontents will be generated automatically. Ignoring outline directive (document #{@index})."
13
+ end
14
+
15
+
16
+ def type
17
+ :warning
18
+ end
19
+
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ module Muwu
2
+ module ProjectException
3
+ class TargetProjectFolderAlreadyExists
4
+
5
+
6
+ def initialize(project)
7
+ @project_folder = project.working_directory
8
+ end
9
+
10
+
11
+ def report
12
+ "The proposed directory `#{@project_folder}` already exists."
13
+ end
14
+
15
+
16
+ def type
17
+ :fatal
18
+ end
19
+
20
+
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,26 @@
1
+ module Muwu
2
+ module ProjectException
3
+ class TextSourceFileNotFound
4
+
5
+
6
+ def initialize(text_readfile)
7
+ @filename = text_readfile.source_filename
8
+ @numbering = text_readfile.numbering
9
+ @text_root_name = text_readfile.text_root_name
10
+ end
11
+
12
+
13
+ def report
14
+ "file not found `#{@filename}` (#{@text_root_name} #{@numbering})"
15
+ end
16
+
17
+
18
+ def type
19
+ :warning
20
+ end
21
+
22
+
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,39 @@
1
+ module Muwu
2
+ module ProjectExceptionHandler
3
+ class Fatal < StandardError
4
+
5
+
6
+ def initialize(exceptions)
7
+ @exceptions = [exceptions].flatten
8
+ render_exceptions
9
+ end
10
+
11
+
12
+ def render_exception(exception)
13
+ $stderr.puts "- #{exception.class}"
14
+ $stderr.puts " #{exception.report}"
15
+ end
16
+
17
+
18
+ def render_exceptions
19
+ render_header
20
+ @exceptions.each do |exception|
21
+ render_exception(exception)
22
+ end
23
+ render_lf
24
+ end
25
+
26
+
27
+ def render_header
28
+ $stderr.puts "#{self.inspect}"
29
+ end
30
+
31
+
32
+ def render_lf
33
+ $stderr.puts "\n"
34
+ end
35
+
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,54 @@
1
+ module Muwu
2
+ class ProjectOptions
3
+
4
+
5
+ attr_accessor(
6
+ :generate_navigators_automatically,
7
+ :generate_subcontents_automatically,
8
+ :html_head_includes_metadata_tags,
9
+ :html_lang,
10
+ :html_uses_javascript_navigation,
11
+ :markdown_allows_raw_html,
12
+ :markdown_renderer,
13
+ :outline_text_pathnames,
14
+ :output_destination,
15
+ :output_file_css_basename,
16
+ :output_file_html_basename,
17
+ :output_file_js_basename,
18
+ :output_formats,
19
+ :render_punctuation_smart,
20
+ :render_section_end_links,
21
+ :render_section_numbers,
22
+ :render_sections_distinctly_depth_max,
23
+ :render_title_section_metadata,
24
+ :warning_if_parent_heading_lacks_source
25
+ )
26
+
27
+
28
+ def initialize
29
+ Default::PROJECT_OPTIONS.each_pair do |key, value|
30
+ set_option(key, value)
31
+ end
32
+ end
33
+
34
+
35
+ def inspect
36
+ ["#{self.to_s}", "{", inspect_instance_variables, "}"].join(' ')
37
+ end
38
+
39
+
40
+ def inspect_instance_variables
41
+ instance_variables.map { |v| "#{v}=#{instance_variable_get(v).inspect}" }.join(", ")
42
+ end
43
+
44
+
45
+ def set_option(key, value)
46
+ if Default::PROJECT_OPTIONS.has_key?(key)
47
+ key_ivsym = "@#{key.to_s}"
48
+ instance_variable_set(key_ivsym, value)
49
+ end
50
+ end
51
+
52
+
53
+ end
54
+ end
@@ -0,0 +1,37 @@
1
+ module Muwu
2
+ class ProjectOptionValidator
3
+
4
+
5
+ include Muwu
6
+
7
+
8
+ attr_reader(
9
+ :key,
10
+ :value
11
+ )
12
+
13
+
14
+ def initialize(key, value, project)
15
+ key_validator = ProjectOptionValidatorKey.new(key, value, project)
16
+ @key = key_validator.validated_key
17
+ @value = key_validator.validated_value
18
+ end
19
+
20
+
21
+
22
+ protected
23
+
24
+
25
+ def self.new_if_valid_key(key, value, project)
26
+ option_validator = new(key, value, project)
27
+ if option_validator.key
28
+ return option_validator
29
+ else
30
+ return nil
31
+ end
32
+ end
33
+
34
+
35
+
36
+ end
37
+ end
@@ -0,0 +1,56 @@
1
+ module Muwu
2
+ class ProjectOptionValidatorKey
3
+
4
+
5
+ include Muwu
6
+
7
+
8
+ def initialize(key_as_provided, value_as_provided, project)
9
+ @project = project
10
+ @key_as_provided = key_as_provided
11
+ @value_as_provided = value_as_provided
12
+
13
+ @key_validated = validate_key
14
+ @value_validated = validate_value
15
+ end
16
+
17
+
18
+
19
+ public
20
+
21
+
22
+ def validated_key
23
+ @key_validated
24
+ end
25
+
26
+
27
+ def validated_value
28
+ @value_validated
29
+ end
30
+
31
+
32
+
33
+ private
34
+
35
+
36
+ def validate_key
37
+ key = @key_as_provided.downcase.gsub(/\W/,'_').to_sym
38
+ key_is_valid = Default::PROJECT_OPTIONS.keys.include?(key)
39
+ if key_is_valid
40
+ return key
41
+ else
42
+ @project.exceptions_add ProjectException::OptionKeyNotUnderstood.new(@key_as_provided)
43
+ return false
44
+ end
45
+ end
46
+
47
+
48
+ def validate_value
49
+ if @key_validated
50
+ ProjectOptionValidatorValue.new(@key_validated, @value_as_provided, @project).validated_value
51
+ end
52
+ end
53
+
54
+
55
+ end
56
+ end
@@ -0,0 +1,300 @@
1
+ module Muwu
2
+ class ProjectOptionValidatorValue
3
+
4
+
5
+ require 'iso-639'
6
+
7
+
8
+ include Muwu
9
+ include Helper
10
+
11
+
12
+ attr_accessor(
13
+ :key_validated,
14
+ :project,
15
+ :validation_method_name,
16
+ :value_provided
17
+ )
18
+
19
+
20
+ def initialize(key_validated, value_provided, project)
21
+ @key_validated = key_validated.to_s.gsub(/\W/,'_')
22
+ @project = project
23
+ @validation_method_name = "validate_option_#{@key_validated}"
24
+ @value_provided = value_provided
25
+ end
26
+
27
+
28
+
29
+ public
30
+
31
+
32
+ def validated_value
33
+ if private_methods.include?(@validation_method_name.to_sym)
34
+ return method(@validation_method_name).call
35
+ else
36
+ @project.exceptions_add ProjectException::OptionNotValidatable.new(@key_validated)
37
+ return nil
38
+ end
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
+
55
+
56
+ def value_as_array(value)
57
+ result = []
58
+ case value
59
+ when String
60
+ result = value.split(/,\s*/).map{ |v| value_as_string(v) }.sort
61
+ when Array
62
+ result = value.map{ |v| value_as_string(v) }.sort
63
+ when FalseClass, TrueClass
64
+ result << value
65
+ end
66
+ result.reject!{ |r| r == '' }
67
+ result
68
+ end
69
+
70
+
71
+ def value_as_integer(value)
72
+ value.to_i
73
+ end
74
+
75
+
76
+ def value_as_string(value)
77
+ value.to_s.strip.downcase
78
+ end
79
+
80
+
81
+ def value_provided_as_array
82
+ value_as_array(@value_provided)
83
+ end
84
+
85
+
86
+ def value_provided_as_integer
87
+ value_as_integer(@value_provided)
88
+ end
89
+
90
+
91
+ def value_provided_as_string
92
+ value_as_string(@value_provided)
93
+ end
94
+
95
+
96
+
97
+ private
98
+
99
+
100
+ def validate_option_boolean
101
+ case @value_provided
102
+ when false, true
103
+ return @value_provided
104
+ when nil, '', 'nil'
105
+ return nil
106
+ else
107
+ @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
108
+ return nil
109
+ end
110
+ end
111
+
112
+
113
+ def validate_option_generate_navigators_automatically
114
+ return validate_option_boolean
115
+ end
116
+
117
+
118
+ def validate_option_generate_subcontents_automatically
119
+ return validate_option_boolean
120
+ end
121
+
122
+
123
+ def validate_option_html_head_includes_metadata_tags
124
+ return validate_option_boolean
125
+ end
126
+
127
+
128
+ def validate_option_html_lang
129
+ case @value_provided
130
+ when nil, 'nil'
131
+ return nil
132
+ else
133
+ value = ISO_639.find(value_provided_as_string)
134
+ if value
135
+ return value.alpha2
136
+ else
137
+ @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
138
+ return nil
139
+ end
140
+ end
141
+ end
142
+
143
+
144
+ def validate_option_html_uses_javascript_navigation
145
+ return validate_option_boolean
146
+ end
147
+
148
+
149
+ def validate_option_markdown_allows_raw_html
150
+ return validate_option_boolean
151
+ end
152
+
153
+
154
+ def validate_option_markdown_renderer
155
+ value = value_provided_as_string
156
+ case value
157
+ when 'commonmarker'
158
+ return value
159
+ when 'motion-markdown-it', 'motion_markdown_it'
160
+ return 'motion-markdown-it'
161
+ else
162
+ @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
163
+ return nil
164
+ end
165
+ end
166
+
167
+
168
+ def validate_option_outline_text_pathnames
169
+ value = value_provided_as_string
170
+ case value
171
+ when 'explicit', 'flexible', 'implicit'
172
+ return value
173
+ else
174
+ @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
175
+ return nil
176
+ end
177
+ end
178
+
179
+
180
+ def validate_option_output_destination
181
+ value = value_provided_as_string
182
+ case value
183
+ when 'file', 'stdout'
184
+ return value
185
+ else
186
+ @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
187
+ return nil
188
+ end
189
+ end
190
+
191
+
192
+ def validate_option_output_file_basename
193
+ case @value_provided
194
+ when String
195
+ return SanitizerHelper.sanitize_destination_file_basename(File.basename(@value_provided))
196
+ when nil
197
+ return nil
198
+ else
199
+ @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
200
+ return nil
201
+ end
202
+ end
203
+
204
+
205
+ def validate_option_output_file_css_basename
206
+ return validate_option_output_file_basename
207
+ end
208
+
209
+
210
+ def validate_option_output_file_html_basename
211
+ return validate_option_output_file_basename
212
+ end
213
+
214
+
215
+ def validate_option_output_file_js_basename
216
+ return validate_option_output_file_basename
217
+ end
218
+
219
+
220
+ def validate_option_output_formats
221
+ result = []
222
+ value_provided_as_array.each do |value|
223
+ case value
224
+ when 'css', 'html', 'js'
225
+ result << value
226
+ else
227
+ @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
228
+ end
229
+ end
230
+ return result
231
+ end
232
+
233
+
234
+ def validate_option_render_punctuation_smart
235
+ return validate_option_boolean
236
+ end
237
+
238
+
239
+ def validate_option_render_section_end_links
240
+ result = []
241
+ value_provided_as_array.each do |value|
242
+ case value
243
+ when false
244
+ result << value
245
+ when true
246
+ result = ['contents','home','top']
247
+ when 'contents', 'home', 'top'
248
+ result << value
249
+ else
250
+ @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
251
+ end
252
+ end
253
+ return result
254
+ end
255
+
256
+
257
+ def validate_option_render_section_numbers
258
+ return validate_option_boolean
259
+ end
260
+
261
+
262
+ def validate_option_render_sections_distinctly_depth_max
263
+ case @value_provided
264
+ when false, nil, 0, '', 'nil'
265
+ return nil
266
+ when Integer
267
+ return @value_provided
268
+ else
269
+ @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
270
+ return nil
271
+ end
272
+ end
273
+
274
+
275
+ def validate_option_render_title_section_metadata
276
+ case @value_provided
277
+ when nil, '', 'nil'
278
+ return nil
279
+ when Array
280
+ return @value_provided
281
+ when String
282
+ return @value_provided.split(/,\s*/)
283
+ else
284
+ return [@value_provided.to_s].flatten
285
+ end
286
+ end
287
+
288
+
289
+ def validate_option_render_punctuation_smart
290
+ return validate_option_boolean
291
+ end
292
+
293
+
294
+ def validate_option_warning_if_parent_heading_lacks_source
295
+ return validate_option_boolean
296
+ end
297
+
298
+
299
+ end
300
+ end