contacts_txt 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 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