contacts_txt 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f64f636af43564a972be03194347dcefbb3ba530
4
+ data.tar.gz: 5737297dfe22c8170439a04523c2c9704f7db98a
5
+ SHA512:
6
+ metadata.gz: d322402305545cbbdb64ca8d4163b00c9ca5e2a02fe78c80c4f27cd05125ca38431278fa341c7299e3641152e3d2677c87134ce473683b371b16e77c423b3e96
7
+ data.tar.gz: 962b91e23c431f1e8b80e7f4caa2f80280415088a7cb8dbc48f07711d9f8ed03507fdf696af6c7b406da0ca9bef6005fb3482c99f1cece3830e5b96a2618d957
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
Binary file
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: contacts_txt.rb
4
+
5
+ require 'dynarex'
6
+
7
+
8
+ class ContactsTxt
9
+
10
+ attr_reader :to_s
11
+
12
+ def initialize(filename='contacts.txt', path: '.', \
13
+ fields: %w(tags email address notes))
14
+ @fields = %w(fullname firstname lastname tel) | fields
15
+ @filename, @path = filename, path
16
+
17
+ fpath = File.join(path, filename)
18
+
19
+ @dx = if File.exists?(fpath) then
20
+ import_to_dx(File.read(fpath))
21
+ else
22
+ new_dx()
23
+ end
24
+ end
25
+
26
+ def dx()
27
+ @dx
28
+ end
29
+
30
+ def save(filename=@filename)
31
+
32
+ s = dx_to_s(@dx, title: File.basename(filename) )
33
+ File.write File.join(@path, filename), s
34
+
35
+ end
36
+
37
+ def to_s()
38
+ dx_to_s @dx
39
+ end
40
+
41
+ private
42
+
43
+ def dx_to_s(dx, title: File.basename(@filename))
44
+
45
+ rows = dx.all.map do |row|
46
+
47
+ h = row.to_h
48
+
49
+ fullname = h.delete :fullname
50
+ h.delete :firstname
51
+ h.delete :lastname
52
+ a = h.to_a.reject! {|k,v| v.empty?}
53
+
54
+ ([fullname] + a.map {|x| x.join(': ') }).join("\n")
55
+ end
56
+
57
+ "%s\n%s\n\n%s" % [title, '=' * title.length, rows.join("\n\n")]
58
+
59
+ end
60
+
61
+ def import_to_dx(raw_s)
62
+
63
+ s = raw_s.lstrip.lines[2..-1].join.strip.\
64
+ split(/\s+(?=^[\w\s]+$)/).map {|x| 'fullname: ' + x }.join("\n")
65
+
66
+ new_dx().import "--+\n" + s
67
+
68
+ end
69
+
70
+ def new_dx()
71
+
72
+ Dynarex.new "contacts/contact(#{@fields.join ', '})"
73
+
74
+ end
75
+
76
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: contacts_txt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
+ YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
+ 8ixkARkWAmV1MB4XDTE1MTIxMzEyNDkzMloXDTE2MTIxMjEyNDkzMlowSDESMBAG
16
+ A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
+ EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
+ ggEBAKaGL7pczYxS8DzY71I4D3Bkw2EHjstcaG2czifrP5KeSMA1tO9QqwxoX1lp
19
+ nSzK/1Wqxa6TSHMMtr+UY35h2qK8XMkVXj7V5gPrUkrFUMwQaFzJby2UT9G/Jqk1
20
+ oMnVguXTAZvU0frqteM+lfkaY+NgrQiQQq+I8WPtQF5V4VK9gf8MQoVjSc94YphI
21
+ rNMqortzeapERFJ4IZg8/kXVyWCoKXrJ10GXQ9iWq/V+RSr34Y6q5SXomLZTKYm7
22
+ 4OGangs09PI11GmE87saBRtwT4MkjSTD6qEM+hrS9h9Yj0ntNR69im7hRNuIoZw9
23
+ KsZHzS8eHwysqe39Uc3d5aAchQ8CAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
+ DwQEAwIEsDAdBgNVHQ4EFgQUJXTjnQ+Z5kr+Sk12VqllqeVlUlgwJgYDVR0RBB8w
25
+ HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
+ c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAMMfRKcm5
27
+ ExxHe9nUksabfBiYFTtrVehkOmFZy2eVrUaaeg0YBquqOyhP0RsgjhO8/6+ndp2L
28
+ Bs9fkDwDqIwZ0r1Jy4JYNRZug/LzuxXv51IWa3yN+b/JIybQobdUsLP3W4xng+mS
29
+ zydGYLPehHYag4MtK+hb3L9uYj/NDWKgSBi5aTm2p8r+e0pHrhRHDwbl+gtKDjyn
30
+ ij71NTxNLGkHUd4D7WadOvkDzpCrz8uQ8EJktnsidwvlyTq/ZdmiQ0WhfLFYjjeN
31
+ 8BrWDFGNkIWV3yB/gSHs8fdeilDhOC6aNlKtykxtMiM68u+9GhOj3HtgmLAdp9zC
32
+ m8j9CN8cBtwSBA==
33
+ -----END CERTIFICATE-----
34
+ date: 2015-12-13 00:00:00.000000000 Z
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: dynarex
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.5'
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 1.5.44
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.5'
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 1.5.44
56
+ description:
57
+ email: james@r0bertson.co.uk
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/contacts_txt.rb
63
+ homepage: https://github.com/jrobertson/contacts_txt
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 2.4.8
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: Reads a contacts.txt file
87
+ test_files: []
metadata.gz.sig ADDED
Binary file