Guest User

Untitled

a guest
Feb 17th, 2014
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.49 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. # encoding: utf-8
  3.  
  4. class C
  5.   class << self
  6.     def public_method
  7.       puts 'I am a public method, calling private method'
  8.       private_method
  9.     end
  10.  
  11.     private
  12.  
  13.     def private_method
  14.       puts 'I am a private method'
  15.     end
  16.   end
  17. end
  18.  
  19. module M1
  20.   class << self
  21.     def public_method
  22.       puts 'I am a public method, calling private method'
  23.       private_method
  24.     end
  25.  
  26.     private
  27.  
  28.     def private_method
  29.       puts 'I am a private method'
  30.     end
  31.   end
  32. end
  33.  
  34. module M2
  35.   module_function
  36.  
  37.   def public_method
  38.     puts 'I am a public method, calling private method'
  39.     private_method
  40.   end
  41.  
  42.   private
  43.  
  44.   def private_method
  45.     puts 'I am a private method'
  46.   end
  47. end
  48.  
  49. module M3 # ok
  50.   extend self
  51.  
  52.   def public_method
  53.     puts 'I am a public method, calling private method'
  54.     private_method
  55.   end
  56.  
  57.   private
  58.  
  59.   def private_method
  60.     puts 'I am a private method'
  61.   end
  62. end
  63.  
  64. class C1; extend M1; end
  65. class C2; extend M2; end
  66. class C3; extend M3; end
  67.  
  68. class C1_; include M1; end
  69. class C2_; include M2; end
  70. class C3_; include M3; end
  71.  
  72. cases =  ['C', 'M'].map { |prefix| ['', *(1..3)].map { |suffix| ["#{prefix}#{suffix}_", "#{prefix}#{suffix}"] } }.flatten
  73.  
  74. cases.each do |testcase|
  75.   if Object.const_defined?(testcase)
  76.     begin
  77.       klass = Object.const_get(testcase)
  78.       puts "#{testcase}.public_method"
  79.       klass.public_method
  80.     rescue
  81.       puts "\033[31mCase raised: #{testcase}\033[0m"
  82.     end
  83.   end
  84. end
Advertisement
Add Comment
Please, Sign In to add comment