Apply PIE to nghttpx
[platform/upstream/nghttp2.git] / third-party / mruby / lib / mruby-core-ext.rb
1 class Object
2   class << self
3     def attr_block(*syms)
4       syms.flatten.each do |sym|
5         class_eval "def #{sym}(&block);block.call(@#{sym}) if block_given?;@#{sym};end"
6       end
7     end
8   end
9 end
10
11 class String
12   def relative_path_from(dir)
13     Pathname.new(File.expand_path(self)).relative_path_from(Pathname.new(File.expand_path(dir))).to_s
14   end
15
16   def relative_path
17     relative_path_from(Dir.pwd)
18   end
19
20   # Compatible with 1.9 on 1.8
21   unless (sprintf("%{a}", :a => 1) rescue false)
22     def %(params)
23       if params.is_a?(Hash)
24         str = self.clone
25         params.each do |k, v|
26           str.gsub!("%{#{k}}") { v }
27         end
28         str
29       else
30         if params.is_a?(Array)
31           sprintf(self, *params)
32         else
33           sprintf(self, params)
34         end
35       end
36     end
37   end
38 end
39
40 class Symbol
41   # Compatible with 1.9 on 1.8
42   unless method_defined?(:to_proc)
43     def to_proc
44       proc { |obj, *args| obj.send(self, *args) }
45     end
46   end
47 end
48
49 module Enumerable
50   # Compatible with 1.9 on 1.8
51   unless method_defined?(:each_with_object)
52     def each_with_object(memo)
53       return to_enum :each_with_object, memo unless block_given?
54       each { |obj| yield obj, memo }
55       memo
56     end
57   end
58 end
59
60 $pp_show = true
61
62 if $verbose.nil?
63   if Rake.respond_to?(:verbose) && !Rake.verbose.nil?
64     if Rake.verbose.class == TrueClass
65       # verbose message logging
66       $pp_show = false
67     else
68       $pp_show = true
69       Rake.verbose(false)
70     end
71   else
72     # could not identify rake version
73     $pp_show = false
74   end
75 else
76   $pp_show = false if $verbose
77 end
78
79 def _pp(cmd, src, tgt=nil, options={})
80   return unless $pp_show
81
82   width = 5
83   template = options[:indent] ? "%#{width*options[:indent]}s %s %s" : "%-#{width}s %s %s"
84   puts template % [cmd, src, tgt ? "-> #{tgt}" : nil]
85 end