qv 0.0.5 → 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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/qv/note.rb +22 -4
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 244e59e3abf0f3d4384749005daec069c07848e2
4
- data.tar.gz: c5db05292e9ae4e89a4dcafa84dc8e7e1e23be2a
3
+ metadata.gz: d8b7ef1822fa4534a4a959381571012a9b3a8def
4
+ data.tar.gz: 47eaba336bba6cee1e4e71d2f260e980b36fb774
5
5
  SHA512:
6
- metadata.gz: fe378573774a8617ce2ef2fb0f6e31c27d75f43b9a1c8f1b8a075c0e594d9d70d655585b074de4147b3c3c27a0626daf1a1f39255fbb331e938d8aa14c807e29
7
- data.tar.gz: 9ec4d6fff653a578ea0ed8cc9bc223d030db48f6cba7eebb8df660a7983728bc2f8d389205d164d75935175dead53c5dcbda09c4f427884d1258bea4e2c1c156
6
+ metadata.gz: 8533eb5841e1a6a54f922ee9607e3cb77cbe6c1a2ac142a7fd41c1ae16ae6bbc4d970bdb305475ee86be0196a863acd21bf68a93aa7a42c0526c8ca3ab7af98c
7
+ data.tar.gz: 9f219395a3b12c19ac914910f72e256680dd7851692342ad2d617f69628b690701f4642370b93a8b37b7d024804016249371ffd1b1e96b17b4eb27d9115350bf
@@ -3,11 +3,17 @@ require 'qv/qvconfig'
3
3
  class Note
4
4
  attr_reader :filename
5
5
 
6
- def initialize(args)
7
- @filename = args[:file]
6
+ def initialize(args = {})
7
+ @filename = validate(args[:file])
8
8
  @title = title
9
9
  @path = path
10
10
  end
11
+
12
+ def validate(filename)
13
+ raise ArgumentError, "Note requires a :file argument" unless filename
14
+ raise ArgumentError, "#{filename} contains an invalid character" unless filename.valid_encoding?
15
+ filename
16
+ end
11
17
 
12
18
  def title
13
19
  @title || File.basename(@filename, File.extname(@filename))
@@ -21,12 +27,24 @@ class Note
21
27
  File.open(@path)
22
28
  end
23
29
 
30
+ def body
31
+ get_io.read.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
32
+ end
33
+
24
34
  def matches?(search_term)
25
- get_io.read.match(/^.*#{search_term}.*$/i)
35
+ begin
36
+ body.match(/^.*#{search_term}.*$/i)
37
+ rescue ArgumentError => e
38
+ raise ArgumentError, "#{filename}: #{e}"
39
+ end
26
40
  end
27
41
 
28
42
  def title_matches?(search_term)
29
- @title.match(/^.*#{search_term}.*$/i)
43
+ begin
44
+ title.match(/^.*#{search_term}.*$/i)
45
+ rescue ArgumentError => e
46
+ puts "ERR: Filename of #{@filename}\n#{e}"
47
+ end
30
48
  end
31
49
 
32
50
  def edit
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Gwilliam