Read the statement by Michael Teeuw here.
.txt file include
-
@banbutcher >is there any way to print a line if the regex isn’t met… ie like a movie title instead of a series title with s01e03 attached?
and possibly limit output to 10 lines?sure
// should make this a config variable by adding to module defaults // then would be this.config.counter // get display limit, 10 if not specified in defaults var counter=this.config.counter || 10 var table=document.createElement("table") wrapper.appendChild(table) for(filename of this.dataFile) { // if the name is not zero length (split could have returned for just linefeed // and the view limit has not been reached if(filename.length >0 && counter>0) { // get the filename prefix var tr=document.createElement("tr") table.appendChild(tr) var td=document.createElement("td") tr.appendChild(td) var split = splitRegExp.exec(filename); if(split) td.innerText=split else td.innerText='name not matched '+ filename counter--; } } return wrapper;
or using the text form
var wrapper = document.createElement("div"); if(this.dataFile){ var output_list= []; // should make this a config variable by adding to module defaults // then would be this.config.counter // get display limit, 10 if not specified in defaults var counter=this.config.counter || 10 // setup regex, no i no g (only once, and case sensitive) var splitRegExp = /.*[S][(0-9)]+[E][(0-9)]+/; // loop thru the list of filenames for(filename of this.dataFile) { // if the name is not zero length (split could have returned for just linefeed if(filename.length >0 && counter >0) { // get the filename prefix var split = splitRegExp.exec(filename); // save name to the output list, as a table entry // remove space after the ->< , the forum hides everything after unless a space // table has a row, output_list.push("< tr>< td>") // with data if(split) output_list.push(split) else output_list.push('name not matched '+ filename) // end of data and row output_list.push("< /td>< /tr>") counter--; } } // insert the table into the wrapper wrapper.innerHTML = "< table>" + output_list.join('')+ "< /table>"; } else {
-
the counter part worked great, but then when i tried to add it if loop for the name check, im getting “no data” maybe i messed up copying across?
var output_list= []; var counter=this.config.counter || 11 // setup regex, no i no g (only once, and case sensitive) var splitRegExp = /.*[S][(0-9)]+[E][(0-9)]+/; // loop thru the list of filenames for(filename of this.dataFile) { // if the name is not zero length (split could have returned for just linefeed if(filename.length >0 && counter>0) { // get the filename prefix var split = splitRegExp.exec(filename); // save name to the output list, as a table entry // table has a row, output_list.push("<tr><td>") // with data if(split ) output_list.push(split) else output_list.push('name not found:'+ filename) // end of data and row output_list.push("</td></tr>") counter--; } } // insert the table into the wrapper wrapper.innerHTML = "<table>" + output_list.join('')+ "</table>"; } else { wrapper.innerHTML = "No Data"; }
-
@banbutcher said in .txt file include:
im getting “no data” maybe i messed up copying across?
sorry, don’t understand the words…
this is the test if the regex worked
if(split) output_list.push(split) else output_list.push('name not found:'+ filename)
-
this code works…
if(this.dataFile){ var output_list= []; var counter=this.config.counter || 11 // setup regex, no i no g (only once, and case sensitive) var splitRegExp = /.*[S][(0-9)]+[E][(0-9)]+/; // loop thru the list of filenames for(filename of this.dataFile) { // if the name is not zero length (split could have returned for just linefeed if(filename.length >0 && counter>0) { // get the filename prefix var split = splitRegExp.exec(filename); // save name to the output list, as a table entry // table has a row, output_list.push("<tr><td>") // with data output_list.push(split) // end of data and row output_list.push("</td></tr>") counter--; } } // insert the table into the wrapper wrapper.innerHTML = "<table>" + output_list.join('')+ "</table>"; } else {
this code doesnt…
var output_list= []; var counter=this.config.counter || 11 // setup regex, no i no g (only once, and case sensitive) var splitRegExp = /.*[S][(0-9)]+[E][(0-9)]+/; // loop thru the list of filenames for(filename of this.dataFile) { // if the name is not zero length (split could have returned for just linefeed if(filename.length >0 && counter>0) { // get the filename prefix var split = splitRegExp.exec(filename); // save name to the output list, as a table entry // table has a row, output_list.push("<tr><td>") // with data if(split.length >0 ) output_list.push(split) else output_list.push('name not found:'+ filename) // end of data and row output_list.push("</td></tr>") counter--; } } // insert the table into the wrapper wrapper.innerHTML = "<table>" + output_list.join('')+ "</table>"; } else { wrapper.innerHTML = "No Data"; }
Richie :)
-
my fault… I ‘assumed’ that regex would return an empty string… it returns a null value…
I fixed my sample, and your paste with the correct test
if(split)
instead of
if(split.length>0)
-
and for others trying to implement code, you can debug using the developers console, OR make little sample files and run them directly in node
i named this testit.js in the user home folder (~/testit.js)
var dataFile=["Archer S01E02Someshow.tv", "Archer S01E03Someshow .tv", "Archer S01e02Someshow .tv", "Archer S01E04Someshow .tv", "Archer S01E05someshow .tv", "Archer s01E02Someshow .tv", "Archer S01E09Someshow .tv", ] var counter1=10 if(dataFile){ var output_list= []; // should make this a config variable by adding to module defaults // then would be this.config.counter // get display limit, 10 if not specified in defaults var counter=counter1 || 10 // setup regex, no i no g (only once, and case sensitive) var splitRegExp = /.*[S][(0-9)]+[E][(0-9)]+/; // loop thru the list of filenames for(filename of dataFile) { // if the name is not zero length (split could have returned for just linefeed if(filename.length >0 && counter >0) { // get the filename prefix var split = splitRegExp.exec(filename); // save name to the output list, as a table entry // remove space after the ->< , the forum hides everything after unless a space // table has a row, output_list.push("<tr><td>") // with data if(split) output_list.push(split) else output_list.push('name not matched '+ filename) // end of data and row output_list.push("</td></tr>") counter--; } } } // insert the table into the wrapper console.log( "<table>" + output_list.join('')+ "</table>");
and then
cd ~ node testit.js
-
Perfect!!
now i can go to bed! :D tomorrows task will be styling with css! any pointers?
as always… thanks again!!
Richie
-
@banbutcher said in .txt file include:
styling with css! any pointers
sorry, that is my weakness… I cannot make anything look good… I can tell you if it DOES look good, but cannot do it myself… I have no eye for that all…