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,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,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
|