brakefast 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8eb0828ea86e50b2c475a7d88359d907e350bc20
4
- data.tar.gz: 40e8588718b3babe9075ae23d86deae3128090c0
3
+ metadata.gz: 17b82ae8da9b3f8749d996d2af4de3c61be6f8e7
4
+ data.tar.gz: 4b93ff71c794ef12005ca7d0f86e416fe1c5fe7c
5
5
  SHA512:
6
- metadata.gz: c109fa8a8021c1f9b06d952f6edf71a9b860de7f4ed7c965050ae6fa3870f87908f99a72aac1852bd0540149ebcb55986b590faf59fded74ff2c8c51f37126a4
7
- data.tar.gz: 0a193a1b9474c0a524030fbcbfcdcbfc1a8e76f684ff39ee155fbec1044ca95815d3ccbcb71ac3922898bfabcd6a5e5483156db04b8e79e9237c79e380a4c2c4
6
+ metadata.gz: 429bc836fb6e392b8b5166c475df8c73abc97e9fb3e995a5d74fe823ad9fea292bdfe3a6ee25d6c942edb9ed81516924098549ad3bcfba0cd14e398daec50abb
7
+ data.tar.gz: db5b1c1e3d65523d4208b3bcb705d916454b1f39c312c79c0cb88106aff8f19458a3516d4e154e0f0e06357043fdfb0769eb53246bc10d46a3b5883947760e24
@@ -7,7 +7,6 @@ module Brakefast
7
7
 
8
8
  attr_reader :vulnerability
9
9
  def_delegator :@vulnerability, :method, :target_method_name
10
- def_delegator :@vulnerability, :message, :message
11
10
  def_delegator :@vulnerability, :file, :file
12
11
  def_delegator :@vulnerability, :line, :line
13
12
 
@@ -40,18 +39,49 @@ module Brakefast
40
39
  raise "override me"
41
40
  end
42
41
 
42
+ def message
43
+ vulnerability.message
44
+ end
45
+
46
+ def escaped_message
47
+ message.gsub("'", "\\\\'")
48
+ end
49
+
43
50
  private
44
51
 
45
52
  def create_module_name(s)
46
53
  s.to_s.gsub("::", "__") + "BrakefastHook"
47
54
  end
48
55
 
49
- def create_hook(module_name, hookee_mod)
50
- name = create_module_name(module_name)
51
- Brakefast.const_set(name, hookee_mod)
52
- ::Object.const_get(module_name).class_eval %Q{
53
- prepend Brakefast::#{name}
54
- }
56
+ def create_hook
57
+ name = create_module_name(target_module_name)
58
+ if Brakefast.const_defined?(name)
59
+ mod = Brakefast.const_get(name)
60
+ else
61
+ mod = Module.new
62
+ mod.module_eval %Q{
63
+ def self.prepended(base)
64
+ class << base
65
+ self.prepend(ClassMethods)
66
+ end
67
+ end
68
+ module ClassMethods
69
+ end
70
+ }
71
+ end
72
+
73
+ yield(mod)
74
+
75
+ # prepend once and create module once only.
76
+ if mod.name.nil?
77
+ Brakefast.const_set(name, mod)
78
+ mod = target_module_name.to_s.constantize rescue nil
79
+ if mod
80
+ mod.class_eval %Q{
81
+ prepend Brakefast::#{name}
82
+ }
83
+ end
84
+ end
55
85
  end
56
86
  end
57
87
  end
@@ -5,17 +5,24 @@ module Brakefast
5
5
 
6
6
  def set_detector_module
7
7
  if target_module_name && target_method_name
8
- mod = Module.new
9
- mod.module_eval %Q{
10
- def #{target_method_name}
11
- n = Brakefast::Notification::GenericWarnings.new(self, '#{message}',
12
- '#{file}','#{line}')
13
- Brakefast.notification_collector.add(n)
14
- super
8
+ create_hook do |mod|
9
+ if md = /\A(#{target_module_name}|s\(:self\))\.(.*)/.match(target_method_name)
10
+ m = mod.const_get(:ClassMethods)
11
+ name = md[2]
12
+ else
13
+ m = mod
14
+ name = target_method_name
15
15
  end
16
- }
17
16
 
18
- create_hook(target_module_name, mod)
17
+ m.module_eval %Q{
18
+ def #{name}(*args)
19
+ n = Brakefast::Notification::GenericWarnings.new(self, '#{escaped_message}',
20
+ '#{file}','#{line}')
21
+ Brakefast.notification_collector.add(n)
22
+ super
23
+ end
24
+ }
25
+ end
19
26
  end
20
27
  end
21
28
 
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Brakefast
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brakefast
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sho Hashimoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-30 00:00:00.000000000 Z
11
+ date: 2015-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uniform_notifier