Skip to content

Commit efd612c

Browse files
committed
Added string replacement to image and link selector
1 parent bea5f21 commit efd612c

File tree

4 files changed

+49
-10
lines changed

4 files changed

+49
-10
lines changed

extension/devtools/views/SelectorEdit.html

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,24 @@
192192
</div>
193193
</div>
194194

195-
<div class="form-group feature feature-delay">
196-
<label for="delay" class="col-sm-2 control-label">Delay (ms)</label>
195+
<div class="form-group feature feature-delay">
196+
<label for="delay" class="col-sm-2 control-label">Delay (ms)</label>
197197

198-
<div class="col-sm-8">
199-
<input type="text" class="form-control" name="delay" id="delay" placeholder="delay" value="{{selector.delay}}">
198+
<div class="col-sm-8">
199+
<input type="text" class="form-control" name="delay" id="delay" placeholder="delay" value="{{selector.delay}}">
200+
</div>
201+
</div>
202+
203+
<div class="form-group feature feature-stringReplacement">
204+
<label for="replace" class="col-sm-2 control-label">Replace</label>
205+
206+
<div class="col-sm-8">
207+
<div class="input-group">
208+
<label>Replace text:<input type="text" class="form-control col-sm-6" name="replaceString" id="replaceString" placeholder="Replace text" value="{{selector.replaceString}}"></label>
209+
<label>Replacement text:<input type="text" class="form-control col-sm-6" name="replacementString" id="replacementString" placeholder="Replacement text" value="{{selector.replacementString}}"></label>
200210
</div>
201211
</div>
212+
</div>
202213

203214
<div class="form-group">
204215
<label for="parentSelectors" class="col-sm-2 control-label">Parent Selectors</label>

extension/scripts/Controller.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -906,6 +906,10 @@ SitemapController.prototype = {
906906
var $columnHeaders = $("#edit-selector .column-header");
907907
var $columnNames = $("#edit-selector .column-name");
908908
var $columnExtracts = $("#edit-selector .column-extract");
909+
var stringReplacement = {
910+
replaceString: $("#edit-selector [name=replaceString]").val(),
911+
replacementString: $("#edit-selector [name=replacementString]").val()
912+
};
909913
var textmanipulation = {
910914
removeHtml: $("#edit-selector [name=removeHtml]").is(":checked"),
911915
trimText: $("#edit-selector [name=trimText]").is(":checked"),
@@ -947,7 +951,8 @@ SitemapController.prototype = {
947951
parentSelectors: parentSelectors,
948952
columns:columns,
949953
delay:delay,
950-
textmanipulation: textmanipulation
954+
textmanipulation: textmanipulation,
955+
stringReplacement: stringReplacement
951956
});
952957
return newSelector;
953958
},

extension/scripts/Selector/SelectorImage.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,17 @@ var SelectorImage = {
3838
src = src ? src[2] : "";
3939
}
4040

41+
if (this.stringReplacement && this.stringReplacement.replaceString) {
42+
var replace;
43+
var replacement = this.stringReplacement.stringReplacement || "";
44+
try {
45+
var regex = new RegExp(this.stringReplacement.replaceString, 'gm');
46+
replace = regex.test(src) ? regex : this.stringReplacement.replaceString;
47+
} catch (e) { replace = this.stringReplacement.replaceString; }
48+
49+
src = src.replace(replace, replacement);
50+
}
51+
4152
data[this.id + '-src'] = src;
4253

4354
// download image if required
@@ -122,7 +133,7 @@ var SelectorImage = {
122133
},
123134

124135
getFeatures: function () {
125-
return ['multiple', 'delay', 'downloadImage']
136+
return ['multiple', 'delay', 'downloadImage', 'stringReplacement']
126137
},
127138

128139
getItemCSSSelector: function() {

extension/scripts/Selector/SelectorLink.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,25 @@ var SelectorLink = {
3636

3737
deferredDataExtractionCalls.push(function(element) {
3838

39+
var href = element.href;
40+
if (this.stringReplacement && this.stringReplacement.replaceString) {
41+
var replace;
42+
var replacement = this.stringReplacement.stringReplacement || "";
43+
try {
44+
var regex = new RegExp(this.stringReplacement.replaceString, 'gm');
45+
replace = regex.test(href) ? regex : this.stringReplacement.replaceString;
46+
} catch (e) { replace = this.stringReplacement.replaceString; }
47+
48+
href = href.replace(replace, replacement);
49+
}
50+
3951
var deferredData = $.Deferred();
52+
var data = {};
4053

41-
var data = {};
4254
data[this.id] = $(element).text();
4355
data._followSelectorId = this.id;
44-
data[this.id + '-href'] = element.href;
45-
data._follow = element.href;
56+
data[this.id + '-href'] = href;
57+
data._follow = href;
4658
deferredData.resolve(data);
4759

4860
return deferredData;
@@ -65,7 +77,7 @@ var SelectorLink = {
6577
},
6678

6779
getFeatures: function () {
68-
return ['multiple', 'delay']
80+
return ['multiple', 'delay', 'stringReplacement']
6981
},
7082

7183
getItemCSSSelector: function() {

0 commit comments

Comments
 (0)