vigiles 0.1.0.pre.beta3 → 0.1.0.pre.beta4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +10 -1
  3. data/lib/vigiles/archive/extras.rb +4 -3
  4. data/lib/vigiles/archive/metadata.rb +3 -2
  5. data/lib/vigiles/archive/request.rb +18 -4
  6. data/lib/vigiles/archive.rb +15 -3
  7. data/lib/vigiles/constants.rb +7 -0
  8. data/lib/vigiles/middleware/record_conversation.rb +6 -22
  9. data/lib/vigiles/spec.rb +1 -1
  10. data/lib/vigiles/utilities/uri.rb +18 -0
  11. data/lib/vigiles/version.rb +1 -1
  12. data/lib/vigiles.rb +4 -1
  13. data/sorbet/rbi/gems/{activemodel@7.0.5.rbi → actioncable@7.1.3.3.rbi} +2 -2
  14. data/sorbet/rbi/gems/actionmailbox@7.1.3.3.rbi +8 -0
  15. data/sorbet/rbi/gems/{activerecord@7.0.5.rbi → actionmailer@7.1.3.3.rbi} +2 -2
  16. data/sorbet/rbi/gems/actionpack@7.1.3.3.rbi +20046 -0
  17. data/sorbet/rbi/gems/actiontext@7.1.3.3.rbi +8 -0
  18. data/sorbet/rbi/gems/actionview@7.1.3.3.rbi +15953 -0
  19. data/sorbet/rbi/gems/activejob@7.1.3.3.rbi +8 -0
  20. data/sorbet/rbi/gems/activemodel@7.1.3.3.rbi +6657 -0
  21. data/sorbet/rbi/gems/activerecord@7.1.3.3.rbi +41520 -0
  22. data/sorbet/rbi/gems/activestorage@7.1.3.3.rbi +8 -0
  23. data/sorbet/rbi/gems/activesupport@7.1.3.3.rbi +20570 -0
  24. data/sorbet/rbi/gems/base64@0.2.0.rbi +508 -0
  25. data/sorbet/rbi/gems/bigdecimal@3.1.8.rbi +77 -0
  26. data/sorbet/rbi/gems/builder@3.2.4.rbi +8 -0
  27. data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +8 -0
  28. data/sorbet/rbi/gems/crass@1.0.6.rbi +622 -0
  29. data/sorbet/rbi/gems/date@3.3.4.rbi +74 -0
  30. data/sorbet/rbi/gems/drb@2.2.1.rbi +1346 -0
  31. data/sorbet/rbi/gems/globalid@1.2.1.rbi +8 -0
  32. data/sorbet/rbi/gems/i18n@1.14.5.rbi +2358 -0
  33. data/sorbet/rbi/gems/io-console@0.7.2.rbi +8 -0
  34. data/sorbet/rbi/gems/loofah@2.22.0.rbi +1080 -0
  35. data/sorbet/rbi/gems/{i18n@1.14.1.rbi → mail@2.8.1.rbi} +2 -2
  36. data/sorbet/rbi/gems/marcel@1.0.4.rbi +8 -0
  37. data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +8 -0
  38. data/sorbet/rbi/gems/mutex_m@0.2.0.rbi +93 -0
  39. data/sorbet/rbi/gems/net-imap@0.4.11.rbi +8 -0
  40. data/sorbet/rbi/gems/net-pop@0.1.2.rbi +8 -0
  41. data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +291 -0
  42. data/sorbet/rbi/gems/net-smtp@0.5.0.rbi +8 -0
  43. data/sorbet/rbi/gems/nio4r@2.7.3.rbi +8 -0
  44. data/sorbet/rbi/gems/nokogiri@1.16.5.rbi +7310 -0
  45. data/sorbet/rbi/gems/psych@5.1.2.rbi +1768 -0
  46. data/sorbet/rbi/gems/rack-session@2.0.0.rbi +729 -0
  47. data/sorbet/rbi/gems/rack-test@2.1.0.rbi +749 -0
  48. data/sorbet/rbi/gems/rack@3.0.11.rbi +5195 -0
  49. data/sorbet/rbi/gems/rackup@2.1.0.rbi +406 -0
  50. data/sorbet/rbi/gems/rails-dom-testing@2.2.0.rbi +691 -0
  51. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.0.rbi +721 -0
  52. data/sorbet/rbi/gems/rails@7.1.3.3.rbi +8 -0
  53. data/sorbet/rbi/gems/railties@7.1.3.3.rbi +2167 -0
  54. data/sorbet/rbi/gems/rdoc@6.6.3.1.rbi +12715 -0
  55. data/sorbet/rbi/gems/reline@0.5.7.rbi +8 -0
  56. data/sorbet/rbi/gems/stringio@3.1.0.rbi +8 -0
  57. data/sorbet/rbi/gems/timeout@0.4.1.rbi +148 -0
  58. data/sorbet/rbi/gems/webrick@1.8.1.rbi +2606 -0
  59. data/sorbet/rbi/gems/websocket-driver@0.7.6.rbi +8 -0
  60. data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +8 -0
  61. data/sorbet/rbi/gems/zeitwerk@2.6.13.rbi +1003 -0
  62. data/vigiles.gemspec +1 -1
  63. metadata +54 -7
  64. data/sorbet/rbi/gems/activesupport@7.0.5.rbi +0 -14
@@ -0,0 +1,1080 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `loofah` gem.
5
+ # Please instead update this file by running `bin/tapioca gem loofah`.
6
+
7
+ # == Strings and IO Objects as Input
8
+ #
9
+ # The following methods accept any IO object in addition to accepting a string:
10
+ #
11
+ # - Loofah.html4_document
12
+ # - Loofah.html4_fragment
13
+ # - Loofah.scrub_html4_document
14
+ # - Loofah.scrub_html4_fragment
15
+ #
16
+ # - Loofah.html5_document
17
+ # - Loofah.html5_fragment
18
+ # - Loofah.scrub_html5_document
19
+ # - Loofah.scrub_html5_fragment
20
+ #
21
+ # - Loofah.xml_document
22
+ # - Loofah.xml_fragment
23
+ # - Loofah.scrub_xml_document
24
+ # - Loofah.scrub_xml_fragment
25
+ #
26
+ # - Loofah.document
27
+ # - Loofah.fragment
28
+ # - Loofah.scrub_document
29
+ # - Loofah.scrub_fragment
30
+ #
31
+ # That IO object could be a file, or a socket, or a StringIO, or anything that responds to +read+
32
+ # and +close+.
33
+ #
34
+ # source://loofah//lib/loofah.rb#5
35
+ module Loofah
36
+ class << self
37
+ # Shortcut for Loofah::HTML4::Document.parse(*args, &block)
38
+ #
39
+ # This method accepts the same parameters as Nokogiri::HTML4::Document.parse
40
+ #
41
+ # source://loofah//lib/loofah.rb#76
42
+ def document(*args, &block); end
43
+
44
+ # Shortcut for Loofah::HTML4::DocumentFragment.parse(*args, &block)
45
+ #
46
+ # This method accepts the same parameters as Nokogiri::HTML4::DocumentFragment.parse
47
+ #
48
+ # source://loofah//lib/loofah.rb#83
49
+ def fragment(*args, &block); end
50
+
51
+ # Shortcut for Loofah::HTML4::Document.parse(*args, &block)
52
+ #
53
+ # This method accepts the same parameters as Nokogiri::HTML4::Document.parse
54
+ #
55
+ # source://loofah//lib/loofah.rb#76
56
+ def html4_document(*args, &block); end
57
+
58
+ # Shortcut for Loofah::HTML4::DocumentFragment.parse(*args, &block)
59
+ #
60
+ # This method accepts the same parameters as Nokogiri::HTML4::DocumentFragment.parse
61
+ #
62
+ # source://loofah//lib/loofah.rb#83
63
+ def html4_fragment(*args, &block); end
64
+
65
+ # source://loofah//lib/loofah.rb#101
66
+ def html5_document(*args, &block); end
67
+
68
+ # source://loofah//lib/loofah.rb#108
69
+ def html5_fragment(*args, &block); end
70
+
71
+ # @return [Boolean]
72
+ #
73
+ # source://loofah//lib/loofah.rb#7
74
+ def html5_support?; end
75
+
76
+ # A helper to remove extraneous whitespace from text-ified HTML
77
+ #
78
+ # source://loofah//lib/loofah.rb#169
79
+ def remove_extraneous_whitespace(string); end
80
+
81
+ # Shortcut for Loofah::HTML4::Document.parse(string_or_io).scrub!(method)
82
+ #
83
+ # source://loofah//lib/loofah.rb#88
84
+ def scrub_document(string_or_io, method); end
85
+
86
+ # Shortcut for Loofah::HTML4::DocumentFragment.parse(string_or_io).scrub!(method)
87
+ #
88
+ # source://loofah//lib/loofah.rb#93
89
+ def scrub_fragment(string_or_io, method); end
90
+
91
+ # Shortcut for Loofah::HTML4::Document.parse(string_or_io).scrub!(method)
92
+ #
93
+ # source://loofah//lib/loofah.rb#88
94
+ def scrub_html4_document(string_or_io, method); end
95
+
96
+ # Shortcut for Loofah::HTML4::DocumentFragment.parse(string_or_io).scrub!(method)
97
+ #
98
+ # source://loofah//lib/loofah.rb#93
99
+ def scrub_html4_fragment(string_or_io, method); end
100
+
101
+ # source://loofah//lib/loofah.rb#113
102
+ def scrub_html5_document(string_or_io, method); end
103
+
104
+ # source://loofah//lib/loofah.rb#118
105
+ def scrub_html5_fragment(string_or_io, method); end
106
+
107
+ # Shortcut for Loofah.xml_document(string_or_io).scrub!(method)
108
+ #
109
+ # source://loofah//lib/loofah.rb#164
110
+ def scrub_xml_document(string_or_io, method); end
111
+
112
+ # Shortcut for Loofah.xml_fragment(string_or_io).scrub!(method)
113
+ #
114
+ # source://loofah//lib/loofah.rb#159
115
+ def scrub_xml_fragment(string_or_io, method); end
116
+
117
+ # Shortcut for Loofah::XML::Document.parse(*args, &block)
118
+ #
119
+ # This method accepts the same parameters as Nokogiri::XML::Document.parse
120
+ #
121
+ # source://loofah//lib/loofah.rb#147
122
+ def xml_document(*args, &block); end
123
+
124
+ # Shortcut for Loofah::XML::DocumentFragment.parse(*args, &block)
125
+ #
126
+ # This method accepts the same parameters as Nokogiri::XML::DocumentFragment.parse
127
+ #
128
+ # source://loofah//lib/loofah.rb#154
129
+ def xml_fragment(*args, &block); end
130
+ end
131
+ end
132
+
133
+ # source://loofah//lib/loofah/concerns.rb#125
134
+ module Loofah::DocumentDecorator
135
+ # source://loofah//lib/loofah/concerns.rb#126
136
+ def initialize(*args, &block); end
137
+ end
138
+
139
+ # source://loofah//lib/loofah/elements.rb#6
140
+ module Loofah::Elements; end
141
+
142
+ # source://loofah//lib/loofah/elements.rb#93
143
+ Loofah::Elements::BLOCK_LEVEL = T.let(T.unsafe(nil), Set)
144
+
145
+ # Elements that aren't block but should generate a newline in #to_text
146
+ #
147
+ # source://loofah//lib/loofah/elements.rb#90
148
+ Loofah::Elements::INLINE_LINE_BREAK = T.let(T.unsafe(nil), Set)
149
+
150
+ # source://loofah//lib/loofah/elements.rb#94
151
+ Loofah::Elements::LINEBREAKERS = T.let(T.unsafe(nil), Set)
152
+
153
+ # The following elements may also be considered block-level
154
+ # elements since they may contain block-level elements
155
+ #
156
+ # source://loofah//lib/loofah/elements.rb#76
157
+ Loofah::Elements::LOOSE_BLOCK_LEVEL = T.let(T.unsafe(nil), Set)
158
+
159
+ # source://loofah//lib/loofah/elements.rb#92
160
+ Loofah::Elements::STRICT_BLOCK_LEVEL = T.let(T.unsafe(nil), Set)
161
+
162
+ # source://loofah//lib/loofah/elements.rb#7
163
+ Loofah::Elements::STRICT_BLOCK_LEVEL_HTML4 = T.let(T.unsafe(nil), Set)
164
+
165
+ # https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
166
+ #
167
+ # source://loofah//lib/loofah/elements.rb#35
168
+ Loofah::Elements::STRICT_BLOCK_LEVEL_HTML5 = T.let(T.unsafe(nil), Set)
169
+
170
+ # Alias for Loofah::HTML4
171
+ #
172
+ # source://loofah//lib/loofah.rb#70
173
+ Loofah::HTML = Loofah::HTML4
174
+
175
+ # source://loofah//lib/loofah/html4/document.rb#4
176
+ module Loofah::HTML4; end
177
+
178
+ # Subclass of Nokogiri::HTML4::Document.
179
+ #
180
+ # See Loofah::ScrubBehavior and Loofah::TextBehavior for additional methods.
181
+ #
182
+ # source://loofah//lib/loofah/html4/document.rb#10
183
+ class Loofah::HTML4::Document < ::Nokogiri::HTML4::Document
184
+ include ::Loofah::ScrubBehavior::Node
185
+ include ::Loofah::DocumentDecorator
186
+ include ::Loofah::TextBehavior
187
+ include ::Loofah::HtmlDocumentBehavior
188
+ extend ::Loofah::HtmlDocumentBehavior::ClassMethods
189
+ end
190
+
191
+ # Subclass of Nokogiri::HTML4::DocumentFragment.
192
+ #
193
+ # See Loofah::ScrubBehavior and Loofah::TextBehavior for additional methods.
194
+ #
195
+ # source://loofah//lib/loofah/html4/document_fragment.rb#10
196
+ class Loofah::HTML4::DocumentFragment < ::Nokogiri::HTML4::DocumentFragment
197
+ include ::Loofah::TextBehavior
198
+ include ::Loofah::HtmlFragmentBehavior
199
+ extend ::Loofah::HtmlFragmentBehavior::ClassMethods
200
+ end
201
+
202
+ # source://loofah//lib/loofah/html5/safelist.rb#6
203
+ module Loofah::HTML5; end
204
+
205
+ # Subclass of Nokogiri::HTML5::Document.
206
+ #
207
+ # See Loofah::ScrubBehavior and Loofah::TextBehavior for additional methods.
208
+ #
209
+ # source://loofah//lib/loofah/html5/document.rb#10
210
+ class Loofah::HTML5::Document < ::Nokogiri::HTML5::Document
211
+ include ::Loofah::ScrubBehavior::Node
212
+ include ::Loofah::DocumentDecorator
213
+ include ::Loofah::TextBehavior
214
+ include ::Loofah::HtmlDocumentBehavior
215
+ extend ::Loofah::HtmlDocumentBehavior::ClassMethods
216
+ end
217
+
218
+ # Subclass of Nokogiri::HTML5::DocumentFragment.
219
+ #
220
+ # See Loofah::ScrubBehavior and Loofah::TextBehavior for additional methods.
221
+ #
222
+ # source://loofah//lib/loofah/html5/document_fragment.rb#10
223
+ class Loofah::HTML5::DocumentFragment < ::Nokogiri::HTML5::DocumentFragment
224
+ include ::Loofah::TextBehavior
225
+ include ::Loofah::HtmlFragmentBehavior
226
+ extend ::Loofah::HtmlFragmentBehavior::ClassMethods
227
+ end
228
+
229
+ # source://loofah//lib/loofah/html5/safelist.rb#49
230
+ module Loofah::HTML5::SafeList; end
231
+
232
+ # source://loofah//lib/loofah/html5/safelist.rb#232
233
+ Loofah::HTML5::SafeList::ACCEPTABLE_ATTRIBUTES = T.let(T.unsafe(nil), Set)
234
+
235
+ # https://www.w3.org/TR/css-color-3/#html4
236
+ #
237
+ # source://loofah//lib/loofah/html5/safelist.rb#735
238
+ Loofah::HTML5::SafeList::ACCEPTABLE_CSS_COLORS = T.let(T.unsafe(nil), Set)
239
+
240
+ # https://www.w3.org/TR/css-color-3/#svg-color
241
+ #
242
+ # source://loofah//lib/loofah/html5/safelist.rb#755
243
+ Loofah::HTML5::SafeList::ACCEPTABLE_CSS_EXTENDED_COLORS = T.let(T.unsafe(nil), Set)
244
+
245
+ # see https://www.quackit.com/css/functions/
246
+ # omit `url` and `image` from that list
247
+ #
248
+ # source://loofah//lib/loofah/html5/safelist.rb#907
249
+ Loofah::HTML5::SafeList::ACCEPTABLE_CSS_FUNCTIONS = T.let(T.unsafe(nil), Set)
250
+
251
+ # source://loofah//lib/loofah/html5/safelist.rb#696
252
+ Loofah::HTML5::SafeList::ACCEPTABLE_CSS_KEYWORDS = T.let(T.unsafe(nil), Set)
253
+
254
+ # source://loofah//lib/loofah/html5/safelist.rb#626
255
+ Loofah::HTML5::SafeList::ACCEPTABLE_CSS_PROPERTIES = T.let(T.unsafe(nil), Set)
256
+
257
+ # source://loofah//lib/loofah/html5/safelist.rb#50
258
+ Loofah::HTML5::SafeList::ACCEPTABLE_ELEMENTS = T.let(T.unsafe(nil), Set)
259
+
260
+ # source://loofah//lib/loofah/html5/safelist.rb#980
261
+ Loofah::HTML5::SafeList::ACCEPTABLE_PROTOCOLS = T.let(T.unsafe(nil), Set)
262
+
263
+ # source://loofah//lib/loofah/html5/safelist.rb#967
264
+ Loofah::HTML5::SafeList::ACCEPTABLE_SVG_PROPERTIES = T.let(T.unsafe(nil), Set)
265
+
266
+ # source://loofah//lib/loofah/html5/safelist.rb#1011
267
+ Loofah::HTML5::SafeList::ACCEPTABLE_URI_DATA_MEDIATYPES = T.let(T.unsafe(nil), Set)
268
+
269
+ # source://loofah//lib/loofah/html5/safelist.rb#1021
270
+ Loofah::HTML5::SafeList::ALLOWED_ATTRIBUTES = T.let(T.unsafe(nil), Set)
271
+
272
+ # source://loofah//lib/loofah/html5/safelist.rb#1024
273
+ Loofah::HTML5::SafeList::ALLOWED_CSS_FUNCTIONS = T.let(T.unsafe(nil), Set)
274
+
275
+ # source://loofah//lib/loofah/html5/safelist.rb#1023
276
+ Loofah::HTML5::SafeList::ALLOWED_CSS_KEYWORDS = T.let(T.unsafe(nil), Set)
277
+
278
+ # source://loofah//lib/loofah/html5/safelist.rb#1022
279
+ Loofah::HTML5::SafeList::ALLOWED_CSS_PROPERTIES = T.let(T.unsafe(nil), Set)
280
+
281
+ # subclasses may define their own versions of these constants
282
+ #
283
+ # source://loofah//lib/loofah/html5/safelist.rb#1020
284
+ Loofah::HTML5::SafeList::ALLOWED_ELEMENTS = T.let(T.unsafe(nil), Set)
285
+
286
+ # source://loofah//lib/loofah/html5/safelist.rb#1045
287
+ Loofah::HTML5::SafeList::ALLOWED_ELEMENTS_WITH_LIBXML2 = T.let(T.unsafe(nil), Set)
288
+
289
+ # source://loofah//lib/loofah/html5/safelist.rb#1026
290
+ Loofah::HTML5::SafeList::ALLOWED_PROTOCOLS = T.let(T.unsafe(nil), Set)
291
+
292
+ # source://loofah//lib/loofah/html5/safelist.rb#1025
293
+ Loofah::HTML5::SafeList::ALLOWED_SVG_PROPERTIES = T.let(T.unsafe(nil), Set)
294
+
295
+ # source://loofah//lib/loofah/html5/safelist.rb#1027
296
+ Loofah::HTML5::SafeList::ALLOWED_URI_DATA_MEDIATYPES = T.let(T.unsafe(nil), Set)
297
+
298
+ # source://loofah//lib/loofah/html5/safelist.rb#526
299
+ Loofah::HTML5::SafeList::ARIA_ATTRIBUTES = T.let(T.unsafe(nil), Set)
300
+
301
+ # source://loofah//lib/loofah/html5/safelist.rb#582
302
+ Loofah::HTML5::SafeList::ATTR_VAL_IS_URI = T.let(T.unsafe(nil), Set)
303
+
304
+ # source://loofah//lib/loofah/html5/safelist.rb#315
305
+ Loofah::HTML5::SafeList::MATHML_ATTRIBUTES = T.let(T.unsafe(nil), Set)
306
+
307
+ # source://loofah//lib/loofah/html5/safelist.rb#147
308
+ Loofah::HTML5::SafeList::MATHML_ELEMENTS = T.let(T.unsafe(nil), Set)
309
+
310
+ # source://loofah//lib/loofah/html5/safelist.rb#978
311
+ Loofah::HTML5::SafeList::PROTOCOL_SEPARATOR = T.let(T.unsafe(nil), Regexp)
312
+
313
+ # source://loofah//lib/loofah/html5/safelist.rb#960
314
+ Loofah::HTML5::SafeList::SHORTHAND_CSS_PROPERTIES = T.let(T.unsafe(nil), Set)
315
+
316
+ # source://loofah//lib/loofah/html5/safelist.rb#608
317
+ Loofah::HTML5::SafeList::SVG_ALLOW_LOCAL_HREF = T.let(T.unsafe(nil), Set)
318
+
319
+ # source://loofah//lib/loofah/html5/safelist.rb#367
320
+ Loofah::HTML5::SafeList::SVG_ATTRIBUTES = T.let(T.unsafe(nil), Set)
321
+
322
+ # source://loofah//lib/loofah/html5/safelist.rb#594
323
+ Loofah::HTML5::SafeList::SVG_ATTR_VAL_ALLOWS_REF = T.let(T.unsafe(nil), Set)
324
+
325
+ # source://loofah//lib/loofah/html5/safelist.rb#183
326
+ Loofah::HTML5::SafeList::SVG_ELEMENTS = T.let(T.unsafe(nil), Set)
327
+
328
+ # additional tags we should consider safe since we have libxml2 fixing up our documents.
329
+ #
330
+ # source://loofah//lib/loofah/html5/safelist.rb#1040
331
+ Loofah::HTML5::SafeList::TAGS_SAFE_WITH_LIBXML2 = T.let(T.unsafe(nil), Set)
332
+
333
+ # TODO: remove VOID_ELEMENTS in a future major release
334
+ # and put it in the tests (it is used only for testing, not for functional behavior)
335
+ #
336
+ # source://loofah//lib/loofah/html5/safelist.rb#1031
337
+ Loofah::HTML5::SafeList::VOID_ELEMENTS = T.let(T.unsafe(nil), Set)
338
+
339
+ # source://loofah//lib/loofah/html5/scrub.rb#8
340
+ module Loofah::HTML5::Scrub
341
+ class << self
342
+ # @return [Boolean]
343
+ #
344
+ # source://loofah//lib/loofah/html5/scrub.rb#18
345
+ def allowed_element?(element_name); end
346
+
347
+ # source://loofah//lib/loofah/html5/scrub.rb#192
348
+ def cdata_escape(node); end
349
+
350
+ # @return [Boolean]
351
+ #
352
+ # source://loofah//lib/loofah/html5/scrub.rb#187
353
+ def cdata_needs_escaping?(node); end
354
+
355
+ # source://loofah//lib/loofah/html5/scrub.rb#207
356
+ def escape_tags(string); end
357
+
358
+ # libxml2 >= 2.9.2 fails to escape comments within some attributes.
359
+ #
360
+ # see comments about CVE-2018-8048 within the tests for more information
361
+ #
362
+ # source://loofah//lib/loofah/html5/scrub.rb#166
363
+ def force_correct_attribute_escaping!(node); end
364
+
365
+ # source://loofah//lib/loofah/html5/scrub.rb#123
366
+ def scrub_attribute_that_allows_local_ref(attr_node); end
367
+
368
+ # alternative implementation of the html5lib attribute scrubbing algorithm
369
+ #
370
+ # source://loofah//lib/loofah/html5/scrub.rb#23
371
+ def scrub_attributes(node); end
372
+
373
+ # source://loofah//lib/loofah/html5/scrub.rb#72
374
+ def scrub_css(style); end
375
+
376
+ # source://loofah//lib/loofah/html5/scrub.rb#67
377
+ def scrub_css_attribute(node); end
378
+
379
+ # source://loofah//lib/loofah/html5/scrub.rb#142
380
+ def scrub_uri_attribute(attr_node); end
381
+ end
382
+ end
383
+
384
+ # source://loofah//lib/loofah/html5/scrub.rb#9
385
+ Loofah::HTML5::Scrub::CONTROL_CHARACTERS = T.let(T.unsafe(nil), Regexp)
386
+
387
+ # source://loofah//lib/loofah/html5/scrub.rb#11
388
+ Loofah::HTML5::Scrub::CRASS_SEMICOLON = T.let(T.unsafe(nil), Hash)
389
+
390
+ # source://loofah//lib/loofah/html5/scrub.rb#12
391
+ Loofah::HTML5::Scrub::CSS_IMPORTANT = T.let(T.unsafe(nil), String)
392
+
393
+ # source://loofah//lib/loofah/html5/scrub.rb#10
394
+ Loofah::HTML5::Scrub::CSS_KEYWORDISH = T.let(T.unsafe(nil), Regexp)
395
+
396
+ # source://loofah//lib/loofah/html5/scrub.rb#14
397
+ Loofah::HTML5::Scrub::CSS_PROPERTY_STRING_WITHOUT_EMBEDDED_QUOTES = T.let(T.unsafe(nil), Regexp)
398
+
399
+ # source://loofah//lib/loofah/html5/scrub.rb#13
400
+ Loofah::HTML5::Scrub::CSS_WHITESPACE = T.let(T.unsafe(nil), String)
401
+
402
+ # source://loofah//lib/loofah/html5/scrub.rb#15
403
+ Loofah::HTML5::Scrub::DATA_ATTRIBUTE_NAME = T.let(T.unsafe(nil), Regexp)
404
+
405
+ # source://loofah//lib/loofah/html5/safelist.rb#1048
406
+ Loofah::HTML5::WhiteList = Loofah::HTML5::SafeList
407
+
408
+ # source://loofah//lib/loofah/concerns.rb#133
409
+ module Loofah::HtmlDocumentBehavior
410
+ mixes_in_class_methods ::Loofah::HtmlDocumentBehavior::ClassMethods
411
+
412
+ # source://loofah//lib/loofah/concerns.rb#164
413
+ def serialize_root; end
414
+
415
+ class << self
416
+ # @private
417
+ #
418
+ # source://loofah//lib/loofah/concerns.rb#159
419
+ def included(base); end
420
+ end
421
+ end
422
+
423
+ # source://loofah//lib/loofah/concerns.rb#134
424
+ module Loofah::HtmlDocumentBehavior::ClassMethods
425
+ # source://loofah//lib/loofah/concerns.rb#135
426
+ def parse(*args, &block); end
427
+
428
+ private
429
+
430
+ # remove comments that exist outside of the HTML element.
431
+ #
432
+ # these comments are allowed by the HTML spec:
433
+ #
434
+ # https://www.w3.org/TR/html401/struct/global.html#h-7.1
435
+ #
436
+ # but are not scrubbed by Loofah because these nodes don't meet
437
+ # the contract that scrubbers expect of a node (e.g., it can be
438
+ # replaced, sibling and children nodes can be created).
439
+ #
440
+ # source://loofah//lib/loofah/concerns.rb#150
441
+ def remove_comments_before_html_element(doc); end
442
+ end
443
+
444
+ # source://loofah//lib/loofah/concerns.rb#169
445
+ module Loofah::HtmlFragmentBehavior
446
+ mixes_in_class_methods ::Loofah::HtmlFragmentBehavior::ClassMethods
447
+
448
+ # source://loofah//lib/loofah/concerns.rb#197
449
+ def serialize; end
450
+
451
+ # source://loofah//lib/loofah/concerns.rb#203
452
+ def serialize_root; end
453
+
454
+ # source://loofah//lib/loofah/concerns.rb#197
455
+ def to_s; end
456
+
457
+ class << self
458
+ # @private
459
+ #
460
+ # source://loofah//lib/loofah/concerns.rb#192
461
+ def included(base); end
462
+ end
463
+ end
464
+
465
+ # source://loofah//lib/loofah/concerns.rb#170
466
+ module Loofah::HtmlFragmentBehavior::ClassMethods
467
+ # source://loofah//lib/loofah/concerns.rb#180
468
+ def document_klass; end
469
+
470
+ # source://loofah//lib/loofah/concerns.rb#171
471
+ def parse(tags, encoding = T.unsafe(nil)); end
472
+ end
473
+
474
+ # constants related to working around unhelpful libxml2 behavior
475
+ #
476
+ # ಠ_ಠ
477
+ #
478
+ # source://loofah//lib/loofah/html5/libxml2_workarounds.rb#12
479
+ module Loofah::LibxmlWorkarounds; end
480
+
481
+ # these attributes and qualifying parent tags are determined by the code at:
482
+ #
483
+ # https://git.gnome.org/browse/libxml2/tree/HTMLtree.c?h=v2.9.2#n714
484
+ #
485
+ # see comments about CVE-2018-8048 within the tests for more information
486
+ #
487
+ # source://loofah//lib/loofah/html5/libxml2_workarounds.rb#20
488
+ Loofah::LibxmlWorkarounds::BROKEN_ESCAPING_ATTRIBUTES = T.let(T.unsafe(nil), Set)
489
+
490
+ # source://loofah//lib/loofah/html5/libxml2_workarounds.rb#26
491
+ Loofah::LibxmlWorkarounds::BROKEN_ESCAPING_ATTRIBUTES_QUALIFYING_TAG = T.let(T.unsafe(nil), Hash)
492
+
493
+ # source://loofah//lib/loofah/metahelpers.rb#4
494
+ module Loofah::MetaHelpers
495
+ class << self
496
+ # source://loofah//lib/loofah/metahelpers.rb#6
497
+ def add_downcased_set_members_to_all_set_constants(mojule); end
498
+ end
499
+ end
500
+
501
+ # Mixes +scrub!+ into Document, DocumentFragment, Node and NodeSet.
502
+ #
503
+ # Traverse the document or fragment, invoking the +scrubber+ on each node.
504
+ #
505
+ # +scrubber+ must either be one of the symbols representing the built-in scrubbers (see
506
+ # Scrubbers), or a Scrubber instance.
507
+ #
508
+ # span2div = Loofah::Scrubber.new do |node|
509
+ # node.name = "div" if node.name == "span"
510
+ # end
511
+ # Loofah.html5_fragment("<span>foo</span><p>bar</p>").scrub!(span2div).to_s
512
+ # # => "<div>foo</div><p>bar</p>"
513
+ #
514
+ # or
515
+ #
516
+ # unsafe_html = "ohai! <div>div is safe</div> <script>but script is not</script>"
517
+ # Loofah.html5_fragment(unsafe_html).scrub!(:strip).to_s
518
+ # # => "ohai! <div>div is safe</div> "
519
+ #
520
+ # Note that this method is called implicitly from the shortcuts Loofah.scrub_html5_fragment et
521
+ # al.
522
+ #
523
+ # Please see Scrubber for more information on implementation and traversal, and README.rdoc for
524
+ # more example usage.
525
+ #
526
+ # source://loofah//lib/loofah/concerns.rb#30
527
+ module Loofah::ScrubBehavior
528
+ class << self
529
+ # source://loofah//lib/loofah/concerns.rb#59
530
+ def resolve_scrubber(scrubber); end
531
+ end
532
+ end
533
+
534
+ # source://loofah//lib/loofah/concerns.rb#31
535
+ module Loofah::ScrubBehavior::Node
536
+ # source://loofah//lib/loofah/concerns.rb#32
537
+ def scrub!(scrubber); end
538
+ end
539
+
540
+ # source://loofah//lib/loofah/concerns.rb#51
541
+ module Loofah::ScrubBehavior::NodeSet
542
+ # source://loofah//lib/loofah/concerns.rb#52
543
+ def scrub!(scrubber); end
544
+ end
545
+
546
+ # A Scrubber wraps up a block (or method) that is run on an HTML node (element):
547
+ #
548
+ # # change all <span> tags to <div> tags
549
+ # span2div = Loofah::Scrubber.new do |node|
550
+ # node.name = "div" if node.name == "span"
551
+ # end
552
+ #
553
+ # Alternatively, this scrubber could have been implemented as:
554
+ #
555
+ # class Span2Div < Loofah::Scrubber
556
+ # def scrub(node)
557
+ # node.name = "div" if node.name == "span"
558
+ # end
559
+ # end
560
+ # span2div = Span2Div.new
561
+ #
562
+ # This can then be run on a document:
563
+ #
564
+ # Loofah.html5_fragment("<span>foo</span><p>bar</p>").scrub!(span2div).to_s
565
+ # # => "<div>foo</div><p>bar</p>"
566
+ #
567
+ # Scrubbers can be run on a document in either a top-down traversal (the
568
+ # default) or bottom-up. Top-down scrubbers can optionally return
569
+ # Scrubber::STOP to terminate the traversal of a subtree.
570
+ #
571
+ # source://loofah//lib/loofah/scrubber.rb#35
572
+ class Loofah::Scrubber
573
+ # Options may include
574
+ # :direction => :top_down (the default)
575
+ # or
576
+ # :direction => :bottom_up
577
+ #
578
+ # For top_down traversals, if the block returns
579
+ # Loofah::Scrubber::STOP, then the traversal will be terminated
580
+ # for the current node's subtree.
581
+ #
582
+ # Alternatively, a Scrubber may inherit from Loofah::Scrubber,
583
+ # and implement +scrub+, which is slightly faster than using a
584
+ # block.
585
+ #
586
+ # @return [Scrubber] a new instance of Scrubber
587
+ #
588
+ # source://loofah//lib/loofah/scrubber.rb#65
589
+ def initialize(options = T.unsafe(nil), &block); end
590
+
591
+ # If the attribute is not set, add it
592
+ # If the attribute is set, don't overwrite the existing value
593
+ #
594
+ # source://loofah//lib/loofah/scrubber.rb#96
595
+ def append_attribute(node, attribute, value); end
596
+
597
+ # When a scrubber is initialized, the optional block is saved as
598
+ # :block. Note that, if no block is passed, then the +scrub+
599
+ # method is assumed to have been implemented.
600
+ #
601
+ # source://loofah//lib/loofah/scrubber.rb#49
602
+ def block; end
603
+
604
+ # When a scrubber is initialized, the :direction may be specified
605
+ # as :top_down (the default) or :bottom_up.
606
+ #
607
+ # source://loofah//lib/loofah/scrubber.rb#44
608
+ def direction; end
609
+
610
+ # When +new+ is not passed a block, the class may implement
611
+ # +scrub+, which will be called for each document node.
612
+ #
613
+ # @raise [ScrubberNotFound]
614
+ #
615
+ # source://loofah//lib/loofah/scrubber.rb#88
616
+ def scrub(node); end
617
+
618
+ # Calling +traverse+ will cause the document to be traversed by
619
+ # either the lambda passed to the initializer or the +scrub+
620
+ # method, in the direction specified at +new+ time.
621
+ #
622
+ # source://loofah//lib/loofah/scrubber.rb#80
623
+ def traverse(node); end
624
+
625
+ private
626
+
627
+ # source://loofah//lib/loofah/scrubber.rb#105
628
+ def html5lib_sanitize(node); end
629
+
630
+ # source://loofah//lib/loofah/scrubber.rb#131
631
+ def traverse_conditionally_bottom_up(node); end
632
+
633
+ # source://loofah//lib/loofah/scrubber.rb#122
634
+ def traverse_conditionally_top_down(node); end
635
+ end
636
+
637
+ # Top-down Scrubbers may return CONTINUE to indicate that the subtree should be traversed.
638
+ #
639
+ # source://loofah//lib/loofah/scrubber.rb#37
640
+ Loofah::Scrubber::CONTINUE = T.let(T.unsafe(nil), Object)
641
+
642
+ # Top-down Scrubbers may return STOP to indicate that the subtree should not be traversed.
643
+ #
644
+ # source://loofah//lib/loofah/scrubber.rb#40
645
+ Loofah::Scrubber::STOP = T.let(T.unsafe(nil), Object)
646
+
647
+ # A RuntimeError raised when Loofah could not find an appropriate scrubber.
648
+ #
649
+ # source://loofah//lib/loofah/scrubber.rb#7
650
+ class Loofah::ScrubberNotFound < ::RuntimeError; end
651
+
652
+ # Loofah provides some built-in scrubbers for sanitizing with
653
+ # HTML5lib's safelist and for accomplishing some common
654
+ # transformation tasks.
655
+ #
656
+ #
657
+ # === Loofah::Scrubbers::Strip / scrub!(:strip)
658
+ #
659
+ # +:strip+ removes unknown/unsafe tags, but leaves behind the pristine contents:
660
+ #
661
+ # unsafe_html = "ohai! <div>div is safe</div> <foo>but foo is <b>not</b></foo>"
662
+ # Loofah.html5_fragment(unsafe_html).scrub!(:strip)
663
+ # => "ohai! <div>div is safe</div> but foo is <b>not</b>"
664
+ #
665
+ #
666
+ # === Loofah::Scrubbers::Prune / scrub!(:prune)
667
+ #
668
+ # +:prune+ removes unknown/unsafe tags and their contents (including their subtrees):
669
+ #
670
+ # unsafe_html = "ohai! <div>div is safe</div> <foo>but foo is <b>not</b></foo>"
671
+ # Loofah.html5_fragment(unsafe_html).scrub!(:prune)
672
+ # => "ohai! <div>div is safe</div> "
673
+ #
674
+ #
675
+ # === Loofah::Scrubbers::Escape / scrub!(:escape)
676
+ #
677
+ # +:escape+ performs HTML entity escaping on the unknown/unsafe tags:
678
+ #
679
+ # unsafe_html = "ohai! <div>div is safe</div> <foo>but foo is <b>not</b></foo>"
680
+ # Loofah.html5_fragment(unsafe_html).scrub!(:escape)
681
+ # => "ohai! <div>div is safe</div> &lt;foo&gt;but foo is &lt;b&gt;not&lt;/b&gt;&lt;/foo&gt;"
682
+ #
683
+ #
684
+ # === Loofah::Scrubbers::Whitewash / scrub!(:whitewash)
685
+ #
686
+ # +:whitewash+ removes all comments, styling and attributes in
687
+ # addition to doing markup-fixer-uppery and pruning unsafe tags. I
688
+ # like to call this "whitewashing", since it's like putting a new
689
+ # layer of paint on top of the HTML input to make it look nice.
690
+ #
691
+ # messy_markup = "ohai! <div id='foo' class='bar' style='margin: 10px'>div with attributes</div>"
692
+ # Loofah.html5_fragment(messy_markup).scrub!(:whitewash)
693
+ # => "ohai! <div>div with attributes</div>"
694
+ #
695
+ # One use case for this scrubber is to clean up HTML that was
696
+ # cut-and-pasted from Microsoft Word into a WYSIWYG editor or a
697
+ # rich text editor. Microsoft's software is famous for injecting
698
+ # all kinds of cruft into its HTML output. Who needs that crap?
699
+ # Certainly not me.
700
+ #
701
+ #
702
+ # === Loofah::Scrubbers::NoFollow / scrub!(:nofollow)
703
+ #
704
+ # +:nofollow+ adds a rel="nofollow" attribute to all links
705
+ #
706
+ # link_farmers_markup = "ohai! <a href='http://www.myswarmysite.com/'>I like your blog post</a>"
707
+ # Loofah.html5_fragment(link_farmers_markup).scrub!(:nofollow)
708
+ # => "ohai! <a href='http://www.myswarmysite.com/' rel="nofollow">I like your blog post</a>"
709
+ #
710
+ #
711
+ # === Loofah::Scrubbers::TargetBlank / scrub!(:targetblank)
712
+ #
713
+ # +:targetblank+ adds a target="_blank" attribute to all links
714
+ #
715
+ # link_farmers_markup = "ohai! <a href='http://www.myswarmysite.com/'>I like your blog post</a>"
716
+ # Loofah.html5_fragment(link_farmers_markup).scrub!(:targetblank)
717
+ # => "ohai! <a href='http://www.myswarmysite.com/' target="_blank">I like your blog post</a>"
718
+ #
719
+ #
720
+ # === Loofah::Scrubbers::NoOpener / scrub!(:noopener)
721
+ #
722
+ # +:noopener+ adds a rel="noopener" attribute to all links
723
+ #
724
+ # link_farmers_markup = "ohai! <a href='http://www.myswarmysite.com/'>I like your blog post</a>"
725
+ # Loofah.html5_fragment(link_farmers_markup).scrub!(:noopener)
726
+ # => "ohai! <a href='http://www.myswarmysite.com/' rel="noopener">I like your blog post</a>"
727
+ #
728
+ # === Loofah::Scrubbers::NoReferrer / scrub!(:noreferrer)
729
+ #
730
+ # +:noreferrer+ adds a rel="noreferrer" attribute to all links
731
+ #
732
+ # link_farmers_markup = "ohai! <a href='http://www.myswarmysite.com/'>I like your blog post</a>"
733
+ # Loofah.html5_fragment(link_farmers_markup).scrub!(:noreferrer)
734
+ # => "ohai! <a href='http://www.myswarmysite.com/' rel="noreferrer">I like your blog post</a>"
735
+ #
736
+ #
737
+ # === Loofah::Scrubbers::Unprintable / scrub!(:unprintable)
738
+ #
739
+ # +:unprintable+ removes unprintable Unicode characters.
740
+ #
741
+ # markup = "<p>Some text with an unprintable character at the end\u2028</p>"
742
+ # Loofah.html5_fragment(markup).scrub!(:unprintable)
743
+ # => "<p>Some text with an unprintable character at the end</p>"
744
+ #
745
+ # You may not be able to see the unprintable character in the above example, but there is a
746
+ # U+2028 character right before the closing </p> tag. These characters can cause issues if
747
+ # the content is ever parsed by JavaScript - more information here:
748
+ #
749
+ # http://timelessrepo.com/json-isnt-a-javascript-subset
750
+ #
751
+ # source://loofah//lib/loofah/scrubbers.rb#104
752
+ module Loofah::Scrubbers
753
+ class << self
754
+ # Returns an array of symbols representing the built-in scrubbers
755
+ #
756
+ # source://loofah//lib/loofah/scrubbers.rb#371
757
+ def scrubber_symbols; end
758
+ end
759
+ end
760
+
761
+ # === scrub!(:escape)
762
+ #
763
+ # +:escape+ performs HTML entity escaping on the unknown/unsafe tags:
764
+ #
765
+ # unsafe_html = "ohai! <div>div is safe</div> <foo>but foo is <b>not</b></foo>"
766
+ # Loofah.html5_fragment(unsafe_html).scrub!(:escape)
767
+ # => "ohai! <div>div is safe</div> &lt;foo&gt;but foo is &lt;b&gt;not&lt;/b&gt;&lt;/foo&gt;"
768
+ #
769
+ # source://loofah//lib/loofah/scrubbers.rb#159
770
+ class Loofah::Scrubbers::Escape < ::Loofah::Scrubber
771
+ # @return [Escape] a new instance of Escape
772
+ #
773
+ # source://loofah//lib/loofah/scrubbers.rb#160
774
+ def initialize; end
775
+
776
+ # source://loofah//lib/loofah/scrubbers.rb#164
777
+ def scrub(node); end
778
+ end
779
+
780
+ # A hash that maps a symbol (like +:prune+) to the appropriate Scrubber (Loofah::Scrubbers::Prune).
781
+ #
782
+ # source://loofah//lib/loofah/scrubbers.rb#354
783
+ Loofah::Scrubbers::MAP = T.let(T.unsafe(nil), Hash)
784
+
785
+ # This class probably isn't useful publicly, but is used for #to_text's current implemention
786
+ #
787
+ # source://loofah//lib/loofah/scrubbers.rb#305
788
+ class Loofah::Scrubbers::NewlineBlockElements < ::Loofah::Scrubber
789
+ # @return [NewlineBlockElements] a new instance of NewlineBlockElements
790
+ #
791
+ # source://loofah//lib/loofah/scrubbers.rb#306
792
+ def initialize; end
793
+
794
+ # source://loofah//lib/loofah/scrubbers.rb#310
795
+ def scrub(node); end
796
+ end
797
+
798
+ # === scrub!(:nofollow)
799
+ #
800
+ # +:nofollow+ adds a rel="nofollow" attribute to all links
801
+ #
802
+ # link_farmers_markup = "ohai! <a href='http://www.myswarmysite.com/'>I like your blog post</a>"
803
+ # Loofah.html5_fragment(link_farmers_markup).scrub!(:nofollow)
804
+ # => "ohai! <a href='http://www.myswarmysite.com/' rel="nofollow">I like your blog post</a>"
805
+ #
806
+ # source://loofah//lib/loofah/scrubbers.rb#220
807
+ class Loofah::Scrubbers::NoFollow < ::Loofah::Scrubber
808
+ # @return [NoFollow] a new instance of NoFollow
809
+ #
810
+ # source://loofah//lib/loofah/scrubbers.rb#221
811
+ def initialize; end
812
+
813
+ # source://loofah//lib/loofah/scrubbers.rb#225
814
+ def scrub(node); end
815
+ end
816
+
817
+ # === scrub!(:noopener)
818
+ #
819
+ # +:noopener+ adds a rel="noopener" attribute to all links
820
+ #
821
+ # link_farmers_markup = "ohai! <a href='http://www.myswarmysite.com/'>I like your blog post</a>"
822
+ # Loofah.html5_fragment(link_farmers_markup).scrub!(:noopener)
823
+ # => "ohai! <a href='http://www.myswarmysite.com/' rel="noopener">I like your blog post</a>"
824
+ #
825
+ # source://loofah//lib/loofah/scrubbers.rb#269
826
+ class Loofah::Scrubbers::NoOpener < ::Loofah::Scrubber
827
+ # @return [NoOpener] a new instance of NoOpener
828
+ #
829
+ # source://loofah//lib/loofah/scrubbers.rb#270
830
+ def initialize; end
831
+
832
+ # source://loofah//lib/loofah/scrubbers.rb#274
833
+ def scrub(node); end
834
+ end
835
+
836
+ # === scrub!(:noreferrer)
837
+ #
838
+ # +:noreferrer+ adds a rel="noreferrer" attribute to all links
839
+ #
840
+ # link_farmers_markup = "ohai! <a href='http://www.myswarmysite.com/'>I like your blog post</a>"
841
+ # Loofah.html5_fragment(link_farmers_markup).scrub!(:noreferrer)
842
+ # => "ohai! <a href='http://www.myswarmysite.com/' rel="noreferrer">I like your blog post</a>"
843
+ #
844
+ # source://loofah//lib/loofah/scrubbers.rb#291
845
+ class Loofah::Scrubbers::NoReferrer < ::Loofah::Scrubber
846
+ # @return [NoReferrer] a new instance of NoReferrer
847
+ #
848
+ # source://loofah//lib/loofah/scrubbers.rb#292
849
+ def initialize; end
850
+
851
+ # source://loofah//lib/loofah/scrubbers.rb#296
852
+ def scrub(node); end
853
+ end
854
+
855
+ # === scrub!(:prune)
856
+ #
857
+ # +:prune+ removes unknown/unsafe tags and their contents (including their subtrees):
858
+ #
859
+ # unsafe_html = "ohai! <div>div is safe</div> <foo>but foo is <b>not</b></foo>"
860
+ # Loofah.html5_fragment(unsafe_html).scrub!(:prune)
861
+ # => "ohai! <div>div is safe</div> "
862
+ #
863
+ # source://loofah//lib/loofah/scrubbers.rb#137
864
+ class Loofah::Scrubbers::Prune < ::Loofah::Scrubber
865
+ # @return [Prune] a new instance of Prune
866
+ #
867
+ # source://loofah//lib/loofah/scrubbers.rb#138
868
+ def initialize; end
869
+
870
+ # source://loofah//lib/loofah/scrubbers.rb#142
871
+ def scrub(node); end
872
+ end
873
+
874
+ # === scrub!(:strip)
875
+ #
876
+ # +:strip+ removes unknown/unsafe tags, but leaves behind the pristine contents:
877
+ #
878
+ # unsafe_html = "ohai! <div>div is safe</div> <foo>but foo is <b>not</b></foo>"
879
+ # Loofah.html5_fragment(unsafe_html).scrub!(:strip)
880
+ # => "ohai! <div>div is safe</div> but foo is <b>not</b>"
881
+ #
882
+ # source://loofah//lib/loofah/scrubbers.rb#114
883
+ class Loofah::Scrubbers::Strip < ::Loofah::Scrubber
884
+ # @return [Strip] a new instance of Strip
885
+ #
886
+ # source://loofah//lib/loofah/scrubbers.rb#115
887
+ def initialize; end
888
+
889
+ # source://loofah//lib/loofah/scrubbers.rb#119
890
+ def scrub(node); end
891
+ end
892
+
893
+ # === scrub!(:targetblank)
894
+ #
895
+ # +:targetblank+ adds a target="_blank" attribute to all links.
896
+ # If there is a target already set, replaces it with target="_blank".
897
+ #
898
+ # link_farmers_markup = "ohai! <a href='http://www.myswarmysite.com/'>I like your blog post</a>"
899
+ # Loofah.html5_fragment(link_farmers_markup).scrub!(:targetblank)
900
+ # => "ohai! <a href='http://www.myswarmysite.com/' target="_blank">I like your blog post</a>"
901
+ #
902
+ # On modern browsers, setting target="_blank" on anchor elements implicitly provides the same
903
+ # behavior as setting rel="noopener".
904
+ #
905
+ # source://loofah//lib/loofah/scrubbers.rb#246
906
+ class Loofah::Scrubbers::TargetBlank < ::Loofah::Scrubber
907
+ # @return [TargetBlank] a new instance of TargetBlank
908
+ #
909
+ # source://loofah//lib/loofah/scrubbers.rb#247
910
+ def initialize; end
911
+
912
+ # source://loofah//lib/loofah/scrubbers.rb#251
913
+ def scrub(node); end
914
+ end
915
+
916
+ # === scrub!(:unprintable)
917
+ #
918
+ # +:unprintable+ removes unprintable Unicode characters.
919
+ #
920
+ # markup = "<p>Some text with an unprintable character at the end\u2028</p>"
921
+ # Loofah.html5_fragment(markup).scrub!(:unprintable)
922
+ # => "<p>Some text with an unprintable character at the end</p>"
923
+ #
924
+ # You may not be able to see the unprintable character in the above example, but there is a
925
+ # U+2028 character right before the closing </p> tag. These characters can cause issues if
926
+ # the content is ever parsed by JavaScript - more information here:
927
+ #
928
+ # http://timelessrepo.com/json-isnt-a-javascript-subset
929
+ #
930
+ # source://loofah//lib/loofah/scrubbers.rb#338
931
+ class Loofah::Scrubbers::Unprintable < ::Loofah::Scrubber
932
+ # @return [Unprintable] a new instance of Unprintable
933
+ #
934
+ # source://loofah//lib/loofah/scrubbers.rb#339
935
+ def initialize; end
936
+
937
+ # source://loofah//lib/loofah/scrubbers.rb#343
938
+ def scrub(node); end
939
+ end
940
+
941
+ # === scrub!(:whitewash)
942
+ #
943
+ # +:whitewash+ removes all comments, styling and attributes in
944
+ # addition to doing markup-fixer-uppery and pruning unsafe tags. I
945
+ # like to call this "whitewashing", since it's like putting a new
946
+ # layer of paint on top of the HTML input to make it look nice.
947
+ #
948
+ # messy_markup = "ohai! <div id='foo' class='bar' style='margin: 10px'>div with attributes</div>"
949
+ # Loofah.html5_fragment(messy_markup).scrub!(:whitewash)
950
+ # => "ohai! <div>div with attributes</div>"
951
+ #
952
+ # One use case for this scrubber is to clean up HTML that was
953
+ # cut-and-pasted from Microsoft Word into a WYSIWYG editor or a
954
+ # rich text editor. Microsoft's software is famous for injecting
955
+ # all kinds of cruft into its HTML output. Who needs that crap?
956
+ # Certainly not me.
957
+ #
958
+ # source://loofah//lib/loofah/scrubbers.rb#191
959
+ class Loofah::Scrubbers::Whitewash < ::Loofah::Scrubber
960
+ # @return [Whitewash] a new instance of Whitewash
961
+ #
962
+ # source://loofah//lib/loofah/scrubbers.rb#192
963
+ def initialize; end
964
+
965
+ # source://loofah//lib/loofah/scrubbers.rb#196
966
+ def scrub(node); end
967
+ end
968
+
969
+ # Overrides +text+ in Document and DocumentFragment classes, and mixes in +to_text+.
970
+ #
971
+ # source://loofah//lib/loofah/concerns.rb#73
972
+ module Loofah::TextBehavior
973
+ # Returns a plain-text version of the markup contained by the document, with HTML entities
974
+ # encoded.
975
+ #
976
+ # This method is significantly faster than #to_text, but isn't clever about whitespace around
977
+ # block elements.
978
+ #
979
+ # Loofah.html5_document("<h1>Title</h1><div>Content</div>").text
980
+ # # => "TitleContent"
981
+ #
982
+ # By default, the returned text will have HTML entities escaped. If you want unescaped
983
+ # entities, and you understand that the result is unsafe to render in a browser, then you can
984
+ # pass an argument as shown:
985
+ #
986
+ # frag = Loofah.html5_fragment("&lt;script&gt;alert('EVIL');&lt;/script&gt;")
987
+ # # ok for browser:
988
+ # frag.text # => "&lt;script&gt;alert('EVIL');&lt;/script&gt;"
989
+ # # decidedly not ok for browser:
990
+ # frag.text(:encode_special_chars => false) # => "<script>alert('EVIL');</script>"
991
+ #
992
+ # source://loofah//lib/loofah/concerns.rb#94
993
+ def inner_text(options = T.unsafe(nil)); end
994
+
995
+ # Returns a plain-text version of the markup contained by the document, with HTML entities
996
+ # encoded.
997
+ #
998
+ # This method is significantly faster than #to_text, but isn't clever about whitespace around
999
+ # block elements.
1000
+ #
1001
+ # Loofah.html5_document("<h1>Title</h1><div>Content</div>").text
1002
+ # # => "TitleContent"
1003
+ #
1004
+ # By default, the returned text will have HTML entities escaped. If you want unescaped
1005
+ # entities, and you understand that the result is unsafe to render in a browser, then you can
1006
+ # pass an argument as shown:
1007
+ #
1008
+ # frag = Loofah.html5_fragment("&lt;script&gt;alert('EVIL');&lt;/script&gt;")
1009
+ # # ok for browser:
1010
+ # frag.text # => "&lt;script&gt;alert('EVIL');&lt;/script&gt;"
1011
+ # # decidedly not ok for browser:
1012
+ # frag.text(:encode_special_chars => false) # => "<script>alert('EVIL');</script>"
1013
+ #
1014
+ # source://loofah//lib/loofah/concerns.rb#94
1015
+ def text(options = T.unsafe(nil)); end
1016
+
1017
+ # Returns a plain-text version of the markup contained by the document, with HTML entities
1018
+ # encoded.
1019
+ #
1020
+ # This method is significantly faster than #to_text, but isn't clever about whitespace around
1021
+ # block elements.
1022
+ #
1023
+ # Loofah.html5_document("<h1>Title</h1><div>Content</div>").text
1024
+ # # => "TitleContent"
1025
+ #
1026
+ # By default, the returned text will have HTML entities escaped. If you want unescaped
1027
+ # entities, and you understand that the result is unsafe to render in a browser, then you can
1028
+ # pass an argument as shown:
1029
+ #
1030
+ # frag = Loofah.html5_fragment("&lt;script&gt;alert('EVIL');&lt;/script&gt;")
1031
+ # # ok for browser:
1032
+ # frag.text # => "&lt;script&gt;alert('EVIL');&lt;/script&gt;"
1033
+ # # decidedly not ok for browser:
1034
+ # frag.text(:encode_special_chars => false) # => "<script>alert('EVIL');</script>"
1035
+ #
1036
+ # source://loofah//lib/loofah/concerns.rb#94
1037
+ def to_str(options = T.unsafe(nil)); end
1038
+
1039
+ # Returns a plain-text version of the markup contained by the fragment, with HTML entities
1040
+ # encoded.
1041
+ #
1042
+ # This method is slower than #text, but is clever about whitespace around block elements and
1043
+ # line break elements.
1044
+ #
1045
+ # Loofah.html5_document("<h1>Title</h1><div>Content<br>Next line</div>").to_text
1046
+ # # => "\nTitle\n\nContent\nNext line\n"
1047
+ #
1048
+ # source://loofah//lib/loofah/concerns.rb#120
1049
+ def to_text(options = T.unsafe(nil)); end
1050
+ end
1051
+
1052
+ # The version of Loofah you are using
1053
+ #
1054
+ # source://loofah//lib/loofah/version.rb#5
1055
+ Loofah::VERSION = T.let(T.unsafe(nil), String)
1056
+
1057
+ # source://loofah//lib/loofah/xml/document.rb#4
1058
+ module Loofah::XML; end
1059
+
1060
+ # Subclass of Nokogiri::XML::Document.
1061
+ #
1062
+ # See Loofah::ScrubBehavior and Loofah::DocumentDecorator for additional methods.
1063
+ #
1064
+ # source://loofah//lib/loofah/xml/document.rb#10
1065
+ class Loofah::XML::Document < ::Nokogiri::XML::Document
1066
+ include ::Loofah::ScrubBehavior::Node
1067
+ include ::Loofah::DocumentDecorator
1068
+ end
1069
+
1070
+ # Subclass of Nokogiri::XML::DocumentFragment.
1071
+ #
1072
+ # See Loofah::ScrubBehavior for additional methods.
1073
+ #
1074
+ # source://loofah//lib/loofah/xml/document_fragment.rb#10
1075
+ class Loofah::XML::DocumentFragment < ::Nokogiri::XML::DocumentFragment
1076
+ class << self
1077
+ # source://loofah//lib/loofah/xml/document_fragment.rb#12
1078
+ def parse(tags); end
1079
+ end
1080
+ end