Vim Fortran automatic formating with continuation character - vim

I'm now dealing with a very long expression in Fortran. This code is generated by Mathematica so its really a long one,So how to tell vim to auto wrap line with continuation character "&" auto added to the linebreak?
I have read formatoption but still don't have a idea about how to fix this
very long line example:
-(w1*wt00*wt10*metricUcontra(1,1,pdum,tdum))/(3.*h1*h2) - (w1*wt00**2*wt10*metricUcontra(1,1,pdum,tdum))/(3.*h1*h2) - (w1*metricUcontra(1,2,pdum,tdum))/(3.*h1*deltat(-1 + gi)) + (w1*wt00*metricUcontra(1,2,pdum,tdum))/(h1*deltat(-1 + gi)) + (w1*wt00*wt10*metricUcontra(1,2,pdum,tdum))/(h1*deltat(-1 + gi)) + (w1*wt00*wt10*metricUcontraUd(1,1,1,pdum,tdum))/(6.*h1) + (w1*wt00**2*wt10*metricUcontraUd(1,1,1,pdum,tdum))/(6.*h1) + (w1*wt00*wt10*metricUcontraUd(1,2,2,pdum,tdum))/(6.*h1) + (w1*wt00**2*wt10*metricUcontraUd(1,2,2,pdum,tdum))/(6.*h1) + (w1*wt00*wt10*jacobUfd(pdum,tdum,1)*metricUcontra(1,1,pdum,tdum))/(6.*h1*spjac(pdum,tdum)) + (w1*wt00**2*wt10*jacobUfd(pdum,tdum,1)*metricUcontra(1,1,pdum,tdum))/(6.*h1*spjac(pdum,tdum)) + (w1*wt00*wt10*jacobUfd(pdum,tdum,2)*metricUcontra(1,2,pdum,tdum))/(6.*h1*spjac(pdum,tdum)) + (w1*wt00**2*wt10*jacobUfd(pdum,tdum,2)*metricUcontra(1,2,pdum,tdum))/(6.*h1*spjac(pdum,tdum))

Related

NodeJS string concatenation unusual behaviour

I am trying to construct this string for printing one message.
"At position #[" + index + "][" + _subIndex + "] TLPHN_DVC_TYP " +
+ _telNum?.TelephoneDeviceType.toString() + " ,allowed " + telephoneDeviceTypeEnum.join(',');
from watch is VsCode:
where index =0;_subIndex =0;telNum.TelephoneDeviceType =Mobile;telephoneEnum=["Mobile","Landline"];
It's returning :
At position #[0][0] TLPHN_DVC_TYP NaN ,allowed Mobile,Landline
Full Code:
if (_telNum?.TelephoneDeviceType && !(telephoneDeviceTypeEnum.indexOf(_telNum.TelephoneDeviceType) > 0)){
console.log( "At position #[" + index + "][" + _subIndex + "] TLPHN_DVC_TYP " +
+ _telNum?.TelephoneDeviceType.toString() + " ,allowed " + telephoneDeviceTypeEnum.join(','));
}
the condition should not satisfy but not sure why it's going inside the if and NaN returning. any suggestion?
It's the two plus signs: "] TLPHN_DVC_TYP " + + _telNum?// ...etc. The second one is parsed as the unary +, or a conversion to number, which obviously fails. Compare:
console.log("foo" + "bar");
console.log("foo" + + "bar");
Added #1:
if (_telNum?.TelephoneDeviceType && !(telephoneDeviceTypeEnum.indexOf(_telNum.TelephoneDeviceType) >= 0)){
console.log( "At position #[" + index + "][" + _subIndex + "] TLPHN_DVC_TYP " +_telNum?.TelephoneDeviceType.toString() + " ,allowed " + telephoneDeviceTypeEnum.join(','));
}

fs.readFileSync adding + signs?

I am working on an HTTP fileserver and stumbled upon a problem with fs.readFileSync(). However, the function adds + signs which prohibits me from writing the value to another value.
(This is just to show what happens and does not represent the full functionality of the intended code)
samplejs.js
var content = fs.readFileSync("D:/sampleproj/example.txt", {encoding:"utf8"});
console.log(content);
output:
"\t'#0000CC',\r" +
"\n\t'#0000FF',\r" +
"\n\t'#0033CC',\r" +
"\n\t'#0033FF',\r" +
"\n\t'#0066CC',\r" +
"\n\t'#0066FF',\r" +
"\n\t'#0099CC',\r" +
"\n\t'#0099FF',\r" +
"\n\t'#00CC00',\r" +
"\n\t'#00CC33',\r" +
"\n\t'#00CC66',\r" +
"\n\t'#00CC99',\r" +
"\n\t'#00CCCC',\r" +
"\n\t'#00CCFF',\r" +
"\n\t'#3300CC',\r" +
"\n\t'#3300FF',\r" +
"\n\t'#3333CC',\r" +
"\n\t'#3333FF',\r" +
"\n\t'#3366CC',\r" +
"\n\t'#3366FF',\r" +
"\n\t'#3399CC',\r" +
"\n\t'#3399FF',\r" +
"\n\t'#33CC00',\r" +
"\n\t'#33CC33',\r" +
"\n\t'#33CC66',\r" +
"\n\t'#33CC99',\r" +
"\n\t'#33CCCC',\r" +
"\n\t'#33CCFF',\r" +
"\n\t'#6600CC',\r" +
"\n\t'#6600FF',\r" +
"\n\t'#6633CC',\r" +
"\n\t'#6633FF',\r" +
"\n\t'#66CC00',\r" +
The problem here is, of course, the + signs. How can these be "avoided"/removed?
I've tried to .split("+") but that doesn't work since the + signs aren't inside a pair of quotes.
the text file:
'#0000CC',
'#0000FF',
'#0033CC',
'#0033FF',
'#0066CC',
'#0066FF',
'#0099CC',
'#0099FF',
'#00CC00',
'#00CC33',
'#00CC66',
'#00CC99',
'#00CCCC',
'#00CCFF',
'#3300CC',
'#3300FF',
'#3333CC',
'#3333FF',
'#3366CC',
'#3366FF',
'#3399CC',
'#3399FF',
'#33CC00',
'#33CC33',
'#33CC66',
'#33CC99',
'#33CCCC',
'#33CCFF',
'#6600CC',
'#6600FF',
'#6633CC',
'#6633FF',
'#66CC00',
'#66CC33',
'#9900CC',
'#9900FF',
'#9933CC',
'#9933FF',
'#99CC00',
'#99CC33',
'#CC0000',
'#CC0033',
'#CC0066',
'#CC0099',
'#CC00CC',
Are you sure you are doing console.log?
I did console.log and didn't get any "+", but I got those when I use console.dir.
Anyway, these "+", are not part of the string and you can't remove them by using split.
And just use the string as if they were not there.
To get each line simply use:
const fs = require("fs");
let file = fs.readFileSync(__dirname + "/text.txt", { encoding: "utf8" });
const lines = file.split("\n");

How to set split() start and end delimiter?

[(0,
'0.011*"people" + 0.009*"christian" + 0.008*"god" + 0.008*"law" + '
'0.006*"believe" + 0.005*"question" + 0.005*"man" + 0.005*"life" + '
'0.005*"time" + 0.005*"write"'),
(1,
'0.014*"organization" + 0.013*"group" + 0.012*"image" + 0.010*"university" + '
'0.009*"program" + 0.008*"newsletter" + 0.007*"graphic" + '
'0.007*"information" + 0.007*"file" + 0.006*"box"'),
(2,
'0.015*"write" + 0.015*"organization" + 0.014*"article" + 0.012*"year" + '
'0.008*"university" + 0.007*"team" + 0.007*"time" + 0.006*"game" + '
'0.006*"give" + 0.006*"kid"'),
(3,
'0.049*"space" + 0.009*"year" + 0.008*"publish" + 0.006*"aerospace" + '
'0.006*"news" + 0.006*"technical" + 0.005*"satellite" + 0.005*"activity" + '
'0.005*"membership" + 0.005*"system"')]
How do I set the delimeter for the text file shown in the image? I want it to split into four separate text files. What and how should I give the start and end delimiter in the if() as can be seen in the code?. The text file has four separate parts 0,1,2,3. I am trying to write all the parts into separate text file.
`with open('topics.txt','r') as fo:
op=''
start=0
cntr = 1
for x in fo.read().split("\n"):
if (x==''):
if (start==1):
with open(str(cntr) + '.txt','w') as opf:
opf.write(op)
opf.close()
op=''
cntr+=1
else:
start=1
else:
if (op==''):
op = x
else:
op = op + '\n' + x
fo.close()`
If what you posted above is literally your text file, then this should give you each tuple separately.
I'm just using the regular expressions library. The pattern is just look for a left paren ( and run of anything that isn't a right paren, and then a right paren. Super simple.
import re
foo = """[(0,\n blahblahblah), (1,\n asdfasdf), (2,\n ghhgghiegiegieh)]"""
pat = r'\([^\)]+\)'
matches = re.findall(pat, foo)
['(0,\n blahblahblah)', '(1,\n asdfasdf)', '(2,\n ghhgghiegiegieh)']
If you want to separate out the numbers you can do that easily by spliting and striping out the extra stuff:
[i[1:-1].split(',\n')[1].strip() for i in matches]
#['blahblahblah', 'asdfasdf', 'ghhgghiegiegieh']
Then you can write them to whatever file you like.

Vue bind SVG transform rotate

Trying to rotate an svg group by an amount deg in
data():{
deg: 90,
groupCenter: [100,200]
}
I have searched but can't find the correct syntax to bind data to the svg rotate function,
:transform="{'rotate(' + deg + ' ' + groupCenter[0] + ' ' + groupCenter[1] + ')'}"
I am trying to add this to a circle like this,
<circle style="mix-blend-mode: multiply;" v-for="(el,index) in element.coords" :fill="el.color" :key="index" :r="el.radius" :cy="el.y" :cx="el.x" :transform="{'rotate(' + deg + ' ' + groupCenter[0] + ' ' + groupCenter[1] + ')'}" />
I get,
- invalid expression: Unexpected token + in
{'rotate(' + deg + ' ' + groupCenter[0] + ' ' + groupCenter[1] + ')'}
Raw expression: :transform="{'rotate(' + deg + ' ' + groupCenter[0] + ' ' + groupCenter[1] + ')'}"
SOLUTION:
This worked for me using a method,
:transform="rotateShape(index)"
And the method,
rotateShape(){
return "rotate(" + this.deg + " 0 0)"
},
But I don't know why the initial attempt wouldn't work.
The transform attribute needs to evaluate to a string - i.e. transform="rotate(90deg)", so I think you need to concatenate some partial strings:
:transform="'rotate(' + deg + ' deg)'"
This is a great place to use javascript's template literals.
:transform="`rotate(${deg} deg)`"

Problematic formula with Apache POI

I'm using Java and generating an Excel file via Apache POI.
The following formula works perfect.
cell4.setCellFormula('(J' + (itemCountSize + 3) + '-H' + (itemCountSize + 3)+ ')')
Now I simply want to divide by the same H value eg. (J50-H50)/H50
cell4.setCellFormula('(J' + (itemCountSize + 3) + '-H' + (itemCountSize + 3)+ ')'+ '/H' + (itemCountSize + 3))
However it still just gives me (J50-H50)...
Any assistance would be appreciated.
Think you need an extra enclosing bracket
Have you tried:
cell4.setCellFormula('((J' + (itemCountSize + 3) + '-H' + (itemCountSize + 3)+ ')'+ '/H' + (itemCountSize + 3) + ')')
Or, simplifying with groovy string templating:
cell4.cellFormula = "((J${itemCountSize+3}-H${itemCountSize+3})/H${itemCountSize+3})" –

Resources