1

Rails 7 renders accurate plain text output for nested fields

 2 years ago
source link: https://blog.saeloun.com/2022/01/19/rails-7-renders-accurate-plain-text-update-for-nested-fields
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ActionText is a power-packed tool to easily build WYSIWYG editors for your Rails applications. It comes with an array of editor options and transformers. One of them is the Plain Text transformer which converts HTML input to plain text output.

Before

As with any editors, some wonkiness is expected! When using to_plain_text on an ActionText content containing nested lists, the output does not meet expectations. For example, when using indentations to indicate nested list levels, converting to plain text does not preserve the indentation.

ActionText::Content.new("<ul><li>Item 1<ul><li>Item a</li></ul></li></ul>").to_plain_text

=> "• Item 1• Item a"

However, the expected output is close to:

• Item 1
  • Item a

After

With recent changes in Rails 7 ActionText, it adds a two-space indentation per nested level for ul and ol when using to_plain_text on action text content!

ActionText::Content.new("<ul><li>Item 0</li><li>Item 1<ul><li>Item A<ol><li>Item i</li><li>Item ii</li></ol></li><li>Item B<ul><li>Item i</li></ul></li></ul></li><li>Item 2</li></ul>").to_plain_text

=> "• Item 0\n• Item 1\n  • Item A\n    1. Item i\n    2. Item ii\n  • Item B\n    • Item i\n• Item 2"

Which looks like,

• Item 0
• Item 1
  • Item A
    1. Item i
    2. Item ii
  • Item B
    • Item i
• Item 2

To know more about the fix checkout this PR.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK