wloger 0.0.4 → 0.1.0

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: cc6571a6d7d733aa2a9489941b1f49e025c4128f
4
- data.tar.gz: f6562c4cf030117b1f5289198e3eaa66d7e8a8cc
3
+ metadata.gz: 171a50a811e6c93ba8564e42459b7a40b5590a2d
4
+ data.tar.gz: 790ee630ccdd142dd08fd449a02b69ed1ff8d8a9
5
5
  SHA512:
6
- metadata.gz: feb4265e6ffbfe804613e6320391d29cb15e0e3fe96268d5da62f40ca6fef885b7b8d9d140f95d1a0407f573394132ac48c4ec090ed4a4fed088aca4f5ffbe64
7
- data.tar.gz: d53312dad2c9e2e8b8cd87aba89c5312a65fb1cf7a9c1c34c484de044f23cd4e4064389c7e9fff72718ab2010275b4b4d023c99b6efc9b62be54967d3f080b65
6
+ metadata.gz: c72e27c1ef07b56d5b97889b384fd2fef8133c12e74ccceaf0f704b7009e0a3322b8e709299bbd17da716bc7f7c8586863ac66cab8a1e92fe05ad88b608d630e
7
+ data.tar.gz: 8df8feeef16154a9424412b5e36b21d86549a0551a25a0c2d6a120bef75d766bb4202bbee1c35d2bbc8c13725aa9d23f4517e6a04326f88c5109774bab07d0e0
@@ -1,5 +1,6 @@
1
+ require 'wloger/base/log_file'
1
2
  require 'wloger/command'
2
- require 'wloger/log_file'
3
+ require 'wloger/interface/search'
3
4
  require 'wloger/today_log_file'
4
5
  require 'wloger/past_log_file'
5
6
  require 'wloger/error'
@@ -0,0 +1,19 @@
1
+ module Wloger
2
+ module Base
3
+ # base class for today and past logs
4
+ class LogFile
5
+ PARENT_DIR_NAME = File.expand_path('~/Documents').freeze
6
+ DIR_NAME = 'work_log'.freeze
7
+ LOG_DIR_NAME = "#{PARENT_DIR_NAME}/#{DIR_NAME}".freeze
8
+ LOG_NAME = 'log'.freeze
9
+ LOG_EXTENTION = 'md'.freeze
10
+ EDITOR_NAME = 'vim'.freeze
11
+
12
+ def initialize(date)
13
+ @date = date
14
+ @log_dir = "#{PARENT_DIR_NAME}/#{DIR_NAME}/#{date.strftime('%Y_%m/%d')}"
15
+ @log_path = "#{@log_dir}/#{LOG_NAME}.#{LOG_EXTENTION}"
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,6 @@
1
- require 'date'
2
1
  require 'thor'
2
+ require 'date'
3
+ require 'find'
3
4
 
4
5
  module Wloger
5
6
  # Command line parse class
@@ -11,14 +12,21 @@ module Wloger
11
12
  date = Date.today
12
13
  @today_log = Wloger::TodayLogFile.new(date)
13
14
  @today_log.edit
15
+ end
14
16
 
17
+ desc 'search', 'Grep in all log files'
18
+ def search(key)
19
+ dates = find_all_log_dates
20
+ grep_results = get_all_grep_results(dates, key)
21
+
22
+ Wloger::Interface::Search.new(grep_results)
15
23
  end
16
24
 
17
25
  desc 'version', 'Show the version of Wloger'
18
26
  def version
19
27
  puts Wloger::VERSION
20
28
  end
21
- map %w[-v --version] => :version
29
+ map %w(-v --version) => :version
22
30
 
23
31
  desc '[DATE]', 'Open the work-log file assigned DATE'
24
32
  def method_missing(method)
@@ -31,5 +39,28 @@ module Wloger
31
39
  @past_log = Wloger::PastLogFile.new(date)
32
40
  @past_log.view
33
41
  end
42
+
43
+ private
44
+
45
+ def find_all_log_dates
46
+ results = []
47
+ regexp = /\d{4}_\d{2}\/\d{2}/
48
+ Find.find(Wloger::Base::LogFile::LOG_DIR_NAME) do |f|
49
+ next unless f =~ /#{regexp}\/log\.md/
50
+ date = Date.parse(f[regexp])
51
+ results << date
52
+ end
53
+ results
54
+ end
55
+
56
+ def get_all_grep_results(dates, key)
57
+ results = []
58
+ dates.each do |d|
59
+ log = Wloger::PastLogFile.new(d)
60
+ grep_result = log.grep(key)
61
+ results += grep_result unless grep_result.empty?
62
+ end
63
+ results
64
+ end
34
65
  end
35
66
  end
@@ -0,0 +1,33 @@
1
+ module Wloger
2
+ module Interface
3
+ # command line user interface for search function class
4
+ class Search
5
+ def initialize(results)
6
+ @results = results
7
+ output_results
8
+ interact_with_user
9
+ end
10
+
11
+ private
12
+
13
+ def output_results
14
+ digit = @results.count.to_s.length
15
+ @results.each_with_index do |r, i|
16
+ puts "{#{i.to_s.rjust(digit, '0')}}[#{r[0]}]:#{r[1]}"
17
+ end
18
+ end
19
+
20
+ def interact_with_user
21
+ print "\nPlease input a number of log file to open[q]: "
22
+ assign = input_parse(STDIN.gets.chomp)
23
+
24
+ Wloger::PastLogFile.new(@results[assign][0]).view
25
+ end
26
+
27
+ def input_parse(str)
28
+ exit if str == 'q'
29
+ str.to_i
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,10 +1,15 @@
1
1
  module Wloger
2
2
  # past log file class
3
3
  ## In case, this class operate today log file.
4
- class PastLogFile < LogFile
4
+ class PastLogFile < Base::LogFile
5
5
  def view
6
6
  Wloger::Error.no_log_file(@date) unless File.exist?(@log_path)
7
7
  system("#{EDITOR_NAME} #{@log_path}")
8
8
  end
9
+
10
+ def grep(key)
11
+ array = File.readlines(@log_path).grep(/#{key}/)
12
+ [@date].product(array)
13
+ end
9
14
  end
10
15
  end
@@ -3,7 +3,7 @@ require 'fileutils'
3
3
  module Wloger
4
4
  # today log file class
5
5
  ## If don't exist today dir, this class make the dir.
6
- class TodayLogFile < LogFile
6
+ class TodayLogFile < Base::LogFile
7
7
  def edit
8
8
  make_dir unless File.exist?(@log_dir)
9
9
  system("#{EDITOR_NAME} #{@log_path}")
@@ -1,3 +1,3 @@
1
1
  module Wloger
2
- VERSION = '0.0.4'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wloger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - huyu398
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-25 00:00:00.000000000 Z
11
+ date: 2014-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.6'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: Wloger manages the directory control of work-logs and automatically select
@@ -89,8 +89,8 @@ executables:
89
89
  extensions: []
90
90
  extra_rdoc_files: []
91
91
  files:
92
- - .gitignore
93
- - .rspec
92
+ - ".gitignore"
93
+ - ".rspec"
94
94
  - Gemfile
95
95
  - Guardfile
96
96
  - LICENSE.txt
@@ -98,9 +98,10 @@ files:
98
98
  - Rakefile
99
99
  - bin/wloger
100
100
  - lib/wloger.rb
101
+ - lib/wloger/base/log_file.rb
101
102
  - lib/wloger/command.rb
102
103
  - lib/wloger/error.rb
103
- - lib/wloger/log_file.rb
104
+ - lib/wloger/interface/search.rb
104
105
  - lib/wloger/past_log_file.rb
105
106
  - lib/wloger/today_log_file.rb
106
107
  - lib/wloger/version.rb
@@ -118,17 +119,17 @@ require_paths:
118
119
  - lib
119
120
  required_ruby_version: !ruby/object:Gem::Requirement
120
121
  requirements:
121
- - - '>='
122
+ - - ">="
122
123
  - !ruby/object:Gem::Version
123
124
  version: '0'
124
125
  required_rubygems_version: !ruby/object:Gem::Requirement
125
126
  requirements:
126
- - - '>='
127
+ - - ">="
127
128
  - !ruby/object:Gem::Version
128
129
  version: '0'
129
130
  requirements: []
130
131
  rubyforge_project:
131
- rubygems_version: 2.0.0
132
+ rubygems_version: 2.2.0
132
133
  signing_key:
133
134
  specification_version: 4
134
135
  summary: Wloger help to manage your daily work-logs.
@@ -136,3 +137,4 @@ test_files:
136
137
  - spec/lib/wloger/directory_spec.rb
137
138
  - spec/lib/wloger_spec.rb
138
139
  - spec/spec_helper.rb
140
+ has_rdoc:
@@ -1,16 +0,0 @@
1
- module Wloger
2
- # base object for today and past logs
3
- class LogFile
4
- PARENT_DIR_NAME = File.expand_path('~/Documents').freeze
5
- DIR_NAME = 'work_log'.freeze
6
- LOG_NAME = 'log'.freeze
7
- LOG_EXTENTION = 'md'.freeze
8
- EDITOR_NAME = 'vim'.freeze
9
-
10
- def initialize(date)
11
- @date = date
12
- @log_dir = "#{PARENT_DIR_NAME}/#{DIR_NAME}/#{date.strftime('%Y_%m/%d')}"
13
- @log_path = "#{@log_dir}/#{LOG_NAME}.#{LOG_EXTENTION}"
14
- end
15
- end
16
- end