embrace 0.2.0 → 1.0.0
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/.coveralls.yml +1 -0
- data/.travis.yml +11 -0
- data/README.md +105 -9
- data/embrace.gemspec +3 -0
- data/lib/embrace/brackets.rb +1 -2
- data/lib/embrace/string_methods.rb +6 -10
- data/lib/embrace/version.rb +1 -1
- data/lib/embrace.rb +6 -58
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75b37f0f9a63be6227d517a43fd646e59be725d9
|
4
|
+
data.tar.gz: 626f977a239048160e1ed9494d37e6933f4e3c54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fbc5529b32346338814f34d0ea9cb4dc18c7d44ed41439e5ada2e1ee4524326cbbfab191ea2b4b247e2cf2ff53d7000b4d0b08825c9de83392364b8fd5e902d
|
7
|
+
data.tar.gz: a6ff5d1f94a1d09c49be21cf218d170407444e2c79bd5948fcf72d6e780fed00d6515e4923199dee15d09a526413f0a8a60e16b46cf89f8426d12a5070de0eab
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,97 @@
|
|
1
1
|
# Embrace
|
2
2
|
|
3
|
-
|
3
|
+
[![Gem Version][gem-badge]][gem]
|
4
|
+
[![Build status][build-badge]][build]
|
5
|
+
[![Coverage Status][coverage-badge]][coverage]
|
4
6
|
|
5
|
-
|
7
|
+
Embrace is a simply library for bracketing strings, or parts of strings. While it focuses on common
|
8
|
+
bracketing styles - `()`, `[]`, and `{}` - you can use custom styles, and even wrap text in arbitrary
|
9
|
+
strings.
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
The simplest way to use Embrace is to use its `String` refinements. Just put the following in your
|
14
|
+
file, module or class.
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
require "embrace"
|
18
|
+
|
19
|
+
module MyModule
|
20
|
+
using Embrace
|
21
|
+
|
22
|
+
# ...
|
23
|
+
end
|
24
|
+
```
|
25
|
+
|
26
|
+
If you want Embrace's `String` methods to be available globally, then include `Embrace::StringMethods`
|
27
|
+
in an app initializer somewhere.
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
require "embrace"
|
31
|
+
|
32
|
+
String.include Embrace::StringMethods
|
33
|
+
```
|
34
|
+
|
35
|
+
### Basic bracketing methods
|
36
|
+
|
37
|
+
Whether you use the refinements, or include the string methods, the following string methods will become
|
38
|
+
available:
|
39
|
+
|
40
|
+
```
|
41
|
+
"text".bracket # => "[text]"
|
42
|
+
"text".parenthesize # => "(text)"
|
43
|
+
"text".brace # => "{text}"
|
44
|
+
```
|
45
|
+
|
46
|
+
### Custom bracket styles
|
47
|
+
|
48
|
+
Each of the methods accepts a `style` parameter, which will be used to bracket the text. Note that the
|
49
|
+
style should include both opening and closing strings, but is otherwise entirely arbitrary. The first
|
50
|
+
half of the style will be placed before the text, and the second half will be placed after the text. If
|
51
|
+
the style is an odd length, the extra character will go after the text.
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
"text".bracket(style: "<b></b>") # => "<b>text</b>"
|
55
|
+
"text".parenthesize(style: "<-->") # => "<-text->"
|
56
|
+
"text".brace(style: "«»") # => "«text»"
|
57
|
+
```
|
58
|
+
|
59
|
+
### Bracketing portions of text
|
60
|
+
|
61
|
+
All of the Embrace methods accept a `pattern` parameter. If supplied, then only the matching portions of
|
62
|
+
the string will be bracketed.
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
"the quick brown fox.".parenthesize # => "(the quick brown fox.)"
|
66
|
+
"the quick brown fox.".parenthesize(pattern: /quick|fox/) # => "the (quick) brown (fox)."
|
67
|
+
```
|
68
|
+
|
69
|
+
### Wrapping text in arbitrary strings
|
70
|
+
|
71
|
+
If you need to wrap text in asymmetrical strings, then you can supply an array as the `style` parameter.
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
"the quick brown fox.".bracket(style: %w{ beginning> <end }) # => "beginning>the quick brown fox.<end"
|
75
|
+
```
|
76
|
+
|
77
|
+
Note that only the first two elements of the array will be use.
|
78
|
+
|
79
|
+
### Module function
|
80
|
+
|
81
|
+
`bracket` is available as a module function in the `Embrace` module.
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
Embrace.bracket("some text", style: "<i></i>") # => "<i>some text</i>"
|
85
|
+
```
|
86
|
+
|
87
|
+
### Currying
|
88
|
+
|
89
|
+
Finally, you can create a "curried" version of `Embrace.bracket`.
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
wrapper = Embrace.bracketer(style: "()", pattern: "text")
|
93
|
+
[ "some text", "some more text" ].map(&wrapper) # => [ "some (text)", "some more (text)" ]
|
94
|
+
```
|
6
95
|
|
7
96
|
## Installation
|
8
97
|
|
@@ -20,22 +109,29 @@ Or install it yourself as:
|
|
20
109
|
|
21
110
|
$ gem install embrace
|
22
111
|
|
23
|
-
## Usage
|
24
|
-
|
25
|
-
TODO: Write usage instructions here
|
26
|
-
|
27
112
|
## Development
|
28
113
|
|
29
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
|
114
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
|
115
|
+
You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
30
116
|
|
31
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update
|
117
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update
|
118
|
+
the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the
|
119
|
+
version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
120
|
|
33
121
|
## Contributing
|
34
122
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/embrace. This project is
|
123
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/embrace. This project is
|
124
|
+
intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the
|
125
|
+
[Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
36
126
|
|
37
127
|
|
38
128
|
## License
|
39
129
|
|
40
130
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
41
131
|
|
132
|
+
[gem-badge]: https://badge.fury.io/rb/embrace.svg
|
133
|
+
[gem]: http://badge.fury.io/rb/embrace
|
134
|
+
[build-badge]: https://travis-ci.org/johncarney/embrace.svg?branch=master
|
135
|
+
[build]: https://travis-ci.org/johncarney/embrace
|
136
|
+
[coverage-badge]: https://img.shields.io/coveralls/johncarney/embrace.svg
|
137
|
+
[coverage]: https://coveralls.io/r/johncarney/embrace?branch=master
|
data/embrace.gemspec
CHANGED
@@ -21,7 +21,10 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
+
spec.required_ruby_version = ">= 2.1.0"
|
25
|
+
|
24
26
|
spec.add_development_dependency "bundler", "~> 1.13"
|
25
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
29
|
+
spec.add_development_dependency "coveralls"
|
27
30
|
end
|
data/lib/embrace/brackets.rb
CHANGED
@@ -1,19 +1,15 @@
|
|
1
1
|
module Embrace
|
2
2
|
module StringMethods
|
3
|
-
def
|
4
|
-
Embrace.
|
3
|
+
def bracket(style: "[]", **options)
|
4
|
+
Embrace.bracket(self, style: style, **options)
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
Embrace.bracket(self, style: style)
|
7
|
+
def parenthesize(style: "()", **options)
|
8
|
+
Embrace.bracket(self, style: style, **options)
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
12
|
-
Embrace.bracket(self, style: style)
|
13
|
-
end
|
14
|
-
|
15
|
-
def brace(style: "{}")
|
16
|
-
Embrace.bracket(self, style: style)
|
11
|
+
def brace(style: "{}", **options)
|
12
|
+
Embrace.bracket(self, style: style, **options)
|
17
13
|
end
|
18
14
|
end
|
19
15
|
end
|
data/lib/embrace/version.rb
CHANGED
data/lib/embrace.rb
CHANGED
@@ -3,71 +3,19 @@ require "embrace/brackets"
|
|
3
3
|
require "embrace/string_methods"
|
4
4
|
|
5
5
|
module Embrace
|
6
|
-
using Brackets
|
7
|
-
|
8
6
|
refine String do
|
9
7
|
include StringMethods
|
10
8
|
end
|
11
9
|
|
12
10
|
module_function
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
"#{before}#{text}#{after}"
|
18
|
-
end
|
19
|
-
|
20
|
-
def wrap_if(text, *with, &test)
|
21
|
-
return text unless test.yield text
|
22
|
-
|
23
|
-
wrap(text, *with)
|
24
|
-
end
|
25
|
-
|
26
|
-
def wrap_unless(text, *with, &test)
|
27
|
-
return text if test.yield text
|
28
|
-
|
29
|
-
wrap(text, *with)
|
30
|
-
end
|
31
|
-
|
32
|
-
# wrapper
|
33
|
-
|
34
|
-
def wrapper(*with)
|
35
|
-
->(text) { wrap(text, *with) }
|
36
|
-
end
|
37
|
-
|
38
|
-
def if_wrapper(*with, &test)
|
39
|
-
->(text) { wrap_if(text, *with, &test) }
|
40
|
-
end
|
41
|
-
|
42
|
-
def unless_wrapper(*with, &test)
|
43
|
-
->(text) { wrap_unless(text, *with, &test) }
|
44
|
-
end
|
45
|
-
|
46
|
-
# bracket
|
47
|
-
|
48
|
-
def bracket(text, style:)
|
49
|
-
wrap(text, *Brackets(style))
|
50
|
-
end
|
51
|
-
|
52
|
-
def bracket_if(text, style:, &test)
|
53
|
-
wrap_if(text, *Brackets(style), &test)
|
54
|
-
end
|
55
|
-
|
56
|
-
def bracket_unless(text, style:, &test)
|
57
|
-
wrap_unless(text, *Brackets(style), &test)
|
58
|
-
end
|
59
|
-
|
60
|
-
# bracketer
|
61
|
-
|
62
|
-
def bracketer(style:)
|
63
|
-
wrapper(*Brackets(style))
|
64
|
-
end
|
65
|
-
|
66
|
-
def if_bracketer(style:, &test)
|
67
|
-
if_wrapper(*Brackets(style), &test)
|
12
|
+
def bracket(text, style:, pattern: /\A.*\z/)
|
13
|
+
opening, closing = Brackets(style)
|
14
|
+
text.gsub(pattern, "#{opening}\\0#{closing}")
|
68
15
|
end
|
69
16
|
|
70
|
-
def
|
71
|
-
|
17
|
+
def bracketer(style:, **options)
|
18
|
+
brackets = Brackets(style)
|
19
|
+
->(text) { bracket(text, style: brackets, **options)}
|
72
20
|
end
|
73
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Carney
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: coveralls
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: Simple library for enclosing text in brackets, or anything else that
|
56
70
|
takes your fancy.
|
57
71
|
email:
|
@@ -60,6 +74,7 @@ executables: []
|
|
60
74
|
extensions: []
|
61
75
|
extra_rdoc_files: []
|
62
76
|
files:
|
77
|
+
- ".coveralls.yml"
|
63
78
|
- ".gitignore"
|
64
79
|
- ".rspec"
|
65
80
|
- ".travis.yml"
|
@@ -87,7 +102,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
87
102
|
requirements:
|
88
103
|
- - ">="
|
89
104
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
105
|
+
version: 2.1.0
|
91
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
107
|
requirements:
|
93
108
|
- - ">="
|