textris 0.1.8 → 0.1.9
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 +4 -4
- data/README.md +11 -10
- data/lib/textris/delivery/mail.rb +17 -19
- data/lib/textris/message.rb +17 -5
- data/lib/textris/version.rb +1 -1
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb703c3bd61fb19f5b040f6225d6c390fc1c2473
|
4
|
+
data.tar.gz: a42312ca7c46a2f18dc15b739c58ae87157b85c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e30b26878f3cc4894b9b3189a29579c1b4fdc06a7f84a5a3bbf598c9be940725fd14304d34fb1a3d2e8a6598aa044810b0311335ca4807b889abb32fa1f98650
|
7
|
+
data.tar.gz: 43f57914ef22307eb2095b787f68763c1a5ce0ac0069b1225d2f349d5f89687c977052cb4617df16daaa3773be3cb71753cc6dbac5d077b2058db8a47b05e58b
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/visualitypl/textris)
|
4
4
|
[](https://codeclimate.com/github/visualitypl/textris)
|
5
|
+
[](https://scrutinizer-ci.com/g/visualitypl/textris/?branch=master)
|
5
6
|
|
6
7
|
Simple gem for implementing texter classes which allow sending SMS messages in similar way to how e-mails are implemented and sent with ActionMailer-based mailers.
|
7
8
|
|
@@ -13,7 +14,7 @@ Unlike similar gems, **textris** has some unique features:
|
|
13
14
|
- multiple, per-environment configurable and chainable delivery methods
|
14
15
|
- extensible with any number of custom delivery methods (also chainable)
|
15
16
|
- support for testing using self-explanatory `Textris::Base.deliveries`
|
16
|
-
- simple, extensible
|
17
|
+
- simple, extensible, fully tested code written from the ground up instead of copying *ActionMailer*
|
17
18
|
|
18
19
|
## Installation
|
19
20
|
|
@@ -23,7 +24,7 @@ Add to `Gemfile`:
|
|
23
24
|
gem 'textris'
|
24
25
|
```
|
25
26
|
|
26
|
-
|
27
|
+
Then run:
|
27
28
|
|
28
29
|
bundle install
|
29
30
|
|
@@ -174,14 +175,14 @@ config.textris_mail_body_template = '%{content}'
|
|
174
175
|
|
175
176
|
You can use the following interpolations in your mail templates:
|
176
177
|
|
177
|
-
- `%{app}`: application name (
|
178
|
-
- `%{env}`: enviroment name (
|
179
|
-
- `%{texter}`: texter name (
|
180
|
-
- `%{action}`: action name (
|
181
|
-
- `%{from_name}`: name of the sender (
|
182
|
-
- `%{from_phone}`: phone number of the sender (
|
183
|
-
- `%{to_phone}`: phone number of the recipient (
|
184
|
-
- `%{content}`: message content (
|
178
|
+
- `%{app}`: application name (e.g. `AppName`)
|
179
|
+
- `%{env}`: enviroment name (e.g. `test` or `production`)
|
180
|
+
- `%{texter}`: texter name (e.g. `User`)
|
181
|
+
- `%{action}`: action name (e.g. `welcome`)
|
182
|
+
- `%{from_name}`: name of the sender (e.g. `Our Team`)
|
183
|
+
- `%{from_phone}`: phone number of the sender (e.g. `48666777888`)
|
184
|
+
- `%{to_phone}`: phone number of the recipient (e.g. `48111222333`)
|
185
|
+
- `%{content}`: message content (e.g. `Welcome to our system, Mr Jones!`)
|
185
186
|
|
186
187
|
You can add optional interpolation modifiers using the `%{variable:modifiers}` syntax. These are most useful for making names e-mail friendly. The following modifiers are available:
|
187
188
|
|
@@ -42,39 +42,37 @@ module Textris
|
|
42
42
|
"%{content}"
|
43
43
|
end
|
44
44
|
|
45
|
-
def apply_template(template, message,
|
45
|
+
def apply_template(template, message, variables)
|
46
46
|
template.gsub(/\%\{[a-z_:]+\}/) do |match|
|
47
47
|
directive = match.gsub(/[%{}]/, '')
|
48
|
-
|
48
|
+
key = directive.split(':').first
|
49
49
|
modifiers = directive.split(':')[1] || ''
|
50
50
|
|
51
|
-
content = get_template_interpolation(
|
51
|
+
content = get_template_interpolation(key, message, variables)
|
52
52
|
content = apply_template_modifiers(content, modifiers.chars)
|
53
|
+
content = 'unknown' unless content.present?
|
53
54
|
|
54
55
|
content
|
55
56
|
end
|
56
57
|
end
|
57
58
|
|
58
|
-
def get_template_interpolation(
|
59
|
-
content = case
|
59
|
+
def get_template_interpolation(key, message, variables)
|
60
|
+
content = case key
|
61
|
+
when 'app', 'env'
|
62
|
+
get_rails_variable(key)
|
63
|
+
when 'texter', 'action', 'from_name', 'from_phone', 'content'
|
64
|
+
message.send(key)
|
65
|
+
else
|
66
|
+
variables[key.to_sym]
|
67
|
+
end.to_s.strip
|
68
|
+
end
|
69
|
+
|
70
|
+
def get_rails_variable(var)
|
71
|
+
case var
|
60
72
|
when 'app'
|
61
73
|
Rails.application.class.parent_name
|
62
74
|
when 'env'
|
63
75
|
Rails.env
|
64
|
-
when 'texter'
|
65
|
-
message.texter.to_s.split('::').last.to_s.sub(/Texter$/, '')
|
66
|
-
when 'action', 'from_name'
|
67
|
-
message.send(var)
|
68
|
-
when 'content', 'from_phone'
|
69
|
-
message.send(var)
|
70
|
-
else
|
71
|
-
value = vars[var.to_sym]
|
72
|
-
end.to_s.strip
|
73
|
-
|
74
|
-
if content.present?
|
75
|
-
content
|
76
|
-
else
|
77
|
-
'unknown'
|
78
76
|
end
|
79
77
|
end
|
80
78
|
|
data/lib/textris/message.rb
CHANGED
@@ -34,17 +34,29 @@ module Textris
|
|
34
34
|
self
|
35
35
|
end
|
36
36
|
|
37
|
+
def texter
|
38
|
+
if @texter.present?
|
39
|
+
@texter.to_s.split('::').last.to_s.sub(/Texter$/, '')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
37
43
|
private
|
38
44
|
|
39
45
|
def parse_from(from)
|
40
|
-
|
41
|
-
|
42
|
-
|
46
|
+
parse_from_dual(from) || parse_from_singular(from)
|
47
|
+
end
|
48
|
+
|
49
|
+
def parse_from_dual(from)
|
50
|
+
if (matches = from.to_s.match(/(.*)\<(.*)\>\s*$/).to_a).size == 3 &&
|
43
51
|
Phony.plausible?(matches[2])
|
44
52
|
[matches[1].strip, Phony.normalize(matches[2])]
|
45
|
-
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def parse_from_singular(from)
|
57
|
+
if Phony.plausible?(from)
|
46
58
|
[nil, Phony.normalize(from)]
|
47
|
-
|
59
|
+
elsif from.present?
|
48
60
|
[from.strip, nil]
|
49
61
|
end
|
50
62
|
end
|
data/lib/textris/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: textris
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karol Słuszniak
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.9'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: scrutinizer-ocular
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: actionmailer
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|