Module: Canon

Defined in:
lib/canon.rb,
lib/canon/cli.rb,
lib/canon/html.rb,
lib/canon/cache.rb,
lib/canon/config.rb,
lib/canon/errors.rb,
lib/canon/version.rb,
lib/canon/xml/c14n.rb,
lib/canon/xml/node.rb,
lib/canon/tree_diff.rb,
lib/canon/comparison.rb,
lib/canon/data_model.rb,
lib/canon/xml/processor.rb,
lib/canon/color_detector.rb,
lib/canon/diff/diff_line.rb,
lib/canon/diff/diff_node.rb,
lib/canon/diff_formatter.rb,
lib/canon/rspec_matchers.rb,
lib/canon/xml/data_model.rb,
lib/canon/diff/diff_block.rb,
lib/canon/html/data_model.rb,
lib/canon/xml/sax_builder.rb,
lib/canon/diff/diff_report.rb,
lib/canon/options/registry.rb,
lib/canon/config/env_schema.rb,
lib/canon/diff/diff_context.rb,
lib/canon/diff/path_builder.rb,
lib/canon/pretty_printer/xml.rb,
lib/canon/config/env_provider.rb,
lib/canon/diff/source_locator.rb,
lib/canon/pretty_printer/html.rb,
lib/canon/pretty_printer/json.rb,
lib/canon/xml/element_matcher.rb,
lib/canon/xml/nodes/root_node.rb,
lib/canon/xml/nodes/text_node.rb,
lib/canon/diff/diff_char_range.rb,
lib/canon/diff/diff_classifier.rb,
lib/canon/diff/node_serializer.rb,
lib/canon/diff/text_decomposer.rb,
lib/canon/diff_formatter/theme.rb,
lib/canon/xml/namespace_helper.rb,
lib/canon/xml/xml_base_handler.rb,
lib/canon/commands/diff_command.rb,
lib/canon/comparison/dimensions.rb,
lib/canon/comparison/xml_parser.rb,
lib/canon/config/profile_loader.rb,
lib/canon/config/type_converter.rb,
lib/canon/diff/diff_node_mapper.rb,
lib/canon/diff_formatter/legend.rb,
lib/canon/options/cli_generator.rb,
lib/canon/xml/attribute_handler.rb,
lib/canon/xml/character_encoder.rb,
lib/canon/xml/line_range_mapper.rb,
lib/canon/xml/namespace_handler.rb,
lib/canon/comparison/html_parser.rb,
lib/canon/comparison/json_parser.rb,
lib/canon/diff/diff_line_builder.rb,
lib/canon/xml/nodes/comment_node.rb,
lib/canon/xml/nodes/element_node.rb,
lib/canon/commands/format_command.rb,
lib/canon/diff/diff_block_builder.rb,
lib/canon/diff/diff_node_enricher.rb,
lib/canon/tree_diff/core/matching.rb,
lib/canon/comparison/match_options.rb,
lib/canon/config/override_resolver.rb,
lib/canon/diff/diff_report_builder.rb,
lib/canon/diff/formatting_detector.rb,
lib/canon/formatters/xml_formatter.rb,
lib/canon/tree_diff/core/tree_node.rb,
lib/canon/validators/xml_validator.rb,
lib/canon/xml/nodes/attribute_node.rb,
lib/canon/xml/nodes/namespace_node.rb,
lib/canon/comparison/xml_comparator.rb,
lib/canon/diff/diff_context_builder.rb,
lib/canon/formatters/html_formatter.rb,
lib/canon/formatters/json_formatter.rb,
lib/canon/formatters/yaml_formatter.rb,
lib/canon/validators/base_validator.rb,
lib/canon/validators/html_validator.rb,
lib/canon/validators/json_validator.rb,
lib/canon/validators/yaml_validator.rb,
lib/canon/xml/whitespace_normalizer.rb,
lib/canon/comparison/base_comparator.rb,
lib/canon/comparison/compare_profile.rb,
lib/canon/comparison/format_detector.rb,
lib/canon/comparison/html_comparator.rb,
lib/canon/comparison/json_comparator.rb,
lib/canon/comparison/yaml_comparator.rb,
lib/canon/formatters/html4_formatter.rb,
lib/canon/formatters/html5_formatter.rb,
lib/canon/tree_diff/core/node_weight.rb,
lib/canon/diff_formatter/debug_output.rb,
lib/canon/comparison/comparison_result.rb,
lib/canon/comparison/markup_comparator.rb,
lib/canon/comparison/profile_definition.rb,
lib/canon/pretty_printer/xml_normalized.rb,
lib/canon/tree_diff/core/node_signature.rb,
lib/canon/tree_diff/operation_converter.rb,
lib/canon/comparison/dimensions/registry.rb,
lib/canon/comparison/xml_node_comparison.rb,
lib/canon/formatters/html_formatter_base.rb,
lib/canon/tree_diff/adapters/xml_adapter.rb,
lib/canon/tree_diff/operations/operation.rb,
lib/canon/tree_diff/tree_diff_integrator.rb,
lib/canon/comparison/html_compare_profile.rb,
lib/canon/tree_diff/adapters/html_adapter.rb,
lib/canon/tree_diff/adapters/json_adapter.rb,
lib/canon/tree_diff/adapters/yaml_adapter.rb,
lib/canon/tree_diff/matchers/hash_matcher.rb,
lib/canon/diff/xml_serialization_formatter.rb,
lib/canon/comparison/ruby_object_comparator.rb,
lib/canon/comparison/whitespace_sensitivity.rb,
lib/canon/tree_diff/core/xml_entity_decoder.rb,
lib/canon/tree_diff/core/attribute_comparator.rb,
lib/canon/comparison/dimensions/base_dimension.rb,
lib/canon/diff_formatter/by_line/xml_formatter.rb,
lib/canon/diff_formatter/diff_detail_formatter.rb,
lib/canon/tree_diff/matchers/universal_matcher.rb,
lib/canon/comparison/match_options/xml_resolver.rb,
lib/canon/comparison/xml_comparator/node_parser.rb,
lib/canon/diff_formatter/by_line/base_formatter.rb,
lib/canon/diff_formatter/by_line/html_formatter.rb,
lib/canon/diff_formatter/by_line/json_formatter.rb,
lib/canon/diff_formatter/by_line/yaml_formatter.rb,
lib/canon/tree_diff/matchers/similarity_matcher.rb,
lib/canon/xml/nodes/processing_instruction_node.rb,
lib/canon/comparison/match_options/base_resolver.rb,
lib/canon/comparison/match_options/json_resolver.rb,
lib/canon/comparison/match_options/yaml_resolver.rb,
lib/canon/diff_formatter/by_object/xml_formatter.rb,
lib/canon/diff_formatter/by_line/simple_formatter.rb,
lib/canon/diff_formatter/by_object/base_formatter.rb,
lib/canon/diff_formatter/by_object/json_formatter.rb,
lib/canon/diff_formatter/by_object/yaml_formatter.rb,
lib/canon/tree_diff/operations/operation_detector.rb,
lib/canon/comparison/dimensions/comments_dimension.rb,
lib/canon/tree_diff/matchers/structural_propagator.rb,
lib/canon/comparison/strategies/base_match_strategy.rb,
lib/canon/comparison/xml_comparator/attribute_filter.rb,
lib/canon/comparison/xml_comparator/child_comparison.rb,
lib/canon/comparison/xml_comparator/diff_node_builder.rb,
lib/canon/comparison/dimensions/text_content_dimension.rb,
lib/canon/comparison/strategies/match_strategy_factory.rb,
lib/canon/comparison/xml_comparator/attribute_comparator.rb,
lib/canon/comparison/xml_comparator/namespace_comparator.rb,
lib/canon/comparison/xml_comparator/node_type_comparator.rb,
lib/canon/comparison/dimensions/attribute_order_dimension.rb,
lib/canon/diff_formatter/diff_detail_formatter/node_utils.rb,
lib/canon/diff_formatter/diff_detail_formatter/text_utils.rb,
lib/canon/comparison/dimensions/attribute_values_dimension.rb,
lib/canon/comparison/dimensions/element_position_dimension.rb,
lib/canon/diff_formatter/diff_detail_formatter/color_helper.rb,
lib/canon/comparison/dimensions/attribute_presence_dimension.rb,
lib/canon/comparison/strategies/semantic_tree_match_strategy.rb,
lib/canon/tree_diff/operation_converter_helpers/post_processor.rb,
lib/canon/tree_diff/operation_converter_helpers/reason_builder.rb,
lib/canon/comparison/dimensions/structural_whitespace_dimension.rb,
lib/canon/diff_formatter/diff_detail_formatter/location_extractor.rb,
lib/canon/tree_diff/operation_converter_helpers/metadata_enricher.rb,
lib/canon/diff_formatter/diff_detail_formatter/dimension_formatter.rb,
lib/canon/tree_diff/operation_converter_helpers/update_change_handler.rb

Defined Under Namespace

Modules: Cache, Commands, Comparison, Diff, Formatters, Html, Options, PrettyPrinter, RSpecMatchers, TreeDiff, Validators, Xml Classes: Cli, ColorDetector, CompareFormatMismatchError, Config, DataModel, DiffFormatter, Error, SizeLimitExceededError, ValidationError

Constant Summary collapse

SUPPORTED_FORMATS =
%i[xml yaml json html html4 html5 string].freeze
VERSION =
"0.2.1"

Class Method Summary collapse

Class Method Details

.format(content, format = :xml) ⇒ String

Format content based on the specified format type

Parameters:

  • content (String)

    The content to format

  • format (Symbol) (defaults to: :xml)

    The format type (:xml, :yaml, :json)

Returns:

  • (String)

    The formatted content



25
26
27
# File 'lib/canon.rb', line 25

def self.format(content, format = :xml)
  get_formatter(format).format(content)
end

.get_formatter(format) ⇒ Object

rubocop:disable Metrics/MethodLength



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/canon.rb', line 38

def self.get_formatter(format)
  case format.to_sym
  when :xml
    Formatters::XmlFormatter
  when :yaml
    Formatters::YamlFormatter
  when :json
    Formatters::JsonFormatter
  when :html
    Formatters::HtmlFormatter
  when :html4
    Formatters::Html4Formatter
  when :html5
    Formatters::Html5Formatter
  else
    raise Error, "Unsupported format: #{format}"
  end
end

.parse(content, format = :xml) ⇒ Object

Parse content based on the specified format type

Parameters:

  • content (String)

    The content to parse

  • format (Symbol) (defaults to: :xml)

    The format type (:xml, :yaml, :json)

Returns:

  • (Object)

    The parsed content



33
34
35
# File 'lib/canon.rb', line 33

def self.parse(content, format = :xml)
  get_formatter(format).parse(content)
end