mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-01-10 22:48:05 -05:00
104 lines
2.9 KiB
Python
104 lines
2.9 KiB
Python
"""
|
|
This script will generate the fluid HTML and RST files in the Fluids folder
|
|
"""
|
|
from __future__ import print_function
|
|
|
|
import os,sys,glob
|
|
import CoolProp
|
|
import subprocess
|
|
|
|
def generate_notebook(fluid):
|
|
"""
|
|
Generate a new copy of the template notebook with the fluid name changed
|
|
"""
|
|
lines = open('FluidTemplate.ipynb','r').readlines()
|
|
|
|
line_indices_with_fluid = []
|
|
for i in range(len(lines)):
|
|
line = lines[i].strip()
|
|
if line.startswith("\"Fluid = \'") and line.endswith('\'\\n\",'):
|
|
line_indices_with_fluid.append(i)
|
|
|
|
# Make sure only one line matches the above criteria
|
|
assert(len(line_indices_with_fluid)==1)
|
|
i = line_indices_with_fluid[0]
|
|
# Get the current fluid in the line
|
|
current_fluid = lines[i].split("\"Fluid = \'")[1].split('\'\\n\",')[0]
|
|
|
|
# Actually replace the fluid in the line
|
|
lines[i] = lines[i].replace(current_fluid, fluid)
|
|
|
|
# Write back to temporary file
|
|
fp = open('temp.ipynb','w')
|
|
fp.write(''.join(lines))
|
|
fp.close()
|
|
|
|
stub_template = """{fluid:s}
|
|
{line:s}
|
|
|
|
View this page as an `IPython notebook <http://nbviewer>`_
|
|
|
|
.. raw:: html
|
|
:file: {fluid}.html
|
|
"""
|
|
|
|
def make_rst_stub(fluid):
|
|
"""
|
|
Make a stub file that will raw import the generated HTML
|
|
"""
|
|
s = stub_template.format(fluid = fluid, line = '='*len(fluid))
|
|
fp = open(os.path.join('Fluids',fluid+'.rst'),'w')
|
|
fp.write(s)
|
|
fp.close()
|
|
|
|
def make_html_file(fluid):
|
|
"""
|
|
Make the
|
|
"""
|
|
|
|
call = 'runipy temp.ipynb Fluids\{fluid:s}.ipynb --quiet --html Fluids\{fluid:s}.html --template output_toggle --skip-exceptions'.format(fluid=fluid)
|
|
print('About to make HTML for '+fluid+'; call:', call)
|
|
subprocess.check_output(call, shell = True)
|
|
|
|
index_template = """{header:s}
|
|
{line:s}
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
{fluids:s}
|
|
"""
|
|
|
|
def index_file(Fluids, header):
|
|
FluidList = '\n '.join([Fluid+'.rst' for Fluid in Fluids])
|
|
return index_template.format(fluids = FluidList,
|
|
header = header,
|
|
line = '='*len(header))
|
|
|
|
# Make this function do everything so that we can use a multiprocessing Pool
|
|
def do_fluid(fluid):
|
|
pass
|
|
|
|
if __name__=='__main__':
|
|
|
|
if not os.path.exists('Fluids'):
|
|
print('making Fluids folder')
|
|
os.mkdir('Fluids')
|
|
|
|
pure_fluids,pseudo_pure_fluids = [],[]
|
|
for fluid in sorted(CoolProp.__fluids__):
|
|
make_rst_stub(fluid)
|
|
generate_notebook(fluid)
|
|
make_html_file(fluid)
|
|
if CoolProp.CoolProp.IsFluidType(fluid,'PureFluid'):
|
|
pure_fluids.append(fluid)
|
|
else:
|
|
pseudo_pure_fluids.append(fluid)
|
|
|
|
fp = open(os.path.join('Fluids','pure_fluids.rst'),'w')
|
|
fp.write(index_file(pure_fluids,"Pure Fluids"))
|
|
fp.close()
|
|
|
|
fp = open(os.path.join('Fluids','pseudo_pure_fluids.rst'),'w')
|
|
fp.write(index_file(pseudo_pure_fluids,"Pseudo-pure Fluids"))
|
|
fp.close() |