actionmailer-text 0.1.0 → 0.1.1
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
- data/CHANGELOG.md +5 -0
- data/CONTRIBUTING.md +1 -1
- data/Gemfile.lock +11 -11
- data/lib/actionmailer-text/html_to_plain_text.rb +3 -0
- data/lib/actionmailer-text/version.rb +1 -1
- data/pkg/actionmailer-text-0.1.1.gem +0 -0
- data/spec/actionmailer-text/html_to_plain_text_spec.rb +183 -0
- metadata +11 -10
- data/pkg/actionmailer-text-0.1.0.gem +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: fb51e8701b903d56ac693f378e34d38039b1cb09
         | 
| 4 | 
            +
              data.tar.gz: 3a9f8751dc64409876f495f453f2af443d8cb096
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6e31e763f210563c237399ea3dc4a4ef7d928c977111dbd27ff2dc1fa4cc48987f3ab1c1085320d6b550a940fe293f28e206ccd144917d1801cad345fa6304ad
         | 
| 7 | 
            +
              data.tar.gz: 316873f7a5805e270ffc9bea597af3e60d54f62d04842947df66066b831dee11b5266ab113ea5899a925489ef5491aae44a0aee7ec98d3053b936d42b7f1212d
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,8 @@ | |
| 1 | 
            +
            ### 0.1.1 (Next)
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * Your contribution here.
         | 
| 4 | 
            +
            * [#1](https://github.com/dblock/actionmailer-text/pull/1) Ignore elements outside the body - [@woahdae](https://github.com/woahdae).
         | 
| 5 | 
            +
             | 
| 1 6 | 
             
            ### 0.1.0 (2015-04-07)
         | 
| 2 7 |  | 
| 3 8 | 
             
            * Initial public release - [@dblock](https://github.com/dblock).
         | 
    
        data/CONTRIBUTING.md
    CHANGED
    
    | @@ -84,7 +84,7 @@ git push origin my-feature-branch | |
| 84 84 |  | 
| 85 85 | 
             
            ## Make a Pull Request
         | 
| 86 86 |  | 
| 87 | 
            -
            Go to https://github.com/contributor/ | 
| 87 | 
            +
            Go to https://github.com/contributor/actionmailer-text and select your feature branch.
         | 
| 88 88 | 
             
            Click the 'Pull Request' button and fill out the form. Pull requests are usually reviewed within a few days.
         | 
| 89 89 |  | 
| 90 90 | 
             
            ## Rebase
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                actionmailer-text (0.1. | 
| 4 | 
            +
                actionmailer-text (0.1.1)
         | 
| 5 5 | 
             
                  actionmailer
         | 
| 6 6 | 
             
                  htmlentities
         | 
| 7 7 |  | 
| @@ -44,24 +44,24 @@ GEM | |
| 44 44 | 
             
                email-example-spec (0.1.0)
         | 
| 45 45 | 
             
                  actionmailer
         | 
| 46 46 | 
             
                erubis (2.7.0)
         | 
| 47 | 
            -
                globalid (0.3. | 
| 47 | 
            +
                globalid (0.3.5)
         | 
| 48 48 | 
             
                  activesupport (>= 4.1.0)
         | 
| 49 | 
            -
                htmlentities (4.3. | 
| 49 | 
            +
                htmlentities (4.3.3)
         | 
| 50 50 | 
             
                i18n (0.7.0)
         | 
| 51 51 | 
             
                json (1.8.2)
         | 
| 52 | 
            -
                loofah (2.0. | 
| 52 | 
            +
                loofah (2.0.2)
         | 
| 53 53 | 
             
                  nokogiri (>= 1.5.9)
         | 
| 54 54 | 
             
                mail (2.6.3)
         | 
| 55 55 | 
             
                  mime-types (>= 1.16, < 3)
         | 
| 56 | 
            -
                mime-types (2. | 
| 56 | 
            +
                mime-types (2.5)
         | 
| 57 57 | 
             
                mini_portile (0.6.2)
         | 
| 58 | 
            -
                minitest (5. | 
| 58 | 
            +
                minitest (5.6.1)
         | 
| 59 59 | 
             
                nokogiri (1.6.6.2)
         | 
| 60 60 | 
             
                  mini_portile (~> 0.6.0)
         | 
| 61 | 
            -
                parser (2.2. | 
| 61 | 
            +
                parser (2.2.2.2)
         | 
| 62 62 | 
             
                  ast (>= 1.1, < 3.0)
         | 
| 63 | 
            -
                powerpack (0.1. | 
| 64 | 
            -
                rack (1.6. | 
| 63 | 
            +
                powerpack (0.1.1)
         | 
| 64 | 
            +
                rack (1.6.1)
         | 
| 65 65 | 
             
                rack-test (0.6.3)
         | 
| 66 66 | 
             
                  rack (>= 1.0)
         | 
| 67 67 | 
             
                rails-deprecated_sanitizer (1.0.3)
         | 
| @@ -78,9 +78,9 @@ GEM | |
| 78 78 | 
             
                  rspec-core (~> 3.2.0)
         | 
| 79 79 | 
             
                  rspec-expectations (~> 3.2.0)
         | 
| 80 80 | 
             
                  rspec-mocks (~> 3.2.0)
         | 
| 81 | 
            -
                rspec-core (3.2. | 
| 81 | 
            +
                rspec-core (3.2.3)
         | 
| 82 82 | 
             
                  rspec-support (~> 3.2.0)
         | 
| 83 | 
            -
                rspec-expectations (3.2. | 
| 83 | 
            +
                rspec-expectations (3.2.1)
         | 
| 84 84 | 
             
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 85 85 | 
             
                  rspec-support (~> 3.2.0)
         | 
| 86 86 | 
             
                rspec-mocks (3.2.1)
         | 
| @@ -24,6 +24,9 @@ module ActionMailer | |
| 24 24 | 
             
                    he = HTMLEntities.new
         | 
| 25 25 | 
             
                    txt = he.decode(txt)
         | 
| 26 26 |  | 
| 27 | 
            +
                    # Ignore things that come outside the body
         | 
| 28 | 
            +
                    txt.gsub!(/.*?(<body.+?\/body>).*?/im, '\1')
         | 
| 29 | 
            +
             | 
| 27 30 | 
             
                    # replace image by their alt attribute
         | 
| 28 31 | 
             
                    txt.gsub!(/<img.+?alt=\"([^\"]*)\"[^>]*\/>/i, '\1')
         | 
| 29 32 | 
             
                    txt.gsub!(/<img.+?alt='([^\']*)\'[^>]*\/>/i, '\1')
         | 
| Binary file | 
| @@ -0,0 +1,183 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            require 'spec_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe ActionMailer::Text::HtmlToPlainText do
         | 
| 5 | 
            +
              it 'converts a fragment' do
         | 
| 6 | 
            +
                expect(subject.convert_to_text('<p>Test</p>')).to match(/Test/)
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              it 'converts a body' do
         | 
| 10 | 
            +
                expect(subject.convert_to_text('
         | 
| 11 | 
            +
                <html>
         | 
| 12 | 
            +
                <title>Ignore me</title>
         | 
| 13 | 
            +
                <body>
         | 
| 14 | 
            +
                <p>Test</p>
         | 
| 15 | 
            +
                </body>
         | 
| 16 | 
            +
                </html>
         | 
| 17 | 
            +
                ')).to match(/Test/)
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it 'ignores titles' do
         | 
| 21 | 
            +
                expect(subject.convert_to_text('
         | 
| 22 | 
            +
                <html>
         | 
| 23 | 
            +
                <title>Ignore me</title>
         | 
| 24 | 
            +
                <body>
         | 
| 25 | 
            +
                <p>Test</p>
         | 
| 26 | 
            +
                </body>
         | 
| 27 | 
            +
                </html>
         | 
| 28 | 
            +
                ')).not_to match(/Ignore me/)
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              it 'ignores header links' do
         | 
| 32 | 
            +
                expect(subject.convert_to_text('
         | 
| 33 | 
            +
                <html>
         | 
| 34 | 
            +
                <head>
         | 
| 35 | 
            +
                <link href="http://example.com/should/be/ignored.css" rel="stylesheet" />
         | 
| 36 | 
            +
                </head>
         | 
| 37 | 
            +
                <body>
         | 
| 38 | 
            +
                <p>Test</p>
         | 
| 39 | 
            +
                </body>
         | 
| 40 | 
            +
                </html>
         | 
| 41 | 
            +
                ')).not_to match(/\*/)
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              it 'ignores header titles' do
         | 
| 45 | 
            +
                expect(subject.convert_to_text('
         | 
| 46 | 
            +
                <html>
         | 
| 47 | 
            +
                <head>
         | 
| 48 | 
            +
                <title>Ignore me</title>
         | 
| 49 | 
            +
                </head>
         | 
| 50 | 
            +
                <body>
         | 
| 51 | 
            +
                <p>Test</p>
         | 
| 52 | 
            +
                </body>
         | 
| 53 | 
            +
                </html>
         | 
| 54 | 
            +
                ')).not_to match(/Ignore me/)
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              it 'converts a malformed body' do
         | 
| 58 | 
            +
                expect(subject.convert_to_text('
         | 
| 59 | 
            +
                <html>
         | 
| 60 | 
            +
                <title>Ignore me</title>
         | 
| 61 | 
            +
                <body>
         | 
| 62 | 
            +
                <p>Test
         | 
| 63 | 
            +
                ')).to match(/Test/)
         | 
| 64 | 
            +
              end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
              it 'dencodes html entities' do
         | 
| 67 | 
            +
                expect(subject.convert_to_text('
         | 
| 68 | 
            +
                  cédille garçon & à ñ
         | 
| 69 | 
            +
                ')).to eq('cédille garçon & à ñ')
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              it 'strips whitespace' do
         | 
| 73 | 
            +
                expect(subject.convert_to_text("  \ttext\ntext\n")).to eq("text\ntext")
         | 
| 74 | 
            +
                expect(subject.convert_to_text("  \na \n a \t")).to eq("a\na")
         | 
| 75 | 
            +
                expect(subject.convert_to_text("  \na \n\t \n \n a \t")).to eq("a\n\na")
         | 
| 76 | 
            +
                expect(subject.convert_to_text('test text ')).to eq('test text')
         | 
| 77 | 
            +
                expect(subject.convert_to_text('test        text')).to eq('test text')
         | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
              it 'leaves spaces for spans' do
         | 
| 81 | 
            +
                expect(subject.convert_to_text('
         | 
| 82 | 
            +
                <html>
         | 
| 83 | 
            +
                <body>
         | 
| 84 | 
            +
                <p><span>Test</span>
         | 
| 85 | 
            +
                <span>line 2</span>
         | 
| 86 | 
            +
                </p>
         | 
| 87 | 
            +
                ')).to match(/Test line 2/)
         | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
              it 'normalizes line breaks' do
         | 
| 91 | 
            +
                expect(subject.convert_to_text("Test text\r\nTest text")).to eq("Test text\nTest text")
         | 
| 92 | 
            +
                expect(subject.convert_to_text("Test text\nTest text")).to eq("Test text\nTest text")
         | 
| 93 | 
            +
              end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
              it 'formats lists' do
         | 
| 96 | 
            +
                expect(subject.convert_to_text("<li class='123'>item 1</li> <li>item 2</li>\n")).to eq("* item 1\n* item 2")
         | 
| 97 | 
            +
                expect(subject.convert_to_text("<li>item 1</li> \t\n <li>item 2</li> <li> item 3</li>\n")).to eq("* item 1\n* item 2\n* item 3")
         | 
| 98 | 
            +
              end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
              it 'strips html' do
         | 
| 101 | 
            +
                expect(subject.convert_to_text("<p class=\"123'45 , att\" att=tester>test <span class='te\"st'>text</span>\n")).to eq('test text')
         | 
| 102 | 
            +
              end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
              it 'creates line breaks for p and br tags' do
         | 
| 105 | 
            +
                expect(subject.convert_to_text('<p>Test text</p><p>Test text</p>')).to eq("Test text\n\nTest text")
         | 
| 106 | 
            +
                expect(subject.convert_to_text("\n<p>Test text</p>\n\n\n\t<p>Test text</p>\n")).to eq("Test text\n\nTest text")
         | 
| 107 | 
            +
                expect(subject.convert_to_text("\n<p>Test text<br/>Test text</p>\n")).to eq("Test text\nTest text")
         | 
| 108 | 
            +
                expect(subject.convert_to_text("\n<p>Test text<br> \tTest text<br></p>\n")).to eq("Test text\nTest text")
         | 
| 109 | 
            +
                expect(subject.convert_to_text('Test text<br><BR />Test text')).to eq("Test text\n\nTest text")
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
              it 'converts headings' do
         | 
| 113 | 
            +
                expect(subject.convert_to_text('<h1>Test</h1>')).to eq("****\nTest\n****")
         | 
| 114 | 
            +
                expect(subject.convert_to_text("\t<h1>\nTest</h1> ")).to eq("****\nTest\n****")
         | 
| 115 | 
            +
                expect(subject.convert_to_text("\t<h1>\nTest line 1<br>Test 2</h1> ")).to eq("***********\nTest line 1\nTest 2\n***********")
         | 
| 116 | 
            +
                expect(subject.convert_to_text('<h1>Test</h1> <h1>Test</h1>')).to eq("****\nTest\n****\n\n****\nTest\n****")
         | 
| 117 | 
            +
                expect(subject.convert_to_text('<h2>Test</h2>')).to eq("----\nTest\n----")
         | 
| 118 | 
            +
                expect(subject.convert_to_text("<h3> <span class='a'>Test </span></h3>")).to eq("Test\n----")
         | 
| 119 | 
            +
              end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
              it 'wraps lines' do
         | 
| 122 | 
            +
                raw = ''
         | 
| 123 | 
            +
                100.times { raw += 'test ' }
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                txt = subject.convert_to_text(raw, 20)
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                lens = []
         | 
| 128 | 
            +
                txt.each_line { |l| lens << l.length }
         | 
| 129 | 
            +
                expect(lens.max).to be <= 20
         | 
| 130 | 
            +
              end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
              it 'converts links' do
         | 
| 133 | 
            +
                # basic
         | 
| 134 | 
            +
                expect(subject.convert_to_text('<a href="http://example.com/">Link</a>')).to eq('Link ( http://example.com/ )')
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                # nested html
         | 
| 137 | 
            +
                expect(subject
         | 
| 138 | 
            +
                  .convert_to_text('<a href="http://example.com/"><span class="a">Link</span></a>'))
         | 
| 139 | 
            +
                  .to eq('Link ( http://example.com/ )')
         | 
| 140 | 
            +
             | 
| 141 | 
            +
                # complex link
         | 
| 142 | 
            +
                expect(subject
         | 
| 143 | 
            +
                  .convert_to_text('<a href="http://example.com:80/~user?aaa=bb&c=d,e,f#foo">Link</a>'))
         | 
| 144 | 
            +
                  .to eq('Link ( http://example.com:80/~user?aaa=bb&c=d,e,f#foo )')
         | 
| 145 | 
            +
             | 
| 146 | 
            +
                # attributes
         | 
| 147 | 
            +
                expect(subject
         | 
| 148 | 
            +
                  .convert_to_text('<a title=\'title\' href="http://example.com/">Link</a>'))
         | 
| 149 | 
            +
                  .to eq('Link ( http://example.com/ )')
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                # spacing
         | 
| 152 | 
            +
                expect(subject
         | 
| 153 | 
            +
                  .convert_to_text('<a href="   http://example.com/ "> Link </a>'))
         | 
| 154 | 
            +
                  .to eq('Link ( http://example.com/ )')
         | 
| 155 | 
            +
             | 
| 156 | 
            +
                # multiple
         | 
| 157 | 
            +
                expect(subject
         | 
| 158 | 
            +
                  .convert_to_text('<a href="http://example.com/a/">Link A</a> <a href="http://example.com/b/">Link B</a>'))
         | 
| 159 | 
            +
                  .to eq('Link A ( http://example.com/a/ ) Link B ( http://example.com/b/ )')
         | 
| 160 | 
            +
             | 
| 161 | 
            +
                # merge links
         | 
| 162 | 
            +
                expect(subject.convert_to_text('<a href="%%LINK%%">Link</a>')).to eq('Link ( %%LINK%% )')
         | 
| 163 | 
            +
                expect(subject.convert_to_text('<a href="[LINK]">Link</a>')).to eq('Link ( [LINK] )')
         | 
| 164 | 
            +
                expect(subject.convert_to_text('<a href="{LINK}">Link</a>')).to eq('Link ( {LINK} )')
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                # unsubscribe
         | 
| 167 | 
            +
                expect(subject.convert_to_text('<a href="[[!unsubscribe]]">Link</a>')).to eq('Link ( [[!unsubscribe]] )')
         | 
| 168 | 
            +
              end
         | 
| 169 | 
            +
             | 
| 170 | 
            +
              # see https://github.com/alexdunae/premailer/issues/72
         | 
| 171 | 
            +
              it 'converts multiple links per line' do
         | 
| 172 | 
            +
                expect(subject
         | 
| 173 | 
            +
                  .convert_to_text('<p>This is <a href="http://www.google.com" >link1</a> and <a href="http://www.google.com" >link2 </a> is next.</p>', nil, 10_000))
         | 
| 174 | 
            +
                  .to eq('This is link1 ( http://www.google.com ) and link2 ( http://www.google.com ) is next.')
         | 
| 175 | 
            +
              end
         | 
| 176 | 
            +
             | 
| 177 | 
            +
              # see https://github.com/alexdunae/premailer/issues/72
         | 
| 178 | 
            +
              it 'converts links within headings' do
         | 
| 179 | 
            +
                expect(subject
         | 
| 180 | 
            +
                  .convert_to_text("<h1><a href='http://example.com/'>Test</a></h1>"))
         | 
| 181 | 
            +
                  .to eq("****************************\nTest ( http://example.com/ )\n****************************")
         | 
| 182 | 
            +
              end
         | 
| 183 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,41 +1,41 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: actionmailer-text
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Daniel Doubrovkine
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-05-25 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: actionmailer
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - -  | 
| 17 | 
            +
                - - ">="
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 19 | 
             
                    version: '0'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - -  | 
| 24 | 
            +
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '0'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: htmlentities
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - -  | 
| 31 | 
            +
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 33 | 
             
                    version: '0'
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 | 
            -
                - -  | 
| 38 | 
            +
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '0'
         | 
| 41 41 | 
             
            description: 
         | 
| @@ -57,7 +57,8 @@ files: | |
| 57 57 | 
             
            - lib/actionmailer-text/text.rb
         | 
| 58 58 | 
             
            - lib/actionmailer-text/version.rb
         | 
| 59 59 | 
             
            - lib/actionmailer_text.rb
         | 
| 60 | 
            -
            - pkg/actionmailer-text-0.1. | 
| 60 | 
            +
            - pkg/actionmailer-text-0.1.1.gem
         | 
| 61 | 
            +
            - spec/actionmailer-text/html_to_plain_text_spec.rb
         | 
| 61 62 | 
             
            - spec/actionmailer-text/multipart_spec.rb
         | 
| 62 63 | 
             
            - spec/actionmailer-text/version_spec.rb
         | 
| 63 64 | 
             
            - spec/spec_helper.rb
         | 
| @@ -73,17 +74,17 @@ require_paths: | |
| 73 74 | 
             
            - lib
         | 
| 74 75 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 75 76 | 
             
              requirements:
         | 
| 76 | 
            -
              - -  | 
| 77 | 
            +
              - - ">="
         | 
| 77 78 | 
             
                - !ruby/object:Gem::Version
         | 
| 78 79 | 
             
                  version: '0'
         | 
| 79 80 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 80 81 | 
             
              requirements:
         | 
| 81 | 
            -
              - -  | 
| 82 | 
            +
              - - ">="
         | 
| 82 83 | 
             
                - !ruby/object:Gem::Version
         | 
| 83 84 | 
             
                  version: 1.3.6
         | 
| 84 85 | 
             
            requirements: []
         | 
| 85 86 | 
             
            rubyforge_project: 
         | 
| 86 | 
            -
            rubygems_version: 2. | 
| 87 | 
            +
            rubygems_version: 2.2.2
         | 
| 87 88 | 
             
            signing_key: 
         | 
| 88 89 | 
             
            specification_version: 4
         | 
| 89 90 | 
             
            summary: Automatically insert a text/plain part into your HTML multipart e-mails.
         | 
| Binary file |