Skip to content

Instantly share code, notes, and snippets.

@radjivF
Last active August 29, 2015 14:13
Show Gist options
  • Save radjivF/dc1f8771541ba99a3a71 to your computer and use it in GitHub Desktop.
Save radjivF/dc1f8771541ba99a3a71 to your computer and use it in GitHub Desktop.
Extract http links in a yaml file
require("javascript.util");
var jf = require('jsonfile');
var fs = require('fs');
var YAML = require('yamljs');
var regexp = require('node-regexp');
var callback = console.log;
var array =[];
var S = require('string');
YAML.load('name_file.yaml', function(result)
{
nativeObject = result;
var re = regexp()
.must('http')
.maybe('s')
.must('://')
.maybe('www.')
.maybe('.fr')
.maybe('.com')
.toRegExp();
function traverse(obj) {
if (obj instanceof Array) {
for (var i=0; i<obj.length; i++) {
if (typeof obj[i] == "object" && obj[i]) {
callback(i);
traverse(obj[i]);
} else {
callback(i, obj[i])
}
}
} else {
for (var prop in obj) {
if (typeof obj[prop] == "object" && obj[prop]) {
//callback(prop);
traverse(obj[prop]);
} else {
if(re.test(obj[prop])== true){
// callback(obj[prop]);
var str= obj[prop];
var link1 = S(str).between('http','.fr').s;
var link2 = S(str).between('http','.com').s;
if (link1.trim()) {
if (link1 != array[array.length]){
array.push(S(link1).between('://').s+'.fr')
}
}
if (link2.trim()) {
array.push(S(link2).between('://').s+'.com')
}
}
}
}
}
}
traverse(nativeObject);
var finalArray = require("uniq")(array)
console.log(finalArray)
jf.writeFileSync('report.txt', finalArray);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment