noir 0.1.7 → 0.1.8
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/lib/noir.rb +1 -0
- data/lib/noir/command.rb +1 -0
- data/lib/noir/command/edit/weekly_report.rb +22 -38
- data/lib/noir/command/new/note.rb +4 -3
- data/lib/noir/command/summarize.rb +5 -0
- data/lib/noir/command/summarize/note.rb +5 -0
- data/lib/noir/command/summarize/note/weekly.rb +30 -0
- data/lib/noir/util.rb +6 -0
- data/lib/noir/util/weekly.rb +23 -0
- data/lib/noir/version.rb +1 -1
- data/spec/noir/command/new/note_spec.rb +18 -0
- data/spec/noir/command/summarize/note/weekly_spec.rb +43 -0
- data/spec/noir/command/summarize/note_spec.rb +9 -0
- data/spec/noir/command/summarize_spec.rb +10 -0
- data/spec/spec_helper.rb +20 -0
- metadata +13 -9
- data/lib/noir/command/edit/weekly_report/friday.rb +0 -10
- data/lib/noir/command/edit/weekly_report/monday.rb +0 -10
- data/lib/noir/command/edit/weekly_report/saturday.rb +0 -10
- data/lib/noir/command/edit/weekly_report/sunday.rb +0 -10
- data/lib/noir/command/edit/weekly_report/thursday.rb +0 -10
- data/lib/noir/command/edit/weekly_report/tuesday.rb +0 -10
- data/lib/noir/command/edit/weekly_report/wednesday.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37c60ade454a8bfe945bcdc6aa9f227675cbc191
|
4
|
+
data.tar.gz: 913ccc77f719e326d6a6a0624e11903ec4c9d403
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b426b2c916464cde1309f7097d45b3062bdbb7de12e51da7a78755b4175a62359f389695b5600cacf588bdf99f57357a78ba9287b89b86f3773f5d971679d86d
|
7
|
+
data.tar.gz: abe489c1566ea84dafe714926359719a6219aa5676f82bd2e3cd102a373b21a5658741c0dbbd2867389d00a1871832bda538d0184e5c9aac4f739b7e25a14e14
|
data/lib/noir.rb
CHANGED
data/lib/noir/command.rb
CHANGED
@@ -1,47 +1,31 @@
|
|
1
1
|
class Noir::Command::Edit::WeeklyReport < Noir::Base::Command
|
2
2
|
@description = 'edit weekly report'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
TimeOfADay = (24 * 60 * 60)
|
8
|
-
TimeFormat = '%Y%m%d'
|
9
|
-
|
10
|
-
def end_of_week_separeted separator_day_of_week, week_diff
|
11
|
-
check_method_name = "#{separator_day_of_week}?"
|
12
|
-
unless Time.instance_methods(false).include?(check_method_name.to_sym)
|
13
|
-
raise "a day of week name is incorrect! : #{separator_day_of_week}"
|
14
|
-
end
|
15
|
-
|
16
|
-
week_end = Time.now + (week_diff * 7 * TimeOfADay)
|
17
|
-
week_end += TimeOfADay
|
18
|
-
while !week_end.send(check_method_name)
|
19
|
-
week_end += TimeOfADay
|
20
|
-
end
|
21
|
-
week_end - TimeOfADay
|
22
|
-
end
|
23
|
-
|
24
|
-
def begin_of_week_separeted separator_day_of_week, week_diff
|
25
|
-
end_of_week_separeted(separator_day_of_week, week_diff) - (6*TimeOfADay)
|
26
|
-
end
|
4
|
+
extend Noir::Util::Weekly
|
5
|
+
TimeFormat = '%Y%m%d'
|
27
6
|
|
7
|
+
def self.report_name separator_day_of_week, week_diff=0
|
8
|
+
[begin_of_week_separeted(separator_day_of_week, week_diff).strftime(TimeFormat),
|
9
|
+
end_of_week_separeted(separator_day_of_week, week_diff).strftime(TimeFormat)].join('_')
|
10
|
+
end
|
28
11
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
12
|
+
# main method
|
13
|
+
def self.edit_report separator_day_of_week, week_diff=0
|
14
|
+
system("vim #{report_name(separator_day_of_week, week_diff)}.txt")
|
15
|
+
end
|
16
|
+
end
|
33
17
|
|
34
|
-
|
35
|
-
|
36
|
-
|
18
|
+
[:monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday].each do |day|
|
19
|
+
clazz = Class.new(Noir::Base::TerminalCommand)
|
20
|
+
clazz.class_eval do
|
21
|
+
@description = "edit weekly report separated by #{day}"
|
22
|
+
@day_of_week = day
|
23
|
+
end
|
24
|
+
clazz.class_eval do
|
25
|
+
def self.execute *args
|
26
|
+
week_diff = args.first.to_i || 0
|
27
|
+
Noir::Command::Edit::WeeklyReport.edit_report @day_of_week, week_diff
|
37
28
|
end
|
38
29
|
end
|
30
|
+
Noir::Command::Edit::WeeklyReport.const_set(day.capitalize, clazz)
|
39
31
|
end
|
40
|
-
|
41
|
-
require 'noir/command/edit/weekly_report/monday'
|
42
|
-
require 'noir/command/edit/weekly_report/tuesday'
|
43
|
-
require 'noir/command/edit/weekly_report/wednesday'
|
44
|
-
require 'noir/command/edit/weekly_report/thursday'
|
45
|
-
require 'noir/command/edit/weekly_report/friday'
|
46
|
-
require 'noir/command/edit/weekly_report/saturday'
|
47
|
-
require 'noir/command/edit/weekly_report/sunday'
|
@@ -1,12 +1,13 @@
|
|
1
1
|
class Noir::Command::New::Note < Noir::Base::TerminalCommand
|
2
|
-
@description = '
|
2
|
+
@description = 'Create empty txt. filename format is <serial-no>_<date>.txt'
|
3
3
|
|
4
|
-
TimeFormat
|
4
|
+
TimeFormat = '%Y%m%d'
|
5
|
+
FileNameGlob = '[0-9]*_????????.txt'
|
5
6
|
|
6
7
|
class << self
|
7
8
|
|
8
9
|
def create_new_note
|
9
|
-
note_num = Dir.glob(
|
10
|
+
note_num = Dir.glob(FileNameGlob).size + 1
|
10
11
|
note_name = format("%02d", note_num) + '_' + Time.now.strftime(TimeFormat) + '.txt'
|
11
12
|
Noir::Command::New.createFile note_name
|
12
13
|
return note_name
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Noir::Command::Summarize::Note::Weekly < Noir::Base::Command
|
2
|
+
@description = 'summarize notes weekly'
|
3
|
+
|
4
|
+
extend Noir::Util::Weekly
|
5
|
+
TimeFormat = '%Y%m%d'
|
6
|
+
|
7
|
+
def self.summarize_by_week separator_day_of_week, week_diff=0
|
8
|
+
begin_note = begin_of_week_separeted(separator_day_of_week, week_diff).strftime(TimeFormat)
|
9
|
+
end_note = end_of_week_separeted(separator_day_of_week, week_diff).strftime(TimeFormat)
|
10
|
+
|
11
|
+
note_names = (begin_note..end_note).map{|n| Dir.glob("*#{n}*").first}.compact
|
12
|
+
puts note_names.flat_map {|name| ['-----' + name + '-----', File.read(name) ]}.join("\n")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# Sub commands: specific day of week
|
17
|
+
[:monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday].each do |day|
|
18
|
+
clazz = Class.new(Noir::Base::TerminalCommand)
|
19
|
+
clazz.class_eval do
|
20
|
+
@description = "summarize notes weekly separated by #{day}"
|
21
|
+
@day_of_week = day
|
22
|
+
end
|
23
|
+
clazz.class_eval do
|
24
|
+
def self.execute *args
|
25
|
+
week_diff = args.first.to_i || 0
|
26
|
+
Noir::Command::Summarize::Note::Weekly.summarize_by_week @day_of_week, week_diff
|
27
|
+
end
|
28
|
+
end
|
29
|
+
Noir::Command::Summarize::Note::Weekly.const_set(day.capitalize, clazz)
|
30
|
+
end
|
data/lib/noir/util.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Noir::Util::Weekly
|
2
|
+
# utilities for calculation weeks
|
3
|
+
|
4
|
+
TimeOfADay = (24 * 60 * 60)
|
5
|
+
|
6
|
+
def end_of_week_separeted separator_day_of_week, week_diff
|
7
|
+
check_method_name = "#{separator_day_of_week}?"
|
8
|
+
unless Time.instance_methods(false).include?(check_method_name.to_sym)
|
9
|
+
raise "a day of week name is incorrect! : #{separator_day_of_week}"
|
10
|
+
end
|
11
|
+
|
12
|
+
week_end = Time.now + (week_diff * 7 * TimeOfADay)
|
13
|
+
week_end += TimeOfADay
|
14
|
+
while !week_end.send(check_method_name)
|
15
|
+
week_end += TimeOfADay
|
16
|
+
end
|
17
|
+
week_end - TimeOfADay
|
18
|
+
end
|
19
|
+
|
20
|
+
def begin_of_week_separeted separator_day_of_week, week_diff
|
21
|
+
end_of_week_separeted(separator_day_of_week, week_diff) - (6*TimeOfADay)
|
22
|
+
end
|
23
|
+
end
|
data/lib/noir/version.rb
CHANGED
@@ -11,4 +11,22 @@ describe 'Noir::Command::New::Note' do
|
|
11
11
|
expect(Noir::Command::New).to receive(:createFile)
|
12
12
|
expect{Noir::Command::New::Note.execute}.to output.to_stdout
|
13
13
|
end
|
14
|
+
|
15
|
+
it 'is support empty directory' do
|
16
|
+
allow(Dir).to receive(:glob).with(anything).and_return([])
|
17
|
+
expect(Noir::Command::New).to receive(:createFile)
|
18
|
+
expect{Noir::Command::New::Note.execute}.to output(/^01_.*txt$/).to_stdout
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'is support directory include few files' do
|
22
|
+
allow(Dir).to receive(:glob).with(anything).and_return(10.times.to_a)
|
23
|
+
expect(Noir::Command::New).to receive(:createFile)
|
24
|
+
expect{Noir::Command::New::Note.execute}.to output(/^11_.*txt$/).to_stdout
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'is support directory include over 100 files' do
|
28
|
+
allow(Dir).to receive(:glob).with(anything).and_return(120.times.to_a)
|
29
|
+
expect(Noir::Command::New).to receive(:createFile)
|
30
|
+
expect{Noir::Command::New::Note.execute}.to output(/^121_.*txt$/).to_stdout
|
31
|
+
end
|
14
32
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'noir'
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe 'Noir::Command::Summarize::Note::Weekly' do
|
5
|
+
include_context :dependencie_on_current_directory
|
6
|
+
|
7
|
+
it 'is inherited Noir::Base::Command' do
|
8
|
+
expect(Noir::Command::Summarize::Note::Weekly.superclass).to eq(Noir::Base::Command)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '.summarize_by_week' do
|
12
|
+
before do
|
13
|
+
File.write('01_20140401.txt', 'hoge') # 2014/04/01(Tue)
|
14
|
+
File.write('02_20140402.txt', 'fuga') # 2014/04/02(Wed)
|
15
|
+
File.write('03_20140403.txt', 'piyo') # 2014/04/03(Thu)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'include texts in .txt file' do
|
19
|
+
expect{Noir::Command::Summarize::Note::Weekly.summarize_by_week(:tuesday)}.to output(/hoge/).to_stdout
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'include all texts in weekly range' do
|
23
|
+
expect{Noir::Command::Summarize::Note::Weekly.summarize_by_week(:monday)}.to output(/hoge/).to_stdout
|
24
|
+
expect{Noir::Command::Summarize::Note::Weekly.summarize_by_week(:monday)}.to output(/fuga/).to_stdout
|
25
|
+
expect{Noir::Command::Summarize::Note::Weekly.summarize_by_week(:monday)}.to output(/piyo/).to_stdout
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'not include texts without weekly range' do
|
29
|
+
expect{Noir::Command::Summarize::Note::Weekly.summarize_by_week(:wednesday)}.to output(/hoge/).to_stdout
|
30
|
+
expect{Noir::Command::Summarize::Note::Weekly.summarize_by_week(:wednesday)}.not_to output(/fuga/).to_stdout
|
31
|
+
expect{Noir::Command::Summarize::Note::Weekly.summarize_by_week(:wednesday)}.not_to output(/piyo/).to_stdout
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'sub commands' do
|
36
|
+
[:monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday].each do |day|
|
37
|
+
it 'is inherited Noir::Base::TerminalCommand' do
|
38
|
+
sub_command = Noir::Command::Summarize::Note::Weekly.const_get day.capitalize
|
39
|
+
expect(sub_command.superclass).to eq(Noir::Base::TerminalCommand)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -41,3 +41,23 @@ def stub_commands
|
|
41
41
|
=end
|
42
42
|
|
43
43
|
end
|
44
|
+
|
45
|
+
shared_context :dependencie_on_current_directory do
|
46
|
+
around do |spec|
|
47
|
+
Dir.mktmpdir('noir-tempdir') do |dir|
|
48
|
+
Dir.chdir(dir) do
|
49
|
+
spec.run
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# for ruby 1.9.2
|
56
|
+
|
57
|
+
unless File.respond_to?(:write)
|
58
|
+
class File
|
59
|
+
def self.write filename, contents
|
60
|
+
open(filename, 'w'){|f| f.write(contents)}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: noir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- atton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -92,13 +92,6 @@ files:
|
|
92
92
|
- lib/noir/command/edit.rb
|
93
93
|
- lib/noir/command/edit/note.rb
|
94
94
|
- lib/noir/command/edit/weekly_report.rb
|
95
|
-
- lib/noir/command/edit/weekly_report/friday.rb
|
96
|
-
- lib/noir/command/edit/weekly_report/monday.rb
|
97
|
-
- lib/noir/command/edit/weekly_report/saturday.rb
|
98
|
-
- lib/noir/command/edit/weekly_report/sunday.rb
|
99
|
-
- lib/noir/command/edit/weekly_report/thursday.rb
|
100
|
-
- lib/noir/command/edit/weekly_report/tuesday.rb
|
101
|
-
- lib/noir/command/edit/weekly_report/wednesday.rb
|
102
95
|
- lib/noir/command/format.rb
|
103
96
|
- lib/noir/command/format/pdf_url.rb
|
104
97
|
- lib/noir/command/help.rb
|
@@ -110,8 +103,13 @@ files:
|
|
110
103
|
- lib/noir/command/new/makefile.rb
|
111
104
|
- lib/noir/command/new/makefile/tex.rb
|
112
105
|
- lib/noir/command/new/note.rb
|
106
|
+
- lib/noir/command/summarize.rb
|
107
|
+
- lib/noir/command/summarize/note.rb
|
108
|
+
- lib/noir/command/summarize/note/weekly.rb
|
113
109
|
- lib/noir/executer.rb
|
114
110
|
- lib/noir/options.rb
|
111
|
+
- lib/noir/util.rb
|
112
|
+
- lib/noir/util/weekly.rb
|
115
113
|
- lib/noir/version.rb
|
116
114
|
- noir.gemspec
|
117
115
|
- spec/noir/command/calculate/time_spec.rb
|
@@ -138,6 +136,9 @@ files:
|
|
138
136
|
- spec/noir/command/new/makefile_spec.rb
|
139
137
|
- spec/noir/command/new/note_spec.rb
|
140
138
|
- spec/noir/command/new_spec.rb
|
139
|
+
- spec/noir/command/summarize/note/weekly_spec.rb
|
140
|
+
- spec/noir/command/summarize/note_spec.rb
|
141
|
+
- spec/noir/command/summarize_spec.rb
|
141
142
|
- spec/noir/command_spec.rb
|
142
143
|
- spec/noir/executer_spec.rb
|
143
144
|
- spec/noir/noir/base/command_spec.rb
|
@@ -195,6 +196,9 @@ test_files:
|
|
195
196
|
- spec/noir/command/new/makefile_spec.rb
|
196
197
|
- spec/noir/command/new/note_spec.rb
|
197
198
|
- spec/noir/command/new_spec.rb
|
199
|
+
- spec/noir/command/summarize/note/weekly_spec.rb
|
200
|
+
- spec/noir/command/summarize/note_spec.rb
|
201
|
+
- spec/noir/command/summarize_spec.rb
|
198
202
|
- spec/noir/command_spec.rb
|
199
203
|
- spec/noir/executer_spec.rb
|
200
204
|
- spec/noir/noir/base/command_spec.rb
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class Noir::Command::Edit::WeeklyReport::Friday < Noir::Base::TerminalCommand
|
2
|
-
@description = 'edit weekly report separated by friday'
|
3
|
-
|
4
|
-
class << self
|
5
|
-
def execute *args
|
6
|
-
week_diff = args.first.to_i || 0
|
7
|
-
Noir::Command::Edit::WeeklyReport.edit_report :friday, week_diff
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class Noir::Command::Edit::WeeklyReport::Monday < Noir::Base::TerminalCommand
|
2
|
-
@description = 'edit weekly report separated by monday'
|
3
|
-
|
4
|
-
class << self
|
5
|
-
def execute *args
|
6
|
-
week_diff = args.first.to_i || 0
|
7
|
-
Noir::Command::Edit::WeeklyReport.edit_report :monday, week_diff
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class Noir::Command::Edit::WeeklyReport::Saturday < Noir::Base::TerminalCommand
|
2
|
-
@description = 'edit weekly report separated by saturday'
|
3
|
-
|
4
|
-
class << self
|
5
|
-
def execute *args
|
6
|
-
week_diff = args.first.to_i || 0
|
7
|
-
Noir::Command::Edit::WeeklyReport.edit_report :saturday, week_diff
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class Noir::Command::Edit::WeeklyReport::Sunday < Noir::Base::TerminalCommand
|
2
|
-
@description = 'edit weekly report separated by sunday'
|
3
|
-
|
4
|
-
class << self
|
5
|
-
def execute *args
|
6
|
-
week_diff = args.first.to_i || 0
|
7
|
-
Noir::Command::Edit::WeeklyReport.edit_report :sunday, week_diff
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class Noir::Command::Edit::WeeklyReport::Thursday < Noir::Base::TerminalCommand
|
2
|
-
@description = 'edit weekly report separated by thursday'
|
3
|
-
|
4
|
-
class << self
|
5
|
-
def execute *args
|
6
|
-
week_diff = args.first.to_i || 0
|
7
|
-
Noir::Command::Edit::WeeklyReport.edit_report :thursday, week_diff
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class Noir::Command::Edit::WeeklyReport::Tuesday < Noir::Base::TerminalCommand
|
2
|
-
@description = 'edit weekly report separated by tuesday'
|
3
|
-
|
4
|
-
class << self
|
5
|
-
def execute *args
|
6
|
-
week_diff = args.first.to_i || 0
|
7
|
-
Noir::Command::Edit::WeeklyReport.edit_report :tuesday, week_diff
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class Noir::Command::Edit::WeeklyReport::Wednesday < Noir::Base::TerminalCommand
|
2
|
-
@description = 'edit weekly report separated by wednesday'
|
3
|
-
|
4
|
-
class << self
|
5
|
-
def execute *args
|
6
|
-
week_diff = args.first.to_i || 0
|
7
|
-
Noir::Command::Edit::WeeklyReport.edit_report :wednesday, week_diff
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|