nikki 0.5.3 → 0.5.4

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: 9095ed9114a29ee556f7bdcfe72151f6c5edc79f
4
- data.tar.gz: b3bf286f987f69057f127a39d3803c3c4432f154
3
+ metadata.gz: bad525c6509fa646d2ec49341ddd01243eed11ff
4
+ data.tar.gz: 8e027f08280c4b92885f57c513a62cf63b5f5e53
5
5
  SHA512:
6
- metadata.gz: f85104c04cf8466163cdf791693c5637d89fe4132e67a23dfb8dddcc220c6b4d2dd4a8837a69944b0ba0d2b97c435347589ec99b274716b1f71951758d6f3e3d
7
- data.tar.gz: 40304f691b4540f3717064caf6b8c2a85cb8225f4e27f3b095413a2af5c585a15c2c0a2e7e5bd490773b46901523c2003ffd7abd529fffb19a21f28089b23a38
6
+ metadata.gz: 9f2cc4f9a14519dfcec0290e8c51afde64c78910c38d6212ca7c3491d2baa321811240cee78bb8704198b8902b1a4b4d8c2d307c9e67420eb67b243f191234e2
7
+ data.tar.gz: 92200e97291888ede9f6899bc5b29aad71325bcd35d17dffae08a2cac77a728aa91288ca3daf6b295e907a91539cc54ad9fd22be3d67d69358df970a8a4eae4b
data/.gitignore CHANGED
@@ -11,3 +11,4 @@ pkg
11
11
  spec/reports
12
12
  tmp
13
13
  .DS_STORE
14
+ /doc
data/lib/nikki/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # Sets version for RubyGems
2
2
  module Nikki
3
3
  # Sets version for RubyGems
4
- VERSION = "0.5.3"
4
+ VERSION = '0.5.4'
5
5
  end
data/lib/nikki.rb CHANGED
@@ -1,15 +1,16 @@
1
1
  require 'thor'
2
- require "pathname"
3
- require "yaml"
4
- require "date"
2
+ require 'pathname'
3
+ require 'yaml'
4
+ require 'date'
5
5
  require 'fileutils'
6
+ require 'stickynotifications'
6
7
 
7
8
  # @author Brandon Pittman
8
9
  # This is the main class that interfaces with Thor's methods and does all the
9
10
  # heavy lifting for Nikki. It's a bit of a "God" object. Sorries.
10
11
  class Generator < Thor
11
-
12
- desc "setup", "Creates new Nikki and config files."
12
+ # @!group Initial Setup
13
+ desc 'setup', 'Creates new Nikki and config files.'
13
14
  # This methods creates the ".nikki" directory, config file and journal file.
14
15
  def setup
15
16
  create_path
@@ -17,7 +18,10 @@ class Generator < Thor
17
18
  create_config_file
18
19
  end
19
20
 
20
- desc "new ENTRY", "Creates a new entry in the Nikki journal."
21
+ # @!endgroup
22
+
23
+ # @!group Data entry
24
+ desc 'new ENTRY', 'Creates a new entry in the Nikki journal.'
21
25
  # Add entry to journal
22
26
  # @param entry [String] entry to add to the journal
23
27
  # @param update [String] International date for update
@@ -45,31 +49,41 @@ class Generator < Thor
45
49
  write_file(journal)
46
50
  open unless updated_yesterday?
47
51
  write_config(settings)
48
- add_to_omnifocus
49
52
  puts latest
50
53
  end
51
54
 
52
- desc "missed", "Create new entry for yesterday"
55
+ desc 'missed', 'Create new entry for yesterday'
53
56
  # Creates a new entry for yesterday
54
57
  # @param entry [String]
58
+ # @since 0.5.3
55
59
  def missed(entry)
56
- new(entry, (Date.today-1).to_s)
60
+ new(entry, (Date.today - 1).to_s)
57
61
  end
62
+ # @!endgroup
58
63
 
59
- desc "open", "Open current year's journal file in editor."
64
+ desc 'open', "Open current year's journal file in editor."
60
65
  # Open Nikki journal in configured text editor
61
66
  def open
62
- %x{open -a "#{editor}" #{file}}
67
+ `open -a "#{editor}" #{file}`
63
68
  end
64
69
 
65
- desc "ls", "Displays latest Nikki entries."
70
+ desc 'ls', 'Displays latest Nikki entries.'
71
+ # option :sticky,
72
+ # aliases: :s,
73
+ # type: :string,
74
+ # banner: 'Notify if not updated today'
66
75
  # Display Nikki's latest entires
67
76
  # @return [String]
77
+ # @option options :sticky [String]
78
+ # Display Sticky Notification if Nikki hasn't been updated
68
79
  def ls
69
80
  puts latest
81
+ # StickyNotifications::Note.new.create(
82
+ # "Nikki hasn't been updated today!", 'Nikki'
83
+ # )
70
84
  end
71
85
 
72
- desc "config", "Change Nikki's settings."
86
+ desc 'config', "Change Nikki's settings."
73
87
  option :editor, :aliases => :e, :banner => "Set default editor to open journal file in."
74
88
  option :yesterday, :aliases => :y, :type => :boolean, :banner => "Set nikki's \"updated\" date to yesterday."
75
89
  option :today, :aliases => :t, :type => :boolean, :banner => "Set nikki's \"updated\" date to today."
@@ -85,22 +99,21 @@ class Generator < Thor
85
99
  def config
86
100
  settings = read_config
87
101
  settings[:editor] = options[:editor] || read_config[:editor]
88
- settings[:updated] = Date.today-1 if options[:yesterday]
89
- settings[:updated] = Date.today if options[:today]
102
+ settings[:updated] = options[:yesterday] ? Date.today - 1 : Date.today
90
103
  write_config(settings)
91
104
  puts settings.to_yaml if options[:print]
92
105
  puts latest if options[:latest]
93
106
  end
94
107
 
95
- desc "publish YEAR", "Save Nikki journal from YEAR as Markdown"
108
+ desc 'publish YEAR', 'Save Nikki journal from YEAR as Markdown'
96
109
  # @param [String] year of journal entries you wish to pubish as Markdown This
97
110
  # method calls the `markdown` method and creates a MultiMarkdown document
98
111
  # with one big description list. This format is subject to change, but for
99
112
  # now, it seems good enough.
100
- def publish(year)
101
- md_path = "#{path}nikki_markdown_#{Date.today}.md"
102
- IO.write(md_path, markdown(read_file, year.to_i))
103
- puts "Markdown saved to \"#{md_path}\"."
113
+ def export(year)
114
+ export_path = "#{path}nikki_export_#{year}.yml"
115
+ IO.write(export_path, yamlize(read_file, year.to_i))
116
+ puts "Markdown saved to \"#{export_path}\"."
104
117
  end
105
118
 
106
119
  no_commands do
@@ -113,7 +126,7 @@ class Generator < Thor
113
126
  end
114
127
 
115
128
  def config_file
116
- path.join("nikki.config.yaml")
129
+ path.join('nikki.config.yaml')
117
130
  end
118
131
 
119
132
  def read_config
@@ -141,19 +154,19 @@ class Generator < Thor
141
154
  end
142
155
 
143
156
  def file
144
- path.join("nikki.yaml")
157
+ path.join('nikki.yaml')
145
158
  end
146
159
 
147
160
  def config_file_exist?
148
161
  return true if config_file.exist?
149
162
  create_config_file
150
- return true
163
+ true
151
164
  end
152
165
 
153
166
  def file_exist?
154
167
  return true if file.exist?
155
168
  create_file
156
- return true
169
+ true
157
170
  end
158
171
 
159
172
  def create_config_file
@@ -167,31 +180,12 @@ class Generator < Thor
167
180
  FileUtils.touch(file)
168
181
  end
169
182
 
170
- def marked
171
- Pathname.new("/Applications/Marked.app")
172
- end
173
-
174
183
  def today
175
184
  Date.today
176
185
  end
177
186
 
178
187
  def yesterday
179
- Date.today-1
180
- end
181
-
182
- def months_with_names
183
- {1=>{:name=>"January"},
184
- 2=>{:name=>"February"},
185
- 3=>{:name=>"March"},
186
- 4=>{:name=>"April"},
187
- 5=>{:name=>"May"},
188
- 6=>{:name=>"June"},
189
- 7=>{:name=>"July"},
190
- 8=>{:name=>"August"},
191
- 9=>{:name=>"September"},
192
- 10=>{:name=>"October"},
193
- 11=>{:name=>"November"},
194
- 12=>{:name=>"December"}}
188
+ Date.today - 1
195
189
  end
196
190
 
197
191
  def leap_year?
@@ -203,36 +197,38 @@ class Generator < Thor
203
197
  end
204
198
 
205
199
  def updated_yesterday?
206
- last_updated == Date.today-1
200
+ last_updated == Date.today - 1
207
201
  end
208
202
 
209
203
  def latest
210
204
  list = []
211
205
  (0..3).each do |n|
212
- list << "#{today-n}: #{read_file[today-n]}"
206
+ list << "#{today - n}: #{read_file[today - n]}"
213
207
  end
214
208
  list.reverse!
215
209
  end
216
210
 
217
- def markdown(hash, year)
218
- string = ""
211
+ def yamlize(hash, year)
212
+ string = "---\n"
219
213
  hash.each_pair do |date, sentence|
220
- if date.year == year
221
- string += "#{date}\n: #{sentence}\n"
222
- end
214
+ string += "#{date}: #{sentence}\n" if date.year == year
223
215
  end
224
216
  string
225
217
  end
226
218
 
227
219
  def add_to_omnifocus
228
- %x{osascript <<-APPLESCRIPT
229
- tell application "OmniFocus"
230
- tell default document
231
- set nikki_task to first remaining task of flattened context "Home" whose name is "Record what I learned today"
232
- set completed of nikki_task to true
233
- end tell
234
- end tell
235
- APPLESCRIPT}
220
+ `osascript <<-APPLESCRIPT
221
+ tell application "OmniFocus"
222
+ tell default document
223
+ set nikki_task to first remaining task of flattened context "Home" whose name is "Record what I learned today"
224
+ set deferDate to defer date of nikki_task
225
+ if weekday of (deferDate) is weekday of (current date) then
226
+ set completed of nikki_task to true
227
+ end if
228
+ end tell
229
+ synchronize
230
+ end tell
231
+ APPLESCRIPT`
236
232
  end
237
233
  end
238
234
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nikki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Pittman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-30 00:00:00.000000000 Z
11
+ date: 2015-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -111,29 +111,6 @@ files:
111
111
  - README.md
112
112
  - Rakefile
113
113
  - bin/nikki
114
- - doc/Generator.html
115
- - doc/Nikki.html
116
- - doc/_index.html
117
- - doc/class_list.html
118
- - doc/css/common.css
119
- - doc/css/cucumber.css
120
- - doc/css/full_list.css
121
- - doc/css/style.css
122
- - doc/feature_list.html
123
- - doc/file.README.html
124
- - doc/file_list.html
125
- - doc/frames.html
126
- - doc/index.html
127
- - doc/js/app.js
128
- - doc/js/cucumber.js
129
- - doc/js/full_list.js
130
- - doc/js/jquery.js
131
- - doc/method_list.html
132
- - doc/requirements.html
133
- - doc/requirements/step_transformers.html
134
- - doc/requirements/tags.html
135
- - doc/tag_list.html
136
- - doc/top-level-namespace.html
137
114
  - features/new_entry.feature
138
115
  - features/random.feature
139
116
  - features/step_definitions/new_entry.steps.rb
@@ -165,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
142
  version: '0'
166
143
  requirements: []
167
144
  rubyforge_project:
168
- rubygems_version: 2.4.1
145
+ rubygems_version: 2.4.6
169
146
  signing_key:
170
147
  specification_version: 4
171
148
  summary: A simple one-line-a-day journaling app.