File tree Expand file tree Collapse file tree 3 files changed +69
-2
lines changed
lib/chupa-text/decomposers Expand file tree Collapse file tree 3 files changed +69
-2
lines changed Original file line number Diff line number Diff line change @@ -46,7 +46,13 @@ def decompose(data)
46
46
body . force_encoding ( part . charset ) if part . charset
47
47
48
48
part_data = TextData . new ( body , :source_data => data )
49
- part_data . uri = "#{ data . uri } \# #{ i } "
49
+ uri = data . uri . dup
50
+ if uri . fragment
51
+ uri . fragment += "-#{ i } "
52
+ else
53
+ uri . fragment = i . to_s
54
+ end
55
+ part_data . uri = uri
50
56
part_data . mime_type = part . mime_type if part . mime_type
51
57
part_data [ :encoding ] = body . encoding . to_s
52
58
yield ( part_data )
Original file line number Diff line number Diff line change
1
+ Mime-Version : 1.0
2
+ Subject : Hello
3
+
4
+
5
+ Date : Sun, 19 Feb 2017 00:27:55 +0900 (JST)
6
+ Content-Type : multipart/alternative;
7
+ boundary="++++";
8
+ charset=UTF-8
9
+ Content-Transfer-Encoding : 8bit
10
+
11
+ --++++
12
+ Content-Type : message/rfc822;
13
+ charset=UTF-8
14
+ Content-Transfer-Encoding : 8bit
15
+ Mime-Version : 1.0
16
+
17
+ Content-Type: multipart/alternative;
18
+ boundary="====";
19
+ charset=UTF-8
20
+ Content-Transfer-Encoding: 8bit
21
+
22
+ --====
23
+ Content-Type : message/rfc822;
24
+ charset=UTF-8
25
+ Content-Transfer-Encoding : 8bit
26
+
27
+ Mime-Version: 1.0
28
+ Content-Type: text/plain
29
+ Subject: Sub Hello
30
+
31
+ Sub World
32
+ --====
33
+
34
+ --++++
Original file line number Diff line number Diff line change @@ -84,12 +84,22 @@ def decompose(path)
84
84
data . mime_type = "message/rfc822"
85
85
86
86
decomposed = [ ]
87
- decomposer . decompose ( data ) do |decomposed_data |
87
+ decompose_data ( data ) do |decomposed_data |
88
88
decomposed << decomposed_data
89
89
end
90
90
decomposed
91
91
end
92
92
93
+ def decompose_data ( data , &block )
94
+ decomposer . decompose ( data ) do |decomposed_data |
95
+ if decomposer . target? ( decomposed_data )
96
+ decompose_data ( decomposed_data , &block )
97
+ else
98
+ yield ( decomposed_data )
99
+ end
100
+ end
101
+ end
102
+
93
103
sub_test_case ( "attributes" ) do
94
104
def test_subject
95
105
assert_equal ( [ "Hello" ] , decompose ( "subject" ) )
@@ -163,5 +173,22 @@ def decompose
163
173
super ( fixture_path ( "no-mime.eml" ) )
164
174
end
165
175
end
176
+
177
+ sub_test_case ( "nested message/rfc822" ) do
178
+ def test_body
179
+ assert_equal ( [
180
+ [
181
+ fixture_path ( "nested-rfc822.eml" ) + "#0-0-0" ,
182
+ "Sub World" ,
183
+ ] ,
184
+ ] ,
185
+ decompose . collect { |data | [ data . uri . to_s , data . body ] } )
186
+ end
187
+
188
+ private
189
+ def decompose
190
+ super ( fixture_path ( "nested-rfc822.eml" ) )
191
+ end
192
+ end
166
193
end
167
194
end
You can’t perform that action at this time.
0 commit comments