loofah 2.5.0 → 2.18.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of loofah might be problematic. Click here for more details.

metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loofah
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalessio
@@ -9,22 +9,8 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-04-05 00:00:00.000000000 Z
12
+ date: 2022-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: nokogiri
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: 1.5.9
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: 1.5.9
28
14
  - !ruby/object:Gem::Dependency
29
15
  name: crass
30
16
  requirement: !ruby/object:Gem::Requirement
@@ -40,148 +26,88 @@ dependencies:
40
26
  - !ruby/object:Gem::Version
41
27
  version: 1.0.2
42
28
  - !ruby/object:Gem::Dependency
43
- name: rake
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: '12.3'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: '12.3'
56
- - !ruby/object:Gem::Dependency
57
- name: minitest
29
+ name: nokogiri
58
30
  requirement: !ruby/object:Gem::Requirement
59
31
  requirements:
60
- - - "~>"
32
+ - - ">="
61
33
  - !ruby/object:Gem::Version
62
- version: '2.2'
63
- type: :development
34
+ version: 1.5.9
35
+ type: :runtime
64
36
  prerelease: false
65
37
  version_requirements: !ruby/object:Gem::Requirement
66
38
  requirements:
67
- - - "~>"
39
+ - - ">="
68
40
  - !ruby/object:Gem::Version
69
- version: '2.2'
41
+ version: 1.5.9
70
42
  - !ruby/object:Gem::Dependency
71
- name: rr
43
+ name: hoe-markdown
72
44
  requirement: !ruby/object:Gem::Requirement
73
45
  requirements:
74
46
  - - "~>"
75
47
  - !ruby/object:Gem::Version
76
- version: 1.2.0
48
+ version: '1.3'
77
49
  type: :development
78
50
  prerelease: false
79
51
  version_requirements: !ruby/object:Gem::Requirement
80
52
  requirements:
81
53
  - - "~>"
82
54
  - !ruby/object:Gem::Version
83
- version: 1.2.0
55
+ version: '1.3'
84
56
  - !ruby/object:Gem::Dependency
85
57
  name: json
86
58
  requirement: !ruby/object:Gem::Requirement
87
59
  requirements:
88
60
  - - "~>"
89
61
  - !ruby/object:Gem::Version
90
- version: 2.2.0
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: 2.2.0
98
- - !ruby/object:Gem::Dependency
99
- name: hoe-gemspec
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '1.0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '1.0'
112
- - !ruby/object:Gem::Dependency
113
- name: hoe-debugging
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '2.0'
62
+ version: '2.2'
119
63
  type: :development
120
64
  prerelease: false
121
65
  version_requirements: !ruby/object:Gem::Requirement
122
66
  requirements:
123
67
  - - "~>"
124
68
  - !ruby/object:Gem::Version
125
- version: '2.0'
69
+ version: '2.2'
126
70
  - !ruby/object:Gem::Dependency
127
- name: hoe-bundler
71
+ name: minitest
128
72
  requirement: !ruby/object:Gem::Requirement
129
73
  requirements:
130
74
  - - "~>"
131
75
  - !ruby/object:Gem::Version
132
- version: '1.5'
76
+ version: '5.14'
133
77
  type: :development
134
78
  prerelease: false
135
79
  version_requirements: !ruby/object:Gem::Requirement
136
80
  requirements:
137
81
  - - "~>"
138
82
  - !ruby/object:Gem::Version
139
- version: '1.5'
83
+ version: '5.14'
140
84
  - !ruby/object:Gem::Dependency
141
- name: hoe-git
85
+ name: rake
142
86
  requirement: !ruby/object:Gem::Requirement
143
87
  requirements:
144
88
  - - "~>"
145
89
  - !ruby/object:Gem::Version
146
- version: '1.6'
90
+ version: '13.0'
147
91
  type: :development
148
92
  prerelease: false
149
93
  version_requirements: !ruby/object:Gem::Requirement
150
94
  requirements:
151
95
  - - "~>"
152
96
  - !ruby/object:Gem::Version
153
- version: '1.6'
97
+ version: '13.0'
154
98
  - !ruby/object:Gem::Dependency
155
- name: concourse
99
+ name: rdoc
156
100
  requirement: !ruby/object:Gem::Requirement
157
101
  requirements:
158
102
  - - ">="
159
103
  - !ruby/object:Gem::Version
160
- version: 0.26.0
161
- type: :development
162
- prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: 0.26.0
168
- - !ruby/object:Gem::Dependency
169
- name: rubocop
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
104
+ version: '4.0'
105
+ - - "<"
173
106
  - !ruby/object:Gem::Version
174
- version: 0.76.0
107
+ version: '7'
175
108
  type: :development
176
109
  prerelease: false
177
110
  version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: 0.76.0
182
- - !ruby/object:Gem::Dependency
183
- name: rdoc
184
- requirement: !ruby/object:Gem::Requirement
185
111
  requirements:
186
112
  - - ">="
187
113
  - !ruby/object:Gem::Version
@@ -189,30 +115,34 @@ dependencies:
189
115
  - - "<"
190
116
  - !ruby/object:Gem::Version
191
117
  version: '7'
118
+ - !ruby/object:Gem::Dependency
119
+ name: rr
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.2.0
192
125
  type: :development
193
126
  prerelease: false
194
127
  version_requirements: !ruby/object:Gem::Requirement
195
128
  requirements:
196
- - - ">="
197
- - !ruby/object:Gem::Version
198
- version: '4.0'
199
- - - "<"
129
+ - - "~>"
200
130
  - !ruby/object:Gem::Version
201
- version: '7'
131
+ version: 1.2.0
202
132
  - !ruby/object:Gem::Dependency
203
- name: hoe
133
+ name: rubocop
204
134
  requirement: !ruby/object:Gem::Requirement
205
135
  requirements:
206
136
  - - "~>"
207
137
  - !ruby/object:Gem::Version
208
- version: '3.22'
138
+ version: '1.1'
209
139
  type: :development
210
140
  prerelease: false
211
141
  version_requirements: !ruby/object:Gem::Requirement
212
142
  requirements:
213
143
  - - "~>"
214
144
  - !ruby/object:Gem::Version
215
- version: '3.22'
145
+ version: '1.1'
216
146
  description: |-
217
147
  Loofah is a general library for manipulating and transforming HTML/XML documents and fragments, built on top of Nokogiri.
218
148
 
@@ -224,24 +154,12 @@ email:
224
154
  - bryan@brynary.com
225
155
  executables: []
226
156
  extensions: []
227
- extra_rdoc_files:
228
- - CHANGELOG.md
229
- - MIT-LICENSE.txt
230
- - Manifest.txt
231
- - README.md
232
- - SECURITY.md
157
+ extra_rdoc_files: []
233
158
  files:
234
159
  - CHANGELOG.md
235
- - Gemfile
236
160
  - MIT-LICENSE.txt
237
- - Manifest.txt
238
161
  - README.md
239
- - Rakefile
240
162
  - SECURITY.md
241
- - benchmark/benchmark.rb
242
- - benchmark/fragment.html
243
- - benchmark/helper.rb
244
- - benchmark/www.slashdot.com.html
245
163
  - lib/loofah.rb
246
164
  - lib/loofah/elements.rb
247
165
  - lib/loofah/helpers.rb
@@ -254,6 +172,7 @@ files:
254
172
  - lib/loofah/metahelpers.rb
255
173
  - lib/loofah/scrubber.rb
256
174
  - lib/loofah/scrubbers.rb
175
+ - lib/loofah/version.rb
257
176
  - lib/loofah/xml/document.rb
258
177
  - lib/loofah/xml/document_fragment.rb
259
178
  homepage: https://github.com/flavorjones/loofah
@@ -261,14 +180,12 @@ licenses:
261
180
  - MIT
262
181
  metadata:
263
182
  homepage_uri: https://github.com/flavorjones/loofah
183
+ source_code_uri: https://github.com/flavorjones/loofah
264
184
  bug_tracker_uri: https://github.com/flavorjones/loofah/issues
185
+ changelog_uri: https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md
265
186
  documentation_uri: https://www.rubydoc.info/gems/loofah/
266
- changelog_uri: https://github.com/flavorjones/loofah/master/CHANGELOG.md
267
- source_code_uri: https://github.com/flavorjones/loofah
268
187
  post_install_message:
269
- rdoc_options:
270
- - "--main"
271
- - README.md
188
+ rdoc_options: []
272
189
  require_paths:
273
190
  - lib
274
191
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -282,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
199
  - !ruby/object:Gem::Version
283
200
  version: '0'
284
201
  requirements: []
285
- rubygems_version: 3.1.2
202
+ rubygems_version: 3.3.5
286
203
  signing_key:
287
204
  specification_version: 4
288
205
  summary: Loofah is a general library for manipulating and transforming HTML/XML documents
data/Gemfile DELETED
@@ -1,23 +0,0 @@
1
- # -*- ruby -*-
2
-
3
- # DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake bundler:gemfile`.
4
-
5
- source "https://rubygems.org/"
6
-
7
- gem "nokogiri", ">=1.5.9"
8
- gem "crass", "~>1.0.2"
9
-
10
- gem "rake", "~>12.3", :group => [:development, :test]
11
- gem "minitest", "~>2.2", :group => [:development, :test]
12
- gem "rr", "~>1.2.0", :group => [:development, :test]
13
- gem "json", "~>2.2.0", :group => [:development, :test]
14
- gem "hoe-gemspec", "~>1.0", :group => [:development, :test]
15
- gem "hoe-debugging", "~>2.0", :group => [:development, :test]
16
- gem "hoe-bundler", "~>1.5", :group => [:development, :test]
17
- gem "hoe-git", "~>1.6", :group => [:development, :test]
18
- gem "concourse", ">=0.26.0", :group => [:development, :test]
19
- gem "rubocop", ">=0.76.0", :group => [:development, :test]
20
- gem "rdoc", ">=4.0", "<7", :group => [:development, :test]
21
- gem "hoe", "~>3.20", :group => [:development, :test]
22
-
23
- # vim: syntax=ruby
data/Manifest.txt DELETED
@@ -1,25 +0,0 @@
1
- CHANGELOG.md
2
- Gemfile
3
- MIT-LICENSE.txt
4
- Manifest.txt
5
- README.md
6
- Rakefile
7
- SECURITY.md
8
- benchmark/benchmark.rb
9
- benchmark/fragment.html
10
- benchmark/helper.rb
11
- benchmark/www.slashdot.com.html
12
- lib/loofah.rb
13
- lib/loofah/elements.rb
14
- lib/loofah/helpers.rb
15
- lib/loofah/html/document.rb
16
- lib/loofah/html/document_fragment.rb
17
- lib/loofah/html5/libxml2_workarounds.rb
18
- lib/loofah/html5/safelist.rb
19
- lib/loofah/html5/scrub.rb
20
- lib/loofah/instance_methods.rb
21
- lib/loofah/metahelpers.rb
22
- lib/loofah/scrubber.rb
23
- lib/loofah/scrubbers.rb
24
- lib/loofah/xml/document.rb
25
- lib/loofah/xml/document_fragment.rb
data/Rakefile DELETED
@@ -1,97 +0,0 @@
1
- require "rubygems"
2
- require "hoe"
3
- require "concourse"
4
-
5
- Hoe.plugin :git
6
- Hoe.plugin :gemspec
7
- Hoe.plugin :bundler
8
- Hoe.plugin :debugging
9
-
10
- Hoe.spec "loofah" do
11
- developer "Mike Dalessio", "mike.dalessio@gmail.com"
12
- developer "Bryan Helmkamp", "bryan@brynary.com"
13
-
14
- self.history_file = "CHANGELOG.md"
15
- self.readme_file = "README.md"
16
- self.license "MIT"
17
- self.urls = {
18
- "home" => "https://github.com/flavorjones/loofah",
19
- "bugs" => "https://github.com/flavorjones/loofah/issues",
20
- "doco" => "https://www.rubydoc.info/gems/loofah/",
21
- "clog" => "https://github.com/flavorjones/loofah/master/CHANGELOG.md",
22
- "code" => "https://github.com/flavorjones/loofah",
23
- }
24
-
25
- extra_deps << ["nokogiri", ">=1.5.9"]
26
- extra_deps << ["crass", "~> 1.0.2"]
27
-
28
- extra_dev_deps << ["rake", "~> 12.3"]
29
- extra_dev_deps << ["minitest", "~>2.2"]
30
- extra_dev_deps << ["rr", "~>1.2.0"]
31
- extra_dev_deps << ["json", "~> 2.2.0"]
32
- extra_dev_deps << ["hoe-gemspec", "~> 1.0"]
33
- extra_dev_deps << ["hoe-debugging", "~> 2.0"]
34
- extra_dev_deps << ["hoe-bundler", "~> 1.5"]
35
- extra_dev_deps << ["hoe-git", "~> 1.6"]
36
- extra_dev_deps << ["concourse", ">=0.26.0"]
37
- extra_dev_deps << ["rubocop", ">=0.76.0"]
38
- end
39
-
40
- task :gemspec do
41
- system %q(rake debug_gem | grep -v "^\(in " > loofah.gemspec)
42
- end
43
-
44
- task :redocs => :fix_css
45
- task :docs => :fix_css
46
- task :fix_css do
47
- better_css = <<-EOT
48
- .method-description pre {
49
- margin : 1em 0 ;
50
- }
51
-
52
- .method-description ul {
53
- padding : .5em 0 .5em 2em ;
54
- }
55
-
56
- .method-description p {
57
- margin-top : .5em ;
58
- }
59
-
60
- #main ul, div#documentation ul {
61
- list-style-type : disc ! IMPORTANT ;
62
- list-style-position : inside ! IMPORTANT ;
63
- }
64
-
65
- h2 + ul {
66
- margin-top : 1em;
67
- }
68
- EOT
69
- puts "* fixing css"
70
- File.open("doc/rdoc.css", "a") { |f| f.write better_css }
71
- end
72
-
73
- desc "generate and upload docs to rubyforge"
74
- task :doc_upload_to_rubyforge => :docs do
75
- Dir.chdir "doc" do
76
- system "rsync -avz --delete * rubyforge.org:/var/www/gforge-projects/loofah/loofah"
77
- end
78
- end
79
-
80
- desc "generate safelists from W3C specifications"
81
- task :generate_safelists do
82
- load "tasks/generate-safelists"
83
- end
84
-
85
- task :rubocop => [:rubocop_security, :rubocop_frozen_string_literals]
86
- task :rubocop_security do
87
- sh "rubocop lib --only Security"
88
- end
89
- task :rubocop_frozen_string_literals do
90
- sh "rubocop lib --auto-correct --only Style/FrozenStringLiteralComment"
91
- end
92
- Rake::Task[:test].prerequisites << :rubocop
93
-
94
- Concourse.new("loofah", fly_target: "ci") do |c|
95
- c.add_pipeline "loofah", "loofah.yml"
96
- c.add_pipeline "loofah-pr", "loofah-pr.yml"
97
- end
@@ -1,154 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require "#{File.dirname(__FILE__)}/helper.rb"
3
-
4
- def compare_scrub_methods
5
- snip = "<div>foo</div><foo>fuxx <b>quux</b></foo><script>i have a chair</script>"
6
- puts "starting with:\n#{snip}"
7
- puts
8
- puts RailsSanitize.new.sanitize(snip) # => Rails.sanitize / scrub!(:prune).to_s
9
- puts Loofah::Helpers.sanitize(snip)
10
- puts "--"
11
- puts RailsSanitize.new.strip_tags(snip) # => Rails.strip_tags / parse().text
12
- puts Loofah::Helpers.strip_tags(snip)
13
- puts "--"
14
- puts Sanitize.clean(snip, Sanitize::Config::RELAXED) # => scrub!(:strip).to_s
15
- puts Loofah.scrub_fragment(snip, :strip).to_s
16
- puts "--"
17
- puts HTML5libSanitize.new.sanitize(snip) # => scrub!(:escape).to_s
18
- puts Loofah.scrub_fragment(snip, :escape).to_s
19
- puts "--"
20
- puts HTMLFilter.new.filter(snip)
21
- puts Loofah.scrub_fragment(snip, :strip).to_s
22
- puts
23
- end
24
-
25
- module TestSet
26
- def test_set(options = {})
27
- scale = options[:rehearse] ? 10 : 1
28
- puts self.class.name
29
-
30
- n = 100 / scale
31
- puts " Large document, #{BIG_FILE.length} bytes (x#{n})"
32
- bench BIG_FILE, n, false
33
- puts
34
-
35
- n = 1000 / scale
36
- puts " Small fragment, #{FRAGMENT.length} bytes (x#{n})"
37
- bench FRAGMENT, n, true
38
- puts
39
-
40
- n = 10_000 / scale
41
- puts " Text snippet, #{SNIPPET.length} bytes (x#{n})"
42
- bench SNIPPET, n, true
43
- puts
44
- end
45
- end
46
-
47
- class HeadToHead < Measure
48
- end
49
-
50
- class HeadToHeadRailsSanitize < Measure
51
- include TestSet
52
-
53
- def bench(content, ntimes, fragment_p)
54
- clear_measure
55
-
56
- measure "Loofah::Helpers.sanitize", ntimes do
57
- Loofah::Helpers.sanitize content
58
- end
59
-
60
- sanitizer = RailsSanitize.new
61
- measure "ActionView sanitize", ntimes do
62
- sanitizer.sanitize(content)
63
- end
64
- end
65
- end
66
-
67
- class HeadToHeadRailsStripTags < Measure
68
- include TestSet
69
-
70
- def bench(content, ntimes, fragment_p)
71
- clear_measure
72
-
73
- measure "Loofah::Helpers.strip_tags", ntimes do
74
- Loofah::Helpers.strip_tags content
75
- end
76
-
77
- sanitizer = RailsSanitize.new
78
- measure "ActionView strip_tags", ntimes do
79
- sanitizer.strip_tags(content)
80
- end
81
- end
82
- end
83
-
84
- class HeadToHeadSanitizerSanitize < Measure
85
- include TestSet
86
-
87
- def bench(content, ntimes, fragment_p)
88
- clear_measure
89
-
90
- measure "Loofah :strip", ntimes do
91
- if fragment_p
92
- Loofah.scrub_fragment(content, :strip).to_s
93
- else
94
- Loofah.scrub_document(content, :strip).to_s
95
- end
96
- end
97
-
98
- measure "Sanitize.clean", ntimes do
99
- Sanitize.clean(content, Sanitize::Config::RELAXED)
100
- end
101
- end
102
- end
103
-
104
- class HeadToHeadHtml5LibSanitize < Measure
105
- include TestSet
106
-
107
- def bench(content, ntimes, fragment_p)
108
- clear_measure
109
-
110
- measure "Loofah :escape", ntimes do
111
- if fragment_p
112
- Loofah.scrub_fragment(content, :escape).to_s
113
- else
114
- Loofah.scrub_document(content, :escape).to_s
115
- end
116
- end
117
-
118
- html5_sanitizer = HTML5libSanitize.new
119
- measure "HTML5lib.sanitize", ntimes do
120
- html5_sanitizer.sanitize(content)
121
- end
122
- end
123
- end
124
-
125
- class HeadToHeadHTMLFilter < Measure
126
- include TestSet
127
-
128
- def bench(content, ntimes, fragment_p)
129
- clear_measure
130
-
131
- measure "Loofah::Helpers.sanitize", ntimes do
132
- Loofah::Helpers.sanitize content
133
- end
134
-
135
- sanitizer = HTMLFilter.new
136
- measure "HTMLFilter.filter", ntimes do
137
- sanitizer.filter(content)
138
- end
139
- end
140
- end
141
-
142
- puts "Nokogiri version: #{Nokogiri::VERSION_INFO.inspect}"
143
- puts "Loofah version: #{Loofah::VERSION.inspect}"
144
-
145
- benches = []
146
- benches << HeadToHeadRailsSanitize.new
147
- benches << HeadToHeadRailsStripTags.new
148
- benches << HeadToHeadSanitizerSanitize.new
149
- benches << HeadToHeadHtml5LibSanitize.new
150
- benches << HeadToHeadHTMLFilter.new
151
- puts "---------- rehearsal ----------"
152
- benches.each { |bench| bench.test_set :rehearse => true }
153
- puts "---------- realsies ----------"
154
- benches.each { |bench| bench.test_set }
@@ -1,96 +0,0 @@
1
- <div id="top_parent"></div>
2
-
3
- <div id="jump">
4
- <a href="#main-articles">Stories</a>
5
- <br>
6
- <a href="#blocks">Slash Boxes</a>
7
- <br>
8
- <a href="#comments">Comments</a>
9
- </div>
10
- <a name="topothepage"></a>
11
- <div id="doc3" class="yui-t6 index2 mainpage ac ">
12
- <div id="hd" >
13
- <div id="logo" >
14
-
15
-
16
-
17
- <h1><a href="//slashdot.org"><span>Slashdot</span></a></h1>
18
- <div id="slogan"><h2>News for nerds, stuff that matters</h2></div>
19
- </div>
20
- <a href="#articles" class="hidden">Jump to articles</a>
21
- <div class="nav">
22
- <ul>
23
-
24
-
25
-
26
- <li><a href="//slashdot.org/submit.pl" title="Submit a story to Slashdot">Submit Story</a></li>
27
- <li><a href="//slashdot.org/help" title="Frequently asked questions on Slashdot">Help</a></li>
28
- <li><a href="//slashdot.org/login.pl" onclick="show_login_box(); return false;">Log In</a></li>
29
-
30
- </ul>
31
- </div>
32
-
33
-
34
-
35
-
36
-
37
- <div id="fh_picker_search" style="display: block;">
38
- <form method="get" action="//slashdot.org/index2.pl">
39
- <fieldset class="mode-filter mode-anon">
40
- <legend>Search</legend>
41
-
42
-
43
- <input class="query" type="text" name="fhfilter" value="" id="searchquery"> <input type="button" class="setfhfilter" value="Filter" id="viewsearch" style="display:none"> <input type="submit" class="setsearchfilter" value="Search" id="fhsearch" style="display:none">
44
- <noscript><input type="submit" class="setsearchfilter" value="Search"></noscript>
45
-
46
- <script type="text/javascript">
47
- var slash_search;
48
- $(function(){
49
- if (has_hose()) {
50
- var $search_text = $any('searchquery'),
51
- $panel = $search_text.closest('fieldset');
52
- $search_buttons = $('#viewsearch,#fhsearch'),
53
- ws = /\s+/;
54
-
55
-
56
-
57
- // The search buttons set the firehose option named by their class.
58
- $search_buttons.
59
- click(function(){
60
- var which=this.className;
61
- $search_text.each(function(){
62
- firehose_set_options(which, this.value);
63
- });
64
- return false;
65
- });
66
-
67
- // Provide a globally available function that does whatever clicking the search button would do.
68
- slash_search = function( query ){
69
- query!==undefined && $search_text.val(query);
70
- $search_buttons.filter(':visible:first').click();
71
- };
72
-
73
- $search_text.
74
- keydown(function( e ){ // ESCAPE restores the filter in-effect.
75
- if ( e.which == $.ui.keyCode.ESCAPE ) {
76
- $search_text.val(firehose_settings.fhfilter||'');
77
- return true;
78
- }
79
- if ( e.which == $.ui.keyCode.ENTER ) {
80
- slash_search();
81
- return false;
82
- }
83
- });
84
-
85
- $(document).
86
- bind('firehose-setting-setfhfilter firehose-setting-setsearchfilter', function( e, new_query ){
87
- $('fieldset input[type=text]').each(function(){
88
- $(this).blur().val(new_query);
89
- });
90
- }).
91
- bind('set-options.firehose', function( e, data ){
92
- data.select_section && $panel.toggleClass('mode-filter', data.id!=='unsaved');
93
- });
94
- }
95
- });
96
- </script>