contacts_txt 0.1.2 → 0.2.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/contacts_txt.rb +50 -12
- metadata +5 -5
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 36a091366cefe47c3b1f63b8e884266504b6cb2e
         | 
| 4 | 
            +
              data.tar.gz: 87e0c7b7ca9357aa61eab4ead1fd703fc6f649a1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1dccaa1c491cc9a1d586d74a3c32b849b6e4f94dcbb126b6a1118ea0c7fdc728e4edaafad93aeaf7bdc5c9e1528dee089904b7e5be51d4ada102de92324a6268
         | 
| 7 | 
            +
              data.tar.gz: 5b5a9da840d7c2c0c5c0766954a83a5d724ec33956f6beca927eb31f4cc6add131d3f8395810c3bea9211da7e01178b1a443bc1f83ae905300863c641cb16b60
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/lib/contacts_txt.rb
    CHANGED
    
    | @@ -9,16 +9,27 @@ class ContactsTxt | |
| 9 9 |  | 
| 10 10 | 
             
              attr_reader :to_s
         | 
| 11 11 |  | 
| 12 | 
            -
              def initialize( | 
| 13 | 
            -
             | 
| 14 | 
            -
                @fields  = %w(fullname firstname lastname tel) | fields
         | 
| 12 | 
            +
              def initialize(src=nil, fields: %w(mobile email dob tags address notes), 
         | 
| 13 | 
            +
                             username: nil, password: nil)
         | 
| 15 14 |  | 
| 16 | 
            -
                @ | 
| 17 | 
            -
                @filename =  path == '.' ? raw_filename : File.basename(raw_filename)
         | 
| 15 | 
            +
                @fields  = %w(fullname firstname lastname tel) | fields
         | 
| 18 16 |  | 
| 19 | 
            -
                 | 
| 17 | 
            +
                txt, type = if src then
         | 
| 18 | 
            +
                  RXFHelper.read(src, username: username, password: password)
         | 
| 19 | 
            +
                else
         | 
| 20 | 
            +
                  ['', :unknown]
         | 
| 21 | 
            +
                end
         | 
| 20 22 |  | 
| 21 | 
            -
                 | 
| 23 | 
            +
                case type
         | 
| 24 | 
            +
                when :file
         | 
| 25 | 
            +
                  @path, @filename =  File.dirname(src), File.basename(src)
         | 
| 26 | 
            +
                when :url
         | 
| 27 | 
            +
                  @path, @filename = '.', File.basename(src)
         | 
| 28 | 
            +
                when :unknown
         | 
| 29 | 
            +
                  @path, @filename = '.', 'contacts.txt'
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
                
         | 
| 32 | 
            +
                @dx = txt.lines.length > 1 ? import_to_dx(txt) : new_dx()
         | 
| 22 33 |  | 
| 23 34 | 
             
              end
         | 
| 24 35 |  | 
| @@ -50,7 +61,7 @@ class ContactsTxt | |
| 50 61 |  | 
| 51 62 | 
             
              private
         | 
| 52 63 |  | 
| 53 | 
            -
              def dx_to_s(dx | 
| 64 | 
            +
              def dx_to_s(dx)
         | 
| 54 65 |  | 
| 55 66 | 
             
                rows = dx.all.map do |row|
         | 
| 56 67 |  | 
| @@ -64,16 +75,43 @@ class ContactsTxt | |
| 64 75 | 
             
                  ([fullname] + a.map {|x| x.join(': ') }).join("\n")
         | 
| 65 76 | 
             
                end
         | 
| 66 77 |  | 
| 67 | 
            -
                "%s | 
| 78 | 
            +
                "<?contacts fields='%s'?>\n\n%s" % [@fields, rows.join("\n\n")]
         | 
| 68 79 |  | 
| 69 80 | 
             
              end
         | 
| 70 81 |  | 
| 71 82 | 
             
              def import_to_dx(raw_s)
         | 
| 72 83 |  | 
| 73 | 
            -
                s = raw_s | 
| 74 | 
            -
             | 
| 84 | 
            +
                s = if raw_s =~ /<?contacts / then
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  raw_contacts = raw_s.clone
         | 
| 87 | 
            +
                  s2 = raw_contacts.slice!(/<\?contacts [^>]+\?>/)
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                  attributes = %w(fields delimiter id).inject({}) do |r, keyword|
         | 
| 90 | 
            +
                    found = s2[/(?<=#{keyword}=['"])[^'"]+/]
         | 
| 91 | 
            +
                    found ? r.merge(keyword.to_sym => found) : r
         | 
| 92 | 
            +
                  end
         | 
| 93 | 
            +
                  
         | 
| 94 | 
            +
                  h = {
         | 
| 95 | 
            +
                    fields: @fields.join(', '), 
         | 
| 96 | 
            +
                  }.merge attributes          
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                  @fields = h[:fields].split(/ *, */)      
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                  if h[:root] then
         | 
| 101 | 
            +
                    "\n\n" + h[:root] + "\n" + 
         | 
| 102 | 
            +
                      raw_contacts.strip.lines.map {|line| '  ' + line}.join
         | 
| 103 | 
            +
                  else
         | 
| 104 | 
            +
                    raw_contacts
         | 
| 105 | 
            +
                  end
         | 
| 106 | 
            +
                  
         | 
| 107 | 
            +
                else
         | 
| 108 | 
            +
                  
         | 
| 109 | 
            +
                  raw_s.lstrip.lines[2..-1].join.strip
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                end
         | 
| 75 112 |  | 
| 76 | 
            -
                new_dx().import  "--+\n" + s
         | 
| 113 | 
            +
                new_dx().import  "--+\n" + s.split(/\s+(?=^[\w\s]+$)/)\
         | 
| 114 | 
            +
                  .map {|x| 'fullname: ' + x }.join("\n")    
         | 
| 77 115 |  | 
| 78 116 | 
             
              end
         | 
| 79 117 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: contacts_txt
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - James Robertson
         | 
| @@ -31,7 +31,7 @@ cert_chain: | |
| 31 31 | 
             
              Ebw/4t8+mfs6ivuW6xdj3SlqhEXlfJ83mZuvJ3LtQteR5p0R8DSLcTXMkOrWD6wC
         | 
| 32 32 | 
             
              07GXbdChvjqXQg==
         | 
| 33 33 | 
             
              -----END CERTIFICATE-----
         | 
| 34 | 
            -
            date: 2017- | 
| 34 | 
            +
            date: 2017-09-25 00:00:00.000000000 Z
         | 
| 35 35 | 
             
            dependencies:
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: dynarex
         | 
| @@ -42,7 +42,7 @@ dependencies: | |
| 42 42 | 
             
                    version: '1.7'
         | 
| 43 43 | 
             
                - - ">="
         | 
| 44 44 | 
             
                  - !ruby/object:Gem::Version
         | 
| 45 | 
            -
                    version: 1.7. | 
| 45 | 
            +
                    version: 1.7.26
         | 
| 46 46 | 
             
              type: :runtime
         | 
| 47 47 | 
             
              prerelease: false
         | 
| 48 48 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -52,7 +52,7 @@ dependencies: | |
| 52 52 | 
             
                    version: '1.7'
         | 
| 53 53 | 
             
                - - ">="
         | 
| 54 54 | 
             
                  - !ruby/object:Gem::Version
         | 
| 55 | 
            -
                    version: 1.7. | 
| 55 | 
            +
                    version: 1.7.26
         | 
| 56 56 | 
             
            description: 
         | 
| 57 57 | 
             
            email: james@jamesrobertson.eu
         | 
| 58 58 | 
             
            executables: []
         | 
| @@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 80 80 | 
             
                  version: '0'
         | 
| 81 81 | 
             
            requirements: []
         | 
| 82 82 | 
             
            rubyforge_project: 
         | 
| 83 | 
            -
            rubygems_version: 2.6. | 
| 83 | 
            +
            rubygems_version: 2.6.13
         | 
| 84 84 | 
             
            signing_key: 
         | 
| 85 85 | 
             
            specification_version: 4
         | 
| 86 86 | 
             
            summary: Reads a contacts.txt file
         | 
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |