rbnotes 0.2.1 → 0.2.2

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
  SHA256:
3
- metadata.gz: e3b44e20631a0216391b389aee7faca4ecebe31502bbff92606c938023a98240
4
- data.tar.gz: 4a39041ad77631da13be01ebde0745edd38f22f52b5c9ad2ae1a002053739c1b
3
+ metadata.gz: 74c8725b48ee7e4048c6689227e519e27490e604463f84822211b0bad0bf8849
4
+ data.tar.gz: 71ef7e862a20d309c2c8fb29dc54ddacd42f6c3ab1f2eefd2e1dfb17e6ca8b2b
5
5
  SHA512:
6
- metadata.gz: e98fabf28f56131caf2ec40c1111aa74a0819d923937cd033eeed6921c5ce43102657e8c3d787a8b9718b3057e7505921d2f7d316a327a041e80dcc2bce4b2ae
7
- data.tar.gz: 672cd941dd68c545056c752a714bc29df9a9de5b14ce00b8c6568562df619e796c7cea77b376380bb3c32c06d680f834552c3c6367033bf2ab02b7460c4e1b0f
6
+ metadata.gz: b3310eae55fd1bc5e5b8a9b83a0ba5ae7f76e3d953a8a94f62fb7aabd9952ff03f868328e4b1e978b9c80a9c9b3563b676fc10eb776dbb47051bb1026fcad765
7
+ data.tar.gz: 36e328b4a3a6fe64f52c52f31050c46b372f91e2f768420b235c1ed811908634e80197aa7cf358cc87e434f57cba61fcbefa76a0aa61633e119d70f3502a9997
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
7
7
  ## [Unreleased]
8
8
  Nothing to record here.
9
9
 
10
+ ## [0.2.2] - 2020-10-27
11
+ ###
12
+ - Add feature to accept a timestamp pattern in `list` command. (#22)
13
+
10
14
  ## [0.2.1] - 2020-10-25
11
15
  ### Added
12
16
  - Add feature to load the configuration from an external file.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rbnotes (0.2.1)
4
+ rbnotes (0.2.2)
5
5
  textrepo (~> 0.4)
6
6
  unicode-display_width (~> 1.7)
7
7
 
@@ -10,7 +10,7 @@ GEM
10
10
  specs:
11
11
  minitest (5.14.2)
12
12
  rake (13.0.1)
13
- textrepo (0.4.2)
13
+ textrepo (0.4.3)
14
14
  unicode-display_width (1.7.0)
15
15
 
16
16
  PLATFORMS
data/README.md CHANGED
@@ -9,13 +9,17 @@ Rbnotes is a simple utility to write a note in the single repository.
9
9
  Add this line to your application's Gemfile:
10
10
 
11
11
  ```ruby
12
- gem 'rbnotes, github: 'mnbi/rbnotes, branch: 'main'
12
+ gem 'rbnotes'
13
13
  ```
14
14
 
15
15
  And then execute:
16
16
 
17
17
  $ bundle install
18
18
 
19
+ Or install it yourself as:
20
+
21
+ $ gem install rbnotes
22
+
19
23
  ## Usage
20
24
 
21
25
  General syntax is:
@@ -31,6 +31,8 @@ module Rbnotes
31
31
  usage: rbnotes [command] [args]
32
32
 
33
33
  command:
34
+ add : create a new note
35
+ update STAMP : edit the note with external editor
34
36
  import FILE : import a FILE into the repository
35
37
  list NUM : list NUM notes
36
38
  show STAMP : show the note specified with STAMP
@@ -2,42 +2,78 @@ require "unicode/display_width"
2
2
  require "io/console/size"
3
3
 
4
4
  module Rbnotes
5
+ ##
6
+ # Defines `list` command for `rbnotes`. See the document of execute
7
+ # method to know about the behavior of this command.
8
+
5
9
  class Commands::List < Commands::Command
10
+
11
+ ##
12
+ # Shows the list of notes in the repository. The only argument is
13
+ # optional. If it passed, it must be an timestamp pattern. A
14
+ # timestamp is an instance of Textrepo::Timestamp class. A
15
+ # timestamp pattern is a string which would match several
16
+ # Timestamp objects.
17
+ #
18
+ # Here is
19
+ # several examples of timestamp patterns.
20
+ #
21
+ # "20201027093600_012": a complete string to represent a timestamp
22
+ # - this pattern would match exactly one Timestamp object
23
+ #
24
+ # "20201027": specifies year and date
25
+ # - all Timestamps those have the same year and date would match
26
+ #
27
+ # "2020": specifies year only
28
+ # - all Timestamps those have the same year would match
29
+ #
30
+ # "1027": specifies date only
31
+ # - all Timestamps those have the same date would match, even if
32
+ # they have the different year.
33
+ #
34
+ # :call-seq:
35
+ # execute(Array, Rbnotes::Conf or Hash) -> nil
36
+
6
37
  def execute(args, conf)
7
- @row, @column = IO.console_size
8
- max = (args.shift || @row - 3).to_i
38
+ pattern = args.shift # `nil` is acceptable
9
39
 
10
40
  @repo = Textrepo.init(conf)
11
- notes = @repo.entries.sort{|a, b| b <=> a}
12
- notes[0, max].each { |timestamp_str|
13
- puts make_headline(timestamp_str)
41
+ # newer stamp shoud be above
42
+ stamps = @repo.entries(pattern).sort{|a, b| b <=> a}
43
+ stamps.each { |timestamp|
44
+ puts make_headline(timestamp)
14
45
  }
15
46
  end
16
47
 
48
+ # :stopdoc:
49
+
17
50
  private
18
51
  TIMESTAMP_STR_MAX_WIDTH = "yyyymoddhhmiss_sfx".size
52
+
53
+ ##
19
54
  # Makes a headline with the timestamp and subject of the notes, it
20
55
  # looks like as follows:
21
56
  #
22
- # |<------------------ console column size --------------------->|
23
- # +-- timestamp ---+ +--- subject (the 1st line of each note) --+
24
- # | | | |
25
- # 20101010001000_123: # I love Macintosh. [EOL]
26
- # 20100909090909_999: # This is very very long long loooong subje[EOL]
27
- # ++
28
- # ^--- delimiter (2 characters)
57
+ # |<------------------ console column size --------------------->|
58
+ # +-- timestamp ---+ +--- subject (the 1st line of each note) --+
59
+ # | | | |
60
+ # 20101010001000_123: # I love Macintosh. [EOL]
61
+ # 20100909090909_999: # This is very very long long loooong subje[EOL]
62
+ # ++
63
+ # ^--- delimiter (2 characters)
29
64
  #
30
65
  # The subject part will truncate when it is long.
31
- def make_headline(timestamp_str)
32
66
 
67
+ def make_headline(timestamp)
68
+ _, column = IO.console_size
33
69
  delimiter = ": "
34
- subject_width = @column - TIMESTAMP_STR_MAX_WIDTH - delimiter.size - 1
70
+ subject_width = column - TIMESTAMP_STR_MAX_WIDTH - delimiter.size - 1
35
71
 
36
- subject = @repo.read(Textrepo::Timestamp.parse_s(timestamp_str))[0]
72
+ subject = @repo.read(timestamp)[0]
37
73
  prefix = '# '
38
74
  subject = prefix + subject.lstrip if subject[0, 2] != prefix
39
75
 
40
- ts_part = "#{timestamp_str} "[0..(TIMESTAMP_STR_MAX_WIDTH - 1)]
76
+ ts_part = "#{timestamp.to_s} "[0..(TIMESTAMP_STR_MAX_WIDTH - 1)]
41
77
  sj_part = truncate_str(subject, subject_width)
42
78
 
43
79
  ts_part + delimiter + sj_part
@@ -53,5 +89,7 @@ module Rbnotes
53
89
  }
54
90
  result
55
91
  end
92
+
93
+ # :startdoc:
56
94
  end
57
95
  end
@@ -1,4 +1,4 @@
1
1
  module Rbnotes
2
- VERSION = "0.2.1"
3
- RELEASE = '2020-10-25'
2
+ VERSION = "0.2.2"
3
+ RELEASE = '2020-10-27'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbnotes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - mnbi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-25 00:00:00.000000000 Z
11
+ date: 2020-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: textrepo