Module: ActiveMail

Extended by:
T::Sig
Defined in:
lib/activemail/libxml.rb,
lib/activemail.rb,
lib/activemail/tokens.rb,
lib/activemail/quality.rb,
lib/activemail/version.rb,
lib/activemail/inliner/base.rb,
lib/activemail/inliner/null.rb,
lib/activemail/rails/engine.rb,
lib/activemail/configuration.rb,
lib/activemail/quality/guard.rb,
lib/activemail/quality/rspec.rb,
lib/activemail/components/cta.rb,
lib/activemail/components/row.rb,
lib/activemail/inliner/roadie.rb,
lib/activemail/components/base.rb,
lib/activemail/components/inky.rb,
lib/activemail/components/menu.rb,
lib/activemail/quality/minitest.rb,
lib/activemail/components/button.rb,
lib/activemail/components/center.rb,
lib/activemail/components/h_line.rb,
lib/activemail/components/spacer.rb,
lib/activemail/inliner/premailer.rb,
lib/activemail/components/callout.rb,
lib/activemail/components/columns.rb,
lib/activemail/components/wrapper.rb,
lib/activemail/quality/render_all.rb,
lib/activemail/components/info_box.rb,
lib/activemail/inliner/interceptor.rb,
lib/activemail/tokens/button_style.rb,
lib/activemail/components/container.rb,
lib/activemail/components/menu_item.rb,
lib/activemail/parse_error_reporter.rb,
lib/activemail/components/block_grid.rb,
lib/activemail/quality/configuration.rb,
app/helpers/active_mail/styles_helper.rb,
lib/activemail/rails/template_handler.rb,
lib/activemail/tokens/scss_serializer.rb,
lib/activemail/quality/preview_renderer.rb,
lib/activemail/rails/compiled_stylesheet.rb,
lib/generators/activemail/views_generator.rb,
lib/generators/activemail/styles_generator.rb,
lib/generators/activemail/install_generator.rb,
lib/generators/activemail/component_generator.rb

Overview

typed: false frozen_string_literal: true

Defined Under Namespace

Modules: CompiledStylesheet, Components, Generators, Inliner, Quality, Rails, StylesHelper Classes: Configuration, Core, ParseError, ParseErrorReporter, Tokens

Constant Summary collapse

LIBXML_UNKNOWN_TAG_CODE =

libxml2 XML_HTML_UNKNOWN_TAG: emitted for every non-HTML4 tag (HTML5/custom tags), not actual malformedness. Shared by the engine and the quality layer.

801
VERSION =
'1.1.0'
ComponentMap =
T.type_alias { T::Hash[String, T.class_of(ActiveMail::Components::Base)] }

Class Method Summary collapse

Class Method Details

.assert_positive_dimension!(name, value) ⇒ Object

Raises:

  • (ArgumentError)


83
84
85
86
87
# File 'lib/activemail/configuration.rb', line 83

def self.assert_positive_dimension!(name, value)
  raise ArgumentError, "#{name} must be a positive integer, got #{value.inspect}" unless value.is_a?(Integer) && value.positive?

  value
end

.configurationObject



18
19
20
# File 'lib/activemail/configuration.rb', line 18

def self.configuration
  @configuration ||= T.let(Configuration.new, T.nilable(ActiveMail::Configuration))
end

.configuration=(config) ⇒ Object

Raises:

  • (TypeError)


28
29
30
31
32
# File 'lib/activemail/configuration.rb', line 28

def self.configuration=(config)
  raise TypeError, 'Not an ActiveMail::Configuration' unless config.is_a?(Configuration)

  @configuration = config
end

.configure(&block) ⇒ Object



35
36
37
# File 'lib/activemail/configuration.rb', line 35

def self.configure(&block)
  block.call(configuration)
end

.full_document?(html) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/activemail/configuration.rb', line 41

def self.full_document?(html)
  html.match?(/<html/i)
end

.log_warning(message) ⇒ Object



55
56
57
58
# File 'lib/activemail/configuration.rb', line 55

def self.log_warning(message)
  logger = rails_logger
  logger ? logger.warn(message) : Kernel.warn(message)
end

.rails_loggerObject



61
62
63
64
65
66
# File 'lib/activemail/configuration.rb', line 61

def self.rails_logger
  return unless Object.const_defined?(:Rails)

  rails = Object.const_get(:Rails)
  rails.respond_to?(:logger) ? rails.logger : nil
end

.scrub_invalid_bytes(html_string) ⇒ Object

Raises:



71
72
73
74
75
76
77
78
# File 'lib/activemail/configuration.rb', line 71

def self.scrub_invalid_bytes(html_string)
  mode = configuration.on_parse_error
  message = '[activemail] input had invalid byte sequences; scrubbed to U+FFFD'
  raise ParseError, message if mode == :raise

  log_warning(message) unless mode == :ignore
  html_string.scrub
end

.scss_variablesObject



48
49
50
# File 'lib/activemail/configuration.rb', line 48

def self.scss_variables
  "#{tokens.to_scss}$am-grid-container-width: #{configuration.container_width}px !default;\n"
end

.tokensObject



23
24
25
# File 'lib/activemail/configuration.rb', line 23

def self.tokens
  configuration.tokens
end