jquery-cheat 0.1.2 → 0.2.0
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.
- data/History.txt +6 -1
- data/Manifest.txt +2 -0
- data/README.txt +58 -0
- data/bin/jcheat +67 -89
- data/lib/jquery-cheat.rb +113 -0
- data/lib/jquery-cheat/version.rb +2 -2
- data/lib/merger.rb +27 -0
- data/test/test_jquery-cheat.rb +83 -2
- data/website/index.html +49 -15
- data/website/index.txt +34 -13
- metadata +3 -1
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/README.txt
CHANGED
@@ -1,3 +1,61 @@
|
|
1
1
|
README for jquery-cheat
|
2
2
|
=======================
|
3
3
|
|
4
|
+
jQuery Cheat provides a command-line interface to the jQuery API.
|
5
|
+
|
6
|
+
== Usage
|
7
|
+
|
8
|
+
jcheat COMMAND [COMMAND_PREFS] [--name NAME [--precise]]
|
9
|
+
[--module MODULE [--recursive]] [--like STRING]
|
10
|
+
[--params PARAM1[,PARAM2...]] [--no-examples]
|
11
|
+
|
12
|
+
(describe|desc) METHOD_NAME [PARAM1, ...]
|
13
|
+
> the full description of each method matching METHOD_NAME.
|
14
|
+
> If you also pass optional PARAMs, the list of matching
|
15
|
+
> methods will be filtered to include only methods with those
|
16
|
+
> parameters.
|
17
|
+
>
|
18
|
+
> --no-examples(-e) suppresses examples from the output
|
19
|
+
>
|
20
|
+
> Example: "jcheat desc $ html" will return the description
|
21
|
+
> of the $ method with an "html" parameter.
|
22
|
+
|
23
|
+
* list MODULE_NAME
|
24
|
+
> A list of all methods directly under a specific module. Passing
|
25
|
+
> an optional "-r" will return a list of all methods at any level
|
26
|
+
> under the module.
|
27
|
+
>
|
28
|
+
> Example: "jcheat list DOM/Traversing"
|
29
|
+
|
30
|
+
* (apopros|ap|like) STRING
|
31
|
+
> A list of all methods whose description contains all of the
|
32
|
+
> words in STRING.
|
33
|
+
>
|
34
|
+
> Example: "jcheat like clear fields"
|
35
|
+
|
36
|
+
* named STRING
|
37
|
+
> A list of all methods named exactly STRING.
|
38
|
+
>
|
39
|
+
> Example: "jcheat named $"
|
40
|
+
|
41
|
+
* (namelike|nl) STRING
|
42
|
+
> A list of all methods whose names contain STRING.
|
43
|
+
>
|
44
|
+
> Example: "jcheat nl clear"
|
45
|
+
|
46
|
+
FILTERS
|
47
|
+
-------
|
48
|
+
|
49
|
+
[--name(-n) NAME [--substrings(-s)]] filters methods by their name.
|
50
|
+
Adding the --precise flag will allow a substring match.
|
51
|
+
|
52
|
+
[--module(-m) MODULE [--recursive(-r)]] filters methods by the
|
53
|
+
module they are in. Adding the --recursive flag will check
|
54
|
+
submodules (ex: -m DOM -r will search for methods in DOM,
|
55
|
+
DOM/Traversal, etc.)
|
56
|
+
|
57
|
+
[--like(-l) STRING] filters methods by words in their description.
|
58
|
+
|
59
|
+
[--params(-o) PARAM1[,PARAM2...]] filters methods by those that
|
60
|
+
contain all of the parameters passed in. Parameters should be
|
61
|
+
passed as a comma-separated list.
|
data/bin/jcheat
CHANGED
@@ -1,91 +1,37 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'getoptlong'
|
3
4
|
require 'rubygems'
|
4
5
|
require 'hpricot'
|
5
6
|
gem 'jquery-cheat'
|
7
|
+
require 'jquery-cheat'
|
6
8
|
|
7
|
-
|
9
|
+
opts = GetoptLong.new(
|
10
|
+
[ '--recursive', '-r', GetoptLong::NO_ARGUMENT ],
|
11
|
+
[ '--module', '-m', GetoptLong::REQUIRED_ARGUMENT ],
|
12
|
+
[ '--name', '-n', GetoptLong::REQUIRED_ARGUMENT ],
|
13
|
+
[ '--substring', '-s', GetoptLong::NO_ARGUMENT ],
|
14
|
+
[ '--like', '-l', GetoptLong::REQUIRED_ARGUMENT ],
|
15
|
+
[ '--params', '-o', GetoptLong::REQUIRED_ARGUMENT ],
|
16
|
+
[ '--no-examples', '-e', GetoptLong::NO_ARGUMENT ],
|
17
|
+
[ '--help', '-h', GetoptLong::NO_ARGUMENT ]
|
18
|
+
)
|
8
19
|
|
9
|
-
|
10
|
-
|
11
|
-
attr_accessor :short, :long, :cat, :params, :options, :examples, :name, :attributes, :param_order, :type
|
12
|
-
|
13
|
-
def initialize elem
|
14
|
-
@name = elem.attributes["name"]
|
15
|
-
@short = elem.attributes["short"]
|
16
|
-
@long = elem.search("> desc").inner_text
|
17
|
-
@cat = elem.attributes["cat"]
|
18
|
-
@params = elem.search("params").inject({}) {|s,p| s.merge(p.attributes["name"] => [p.search("desc").inner_text, p.attributes["type"]]) }
|
19
|
-
@param_order = elem.search("params").map {|p| p.attributes["name"]}
|
20
|
-
@options = elem.search("options").inject({}) {|s,p| s.merge(p.attributes["name"] => [p.search("desc").inner_text, p.attributes["type"]]) }
|
21
|
-
@type = elem.attributes["type"]
|
22
|
-
@examples = elem.search("examples").map do |example|
|
23
|
-
{:desc => example.search("desc").inner_text,
|
24
|
-
:before => example.search("before").inner_text,
|
25
|
-
:code => example.search("code").inner_text,
|
26
|
-
:result => example.search("result").inner_text
|
27
|
-
}
|
28
|
-
|
29
|
-
end
|
30
|
-
@attributes = elem.attributes
|
31
|
-
end
|
32
|
-
|
33
|
-
def signature
|
34
|
-
"#{name}#{"(#{ param_order.join(", ") })" if !attributes["property"] } in #{cat}"
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
class JQueryMethods < Array
|
40
|
-
|
41
|
-
@@parsed = Hpricot::XML(File.read(PATH))
|
42
|
-
|
43
|
-
def initialize els
|
44
|
-
push(*els.to_jquery_methods)
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.with_name_and_params name, *params
|
48
|
-
new(@@parsed.search("method[@name='#{name}']").reject{|m| params.any? {|p| m.search("params[@name=#{p}]").length == 0 } })
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.in_module mod, recursive
|
52
|
-
new(@@parsed.search("[@cat#{ '*' if recursive.to_s =~ /^\-?r/i }='#{mod}']")).named_list
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.description_matches list
|
56
|
-
new(@@parsed.search("method").select {|m| list.all? {|t| m.search("> desc").inner_text =~ /#{t}/i} }).named_list
|
57
|
-
end
|
58
|
-
|
59
|
-
def self.named name, precise = false
|
60
|
-
new(@@parsed.search("method[@name#{ precise ? "=" : "*=" }'#{name}']")).named_list
|
61
|
-
end
|
62
|
-
|
63
|
-
def named_list
|
64
|
-
list = inject([]) {|s,m| s.push(m.signature) }
|
65
|
-
list.empty? ? ["No items found"] : list
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
20
|
+
line = "-" * 80
|
69
21
|
|
70
|
-
|
71
|
-
|
72
|
-
def to_jquery_methods
|
73
|
-
map {|m| JQueryMethod.new(m)}
|
74
|
-
end
|
75
|
-
|
76
|
-
end
|
22
|
+
opts_hash = {}
|
77
23
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
24
|
+
opts.each do |opt, arg|
|
25
|
+
case opt
|
26
|
+
when '--params'
|
27
|
+
opts_hash[:params] = arg.split(",")
|
28
|
+
else
|
29
|
+
opts_hash[opt.gsub("--", "").to_sym] = (arg || true)
|
82
30
|
end
|
83
31
|
end
|
84
32
|
|
85
|
-
line = "-" * 80
|
86
|
-
|
87
33
|
if ARGV[0] == "describe" || ARGV[0] == "desc"
|
88
|
-
methods =
|
34
|
+
methods = JQuery::Methods.new(:name => ARGV[1], :params => ARGV[2..-1])
|
89
35
|
|
90
36
|
for method in methods
|
91
37
|
puts line
|
@@ -94,37 +40,47 @@ if ARGV[0] == "describe" || ARGV[0] == "desc"
|
|
94
40
|
"Description: #{method.short.word_wrap(62, 14)}\n" +
|
95
41
|
"Details: #{method.long.word_wrap(62, 14)}\n" +
|
96
42
|
"Returns: #{method.type}\n"
|
97
|
-
|
98
|
-
|
99
|
-
puts "
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
43
|
+
|
44
|
+
if !opts_hash[:"no-examples"]
|
45
|
+
puts "#{line}\n|#{" " * 35 }EXAMPLES#{" " * 35}|\n#{line}\n"
|
46
|
+
|
47
|
+
for example in method.examples
|
48
|
+
puts "---------------\n| Description |\n---------------\n#{example[:desc].word_wrap(80)}\n" if example[:desc] != ""
|
49
|
+
puts "----------\n| Before |\n----------\n#{example[:before]}\n\n" if example[:before] != ""
|
50
|
+
puts "--------\n| Code |\n--------\n#{example[:code]}\n\n" if example[:code] != ""
|
51
|
+
puts "----------\n| Result |\n----------\n#{example[:result]}\n\n" if example[:result] != ""
|
52
|
+
puts "\n"
|
53
|
+
end
|
104
54
|
end
|
105
55
|
end
|
106
56
|
elsif ARGV[0] == "list"
|
107
|
-
|
57
|
+
hash = {:module => ARGV[1]}
|
108
58
|
elsif ARGV[0] =~ /^(apopros|ap|like)$/
|
109
|
-
|
59
|
+
hash = {:like => ARGV[1..-1]}
|
110
60
|
elsif ARGV[0] == "named"
|
111
|
-
|
61
|
+
hash = {:name => ARGV[1]}
|
112
62
|
elsif ARGV[0] =~ /^(namelike|nl)$/
|
113
|
-
|
114
|
-
|
63
|
+
hash = {:name => ARGV[1], :substring => true}
|
64
|
+
elsif ARGV[0] == "tree"
|
65
|
+
JQuery.print_tree(JQuery.convert(JQuery::Parser.category_list))
|
66
|
+
elsif opts_hash[:help]
|
115
67
|
puts %q{
|
116
|
-
jcheat
|
68
|
+
jcheat COMMAND [COMMAND_PREFS] [--name NAME [--precise]]
|
69
|
+
[--module MODULE [--recursive]] [--like STRING]
|
70
|
+
[--params PARAM1[,PARAM2...]] [--no-examples]
|
117
71
|
|
118
72
|
(describe|desc) METHOD_NAME [PARAM1, ...]
|
119
73
|
> the full description of each method matching METHOD_NAME.
|
120
74
|
> If you also pass optional PARAMs, the list of matching
|
121
75
|
> methods will be filtered to include only methods with those
|
122
76
|
> parameters.
|
77
|
+
>
|
78
|
+
> --no-examples(-e) suppresses examples from the output
|
123
79
|
>
|
124
80
|
> Example: "jcheat desc $ html" will return the description
|
125
81
|
> of the $ method with an "html" parameter.
|
126
82
|
|
127
|
-
* list MODULE_NAME
|
83
|
+
* list MODULE_NAME
|
128
84
|
> A list of all methods directly under a specific module. Passing
|
129
85
|
> an optional "-r" will return a list of all methods at any level
|
130
86
|
> under the module.
|
@@ -146,6 +102,28 @@ else
|
|
146
102
|
> A list of all methods whose names contain STRING.
|
147
103
|
>
|
148
104
|
> Example: "jcheat nl clear"
|
105
|
+
|
106
|
+
FILTERS
|
107
|
+
-------
|
108
|
+
|
109
|
+
[--name(-n) NAME [--substrings(-s)]] filters methods by their name.
|
110
|
+
Adding the --precise flag will allow a substring match.
|
111
|
+
|
112
|
+
[--module(-m) MODULE [--recursive(-r)]] filters methods by the
|
113
|
+
module they are in. Adding the --recursive flag will check
|
114
|
+
submodules (ex: -m DOM -r will search for methods in DOM,
|
115
|
+
DOM/Traversal, etc.)
|
116
|
+
|
117
|
+
[--like(-l) STRING] filters methods by words in their description.
|
118
|
+
|
119
|
+
[--params(-o) PARAM1[,PARAM2...]] filters methods by those that
|
120
|
+
contain all of the parameters passed in. Parameters should be
|
121
|
+
passed as a comma-separated list.
|
149
122
|
|
150
123
|
}
|
124
|
+
|
125
|
+
else
|
126
|
+
hash = {}
|
151
127
|
end
|
128
|
+
|
129
|
+
puts JQuery::Methods.new(opts_hash.merge(hash)).named_list.sort.join("\n") if hash
|
data/lib/jquery-cheat.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'getoptlong'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'hpricot'
|
4
|
+
gem 'jquery-cheat'
|
5
|
+
require 'merger'
|
6
|
+
|
7
|
+
PATH = File.join(Gem.cache.search("jquery-cheat").sort_by{|x| x.version.version}.last.full_gem_path, 'lib','index.xml')
|
8
|
+
|
9
|
+
class JQuery::Method
|
10
|
+
|
11
|
+
attr_accessor :short, :long, :cat, :params, :options, :examples, :name, :attributes, :param_order, :type
|
12
|
+
|
13
|
+
def initialize elem
|
14
|
+
@name = elem.attributes["name"]
|
15
|
+
@short = elem.attributes["short"]
|
16
|
+
@long = elem.search("> desc").inner_text
|
17
|
+
@cat = elem.attributes["cat"]
|
18
|
+
@params = elem.search("params").inject({}) {|s,p| s.merge(p.attributes["name"] => [p.search("desc").inner_text, p.attributes["type"]]) }
|
19
|
+
@param_order = elem.search("params").map {|p| p.attributes["name"]}
|
20
|
+
@options = elem.search("options").inject({}) {|s,p| s.merge(p.attributes["name"] => [p.search("desc").inner_text, p.attributes["type"]]) }
|
21
|
+
@type = elem.attributes["type"]
|
22
|
+
@examples = elem.search("examples").map do |example|
|
23
|
+
{:desc => example.search("desc").inner_text,
|
24
|
+
:before => example.search("before").inner_text,
|
25
|
+
:code => example.search("code").inner_text,
|
26
|
+
:result => example.search("result").inner_text
|
27
|
+
}
|
28
|
+
|
29
|
+
end
|
30
|
+
@attributes = elem.attributes
|
31
|
+
end
|
32
|
+
|
33
|
+
def signature
|
34
|
+
"#{name}#{"(#{ param_order.join(", ") })" if !attributes["property"] } in #{cat}"
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
class JQuery::Parser
|
40
|
+
|
41
|
+
@@parsed = Hpricot::XML(File.read(PATH))
|
42
|
+
|
43
|
+
# The options hash supports the following options
|
44
|
+
# <tt>name</tt>:: search for methods matching the name passed
|
45
|
+
# <tt>substring</tt>:: to be used with :name. If :substring is true, all functions containing the substring passed in :name
|
46
|
+
# will be returned (defaults to false).
|
47
|
+
# <tt>module</tt>:: search for methods in :module
|
48
|
+
# <tt>recursive</tt>:: to be used with :module. If :recursive is true, all functions in :module, or its child modules will
|
49
|
+
# be returned (defaults to false)
|
50
|
+
# <tt>like</tt>:: search for methods whose descriptions include any strings included in the Array :like
|
51
|
+
# <tt>params</tt>:: search for methods whose parameters include all of the strings include in the Array :params
|
52
|
+
def self.get_methods_by_hash options = {}
|
53
|
+
filters = "method"
|
54
|
+
filters += "[@name#{ '*' if options[:substring] }='#{options[:name]}']" if options[:name]
|
55
|
+
filters += "[@cat#{ '*' if options[:recursive] }='#{options[:module]}']" if options[:module]
|
56
|
+
methods = @@parsed.search(filters)
|
57
|
+
methods.reject! {|m| options[:like].any? {|t| m.search("> desc").inner_text !~ /#{t}/i} } if options[:like]
|
58
|
+
methods.reject! {|m| options[:params].any? {|p| m.search("params[@name=#{p}]").length == 0 } } if options[:params]
|
59
|
+
methods
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.category_list
|
63
|
+
@@parsed.search("[@cat]").map {|x| x.get_attribute("cat")}.uniq
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
class JQuery::Methods < Array
|
69
|
+
|
70
|
+
def initialize els
|
71
|
+
if(els.is_a?(Hash))
|
72
|
+
push(*JQuery::Parser.get_methods_by_hash(els).to_jquery_methods)
|
73
|
+
else
|
74
|
+
push(*els.to_jquery_methods)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.get_methods options = {}
|
79
|
+
JQuery::Parser.get_methods_by_hash(options)
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.with_name_and_params name, *params
|
83
|
+
new(@@parsed.search("method[@name='#{name}']").reject{|m| params.any? {|p| m.search("params[@name=#{p}]").length == 0 } })
|
84
|
+
end
|
85
|
+
|
86
|
+
def named_list
|
87
|
+
list = inject([]) {|s,m| s.push(m.signature) }
|
88
|
+
list.empty? ? ["No items found"] : list
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
class Array
|
94
|
+
|
95
|
+
def to_jquery_methods
|
96
|
+
map {|m| JQuery::Method.new(m)}
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
class String
|
102
|
+
|
103
|
+
def word_wrap cols, padding = 0
|
104
|
+
gsub(/\n\n/, "\r").gsub(/\n/, ' ').gsub(/\r/, "\n\n#{' ' * 14}").gsub(/(.{1,#{cols}}|\S{#{cols + 1},})(?: +|$\n?)/, "\\1\n#{ ' ' * padding}")
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
class GetoptLong
|
110
|
+
|
111
|
+
attr_accessor :argument_flags
|
112
|
+
|
113
|
+
end
|
data/lib/jquery-cheat/version.rb
CHANGED
data/lib/merger.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module JQuery
|
2
|
+
|
3
|
+
def self.convert(a)
|
4
|
+
h = {}
|
5
|
+
a.each do |s|
|
6
|
+
parse_into(h, s)
|
7
|
+
end
|
8
|
+
h
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.parse_into(frob, s)
|
12
|
+
s.split("/").each { |s1| frob = (frob[s1] ||= {}) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.print_tree(hsh, c = 0)
|
16
|
+
hsh.each do |k,v|
|
17
|
+
puts k
|
18
|
+
if c > 0
|
19
|
+
print "|#{'-' * c}"
|
20
|
+
end
|
21
|
+
if v != {}
|
22
|
+
self.print_tree(v, c + 1)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/test/test_jquery-cheat.rb
CHANGED
@@ -1,11 +1,92 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
require 'flexmock/test_unit'
|
3
|
+
|
4
|
+
StubMethod = JQueryMethod.dup
|
5
|
+
StubMethods = JQueryMethods.dup
|
6
|
+
|
7
|
+
class StubMethod
|
8
|
+
def initialize options = {}
|
9
|
+
@name = options[:name] || "function"
|
10
|
+
@param_order = options[:param_order] || ["param1", "param2"]
|
11
|
+
@cat = options[:cat] || "MyModule"
|
12
|
+
@attributes = options[:attributes] || {}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class StubMethods < Array
|
17
|
+
def initialize *args
|
18
|
+
if args[0]
|
19
|
+
args[0].each {|hsh| self.push(StubMethod.new(hsh)) }
|
20
|
+
else
|
21
|
+
push(StubMethod.new)
|
22
|
+
push(StubMethod.new(:name => "function2", :param_order => ["param_b1"], :cat => "MyModule", :attributes => {:property => true}))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
2
26
|
|
3
27
|
class TestJQueryCheat < Test::Unit::TestCase
|
4
28
|
|
29
|
+
@@parsed = Hpricot::XML(File.read(File.join(Gem.cache.search("jquery-cheat").sort_by{|x| x.version.version}.last.full_gem_path, 'lib','index.xml')))
|
30
|
+
|
5
31
|
def setup
|
6
32
|
end
|
7
33
|
|
8
|
-
def
|
9
|
-
|
34
|
+
def test_named
|
35
|
+
assert_hash_equals_filter({:name => '$'}, "method[@name='$']")
|
36
|
+
assert_hash_equals_filter({:name => '$', :precise => true}, "method[@name='$']")
|
10
37
|
end
|
38
|
+
|
39
|
+
def test_named_imprecise
|
40
|
+
assert_hash_equals_filter({:name => '$', :precise => false}, "method[@name*='$']")
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_module
|
44
|
+
assert_hash_equals_filter({:module => "Core"}, "method[@cat='Core']")
|
45
|
+
assert_hash_equals_filter({:module => "Core", :recursive => false}, "method[@cat='Core']")
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_module_recursive
|
49
|
+
assert_hash_equals_filter({:module => "DOM", :recursive => true}, "method[@cat*='DOM']")
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_like
|
53
|
+
expected_parse = @@parsed.search("method[@cat*='Plugins']").reject {|m| m.search("> desc").inner_text !~ /clear/i }
|
54
|
+
assert_equal JQueryParser.get_methods_by_hash(:module => "Plugins", :recursive => true, :like => ["clear"]).inner_html, expected_parse.inner_html
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_like_multiple
|
58
|
+
expected_parse = @@parsed.search("method[@cat*='Plugins']").reject {|m| m.search("> desc").inner_text !~ /clear/i || m.search("> desc").inner_text !~ /field/i }
|
59
|
+
assert_equal JQueryParser.get_methods_by_hash(:module => "Plugins", :recursive => true, :like => ["clear", "field"]).inner_html, expected_parse.inner_html
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_params
|
63
|
+
expected_parse = @@parsed.search("method[@cat*='Core']").reject {|m| m.search("params[@name=html]").length == 0 }
|
64
|
+
assert_equal JQueryParser.get_methods_by_hash(:module => "Core", :recursive => true, :params => ["html"]).inner_html, expected_parse.inner_html
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_params_multiple
|
68
|
+
expected_parse = @@parsed.search("method[@cat*='Core']").reject {|m| m.search("params[@name=expr]").length == 0 || m.search("params[@name=context]").length == 0}
|
69
|
+
assert_equal JQueryParser.get_methods_by_hash(:module => "Core", :recursive => true, :params => ["expr", "context"]).inner_html, expected_parse.inner_html
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_signature
|
73
|
+
assert_equal StubMethod.new({}).signature, "function(param1, param2) in MyModule"
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_named_list
|
77
|
+
assert_equal StubMethods.new.named_list, ["function(param1, param2) in MyModule", "function2(param_b1) in MyModule"]
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_empty_named_list
|
81
|
+
assert_equal StubMethods.new([]).named_list, ["No items found"]
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_new_methods_by_hash
|
85
|
+
assert_equal JQueryMethods.new(:name => '$').length, JQueryParser.get_methods_by_hash(:name => '$').length
|
86
|
+
end
|
87
|
+
|
88
|
+
def assert_hash_equals_filter hash, filter
|
89
|
+
assert_equal JQueryParser.get_methods_by_hash(hash).inner_html, @@parsed.search(filter).inner_html
|
90
|
+
end
|
91
|
+
|
11
92
|
end
|
data/website/index.html
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
<h1>jquery cheat</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/jquery-cheat"; return false'>
|
35
35
|
Get Version
|
36
|
-
<a href="http://rubyforge.org/projects/jquery-cheat" class="numbers">0.
|
36
|
+
<a href="http://rubyforge.org/projects/jquery-cheat" class="numbers">0.2.0</a>
|
37
37
|
</div>
|
38
38
|
<h1>→ ‘jquery-cheat’</h1>
|
39
39
|
|
@@ -52,61 +52,95 @@
|
|
52
52
|
<h2>Demonstration of usage</h2>
|
53
53
|
|
54
54
|
|
55
|
-
<
|
55
|
+
<h3>Main commands</h3>
|
56
56
|
|
57
57
|
|
58
|
+
<pre>jcheat COMMAND [COMMAND_PREFS] [--name NAME [--precise]]
|
59
|
+
[--module MODULE [--recursive]] [--like STRING]
|
60
|
+
[--params PARAM1[,PARAM2...]] [--no-examples]</pre>
|
61
|
+
|
58
62
|
<ul>
|
59
|
-
<li>(describe|desc)
|
63
|
+
<li><pre>(describe|desc) METHOD_NAME [PARAM1, ...]</pre>
|
60
64
|
<ul>
|
61
|
-
<li>the full description of each method matching <span class="caps">METHOD</span>_NAME
|
62
|
-
|
65
|
+
<li>the full description of each method matching <span class="caps">METHOD</span>_NAME.
|
66
|
+
If you also pass optional PARAMs, the list of matching
|
63
67
|
methods will be filtered to include only methods with those
|
64
68
|
parameters.</li>
|
65
|
-
<li>
|
69
|
+
<li><code>--no-examples(-e)</code> suppresses examples from the output</li>
|
70
|
+
<li>Example: <code>jcheat desc $ html</code> will return the description
|
66
71
|
of the $ method with an “html” parameter.</li>
|
67
72
|
</ul></li>
|
68
73
|
</ul>
|
69
74
|
|
70
75
|
|
71
76
|
<ul>
|
72
|
-
<li>list
|
77
|
+
<li><pre>list MODULE_NAME</pre>
|
73
78
|
<ul>
|
74
79
|
<li>A list of all methods directly under a specific module. Passing
|
75
|
-
an optional
|
80
|
+
an optional <code>-r</code> will return a list of all methods at any level
|
76
81
|
under the module.</li>
|
77
|
-
<li>Example:
|
82
|
+
<li>Example: <code>jcheat list DOM/Traversing</code></li>
|
78
83
|
</ul></li>
|
79
84
|
</ul>
|
80
85
|
|
81
86
|
|
82
87
|
<ul>
|
83
|
-
<li>(apopros|ap|like)
|
88
|
+
<li><pre>(apopros|ap|like) STRING</pre>
|
84
89
|
<ul>
|
85
90
|
<li>A list of all methods whose description contains all of the
|
86
91
|
words in <span class="caps">STRING</span>.</li>
|
87
|
-
<li>Example:
|
92
|
+
<li>Example: <code>jcheat like clear fields</code></li>
|
88
93
|
</ul></li>
|
89
94
|
</ul>
|
90
95
|
|
91
96
|
|
92
97
|
<ul>
|
93
|
-
<li>named
|
98
|
+
<li><pre>named STRING</pre>
|
94
99
|
<ul>
|
95
100
|
<li>A list of all methods named exactly <span class="caps">STRING</span>.</li>
|
96
|
-
<li>Example:
|
101
|
+
<li>Example: <code>jcheat named $</code></li>
|
97
102
|
</ul></li>
|
98
103
|
</ul>
|
99
104
|
|
100
105
|
|
101
106
|
<ul>
|
102
|
-
<li>(namelike|nl)
|
107
|
+
<li><pre>(namelike|nl) STRING</pre>
|
103
108
|
<ul>
|
104
109
|
<li>A list of all methods whose names contain <span class="caps">STRING</span>.</li>
|
105
|
-
<li>Example:
|
110
|
+
<li>Example: <code>jcheat nl clear</code></li>
|
106
111
|
</ul></li>
|
107
112
|
</ul>
|
108
113
|
|
109
114
|
|
115
|
+
<h3>Filters</h3>
|
116
|
+
|
117
|
+
|
118
|
+
<ul>
|
119
|
+
<li><code>[--name(-n) NAME [--substrings(-s)]]</code> filters methods by their name.
|
120
|
+
Adding the—precise flag will allow a substring match.</li>
|
121
|
+
</ul>
|
122
|
+
|
123
|
+
|
124
|
+
<ul>
|
125
|
+
<li><code>[--module(-m) MODULE [--recursive(-r)]]</code> filters methods by the
|
126
|
+
module they are in. Adding the—recursive flag will check
|
127
|
+
submodules (ex: -m <span class="caps">DOM</span> -r will search for methods in <span class="caps">DOM</span>,
|
128
|
+
<span class="caps">DOM</span>/Traversal, etc.)</li>
|
129
|
+
</ul>
|
130
|
+
|
131
|
+
|
132
|
+
<ul>
|
133
|
+
<li><code>[--like(-l) STRING]</code> filters methods by words in their description.</li>
|
134
|
+
</ul>
|
135
|
+
|
136
|
+
|
137
|
+
<ul>
|
138
|
+
<li><code>[--params(-o) PARAM1[,PARAM2...]]</code> filters methods by those that
|
139
|
+
contain all of the parameters passed in. Parameters should be
|
140
|
+
passed as a comma-separated list.</li>
|
141
|
+
</ul>
|
142
|
+
|
143
|
+
|
110
144
|
<h2>License</h2>
|
111
145
|
|
112
146
|
|
data/website/index.txt
CHANGED
@@ -12,34 +12,55 @@ h2. Installing
|
|
12
12
|
|
13
13
|
h2. Demonstration of usage
|
14
14
|
|
15
|
-
|
15
|
+
h3. Main commands
|
16
16
|
|
17
|
-
|
17
|
+
<pre>jcheat COMMAND [COMMAND_PREFS] [--name NAME [--precise]]
|
18
|
+
[--module MODULE [--recursive]] [--like STRING]
|
19
|
+
[--params PARAM1[,PARAM2...]] [--no-examples]</pre>
|
20
|
+
|
21
|
+
* <pre>(describe|desc) METHOD_NAME [PARAM1, ...]</pre>
|
18
22
|
** the full description of each method matching METHOD_NAME.
|
19
|
-
|
23
|
+
If you also pass optional PARAMs, the list of matching
|
20
24
|
methods will be filtered to include only methods with those
|
21
25
|
parameters.
|
22
|
-
**
|
26
|
+
** <code>--no-examples(-e)</code> suppresses examples from the output
|
27
|
+
** Example: <code>jcheat desc $ html</code> will return the description
|
23
28
|
of the $ method with an "html" parameter.
|
24
29
|
|
25
|
-
* list MODULE_NAME
|
30
|
+
* <pre>list MODULE_NAME</pre>
|
26
31
|
** A list of all methods directly under a specific module. Passing
|
27
|
-
an optional
|
32
|
+
an optional <code>-r</code> will return a list of all methods at any level
|
28
33
|
under the module.
|
29
|
-
** Example:
|
34
|
+
** Example: <code>jcheat list DOM/Traversing</code>
|
30
35
|
|
31
|
-
* (apopros|ap|like) STRING
|
36
|
+
* <pre>(apopros|ap|like) STRING</pre>
|
32
37
|
** A list of all methods whose description contains all of the
|
33
38
|
words in STRING.
|
34
|
-
** Example:
|
39
|
+
** Example: <code>jcheat like clear fields</code>
|
35
40
|
|
36
|
-
* named STRING
|
41
|
+
* <pre>named STRING</pre>
|
37
42
|
** A list of all methods named exactly STRING.
|
38
|
-
** Example:
|
43
|
+
** Example: <code>jcheat named $</code>
|
39
44
|
|
40
|
-
* (namelike|nl) STRING
|
45
|
+
* <pre>(namelike|nl) STRING</pre>
|
41
46
|
** A list of all methods whose names contain STRING.
|
42
|
-
** Example:
|
47
|
+
** Example: <code>jcheat nl clear</code>
|
48
|
+
|
49
|
+
h3. Filters
|
50
|
+
|
51
|
+
* <code>[--name(-n) NAME [--substrings(-s)]]</code> filters methods by their name.
|
52
|
+
Adding the --precise flag will allow a substring match.
|
53
|
+
|
54
|
+
* <code>[--module(-m) MODULE [--recursive(-r)]]</code> filters methods by the
|
55
|
+
module they are in. Adding the --recursive flag will check
|
56
|
+
submodules (ex: -m DOM -r will search for methods in DOM,
|
57
|
+
DOM/Traversal, etc.)
|
58
|
+
|
59
|
+
* <code>[--like(-l) STRING]</code> filters methods by words in their description.
|
60
|
+
|
61
|
+
* <code>[--params(-o) PARAM1[,PARAM2...]]</code> filters methods by those that
|
62
|
+
contain all of the parameters passed in. Parameters should be
|
63
|
+
passed as a comma-separated list.
|
43
64
|
|
44
65
|
h2. License
|
45
66
|
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: jquery-cheat
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
6
|
+
version: 0.2.0
|
7
7
|
date: 2007-06-01 00:00:00 -07:00
|
8
8
|
summary: jQuery command-line API reference
|
9
9
|
require_paths:
|
@@ -36,7 +36,9 @@ files:
|
|
36
36
|
- Rakefile
|
37
37
|
- bin/jcheat
|
38
38
|
- lib/index.xml
|
39
|
+
- lib/jquery-cheat.rb
|
39
40
|
- lib/jquery-cheat/version.rb
|
41
|
+
- lib/merger.rb
|
40
42
|
- scripts/txt2html
|
41
43
|
- setup.rb
|
42
44
|
- test/test_helper.rb
|