wloger 0.0.4 → 0.1.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 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