Skip to content

Commit 1192183

Browse files
committed
rename to before and add after method
1 parent 8183635 commit 1192183

File tree

2 files changed

+35
-11
lines changed

2 files changed

+35
-11
lines changed

src/main/java/im/nll/data/extractor/Extractors.java

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public class Extractors {
2525
private List<String> htmlList;
2626
private Map<String, List<Extractor>> extractorsMap = new LinkedHashMap<>();
2727
private Map<String, List<Filter>> filtersMap = new LinkedHashMap();
28-
private List<Filter> globalFilter = new LinkedList<>();
28+
private List<Filter> beforeFilter = new LinkedList<>();
29+
private List<Filter> afterFilter = new LinkedList<>();
2930
private String prevField;
3031

3132
public Extractors(String html) {
@@ -200,8 +201,19 @@ public Extractors filter(Filter filter) {
200201
* @param filter
201202
* @return
202203
*/
203-
public Extractors filterAll(Filter filter) {
204-
globalFilter.add(filter);
204+
public Extractors before(Filter filter) {
205+
beforeFilter.add(filter);
206+
return this;
207+
}
208+
209+
/**
210+
* process all values use filter after field filter
211+
*
212+
* @param filter
213+
* @return
214+
*/
215+
public Extractors after(Filter filter) {
216+
beforeFilter.add(filter);
205217
return this;
206218
}
207219

@@ -256,8 +268,9 @@ public String asString() {
256268
for (Extractor extractor : extractors) {
257269
result = extractor.extract(result);
258270
}
259-
result = filterGlobal(result);
271+
result = filterBefore(result);
260272
result = filter(DEFAULT_FIELD, result);
273+
result = filterAfter(result);
261274
}
262275
return result;
263276
}
@@ -280,7 +293,9 @@ public String asJSONString() {
280293
for (Extractor extractor : extractors) {
281294
result = extractor.extract(result);
282295
}
296+
result = filterBefore(result);
283297
result = filter(DEFAULT_FIELD, result);
298+
result = filterAfter(result);
284299
}
285300
return result;
286301
}
@@ -305,8 +320,9 @@ public List<String> asStringList(String separator) {
305320
for (Extractor extractor : extractors) {
306321
result = extractor.extract(result);
307322
}
308-
result = filterGlobal(result);
323+
result = filterBefore(result);
309324
result = filter(name, result);
325+
result = filterAfter(result);
310326
stringBuffer.append(result).append(separator);
311327
}
312328
int length = stringBuffer.length();
@@ -435,8 +451,9 @@ private <T> T extractBean(String html, Class<T> clazz) {
435451
for (Extractor extractor : extractors) {
436452
result = extractor.extract(result);
437453
}
438-
result = filterGlobal(result);
454+
result = filterBefore(result);
439455
result = filter(name, result);
456+
result = filterAfter(result);
440457
try {
441458
Reflect.on(entity).set(name, result);
442459
} catch (Exception e) {
@@ -455,9 +472,9 @@ private Map<String, String> extractMap(String html) {
455472
for (Extractor extractor : extractors) {
456473
result = extractor.extract(result);
457474
}
458-
//global filter all
459-
result = filterGlobal(result);
475+
result = filterBefore(result);
460476
result = filter(name, result);
477+
result = filterAfter(result);
461478
try {
462479
map.put(name, result);
463480
} catch (Exception e) {
@@ -475,8 +492,15 @@ private String filter(String name, String result) {
475492
return result;
476493
}
477494

478-
private String filterGlobal(String result) {
479-
for (Filter filter : globalFilter) {
495+
private String filterBefore(String result) {
496+
for (Filter filter : beforeFilter) {
497+
result = filter.process(result);
498+
}
499+
return result;
500+
}
501+
502+
private String filterAfter(String result) {
503+
for (Filter filter : afterFilter) {
480504
result = filter.process(result);
481505
}
482506
return result;

src/test/java/im/nll/data/extractor/ExtractorsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ public void testToBeanListFilter() throws Exception {
372372
@Test
373373
public void testToBeanListFilterAll() throws Exception {
374374
List<Language> languages = Extractors.on(listHtml)
375-
.filterAll(value -> "all-" + value)
375+
.before(value -> "all-" + value)
376376
.split(xpath("//tr[@class='item']"))
377377
.extract("type", xpath("//td[1]/text()")).filter(value -> "type:" + value)
378378
.extract("name", xpath("//td[2]/text()")).filter(value -> "name:" + value)

0 commit comments

Comments
 (0)