brakefast 0.0.1 → 0.0.2

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.
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