packwerk-haml 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +75 -0
  4. data/Gemfile +22 -0
  5. data/Gemfile.lock +190 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +32 -0
  8. data/Rakefile +16 -0
  9. data/lib/packwerk_haml/parser.rb +64 -0
  10. data/lib/packwerk_haml/version.rb +6 -0
  11. data/lib/packwerk_haml.rb +8 -0
  12. data/packwerk-haml.gemspec +40 -0
  13. data/sig/packwerk/haml.rbs +4 -0
  14. data/sorbet/config +4 -0
  15. data/sorbet/rbi/annotations/.gitattributes +1 -0
  16. data/sorbet/rbi/annotations/actionview.rbi +75 -0
  17. data/sorbet/rbi/annotations/activesupport.rbi +136 -0
  18. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  19. data/sorbet/rbi/gems/.gitattributes +1 -0
  20. data/sorbet/rbi/gems/actionview@7.1.1.rbi +15004 -0
  21. data/sorbet/rbi/gems/activesupport@7.1.1.rbi +18784 -0
  22. data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
  23. data/sorbet/rbi/gems/base64@0.1.1.rbi +172 -0
  24. data/sorbet/rbi/gems/better_html@2.0.2.rbi +529 -0
  25. data/sorbet/rbi/gems/bigdecimal@3.1.4.rbi +77 -0
  26. data/sorbet/rbi/gems/builder@3.2.4.rbi +8 -0
  27. data/sorbet/rbi/gems/concurrent-ruby@1.2.2.rbi +11545 -0
  28. data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +8 -0
  29. data/sorbet/rbi/gems/constant_resolver@0.2.0.rbi +90 -0
  30. data/sorbet/rbi/gems/crass@1.0.6.rbi +622 -0
  31. data/sorbet/rbi/gems/drb@2.1.1.rbi +1313 -0
  32. data/sorbet/rbi/gems/erubi@1.12.0.rbi +145 -0
  33. data/sorbet/rbi/gems/haml@6.2.3.rbi +1619 -0
  34. data/sorbet/rbi/gems/i18n@1.14.1.rbi +2325 -0
  35. data/sorbet/rbi/gems/json@2.6.3.rbi +1533 -0
  36. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14237 -0
  37. data/sorbet/rbi/gems/loofah@2.21.4.rbi +1021 -0
  38. data/sorbet/rbi/gems/m@1.6.2.rbi +257 -0
  39. data/sorbet/rbi/gems/method_source@1.0.0.rbi +8 -0
  40. data/sorbet/rbi/gems/minitest-focus@1.4.0.rbi +91 -0
  41. data/sorbet/rbi/gems/minitest@5.20.0.rbi +1509 -0
  42. data/sorbet/rbi/gems/mutex_m@0.1.2.rbi +91 -0
  43. data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  44. data/sorbet/rbi/gems/nokogiri@1.15.4.rbi +7317 -0
  45. data/sorbet/rbi/gems/packwerk@3.1.0-752d37add96b9f4bf28492d7db152f6523b1d29c.rbi +2370 -0
  46. data/sorbet/rbi/gems/parallel@1.23.0.rbi +273 -0
  47. data/sorbet/rbi/gems/parser@3.2.2.4.rbi +7253 -0
  48. data/sorbet/rbi/gems/prettier_print@1.2.1.rbi +951 -0
  49. data/sorbet/rbi/gems/racc@1.7.1.rbi +161 -0
  50. data/sorbet/rbi/gems/rails-dom-testing@2.2.0.rbi +8 -0
  51. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.0.rbi +716 -0
  52. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +402 -0
  53. data/sorbet/rbi/gems/rake@13.0.6.rbi +3042 -0
  54. data/sorbet/rbi/gems/rbi@0.1.1.rbi +2926 -0
  55. data/sorbet/rbi/gems/regexp_parser@2.8.2.rbi +3749 -0
  56. data/sorbet/rbi/gems/rexml@3.2.6.rbi +4781 -0
  57. data/sorbet/rbi/gems/rubocop-ast@1.29.0.rbi +7075 -0
  58. data/sorbet/rbi/gems/rubocop-performance@1.19.1.rbi +3208 -0
  59. data/sorbet/rbi/gems/rubocop-shopify@2.14.0.rbi +8 -0
  60. data/sorbet/rbi/gems/rubocop-sorbet@0.7.4.rbi +1442 -0
  61. data/sorbet/rbi/gems/rubocop@1.57.0.rbi +56753 -0
  62. data/sorbet/rbi/gems/ruby-lsp@0.2.4.rbi +11 -0
  63. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1317 -0
  64. data/sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi +8 -0
  65. data/sorbet/rbi/gems/smart_properties@1.17.0.rbi +474 -0
  66. data/sorbet/rbi/gems/spoom@1.2.4.rbi +3777 -0
  67. data/sorbet/rbi/gems/syntax_tree@6.2.0.rbi +23136 -0
  68. data/sorbet/rbi/gems/tapioca@0.11.9.rbi +3498 -0
  69. data/sorbet/rbi/gems/temple@0.10.3.rbi +1738 -0
  70. data/sorbet/rbi/gems/thor@1.2.2.rbi +3965 -0
  71. data/sorbet/rbi/gems/tilt@2.3.0.rbi +925 -0
  72. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5917 -0
  73. data/sorbet/rbi/gems/unicode-display_width@2.5.0.rbi +65 -0
  74. data/sorbet/rbi/gems/yard-sorbet@0.8.1.rbi +428 -0
  75. data/sorbet/rbi/gems/yard@0.9.34.rbi +18219 -0
  76. data/sorbet/rbi/gems/yarp@0.13.0.rbi +21646 -0
  77. data/sorbet/rbi/gems/zeitwerk@2.6.12.rbi +997 -0
  78. data/sorbet/tapioca/config.yml +13 -0
  79. data/sorbet/tapioca/require.rb +5 -0
  80. metadata +167 -0
@@ -0,0 +1,716 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `rails-html-sanitizer` gem.
5
+ # Please instead update this file by running `bin/tapioca gem rails-html-sanitizer`.
6
+
7
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#14
8
+ module ActionView
9
+ class << self
10
+ # source://actionview/7.1.1/lib/action_view/deprecator.rb#4
11
+ def deprecator; end
12
+
13
+ # source://actionview/7.1.1/lib/action_view.rb#93
14
+ def eager_load!; end
15
+
16
+ # source://actionview/7.1.1/lib/action_view/gem_version.rb#5
17
+ def gem_version; end
18
+
19
+ # source://actionview/7.1.1/lib/action_view/version.rb#7
20
+ def version; end
21
+ end
22
+ end
23
+
24
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#15
25
+ module ActionView::Helpers
26
+ include ::ActionView::Helpers::SanitizeHelper
27
+ include ::ActionView::Helpers::TextHelper
28
+ include ::ActionView::Helpers::UrlHelper
29
+ include ::ActionView::Helpers::SanitizeHelper
30
+ include ::ActionView::Helpers::TextHelper
31
+ include ::ActionView::Helpers::FormTagHelper
32
+ include ::ActionView::Helpers::FormHelper
33
+ include ::ActionView::Helpers::TranslationHelper
34
+
35
+ mixes_in_class_methods ::ActionView::Helpers::UrlHelper::ClassMethods
36
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
37
+
38
+ class << self
39
+ # source://actionview/7.1.1/lib/action_view/helpers.rb#35
40
+ def eager_load!; end
41
+ end
42
+ end
43
+
44
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#16
45
+ module ActionView::Helpers::SanitizeHelper
46
+ mixes_in_class_methods ::ActionView::Helpers::SanitizeHelper::ClassMethods
47
+
48
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#100
49
+ def sanitize(html, options = T.unsafe(nil)); end
50
+
51
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#105
52
+ def sanitize_css(style); end
53
+
54
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#12
55
+ def sanitizer_vendor; end
56
+
57
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#12
58
+ def sanitizer_vendor=(val); end
59
+
60
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#139
61
+ def strip_links(html); end
62
+
63
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#122
64
+ def strip_tags(html); end
65
+
66
+ class << self
67
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#12
68
+ def sanitizer_vendor; end
69
+
70
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#12
71
+ def sanitizer_vendor=(val); end
72
+ end
73
+ end
74
+
75
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#17
76
+ module ActionView::Helpers::SanitizeHelper::ClassMethods
77
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#164
78
+ def full_sanitizer; end
79
+
80
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#144
81
+ def full_sanitizer=(_arg0); end
82
+
83
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#174
84
+ def link_sanitizer; end
85
+
86
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#144
87
+ def link_sanitizer=(_arg0); end
88
+
89
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#184
90
+ def safe_list_sanitizer; end
91
+
92
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#144
93
+ def safe_list_sanitizer=(_arg0); end
94
+
95
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#154
96
+ def sanitized_allowed_attributes; end
97
+
98
+ # Replaces the allowed HTML attributes for the +sanitize+ helper.
99
+ #
100
+ # class Application < Rails::Application
101
+ # config.action_view.sanitized_allowed_attributes = ['onclick', 'longdesc']
102
+ # end
103
+ #
104
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#34
105
+ def sanitized_allowed_attributes=(attributes); end
106
+
107
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
108
+ def sanitized_allowed_css_keywords; end
109
+
110
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
111
+ def sanitized_allowed_css_keywords=(_); end
112
+
113
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
114
+ def sanitized_allowed_css_properties; end
115
+
116
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
117
+ def sanitized_allowed_css_properties=(_); end
118
+
119
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
120
+ def sanitized_allowed_protocols; end
121
+
122
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
123
+ def sanitized_allowed_protocols=(_); end
124
+
125
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#150
126
+ def sanitized_allowed_tags; end
127
+
128
+ # Replaces the allowed tags for the +sanitize+ helper.
129
+ #
130
+ # class Application < Rails::Application
131
+ # config.action_view.sanitized_allowed_tags = 'table', 'tr', 'td'
132
+ # end
133
+ #
134
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#24
135
+ def sanitized_allowed_tags=(tags); end
136
+
137
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
138
+ def sanitized_bad_tags; end
139
+
140
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
141
+ def sanitized_bad_tags=(_); end
142
+
143
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
144
+ def sanitized_protocol_separator; end
145
+
146
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
147
+ def sanitized_protocol_separator=(_); end
148
+
149
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
150
+ def sanitized_shorthand_css_properties; end
151
+
152
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
153
+ def sanitized_shorthand_css_properties=(_); end
154
+
155
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#47
156
+ def sanitized_uri_attributes; end
157
+
158
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#48
159
+ def sanitized_uri_attributes=(_); end
160
+
161
+ # source://actionview/7.1.1/lib/action_view/helpers/sanitize_helper.rb#146
162
+ def sanitizer_vendor; end
163
+
164
+ private
165
+
166
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#52
167
+ def deprecate_option(name); end
168
+ end
169
+
170
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer/version.rb#3
171
+ module Rails; end
172
+
173
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer/version.rb#4
174
+ module Rails::HTML; end
175
+
176
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#193
177
+ module Rails::HTML4; end
178
+
179
+ # == Rails::HTML4::FullSanitizer
180
+ #
181
+ # Removes all tags from HTML4 but strips out scripts, forms and comments.
182
+ #
183
+ # full_sanitizer = Rails::HTML4::FullSanitizer.new
184
+ # full_sanitizer.sanitize("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
185
+ # # => "Bold no more! See more here..."
186
+ #
187
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#224
188
+ class Rails::HTML4::FullSanitizer < ::Rails::HTML::Sanitizer
189
+ include ::Rails::HTML::Concern::ComposedSanitize
190
+ include ::Rails::HTML::Concern::Parser::HTML4
191
+ include ::Rails::HTML::Concern::Scrubber::Full
192
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
193
+ end
194
+
195
+ # == Rails::HTML4::LinkSanitizer
196
+ #
197
+ # Removes +a+ tags and +href+ attributes from HTML4 leaving only the link text.
198
+ #
199
+ # link_sanitizer = Rails::HTML4::LinkSanitizer.new
200
+ # link_sanitizer.sanitize('<a href="example.com">Only the link text will be kept.</a>')
201
+ # # => "Only the link text will be kept."
202
+ #
203
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#239
204
+ class Rails::HTML4::LinkSanitizer < ::Rails::HTML::Sanitizer
205
+ include ::Rails::HTML::Concern::ComposedSanitize
206
+ include ::Rails::HTML::Concern::Parser::HTML4
207
+ include ::Rails::HTML::Concern::Scrubber::Link
208
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
209
+ end
210
+
211
+ # == Rails::HTML4::SafeListSanitizer
212
+ #
213
+ # Sanitizes HTML4 and CSS from an extensive safe list.
214
+ #
215
+ # === Whitespace
216
+ #
217
+ # We can't make any guarantees about whitespace being kept or stripped. Loofah uses Nokogiri,
218
+ # which wraps either a C or Java parser for the respective Ruby implementation. Those two
219
+ # parsers determine how whitespace is ultimately handled.
220
+ #
221
+ # When the stripped markup will be rendered the users browser won't take whitespace into account
222
+ # anyway. It might be better to suggest your users wrap their whitespace sensitive content in
223
+ # pre tags or that you do so automatically.
224
+ #
225
+ # === Options
226
+ #
227
+ # Sanitizes both html and css via the safe lists found in
228
+ # Rails::HTML::Concern::Scrubber::SafeList
229
+ #
230
+ # SafeListSanitizer also accepts options to configure the safe list used when sanitizing html.
231
+ # There's a class level option:
232
+ #
233
+ # Rails::HTML4::SafeListSanitizer.allowed_tags = %w(table tr td)
234
+ # Rails::HTML4::SafeListSanitizer.allowed_attributes = %w(id class style)
235
+ #
236
+ # Tags and attributes can also be passed to +sanitize+. Passed options take precedence over the
237
+ # class level options.
238
+ #
239
+ # === Examples
240
+ #
241
+ # safe_list_sanitizer = Rails::HTML4::SafeListSanitizer.new
242
+ #
243
+ # # default: sanitize via a extensive safe list of allowed elements
244
+ # safe_list_sanitizer.sanitize(@article.body)
245
+ #
246
+ # # sanitize via the supplied tags and attributes
247
+ # safe_list_sanitizer.sanitize(
248
+ # @article.body,
249
+ # tags: %w(table tr td),
250
+ # attributes: %w(id class style),
251
+ # )
252
+ #
253
+ # # sanitize via a custom Loofah scrubber
254
+ # safe_list_sanitizer.sanitize(@article.body, scrubber: ArticleScrubber.new)
255
+ #
256
+ # # prune nodes from the tree instead of stripping tags and leaving inner content
257
+ # safe_list_sanitizer = Rails::HTML4::SafeListSanitizer.new(prune: true)
258
+ #
259
+ # # the sanitizer can also sanitize CSS
260
+ # safe_list_sanitizer.sanitize_css('background-color: #000;')
261
+ #
262
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#297
263
+ class Rails::HTML4::SafeListSanitizer < ::Rails::HTML::Sanitizer
264
+ include ::Rails::HTML::Concern::ComposedSanitize
265
+ include ::Rails::HTML::Concern::Parser::HTML4
266
+ include ::Rails::HTML::Concern::Scrubber::SafeList
267
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
268
+
269
+ class << self
270
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#144
271
+ def allowed_attributes; end
272
+
273
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#144
274
+ def allowed_attributes=(_arg0); end
275
+
276
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#143
277
+ def allowed_tags; end
278
+
279
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#143
280
+ def allowed_tags=(_arg0); end
281
+ end
282
+ end
283
+
284
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#194
285
+ module Rails::HTML4::Sanitizer
286
+ extend ::Rails::HTML4::Sanitizer::VendorMethods
287
+ end
288
+
289
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#195
290
+ module Rails::HTML4::Sanitizer::VendorMethods
291
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#196
292
+ def full_sanitizer; end
293
+
294
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#200
295
+ def link_sanitizer; end
296
+
297
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#204
298
+ def safe_list_sanitizer; end
299
+
300
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#208
301
+ def white_list_sanitizer; end
302
+ end
303
+
304
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#305
305
+ module Rails::HTML5; end
306
+
307
+ # == Rails::HTML5::FullSanitizer
308
+ #
309
+ # Removes all tags from HTML5 but strips out scripts, forms and comments.
310
+ #
311
+ # full_sanitizer = Rails::HTML5::FullSanitizer.new
312
+ # full_sanitizer.sanitize("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
313
+ # # => "Bold no more! See more here..."
314
+ #
315
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#334
316
+ class Rails::HTML5::FullSanitizer < ::Rails::HTML::Sanitizer
317
+ include ::Rails::HTML::Concern::ComposedSanitize
318
+ include ::Rails::HTML::Concern::Parser::HTML5
319
+ include ::Rails::HTML::Concern::Scrubber::Full
320
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
321
+ end
322
+
323
+ # == Rails::HTML5::LinkSanitizer
324
+ #
325
+ # Removes +a+ tags and +href+ attributes from HTML5 leaving only the link text.
326
+ #
327
+ # link_sanitizer = Rails::HTML5::LinkSanitizer.new
328
+ # link_sanitizer.sanitize('<a href="example.com">Only the link text will be kept.</a>')
329
+ # # => "Only the link text will be kept."
330
+ #
331
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#349
332
+ class Rails::HTML5::LinkSanitizer < ::Rails::HTML::Sanitizer
333
+ include ::Rails::HTML::Concern::ComposedSanitize
334
+ include ::Rails::HTML::Concern::Parser::HTML5
335
+ include ::Rails::HTML::Concern::Scrubber::Link
336
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
337
+ end
338
+
339
+ # == Rails::HTML5::SafeListSanitizer
340
+ #
341
+ # Sanitizes HTML5 and CSS from an extensive safe list.
342
+ #
343
+ # === Whitespace
344
+ #
345
+ # We can't make any guarantees about whitespace being kept or stripped. Loofah uses Nokogiri,
346
+ # which wraps either a C or Java parser for the respective Ruby implementation. Those two
347
+ # parsers determine how whitespace is ultimately handled.
348
+ #
349
+ # When the stripped markup will be rendered the users browser won't take whitespace into account
350
+ # anyway. It might be better to suggest your users wrap their whitespace sensitive content in
351
+ # pre tags or that you do so automatically.
352
+ #
353
+ # === Options
354
+ #
355
+ # Sanitizes both html and css via the safe lists found in
356
+ # Rails::HTML::Concern::Scrubber::SafeList
357
+ #
358
+ # SafeListSanitizer also accepts options to configure the safe list used when sanitizing html.
359
+ # There's a class level option:
360
+ #
361
+ # Rails::HTML5::SafeListSanitizer.allowed_tags = %w(table tr td)
362
+ # Rails::HTML5::SafeListSanitizer.allowed_attributes = %w(id class style)
363
+ #
364
+ # Tags and attributes can also be passed to +sanitize+. Passed options take precedence over the
365
+ # class level options.
366
+ #
367
+ # === Examples
368
+ #
369
+ # safe_list_sanitizer = Rails::HTML5::SafeListSanitizer.new
370
+ #
371
+ # # default: sanitize via a extensive safe list of allowed elements
372
+ # safe_list_sanitizer.sanitize(@article.body)
373
+ #
374
+ # # sanitize via the supplied tags and attributes
375
+ # safe_list_sanitizer.sanitize(
376
+ # @article.body,
377
+ # tags: %w(table tr td),
378
+ # attributes: %w(id class style),
379
+ # )
380
+ #
381
+ # # sanitize via a custom Loofah scrubber
382
+ # safe_list_sanitizer.sanitize(@article.body, scrubber: ArticleScrubber.new)
383
+ #
384
+ # # prune nodes from the tree instead of stripping tags and leaving inner content
385
+ # safe_list_sanitizer = Rails::HTML5::SafeListSanitizer.new(prune: true)
386
+ #
387
+ # # the sanitizer can also sanitize CSS
388
+ # safe_list_sanitizer.sanitize_css('background-color: #000;')
389
+ #
390
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#407
391
+ class Rails::HTML5::SafeListSanitizer < ::Rails::HTML::Sanitizer
392
+ include ::Rails::HTML::Concern::ComposedSanitize
393
+ include ::Rails::HTML::Concern::Parser::HTML5
394
+ include ::Rails::HTML::Concern::Scrubber::SafeList
395
+ include ::Rails::HTML::Concern::Serializer::UTF8Encode
396
+
397
+ class << self
398
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#144
399
+ def allowed_attributes; end
400
+
401
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#144
402
+ def allowed_attributes=(_arg0); end
403
+
404
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#143
405
+ def allowed_tags; end
406
+
407
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#143
408
+ def allowed_tags=(_arg0); end
409
+ end
410
+ end
411
+
412
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#306
413
+ class Rails::HTML5::Sanitizer
414
+ class << self
415
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#308
416
+ def full_sanitizer; end
417
+
418
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#312
419
+ def link_sanitizer; end
420
+
421
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#316
422
+ def safe_list_sanitizer; end
423
+
424
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#320
425
+ def white_list_sanitizer; end
426
+ end
427
+ end
428
+
429
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#33
430
+ module Rails::HTML::Concern; end
431
+
432
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#34
433
+ module Rails::HTML::Concern::ComposedSanitize
434
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#35
435
+ def sanitize(html, options = T.unsafe(nil)); end
436
+ end
437
+
438
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#43
439
+ module Rails::HTML::Concern::Parser; end
440
+
441
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#44
442
+ module Rails::HTML::Concern::Parser::HTML4
443
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#45
444
+ def parse_fragment(html); end
445
+ end
446
+
447
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#50
448
+ module Rails::HTML::Concern::Parser::HTML5
449
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#51
450
+ def parse_fragment(html); end
451
+ end
452
+
453
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#57
454
+ module Rails::HTML::Concern::Scrubber; end
455
+
456
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#58
457
+ module Rails::HTML::Concern::Scrubber::Full
458
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#59
459
+ def scrub(fragment, options = T.unsafe(nil)); end
460
+ end
461
+
462
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#64
463
+ module Rails::HTML::Concern::Scrubber::Link
464
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#65
465
+ def initialize; end
466
+
467
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#72
468
+ def scrub(fragment, options = T.unsafe(nil)); end
469
+ end
470
+
471
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#77
472
+ module Rails::HTML::Concern::Scrubber::SafeList
473
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#151
474
+ def initialize(prune: T.unsafe(nil)); end
475
+
476
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#168
477
+ def sanitize_css(style_string); end
478
+
479
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#155
480
+ def scrub(fragment, options = T.unsafe(nil)); end
481
+
482
+ private
483
+
484
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#177
485
+ def allowed_attributes(options); end
486
+
487
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#173
488
+ def allowed_tags(options); end
489
+
490
+ class << self
491
+ # @private
492
+ #
493
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#141
494
+ def included(klass); end
495
+ end
496
+ end
497
+
498
+ # The default safe list for attributes
499
+ #
500
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#125
501
+ Rails::HTML::Concern::Scrubber::SafeList::DEFAULT_ALLOWED_ATTRIBUTES = T.let(T.unsafe(nil), Set)
502
+
503
+ # The default safe list for tags
504
+ #
505
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#79
506
+ Rails::HTML::Concern::Scrubber::SafeList::DEFAULT_ALLOWED_TAGS = T.let(T.unsafe(nil), Set)
507
+
508
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#183
509
+ module Rails::HTML::Concern::Serializer; end
510
+
511
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#184
512
+ module Rails::HTML::Concern::Serializer::UTF8Encode
513
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#185
514
+ def serialize(fragment); end
515
+ end
516
+
517
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#417
518
+ Rails::HTML::FullSanitizer = Rails::HTML4::FullSanitizer
519
+
520
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#418
521
+ Rails::HTML::LinkSanitizer = Rails::HTML4::LinkSanitizer
522
+
523
+ # === Rails::HTML::PermitScrubber
524
+ #
525
+ # +Rails::HTML::PermitScrubber+ allows you to permit only your own tags and/or attributes.
526
+ #
527
+ # +Rails::HTML::PermitScrubber+ can be subclassed to determine:
528
+ # - When a node should be skipped via +skip_node?+.
529
+ # - When a node is allowed via +allowed_node?+.
530
+ # - When an attribute should be scrubbed via +scrub_attribute?+.
531
+ #
532
+ # Subclasses don't need to worry if tags or attributes are set or not.
533
+ # If tags or attributes are not set, Loofah's behavior will be used.
534
+ # If you override +allowed_node?+ and no tags are set, it will not be called.
535
+ # Instead Loofahs behavior will be used.
536
+ # Likewise for +scrub_attribute?+ and attributes respectively.
537
+ #
538
+ # Text and CDATA nodes are skipped by default.
539
+ # Unallowed elements will be stripped, i.e. element is removed but its subtree kept.
540
+ # Supplied tags and attributes should be Enumerables.
541
+ #
542
+ # +tags=+
543
+ # If set, elements excluded will be stripped.
544
+ # If not, elements are stripped based on Loofahs +HTML5::Scrub.allowed_element?+.
545
+ #
546
+ # +attributes=+
547
+ # If set, attributes excluded will be removed.
548
+ # If not, attributes are removed based on Loofahs +HTML5::Scrub.scrub_attributes+.
549
+ #
550
+ # class CommentScrubber < Rails::HTML::PermitScrubber
551
+ # def initialize
552
+ # super
553
+ # self.tags = %w(form script comment blockquote)
554
+ # end
555
+ #
556
+ # def skip_node?(node)
557
+ # node.text?
558
+ # end
559
+ #
560
+ # def scrub_attribute?(name)
561
+ # name == "style"
562
+ # end
563
+ # end
564
+ #
565
+ # See the documentation for +Nokogiri::XML::Node+ to understand what's possible
566
+ # with nodes: https://nokogiri.org/rdoc/Nokogiri/XML/Node.html
567
+ #
568
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#49
569
+ class Rails::HTML::PermitScrubber < ::Loofah::Scrubber
570
+ # @return [PermitScrubber] a new instance of PermitScrubber
571
+ #
572
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#52
573
+ def initialize(prune: T.unsafe(nil)); end
574
+
575
+ # Returns the value of attribute attributes.
576
+ #
577
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#50
578
+ def attributes; end
579
+
580
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#62
581
+ def attributes=(attributes); end
582
+
583
+ # Returns the value of attribute prune.
584
+ #
585
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#50
586
+ def prune; end
587
+
588
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#66
589
+ def scrub(node); end
590
+
591
+ # Returns the value of attribute tags.
592
+ #
593
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#50
594
+ def tags; end
595
+
596
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#58
597
+ def tags=(tags); end
598
+
599
+ protected
600
+
601
+ # @return [Boolean]
602
+ #
603
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#82
604
+ def allowed_node?(node); end
605
+
606
+ # @return [Boolean]
607
+ #
608
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#94
609
+ def keep_node?(node); end
610
+
611
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#136
612
+ def scrub_attribute(node, attr_node); end
613
+
614
+ # @return [Boolean]
615
+ #
616
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#90
617
+ def scrub_attribute?(name); end
618
+
619
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#107
620
+ def scrub_attributes(node); end
621
+
622
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#120
623
+ def scrub_css_attribute(node); end
624
+
625
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#102
626
+ def scrub_node(node); end
627
+
628
+ # @return [Boolean]
629
+ #
630
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#86
631
+ def skip_node?(node); end
632
+
633
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#129
634
+ def validate!(var, name); end
635
+ end
636
+
637
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#419
638
+ Rails::HTML::SafeListSanitizer = Rails::HTML4::SafeListSanitizer
639
+
640
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer/version.rb#5
641
+ class Rails::HTML::Sanitizer
642
+ extend ::Rails::HTML4::Sanitizer::VendorMethods
643
+
644
+ # @raise [NotImplementedError]
645
+ #
646
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#18
647
+ def sanitize(html, options = T.unsafe(nil)); end
648
+
649
+ private
650
+
651
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#28
652
+ def properly_encode(fragment, options); end
653
+
654
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#23
655
+ def remove_xpaths(node, xpaths); end
656
+
657
+ class << self
658
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#13
659
+ def best_supported_vendor; end
660
+
661
+ # @return [Boolean]
662
+ #
663
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#7
664
+ def html5_support?; end
665
+ end
666
+ end
667
+
668
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer/version.rb#6
669
+ Rails::HTML::Sanitizer::VERSION = T.let(T.unsafe(nil), String)
670
+
671
+ # === Rails::HTML::TargetScrubber
672
+ #
673
+ # Where +Rails::HTML::PermitScrubber+ picks out tags and attributes to permit in
674
+ # sanitization, +Rails::HTML::TargetScrubber+ targets them for removal.
675
+ #
676
+ # +tags=+
677
+ # If set, elements included will be stripped.
678
+ #
679
+ # +attributes=+
680
+ # If set, attributes included will be removed.
681
+ #
682
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#171
683
+ class Rails::HTML::TargetScrubber < ::Rails::HTML::PermitScrubber
684
+ # @return [Boolean]
685
+ #
686
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#172
687
+ def allowed_node?(node); end
688
+
689
+ # @return [Boolean]
690
+ #
691
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#176
692
+ def scrub_attribute?(name); end
693
+ end
694
+
695
+ # === Rails::HTML::TextOnlyScrubber
696
+ #
697
+ # +Rails::HTML::TextOnlyScrubber+ allows you to permit text nodes.
698
+ #
699
+ # Unallowed elements will be stripped, i.e. element is removed but its subtree kept.
700
+ #
701
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#186
702
+ class Rails::HTML::TextOnlyScrubber < ::Loofah::Scrubber
703
+ # @return [TextOnlyScrubber] a new instance of TextOnlyScrubber
704
+ #
705
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#187
706
+ def initialize; end
707
+
708
+ # source://rails-html-sanitizer//lib/rails/html/scrubbers.rb#191
709
+ def scrub(node); end
710
+ end
711
+
712
+ # source://rails-html-sanitizer//lib/rails/html/sanitizer.rb#420
713
+ Rails::HTML::WhiteListSanitizer = Rails::HTML4::SafeListSanitizer
714
+
715
+ # source://rails-html-sanitizer//lib/rails-html-sanitizer.rb#11
716
+ Rails::Html = Rails::HTML