Class: Prdigest::ProseRenderer
- Inherits:
-
Object
- Object
- Prdigest::ProseRenderer
- Defined in:
- lib/prdigest/prose_renderer.rb
Constant Summary collapse
- DISALLOWED_CONTROL_CHARACTERS =
/[\u0000-\u0008\u000B-\u001F\u007F-\u009F]/
Instance Method Summary collapse
-
#initialize(limit: 4_096) ⇒ ProseRenderer
constructor
A new instance of ProseRenderer.
- #render(value) ⇒ Object
Constructor Details
#initialize(limit: 4_096) ⇒ ProseRenderer
Returns a new instance of ProseRenderer.
9 10 11 12 |
# File 'lib/prdigest/prose_renderer.rb', line 9 def initialize(limit: 4_096) @limit = Integer(limit) raise ArgumentError, "limit must be positive" unless @limit.positive? end |
Instance Method Details
#render(value) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/prdigest/prose_renderer.rb', line 14 def render(value) text = value.to_s if text.match?(/\A[[:space:]]*\z/) raise RenderError.new("prose provider output is blank", kind: "prose_render") end if text.match?(DISALLOWED_CONTROL_CHARACTERS) raise RenderError.new( "prose provider output contains disallowed control characters", kind: "prose_render" ) end chunks = text.each_char.each_slice(@limit).map do |characters| CGI.escapeHTML(characters.join).freeze end Renderer::Output.new(chunks.freeze, "rendered") rescue RenderError raise rescue StandardError => e raise RenderError.new("prose rendering failed: #{e.class}", kind: "prose_render") end |