na 1.1.1 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -8
- data/Gemfile.lock +1 -1
- data/README.md +26 -38
- data/bin/na +5 -5
- data/lib/na/next_action.rb +7 -5
- data/lib/na/prompt.rb +2 -1
- data/lib/na/version.rb +1 -1
- data/src/README.md +27 -42
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 182588b3837e44b8361cc7c77b1bb52e95323deb7be15062af5487bcca016c3d
|
4
|
+
data.tar.gz: c46e5ed7493ac655419e41154036913493fb21a5d73de68acd7d10923ea464f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91a8e4a51b093c696c691f240f2aa80d7775cd187c74954273bd477c9efbff8180dc14b895e98d1b825c26e2a87ef5393998dce741fc377cfe7a7cae4550d750
|
7
|
+
data.tar.gz: 82ff75620de7508e307f64f6d62286590ff8d68c657870ae4d11f91cd44fc8c6a09dcde14316768862b4dac5c889febbc87cdf46eb7b509457e8e7faaacc163c
|
data/CHANGELOG.md
CHANGED
@@ -1,18 +1,26 @@
|
|
1
|
-
### 1.1.
|
1
|
+
### 1.1.3
|
2
2
|
|
3
|
-
2022-09-28
|
3
|
+
2022-09-28 07:12
|
4
4
|
|
5
|
-
####
|
5
|
+
#### FIXED
|
6
6
|
|
7
|
-
-
|
7
|
+
- `na next --tag X` not working
|
8
|
+
|
9
|
+
### 1.1.2
|
10
|
+
|
11
|
+
2022-09-28 06:37
|
8
12
|
|
9
|
-
|
13
|
+
#### IMPROVED
|
14
|
+
|
15
|
+
- Detailed instructions after installing prompt hooks
|
10
16
|
|
11
|
-
|
17
|
+
### 1.1.1
|
12
18
|
|
13
|
-
|
19
|
+
2022-09-28 04:49
|
14
20
|
|
15
|
-
|
21
|
+
#### CHANGED
|
22
|
+
|
23
|
+
- Belated minor version bump
|
16
24
|
|
17
25
|
### 1.0.6
|
18
26
|
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
_If you're one of the rare people like me who find this useful, feel free to
|
10
10
|
[buy me some coffee][donate]._
|
11
11
|
|
12
|
-
The current version of `na` is 1.1.
|
12
|
+
The current version of `na` is 1.1.3
|
13
13
|
.
|
14
14
|
|
15
15
|
`na` ("next action") is a command line tool designed to make it easy to see what your next actions are for any project, right from the command line. It works with TaskPaper-formatted files (but any plain text format will do), looking for `@na` tags (or whatever you specify) in todo files in your current folder.
|
@@ -18,6 +18,14 @@ Used with Taskpaper files, it can add new todo items quickly from the command li
|
|
18
18
|
|
19
19
|
It can also auto-display next actions when you enter a project directory, automatically locating any todo files and listing their next actions when you `cd` to the project (optionally recursive). See the [Prompt Hooks](#prompt-hooks) section for details.
|
20
20
|
|
21
|
+
### Installation
|
22
|
+
|
23
|
+
Assuming you have Ruby and RubyGems installed, you can just run `gem install na`. If you run into errors, use `sudo gem install na`.
|
24
|
+
|
25
|
+
If you don't have Ruby/RubyGems, you can install them pretty easily with Homebrew, rvm, or asdf. I can't swear this tool is worth the time, but there _are_ a lot of great gems available...
|
26
|
+
|
27
|
+
|
28
|
+
|
21
29
|
### Features
|
22
30
|
|
23
31
|
You can list next actions in files in the current directory by typing `na`. By default, `na` looks for `*.taskpaper` files and extracts items tagged `@na` and not `@done`. All of these can be changed in the configuration.
|
@@ -36,14 +44,6 @@ You can also quickly add todo items from the command line with the `add` subcomm
|
|
36
44
|
|
37
45
|
If found, it will try to locate an `Inbox:` project, or create one if it doesn't exist. Any arguments after `add` will be combined to create a new task in TaskPaper format. They will automatically be assigned as next actions (tagged `@na`) and will show up when `na` lists the tasks for the project.
|
38
46
|
|
39
|
-
### Installation
|
40
|
-
|
41
|
-
Assuming you have Ruby and RubyGems installed, you can just run `gem install na`. If you run into errors, use `sudo gem install na`.
|
42
|
-
|
43
|
-
If you don't have Ruby/RubyGems, you can install them pretty easily with Homebrew, rvm, or asdf. I can't swear this tool is worth the time, but there _are_ a lot of great gems available...
|
44
|
-
|
45
|
-
|
46
|
-
|
47
47
|
### Usage
|
48
48
|
|
49
49
|
```
|
@@ -54,18 +54,18 @@ SYNOPSIS
|
|
54
54
|
na [global options] command [command options] [arguments...]
|
55
55
|
|
56
56
|
VERSION
|
57
|
-
1.
|
57
|
+
1.1.1
|
58
58
|
|
59
59
|
GLOBAL OPTIONS
|
60
60
|
-a, --[no-]add - Add a next action (deprecated, for backwards compatibility)
|
61
61
|
-d, --depth=DEPTH - Recurse to depth (default: 1)
|
62
|
+
--[no-]debug - Display verbose output
|
62
63
|
--ext=FILE_EXTENSION - File extension to consider a todo file (default: taskpaper)
|
63
64
|
--help - Show this message
|
64
65
|
-n, --[no-]note - Prompt for additional notes (deprecated, for backwards compatibility)
|
65
66
|
--na_tag=TAG - Tag to consider a next action (default: na)
|
66
67
|
-p, --priority=PRIORITY - Set a priority 0-5 (deprecated, for backwards compatibility) (default: none)
|
67
68
|
-r, --[no-]recurse - Recurse 3 directories deep (deprecated, for backwards compatability) (default: enabled)
|
68
|
-
--[no-]verbose - Display verbose output
|
69
69
|
--version - Display the program version
|
70
70
|
|
71
71
|
COMMANDS
|
@@ -76,6 +76,7 @@ COMMANDS
|
|
76
76
|
init, create - Create a new todo file in the current directory
|
77
77
|
initconfig - Initialize the config file using current global options
|
78
78
|
next, show - Show next actions
|
79
|
+
prompt - Show or install prompt hooks for the current shell
|
79
80
|
tagged - Find actions matching a tag
|
80
81
|
```
|
81
82
|
|
@@ -85,6 +86,8 @@ COMMANDS
|
|
85
86
|
|
86
87
|
Example: `na add This feature @idea I have`
|
87
88
|
|
89
|
+
If you run the `add` command with no arguments, you'll be asked for input on the command line.
|
90
|
+
|
88
91
|
```
|
89
92
|
NAME
|
90
93
|
add - Add a new next action
|
@@ -98,9 +101,10 @@ DESCRIPTION
|
|
98
101
|
|
99
102
|
COMMAND OPTIONS
|
100
103
|
-f, --file=PATH - Specify the file to which the task should be added (default: none)
|
101
|
-
-n, --
|
104
|
+
-n, --note - Prompt for additional notes
|
102
105
|
-p, --priority=arg - Add a priority level 1-5 (default: 0)
|
103
106
|
-t, --tag=TAG - Use a tag other than the default next action tag (default: none)
|
107
|
+
-x - Don't add next action tag to new entry
|
104
108
|
|
105
109
|
EXAMPLES
|
106
110
|
|
@@ -156,7 +160,7 @@ DESCRIPTION
|
|
156
160
|
|
157
161
|
COMMAND OPTIONS
|
158
162
|
-d, --depth=DEPTH - Recurse to depth (default: 1)
|
159
|
-
-x, --
|
163
|
+
-x, --exact - Match pattern exactly
|
160
164
|
|
161
165
|
EXAMPLES
|
162
166
|
|
@@ -273,36 +277,15 @@ Note that I created a new YAML dictionary inside of the `:next:` command, and ad
|
|
273
277
|
|
274
278
|
### Prompt Hooks
|
275
279
|
|
276
|
-
You can add a prompt command to your shell to have na automatically list your next actions when you `cd` into a directory.
|
277
|
-
|
278
|
-
_(You can add `-r` to any of these calls to na to automatically recurse 3 directories deep)_
|
279
|
-
|
280
|
-
Bash (in ~/.bash_profile):
|
280
|
+
You can add a prompt command to your shell to have na automatically list your next actions when you `cd` into a directory. To install a prompt command for your current shell, just run `na prompt install`. It works with Zsh, Bash, and Fish. If you'd rather make the changes to your startup file yourself, run `na prompt show` to get the hook and instructions printed out for copying.
|
281
281
|
|
282
|
-
|
283
|
-
last_command_was_cd() {
|
284
|
-
[[ $(history 1|sed -e "s/^[ ]*[0-9]*[ ]*//") =~ ^((cd|z|j|jump|g|f|pushd|popd|exit)([ ]|$)) ]] && na
|
285
|
-
}
|
286
|
-
if [[ -z "$PROMPT_COMMAND" ]]; then
|
287
|
-
PROMPT_COMMAND="eval 'last_command_was_cd'"
|
288
|
-
else
|
289
|
-
echo $PROMPT_COMMAND | grep -v -q "last_command_was_cd" && PROMPT_COMMAND="$PROMPT_COMMAND;"'eval "last_command_was_cd"'
|
290
|
-
fi
|
291
|
-
```
|
282
|
+
> You can also get output for shells other than the one you're currently using by adding "bash", "zsh", or "fish" to the show or install command.
|
292
283
|
|
293
|
-
Fish (in ~/.config/fish/conf.d/*.fish):
|
294
284
|
|
295
|
-
|
296
|
-
function __should_na --on-variable PWD
|
297
|
-
test -s (basename $PWD)".taskpaper" && na
|
298
|
-
end
|
299
|
-
```
|
285
|
+
> You can add `-r` to any of the calls to na to automatically recurse 3 directories deep, or just set the depth config permanently
|
300
286
|
|
301
|
-
Zsh (in ~/.zshrc):
|
302
287
|
|
303
|
-
|
304
|
-
chpwd() { na }
|
305
|
-
```
|
288
|
+
After installing a hook, you'll need to close your terminal and start a new session to initialize the new commands.
|
306
289
|
|
307
290
|
|
308
291
|
### Misc
|
@@ -313,4 +296,9 @@ If you have [gum][] installed, na will use it for command line input when adding
|
|
313
296
|
[donate]: http://brettterpstra.com/donate/
|
314
297
|
[github]: https://github.com/ttscoff/na_gem/
|
315
298
|
|
299
|
+
|
316
300
|
PayPal link: [paypal.me/ttscoff](https://paypal.me/ttscoff)
|
301
|
+
|
302
|
+
## Changelog
|
303
|
+
|
304
|
+
See [CHANGELOG.md](https://github.com/ttscoff/na_gem/blob/master/CHANGELOG.md)
|
data/bin/na
CHANGED
@@ -37,7 +37,7 @@ class App
|
|
37
37
|
flag %i[p priority]
|
38
38
|
|
39
39
|
desc 'Prompt for additional notes (deprecated, for backwards compatibility)'
|
40
|
-
switch %i[n note]
|
40
|
+
switch %i[n note], negatable: false
|
41
41
|
|
42
42
|
desc 'Recurse 3 directories deep (deprecated, for backwards compatability)'
|
43
43
|
switch %i[r recurse], default_value: false, negatable: true
|
@@ -92,6 +92,7 @@ class App
|
|
92
92
|
end
|
93
93
|
|
94
94
|
tag = options[:tag] == NA.na_tag ? nil : options[:tag]
|
95
|
+
tag = [{ tag: tag, value: nil }]
|
95
96
|
files, actions = NA.parse_actions(depth: depth,
|
96
97
|
query: tokens,
|
97
98
|
tag: tag)
|
@@ -113,7 +114,7 @@ class App
|
|
113
114
|
desc: 'Add a new action to the Inbox, set its @priority to 4, and prompt for an additional note'
|
114
115
|
|
115
116
|
c.desc 'Prompt for additional notes'
|
116
|
-
c.switch %i[n note]
|
117
|
+
c.switch %i[n note], negatable: false
|
117
118
|
|
118
119
|
c.desc 'Add a priority level 1-5'
|
119
120
|
c.flag %i[p priority], must_match: /[1-5]/, type: :integer, default_value: 0
|
@@ -213,7 +214,7 @@ class App
|
|
213
214
|
c.example 'na find -d 3 swift obj-c', desc: 'Find all actions 3 directories deep containing either swift or obj-c'
|
214
215
|
|
215
216
|
c.desc 'Match pattern exactly'
|
216
|
-
c.switch %i[x exact]
|
217
|
+
c.switch %i[x exact], negatable: false
|
217
218
|
|
218
219
|
c.desc 'Recurse to depth'
|
219
220
|
c.arg_name 'DEPTH'
|
@@ -402,12 +403,11 @@ class App
|
|
402
403
|
end
|
403
404
|
end
|
404
405
|
|
405
|
-
|
406
|
-
|
407
406
|
pre do |global, command, options, args|
|
408
407
|
NA.verbose = global[:debug]
|
409
408
|
NA.extension = global[:ext]
|
410
409
|
NA.na_tag = global[:na_tag]
|
410
|
+
NA.weed_cache_file
|
411
411
|
true
|
412
412
|
end
|
413
413
|
|
data/lib/na/next_action.rb
CHANGED
@@ -81,7 +81,7 @@ module NA
|
|
81
81
|
else
|
82
82
|
'%filename%parent%action'
|
83
83
|
end
|
84
|
-
elsif
|
84
|
+
elsif find_files(depth: depth).count > 1
|
85
85
|
if depth > 1
|
86
86
|
'%filename%parent%action'
|
87
87
|
else
|
@@ -103,11 +103,13 @@ module NA
|
|
103
103
|
optional = []
|
104
104
|
|
105
105
|
tag&.each do |t|
|
106
|
-
|
107
|
-
|
106
|
+
unless t[:tag].nil?
|
107
|
+
new_rx = " @#{t[:tag]}"
|
108
|
+
new_rx = "#{new_rx}\\(#{t[:value]}\\)" if t[:value]
|
108
109
|
|
109
|
-
|
110
|
-
|
110
|
+
optional.push(new_rx)
|
111
|
+
required.push(new_rx) if t[:required]
|
112
|
+
end
|
111
113
|
end
|
112
114
|
|
113
115
|
unless search.nil?
|
data/lib/na/prompt.rb
CHANGED
@@ -54,7 +54,8 @@ module NA
|
|
54
54
|
file = prompt_file(shell)
|
55
55
|
|
56
56
|
File.open(File.expand_path(file), 'a') { |f| f.puts prompt_hook(shell) }
|
57
|
-
$stderr.puts NA::Color.template("{y}Added {bw}#{shell}{xy} prompt hook to {bw}#{file}{x}")
|
57
|
+
$stderr.puts NA::Color.template("{y}Added {bw}#{shell}{xy} prompt hook to {bw}#{file}{xy}.{x}")
|
58
|
+
$stderr.puts NA::Color.template("{y}You may need to close the current terminal and open a new one to enable the script.{x}")
|
58
59
|
end
|
59
60
|
end
|
60
61
|
end
|
data/lib/na/version.rb
CHANGED
data/src/README.md
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
_If you're one of the rare people like me who find this useful, feel free to
|
10
10
|
[buy me some coffee][donate]._
|
11
11
|
|
12
|
-
The current version of `na` is <!--VER-->1.
|
12
|
+
The current version of `na` is <!--VER-->1.1.2<!--END VER-->.
|
13
13
|
|
14
14
|
`na` ("next action") is a command line tool designed to make it easy to see what your next actions are for any project, right from the command line. It works with TaskPaper-formatted files (but any plain text format will do), looking for `@na` tags (or whatever you specify) in todo files in your current folder.
|
15
15
|
|
@@ -17,6 +17,14 @@ Used with Taskpaper files, it can add new todo items quickly from the command li
|
|
17
17
|
|
18
18
|
It can also auto-display next actions when you enter a project directory, automatically locating any todo files and listing their next actions when you `cd` to the project (optionally recursive). See the [Prompt Hooks](#prompt-hooks) section for details.
|
19
19
|
|
20
|
+
### Installation
|
21
|
+
|
22
|
+
Assuming you have Ruby and RubyGems installed, you can just run `gem install na`. If you run into errors, use `sudo gem install na`.
|
23
|
+
|
24
|
+
If you don't have Ruby/RubyGems, you can install them pretty easily with Homebrew, rvm, or asdf. I can't swear this tool is worth the time, but there _are_ a lot of great gems available...
|
25
|
+
|
26
|
+
<!--JEKYLL> You can find the na source code (MIT license) on [GitHub][].-->
|
27
|
+
|
20
28
|
### Features
|
21
29
|
|
22
30
|
You can list next actions in files in the current directory by typing `na`. By default, `na` looks for `*.taskpaper` files and extracts items tagged `@na` and not `@done`. All of these can be changed in the configuration.
|
@@ -35,14 +43,6 @@ You can also quickly add todo items from the command line with the `add` subcomm
|
|
35
43
|
|
36
44
|
If found, it will try to locate an `Inbox:` project, or create one if it doesn't exist. Any arguments after `add` will be combined to create a new task in TaskPaper format. They will automatically be assigned as next actions (tagged `@na`) and will show up when `na` lists the tasks for the project.
|
37
45
|
|
38
|
-
### Installation
|
39
|
-
|
40
|
-
Assuming you have Ruby and RubyGems installed, you can just run `gem install na`. If you run into errors, use `sudo gem install na`.
|
41
|
-
|
42
|
-
If you don't have Ruby/RubyGems, you can install them pretty easily with Homebrew, rvm, or asdf. I can't swear this tool is worth the time, but there _are_ a lot of great gems available...
|
43
|
-
|
44
|
-
<!--JEKYLL> You can find the na source code (MIT license) on [GitHub][].-->
|
45
|
-
|
46
46
|
### Usage
|
47
47
|
|
48
48
|
```
|
@@ -53,18 +53,18 @@ SYNOPSIS
|
|
53
53
|
na [global options] command [command options] [arguments...]
|
54
54
|
|
55
55
|
VERSION
|
56
|
-
1.
|
56
|
+
1.1.1
|
57
57
|
|
58
58
|
GLOBAL OPTIONS
|
59
59
|
-a, --[no-]add - Add a next action (deprecated, for backwards compatibility)
|
60
60
|
-d, --depth=DEPTH - Recurse to depth (default: 1)
|
61
|
+
--[no-]debug - Display verbose output
|
61
62
|
--ext=FILE_EXTENSION - File extension to consider a todo file (default: taskpaper)
|
62
63
|
--help - Show this message
|
63
64
|
-n, --[no-]note - Prompt for additional notes (deprecated, for backwards compatibility)
|
64
65
|
--na_tag=TAG - Tag to consider a next action (default: na)
|
65
66
|
-p, --priority=PRIORITY - Set a priority 0-5 (deprecated, for backwards compatibility) (default: none)
|
66
67
|
-r, --[no-]recurse - Recurse 3 directories deep (deprecated, for backwards compatability) (default: enabled)
|
67
|
-
--[no-]verbose - Display verbose output
|
68
68
|
--version - Display the program version
|
69
69
|
|
70
70
|
COMMANDS
|
@@ -75,6 +75,7 @@ COMMANDS
|
|
75
75
|
init, create - Create a new todo file in the current directory
|
76
76
|
initconfig - Initialize the config file using current global options
|
77
77
|
next, show - Show next actions
|
78
|
+
prompt - Show or install prompt hooks for the current shell
|
78
79
|
tagged - Find actions matching a tag
|
79
80
|
```
|
80
81
|
|
@@ -84,6 +85,8 @@ COMMANDS
|
|
84
85
|
|
85
86
|
Example: `na add This feature @idea I have`
|
86
87
|
|
88
|
+
If you run the `add` command with no arguments, you'll be asked for input on the command line.
|
89
|
+
|
87
90
|
```
|
88
91
|
NAME
|
89
92
|
add - Add a new next action
|
@@ -97,9 +100,10 @@ DESCRIPTION
|
|
97
100
|
|
98
101
|
COMMAND OPTIONS
|
99
102
|
-f, --file=PATH - Specify the file to which the task should be added (default: none)
|
100
|
-
-n, --
|
103
|
+
-n, --note - Prompt for additional notes
|
101
104
|
-p, --priority=arg - Add a priority level 1-5 (default: 0)
|
102
105
|
-t, --tag=TAG - Use a tag other than the default next action tag (default: none)
|
106
|
+
-x - Don't add next action tag to new entry
|
103
107
|
|
104
108
|
EXAMPLES
|
105
109
|
|
@@ -155,7 +159,7 @@ DESCRIPTION
|
|
155
159
|
|
156
160
|
COMMAND OPTIONS
|
157
161
|
-d, --depth=DEPTH - Recurse to depth (default: 1)
|
158
|
-
-x, --
|
162
|
+
-x, --exact - Match pattern exactly
|
159
163
|
|
160
164
|
EXAMPLES
|
161
165
|
|
@@ -272,36 +276,15 @@ Note that I created a new YAML dictionary inside of the `:next:` command, and ad
|
|
272
276
|
|
273
277
|
### Prompt Hooks
|
274
278
|
|
275
|
-
You can add a prompt command to your shell to have na automatically list your next actions when you `cd` into a directory.
|
276
|
-
|
277
|
-
_(You can add `-r` to any of these calls to na to automatically recurse 3 directories deep)_
|
278
|
-
|
279
|
-
Bash (in ~/.bash_profile):
|
279
|
+
You can add a prompt command to your shell to have na automatically list your next actions when you `cd` into a directory. To install a prompt command for your current shell, just run `na prompt install`. It works with Zsh, Bash, and Fish. If you'd rather make the changes to your startup file yourself, run `na prompt show` to get the hook and instructions printed out for copying.
|
280
280
|
|
281
|
-
|
282
|
-
|
283
|
-
[[ $(history 1|sed -e "s/^[ ]*[0-9]*[ ]*//") =~ ^((cd|z|j|jump|g|f|pushd|popd|exit)([ ]|$)) ]] && na
|
284
|
-
}
|
285
|
-
if [[ -z "$PROMPT_COMMAND" ]]; then
|
286
|
-
PROMPT_COMMAND="eval 'last_command_was_cd'"
|
287
|
-
else
|
288
|
-
echo $PROMPT_COMMAND | grep -v -q "last_command_was_cd" && PROMPT_COMMAND="$PROMPT_COMMAND;"'eval "last_command_was_cd"'
|
289
|
-
fi
|
290
|
-
```
|
291
|
-
|
292
|
-
Fish (in ~/.config/fish/conf.d/*.fish):
|
293
|
-
|
294
|
-
```fish
|
295
|
-
function __should_na --on-variable PWD
|
296
|
-
test -s (basename $PWD)".taskpaper" && na
|
297
|
-
end
|
298
|
-
```
|
281
|
+
> You can also get output for shells other than the one you're currently using by adding "bash", "zsh", or "fish" to the show or install command.
|
282
|
+
<!--JEKYLL{:.tip}-->
|
299
283
|
|
300
|
-
|
284
|
+
> You can add `-r` to any of the calls to na to automatically recurse 3 directories deep, or just set the depth config permanently
|
285
|
+
<!--JEKYLL{:.tip}-->
|
301
286
|
|
302
|
-
|
303
|
-
chpwd() { na }
|
304
|
-
```
|
287
|
+
After installing a hook, you'll need to close your terminal and start a new session to initialize the new commands.
|
305
288
|
|
306
289
|
|
307
290
|
### Misc
|
@@ -312,8 +295,10 @@ If you have [gum][] installed, na will use it for command line input when adding
|
|
312
295
|
[donate]: http://brettterpstra.com/donate/
|
313
296
|
[github]: https://github.com/ttscoff/na_gem/
|
314
297
|
|
315
|
-
<!--GITHUB-->
|
316
|
-
|
298
|
+
<!--GITHUB-->
|
299
|
+
PayPal link: [paypal.me/ttscoff](https://paypal.me/ttscoff)
|
300
|
+
|
317
301
|
## Changelog
|
318
302
|
|
319
303
|
See [CHANGELOG.md](https://github.com/ttscoff/na_gem/blob/master/CHANGELOG.md)
|
304
|
+
<!--END GITHUB--><!--END README-->
|