thor 0.18.0 → 0.18.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.
@@ -1,3 +1,6 @@
1
+ ## 0.18.1, release 2013-03-30
2
+ * Revert regressions found in 0.18.0
3
+
1
4
  ## 0.18.0, release 2013-03-26
2
5
  * Remove rake2thor
3
6
  * Only display colors if output medium supports colors
@@ -97,28 +97,12 @@ class Thor
97
97
  #
98
98
  # user.rb
99
99
  #
100
- # The method referenced by %-string SHOULD be public. Otherwise you
101
- # get the exception with the corresponding error message.
100
+ # The method referenced can be either public or private.
102
101
  #
103
102
  def convert_encoded_instructions(filename)
104
103
  filename.gsub(/%(.*?)%/) do |initial_string|
105
- call_public_method($1.strip) or initial_string
106
- end
107
- end
108
-
109
- # Calls `base`'s public method `sym`.
110
- # Returns:: result of `base.sym` or `nil` if `sym` wasn't found in
111
- # `base`
112
- # Raises:: Thor::PrivateMethodEncodedError if `sym` references
113
- # a private method.
114
- def call_public_method(sym)
115
- if base.respond_to?(sym)
116
- base.send(sym)
117
- elsif base.respond_to?(sym, true)
118
- raise Thor::PrivateMethodEncodedError,
119
- "Method #{base.class}##{sym} should be public, not private"
120
- else
121
- nil
104
+ method = $1.strip
105
+ base.respond_to?(method, true) ? base.send(method) : initial_string
122
106
  end
123
107
  end
124
108
 
@@ -119,6 +119,18 @@ class Thor
119
119
  end
120
120
 
121
121
  module ClassMethods
122
+ def attr_reader(*) #:nodoc:
123
+ no_commands { super }
124
+ end
125
+
126
+ def attr_writer(*) #:nodoc:
127
+ no_commands { super }
128
+ end
129
+
130
+ def attr_accessor(*) #:nodoc:
131
+ no_commands { super }
132
+ end
133
+
122
134
  # If you want to raise an error for unknown options, call check_unknown_options!
123
135
  # This is disabled by default to allow dynamic invocations.
124
136
  def check_unknown_options!
@@ -578,9 +590,6 @@ class Thor
578
590
  # Return if it's not a public instance method
579
591
  return unless public_method_defined?(meth.to_sym)
580
592
 
581
- # Return if attr_* added the method
582
- return if caller.first.to_s[/`attr_(reader|writer|accessor)'/]
583
-
584
593
  return if @no_commands || !create_command(meth)
585
594
 
586
595
  is_thor_reserved_word?(meth, :command)
@@ -25,8 +25,4 @@ class Thor
25
25
 
26
26
  class MalformattedArgumentError < InvocationError
27
27
  end
28
-
29
- # Raised when a user tries to call a private method encoded in templated filename.
30
- class PrivateMethodEncodedError < Error
31
- end
32
28
  end
@@ -1,3 +1,3 @@
1
1
  class Thor
2
- VERSION = "0.18.0"
2
+ VERSION = "0.18.1"
3
3
  end
@@ -107,6 +107,16 @@ describe Thor::Actions::EmptyDirectory do
107
107
  expect(@action.send(:convert_encoded_instructions, "%file_name%.txt")).to eq("expected.txt")
108
108
  end
109
109
 
110
+ it "accepts and executes a private %\w+% encoded instruction" do
111
+ @action.base.extend Module.new {
112
+ private
113
+ def private_file_name
114
+ "expected"
115
+ end
116
+ }
117
+ expect(@action.send(:convert_encoded_instructions, "%private_file_name%.txt")).to eq("expected.txt")
118
+ end
119
+
110
120
  it "ignores an 'illegal' %\w+% encoded instruction" do
111
121
  expect(@action.send(:convert_encoded_instructions, "%some_name%.txt")).to eq("%some_name%.txt")
112
122
  end
@@ -114,17 +124,6 @@ describe Thor::Actions::EmptyDirectory do
114
124
  it "ignores incorrectly encoded instruction" do
115
125
  expect(@action.send(:convert_encoded_instructions, "%some.name%.txt")).to eq("%some.name%.txt")
116
126
  end
117
-
118
- it "raises an error if the instruction refers to a private method" do
119
- module PrivExt
120
- private
121
- def private_file_name
122
- "something_hidden"
123
- end
124
- end
125
- @action.base.extend(PrivExt)
126
- expect { @action.send(:convert_encoded_instructions, "%private_file_name%.txt") }.to raise_error Thor::PrivateMethodEncodedError
127
- end
128
127
  end
129
128
  end
130
129
  end
@@ -287,9 +287,5 @@ describe Thor::Base do
287
287
  expect(capture(:stderr){ MyScript.start(["some_attribute"]) }).to match(/Could not find/)
288
288
  expect(capture(:stderr){ MyScript.start(["some_attribute=", "foo"]) }).to match(/Could not find/)
289
289
  end
290
-
291
- it "respects visibility" do
292
- expect(MyScript.public_instance_methods).to_not include(:private_attribute)
293
- end
294
290
  end
295
291
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.18.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-26 00:00:00.000000000 Z
13
+ date: 2013-03-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -132,9 +132,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
132
  - - ! '>='
133
133
  - !ruby/object:Gem::Version
134
134
  version: '0'
135
- segments:
136
- - 0
137
- hash: 1077930939435781644
138
135
  required_rubygems_version: !ruby/object:Gem::Requirement
139
136
  none: false
140
137
  requirements:
@@ -196,3 +193,4 @@ test_files:
196
193
  - spec/subcommand_spec.rb
197
194
  - spec/thor_spec.rb
198
195
  - spec/util_spec.rb
196
+ has_rdoc: