Module: TypstRails

Defined in:
lib/typst_rails.rb,
lib/typst_rails/handler.rb,
lib/typst_rails/helpers.rb,
lib/typst_rails/railtie.rb,
lib/typst_rails/version.rb,
lib/typst_rails/backends.rb,
lib/typst_rails/renderer.rb,
lib/typst_rails/backends/cli.rb,
lib/typst_rails/backends/gem.rb,
lib/typst_rails/backends/base.rb,
lib/typst_rails/rage_integration.rb,
lib/typst_rails/backends/registry.rb,
lib/typst_rails/framework_detection.rb,
lib/typst_rails/sinatra_integration.rb

Overview

Rails integration module for Typst document generation

This module provides seamless integration of the Typst typesetting system with Ruby web applications. It supports Rails, Rage, Sinatra, and standalone Ruby usage through automatic framework detection.

Examples:

Basic configuration

TypstRails.configure do |config|
  config.typst_executable_path = "/usr/local/bin/typst"
  config.default_root_path = Rails.root.join("app", "assets", "typst")
end

Standalone usage

renderer = TypstRails::Renderer.new("#let data = json(\"typst_data.json\")\n= #data.title")
pdf = renderer.render(nil, { title: "My Document" })
File.binwrite("output.pdf", pdf)

Defined Under Namespace

Modules: Backends, FrameworkDetection, Helpers, RageIntegration, SinatraIntegration Classes: Configuration, Error, Handler, Railtie, Renderer

Constant Summary collapse

VERSION =
"0.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationConfiguration

Returns The current configuration instance.

Returns:



40
41
42
# File 'lib/typst_rails.rb', line 40

def configuration
  @configuration
end

Class Method Details

.configure {|configuration| ... } ⇒ Configuration

Configures the Typst integration.

This method creates a new Configuration with default values and yields it for modification. Each call replaces any previous configuration.

Examples:

Configure Typst executable path

TypstRails.configure do |config|
  config.typst_executable_path = "/opt/typst/bin/typst"
end

Configure default root path

TypstRails.configure do |config|
  config.default_root_path = Rails.root.join("app", "typst")
end

Force a specific compilation backend

TypstRails.configure do |config|
  config.backend = :gem # or :cli
end

Yields:

  • (configuration)

    Yields the configuration object for modification

Yield Parameters:

  • configuration (Configuration)

    The configuration instance to modify

Returns:

Raises:

  • (ArgumentError)

    if no block is given



67
68
69
70
71
72
73
74
# File 'lib/typst_rails.rb', line 67

def self.configure
  raise ArgumentError, "Block required for configuration" unless block_given?

  self.configuration = Configuration.new
  yield(configuration)
  configuration.validate!
  configuration
end