Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- # encoding: utf-8
- class C
- class << self
- def public_method
- puts 'I am a public method, calling private method'
- private_method
- end
- private
- def private_method
- puts 'I am a private method'
- end
- end
- end
- module M1
- class << self
- def public_method
- puts 'I am a public method, calling private method'
- private_method
- end
- private
- def private_method
- puts 'I am a private method'
- end
- end
- end
- module M2
- module_function
- def public_method
- puts 'I am a public method, calling private method'
- private_method
- end
- private
- def private_method
- puts 'I am a private method'
- end
- end
- module M3 # ok
- extend self
- def public_method
- puts 'I am a public method, calling private method'
- private_method
- end
- private
- def private_method
- puts 'I am a private method'
- end
- end
- class C1; extend M1; end
- class C2; extend M2; end
- class C3; extend M3; end
- class C1_; include M1; end
- class C2_; include M2; end
- class C3_; include M3; end
- cases = ['C', 'M'].map { |prefix| ['', *(1..3)].map { |suffix| ["#{prefix}#{suffix}_", "#{prefix}#{suffix}"] } }.flatten
- cases.each do |testcase|
- if Object.const_defined?(testcase)
- begin
- klass = Object.const_get(testcase)
- puts "#{testcase}.public_method"
- klass.public_method
- rescue
- puts "\033[31mCase raised: #{testcase}\033[0m"
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment