Module: Pressroom

Defined in:
lib/pressroom.rb,
lib/pressroom/feed.rb,
lib/pressroom/engine.rb,
lib/pressroom/errors.rb,
lib/pressroom/version.rb,
app/models/pressroom/tag.rb,
app/models/pressroom/post.rb,
lib/pressroom/blocks/schema.rb,
lib/pressroom/configuration.rb,
app/models/pressroom/tagging.rb,
app/models/pressroom/category.rb,
lib/pressroom/blocks/registry.rb,
lib/pressroom/blocks/renderer.rb,
lib/pressroom/built_in_blocks.rb,
lib/pressroom/transliteration.rb,
lib/pressroom/blocks/sanitizer.rb,
lib/pressroom/blocks/definition.rb,
app/jobs/pressroom/application_job.rb,
app/helpers/pressroom/blocks_helper.rb,
lib/pressroom/blocks/text_extractor.rb,
app/models/concerns/pressroom/sluggable.rb,
app/models/pressroom/application_record.rb,
app/helpers/pressroom/application_helper.rb,
app/mailers/pressroom/application_mailer.rb,
app/models/concerns/pressroom/authorable.rb,
app/controllers/pressroom/tags_controller.rb,
app/controllers/pressroom/posts_controller.rb,
app/controllers/pressroom/uploads_controller.rb,
app/controllers/pressroom/categories_controller.rb,
app/controllers/pressroom/application_controller.rb

Defined Under Namespace

Modules: ApplicationHelper, Authorable, Blocks, BlocksHelper, BuiltInBlocks, Sluggable, Transliteration Classes: ApplicationController, ApplicationJob, ApplicationMailer, ApplicationRecord, CategoriesController, Category, Configuration, ConfigurationError, Engine, Error, Feed, Post, PostsController, Tag, Tagging, TagsController, UnknownBlockError, UploadsController

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.active_storage?Boolean

ActiveStorage is optional. When it is absent the image block still renders a picture from a URL; there is simply nowhere to upload to.

Returns:

  • (Boolean)


66
67
68
# File 'lib/pressroom.rb', line 66

def active_storage?
  defined?(ActiveStorage::Blob).present?
end

.configObject



19
20
21
# File 'lib/pressroom.rb', line 19

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



23
24
25
26
# File 'lib/pressroom.rb', line 23

def configure
  yield config
  config
end

.register_block(type, &block) ⇒ Object

Public API: registers a block type.

Pressroom.register_block :callout do |b|
b.tool "Callout"
b.schema { string :title, required: true }
b.partial "pressroom/blocks/callout"
end


44
45
46
# File 'lib/pressroom.rb', line 44

def register_block(type, &block)
  registry.register(type, &block)
end

.registryObject



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

def registry
  @registry ||= Blocks::Registry.new
end

.rendererObject

Built per call rather than memoized: configuration may change at runtime in tests, and construction is cheap.



50
51
52
53
54
55
56
57
58
# File 'lib/pressroom.rb', line 50

def renderer
  Blocks::Renderer.new(
    registry: registry,
    sanitizer: Blocks::Sanitizer.new(tags: config.sanitizer_tags,
                                     attributes: config.sanitizer_attributes),
    strategy: config.resolved_unknown_block_strategy,
    logger: defined?(Rails) ? Rails.logger : nil
  )
end

.reset_configuration!Object

Test helper: restores pristine defaults between examples.



29
30
31
# File 'lib/pressroom.rb', line 29

def reset_configuration!
  @config = Configuration.new
end

.text_extractorObject



60
61
62
# File 'lib/pressroom.rb', line 60

def text_extractor
  Blocks::TextExtractor.new(registry: registry)
end