sidekiq-statsd 0.1.0 → 0.1.1
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/.yardopts +1 -1
- data/README.md +8 -4
- data/lib/sidekiq/statsd/client.rb +10 -10
- data/lib/sidekiq/statsd/server_middleware.rb +8 -9
- data/lib/sidekiq/statsd/version.rb +1 -1
- data/spec/sidekiq/statsd/client_spec.rb +6 -6
- data/spec/spec_helper.rb +1 -0
- data/vendor/ruby/1.9.1/bin/yard +1 -1
- data/vendor/ruby/1.9.1/bin/yardoc +1 -1
- data/vendor/ruby/1.9.1/bin/yri +1 -1
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/default_factory.rb +176 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/default_tag.rb +12 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/directives.rb +595 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/library.rb +630 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/option_tag.rb +12 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/overload_tag.rb +65 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/ref_tag.rb +7 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/ref_tag_list.rb +27 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/tag.rb +57 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/lib/yard/tags/tag_format_error.rb +6 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/spec/tags/default_factory_spec.rb +152 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/spec/tags/default_tag_spec.rb +11 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/spec/tags/directives_spec.rb +436 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/spec/tags/library_spec.rb +34 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/spec/tags/overload_tag_spec.rb +53 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/spec/tags/ref_tag_list_spec.rb +53 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/html/example.erb +11 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/html/index.erb +3 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/html/option.erb +24 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/html/overload.erb +14 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/html/see.erb +8 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/html/tag.erb +20 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/setup.rb +55 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/text/example.erb +12 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/text/index.erb +1 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/text/option.erb +20 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/text/overload.erb +19 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/text/see.erb +11 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/default/tags/text/tag.erb +13 -0
- data/vendor/ruby/1.9.1/gems/yard-0.8.6.1/templates/guide/tags/html/setup.rb +8 -0
- metadata +34 -4
@@ -0,0 +1,65 @@
|
|
1
|
+
module YARD
|
2
|
+
module Tags
|
3
|
+
class OverloadTag < Tag
|
4
|
+
attr_reader :signature, :parameters, :docstring
|
5
|
+
|
6
|
+
def initialize(tag_name, text)
|
7
|
+
super(tag_name, nil)
|
8
|
+
parse_tag(text)
|
9
|
+
parse_signature
|
10
|
+
end
|
11
|
+
|
12
|
+
def tag(name) docstring.tag(name) end
|
13
|
+
def tags(name = nil) docstring.tags(name) end
|
14
|
+
def has_tag?(name) docstring.has_tag?(name) end
|
15
|
+
|
16
|
+
def object=(value)
|
17
|
+
super(value)
|
18
|
+
docstring.object = value
|
19
|
+
end
|
20
|
+
|
21
|
+
def name(prefix = false)
|
22
|
+
return @name unless prefix
|
23
|
+
object.scope == :class ? @name.to_s : "#{object.send(:sep)}#{@name}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def method_missing(*args, &block)
|
27
|
+
object.send(*args, &block)
|
28
|
+
end
|
29
|
+
|
30
|
+
def type
|
31
|
+
object.type
|
32
|
+
end
|
33
|
+
|
34
|
+
def is_a?(other)
|
35
|
+
object.is_a?(other) || self.class >= other.class || false
|
36
|
+
end
|
37
|
+
alias kind_of? is_a?
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def parse_tag(text)
|
42
|
+
@signature, text = *text.split(/\r?\n/, 2)
|
43
|
+
@signature.strip!
|
44
|
+
text ||= ""
|
45
|
+
numspaces = text[/\A(\s*)/, 1].length
|
46
|
+
text.gsub!(/^[ \t]{#{numspaces}}/, '')
|
47
|
+
text.strip!
|
48
|
+
@docstring = Docstring.new(text, nil)
|
49
|
+
end
|
50
|
+
|
51
|
+
def parse_signature
|
52
|
+
if signature =~ /^(?:def\s)?\s*(#{CodeObjects::METHODMATCH})(?:(?:\s+|\s*\()(.*)(?:\)\s*$)?)?/m
|
53
|
+
meth, args = $1, $2
|
54
|
+
meth.gsub!(/\s+/,'')
|
55
|
+
# FIXME refactor this code to not make use of the Handlers::Base class (tokval_list should be moved)
|
56
|
+
toks = YARD::Parser::Ruby::Legacy::TokenList.new(args)
|
57
|
+
args = YARD::Handlers::Ruby::Legacy::Base.new(nil, nil).send(:tokval_list, toks, :all)
|
58
|
+
args.map! {|a| k, v = *a.split('=', 2); [k.strip.to_s, (v ? v.strip : nil)] } if args
|
59
|
+
@name = meth.to_sym
|
60
|
+
@parameters = args
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module YARD
|
2
|
+
module Tags
|
3
|
+
class RefTagList
|
4
|
+
attr_accessor :owner, :tag_name, :name
|
5
|
+
|
6
|
+
def initialize(tag_name, owner, name = nil)
|
7
|
+
@owner = CodeObjects::Proxy === owner ? owner : P(owner)
|
8
|
+
@tag_name = tag_name.to_s
|
9
|
+
@name = name
|
10
|
+
end
|
11
|
+
|
12
|
+
def tags
|
13
|
+
if owner.is_a?(CodeObjects::Base)
|
14
|
+
o = owner.tags(tag_name)
|
15
|
+
o = o.select {|t| t.name.to_s == name.to_s } if name
|
16
|
+
o.each do |t|
|
17
|
+
t.extend(RefTag)
|
18
|
+
t.owner = owner
|
19
|
+
end
|
20
|
+
o
|
21
|
+
else
|
22
|
+
[]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module YARD
|
2
|
+
module Tags
|
3
|
+
# Represents a metadata tag value (+@tag+). Tags can have any combination of
|
4
|
+
# {#types}, {#name} and {#text}, or none of the above.
|
5
|
+
#
|
6
|
+
# @example Programmatic tag creation
|
7
|
+
# # The following docstring syntax:
|
8
|
+
# # @param [String, nil] arg an argument
|
9
|
+
# #
|
10
|
+
# # is equivalent to:
|
11
|
+
# Tag.new(:param, 'an argument', ['String', 'nil'], 'arg')
|
12
|
+
class Tag
|
13
|
+
# @return [String] the name of the tag
|
14
|
+
attr_accessor :tag_name
|
15
|
+
|
16
|
+
# @return [String] the tag text associated with the tag
|
17
|
+
# @return [nil] if no tag text is supplied
|
18
|
+
attr_accessor :text
|
19
|
+
|
20
|
+
# @return [Array<String>] a list of types associated with the tag
|
21
|
+
# @return [nil] if no types are associated with the tag
|
22
|
+
attr_accessor :types
|
23
|
+
|
24
|
+
# @return [String] a name associated with the tag
|
25
|
+
attr_accessor :name
|
26
|
+
|
27
|
+
# @return [CodeObjects::Base] the associated object
|
28
|
+
attr_accessor :object
|
29
|
+
|
30
|
+
# Creates a new tag object with a tag name and text. Optionally, formally declared types
|
31
|
+
# and a key name can be specified.
|
32
|
+
#
|
33
|
+
# Types are mainly for meta tags that rely on type information, such as +param+, +return+, etc.
|
34
|
+
#
|
35
|
+
# Key names are for tags that declare meta data for a specific key or name, such as +param+,
|
36
|
+
# +raise+, etc.
|
37
|
+
#
|
38
|
+
# @param [#to_s] tag_name the tag name to create the tag for
|
39
|
+
# @param [String] text the descriptive text for this tag
|
40
|
+
# @param [Array<String>] types optional type list of formally declared types
|
41
|
+
# for the tag
|
42
|
+
# @param [String] name optional key name which the tag refers to
|
43
|
+
def initialize(tag_name, text, types = nil, name = nil)
|
44
|
+
@tag_name, @text, @name, @types = tag_name.to_s, text, name, (types ? [types].flatten.compact : nil)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Convenience method to access the first type specified. This should mainly
|
48
|
+
# be used for tags that only specify one type.
|
49
|
+
#
|
50
|
+
# @return [String] the first of the list of specified types
|
51
|
+
# @see #types
|
52
|
+
def type
|
53
|
+
types.first
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,152 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe YARD::Tags::DefaultFactory do
|
4
|
+
before { @f = YARD::Tags::DefaultFactory.new }
|
5
|
+
|
6
|
+
describe '#parse_tag' do
|
7
|
+
it "should not have trailing whitespace on a regular freeform tag" do
|
8
|
+
@f.parse_tag('api', 'private ').text.should == "private"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#extract_types_and_name_from_text' do
|
13
|
+
def parse_types(types)
|
14
|
+
@f.send(:extract_types_and_name_from_text, types)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should handle one type" do
|
18
|
+
parse_types('[A]').should == [nil, ['A'], ""]
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should handle a list of types" do
|
22
|
+
parse_types('[A, B, C]').should == [nil, ['A', 'B', 'C'], ""]
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should handle ducktypes" do
|
26
|
+
parse_types('[#foo]').should == [nil, ['#foo'], '']
|
27
|
+
end
|
28
|
+
|
29
|
+
%w(#foo= #<< #<=> #>> #== #=== Array<#<=>> Array<#==>).each do |meth|
|
30
|
+
it "should handle ducktypes with special method name #{meth}" do
|
31
|
+
parse_types("[#{meth}]").should == [nil, [meth], '']
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should only parse #ducktypes inside brackets" do
|
36
|
+
parse_types("#ducktype").should == [nil, nil, '#ducktype']
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return the text before and after the type list" do
|
40
|
+
parse_types(' b <String> description').should == ['b', ['String'], 'description']
|
41
|
+
parse_types('b c <String> description (test)').should == [nil, nil, 'b c <String> description (test)']
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should handle a complex list of types" do
|
45
|
+
v = parse_types(' [Test, Array<String, Hash, C>, String]')
|
46
|
+
v.should include(["Test", "Array<String, Hash, C>", "String"])
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should handle any of the following start/end delimiting chars: (), <>, {}, []" do
|
50
|
+
a = parse_types('[a,b,c]')
|
51
|
+
b = parse_types('<a,b,c>')
|
52
|
+
c = parse_types('(a,b,c)')
|
53
|
+
d = parse_types('{a,b,c}')
|
54
|
+
a.should == b
|
55
|
+
b.should == c
|
56
|
+
c.should == d
|
57
|
+
a.should include(['a','b','c'])
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should return the text before the type list as the last element" do
|
61
|
+
parse_types('b[x, y, z]').should == ['b', ['x', 'y', 'z'], '']
|
62
|
+
parse_types(' ! <x>').should == ["!", ['x'], '']
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should return text unparsed if there is no type list" do
|
66
|
+
parse_types('').should == [nil, nil, '']
|
67
|
+
parse_types('[]').should == [nil, nil, '[]']
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should allow A => B syntax" do
|
71
|
+
v = parse_types(' [Test, Array<String, Hash{A => {B => C}}, C>, String]')
|
72
|
+
v.should include(["Test", "Array<String, Hash{A => {B => C}}, C>", "String"])
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '#parse_tag_with_types' do
|
77
|
+
def parse_types(text)
|
78
|
+
@f.send(:parse_tag_with_types, 'test', text)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should parse given types and description" do
|
82
|
+
YARD::Tags::Tag.should_receive(:new).with("test", "description", ["x", "y", "z"])
|
83
|
+
parse_types(' [x, y, z] description')
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should parse given types only" do
|
87
|
+
YARD::Tags::Tag.should_receive(:new).with("test", "", ["x", "y", "z"])
|
88
|
+
parse_types(' [x, y, z] ')
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should allow type list to be omitted" do
|
92
|
+
YARD::Tags::Tag.should_receive(:new).with('test', 'description', nil)
|
93
|
+
parse_types(' description ')
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should raise an error if a name is specified before type list" do
|
97
|
+
lambda { parse_types('b<String> desc') }.should raise_error(YARD::Tags::TagFormatError, 'cannot specify a name before type list for \'@test\'')
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe '#parse_tag_with_types_name_and_default' do
|
102
|
+
def parse_types(text)
|
103
|
+
@f.send(:parse_tag_with_types_name_and_default, 'test', text)
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should parse a standard type list with name before types (no default)" do
|
107
|
+
YARD::Tags::DefaultTag.should_receive(:new).with("test", "description", ["x", "y", "z"], 'NAME', nil)
|
108
|
+
parse_types('NAME [x, y, z] description')
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should parse a standard type list with name after types (no default)" do
|
112
|
+
YARD::Tags::DefaultTag.should_receive(:new).with("test", "description", ["x", "y", "z"], 'NAME', nil)
|
113
|
+
parse_types(' [x, y, z] NAME description')
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should parse a tag definition with name, typelist and default" do
|
117
|
+
YARD::Tags::DefaultTag.should_receive(:new).with("test", "description", ["x", "y", "z"], 'NAME', ['default', 'values'])
|
118
|
+
parse_types(' [x, y, z] NAME (default, values) description')
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should parse a tag definition with name, typelist and default when name is before type list" do
|
122
|
+
YARD::Tags::DefaultTag.should_receive(:new).with("test", "description", ["x", "y", "z"], 'NAME', ['default', 'values'])
|
123
|
+
parse_types(' NAME [x, y, z] (default, values) description')
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should allow typelist to be omitted" do
|
127
|
+
YARD::Tags::DefaultTag.should_receive(:new).with("test", "description", nil, 'NAME', ['default', 'values'])
|
128
|
+
parse_types(' NAME (default, values) description')
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe '#parse_tag_with_options' do
|
133
|
+
def parse_options(text)
|
134
|
+
@f.parse_tag_with_options('option', text)
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should have a name before tag info" do
|
138
|
+
t = parse_options("xyz key [Types] (default) description")
|
139
|
+
t.tag_name.should == 'option'
|
140
|
+
t.name.should == 'xyz'
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should parse the rest of the tag like DefaultTag" do
|
144
|
+
t = parse_options("xyz key [Types] (default) description")
|
145
|
+
t.pair.should be_instance_of(Tags::DefaultTag)
|
146
|
+
t.pair.types.should == ["Types"]
|
147
|
+
t.pair.name.should == "key"
|
148
|
+
t.pair.defaults.should == ["default"]
|
149
|
+
t.pair.text.should == "description"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe YARD::Tags::DefaultTag do
|
4
|
+
it "should create a tag with defaults" do
|
5
|
+
o = YARD::Tags::DefaultTag.new('tagname', 'desc', ['types'], 'name', ['defaults'])
|
6
|
+
o.defaults.should == ['defaults']
|
7
|
+
o.tag_name.should == 'tagname'
|
8
|
+
o.name.should == 'name'
|
9
|
+
o.types.should == ['types']
|
10
|
+
end
|
11
|
+
end
|