Skip to content

Commit c868b80

Browse files
authored
Update around_row to forward all arguments to row_template (#881)
Previously, one of the uses of the `yielder` override in `Phlex::CSV` was to change the argument signature provided to the `row_template` method. The new `around_row` was not allowing for any modifications to the argument structure.
2 parents 2c32f6f + 1f33b35 commit c868b80

File tree

3 files changed

+217
-2
lines changed

3 files changed

+217
-2
lines changed
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
AllCops:
2+
NewCops: enable
3+
4+
Bundler/OrderedGems:
5+
Enabled: false
6+
7+
Layout/ArgumentAlignment:
8+
Enabled: false
9+
10+
Layout/ArrayAlignment:
11+
Enabled: false
12+
13+
Layout/CaseIndentation:
14+
Enabled: false
15+
16+
Layout/CommentIndentation:
17+
AllowForAlignment: true
18+
19+
Layout/EndAlignment:
20+
EnforcedStyleAlignWith: start_of_line
21+
22+
Layout/HashAlignment:
23+
Enabled: false
24+
25+
Layout/LineLength:
26+
Enabled: false
27+
28+
Layout/MultilineMethodCallBraceLayout:
29+
Enabled: false
30+
31+
Layout/MultilineOperationIndentation:
32+
Enabled: false
33+
34+
Layout/SingleLineBlockChain:
35+
Enabled: false
36+
37+
Layout/SpaceInLambdaLiteral:
38+
EnforcedStyle: require_space
39+
40+
Lint/AmbiguousBlockAssociation:
41+
Enabled: false
42+
43+
Lint/EmptyClass:
44+
AllowComments: true
45+
46+
Lint/MissingSuper:
47+
Enabled: false
48+
49+
Lint/UnderscorePrefixedVariableName:
50+
Enabled: false
51+
52+
Lint/UnusedMethodArgument:
53+
Enabled: false
54+
55+
Metrics:
56+
Enabled: false
57+
58+
Naming/AccessorMethodName:
59+
Enabled: false
60+
61+
Naming/ConstantName:
62+
Enabled: false
63+
64+
Naming/MemoizedInstanceVariableName:
65+
EnforcedStyleForLeadingUnderscores: optional
66+
67+
Naming/MethodParameterName:
68+
MinNameLength: 1
69+
70+
Style/AccessModifierDeclarations:
71+
Enabled: false
72+
73+
Style/AccessorGrouping:
74+
Enabled: false
75+
76+
Style/Alias:
77+
EnforcedStyle: prefer_alias_method
78+
79+
Style/BeginBlock:
80+
Enabled: false
81+
82+
Style/BlockDelimiters:
83+
Enabled: false
84+
85+
Style/CaseEquality:
86+
Enabled: false
87+
88+
Style/ClassAndModuleChildren:
89+
Enabled: false
90+
91+
Style/ClassCheck:
92+
Enabled: false
93+
94+
Style/ClassMethodsDefinitions:
95+
Enabled: false
96+
97+
Style/ConditionalAssignment:
98+
Enabled: false
99+
100+
Style/Documentation:
101+
Enabled: false
102+
103+
Style/DocumentDynamicEvalDefinition:
104+
Enabled: false
105+
106+
Style/DoubleNegation:
107+
Enabled: false
108+
109+
Style/EmptyCaseCondition:
110+
Enabled: false
111+
112+
Style/EmptyMethod:
113+
Enabled: false
114+
115+
Style/EndBlock:
116+
Enabled: false
117+
118+
Style/FetchEnvVar:
119+
Enabled: false
120+
121+
Style/GuardClause:
122+
Enabled: false
123+
124+
Style/IfUnlessModifier:
125+
Enabled: false
126+
127+
Style/IfUnlessModifierOfIfUnless:
128+
Enabled: false
129+
130+
Style/KeywordParametersOrder:
131+
Enabled: false
132+
133+
Style/MixinGrouping:
134+
Enabled: false
135+
136+
Style/ModuleFunction:
137+
Enabled: false
138+
139+
Style/MultilineMemoization:
140+
Enabled: false
141+
142+
Style/MultipleComparison:
143+
Enabled: false
144+
145+
Style/MutableConstant:
146+
Enabled: false
147+
148+
Style/NumberedParametersLimit:
149+
Enabled: false
150+
151+
Style/NumericLiterals:
152+
Enabled: false
153+
154+
Style/NumericPredicate:
155+
Enabled: false
156+
157+
Style/ParallelAssignment:
158+
Enabled: false
159+
160+
Style/PercentLiteralDelimiters:
161+
Enabled: false
162+
163+
Style/RedundantAssignment:
164+
Enabled: false
165+
166+
Style/Semicolon:
167+
AllowAsExpressionSeparator: true
168+
169+
Style/Send:
170+
Enabled: false
171+
172+
Style/StringConcatenation:
173+
Enabled: false
174+
175+
Style/StringLiterals:
176+
EnforcedStyle: double_quotes
177+
178+
Style/SymbolArray:
179+
Enabled: false
180+
181+
Style/TrailingCommaInHashLiteral:
182+
Enabled: false
183+
184+
Style/WordArray:
185+
Enabled: false
186+
187+
Style/ZeroLengthPredicate:
188+
Enabled: false

lib/phlex/csv.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ def call(buffer = +"", context: nil, delimiter: self.delimiter)
113113
buffer
114114
end
115115

116-
def around_row(item)
117-
row_template(item)
116+
def around_row(...)
117+
row_template(...)
118118
end
119119

120120
def filename

quickdraw/csv.test.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,33 @@ def row_template(product)
111111
CSV
112112
end
113113

114+
test "with a custom around_row" do
115+
example = Class.new(Phlex::CSV) do
116+
def escape_csv_injection? = true
117+
118+
def around_row(item)
119+
super(item.name, item.price)
120+
end
121+
122+
def row_template(name, price)
123+
column "Name", name
124+
column "Price", price
125+
end
126+
end
127+
128+
assert_equal example.new(products).call, <<~CSV
129+
Name,Price
130+
Apple,1.0
131+
" Banana ",2.0
132+
strawberry,Three pounds
133+
"'=SUM(A1:B1)","'=SUM(A1:B1)"
134+
"Abc, ""def""","Foo
135+
bar ""baz"""
136+
"",""
137+
"",""
138+
CSV
139+
end
140+
114141
test "with a custom delimiter defined as a method" do
115142
example = Class.new(Phlex::CSV) do
116143
define_method(:escape_csv_injection?) { true }

0 commit comments

Comments
 (0)