tokite 0.1.2 → 0.1.3

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: ed46c4561bc0d16d27c9ea6bbc79b31b840e4e97
4
- data.tar.gz: e348d0f776400676808b4b5fe3bb5f4257872af0
3
+ metadata.gz: cb6c1963e12671ffb181f21e5a803cb8647b0fca
4
+ data.tar.gz: 70dd44f3f98fd90d117bba39141ce8bea4f3c18e
5
5
  SHA512:
6
- metadata.gz: 6aa4f62ed0f3e02a80d51f7327fe5ae6368667a13a55661dcabfda6632e69b399dfe5469b3ae93a0dd8169f916a7b6ba5815c3b6f6ac8b9ce5df1ef8c33ea33d
7
- data.tar.gz: '0951d5b98aec5e9ae357cee76d1f2f71891da7483f8db70ec035d5add538c3fb49a9f18e5c944b5027c89b8077efe4010abad6ef5e3cf44ae8dc29ddae73ad2a'
6
+ metadata.gz: 54a5e28cc53e790c81e14015b50c7240c895d5653feb512921654655f453f39165b30f625faf525c69c05d1dd1b4c3fd11c1a25a4f098b2593d5335800c43690
7
+ data.tar.gz: e843fd54bdd8091a801a55deaa32e8dcdf39980fd74551c26ec50987c4ab753b237430347915c6e2136147fa0486e06031854e90babbcc4e479dce22f6cb2b72
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Tokite [![CircleCI](https://circleci.com/gh/hogelog/tokite.svg?style=svg)](https://circleci.com/gh/hogelog/tokite)
1
+ # Tokite [![CircleCI](https://circleci.com/gh/hogelog/tokite.svg?style=svg)](https://circleci.com/gh/hogelog/tokite) [![Gem Version](https://badge.fury.io/rb/tokite.svg)](https://badge.fury.io/rb/tokite)
2
2
 
3
3
  Tokite send GitHub event (pull-request, issue and comment) to Slack.
4
4
 
@@ -19,15 +19,27 @@ module Tokite
19
19
 
20
20
  def fire!
21
21
  return unless event.notify?
22
+ payloads = []
22
23
  Rule.matched_rules(event).each do |rule|
23
24
  attachment = event.slack_attachment
24
25
  attachment[:fallback] += "\n\n#{rule.slack_attachment_fallback}"
25
26
  attachment[:text] += "\n\n#{rule.slack_attachment_text}"
26
27
  emoji = rule.icon_emoji.chomp.presence
27
28
  additional_text = rule.additional_text
28
-
29
- notify!(channel: rule.channel, text: event.slack_text, icon_emoji: emoji, attachments: [attachment])
30
- notify!(channel: rule.channel, text: additional_text, icon_emoji: emoji, parse: "full") if additional_text.present?
29
+
30
+ if payloads.none? {|payload| payload[:channel] == rule.channel && payload[:icon_emoji] == emoji && payload[:additional_text] == additional_text }
31
+ payloads << {
32
+ channel: rule.channel,
33
+ text: event.slack_text,
34
+ icon_emoji: emoji,
35
+ additional_text: additional_text,
36
+ attachments: [attachment],
37
+ }
38
+ end
39
+ end
40
+ payloads.each do |payload|
41
+ notify!(channel: payload[:channel], text: payload[:text], icon_emoji: payload[:emoji], attachments: payload[:attachment])
42
+ notify!(channel: payload[:channel], text: payload[:additional_text], icon_emoji: payload[:emoji], parse: "full") if payload[:additional_text].present?
31
43
  end
32
44
  end
33
45
 
@@ -3,7 +3,7 @@ require "parslet"
3
3
  module Tokite
4
4
  class SearchQuery
5
5
  attr_reader :query, :tree
6
-
6
+
7
7
  class ParseError < StandardError
8
8
  end
9
9
 
@@ -11,12 +11,11 @@ module Tokite
11
11
  rule(:space) { match('\s').repeat(1) }
12
12
  rule(:space?) { space.maybe }
13
13
 
14
- rule(:escape) { str('\\').ignore }
15
14
  rule(:quot) { str('"') }
16
- rule(:quoted_char) { escape >> any | match('[^"]') }
15
+ rule(:quoted_char) { (str('\\').ignore >> any) | match('[^"]') }
17
16
  rule(:char) { match('[^\s]') }
18
17
  rule(:slash) { str('/') }
19
- rule(:regexp_char) { escape >> any | match('[^/]') }
18
+ rule(:regexp_char) { (str('\\').ignore >> slash) | match('[^/]') }
20
19
 
21
20
  rule(:regexp_word) { slash >> regexp_char.repeat(1).as(:regexp_word) >> slash }
22
21
  rule(:quot_word) { quot >> quoted_char.repeat(1).as(:word) >> quot }
@@ -37,7 +36,7 @@ module Tokite
37
36
  rescue Parslet::ParseFailed => e
38
37
  raise ParseError, e
39
38
  end
40
-
39
+
41
40
  def initialize(query)
42
41
  @query = query
43
42
  @tree = Array.wrap(self.class.parse(query))
@@ -52,8 +51,8 @@ module Tokite
52
51
  targets = doc.values.map(&:downcase)
53
52
  end
54
53
  if word[:regexp_word]
55
- regexp = word[:regexp_word].to_s.downcase
56
- targets.any?{|text| text.match(regexp) }
54
+ regexp = Regexp.compile(word[:regexp_word].to_s, Regexp::IGNORECASE)
55
+ targets.any?{|text| regexp.match?(text) }
57
56
  else
58
57
  value = word[:word].to_s.downcase
59
58
  targets.any?{|text| text.index(value) }
@@ -1,6 +1,9 @@
1
1
  if ENV["SLACK_WEBHOOK_URL"]
2
2
  Tokite::Engine.config.slack_notifier = Slack::Notifier.new ENV["SLACK_WEBHOOK_URL"] do
3
- defaults username: ENV.fetch("SLACK_NAME", "tokite"),
4
- icon_emoji: ENV.fetch("SLACK_ICON_EMOJI", ":sunglasses:")
3
+ if ENV["SLACK_ICON_EMOJI"]
4
+ defaults username: ENV.fetch("SLACK_NAME", "tokite"), icon_emoji: ENV["SLACK_ICON_EMOJI"]
5
+ else
6
+ defaults username: ENV.fetch("SLACK_NAME", "tokite")
7
+ end
5
8
  end
6
9
  end
@@ -1,3 +1,3 @@
1
1
  module Tokite
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tokite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - hogelog