svg_conform 0.1.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 +7 -0
- data/.github/workflows/rake.yml +15 -0
- data/.github/workflows/release.yml +23 -0
- data/.github/workflows/svgcheck-compatibility.yml +135 -0
- data/.gitignore +12 -0
- data/.rspec +3 -0
- data/.rubocop.yml +13 -0
- data/.rubocop_todo.yml +183 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/Gemfile +14 -0
- data/README.adoc +1384 -0
- data/Rakefile +15 -0
- data/config/profiles/base.yml +34 -0
- data/config/profiles/lucid_fix.yml +37 -0
- data/config/profiles/metanorma.yml +212 -0
- data/config/profiles/no_external_css.yml +20 -0
- data/config/profiles/svg_1_2_rfc.yml +284 -0
- data/config/profiles/svg_1_2_rfc_with_rdf.yml +145 -0
- data/config/svgcheck_mapping.yml +180 -0
- data/docs/profiles.adoc +547 -0
- data/docs/rdf_metadata_support.adoc +212 -0
- data/docs/remediation.adoc +732 -0
- data/docs/requirements.adoc +709 -0
- data/examples/demo.rb +116 -0
- data/examples/requirements_demo.rb +240 -0
- data/exe/svg_conform +7 -0
- data/lib/svg_conform/batch_report.rb +70 -0
- data/lib/svg_conform/cli.rb +107 -0
- data/lib/svg_conform/commands/check.rb +390 -0
- data/lib/svg_conform/commands/profiles.rb +118 -0
- data/lib/svg_conform/commands/svgcheck.rb +90 -0
- data/lib/svg_conform/commands/svgcheck_compare.rb +92 -0
- data/lib/svg_conform/commands/svgcheck_compatibility.rb +43 -0
- data/lib/svg_conform/commands/svgcheck_generate.rb +262 -0
- data/lib/svg_conform/compatibility/analysis_context.rb +68 -0
- data/lib/svg_conform/compatibility/comparison_result.rb +147 -0
- data/lib/svg_conform/compatibility/compatibility_analyzer.rb +85 -0
- data/lib/svg_conform/compatibility/file_processor.rb +109 -0
- data/lib/svg_conform/compatibility/pattern_discovery.rb +319 -0
- data/lib/svg_conform/compatibility/report_formatter.rb +359 -0
- data/lib/svg_conform/compatibility/svg_analysis_engine.rb +316 -0
- data/lib/svg_conform/compatibility/validity_analysis.rb +252 -0
- data/lib/svg_conform/compatibility/xml_analysis_engine.rb +198 -0
- data/lib/svg_conform/compatibility_analyzer.rb +285 -0
- data/lib/svg_conform/conformance_report.rb +267 -0
- data/lib/svg_conform/constants.rb +199 -0
- data/lib/svg_conform/css_color.rb +262 -0
- data/lib/svg_conform/document.rb +203 -0
- data/lib/svg_conform/external_checkers/svgcheck/compatibility_engine.rb +166 -0
- data/lib/svg_conform/external_checkers/svgcheck/output_generator.rb +101 -0
- data/lib/svg_conform/external_checkers/svgcheck/parser.rb +200 -0
- data/lib/svg_conform/external_checkers/svgcheck/report_comparator.rb +175 -0
- data/lib/svg_conform/external_checkers/svgcheck/report_generator.rb +82 -0
- data/lib/svg_conform/external_checkers/svgcheck/validation_pipeline.rb +249 -0
- data/lib/svg_conform/external_checkers/svgcheck.rb +56 -0
- data/lib/svg_conform/external_checkers.rb +34 -0
- data/lib/svg_conform/fixer.rb +56 -0
- data/lib/svg_conform/profile.rb +164 -0
- data/lib/svg_conform/profiles.rb +60 -0
- data/lib/svg_conform/remediation_engine.rb +92 -0
- data/lib/svg_conform/remediation_result.rb +36 -0
- data/lib/svg_conform/remediation_runner.rb +225 -0
- data/lib/svg_conform/remediations/base_remediation.rb +165 -0
- data/lib/svg_conform/remediations/color_remediation.rb +226 -0
- data/lib/svg_conform/remediations/font_embedding_remediation.rb +145 -0
- data/lib/svg_conform/remediations/font_remediation.rb +122 -0
- data/lib/svg_conform/remediations/image_embedding_remediation.rb +154 -0
- data/lib/svg_conform/remediations/invalid_id_references_remediation.rb +129 -0
- data/lib/svg_conform/remediations/namespace_attribute_remediation.rb +244 -0
- data/lib/svg_conform/remediations/namespace_remediation.rb +151 -0
- data/lib/svg_conform/remediations/no_external_css_remediation.rb +192 -0
- data/lib/svg_conform/remediations/style_promotion_remediation.rb +93 -0
- data/lib/svg_conform/remediations/viewbox_remediation.rb +127 -0
- data/lib/svg_conform/remediations.rb +40 -0
- data/lib/svg_conform/report_comparator.rb +772 -0
- data/lib/svg_conform/requirements/allowed_elements_requirement.rb +367 -0
- data/lib/svg_conform/requirements/base_requirement.rb +98 -0
- data/lib/svg_conform/requirements/color_restrictions_requirement.rb +126 -0
- data/lib/svg_conform/requirements/element_requirement_config.rb +75 -0
- data/lib/svg_conform/requirements/font_family_requirement.rb +133 -0
- data/lib/svg_conform/requirements/forbidden_content_requirement.rb +60 -0
- data/lib/svg_conform/requirements/id_reference_requirement.rb +133 -0
- data/lib/svg_conform/requirements/invalid_id_references_requirement.rb +132 -0
- data/lib/svg_conform/requirements/link_validation_requirement.rb +55 -0
- data/lib/svg_conform/requirements/namespace_attributes_requirement.rb +211 -0
- data/lib/svg_conform/requirements/namespace_requirement.rb +294 -0
- data/lib/svg_conform/requirements/no_external_css_requirement.rb +132 -0
- data/lib/svg_conform/requirements/no_external_fonts_requirement.rb +121 -0
- data/lib/svg_conform/requirements/no_external_images_requirement.rb +91 -0
- data/lib/svg_conform/requirements/style_promotion_requirement.rb +72 -0
- data/lib/svg_conform/requirements/style_requirement.rb +226 -0
- data/lib/svg_conform/requirements/viewbox_required_requirement.rb +96 -0
- data/lib/svg_conform/requirements.rb +49 -0
- data/lib/svg_conform/semantic_comparator.rb +829 -0
- data/lib/svg_conform/validation_context.rb +408 -0
- data/lib/svg_conform/validation_result.rb +146 -0
- data/lib/svg_conform/validator.rb +91 -0
- data/lib/svg_conform/version.rb +5 -0
- data/lib/svg_conform.rb +68 -0
- data/lib/tasks/fixtures.rake +321 -0
- data/lib/tasks/svgcheck.rake +111 -0
- data/reference-docs/SVG-1.2-RFC.rnc.txt +1676 -0
- data/reference-docs/Scalable Vector Graphics (SVG) 1.1 (Second Edition).html +40764 -0
- data/reference-docs/Scalable Vector Graphics (SVG) Tiny 1.2 Specification.html +44591 -0
- data/reference-docs/rfc7996.txt +2971 -0
- data/sig/svg_conform.rbs +4 -0
- data/spec/fixtures/allowed_elements/inputs/basic_violations.svg +21 -0
- data/spec/fixtures/allowed_elements/repair/basic_violations.svg +18 -0
- data/spec/fixtures/color_restrictions/inputs/basic_violations.svg +23 -0
- data/spec/fixtures/color_restrictions/repair/basic_violations.svg +23 -0
- data/spec/fixtures/comprehensive/inputs/multiple_violations.svg +21 -0
- data/spec/fixtures/comprehensive/repair/multiple_violations.svg +16 -0
- data/spec/fixtures/font_family/inputs/basic_violations.svg +17 -0
- data/spec/fixtures/font_family/repair/basic_violations.svg +17 -0
- data/spec/fixtures/forbidden_content/inputs/basic_violations.svg +27 -0
- data/spec/fixtures/forbidden_content/repair/basic_violations.svg +19 -0
- data/spec/fixtures/id_reference/inputs/basic_violations.svg +17 -0
- data/spec/fixtures/id_reference/repair/basic_violations.svg +15 -0
- data/spec/fixtures/link_validation/inputs/basic_violations.svg +20 -0
- data/spec/fixtures/link_validation/repair/basic_violations.svg +16 -0
- data/spec/fixtures/lucid/inputs/simple.svg +67 -0
- data/spec/fixtures/lucid/repair/simple.svg +63 -0
- data/spec/fixtures/namespace/inputs/basic_violations.svg +20 -0
- data/spec/fixtures/namespace/repair/basic_violations.svg +17 -0
- data/spec/fixtures/namespace_attributes/inputs/basic_violations.svg +16 -0
- data/spec/fixtures/namespace_attributes/repair/basic_violations.svg +15 -0
- data/spec/fixtures/no_external_css/inputs/basic_violations.svg +20 -0
- data/spec/fixtures/no_external_css/repair/basic_violations.svg +18 -0
- data/spec/fixtures/style/inputs/basic_violations.svg +22 -0
- data/spec/fixtures/style/repair/basic_violations.svg +22 -0
- data/spec/fixtures/style_promotion/inputs/basic_test.svg +15 -0
- data/spec/fixtures/style_promotion/repair/basic_test.svg +15 -0
- data/spec/fixtures/svg_1_2_rfc/inputs/allowed_elements_violations.svg +18 -0
- data/spec/fixtures/svg_1_2_rfc/inputs/color_restrictions_violations.svg +23 -0
- data/spec/fixtures/svgcheck/check/DrawBerry-sample-2.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/DrawBerry-sample-2.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/DrawBerry-sample-2.svg.out +23 -0
- data/spec/fixtures/svgcheck/check/IETF-test.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/IETF-test.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/IETF-test.svg.out +20 -0
- data/spec/fixtures/svgcheck/check/circle.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/circle.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/circle.svg.out +2 -0
- data/spec/fixtures/svgcheck/check/colors.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/colors.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/colors.svg.out +13 -0
- data/spec/fixtures/svgcheck/check/dia-sample-svg.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/dia-sample-svg.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/dia-sample-svg.svg.out +76 -0
- data/spec/fixtures/svgcheck/check/example-dot.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/example-dot.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/example-dot.svg.out +11 -0
- data/spec/fixtures/svgcheck/check/full-tiny.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/full-tiny.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/full-tiny.svg.out +5835 -0
- data/spec/fixtures/svgcheck/check/good.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/good.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/good.svg.out +1 -0
- data/spec/fixtures/svgcheck/check/httpbis-proxy20-fig6.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/httpbis-proxy20-fig6.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/httpbis-proxy20-fig6.svg.out +5 -0
- data/spec/fixtures/svgcheck/check/malformed.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/malformed.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/malformed.svg.out +8 -0
- data/spec/fixtures/svgcheck/check/rfc-svg.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/rfc-svg.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/rfc-svg.svg.out +1 -0
- data/spec/fixtures/svgcheck/check/rfc.xml.code +1 -0
- data/spec/fixtures/svgcheck/check/rfc.xml.err +0 -0
- data/spec/fixtures/svgcheck/check/rfc.xml.out +2 -0
- data/spec/fixtures/svgcheck/check/rgb.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/rgb.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/rgb.svg.out +9 -0
- data/spec/fixtures/svgcheck/check/svg-wordle.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/svg-wordle.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/svg-wordle.svg.out +508 -0
- data/spec/fixtures/svgcheck/check/threshold.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/threshold.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/threshold.svg.out +20 -0
- data/spec/fixtures/svgcheck/check/utf8.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/utf8.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/utf8.svg.out +162 -0
- data/spec/fixtures/svgcheck/check/viewBox-both.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/viewBox-both.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/viewBox-both.svg.out +4 -0
- data/spec/fixtures/svgcheck/check/viewBox-height.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/viewBox-height.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/viewBox-height.svg.out +3 -0
- data/spec/fixtures/svgcheck/check/viewBox-none.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/viewBox-none.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/viewBox-none.svg.out +3 -0
- data/spec/fixtures/svgcheck/check/viewBox-width.svg.code +1 -0
- data/spec/fixtures/svgcheck/check/viewBox-width.svg.err +0 -0
- data/spec/fixtures/svgcheck/check/viewBox-width.svg.out +3 -0
- data/spec/fixtures/svgcheck/inputs/DrawBerry-sample-2.svg +28 -0
- data/spec/fixtures/svgcheck/inputs/IETF-test.svg +28 -0
- data/spec/fixtures/svgcheck/inputs/circle.svg +3 -0
- data/spec/fixtures/svgcheck/inputs/colors.svg +18 -0
- data/spec/fixtures/svgcheck/inputs/dia-sample-svg.svg +47 -0
- data/spec/fixtures/svgcheck/inputs/example-dot.svg +75 -0
- data/spec/fixtures/svgcheck/inputs/full-tiny.svg +16194 -0
- data/spec/fixtures/svgcheck/inputs/good.svg +19 -0
- data/spec/fixtures/svgcheck/inputs/httpbis-proxy20-fig6.svg +2 -0
- data/spec/fixtures/svgcheck/inputs/malformed.svg +11 -0
- data/spec/fixtures/svgcheck/inputs/rfc-svg.svg +1028 -0
- data/spec/fixtures/svgcheck/inputs/rfc.xml +37 -0
- data/spec/fixtures/svgcheck/inputs/rgb.svg +9 -0
- data/spec/fixtures/svgcheck/inputs/svg-wordle.svg +330 -0
- data/spec/fixtures/svgcheck/inputs/threshold.svg +26 -0
- data/spec/fixtures/svgcheck/inputs/utf8.svg +448 -0
- data/spec/fixtures/svgcheck/inputs/viewBox-both.svg +3 -0
- data/spec/fixtures/svgcheck/inputs/viewBox-height.svg +3 -0
- data/spec/fixtures/svgcheck/inputs/viewBox-none.svg +3 -0
- data/spec/fixtures/svgcheck/inputs/viewBox-width.svg +3 -0
- data/spec/fixtures/svgcheck/repair/DrawBerry-sample-2.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/DrawBerry-sample-2.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/DrawBerry-sample-2.svg.file +0 -0
- data/spec/fixtures/svgcheck/repair/DrawBerry-sample-2.svg.out +23 -0
- data/spec/fixtures/svgcheck/repair/IETF-test.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/IETF-test.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/IETF-test.svg.file +29 -0
- data/spec/fixtures/svgcheck/repair/IETF-test.svg.out +20 -0
- data/spec/fixtures/svgcheck/repair/circle.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/circle.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/circle.svg.file +4 -0
- data/spec/fixtures/svgcheck/repair/circle.svg.out +2 -0
- data/spec/fixtures/svgcheck/repair/colors.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/colors.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/colors.svg.file +19 -0
- data/spec/fixtures/svgcheck/repair/colors.svg.out +13 -0
- data/spec/fixtures/svgcheck/repair/dia-sample-svg.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/dia-sample-svg.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/dia-sample-svg.svg.file +47 -0
- data/spec/fixtures/svgcheck/repair/dia-sample-svg.svg.out +76 -0
- data/spec/fixtures/svgcheck/repair/example-dot.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/example-dot.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/example-dot.svg.file +69 -0
- data/spec/fixtures/svgcheck/repair/example-dot.svg.out +11 -0
- data/spec/fixtures/svgcheck/repair/good.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/good.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/good.svg.file +0 -0
- data/spec/fixtures/svgcheck/repair/good.svg.out +1 -0
- data/spec/fixtures/svgcheck/repair/httpbis-proxy20-fig6.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/httpbis-proxy20-fig6.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/httpbis-proxy20-fig6.svg.file +73 -0
- data/spec/fixtures/svgcheck/repair/httpbis-proxy20-fig6.svg.out +5 -0
- data/spec/fixtures/svgcheck/repair/malformed.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/malformed.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/malformed.svg.file +9 -0
- data/spec/fixtures/svgcheck/repair/malformed.svg.out +8 -0
- data/spec/fixtures/svgcheck/repair/rfc-svg.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/rfc-svg.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/rfc-svg.svg.file +0 -0
- data/spec/fixtures/svgcheck/repair/rfc-svg.svg.out +1 -0
- data/spec/fixtures/svgcheck/repair/rfc.xml.code +1 -0
- data/spec/fixtures/svgcheck/repair/rfc.xml.err +0 -0
- data/spec/fixtures/svgcheck/repair/rfc.xml.file +37 -0
- data/spec/fixtures/svgcheck/repair/rfc.xml.out +2 -0
- data/spec/fixtures/svgcheck/repair/rgb.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/rgb.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/rgb.svg.file +10 -0
- data/spec/fixtures/svgcheck/repair/rgb.svg.out +9 -0
- data/spec/fixtures/svgcheck/repair/svg-wordle.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/svg-wordle.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/svg-wordle.svg.file +112 -0
- data/spec/fixtures/svgcheck/repair/svg-wordle.svg.out +508 -0
- data/spec/fixtures/svgcheck/repair/threshold.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/threshold.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/threshold.svg.file +27 -0
- data/spec/fixtures/svgcheck/repair/threshold.svg.out +20 -0
- data/spec/fixtures/svgcheck/repair/utf8.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/utf8.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/utf8.svg.file +381 -0
- data/spec/fixtures/svgcheck/repair/utf8.svg.out +162 -0
- data/spec/fixtures/svgcheck/repair/viewBox-both.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/viewBox-both.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/viewBox-both.svg.file +4 -0
- data/spec/fixtures/svgcheck/repair/viewBox-both.svg.out +4 -0
- data/spec/fixtures/svgcheck/repair/viewBox-height.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/viewBox-height.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/viewBox-height.svg.file +4 -0
- data/spec/fixtures/svgcheck/repair/viewBox-height.svg.out +3 -0
- data/spec/fixtures/svgcheck/repair/viewBox-none.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/viewBox-none.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/viewBox-none.svg.file +4 -0
- data/spec/fixtures/svgcheck/repair/viewBox-none.svg.out +3 -0
- data/spec/fixtures/svgcheck/repair/viewBox-width.svg.code +1 -0
- data/spec/fixtures/svgcheck/repair/viewBox-width.svg.err +0 -0
- data/spec/fixtures/svgcheck/repair/viewBox-width.svg.file +4 -0
- data/spec/fixtures/svgcheck/repair/viewBox-width.svg.out +3 -0
- data/spec/fixtures/viewbox_required/inputs/missing_viewbox.svg +10 -0
- data/spec/fixtures/viewbox_required/repair/missing_viewbox.svg +10 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/svg_conform/batch_report_spec.rb +99 -0
- data/spec/svg_conform/commands/check_command_spec.rb +90 -0
- data/spec/svg_conform/commands/profiles_command_spec.rb +20 -0
- data/spec/svg_conform/commands/svgcheck_compare_command_spec.rb +13 -0
- data/spec/svg_conform/commands/svgcheck_compatibility_command_spec.rb +13 -0
- data/spec/svg_conform/commands/svgcheck_generate_command_spec.rb +14 -0
- data/spec/svg_conform/profiles/base_profile_spec.rb +42 -0
- data/spec/svg_conform/profiles/lucid_fix_profile_spec.rb +46 -0
- data/spec/svg_conform/profiles/lucid_profile_spec.rb +84 -0
- data/spec/svg_conform/profiles/metanorma_profile_spec.rb +62 -0
- data/spec/svg_conform/profiles/no_external_css_profile_spec.rb +66 -0
- data/spec/svg_conform/profiles/svg_1_2_rfc_profile_spec.rb +200 -0
- data/spec/svg_conform/profiles/svg_1_2_rfc_with_rdf_profile_spec.rb +81 -0
- data/spec/svg_conform/remediations/color_remediation_spec.rb +95 -0
- data/spec/svg_conform/remediations/font_embedding_remediation_spec.rb +20 -0
- data/spec/svg_conform/remediations/font_remediation_spec.rb +95 -0
- data/spec/svg_conform/remediations/image_embedding_remediation_spec.rb +20 -0
- data/spec/svg_conform/remediations/invalid_id_references_remediation_spec.rb +97 -0
- data/spec/svg_conform/remediations/namespace_attribute_remediation_spec.rb +97 -0
- data/spec/svg_conform/remediations/namespace_remediation_spec.rb +95 -0
- data/spec/svg_conform/remediations/no_external_css_remediation_spec.rb +97 -0
- data/spec/svg_conform/remediations/style_promotion_remediation_spec.rb +97 -0
- data/spec/svg_conform/remediations/viewbox_remediation_spec.rb +95 -0
- data/spec/svg_conform/requirements/allowed_elements_requirement_spec.rb +118 -0
- data/spec/svg_conform/requirements/color_restrictions_requirement_spec.rb +168 -0
- data/spec/svg_conform/requirements/font_family_requirement_spec.rb +188 -0
- data/spec/svg_conform/requirements/forbidden_content_requirement_spec.rb +195 -0
- data/spec/svg_conform/requirements/id_reference_requirement_spec.rb +78 -0
- data/spec/svg_conform/requirements/invalid_id_references_requirement_spec.rb +78 -0
- data/spec/svg_conform/requirements/link_validation_requirement_spec.rb +78 -0
- data/spec/svg_conform/requirements/namespace_attributes_requirement_spec.rb +86 -0
- data/spec/svg_conform/requirements/namespace_requirement_spec.rb +184 -0
- data/spec/svg_conform/requirements/no_external_css_requirement_spec.rb +78 -0
- data/spec/svg_conform/requirements/no_external_fonts_requirement_spec.rb +20 -0
- data/spec/svg_conform/requirements/no_external_images_requirement_spec.rb +20 -0
- data/spec/svg_conform/requirements/style_promotion_requirement_spec.rb +78 -0
- data/spec/svg_conform/requirements/style_requirement_spec.rb +76 -0
- data/spec/svg_conform/requirements/viewbox_required_requirement_spec.rb +165 -0
- data/spec/svg_conform_spec.rb +32 -0
- data/spec/svgcheck_compatibility_spec.rb +355 -0
- data/svg_conform.gemspec +35 -0
- metadata +436 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny"
|
|
3
|
+
width="120" height="80" viewBox="0 0 120 80">
|
|
4
|
+
<title>Style Promotion</title>
|
|
5
|
+
<desc>Testing style property promotion to attributes</desc>
|
|
6
|
+
|
|
7
|
+
<!-- Style properties promoted to attributes -->
|
|
8
|
+
<rect x="10" y="10" width="30" height="20" fill="black" stroke="none"/>
|
|
9
|
+
<circle cx="60" cy="20" r="10" fill="white" stroke="black" stroke-width="1"/>
|
|
10
|
+
<text x="10" y="50" font-family="serif" font-size="12" fill="black">Text</text>
|
|
11
|
+
<path d="M 10 60 L 40 70 L 10 70 Z" fill="none" stroke="black" stroke-width="2"/>
|
|
12
|
+
|
|
13
|
+
<!-- Style promoted (overrides attribute) -->
|
|
14
|
+
<rect x="80" y="10" width="20" height="20" fill="black"/>
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
3
|
+
version="1.2" baseProfile="tiny" width="100" height="100" viewBox="0 0 100 100">
|
|
4
|
+
<title>Test SVG</title>
|
|
5
|
+
<desc>Testing allowed elements violations</desc>
|
|
6
|
+
|
|
7
|
+
<script type="text/javascript">alert('This script should be removed');</script>
|
|
8
|
+
<clipPath id="clip"><rect x="0" y="0" width="50" height="50"/></clipPath>
|
|
9
|
+
<marker id="arrow" markerWidth="10" markerHeight="10"><path d="M 0 0 L 10 5 L 0 10 z"/></marker>
|
|
10
|
+
|
|
11
|
+
<g>
|
|
12
|
+
<rect x="10" y="10" width="80" height="80" fill="black" stroke="none"/>
|
|
13
|
+
<circle cx="50" cy="50" r="20" fill="white"/>
|
|
14
|
+
<text x="50" y="55" text-anchor="middle" font-family="serif">Valid</text>
|
|
15
|
+
</g>
|
|
16
|
+
|
|
17
|
+
<rect x="5" y="5" width="10" height="10" fill="red" onclick="alert('click')"/>
|
|
18
|
+
</svg>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny"
|
|
3
|
+
width="100" height="100" viewBox="0 0 100 100">
|
|
4
|
+
<title>Color Restrictions Violations</title>
|
|
5
|
+
<desc>Testing color restrictions - should only allow black and white</desc>
|
|
6
|
+
|
|
7
|
+
<!-- Invalid colors that should be converted -->
|
|
8
|
+
<rect x="10" y="10" width="20" height="20" fill="red"/>
|
|
9
|
+
<rect x="40" y="10" width="20" height="20" fill="blue"/>
|
|
10
|
+
<rect x="70" y="10" width="20" height="20" fill="#00ff00"/>
|
|
11
|
+
<circle cx="25" cy="50" r="10" fill="rgb(255,0,255)"/>
|
|
12
|
+
<circle cx="50" cy="50" r="10" fill="orange"/>
|
|
13
|
+
<circle cx="75" cy="50" r="10" fill="#f0f"/>
|
|
14
|
+
|
|
15
|
+
<!-- Valid colors that should remain -->
|
|
16
|
+
<rect x="10" y="70" width="20" height="20" fill="black"/>
|
|
17
|
+
<rect x="40" y="70" width="20" height="20" fill="white"/>
|
|
18
|
+
<rect x="70" y="70" width="20" height="20" fill="none"/>
|
|
19
|
+
|
|
20
|
+
<!-- Style attributes with invalid colors -->
|
|
21
|
+
<path d="M 10 90 L 90 90" stroke="red" stroke-width="2"/>
|
|
22
|
+
<text x="50" y="45" fill="green" font-family="serif" text-anchor="middle">Colors</text>
|
|
23
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Tests/DrawBerry-sample-2.svg:14: Element 'g' does not allow attributes with namespace 'http://www.inkscape.org/namespaces/inkscape'
|
|
2
|
+
Tests/DrawBerry-sample-2.svg:14: Element 'g' does not allow attributes with namespace 'http://www.inkscape.org/namespaces/inkscape'
|
|
3
|
+
Tests/DrawBerry-sample-2.svg:16: Style property 'fill' promoted to attribute
|
|
4
|
+
Tests/DrawBerry-sample-2.svg:16: Style property 'stroke' promoted to attribute
|
|
5
|
+
Tests/DrawBerry-sample-2.svg:16: Style property 'stroke-width' promoted to attribute
|
|
6
|
+
Tests/DrawBerry-sample-2.svg:16: Style property 'stroke-opacity' promoted to attribute
|
|
7
|
+
Tests/DrawBerry-sample-2.svg:16: Style property 'stroke-linecap' promoted to attribute
|
|
8
|
+
Tests/DrawBerry-sample-2.svg:16: Style property 'stroke-linejoin' promoted to attribute
|
|
9
|
+
Tests/DrawBerry-sample-2.svg:18: Style property 'fill' promoted to attribute
|
|
10
|
+
Tests/DrawBerry-sample-2.svg:18: Style property 'stroke' promoted to attribute
|
|
11
|
+
Tests/DrawBerry-sample-2.svg:18: Style property 'stroke-width' promoted to attribute
|
|
12
|
+
Tests/DrawBerry-sample-2.svg:18: Style property 'stroke-opacity' promoted to attribute
|
|
13
|
+
Tests/DrawBerry-sample-2.svg:18: Style property 'stroke-linecap' promoted to attribute
|
|
14
|
+
Tests/DrawBerry-sample-2.svg:18: Style property 'stroke-linejoin' promoted to attribute
|
|
15
|
+
Tests/DrawBerry-sample-2.svg:20: Style property 'fill' promoted to attribute
|
|
16
|
+
Tests/DrawBerry-sample-2.svg:20: Style property 'stroke' promoted to attribute
|
|
17
|
+
Tests/DrawBerry-sample-2.svg:22: Style property 'fill' promoted to attribute
|
|
18
|
+
Tests/DrawBerry-sample-2.svg:22: Style property 'stroke' promoted to attribute
|
|
19
|
+
Tests/DrawBerry-sample-2.svg:24: Style property 'fill' promoted to attribute
|
|
20
|
+
Tests/DrawBerry-sample-2.svg:24: Style property 'stroke' promoted to attribute
|
|
21
|
+
Tests/DrawBerry-sample-2.svg:26: Style property 'fill' promoted to attribute
|
|
22
|
+
Tests/DrawBerry-sample-2.svg:26: Style property 'stroke' promoted to attribute
|
|
23
|
+
INFO: File conforms to SVG requirements.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Tests/IETF-test.svg:4: Style property 'stroke' promoted to attribute
|
|
2
|
+
Tests/IETF-test.svg:4: Style property 'stroke-width' promoted to attribute
|
|
3
|
+
Tests/IETF-test.svg:4: Style property 'fill' promoted to attribute
|
|
4
|
+
Tests/IETF-test.svg:4: The attribute 'stroke' does not allow the value 'rgb(0,0,0)', replaced with 'black'
|
|
5
|
+
Tests/IETF-test.svg:5: Style property 'fill' promoted to attribute
|
|
6
|
+
Tests/IETF-test.svg:9: Style property 'stroke' promoted to attribute
|
|
7
|
+
Tests/IETF-test.svg:9: Style property 'stroke-width' promoted to attribute
|
|
8
|
+
Tests/IETF-test.svg:9: Style property 'fill' promoted to attribute
|
|
9
|
+
Tests/IETF-test.svg:9: The attribute 'stroke' does not allow the value 'rgb(0,0,0)', replaced with 'black'
|
|
10
|
+
Tests/IETF-test.svg:10: Style property 'fill' promoted to attribute
|
|
11
|
+
Tests/IETF-test.svg:14: Style property 'stroke' promoted to attribute
|
|
12
|
+
Tests/IETF-test.svg:14: Style property 'fill' promoted to attribute
|
|
13
|
+
Tests/IETF-test.svg:17: Style property 'font-family' promoted to attribute
|
|
14
|
+
Tests/IETF-test.svg:17: Style property 'font-size' promoted to attribute
|
|
15
|
+
Tests/IETF-test.svg:17: Style property 'font-weight' promoted to attribute
|
|
16
|
+
Tests/IETF-test.svg:17: The attribute 'font-family' does not allow the value 'Arial embedded', replaced with 'sans-serif'
|
|
17
|
+
Tests/IETF-test.svg:18: Style property 'stroke' promoted to attribute
|
|
18
|
+
Tests/IETF-test.svg:18: Style property 'fill' promoted to attribute
|
|
19
|
+
Tests/IETF-test.svg:18: The attribute 'fill' does not allow the value 'rgb(0,0,0)', replaced with 'black'
|
|
20
|
+
ERROR: File does not conform to SVG requirements
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Tests/colors.svg:2: The attribute 'fill' does not allow the value 'red', replaced with 'black'
|
|
2
|
+
Tests/colors.svg:3: The attribute 'fill' does not allow the value 'rgb(0,0,0)', replaced with 'black'
|
|
3
|
+
Tests/colors.svg:4: The attribute 'fill' does not allow the value 'rgb(255,255,255)', replaced with 'white'
|
|
4
|
+
Tests/colors.svg:5: The attribute 'fill' does not allow the value 'rgb(128,128,182)', replaced with 'black'
|
|
5
|
+
Tests/colors.svg:6: The attribute 'fill' does not allow the value '#fff', replaced with 'white'
|
|
6
|
+
Tests/colors.svg:7: The attribute 'fill' does not allow the value '#aaa', replaced with 'black'
|
|
7
|
+
Tests/colors.svg:8: The attribute 'fill' does not allow the value '#000', replaced with 'black'
|
|
8
|
+
Tests/colors.svg:11: The attribute 'fill' does not allow the value '#0a0a0a', replaced with 'black'
|
|
9
|
+
Tests/colors.svg:12: The attribute 'fill' does not allow the value 'grey', replaced with 'black'
|
|
10
|
+
Tests/colors.svg:13: The attribute 'fill' does not allow the value 'gray', replaced with 'black'
|
|
11
|
+
Tests/colors.svg:16: The attribute 'fill' does not allow the value 'unknown', replaced with 'black'
|
|
12
|
+
Tests/colors.svg:17: The attribute 'fill' does not allow the value 'rgb(100%,100%,100%)', replaced with 'white'
|
|
13
|
+
ERROR: File does not conform to SVG requirements
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1
|
|
File without changes
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
Tests/dia-sample-svg.svg:3: Style property 'fill' promoted to attribute
|
|
2
|
+
Tests/dia-sample-svg.svg:3: Style property 'text-anchor' promoted to attribute
|
|
3
|
+
Tests/dia-sample-svg.svg:3: Style property 'font-family' promoted to attribute
|
|
4
|
+
Tests/dia-sample-svg.svg:3: Style property 'font-style' promoted to attribute
|
|
5
|
+
Tests/dia-sample-svg.svg:3: Style property 'font-weight' promoted to attribute
|
|
6
|
+
Tests/dia-sample-svg.svg:3: The attribute 'fill' does not allow the value '#00FF00', replaced with 'black'
|
|
7
|
+
Tests/dia-sample-svg.svg:7: Style property 'fill' promoted to attribute
|
|
8
|
+
Tests/dia-sample-svg.svg:8: Style property 'fill' promoted to attribute
|
|
9
|
+
Tests/dia-sample-svg.svg:8: Style property 'fill-opacity' promoted to attribute
|
|
10
|
+
Tests/dia-sample-svg.svg:8: Style property 'stroke-width' promoted to attribute
|
|
11
|
+
Tests/dia-sample-svg.svg:8: Style property 'stroke' promoted to attribute
|
|
12
|
+
Tests/dia-sample-svg.svg:11: Style property 'fill' promoted to attribute
|
|
13
|
+
Tests/dia-sample-svg.svg:11: The attribute 'fill' does not allow the value '#ff00ff', replaced with 'black'
|
|
14
|
+
Tests/dia-sample-svg.svg:12: Style property 'fill' promoted to attribute
|
|
15
|
+
Tests/dia-sample-svg.svg:12: Style property 'fill-opacity' promoted to attribute
|
|
16
|
+
Tests/dia-sample-svg.svg:12: Style property 'stroke-width' promoted to attribute
|
|
17
|
+
Tests/dia-sample-svg.svg:12: Style property 'stroke' promoted to attribute
|
|
18
|
+
Tests/dia-sample-svg.svg:15: Style property 'fill' promoted to attribute
|
|
19
|
+
Tests/dia-sample-svg.svg:15: Style property 'fill-opacity' promoted to attribute
|
|
20
|
+
Tests/dia-sample-svg.svg:15: Style property 'stroke-width' promoted to attribute
|
|
21
|
+
Tests/dia-sample-svg.svg:15: Style property 'stroke' promoted to attribute
|
|
22
|
+
Tests/dia-sample-svg.svg:16: Style property 'fill' promoted to attribute
|
|
23
|
+
Tests/dia-sample-svg.svg:16: The attribute 'fill' does not allow the value '#FF0000', replaced with 'black'
|
|
24
|
+
Tests/dia-sample-svg.svg:17: Style property 'fill' promoted to attribute
|
|
25
|
+
Tests/dia-sample-svg.svg:17: Style property 'fill-opacity' promoted to attribute
|
|
26
|
+
Tests/dia-sample-svg.svg:17: Style property 'stroke-width' promoted to attribute
|
|
27
|
+
Tests/dia-sample-svg.svg:17: Style property 'stroke' promoted to attribute
|
|
28
|
+
Tests/dia-sample-svg.svg:20: Style property 'fill' promoted to attribute
|
|
29
|
+
Tests/dia-sample-svg.svg:20: Style property 'fill-opacity' promoted to attribute
|
|
30
|
+
Tests/dia-sample-svg.svg:20: Style property 'stroke-width' promoted to attribute
|
|
31
|
+
Tests/dia-sample-svg.svg:20: Style property 'stroke' promoted to attribute
|
|
32
|
+
Tests/dia-sample-svg.svg:21: Style property 'fill' promoted to attribute
|
|
33
|
+
Tests/dia-sample-svg.svg:22: Style property 'fill' promoted to attribute
|
|
34
|
+
Tests/dia-sample-svg.svg:22: Style property 'fill-opacity' promoted to attribute
|
|
35
|
+
Tests/dia-sample-svg.svg:22: Style property 'stroke-width' promoted to attribute
|
|
36
|
+
Tests/dia-sample-svg.svg:22: Style property 'stroke' promoted to attribute
|
|
37
|
+
Tests/dia-sample-svg.svg:24: Style property 'fill' promoted to attribute
|
|
38
|
+
Tests/dia-sample-svg.svg:24: Style property 'text-anchor' promoted to attribute
|
|
39
|
+
Tests/dia-sample-svg.svg:24: Style property 'font-family' promoted to attribute
|
|
40
|
+
Tests/dia-sample-svg.svg:24: Style property 'font-style' promoted to attribute
|
|
41
|
+
Tests/dia-sample-svg.svg:24: Style property 'font-weight' promoted to attribute
|
|
42
|
+
Tests/dia-sample-svg.svg:27: Style property 'fill' promoted to attribute
|
|
43
|
+
Tests/dia-sample-svg.svg:27: Style property 'text-anchor' promoted to attribute
|
|
44
|
+
Tests/dia-sample-svg.svg:27: Style property 'font-family' promoted to attribute
|
|
45
|
+
Tests/dia-sample-svg.svg:27: Style property 'font-style' promoted to attribute
|
|
46
|
+
Tests/dia-sample-svg.svg:27: Style property 'font-weight' promoted to attribute
|
|
47
|
+
Tests/dia-sample-svg.svg:30: Style property 'fill' promoted to attribute
|
|
48
|
+
Tests/dia-sample-svg.svg:30: Style property 'text-anchor' promoted to attribute
|
|
49
|
+
Tests/dia-sample-svg.svg:30: Style property 'font-family' promoted to attribute
|
|
50
|
+
Tests/dia-sample-svg.svg:30: Style property 'font-style' promoted to attribute
|
|
51
|
+
Tests/dia-sample-svg.svg:30: Style property 'font-weight' promoted to attribute
|
|
52
|
+
Tests/dia-sample-svg.svg:34: Style property 'fill' promoted to attribute
|
|
53
|
+
Tests/dia-sample-svg.svg:34: Style property 'fill-opacity' promoted to attribute
|
|
54
|
+
Tests/dia-sample-svg.svg:34: Style property 'stroke-width' promoted to attribute
|
|
55
|
+
Tests/dia-sample-svg.svg:34: Style property 'stroke' promoted to attribute
|
|
56
|
+
Tests/dia-sample-svg.svg:35: Style property 'fill' promoted to attribute
|
|
57
|
+
Tests/dia-sample-svg.svg:36: Style property 'fill' promoted to attribute
|
|
58
|
+
Tests/dia-sample-svg.svg:36: Style property 'fill-opacity' promoted to attribute
|
|
59
|
+
Tests/dia-sample-svg.svg:36: Style property 'stroke-width' promoted to attribute
|
|
60
|
+
Tests/dia-sample-svg.svg:36: Style property 'stroke' promoted to attribute
|
|
61
|
+
Tests/dia-sample-svg.svg:38: Style property 'fill' promoted to attribute
|
|
62
|
+
Tests/dia-sample-svg.svg:38: Style property 'text-anchor' promoted to attribute
|
|
63
|
+
Tests/dia-sample-svg.svg:38: Style property 'font-family' promoted to attribute
|
|
64
|
+
Tests/dia-sample-svg.svg:38: Style property 'font-style' promoted to attribute
|
|
65
|
+
Tests/dia-sample-svg.svg:38: Style property 'font-weight' promoted to attribute
|
|
66
|
+
Tests/dia-sample-svg.svg:41: Style property 'fill' promoted to attribute
|
|
67
|
+
Tests/dia-sample-svg.svg:41: Style property 'text-anchor' promoted to attribute
|
|
68
|
+
Tests/dia-sample-svg.svg:41: Style property 'font-family' promoted to attribute
|
|
69
|
+
Tests/dia-sample-svg.svg:41: Style property 'font-style' promoted to attribute
|
|
70
|
+
Tests/dia-sample-svg.svg:41: Style property 'font-weight' promoted to attribute
|
|
71
|
+
Tests/dia-sample-svg.svg:44: Style property 'fill' promoted to attribute
|
|
72
|
+
Tests/dia-sample-svg.svg:44: Style property 'text-anchor' promoted to attribute
|
|
73
|
+
Tests/dia-sample-svg.svg:44: Style property 'font-family' promoted to attribute
|
|
74
|
+
Tests/dia-sample-svg.svg:44: Style property 'font-style' promoted to attribute
|
|
75
|
+
Tests/dia-sample-svg.svg:44: Style property 'font-weight' promoted to attribute
|
|
76
|
+
ERROR: File does not conform to SVG requirements
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Tests/example-dot.svg:15: The attribute 'font-family' does not allow the value 'Times,serif', replaced with 'serif'
|
|
2
|
+
Tests/example-dot.svg:20: The attribute 'font-family' does not allow the value 'Times,serif', replaced with 'serif'
|
|
3
|
+
Tests/example-dot.svg:24: The attribute 'stroke' does not allow the value 'red', replaced with 'black'
|
|
4
|
+
Tests/example-dot.svg:29: The attribute 'font-family' does not allow the value 'Times,serif', replaced with 'serif'
|
|
5
|
+
Tests/example-dot.svg:37: The attribute 'stroke' does not allow the value 'red', replaced with 'black'
|
|
6
|
+
Tests/example-dot.svg:42: The attribute 'font-family' does not allow the value 'Times,serif', replaced with 'serif'
|
|
7
|
+
Tests/example-dot.svg:50: The attribute 'stroke' does not allow the value 'red', replaced with 'black'
|
|
8
|
+
Tests/example-dot.svg:55: The attribute 'font-family' does not allow the value 'Times,serif', replaced with 'serif'
|
|
9
|
+
Tests/example-dot.svg:64: The attribute 'font-family' does not allow the value 'Times,serif', replaced with 'serif'
|
|
10
|
+
Tests/example-dot.svg:68: The attribute 'stroke' does not allow the value 'red', replaced with 'black'
|
|
11
|
+
ERROR: File does not conform to SVG requirements
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1
|
|
File without changes
|