inch 0.3.2 → 0.3.3.rc1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 83d4cc8e22c5fe81cdd9a9e1f991394a2f68b1d2
4
- data.tar.gz: c2a0ec4271685f914724eb92921ec690960f59f5
3
+ metadata.gz: 32657c657481312dac6a4325355524bdc9e04642
4
+ data.tar.gz: e79fb87d207616b128252f8bf5f27ae4c6aa0a18
5
5
  SHA512:
6
- metadata.gz: 561a32eb812adc99fefd65119ec0e48bafd42399fc023ffd0340c851fe06bcb91cb0b22efe926e20940ebc79d863fd5b12bbdca9b8f46f2fe9b020d13619cb6d
7
- data.tar.gz: 27562e6a16d36d17bc994a433d91aaef27cc90273cf3f20f4cf5d5bb77de1fb2bf2d308efe0ac632c546345b222fc376aae8962735984630e11fa7f45911574a
6
+ metadata.gz: d460817a8091d42386e72b936bcfdb46ae9fb461f8da4fc6486c3870d29bf1646dacd583f9329a9518b116d9f3e5d460b3bd5ef2924e98f3cb7c79ef4bdf9ff2
7
+ data.tar.gz: 399b22d66754c8641d96eba9a586843d961fb3930c6d7c9b5c9848c809b643b80a5c5bc08b227e6ce549cbe027ad9df04a47ab988942d6036fa1d9ec29de0a24
data/README.md CHANGED
@@ -78,6 +78,33 @@ Inch will suggest that the docs could be improved:
78
78
  Only considering priority objects: ↑ ↗ → (use `--help` for options).
79
79
 
80
80
 
81
+
82
+ ## Configuration
83
+
84
+ By default, Inch looks into `{app,lib}/**/*.rb` for Ruby source files. You can customize this by either passing the desired files to the executable:
85
+
86
+ $ inch suggest plugins/**/*.rb
87
+
88
+ or by creating a file named `.inch.yml` in your project directory:
89
+
90
+ ```yaml
91
+ files:
92
+ # define files included in the analysis (defaults to ["{app,lib}/**/*.rb"])
93
+ included:
94
+ - plugins/**/*.rb
95
+ # define files excluded from the analysis (defaults to [])
96
+ excluded:
97
+ # you can use file paths
98
+ - plugins/vendor/sparkr/sparkr.rb
99
+ # or globs
100
+ - plugins/vendor/**/*.rb
101
+ # or regular expressions
102
+ - !ruby/regexp /vendor/
103
+ ```
104
+
105
+ As you would expect, `included` sets an array of included files (or globs) and `excluded` sets an array of files, globs or regexes of files to exclude from the evaluation.
106
+
107
+
81
108
  ## Philosophy
82
109
 
83
110
  Inch was created to help people document their code, therefore it may be more important to look at **what it does not** do than at what it does.
@@ -36,10 +36,15 @@ module Inch
36
36
  true
37
37
  end
38
38
 
39
+ def overloaded?
40
+ end
41
+
39
42
  def parameters
40
43
  @parameters ||= all_parameter_names.map do |name|
41
44
  signature_name = in_signature(name)
42
- tag = parameter_tag(name) || parameter_tag(signature_name)
45
+ tag = parameter_tag(name) || parameter_tag(signature_name) ||
46
+ overload_tag_with_parameter(name)
47
+
43
48
  MethodParameterObject.new(self, name, signature_name, tag)
44
49
  end
45
50
  end
@@ -106,8 +111,35 @@ module Inch
106
111
  (signature_parameter_names & possible_names).first
107
112
  end
108
113
 
114
+ def normalize_parameter_name(name)
115
+ # remove leading and trailing brackets
116
+ # (sometimes used to indicate optional parameters in overload
117
+ # signatures)
118
+ name.gsub(/[\[\]]/, '')
119
+ end
120
+
121
+ def overload_tags
122
+ object.tags(:overload)
123
+ end
124
+
125
+ # Returns all parameter names from all overload signatures.
126
+ # @todo analyse each signature on its own
127
+ def overloaded_parameter_names
128
+ overload_tags.map do |tag|
129
+ tag.parameters.map do |parameter|
130
+ normalize_parameter_name(parameter[0])
131
+ end
132
+ end.flatten
133
+ end
134
+
135
+ def overload_tag_with_parameter(name)
136
+ overload_tags.detect do |tag|
137
+ tag.parameters.map(&:first).include?(name)
138
+ end
139
+ end
140
+
109
141
  def signature_parameter_names
110
- object.parameters.map(&:first)
142
+ object.parameters.map(&:first) + overloaded_parameter_names
111
143
  end
112
144
 
113
145
  def parameter_tag(param_name)
@@ -1,3 +1,3 @@
1
1
  module Inch
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3.rc1"
3
3
  end
@@ -30,6 +30,132 @@ module Foo
30
30
  end
31
31
  end
32
32
 
33
+ module Overloading
34
+ # Creates a {Sass::Script::Value::Color Color} object from red, green, and
35
+ # blue values.
36
+ #
37
+ # @see #rgba
38
+ # @overload rgb($red, $green, $blue)
39
+ # @param $red [Sass::Script::Value::Number] The amount of red in the color.
40
+ # Must be between 0 and 255 inclusive, or between `0%` and `100%`
41
+ # inclusive
42
+ # @param $green [Sass::Script::Value::Number] The amount of green in the
43
+ # color. Must be between 0 and 255 inclusive, or between `0%` and `100%`
44
+ # inclusive
45
+ # @param $blue [Sass::Script::Value::Number] The amount of blue in the
46
+ # color. Must be between 0 and 255 inclusive, or between `0%` and `100%`
47
+ # inclusive
48
+ # @return [Sass::Script::Value::Color]
49
+ # @raise [ArgumentError] if any parameter is the wrong type or out of bounds
50
+ def rgb(red, green, blue)
51
+ end
52
+ # Creates a {Sass::Script::Value::Color Color} from red, green, blue, and
53
+ # alpha values.
54
+ # @see #rgb
55
+ #
56
+ # @overload rgba($red, $green, $blue, $alpha)
57
+ # @param $red [Sass::Script::Value::Number] The amount of red in the
58
+ # color. Must be between 0 and 255 inclusive
59
+ # @param $green [Sass::Script::Value::Number] The amount of green in the
60
+ # color. Must be between 0 and 255 inclusive
61
+ # @param $blue [Sass::Script::Value::Number] The amount of blue in the
62
+ # color. Must be between 0 and 255 inclusive
63
+ # @param $alpha [Sass::Script::Value::Number] The opacity of the color.
64
+ # Must be between 0 and 1 inclusive
65
+ # @return [Sass::Script::Value::Color]
66
+ # @raise [ArgumentError] if any parameter is the wrong type or out of
67
+ # bounds
68
+ #
69
+ # @overload rgba($color, $alpha)
70
+ # Sets the opacity of an existing color.
71
+ #
72
+ # @example
73
+ # rgba(#102030, 0.5) => rgba(16, 32, 48, 0.5)
74
+ # rgba(blue, 0.2) => rgba(0, 0, 255, 0.2)
75
+ #
76
+ # @param $color [Sass::Script::Value::Color] The color whose opacity will
77
+ # be changed.
78
+ # @param $alpha [Sass::Script::Value::Number] The new opacity of the
79
+ # color. Must be between 0 and 1 inclusive
80
+ # @return [Sass::Script::Value::Color]
81
+ # @raise [ArgumentError] if `$alpha` is out of bounds or either parameter
82
+ # is the wrong type
83
+ def rgba(*args)
84
+ end
85
+
86
+ # Changes one or more properties of a color. This can change the red, green,
87
+ # blue, hue, saturation, value, and alpha properties. The properties are
88
+ # specified as keyword arguments, and replace the color's current value for
89
+ # that property.
90
+ #
91
+ # All properties are optional. You can't specify both RGB properties
92
+ # (`$red`, `$green`, `$blue`) and HSL properties (`$hue`, `$saturation`,
93
+ # `$value`) at the same time.
94
+ #
95
+ # @example
96
+ # change-color(#102030, $blue: 5) => #102005
97
+ # change-color(#102030, $red: 120, $blue: 5) => #782005
98
+ # change-color(hsl(25, 100%, 80%), $lightness: 40%, $alpha: 0.8) => hsla(25, 100%, 40%, 0.8)
99
+ # @overload change_color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])
100
+ # @param $color [Sass::Script::Value::Color]
101
+ # @param $red [Sass::Script::Value::Number] The new red component for the
102
+ # color, within 0 and 255 inclusive
103
+ # @param $green [Sass::Script::Value::Number] The new green component for
104
+ # the color, within 0 and 255 inclusive
105
+ # @param $blue [Sass::Script::Value::Number] The new blue component for the
106
+ # color, within 0 and 255 inclusive
107
+ # @param $hue [Sass::Script::Value::Number] The new hue component for the
108
+ # color, in degrees
109
+ # @param $saturation [Sass::Script::Value::Number] The new saturation
110
+ # component for the color, between `0%` and `100%` inclusive
111
+ # @param $lightness [Sass::Script::Value::Number] The new lightness
112
+ # component for the color, within `0%` and `100%` inclusive
113
+ # @param $alpha [Sass::Script::Value::Number] The new alpha component for
114
+ # the color, within 0 and 1 inclusive
115
+ # @return [Sass::Script::Value::Color]
116
+ # @raise [ArgumentError] if any parameter is the wrong type or out-of
117
+ # bounds, or if RGB properties and HSL properties are adjusted at the
118
+ # same time
119
+ def change_color(color, kwargs)
120
+ end
121
+
122
+ # Mixes two colors together. Specifically, takes the average of each of the
123
+ # RGB components, optionally weighted by the given percentage. The opacity
124
+ # of the colors is also considered when weighting the components.
125
+ #
126
+ # The weight specifies the amount of the first color that should be included
127
+ # in the returned color. The default, `50%`, means that half the first color
128
+ # and half the second color should be used. `25%` means that a quarter of
129
+ # the first color and three quarters of the second color should be used.
130
+ #
131
+ # @example
132
+ # mix(#f00, #00f) => #7f007f
133
+ # mix(#f00, #00f, 25%) => #3f00bf
134
+ # mix(rgba(255, 0, 0, 0.5), #00f) => rgba(63, 0, 191, 0.75)
135
+ # @overload mix($color1, $color2, $weight: 50%)
136
+ # @param $color1 [Sass::Script::Value::Color]
137
+ # @param $color2 [Sass::Script::Value::Color]
138
+ # @param $weight [Sass::Script::Value::Number] The relative weight of each
139
+ # color. Closer to `0%` gives more weight to `$color`, closer to `100%`
140
+ # gives more weight to `$color2`
141
+ # @return [Sass::Script::Value::Color]
142
+ # @raise [ArgumentError] if `$weight` is out of bounds or any parameter is
143
+ # the wrong type
144
+ def mix(color1, color2, weight = 50)
145
+ end
146
+
147
+ # Retrieve all hooks of a given name, or all hooks if name.nil?
148
+ # @overload hooks(name)
149
+ # Retrieve all hooks of a given name
150
+ # @param name [Symbol]
151
+ # @return [Array<#call>]
152
+ # @overload hooks()
153
+ # Retrieve all hooks
154
+ # @return [Hash<Symbol,Array<#call>>]
155
+ def hooks(name = nil)
156
+ end
157
+ end
158
+
33
159
  module YardError
34
160
  if defined? ::Deprecate
35
161
  Deprecate = ::Deprecate
@@ -42,5 +168,4 @@ module YardError
42
168
  unless Deprecate.respond_to?(:skip_during)
43
169
  def Deprecate.skip_during; yield; end
44
170
  end
45
-
46
171
  end
@@ -263,4 +263,16 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
263
263
  m2 = @objects.find("Foo#method_with_splat_parameter2")
264
264
  assert_equal m1.score, m2.score
265
265
  end
266
+
267
+ def test_overloading1
268
+ list = []
269
+ list << @objects.find("Overloading#rgb")
270
+ list << @objects.find("Overloading#rgba")
271
+ list << @objects.find("Overloading#change_color")
272
+ list << @objects.find("Overloading#mix")
273
+ list << @objects.find("Overloading#hooks")
274
+ list.each do |m|
275
+ assert_equal 100, m.score.to_i, "#{m.fullname} did not get 100"
276
+ end
277
+ end
266
278
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - René Föhring
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-06 00:00:00.000000000 Z
11
+ date: 2014-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -292,12 +292,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
292
292
  version: '0'
293
293
  required_rubygems_version: !ruby/object:Gem::Requirement
294
294
  requirements:
295
- - - ">="
295
+ - - ">"
296
296
  - !ruby/object:Gem::Version
297
- version: '0'
297
+ version: 1.3.1
298
298
  requirements: []
299
299
  rubyforge_project:
300
- rubygems_version: 2.2.0
300
+ rubygems_version: 2.2.2
301
301
  signing_key:
302
302
  specification_version: 4
303
303
  summary: Documentation measurement tool for Ruby