Comments (7)
@benbalter good catch. I think was an assumption of how our filters were chained internally. If you create pull request changing the mention filter to work on arbitrary text, I'd be happy to review it.
from html-pipeline.
I believe this is going to affect any filter that uses doc.search('text()'
. FWIW, I ran into it with the EmojiFilter. My work around was to wrap the string with an arbitrary tag e.g., <emoji_filter>#{input}</emoji_filter>
, which forced Nokogiri to treat the string as XML, and then return output.search('emoji_filter').children.as_xml
. Is there a saner way?
from html-pipeline.
@benbalter Thanks for reporting this issue.
Please, can you provide your app's Nokogiri::VERSION
? Maybe Nokogiri::HTML::DocumentFragment
is part of the problem.
from html-pipeline.
@benbalter I understand what you're trying to do now. I think you want to add PlainTextInputFilter to your pipeline. It's a filter that normalizes text input into a html document for filters that expect it. Does that answer your question?
from html-pipeline.
I think you want to add PlainTextInputFilter to your pipeline.
If I'm reading that correctly, that will escape all HTML. I'd want to be able to support any arbitrary string, especially markdown, which may contain HTML, or even more likely, may contain block quotes, for example, which would get HTML entity'd.
can you provide your app's Nokogiri::VERSION
Developing against Nokogiri 1.6.1
from html-pipeline.
Here's the explicit test case, if it helps to articulate a bit better:
[9] pry(main)> s = HTML::Pipeline::MentionFilter.new("test @benbalter test").call.to_xml
=> "test @benbalter test"
[10] pry(main)> s = HTML::Pipeline::MentionFilter.new("<some_tag>test @benbalter test</some_tag>").call.to_xml
=> "<some_tag>test <a href=\"/benbalter\" class=\"user-mention\">@benbalter</a> test</some_tag>"
[11] pry(main)> s = HTML::Pipeline::MentionFilter.new("<some_tag>test @benbalter test</some_tag>").call.search('some_tag').children.to_xml
=> "test <a href=\"/benbalter\" class=\"user-mention\">@benbalter</a> test"
from html-pipeline.
I'd want to be able to support any arbitrary string, especially markdown, which may contain HTML, or even more likely, may contain block quotes, for example, which would get HTML entity's.
This is a good point. For legacy reasons, the filter was written to only handle HTML input. I'm open to changing it, but it would change the existing behavior and require a major release. We'd also need to profile the performance of switching it to just regexes instead of using nokogiri to find text nodes. I don't think that will be too bad, but something to keep in mind.
It's not a high priority for the project right now, but if you'd like to hack on it, we'd appreciate a pull request 😁
from html-pipeline.
Related Issues (20)
- 2.14.0 is disconnected HOT 4
- Allow `loading` attribute on images HOT 5
- Since bump 2.14.2 builds are failing HOT 3
- Allow vertical-align HOT 1
- Indicate a version for activesupport that has support/receives security patches (>= 6?) HOT 2
- v3: Question regarding requiring a ConvertFilter if there are NodeFilters HOT 1
- v3 gemoji, gemojione seem required - is there a way to not require at puma startup? HOT 2
- Suggestion: add more tags to the sanitization filter HOT 3
- So what DOES GitHub use now? HOT 1
- ActionView::Template::Error with version 3.0.0 HOT 8
- Bug in specification of node filters in v3.0.0 HOT 1
- convert_filter only executed when node_filters are present HOT 3
- Can't seem to get a <script> to run when added to the allowlist? HOT 2
- Error when passing instance of `TextFilter` class to `text_filters` option HOT 3
- Context & result of filters except for text_filters aren't overwritten on call time HOT 3
- Sanitizing inline style attributes HOT 2
- Question about original and new SanitizationFilter HOT 2
- Why are node_filters applied twice? HOT 3
- Update to 3.3.4? HOT 2
- v3.2.1 is badly broken, I think because of PR #408 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from html-pipeline.